Обычно * поиск используется для поиска кратчайшего пути, а не для поиска максимального значения, но вы также можете использовать его для максимизации. В обычной версии минимизации ваша эвристика всегда должна быть нижней границей длины. Чтобы максимизировать, эвристика должна быть верхней границей, которую не сложно вычислить. И вам нужна максимальная куча, а не минимальная куча, чтобы создать следующего лучшего кандидата.
Еще одна проблема заключается в том, что есть много разных заказов, чтобы выбрать лучшее размещение. С доской n
x n
таких заказов будет n!
. Вы значительно ускорите свой поиск, если будете делать что-то вроде настаивания на выборе от наибольшего до наименьшего пина.
Поэтому я бы предложил в качестве эвристики сумму самых больших пинов, которые еще не атакованы и не превышают наименьшего пина, который вы в настоящее время выбрали без , пытаясь проверить, что он не атакующий. , Это легко вычисляемая верхняя граница, и вы начнете с очевидного жадного выбора - попытаться захватить самый большой из доступных пинов.