无向图的成本
Cost of undirected graph
好吧,我得到了一个无向图,看起来像这样。
每个方块代表一根天线(在无线 phone 网络中),黑线将物体分成不同的区域。
我们有一些事实,例如:
region(r1, 2110, [1,2]).
region(r2, 2210, [4,5,8]).
region(r3, 2310, [3,6]).
region(r4, 2410, [7,10,11,15]).
region(r5, 2510, [9,12]).
region(r6, 2610, [13,14]).
telephone(2310-6-64221, name(andriopoulos, nikos)).
telephone(2510-12-24234, name(papantoniou, kiki)).
第一个参数是地区名称,第二个参数是分配给他们所在地区每个人的特定号码(当前地区每个电话phone的前4个号码)和第三个是包含属于当前区域的所有区域的列表(telephone 处的下一个数字,在破折号之间)。
我的练习说每次调用同一个区域都是免费的,如果需要经过一个区域是1,如果是两个区域是两个,等等
我被指派创建 can_call/4 函数来查找两人之间特定通话的路线和费用。
例如
?- can_call(papantoniou, andriopoulos, Route, Cost).
Route = [....]
Cost = ...
我创建了一个 connect/2 函数来告诉我是否连接了 2 个街区,但我真的无法考虑成本。
有什么建议吗?
当您计算出一条路线后,计算区域数量的一种简单(且效率低下!)的方法会发生变化:
num_regions_change(Route, N) :-
findall(t, (append(_, [X,Y|_], Route),
region(P,_,Ps), memberchk(X,Ps),
region(Q,_,Qs), memberchk(Y,Qs),
P \= Q), Ns),
length(Ns, N).
追加调用将 'return' 回溯 - 由 findall 强制 - 在 Route
中找到的每对位置。
好吧,我得到了一个无向图,看起来像这样。
每个方块代表一根天线(在无线 phone 网络中),黑线将物体分成不同的区域。
我们有一些事实,例如:
region(r1, 2110, [1,2]).
region(r2, 2210, [4,5,8]).
region(r3, 2310, [3,6]).
region(r4, 2410, [7,10,11,15]).
region(r5, 2510, [9,12]).
region(r6, 2610, [13,14]).
telephone(2310-6-64221, name(andriopoulos, nikos)).
telephone(2510-12-24234, name(papantoniou, kiki)).
第一个参数是地区名称,第二个参数是分配给他们所在地区每个人的特定号码(当前地区每个电话phone的前4个号码)和第三个是包含属于当前区域的所有区域的列表(telephone 处的下一个数字,在破折号之间)。
我的练习说每次调用同一个区域都是免费的,如果需要经过一个区域是1,如果是两个区域是两个,等等
我被指派创建 can_call/4 函数来查找两人之间特定通话的路线和费用。
例如
?- can_call(papantoniou, andriopoulos, Route, Cost).
Route = [....]
Cost = ...
我创建了一个 connect/2 函数来告诉我是否连接了 2 个街区,但我真的无法考虑成本。
有什么建议吗?
当您计算出一条路线后,计算区域数量的一种简单(且效率低下!)的方法会发生变化:
num_regions_change(Route, N) :-
findall(t, (append(_, [X,Y|_], Route),
region(P,_,Ps), memberchk(X,Ps),
region(Q,_,Qs), memberchk(Y,Qs),
P \= Q), Ns),
length(Ns, N).
追加调用将 'return' 回溯 - 由 findall 强制 - 在 Route
中找到的每对位置。