Искусственный интеллект: Blocksworld эвристический подход * решение
Я разрабатываю эвристическое решение проблемы Blocksworld.
Я попытался использовать количество блоков не на своем месте в качестве моего h(n). Это кажется малоэффективным.
Может кто-нибудь, пожалуйста, укажите подходящую эвристику для проблемы и объясните несколькими примерами, как она будет работать.
Blocksworld Problem Example:
Initial(starting State):
Stack 0: D,B
Stack 1: A,E
Stack 2: C
Stack 3: F
Goal State:
Stack 0: A,B,C,D,E,F
1 ответ
Задача Blocksworld состоит из стопок деревянных блоков, которые помечены, стол и желаемое конечное положение. Разрешается удалить верхний блок и поместить его в другой стек или на стол (начать новый стек), но не перемещать блок, который покрыт другим блоком. Цель - добраться до конечного состояния за минимальное количество ходов.
Используя A*, нам нужна эвристика для определения того, движется ли движение ближе или дальше от нашей цели. Таким образом, оцените по одному для каждого блока на месте, затем оцените сваи в конечной позиции снизу вверх, считая расстояние от блока до желаемой позиции (так что, если блок находится сверху, это означает -1, если он находится в вторая позиция, которая набирает -2, затем просто сделайте то же самое для следующего блока, так что это даст вам немного неточной меры, если два блока инвертированы, но, надеюсь, не будет слишком плохой).
Я понятия не имею, как это будет работать. Это явно задумано как проблема открытого программирования.