好吧,我得到了一个看起来像这样的无向图。
每个块代表一个天线(在无线电话网络中),黑线将事物分成不同的区域。
我们有一些事实,例如:
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)).
第一个参数是地区的名称,第二个是一个特定号码,将分配给他们所在地区的每个人(当前地区每个电话的前 4 个号码),第三个是包含所有地区的列表属于当前区域(电话中的下一个号码,在破折号之间)。
我的练习说,对同一区域的每次调用都是免费的,如果需要通过一个区域是 1,如果是两个区域之外是 2,等等。
我被分配创建 can_call/4 函数,该函数可以查找两个人之间特定通话的路线和费用。
例如
?- can_call(papantoniou, andriopoulos, Route, Cost).
Route = [....]
Cost = ...
我创建了一个 connect/2 函数,它告诉我是否连接了 2 个块,但我真的无法考虑成本。
有什么建议吗?