У меня есть проблема с назначением, и мне интересно, насколько подходящим было бы применить методы локального поиска для достижения желаемого решения (пространство поиска довольно велико).
У меня есть ориентированный граф (блок-схема), который я хотел бы визуализировать на 2-D плоскости таким образом, чтобы он был очень четким, понятным и легко читаемым человеческим глазом. Следовательно; Я буду назначать (x, y) позиции каждой вершине. Я подумываю решить эту проблему, используя моделирование отжига, генетические алгоритмы или любой подобный метод, который вы можете предложить
Вход: График G = (V, E)
Выход: Набор присваивания, {(xi, yi) для каждого vi в V}
. Другими словами, каждой вершине будет присвоена позиция (x, y), где все координаты - целые числа и> = 0.
Это критерии, которые я буду использовать для оценки решения (я приветствую любые предложения):
Кроме того; У меня есть начальная конфигурация (привязка позиций к вершинам), сделанная вручную. Это очень запутанно, и поэтому я пытаюсь автоматизировать этот процесс.
Мои вопросы:
Насколько разумно было бы использовать методы локального поиска? Насколько вероятно приведет ли это к желаемому результату?
А с чего начать? Имитация отжига, генетические алгоритмы или что-то еще?
Должен ли я использовать случайное семя в начале или использовать начальное конфигурация, с которой начать?
Или, если вы уже знаете о подобной реализации / псевдокоде / вещи, укажите мне ее.
Любая помощь будет принята с благодарностью. Спасибо.
РЕДАКТИРОВАТЬ: Это не обязательно должно быть быстро - не в реальном времени. Более того; | V | = ~ 200 и каждая вершина имеет в среднем около 1,5 исходящих ребер. Граф не имеет отключенных компонентов. Это действительно связано с циклами.