检查无向图是否为树

时间:2015-01-31 15:47:14

标签: algorithm graph tree

我想检查我的单向图是否是树。树是一个非循环和连通图。我有一个功能,检查图表是否已连接。如果连接图并且| E | = | V | -1?

,那么它就足够成为树

2 个答案:

答案 0 :(得分:4)

您是对的,E = V - 1足以检查您的图表是否为树。

逻辑是,每棵树都只以一个根音符V=1E=0开始,所以E=V-1),并且从那里开始,每次我们添加一个节点({{1 }}),我们还必须添加一个边(V=V+1)。这使得等式E=E+1对于所有树都保持为真。

当我们使用新边(E=V-1E=E+1保持不变)连接两个现有节点时会发生循环,使等式V呈现为假。

如果您感兴趣,可能需要了解更通用的公式E=V-1,其中v - e + f = 2是图表中区域的数量,包括外部区域。 (树只有一个外部区域f)。此规则称为Euler公式,您可以阅读on Wikipedia

答案 1 :(得分:2)

已连接:
这意味着对于您选择的每对顶点,它们之间始终存在路径。

| E | = | V | -1:
如果您的图表有| V |顶点和你给你| E | = | V | -1边连接它们,然后如果你形成一个循环,你将无法形成一个连接图(一些顶点将保持没有边)。

我们可以得出结论,这些条件已经足够了。