Минимизируйте перекрестные ребра на графике

Я использую networkx (пакет для рисования графиков Python) http://networkx.lanl.gov/index.html для один из моих проектов. Хотя networkx довольно крут, функция отображения отстой из-за количества перекрестных краев. Есть ли способ минимизировать перекрестные ребра в графе? Я имею в виду алгоритм, который может сортировать узлы таким образом, чтобы минимизировать перекрестные ребра?


person Anil Katti    schedule 20.02.2011    source источник
comment
Вы пробовали Graphviz для рисования? Он может лучше свести к минимуму пересечения (особенно Dot, если у вас есть графы, которые он предпочитает). Какой у вас график (т. е. откуда он взялся)?   -  person Jeremiah Willcock    schedule 20.02.2011
comment
Я думал, что networkx использует graphviz для отображения (через pydot). Эти графики взяты из трасс сетей особого типа. Кольца больше всего пострадали :(   -  person Anil Katti    schedule 20.02.2011
comment
возможный дубликат планарных графических макетов   -  person Dr. belisarius    schedule 20.02.2011
comment
@belisarius: Вау! Я даже не помню такой...   -  person    schedule 20.02.2011
comment
Спасибо, Велизарий! Извините, я пропустил это.   -  person Anil Katti    schedule 20.02.2011
comment
@Придурок Ха! Я только сейчас понял, что вы ответили на оба :)   -  person Dr. belisarius    schedule 20.02.2011


Ответы (1)


Определение макета планарного графа, минимизирующего количество пересечений, является NP-трудным. См. вики-страницу номер пересечения.

Вы можете попробовать некоторые эвристики, я полагаю, что макет на основе силы довольно популярен (если я правильно помню, graphviz использует их).

Вы также можете попробовать некоторые алгоритмы приближения, вы должны найти ссылки на странице вики, на которую я ссылаюсь.

Надеюсь, это поможет.

person Community    schedule 20.02.2011