下载Mathematica笔记本

A序列 {a{n}}(n=1)^n形成 一个(二进制)堆,如果它满足a|对于2<=j<=N,其中|_十_|楼层功能,相当于a_i<a_u(2i)1号机组对于1<=i<=(N-1)/2. 因此,第一个成员必须是最小的。堆可以被视为标记的二叉树其中的标签我这个节点比它的任何后代的标签都要小(Skinena 1990,第35页)。堆支持 任意插入和查找/删除O(lnn)每次更新次数(Skiena 1990,第38页)。

堆

列表可以在中转换为堆O(n)使用弗洛伊德(1964)提出的算法。二进制堆可以从置换 p使用健康[p]在沃尔夫拉姆语包裹组合`. 例如,给定随机排列 {6,2,7,9,5,3,4,8,10,1},Floyd的算法给出了堆{1,2,3,8,5,7,4,9,10,6}(左图)。右图显示了一个包含30个元素的堆。

A置换可以使用以下方法测试它是否是一个堆沃尔夫拉姆语功能。

HeapQ[a_List]:=模块[{i,n=Length[a]},
和@@Table[a[[Floor[i/2]]<a[[i]],{i,2,n}]
]
n
1{1}
2{1,2}
{1、2、3},{1,3,2}
4{1、2、3、4},{1、2、4、3},{1、3、2、4}

堆的数量a(n)n=1,2。。。元素是1,1,2,3,8,20,80,210,896,3360。。。(OEIS)A056971号), 前几项总结在上表中。公式a(n)是由

 a(n)=(n-1;b+r_1)a(b+r_1)a(b+r_2)
(一)

具有a(0)=0,a(1)=1,和

h=|_对数2(n+1)|-1
(二)
b=2小时-1
(三)
r=n-1-2b号
(四)
1号跑道=r-||r/(2^h)|(r-2^h)
(五)
2号跑道=r-r\U 1。
(六)

堆的数量我级别(或等效,堆的数量2^l-1英寸元素)由重复关系

 S_l=(2^l-2;2^(l-1)-1)S_(l-1)^2
(七)

具有S_1=1(Skiena 1990年,第36页)。这可以写成产品

 S_l=((2^l-1)!)/(乘积(k=1)^(n)(2^k-1)^(2^(n-k))),
(八)

它的价值l=1,2。。。分别是1,2,8021964800,74836825861835980800000, 。。。(OEIS)A097562号).

Wolfram Web资源

数学

用于创建演示和任何技术的#1工具。

沃尔夫拉姆阿尔法

使用第一个计算知识引擎探索任何东西。

Wolfram示范项目»

探索数以千计的科学、数学、工程、技术、商业、艺术、金融、社会科学等领域的免费应用程序。

Computerbasedmath.org»

参加数学教育现代化的倡议。

在线积分计算器»

用Wolfram | Alpha求解积分。

逐步解决方案»

从头到尾一步一步地复习作业问题。提示可以帮助你自己尝试下一步。

Wolfram问题生成器»

无限随机练习问题和答案内置逐步解决方案。在线学习或在线练习。

Wolfram教育门户网站»

Wolfram教育专家构建的教学工具集:动态教科书、教案、小部件、交互式演示等。

沃尔夫拉姆语»

面向每个人的基于知识的编程。