检查无向图是否是树

Check if unidirected graph is a tree

我想检查我的单向图是否是一棵树。树是无环连通图。我有一个检查图形是否已连接的函数。所以如果图是连通的并且 |E|=|V|-1?

就足以成为一棵树

连通:
表示对于你选择的每一对顶点,它们之间总会有一条路径。

|E|=|V|-1:
如果你的图表有|V|顶点并且给定|E|=|V|-1条边连接它们,那么如果你形成一个循环,你将无法形成一个连通图(一些顶点将保持没有边)。

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

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

逻辑是每棵树都以一个根注释开始(V=1E=0,所以 E=V-1),然后从那里,任何时候我们添加一个节点(V=V+1),我们还必须恰好添加一条边 (E=E+1)。这使得等式 E=V-1 对所有树都成立。

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

如果您感兴趣,您可能需要阅读更通用的公式 v - e + f = 2,其中 f 是图形内部的区域数,包括外部区域。 (一棵树只有一个外部区域,所以 f=1)。这个规则叫做欧拉公式,你可以阅读on Wikipedia