Мне нужна хорошая эвристическая функция для звезды для решения судоку. Сетка судоку имеет размер 4X4, и по определению законной операцией из каждого состояния является вставка нового числа в следующую свободную ячейку (порядок слева направо и вверх вниз).
например, это входная сетка:
и теперь мы должны заполнить ячейку (1,2).
Все узлы представляют собой разные сетки, которые представляют разные состояния. Фактор ветвления равен 4, поэтому у нас есть 4 возможности для следующей ячейки: 1, 2, 3 или 4, то есть 4 дочерних элемента для каждого узла.
Как я могу определить эвристическую функцию на узлах для применения A * на сетке?
Все, о чем я могу думать, это:
если новое число, которое было вставлено в сетку текущего состояния, является недопустимым (= появляется более одного раза в одной строке, столбце или поле), поэтому h (n) = бесконечность.
else, h(n)= [number of empty remain cells].
Я думаю, что мое решение неверно, потому что нет никакой разницы в эвристическом значении между двумя узлами на одном и том же уровне, которые являются допустимыми.