假设我们有一个三角形,每个节点都有K个孩子。
K = 2的一个例子是:
1
2 3
4 5 6
K = 3的一个例子是:
1
2 3 4
5 6 7 8 9
K = 4的一个例子是:
1
2 3 4 5
5 6 7 8 9 1 2
等
我想将这些三角形存储在一个数组中。给定元素总数T和每个节点的子数K
我还希望找到每个子元素中数组中每个元素的偏移量。我知道对于上面的例子,其中K = 2,数组是[1,2,3,4,5,6],其中对于每个级别L,偏移量是L *(L + 1)/ 2(因为级别1有1元素,等级2有2,等级3有3 ...)
编辑:这个例子是正确的。每个节点都可以访问K个子节点。对于K = 3 1可以访问2 3和4. 2可以访问5 6和7. 3可以访问6 7和8。
这些是三角形而不是图形或树木。
答案 0 :(得分:1)
现在您已经澄清了您的要求......
对于K = 2,有
1
1+1
1+1+1
...
每个级别中的元素,这是系列1,2,3,....
如果n
是级别编号,则每个级别都有n
个元素。请注意,这也可以写为1+1(n-1)
对于K = 3,有
1
1+2
1+2+2
...
每个级别的元素,这是系列1,3,5,...
;每个级别都有1+2(n-1)
个元素。
对于K = 4,有
1
1+3
1+3+3
...
每个级别的元素,这是系列1,4,7,...
。每个级别都有1+3(n-1)
个元素。
在每个三角形的每个级别都有1+(K-1)(n-1)
个元素。我希望你能从这里继续。
答案 1 :(得分:0)
高度为T
的三角形的元素总数h
为:
T =Σ 1 ... h (1 +(K-1)(n-1))
T = h +(K-1)*Σ 1 ... h (n-1)
T = h +(K-1)*Σ 0..h-1 (n)
T = h +(K-1)*((h-1)2 + h-1)/ 2
T = h +(K-1)*(h 2 + 1 - 2h + h-1)/ 2
T = h +(K-1)*(h 2 -h)/ 2
因此,要获得高度h
,请插入K
的值并求解等式。以下是K
等于3的简单案例示例。
T = h +(K-1)*(h 2 -h)/ 2
T = h +(3-1)*(h 2 -h)/ 2
T = h +(h 2 -h)
T =h²
h =√T
对于偏移量,您使用的是我们用于计算元素总数的相同方程式,但将h
设置为height-1。以下是在K
为4的三角形中获取第3行的偏移量的示例。
偏移(h)= h-1 +(K-1)*((h-1)² - (h-1))/ 2
偏移(3)= 3-1 +(4-1)*((3-1)² - (3-1))/ 2
偏移(3)= 2 + 3 *(4 - 2)/ 2
偏移(3)= 5