我是数据结构的新手,对术语有疑问。是否有非树状图表的术语?
我意识到双向/无向图本质上是非树状的。这是合适的术语吗?我问,因为看起来这棵树是图形的一个常见子类别,我认为可能有一个术语表示所有图形都在子类别之外。
P.s。:请随意破解上面的任何白话。对于有关数据结构的一般适用术语,我们会提供一些技巧。
答案 0 :(得分:1)
我认为非树图没有单一的通用术语(除了“非树图”本身)。
Trees是连接的,非循环的,有向图,还有一些额外的规则,比如每个节点(根除外)只有一个父节点。某些类型的树具有其他附加规则,这些规则在其他类型的图形中不常见(例如,对节点的子节点的顺序具有重要性)。根据非树图违反哪些限制,您可能会有不同的描述。
未完全连接的树状图可以被描述为“森林”。一个林有几个根节点,每个节点都锚定一个不相交的子树。
如果您有一个包含多个根节点的图形,但它们的后代重叠(以便给定的子节点可能有多个父节点),则您有一个“multitree”。如果表兄弟或其他亲属之间没有婚姻,人类家谱可能是多树种。
下一个更通用的术语可能是“directed acyclic graph”或“DAG”。 DAG比多树更通用,因为祖先节点可以通过多个路径连接到后代节点。人类谱系树更适合作为DAG,因为足够远的亲属通常被允许结婚并生育孩子(但没有人可以成为他们自己的祖先)。有许多算法设计用于DAG,因为禁止循环可以为许多有用的应用程序(例如路径查找)提供更好的性能。
更一般的仍然是“directed graph”或“有向图”,它放宽了限制周期。常见的有向图数据结构是邻接列表(从一个节点到另一个节点的弧列表)。
除了“图表”之外,我认为除此之外还有更多的通用术语。如果您有一个图形的特定应用程序,可能会有一个专门的术语表示您将使用的图形类型(可能还有算法甚至库代码),但您需要具体询问。