我有充分的事實,如數據庫:序言 - 幫助固定規則
overground(newcrossgate,brockley,2).
overground(brockley,honoroakpark,3).
overground(honoroakpark,foresthill,3).
overground(foresthill,sydenham,2).
overground(sydenham,pengewest,3).
overground(pengewest,anerley,2).
overground(anerley,norwoodjunction,3).
overground(norwoodjunction,westcroydon,8).
overground(sydenham,crystalpalace,5).
overground(highburyandislington,canonbury,2).
overground(canonbury,dalstonjunction,3).
overground(dalstonjunction,haggerston,1).
overground(haggerston,hoxton,2).
overground(hoxton,shoreditchhighstreet,3).
例如:newcrossgate到Brockley的需要2分鐘。
然後我創建了一個規則,這樣如果我輸入查詢istime(newcrossgate,honoroakpark,Z)。那麼prolog應該給我兩個站之間的時間。 (我制定的規則旨在計算任何兩個電臺之間的距離,而不是相鄰電臺之間的距離)。
istime(X,Y,Z):- istime(X,Y,0,Z); istime(Y,X,0,Z).
istime(X,Y,T,Z):- overground(X,Y,Z), T1 is T + Z.
istime(X,Y,Z):- overground(X,A,T), istime(A,Y,T1), Z is T + T1.
istime(X,Y,Z):- overground(X,B,T), istime(B,X,T1), Z is T + T1.
它似乎適用於新的crossgate到第一對情侶站,比如newcrossgate到foresthill或sydenham。然而,在測試新賽季到westcroydon需要26分鐘後,我嘗試了新的crossgate進行crystalpalace,prolog說應該花費15分鐘......儘管事實上它是westcroydon之後的下一站。很顯然,這裏有些事情是錯誤的,但是它對大多數電臺都有效,偶爾會偶爾出現一些錯誤,誰能告訴我什麼是錯的? :S
最後一項是否正確?你似乎從X到B,然後從B到X.你什麼時候去Y? – mgibsonbr 2012-01-13 23:32:39