Я хочу написать Java-программу, которая решает проблему коммивояжера с помощью эвристики ближайшего соседа.Шаги алгоритма будут выглядеть примерно так:
Шаг 1. Начните с любой случайной вершины, назовите ее текущей вершиной
Шаг 2. Найдите ребро, дающее минимальное расстояние между текущей вершиной.и непосещенную вершину, назовите ее V
Шаг 3: Теперь установите эту текущую вершину в непосещенную вершину V и отметьте эту вершину V как посещенную
Шаг 4: Завершите условие, если все вершиныпосещаются по крайней мере один раз
Шаг 5: перейдите к шагу 2
У меня есть проблемы, чтобы выяснить, какие структуры данных будут подходить для решения этой проблемы.Как я могу определить узел с наименьшим расстоянием до текущего узла (шаг 2)?Будет ли приоритетной очередью хорошим выбором?Какие еще структуры данных я могу использовать?Как я могу убедиться, что второй последний узел в туре соединяется с начальным узлом?Должен ли я использовать стек?Что еще я мог бы использовать?