簡體   English   中英

需要 AI 問題的可接受啟發式

[英]Need Admissible heuristics for AI problem

我需要幫助找出一個簡單的啟發式方法(這是可以接受的/從不高估),使用 A* 搜索來解決 AI 問題: https://en.wikipedia.org/wiki/Brigdge_ah_problem

請注意:我已經實現了高級問題,我可以在每一側選擇任意數量的人,將橋接容量設置為任意值並選擇火炬的末端 position。 此外,目標可以是任何情況(其中一方不一定需要為空 - 例如,它可能必須以左側 2 人和右側 5 人結束)。

它背后的邏輯應該是什么,永遠不會高估?

以下是構建啟發式的兩種方法:

建立啟發式的一種常見方法是放寬原始問題定義,以允許以前無法采取的新行動。 這樣做只會使解決方案更短,因此我們可以使用它來獲得可接受的啟發式。 當前的問題限制了一次只能有兩個人在橋上,並且他們需要手電筒才能過橋。 如果你放寬這兩個要求,你只需要花費原邊的人通過的最長時間,這會給你一個可接受的啟發式方法。 也就是說,您假設它們都交叉並且您完成了。

示例 1:

原裝:AB C D【手電筒】

目標:

啟發式:8 分鍾(最多 1、2、5、8)

示例 2:

原裝:AB C

目標:D [火炬]

啟發式:5 分鍾(最多 1、2、5)

你可以通過放松其中一個來做得更好 - 他們仍然需要火炬,但是任何數量的人都可以在橋上。 如果火炬在原始一側,那就是上面的啟發式方法。 否則,您可以將讓手電筒恢復到原來一側的最短時間添加到您的總時間中。 (而且,如果火炬與慢的人在一起,那么慢的人將成為雙向啟發式計算的一部分。)

示例 3:

原裝:AB C

目標:D [火炬]

啟發式:16 分鍾(8 分鍾讓 D 用火炬穿過,8 分鍾讓所有人回來)

示例 4:

原裝:C D

目標:AB [火炬]

啟發式:9 分鍾(1 分鍾讓 A 用火炬穿過,8 分鍾讓每個人都回來)

另一種方法是將問題抽象為一個子問題(抽象問題中的 N 人中只有 k 人)並徹底解決它。 然后,當前 state 的啟發式是抽象問題中 k 個人的解決方案的成本。 您可以通過這種方式進行多次抽象並最大限度地獲得更好的啟發式方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM