确定图形是否为树的算法

Chi*_*hin 2 algorithm tree graph data-structures

什么是一种简单的算法来确定作为邻接矩阵给出的图是否是树?

Rom*_*rov 7

如果E + 1 = V,您可以计算边缘量(E)和顶点量(V),您可以假设它是一棵树.您还需要检查是否有一个连接的组件.要弄清楚它只包含一个组件,您可以使用DFS或BFS.

  • 当然,但是为了让DFS或BFS在可能包含循环的图形上终止,您需要在某处记录是否已经访问过每个顶点 - 如果您看到先前访问过的顶点,您已经知道图形已经一个循环,无需计算边缘!:-P (2认同)

Ron*_*ell 6

树是没有循环的图形,因此要检测图形是否为树,请检查它是否有任何循环.这可以通过遍历矩阵,保留每个被访问节点的历史以及访问节点,检查它是否在访问的节点集中来完成.

这是一篇关于检测周期的SO帖子.这是一个起点: 如何检测有向图是否是循环的?

您还可以研究图遍历和邻接矩阵,以便更好地了解您需要做什么.

如果完成所有这些后,您仍然需要帮助,那么您可以发布到目前为止的内容.