首先,抱歉标题。有人请提出一个更好的问题,我真的不知道如何恰当地表达我的问题。
基本上,我只是在寻找数据结构的名称,其中元素看起来像这样(忽略点):
...... 5
... 3 ... 2
.. 4 ... 1 ... 6
9 ... 2 ... 3 ... 1
我首先认为它可能是某种“树”,但正如维基百科所说:
树是一个非循环连接图,其中每个节点有零个或多个子节点,最多一个父节点
由于我正在寻找的数据结构中可以有多个父节点,因此它可能不是树。
所以,这是我的问题:
数据结构的名称是什么,可以表示元素之间具有以下链接的数据? (/和\是链接,再次忽略点):
...... 5
..... / .. \
... 3 ... 2
... / .. \ ./ .. \
.. 4 ... 1 ... 6
../。\ ./ .. \ ./ .. \
9 ... 2 ... 3 ... 1
答案 0 :(得分:4)
我认为将它称为树是不完全错的,尽管“Digraph”(有向图)将是一个更合适的术语。
首先,抱歉标题。 有人请提出一个更好的,我 真的不知道怎么表达我的 问题得当。
标题很好,我打开问题时很难。我现在开始称他们为“保龄球”:)
5
3 2
4 1 6
9 2 3 1
答案 1 :(得分:3)
我认为最受欢迎的事情就是Pascal's triangle。它是用于计算binomial coefficients的结构;每个节点是其父节点的总和:
http://info.ee.surrey.ac.uk/Personal/L.Wood/publications/MSc-thesis/fig36.gif
通常,当涉及到实现这样的算法时(这种类通常被称为"dynamic programming"),这个“结构”通常表示为一个简单的二维数组。请参阅here,例如:
n\k 0 1 2 3 4
------------------
0 1 0 0 0 0
1 1 1 0 0 0
2 1 2 1 0 0
3 1 3 3 1 0
4 1 4 6 4 1
5 1 5 10 10 5
6 1 6 15 20 15
我认为,这种结构没有正式名称,但在动态编程中,这些东西只是...数组。
但是从现在开始,NullUserException suggests我完全称它为“保龄球”: - )
答案 2 :(得分:2)
由于我正在寻找的数据结构中可以有多个父节点,因此它可能不是树。
您正在寻找的可能是graph。 树是图的特例,其中每个节点只有一个父节点。 (除了没有的根)
答案 3 :(得分:2)
“dag”或有向无环图是具有有向边的图,其中可能存在到节点的多条路径,并且一些节点可能同时具有传入和传出边,但是没有办法离开任何节点并返回它(没有周期)。请注意,在有限DAG中,至少有一个节点必须只有传出边缘,并且至少有一个节点除了传入边缘之外什么都没有。如果不是这种情况,则可以在图形中连续移动而不会达到死胡同(因为每个节点都有一个出口),并且没有访问任何节点两次(因为图形是非循环的)。如果只有有限数量的节点,那显然是不可能的。