【发布时间】:2020-05-20 17:42:31
【问题描述】:
首先这不是作业,只是想自己学习 Prolog :)
我一直在阅读图论,我认为在我的宠物项目中实现中间中心性会很酷。我有一个城市列表,想确定在所有可能的最短路径中哪一个更常见,但我不确定如何获得所有两个城市组合。
我已经有一条规则可以获取两个城市之间的最短路径。
【问题讨论】:
-
findall/3或其他所有灵魂谓词都会有所帮助。
标签: prolog
首先这不是作业,只是想自己学习 Prolog :)
我一直在阅读图论,我认为在我的宠物项目中实现中间中心性会很酷。我有一个城市列表,想确定在所有可能的最短路径中哪一个更常见,但我不确定如何获得所有两个城市组合。
我已经有一条规则可以获取两个城市之间的最短路径。
【问题讨论】:
findall/3 或其他所有灵魂谓词都会有所帮助。
标签: prolog
嗯...Betweenness Centrality。根据Betweenness Centrality -- Incremental and Faster 的复杂性是O(mn + n^2 log n) 时间,其中 n = |V|和 m = |E| 用于通用算法,但可以通过增量边缘更新来改进。有趣的。
但您的问题不是关于介数中心性,而是关于笛卡尔积?
要获得城市的笛卡尔积,您必须创建一个目标,将两个member/2 调用链接起来,然后用bagof/3 收集其所有解决方案:
cities_1([berlin,tokyo,kigali,moscow]).
cities_2([beijing,new_delhi,cairo,lisboa]).
cartesian_product(CityPairs) :-
cities_1(L1),
cities_2(L2),
bagof([C1,C2],(member(C1,L1),member(C2,L2)),CityPairs).
【讨论】: