0

我正在处理一个涉及城市列表的问题,并在 Prolog 中找到最接近指定城市的问题。例如,如果我想从这个数据集中找到离西雅图最近的城市

city(5,3, seattle).
city(22,17,nashville).
city(4,7, portland).
city(21,18, memphis).
city(1,11, sacramento).

我有一个谓词/2 定义距离

calc(C1,C2,D) :-
   city(V1,H1,C1),
   city(V2,H2,C2),
   D is ((V1-V2)^2+(H1-H2)^2).

我如何使用 findall/3 计算找到最近城市的距离?

4

1 回答 1

0

公式 (x1 - x2)^2 + (y1 - y2)^2 给出距离的平方;如果正方形最低,则距离最短。

编辑:需要累积的是到目前为止最近的一对城市,距离^ 2,因为您深入研究城市列表(或研究城市的事实)。看看类似的例子。

于 2013-02-10T00:05:54.977 回答