有谁知道从有向图计算线有向图的有效算法?请参阅http://en.wikipedia.org/wiki/Line_graph(维基百科文章在底部附近提到了二合字母案例(在概括部分中)。理想情况下,我希望在线性时间内做到这一点。
从那个部分:
- 如果 G 是有向图,则其有向线图或有向线图对 G 的每条边都有一个顶点。
- 当 v = w 时,表示 G 中从 u 到 v 和从 w 到 x 的有向边的两个顶点由线有向图中从 uv 到 wx 的边连接。
令 G 为有向图 令 L(G) 为有向线图
在给定 G 的情况下,我可以想出的生成 L(G) 的算法是:
- 遍历 G 的所有边以产生 L(G) 的节点
- 遍历 L(G) 中的所有节点对 (uv, wx) 并在 v = w 时连接
这是一个 O(n^2) 算法。
似乎应该有一种方法可以将其降低到 O(n) 时间。我要考虑一下,但我想我会问堆栈溢出,以防万一有一些我不知道的著名(或不那么著名)算法可以做到这一点。