我是数据结构新手,有一个术语问题。有非树状图的术语吗?
我意识到双向/无向图本质上是非树状的。这个词合适吗?我问这个问题是因为树似乎是图表的一个常见子类别,我认为可能有一个术语表示所有属于该子类别之外的图表。
P.s.:请随意破解以上任何白话。希望了解有关数据结构的一般适当术语的提示。
我认为非树图没有一个通用术语(也许“非树图”本身除外)。
树是连接的、非循环的、有向图,具有一些附加规则,例如每个节点(根除外)只有一个父节点。某些类型的树具有其他类型的图中不常见的其他附加规则(例如节点子节点的顺序具有重要意义)。根据非树图违反了哪些限制,您可能会以不同的方式对其进行描述。
不完全连接的树状图可以被描述为“森林”。森林有多个根节点,每个根节点锚定一个不相交的子树。
如果您有一个具有多个根节点的图,但它们的后代重叠(以便给定的子节点可能有多个父节点),那么您就有一个“multitree”。如果表兄弟姐妹或其他亲戚之间没有婚姻,人类家谱可能是多树。
下一个更通用的术语可能是“有向无环图”或“DAG”。 DAG 比多树更通用,因为祖先节点可以通过多条路径连接到后代节点。人类家谱树更适合被认为是 DAG,因为足够远的亲戚通常被允许结婚生子(但没有人可以成为自己的祖先)。有许多算法设计用于 DAG,因为禁止循环可以为许多有用的应用程序(例如路径查找)提供更好的性能。
更一般的仍然是“有向图”或“有向图”,它放宽了限制循环。一种常见的有向图数据结构是邻接列表(从一个节点到另一个节点的弧列表)。
我认为除了“图表”之外,没有其他更通用的术语了。如果您对图表有特定的应用程序,那么您将使用的图表类型可能有一个专门的术语(可能还有与之相配的算法甚至库代码),但您需要具体询问。