Существуют ли какие-либо алгоритмы минимизации пересечений ребер в графе? Например, если у меня есть матрица переходов графа.
Я нашел такие методы, как попытка разместить узлы вокруг другого узла, но я хотел бы узнать некоторые другие идеи.
1 ответ
Существует ряд хорошо зарекомендовавших себя алгоритмов / библиотек, которые были разработаны для приложений для рисования графиков, вы можете получить немного справочной информации здесь.
Для рисования неориентированных графов популярным выбором является алгоритм компоновки на основе силы, в котором ребра графа рассматриваются как пружины (силы притяжения), а вершины обрабатываются как заряженные частицы (применяя силы отталкивания). Алгоритм работает, обновляя положения вершин на основе этих сил, пока не будет достигнуто установившееся состояние. Подробнее о методах, основанных на силе, можно узнать здесь. Поскольку эти алгоритмы ищут равновесное решение, они часто приводят к псевдооптимальным макетам без особого запутывания краев.
Возможно, вам будет интересно воспользоваться одной из многих доступных библиотек для рисования графиков. Пакет Graphviz в целом довольно хорош и поддерживает ряд различных алгоритмов для различных приложений для рисования графиков.
Похожие вопросы
Связанные вопросы
Новые вопросы
algorithm
Алгоритм - это последовательность четко определенных шагов, которые определяют абстрактное решение проблемы. Используйте этот тег, если ваша проблема связана с дизайном алгоритма.
G(V,E)
??