Я ссылался на этот алгоритм. Я нашел более простой алгоритм в другом месте. Обратите внимание, что если бы мне пришлось реализовать один в Википедии, есть две внутренние петли.
while Q is not empty: //Outer loop.
u := vertex in Q with smallest dist[];// First inner loop.
....
for each neighbor v of u: //Second inner loop.
Второй внутренний цикл меньше. Может выполняться максимум 4-5, так как для каждого узла не более 5 ребер. Количество узлов, имеющих более 2 ребер, составляет 1000 из 23000 общих узлов. Таким образом, время выполнения внутреннего цикла незначительно. Первый внутренний цикл - это проблема. Нахождение наименьшего узла. Поскольку я должен выполнить это на устройстве j2ME, я должен сделать так, чтобы он занимал как можно меньше места.