序言

2014-11-21 29 views
1

我創建了一個簡單的圖形搜索從一個例子序言

move(math101, math102). 
move(math101, chem101). 
move(math102, math210). 
move(math102, phys102). 
move(phys102, phys201). 
move(math210, phys201). 


search(A, A, [A]). 

search(A, B, [A|Path]) :- 
     move(A,C), 
     search(C,B,Path). 

我可以告訴你,去從「math101」 phys201「你需要通過「math102」和「math210」圖搜索或「math102」 and'phys102'

我想在序言中證明這一點,但它不工作,我認爲它可能有一些做的查詢我打字

搜索(math101,phys201,[ math101])

或者是它的東西在我的代碼,我已經查明的路徑和它不斷裝箱出了沒有結果

跟蹤是

[1]CALL: search(math101, phys201, [math101]) 
[1]FOUND: search(_4193470, _15353627, [_4193470|_14830180]):-move(_4193470, _8522358),   search(_8522358, _15353627, _14830180). 
[1]BIND: search(math101, phys201, [math101]) 
[2]CALL: move(math101, _10259988) 
[2]FOUND: move(math101, math102). 
[2]BIND: move(math101, math102) 
[3]CALL: search(math102, phys201, []) 
[3]FAIL: search(math102, phys201, []) 
[2]REDO: move(math101, math102) 
[4]CALL: move(math101, _10259988) 
[4]FOUND: move(math101, chem101). 
[4]BIND: move(math101, chem101) 
[5]CALL: search(chem101, phys201, []) 
[5]FAIL: search(chem101, phys201, []) 
[4]REDO: move(math101, chem101) 
[6]CALL: move(math101, _10259988) 
[6]FAIL: move(math101, _10259988) 
[1]REDO: search(math101, phys201, [math101]) 

請幫

回答

0

,你看,是你查詢問題:嘗試

?- search(math101,phys201,X). 
X = [math101, math102, math210, phys201] ; 
X = [math101, math102, phys102, phys201] ; 
false. 

,或者多帶些實例化的路徑

?- search(math101,phys201,[math101|X]). 
X = [math102, math210, phys201] ; 
X = [math102, phys102, phys201] ; 
false. 
+0

這絕對很棒,我不能夠感謝你。我一整天都在盯着我的屏幕。謝謝 – 2014-11-21 18:00:00