Как я могу эффективно удалить пересечение между парой ребер в графе евклида?

#python #graph-theory

Вопрос:

Я работаю над поиском приближенного гамильтонова круга минимального веса в задаче евклидова неориентированного графа. Если у меня есть некоторое начальное приближение, в этом круге могут быть пересекающиеся края.пересекающиеся края

В этом примере гамильтонов круг выглядит так ..., u1, v1, ..., u2, v2, ... . В соответствии с неравенством треугольника я могу заменить эти ребра следующим образом

выпрямленные края

чтобы получить круг с меньшим весом.

Как я могу удалить все пересечения таким образом, эффективно используя python? Края хранятся как дикт, но я думаю, что могу использовать другой метод хранения, если он более уместен.

Комментарии:

1. Проверьте NetworkX для структуры данных графика. Он также содержит множество графовых алгоритмов, которые могут быть полезны