2016-11-23 6 views
0

У меня есть график,Удалить переходные ребра в графе

enter image description here

Так как я могу перейти от 1 до 2 до 3 (то есть от 1 до 3 через 2), край от 1 до 3 не является необходимым.

Поэтому я хочу, чтобы удалить ребро непосредственно между 1 и 3.

Как бы это сделать? Я предполагаю, что я должен делать поиск в ширину, чтобы решить, куда я могу пойти с 1

Так что, если у меня есть все мои узлы и край

nodes = [1, 2, 3] 
edges = [ 
    {source: 1, target: 2}, 
    {source: 1, target: 3}, 
    {source: 2, target: 3} 
] 

Я хочу удалить

{source: 1, target: 3}, 

так это необязательно из-за транзитивности, но как я могу определить, следует ли удалять

{source: 1, target: 3}, 

вместо

{source: 2, target: 3} 

?

+0

Минимальное остовное дерево орграфа: http://stackoverflow.com/questions/21991823/finding-a-minimum-spanning-tree-on-a-directed-graph – Dave

ответ

0

Вы ищете транзитивное уменьшение графика, this article should help.

+0

Я уже реализовал BFS. Можно ли использовать его для этого? – Jamgreen

+0

BFS может помочь вам в достижении решения, но вам понадобится больше, чем это. – hbejgel

 Смежные вопросы

  • Нет связанных вопросов^_^