Performance 数据结构:类似维基百科的树

Performance 数据结构:类似维基百科的树,performance,data-structures,tree,hierarchy,wikipedia,Performance,Data Structures,Tree,Hierarchy,Wikipedia,我目前正在开发一个本体论,一个所有事物(想想人、地方、事物)类别的网络层次结构。完成的产品应该可以让我从技术->计算机->笔记本电脑->USB端口导航,也可以从电影->少数群体报告->计算机->等等导航。 我需要一个有效的数据结构来对这些数据进行分组。我需要一个树状图,但需要一个特殊的树,允许子节点有多个父节点。 在思考这个问题时,我意识到维基百科是一个不完美的模型。事实上,他们有一个基本上正是我所需要的层次结构。我看到他们使用了有向图,但我想知道这个有向图、有向无环图和多边形树之间的区别/缺点

我目前正在开发一个本体论,一个所有事物(想想人、地方、事物)类别的网络层次结构。完成的产品应该可以让我从技术->计算机->笔记本电脑->USB端口导航,也可以从电影->少数群体报告->计算机->等等导航。 我需要一个有效的数据结构来对这些数据进行分组。我需要一个树状图,但需要一个特殊的树,允许子节点有多个父节点。
在思考这个问题时,我意识到维基百科是一个不完美的模型。事实上,他们有一个基本上正是我所需要的层次结构。我看到他们使用了有向图,但我想知道这个有向图、有向无环图和多边形树之间的区别/缺点是什么。我试过研究它,但我不太明白其中的区别。任何帮助都将不胜感激。谢谢大家!

我认为维基百科上的文章提供了一个很好的概述:

  • A是一组由边连接的节点,这些边具有与其关联的方向
  • A(DAG)是一个无向图
  • A(也称为有向树)是在任意两个顶点之间有一条无向路径的有向图。换句话说,一个多树是一个有向图,它的底层无向图是一个,或者等价地,一个无向圈的有向无环图

所以我认为你在寻找一个连通的有向无环图。尽管维基百科分类系统允许循环,但它们是不需要的。

BTW:Wikipedia分类允许循环,尽管社区不需要循环。德国的系统是一个更好的例子,多树,植根于你可能是指一个?否则这听起来就像一个一般的有向图。是的,我指的是一个本体。谢谢你的专业术语:)谢谢你的帮助!不过,我不太清楚维基百科中的“定向”是什么意思。你能解释一下边缘有方向意味着什么吗?这只是父母->孩子的行话吗*抱歉,如果这是一个愚蠢的问题不,在一个无向图中,你不会知道它是“向上”或“向下”,只是“你可以旅行”。但是您的有向图可能提供一个方法“getIncomingEdge(node)”,它返回例如“Sports”和“Balls”。@Bergi我不确定我是否说过。我的意思是:如果你在节点Basketball,你可以从Basketball移动到任何与Basketball有边缘连接的节点。@r你明白了。无向图比有向图更容易实现。我认为如果节点之间有很多双向边,那么有向图会消耗更多的空间,但这并不是什么大问题。从处理器的角度来看,无向图可能会快一点,因为逻辑比较简单,但也不是什么大问题。不,您可以在所有类型的图上漫游。“定向”表示边缘上只有一个方向信息,表示哪个节点“向上”,哪个节点“向下”(或父节点/子节点或其他)。这意味着它需要更多的存储容量。效率取决于您想要执行的任务。