我有幾個Prolog事實表明某事或某人是人,地點或對象。我有一個條款去(人,地點),表明一個人從他們的位置移動到條款中給出的位置。但是,當我詢問相關查詢以確定某人是否在某個位置時,Prolog會根據這些條款與所有曾經在那裏的人進行響應。我該如何着手編寫一條規則,說如果你在一個地方,你根據定義不在任何其他地方?小環境的序言規則
Q
小環境的序言規則
1
A
回答
3
看起來您在將事件建模爲Prolog事實時留下了一個重要方面:當確實人員去了位置?
假設你有形式,而不是事實:
person_went_to_at(Person, Location, Time).
那麼這將是很容易確定,在任何時間點,在那裏每個人都和他們搬到 到最後(和,因此,現在是 )。
0
您可能需要將時間信息添加到您的事實。想象一下以下situtation:
go(dad, kitchen, bathroom).
go(dad, bathroom, garage).
go(dad, garage, kitchen).
由於Prolog是(或多或少)聲明,在這種情況下,事實的文件,在實際的順序並不重要。所以,你不能斷定爸爸在廚房裏,他可能已經開始回到車庫了。即使您添加某種起始謂詞(如startLoc(dad, kitchen)
),這也不會對循環有幫助(例如,當您將go(dad, kitchen, outside)
添加到上述規則時)。
如果添加定時信息(並離開了以前的房間,因爲這是從時序信息清晰),這將成爲:
go(dad, bathroom,1).
go(dad, garage,2).
go(dad, kitchen,3).
實際的數字是不相關的,只是他們的訂單。
location(X, Y) :- go(X, Y, T), \+ (go(X, _, T2), T2 > T).
相關問題
- 1. 規則中的序言規則
- 2. Linq - 它用於比較對象的語言環境/排序規則?
- 3. 序言規則反映Strucutre
- 4. 查詢規則的序言順序
- 5. 結構事實的序言規則
- 6. Symfony2語言環境
- 7. iOS應用程序與語言環境
- 8. JSF2語言環境處理程序
- 9. 節點INTL語言環境排序
- 10. 排序列表與語言環境
- 11. 序言 - 幫助理解規則
- 12. 序言 - 幫助固定規則
- 13. 用計數創建序言規則
- 14. Android - 更改應用程序本身的語言環境語言
- 15. 的Apache的環境變量沒有mod_rewrite的規則設定
- 16. 如何獲得沒有語言環境類的Django的語言環境日期?
- 17. 規劃虛擬化環境
- 18. Chart.js時刻語言環境
- 19. number_to_currency語言環境轉換
- 20. 與特定語言環境
- 21. Facebook JSON語言環境
- 22. GWT DatePicker語言環境
- 23. DateTime語言環境設置
- 24. 更改BlackBerry語言環境
- 25. JSF語言環境例外
- 26. GWT語言環境變化
- 27. Facebook Javascript SDK語言環境語言
- 28. Android:默認語言環境語言「hd」
- 29. 語言環境語言縮減器
- 30. 正則表達式庫中的語言環境特定行爲?
老風格是'update_person_pos(Pers的,POS):現在,您可以通過確保沒有後來的「走出去」命令爸得到的最新位置 - 收縮(人(人數,_OLD)),斷言(人(Pers,Pos)) – CapelliC