Можем ли мы решить проблему 4 ферзей, используя поиск Best first? - PullRequest
0 голосов
/ 30 августа 2018

Я знаю, что мы можем решить эту проблему n ферзя, используя возврат, но мой преподавательский состав попросил меня решить проблему 4 ферзей, используя лучший алгоритм первого поиска. Я пытался решить это, но я не могу понять подход. Можем ли мы принять недопустимое состояние и переместить шаги блока ферзей для достижения действительного состояния?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Не уверен, что вы подразумеваете под Лучший первый поиск . Из руководства пользователя OptaPlanner я вижу 3 варианта, объясненных на 4 королевах:

  1. Грубая сила , которая похожа на Поиск в ширину :

Brute Force

  1. Ветвь и граница , что аналогично Поиск в глубину :

Branch and bound

  1. Первая посадка (уменьшение) :

enter image description here

Как говорится, N-Queens можно обмануть , так что вам лучше просто использовать это.

0 голосов
/ 30 августа 2018

Да, Вы можете.
Вы можете использовать A * как лучший первый алгоритм. Функция стоимости для вашего A * должна быть числом атакованных ферзей. А пока используйте это же значение как эвристическое (т.е. число атакованных ферзей).
Позже вы можете попробовать и другую эвристику.

...