Неоптимальные решения для игры с 15 головоломками

Я применяю поиск A * (и IDA *) с манхэттенской эвристикой для поиска решения проблемы с 15 головоломками.

Используя тот факт, что мне не нужно оптимальное решение проблемы, как я могу ускорить поиск, поскольку текущая процедура слишком медленная.


person gabber12    schedule 04.06.2013    source источник
comment
Обратите внимание, что у головоломки 15 может не быть решения; известный пример - базовая установка с перестановкой 15 и 14.   -  person Lyth    schedule 04.06.2013


Ответы (1)


Ну, это не совсем решение, но может помочь. Однажды я работал над игрой HOG с той же головоломкой, что и мини-игра, и оказалось, что создать проблему гораздо проще, чем найти решение.

Я имею в виду, что мы можем превратить решенную головоломку в нерешенную, случайно перемещая «окно» в соответствии с правилами. И регистрация каждой позиции поля для будущего использования. Затем мы позволяем пользователю немного поиграть, и если он сдастся, мы можем легко решить за него головоломку, найдя общую позицию в пользователе и нашем журнале. Мы просто проигрываем через пользовательский лог в общую позицию и обратно из нее в решенную позицию через наш лог.

Конечно, это хак, а не реальное решение, но в геймдеве работает отлично. И не только для этой конкретной игры. Таким образом можно «решить» большинство головоломок с репозиционированием.

person akalenuk    schedule 04.06.2013
comment
Должно быть, это выглядело так: «Хорошо, игрок, ты все сделал неправильно, так что я отменяю то, что ты сделал, и показываю тебе, что ты сделал правильно». - person Lyth; 04.06.2013
comment
Не я то, что я ищу! - person gabber12; 04.06.2013
comment
Вот почему мы играем в решение очень быстро. - person akalenuk; 04.06.2013
comment
А если серьезно, не всегда общая позиция находится до первого хода. Игрок может быть очень близко к голове нашего лога при выходе. И люди не очень хорошо помнят все свои ходы, так что это никогда не было проблемой. Но да, учитывая количество ходов и логику, это совсем не лучшее решение. - person akalenuk; 04.06.2013