在图中查找特定边

时间:2018-04-26 14:51:16

标签: algorithm graph-theory depth-first-search breadth-first-search

我有一个无向图,它有一些节点和边。

每个节点都有一定的颜色,每个边都是特定类型,由它连接到的节点的颜色决定:

  • 连接红色和蓝色节点的边缘为红蓝色。
  • 由于图表是无向的:red-blue == blue-red

我的任务是编写能够找到所有边缘的算法#34;隔离"。

当原始边缘与原始边缘与原始边缘相同的下一个边缘之间至少有2个边缘距离时,边缘被隔离。

最好的方法是什么?最有可能的是它可以使用广度/深度优先搜索来解决,但我无法找到将它们连接到这个特定问题的方法

1 个答案:

答案 0 :(得分:0)

我很确定这会有效,不确定复杂性

For each node n:
    For each edge (n, n2) e:
        n.colors[edgeColor(e)] += 1
For each node n:
    n.colors2 = n.colors.copy()
    For each edge (n, n2) e:
        n.colors2 = mergeSum(n.colors2, n2.colors)
For each edge (n, n2) e:
   if n.colors2[edgeColor(e)] == 2 and n2.colors2[edgeColor(e)] == 2:
       isolated edge