Я пытаюсь найти способ программно решить скользящую головоломку из 24 частей за разумное количество времени и ходов. Вот пример решенного состояния в головоломке, которую я описываю:
Я уже обнаружил, что алгоритм IDA* достаточно хорошо работает для решения головоломки из 15 элементов (сетка 4x4). Алгоритм IDA* способен найти наименьшее количество ходов для любой скользящей головоломки 4x4 за очень разумное время. Я запустил адаптацию этого кода для тестирования раздвижных головоломок 4x4 и смог значительно сократить время выполнения с помощью PyPy. К сожалению, когда этот код адаптирован для скользящих головоломок 5x5, он работает ужасно медленно. Я запускал его более часа и, в конце концов, просто сдался, увидев, как он закончился, тогда как на сетках 4x4 он работал всего несколько секунд. Я понимаю, что это связано с тем, что количество узлов, которые необходимо искать, увеличивается экспоненциально по мере увеличения сетки. Однако я не ищу оптимального решения скользящей головоломки 5x5, а только решение, близкое к оптимальному. Например, если бы оптимальное решение для данной головоломки составляло 120 ходов, то меня удовлетворило бы любое решение, которое меньше 150 ходов и может быть найдено за несколько минут.
Существуют ли какие-либо конкретные алгоритмы, которые могут это сделать?