2016-10-06 73 views
1

我知道遞歸解決方案,並閱讀了與迭代解決方案相關的論文。如何使用人工智能技術來解決河內的塔?

有人能解釋我如何使用AI技術來解決像河內塔這樣的問題嗎?

+0

投票結束太寬泛。有太多可能的答案,或者這個格式的答案太長。請添加詳細信息以縮小答案集或隔離幾個段落中可以回答的問題。 –

+1

@UweAllner我不想詳細解釋如何開始。我只需要一種方法。 –

+0

用於解決「河內塔」的專用AI技術是一種PDDL規劃器。這個想法是將問題描述從求解中分離出來並使用標準的deklarative編程語言。 –

回答

0

一種很常見的方式是通過模式數據庫生成啓發式。以下是有關該主題的更多着名論文之一:https://www.aaai.org/Papers/JAIR/Vol22/JAIR-2209.pdf

詢問如何開始的問題對於本網站來說過於寬泛。更好的入門方法是使用Google學者之類的東西來查找與該主題相關的文章,然後詢問您遇到的具體解決方案遇到的任何問題。

1

另一種解決方案是使用分層規劃器。在分層規劃中,可以輕鬆指定程序性知識。漢諾塔的制勝戰略也可以很容易地被編碼爲這樣的問題,如下面的紙簡短解釋:

@InProceedings{Alford09TranslatingHTNsToPDDL, 
Title  = {Translating {HTNs} to {PDDL}: A Small Amount of Domain Knowledge Can Go a Long Way}, 
Author  = {Ron Alford and Ugur Kuter and Dana S. Nau}, 
Booktitle = {Proceedings of the 21st International Joint Conference on Artificial Intelligence ({IJCAI} 2009)}, 
Year  = {2009}, 
Pages  = {1629--1634}, 
Publisher = {{AAAI} Press}} 
1

他們的方式我看它是爲了獲得基本的AI算法的工作,然後返工所以它學習自己。

  1. 首先 - 我們有三個塔樓A,B,C。所以只有六個動作將是可能的: A-> B,A-> C,B-> A,B> C,C- > A,C-> B, 我們稱之爲AB AC BA BC CA CB。

  2. 創建決策樹,其中每個節點代表一個狀態。每個節點對於N個可能的運營商將具有N個孩子(例如,AB從A移動到B,BC從B移動到C等)。這樣我們創建了一個決策樹。

  3. 在這個階段,我們可以使用基本的廣度優先搜索(BFS)算法來找出N步是否可以解決這個難題。 BFS的問題在於,河內的發展會消耗大量的內存和時間。但不用擔心。

  4. 我們有我們的樹,我們有BFS算法。我們爲河內發現了3張光盤,4張光盤,5張光盤的解決方案。 BFS應該告訴我們什麼是最佳路徑。

  5. 現在這裏的路徑值得關注。在3,4,5和6張碟片之間可能存在一種模式。現在我想我們應該考慮看看 a)模式識別算法,以確定是否有元素可以重複自己,也可以從中創建出某些元素。 b)使用遺傳程序來發現軟件是否可以用於3盤,4盤和5盤的算法,這對6盤算法來說效果很好:我們已經有BFS可以作爲我們遺傳算法的測試器,編程算法。

+0

我們應該把1-4的算法放在一起,然後是5嗎? –