检查无向图是否是树
Check if unidirected graph is a tree
我想检查我的单向图是否是一棵树。树是无环连通图。我有一个检查图形是否已连接的函数。所以如果图是连通的并且 |E|=|V|-1?
就足以成为一棵树
连通:
表示对于你选择的每一对顶点,它们之间总会有一条路径。
|E|=|V|-1:
如果你的图表有|V|顶点并且给定|E|=|V|-1条边连接它们,那么如果你形成一个循环,你将无法形成一个连通图(一些顶点将保持没有边)。
我们可以得出结论,这些条件已经足够了。
你是对的,E = V - 1
足以检查你的图是否是树。
逻辑是每棵树都以一个根注释开始(V=1
,E=0
,所以 E=V-1
),然后从那里,任何时候我们添加一个节点(V=V+1
),我们还必须恰好添加一条边 (E=E+1
)。这使得等式 E=V-1
对所有树都成立。
当我们用一条新边连接两个现有节点(E=E+1
但 V
保持不变)时,会出现一个循环,使等式 E=V-1
为假。
如果您感兴趣,您可能需要阅读更通用的公式 v - e + f = 2
,其中 f
是图形内部的区域数,包括外部区域。 (一棵树只有一个外部区域,所以 f=1
)。这个规则叫做欧拉公式,你可以阅读on Wikipedia。
我想检查我的单向图是否是一棵树。树是无环连通图。我有一个检查图形是否已连接的函数。所以如果图是连通的并且 |E|=|V|-1?
就足以成为一棵树连通:
表示对于你选择的每一对顶点,它们之间总会有一条路径。
|E|=|V|-1:
如果你的图表有|V|顶点并且给定|E|=|V|-1条边连接它们,那么如果你形成一个循环,你将无法形成一个连通图(一些顶点将保持没有边)。
我们可以得出结论,这些条件已经足够了。
你是对的,E = V - 1
足以检查你的图是否是树。
逻辑是每棵树都以一个根注释开始(V=1
,E=0
,所以 E=V-1
),然后从那里,任何时候我们添加一个节点(V=V+1
),我们还必须恰好添加一条边 (E=E+1
)。这使得等式 E=V-1
对所有树都成立。
当我们用一条新边连接两个现有节点(E=E+1
但 V
保持不变)时,会出现一个循环,使等式 E=V-1
为假。
如果您感兴趣,您可能需要阅读更通用的公式 v - e + f = 2
,其中 f
是图形内部的区域数,包括外部区域。 (一棵树只有一个外部区域,所以 f=1
)。这个规则叫做欧拉公式,你可以阅读on Wikipedia。