Чтобы ответить на ваш первый вопрос, я должен сказать, что это зависит.Это зависит от ряда различных факторов, таких как:
- Как быстро это должно быть (нужно ли это делать в режиме реального времени?)
- Сколько существует вершин
- Сколько существует ребер по сравнению с количеством вершин (т. Е. Плотный или разреженный граф?)
Если это нужно сделать в режиме реального времени, тометоды локального поиска не были бы лучшими, так как они могут занять некоторое время, прежде чем получить хороший результат.Они были бы достаточно быстры, если бы размер графика был небольшим.И если он небольшой, для начала вам не нужно использовать локальный поиск.
Уже есть алгоритмы для рендеринга графиков, которые вы описываете.Вопрос в том, в какой момент проблема становится слишком большой, чтобы они могли быть эффективными?Я не знаю ответа на этот вопрос, но я уверен, что вы могли бы провести некоторое исследование, чтобы выяснить это.
Теперь перейдем к вашим вопросам о реализации локального поиска.
Исходя из моего личного опыта, имитировать отжиг легче, чем генетический алгоритм.Однако я думаю, что эта проблема хорошо переносится в обе настройки.Хотя я бы начал с SA.
Для имитации отжига вы должны начать со случайной конфигурации.Затем вы можете случайным образом нарушить конфигурацию, переместив одну или несколько вершин на произвольное расстояние.Я уверен, что вы можете завершить детали алгоритма.
Для подхода на основе генетического алгоритма вы также можете начать со случайной совокупности (каждый граф имеет случайные координаты для вершин).Мутация может быть похожа на возмущение в алгоритме SA, который я описал.Рекомбинация может просто брать случайные вершины от родителей и использовать их в дочернем графе.Опять же, я уверен, что вы можете заполнить пробелы.
Подведение итогов: используйте локальный поиск, только если ваш график достаточно велик, чтобы его оправдать, и если вам не нужно, чтобы это было сделано очень быстро (скажем меньше нескольких секунд).В противном случае используйте другой алгоритм.
РЕДАКТИРОВАТЬ: В свете параметров вашего графика, я думаю, вы можете просто использовать любой алгоритм, который проще всего кодировать.С V = 200, даже алгоритм O (V ^ 3) будет достаточно.Лично я чувствую, что имитация отжига будет самым простым и лучшим маршрутом.