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 乗を示します。正方形が最小の場合、距離は最短です。

編集:蓄積する必要があるのは、都市のリストを掘り下げる (または都市の事実を調べる) ときに、これまでに最も近い都市のペア、距離^2 です。同様の例を見てください。

于 2013-02-10T00:05:54.977 に答える