Для задания исследования я воссоздал алгоритм Норвига на C#, чтобы решить проблему Sudoku как проблему ограничения ограничений (CSP) в сочетании с локальным поиском с эвристическим количеством возможных значений для квадрата. Теперь мне нужно создать расширение или его вариант, и я немного смущен тем, насколько алгоритм обеспечивает согласованность дуги. Для этого в настоящее время используется текущий алгоритм:Судоку как CSP (согласованность дуги)
- Инициализировать возможные значения (домены) каждого квадрата как [1, ..., n * n].
- Каждое присваивание значения квадрату выполняется путем исключения каждого возможного значения из домена и обновления каждого равноправного (квадрата в той же подсписке/строке/столбце) путем удаления назначенного значения из их доменов. (Не полностью ли это обеспечивает согласованность дуги, поскольку они являются единственными ограничениями между одноранговыми узлами, что они могут не иметь одинакового значения?)
- При исключении значения из домена квадрата он также проверяет, осталось ли только 1 квадрат для этого значение в его единице. Если это так, он присваивает его этому квадрату (также путем устранения возможных значений, сводя его к этому значению).
Теперь мой вопрос: этот алгоритм обеспечивает полную согласованность дуги? А если нет, как я могу улучшить свой алгоритм CPS для этого?
Если бы кто-нибудь мог мне помочь, это было бы очень признательно!
Заранее спасибо.
С уважением.