IDA * отлично работает до 4x4 головоломки , потому что это просто 16! (20 922 789 888 000) возможных состояний. Пазл 5х5 имеет 25! (15 511 210 043 330 985 984 000 000) возможных состояний, что в 740 000 000 раз больше.
Вам необходимо сменить стратегию. «Самый простой» метод решает головоломку вдоль верхнего ряда, а затем в левом столбце сначала , до тех пор, пока у вас не появится головоломка 3х3, которую можно легко решить с помощью существующих методов.
Решение задачи головоломка включает в себя 3 различных фазы, между которыми вы чередуете:
- Решите верхний ряд (переместите части для столбцов 1 - N-2 на место, затем переместите часть для столбца N-1 в столбец N, кусок для столбца N до столбца N, но на одну строку ниже, конечная sh строка)
- Решите левый столбец (переместите части для строк 2 - N-2 на место, затем переместите часть для строки N От -1 до строки N, часть от строки N до строки N, но один столбец справа, конечный sh столбец)
- (2 строки из 3 оставшихся столбцов): используйте A * для решения оставшейся части.
Таким образом, фазы 1 и 2 чередуются, пока вы не сможете запустить фазу 3; после решения 5 верхних плиток (фаза 1) вы решаете 4 левых остальных плитки в других строках (фаза 2), затем верхний ряд оставшейся части головоломки (4 плитки, фаза 1), затем левый столбец ( 3 плитки, фаза 2), затем решите фазу 3. Фазы 1 и 2 в основном идентичны, отличается только ориентация, а для фазы 2 первая плитка уже установлена.
Фазы 1 и 2 легко решаются используя таблицы поиска, поиск не требуется; Вы перемещаете определенные c плиток и больше ни о чем не заботитесь:
- Найдите нужную плитку
- Получите зазор рядом с плиткой (это зависит от направления движение в какую сторону лучше)
- Переместите плитку в нужное положение; Существуют стандартные движения, которые перемещают плитку в любом направлении (5 для вертикальных или горизонтальных перемещений, 6 для диагонали).
Это не дает вам кратчайший путь к решению, но без поиска состояния проблема строго ограничена и известен наихудший сценарий. Решение первой строки и столбца головоломки 5x5 занимает не более 427 шагов таким образом, а 256 - для следующей строки и столбца.
Этот алгоритм был впервые описан Ian Parberry в статье под названием Алгоритм в реальном времени для (n2 - 1) -пазла в 1995 г. Я думаю , что DSolving: новый и эффективный интеллектуальный алгоритм для крупномасштабные скользящие пазлы от GuiPing Wang и Ren Li описывают еще более эффективный метод таблицы поиска, но поскольку статья еще не доступна бесплатно, я еще не изучал ее.