术语:非树图?
Posted
技术标签:
【中文标题】术语:非树图?【英文标题】:Terminology: Non-tree graph? 【发布时间】:2015-05-18 01:27:12 【问题描述】:我是数据结构的新手,对术语有疑问。有非树状图的术语吗?
我意识到双向/无向图本质上是非树状的。这是合适的术语吗?我之所以问,是因为这棵树似乎是图的一个常见子类别,我认为可能有一个术语表示所有不在子类别范围内的图。
P.s.:请随意破解上面的任何白话。希望获得有关数据结构的一般适当术语的提示。
【问题讨论】:
边的方向性与图是否为树无关。 【参考方案1】:我认为非树形图没有一个通用术语(也许“非树形图”本身除外)。
Trees 是连接的、非循环的、有向图,具有一些附加规则,例如每个节点(根节点除外)只有一个父节点。某些类型的树具有其他类型的图形中不常见的其他附加规则(例如节点的子节点的顺序很重要)。根据非树形图违反了哪些限制,您可能会对其进行不同的描述。
不完全连接的树状图可以描述为“森林”。一个森林有几个根节点,每个根节点都锚定一个不相交的子树。
如果您有一个包含多个根节点的图,但它们的后代重叠(因此给定的子节点可能有多个父节点),则您有一个“multitree”。如果表亲或其他亲属之间没有婚姻,则人类家谱可能是多树。
下一个更通用的术语可能是“directed acyclic graph”或“DAG”。 DAG 比多树更通用,因为祖先节点可能通过多条路径连接到后代节点。人类谱系树更适合作为 DAG,因为通常允许足够远的亲戚结婚生子(但没有人可以成为他们自己的祖先)。有许多算法设计用于 DAG,因为禁止循环可以为许多有用的应用程序(例如路径查找)提供更好的性能。
更一般的仍然是“directed graph”或“digraph”,它放宽了限制循环。常见的有向图数据结构是邻接表(从一个节点到另一个节点的弧列表)。
除了“图表”之外,我认为没有比这更笼统的术语了。如果您有一个特定的图表应用程序,那么您将使用的图表类型可能会有一个专门的术语(可能还有算法甚至库代码与之一起使用),但您需要具体询问。
【讨论】:
太棒了!这真的有助于澄清事情。感谢您的帮助! 嗨@ReidasaurusRex:如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。 不完全是:一棵树是一个 无向 图,它是连通的且无环的,请参阅此 Wikipedia article。如果您想引用 有向 树(也称为 polytree),则不能使用您的定义,因为“非循环”仅禁止 有向循环,但不是半周期。所以你应该说“没有循环”或等效地“没有无向循环”(=没有有向循环和没有半循环)而不是“非循环”。有关详细信息,请参阅this answer。以上是关于术语:非树图?的主要内容,如果未能解决你的问题,请参考以下文章