在一個項目中,我目前使用A *來查找路徑。我第一次放下我的經紀人。然後,我將所有攔截器放在任何空閒的節點上。 代理需要能夠到達任何打開的節點。但是,下列情況可能發生:如何保證所有開放節點都可以穿越
A = Agent
B = Node that's blocked
X = An open node that's impossible to reach
[A] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[B] [B] [ ] [ ] [ ]
[X] [B] [ ] [ ] [ ]
下面是一些可能爲了避免這種情況需要回答的問題(回答任何一個可以解決這個問題):
- 我如何檢測沒有通向X的路徑,然後以最好的方式修復它(或者至少是一種可以接受的方式,不需要對每個節點調用A *,然後隨機選擇一個不同的節點將其中一個阻止器放到最後所有的節點都可以穿越)?
- 放置阻滯劑時,如何確保它們不會使任何開放節點無法觸及?
我能想到的一種方法是放置所有的阻滯劑。然後我可以檢查它們的鄰居,看看有沒有鄰居節點是開放的,並且可以通過調用A *來遍歷它們。這至少比我在問題1中解釋可能的解決方案的方式要好一些。
您是否有任何放置塊的具體規則,或者您是否需要生成滿足所有提及的屬性的隨機迷宮? – kraskevich 2015-04-04 15:23:33
我沒有放置塊的具體規則。現在他們被隨機放置在任何打開的節點上。但是,也許我應該有放置它們的規則?制定放置規則實際上會回答問題2,但我不知道規則會是什麼。我需要滿足的唯一不動產是代理必須能夠到達任何開放節點。 – 2015-04-04 22:47:44