如何确定有向图是否具有从某个节点开始消耗所有边的路径?

时间:2013-03-20 03:54:42

标签: graph-theory

没有限制你必须只跨越每个边缘或每个顶点。

图形的某些属性是否存在这样的路径是必要和充分的(如欧拉路径存在的节点的程度),或某些已知算法证明存在或不存在一个(也许找到通过起点的所有边缘的最小路径)?

我考虑了几种可能性,其中最强大的是将强连接组件折叠成单个超级节点,然后检查结果图是否只是一个覆盖所有边缘的“链表”图(这很简单,只是从起始节点/超级节点总是从当前节点说出单个边缘,计算出访边缘(以及任何内部边缘,如果它是超节点)作为访问时以及当到达叶子节点时查看是否所有边缘都被计数。在这个解决方案中,保留所有原始边缘是很重要的,即使它们变得多余(例如,如果将连接的组件A,B,C折叠成超级节点S,边缘从F到A,F到B,F到C必须即使它们在简化图中指向相同的超级节点S,也都是守恒的。对不起,如果没有正确表达,我会在等待答案时尝试实施此解决方案。

有更简单的方法吗?还是一些更好的算法来处理周期/连通组件?因为当图形是非循环的时候,它似乎很容易解决。

1 个答案:

答案 0 :(得分:2)

如果图形是强连接的,那么您可以从每个其他节点到达每个节点。由于您可以在此路径中重用边缘,因此必须使用每个边缘。采取一些优势, e e 导致节点 v ,您可以从中随后到达每个其他顶点,因此可以到达每个其他边缘。从那些,你可以回到 v 。根据需要重复。

因此回答问题是否存在图形的某些属性以保证存在这样的路径... 我会说是的,如果图形是强连接的。 (注意,对于这样的路径,这不是必需的,例如,在没有分支的单个单向路径的情况下)。但这似乎是单一的边缘情况(我能想到)。

通过蛮力,全部检查方法可以轻松地测试强连通性。你也可以为此调整最大流量,最小割算法。