Во-первых, да, это домашнее задание, но это в первую очередь теоретический вопрос, а не практический, я просто прошу подтверждения, правильно ли я думаю, или каких-либо намеков, если нет.
Меня попросили скомпилировать простой решатель судоку (на Прологе, но сейчас это не так важно) с единственным ограничением, заключающимся в том, что он должен использовать эвристическую функцию с использованием Алгоритм поиска лучшего первого. Единственная эвристическая функция, которую мне удалось придумать, объясняется ниже:
1. Select an empty cell.
1a. If there are no empty cells and there is a solution return solution.
Else return No.
2. Find all possible values it can hold. %% It can't take values currently assigned to cells on the same line/column/box.
3. Set to all those values a heuristic number starting from 1.
4. Pick the value whose heuristic number is the lowest && you haven't checked yet.
4a. If there are no more values return no.
5. If a solution is not found: GoTo 1.
Else Return Solution.
// I am sorry for errors in this "pseudo code." If you want any clarification let me know.
Так я правильно делаю или есть другой способ, а мой неверный? Заранее спасибо.