Мне нужно выполнить поиск в ширину в Java для назначения. У меня есть сетка плиток 5х5 (всего 24 - 1 плитка оставлена «пустой»). Смысл поиска состоит в том, чтобы переставить плитки, переместив «пробел» вверх, вниз, влево или вправо, чтобы в конечном итоге переставить плитки в правильном порядке.
Для этого поиска я создал «очередь» Arraylist. У меня есть метод, который принимает состояние по индексу 0 этого массива, находит каждый из возможных законных шагов и затем добавляет их каждый в конец массива.
Теоретически это продолжается до тех пор, пока в конечном итоге не будет найдено «состояние цели». Проблема в том, что, когда я запускаю поиск, массив 'queue' просто продолжает становиться все больше и больше. Сегодня я оставил его на несколько часов, но решение так и не было найдено.
Это говорит о том, что, возможно, я ошибся в этом решении, и есть гораздо лучший способ сделать поиск в ширину в Java. Я знаю, что мое решение работает (в конце концов), так как когда я использую начальное состояние, которое не слишком отличается от состояния цели, не требуется слишком много времени, чтобы найти правильный путь. Тем не менее, мне было дано начальное состояние, которое, к сожалению, далеко не близко к цели !!!
Любые советы или подсказки будут высоко оценены!