Как Вы решаете с 15 загадками с A-звездой или Алгоритмом Dijkstra?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

16
задан Jacob Schoen 14 September 2012 в 21:41
поделиться

7 ответов

Хорошая эвристика для A-Star с загадкой 15 - это число квадратов, которые находятся не в том месте. Поскольку вам нужно как минимум 1 ход на квадрат, который не на своем месте, количество квадратов не на месте гарантированно будет меньше или равно количеству ходов, необходимых для решения головоломки, что делает ее подходящей эвристикой для A-Star .

9
ответ дан 30 November 2019 в 17:28
поделиться

Быстрый поиск Google поднимает пару бумаг, которые касаются этого в некоторых деталях: один на Параллельный Комбинаторный Поиск , и один на Поиск Графика Внешней памяти

Общее правило ползунка когда дело доходит до алгоритмических проблем: кто-то, вероятно, сделал его перед Вами и опубликовал их результаты .

7
ответ дан 30 November 2019 в 17:28
поделиться

Просто используйте игровое дерево. Помните, что дерево является специальной формой графика.

В Вашем случае листы каждого узла будут игровым положением после создания одного из перемещений, которое доступно в текущем узле.

2
ответ дан 30 November 2019 в 17:28
поделиться

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

1
ответ дан 30 November 2019 в 17:28
поделиться

Это задание для задачи с 8 головоломками, о котором говорилось об использовании алгоритма A * довольно подробно, но также довольно просто:

http://www.cs.princeton.edu /courses/archive/spring09/cos226/assignments/8puzzle.html

4
ответ дан 30 November 2019 в 17:28
поделиться

Вот, пожалуйста http://www.heyes-jones.com/astar.html

2
ответ дан 30 November 2019 в 17:28
поделиться

Помните, что A * будет искать в проблемном пространстве, продвигаясь по наиболее вероятному пути к цели, как определено вашим эвристиком.

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

3
ответ дан 30 November 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: