看起来像保龄球的数据结构的名称是什么?

时间:2010-08-22 03:35:36

标签: data-structures data-representation

首先,抱歉标题。有人请提出一个更好的问题,我真的不知道如何恰当地表达我的问题。

基本上,我只是在寻找数据结构的名称,其中元素看起来像这样(忽略点):

...... 5

... 3 ... 2

.. 4 ... 1 ... 6

9 ... 2 ... 3 ... 1

我首先认为它可能是某种“树”,但正如维基百科所说:

  

树是一个非循环连接图,其中每个节点有零个或多个子节点,最多一个父节点

由于我正在寻找的数据结构中可以有多个父节点,因此它可能不是树。

所以,这是我的问题:

数据结构的名称是什么,可以表示元素之间具有以下链接的数据? (/和\是链接,再次忽略点):

...... 5

..... / .. \

... 3 ... 2

... / .. \ ./ .. \

.. 4 ... 1 ... 6

../。\ ./ .. \ ./ .. \

9 ... 2 ... 3 ... 1

4 个答案:

答案 0 :(得分:4)

我认为将它称为树是不完全错的,尽管“Digraph”(有向图)将是一个更合适的术语。

  

首先,抱歉标题。   有人请提出一个更好的,我   真的不知道怎么表达我的   问题得当。

标题很好,我打开问题时很难。我现在开始称他们为“保龄球”:)

alt text

      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中,至少有一个节点必须只有传出边缘,并且至少有一个节点除了传入边缘之外什么都没有。如果不是这种情况,则可以在图形中连续移动而不会达到死胡同(因为每个节点都有一个出口),并且没有访问任何节点两次(因为图形是非循环的)。如果只有有限数量的节点,那显然是不可能的。