《组合数学机械化通用程序库软件 》用户手册
一、 引言
本系统的名称为“组合数学机械化通用程序库软件 ”,是由南开大学研发
的。本软件的首批用户是南开大学组合数学中心的老师和研究生。
本用户手册是关于组合数学机械化通用程序库软件的帮助性文件,目的在于
描述软件的安装和使用,重点在于阐述程序库中主要函数的理论背景、调用格式
及输出结果。预期参考人员包括用户、测试人员、开发人员、项目管理者和其他
质量管理人员。
本用户手册中涉及到如下专用术语和外文单词缩写形式:
a) 组合恒等式机器证明:Zeilberger 在 Gosper 算法的基础上提出了一套证
明组合恒等式的系统方法,后来又提出了 WZ-对的方法,不仅能证明许
多已有的恒等式,还能发现一些新的恒等式。其主要思想是证明组合恒
等式的两边满足相同的递推关系,然后验证等式两边在初值情况下相等。
b) 对称函数理论:对称函数理论是代数组合学中的一个重要研究领域,它
主要研究对称群和对称多项式的代数性质和组合性质,在数学的其他分
支和数学物理中有广阔的应用,是一个受到广泛关注的研究方向。
c) 组合双射理论:组合双射是指在同样数量的两个对象之间的对应。该理
论是组合计数理论的一个重要研究方向,有助于理解各种组合对象之间
的密切联系。
d) q-级数:主要内容为超几何级数的 q-模拟。利用组合对应、算子理论、
基本变换、反演、自动证明等方法研究 q-恒等式和 q-级数的性质。
e) APCI: Autoproof of Combinatorical Identities
f) SYMF: Symmetric Functions
g) EPPT: Enuemrating Paths, Permutations and Trees
h) CPQS: Computation Package for q-Series
i) EVST: Extremal Value of Set Theory
j) PAPM: Package for Applications in Probability Method
相关参考资料包括:
a) 组合数学机械化通用程序库软件 技术总结报告
b) 组合数学机械化通用程序库软件 概要设计说明书
c) 组合数学机械化通用程序库软件 详细设计说明书
d) 软件设计文档国家标准 GB8567-88
二、 功能介绍
本软件共完成了六个通用程序库,重点实现了机器证明、q-级数、对称函数
和组合计数等四个领域的常用函数包。这些程序库包括了机器证明、q-级数、对
称函数、排列和路及树、集合论和概率方法等领域中常用的基本函数和过程。
在组合恒等式机器证明方面,我们实现了 Sister Celine 算法求正则超几何项
递归关系、算子消元法、q-Zeilberger 算法、Gosper 算法、素性判别的随机算法、
正交多项式的关联系数求解、求多项式解的多项式算法等内容。其中 Gosper 算
法和 q-Zeilberger 算法的算法实现尤为重要。
在 q-级数方面,我们重点实现了有关 q-级数等式方面的组合双射算法。主要
包括 Sylvester 映射、特定分拆生成、Corteel-Lovejoy 映射、Euler 定理的组合
证明、Bressoud 映射、Franklin 对合、Durfee 方块和共轭分拆。这些组合双射
算法是该领域的基本算法,为进一步构造双射提供了强大的工具。
在对称函数方面,我们实现了该领域常用的一些函数和过程,包括置换的
(轮换)分解、格排列生成、分拆与杨表表示、分拆与斜分拆的秩、寻找最长递
增子序列、RSK 算法、排列的 Growth diagram 生成、犹豫杨表和集合划分之间
的对应、匹配和 Oscillating tableaux 之间的对应等基本组合对象生成算法和基本
组合算法。其中,RSK 算法是对称函数的核心算法,具有广泛的应用,它的软
件实现将大大有助于我们研究对称函数。
在组合计数方面,我们重点研究了有关路、排列和树的程序实现。排列中的
基本函数包括 PermInsertion、PermPosition、PermList、PermSubseqN、IsPermutation
等生成和判断函数。有禁模式的排列是计算机科学中重要的组合结构。在这方面
我 们 编 写 了 PermSamepatternt 、 PermNbpattern 、 PermNbpatterns 、
PermNbpatternT、PermNbpatternsT、PermDistpattern、PermDistpatterns、PermAvoidP、
PermAvoidPs 等模式排列生成函数。此外我们编写了排列的基本统计量等生成函
数。在路的算法实现方面,我们编写了 Dyck 路、自由 Dyck 路、有 2k 个缺陷
的 n-Dyck 路的生成函数。匹配在生物信息学中有很多应用,我们实现了
MatchingList、 MatchingNbpattern、MatchingAvoidP、RNASSN 和 RNA 二级结
构等生成算法。在标号树方面,我们给出了标号树的序列表示和函数表示。
在集合论方面,我们实现了具有特定性质的集合的生成函数,包括列出包含
某特定集合的子集的函数 shade、列出包含于某特定子集的函数 shadow、匹配布
尔代数元素的函数 matchtofirst、布尔代数对称链分解函数 schd 和寻找特定对称
链函数 symchain 和寻找与集系有特殊性质的特定子集的函数 Bondy。
组合中的概率方法是通过设定概率空间,将某个存在性稳定转化为概率非零
事件问题。在开发的程序库中,我们重点实现了离散随机变量和连续随机变量的
期望和方差函数,快速排序算法和超图的二染色算法。这是概率方法中最经典的
例子和最基本的算法。
三、 运行环境
硬件环境:Intel Pentium III 650 MHz、128M RAM、2G 硬盘空间或更高
操作系统:Windows 2000 或 Windows XP
支持软件:Maple 10
四、 安装方法
本系统共有三个安装文件 、 和 ,
假设它们位于 E 盘根目录下,安装步骤如下:
(1) 打开数学软件 Maple 10。
(2) 在 Maple 命令行内输入如下命令设定程序库路径
[> libname:=libname,"E:\\";
(3) 将程序库 读入当前程序库路径
[>readlib("E:\\");
(4) 输入如下命令
[>with(APCI);
若显示结果如下
[Gosper2, Gosper3, Polysolve, Primetest, Rrop, Tran, cancel_operator,
cceline, celine, celine1, re, sequence_to_tree, tree_to_sequence]
则表示已正确安装软件。
五、 数学符号显示说明
在 Maple 中数学的符号显示与实际表达方式不同,如输入“m[2]”显示为下标
m2;输入“matrix([[1, 1, 1, 1], [1, 1, 0, 0], [1, 0, 0, 0]]) ”,则显示为
.
六、 软件使用
本系统共包括六个程序库,下面将分别说明每个程序库主要函数如何使用。
(1) APCI——自动证明程序库
(1.1) 调用软件包
[> with(APCI);
显示结果如下
[Gosper2, Gosper3, Polysolve, Primetest, Rrop, Tran,
cancel_operator, cceline, celine, celine1, re, sequence_to_tree,
tree_to_sequence]
(1.2) Gosper2 和 Gosper3 函数
Gosper 算法给出了如下问题的解答:给定一个超几何项 tn(相邻两项之
1 1 1 1
1 1 0 0
1 0 0 0
比 tn+1/tn 为有关于 n 的有理函数),求超几何项 zn 使得 zn+1-zn=tn。其算法
可以分为三步:1、求 tn 相邻两项之比 r(n),2、求 r(n)的 GP 表示,3、
求 Gosper 方程的多项式解。函数 Gosper2 实现了算法的前两步,Gosper3
实现了算法的第三步。
Gosper2 函数的理论背景如下:
满足上述条件的多项式 a(n),b(n),c(n)被称为有理函数 r(n)的 GP 表示。给
定超几何项 tn,求 tn+1/tn 的 GP 表示这一功能由函数 Gosper2 给出。
例如取 tn 为如下超几何项
[> t:=binomial(2*n-3,n)/4^n;
显示结果如下
调用函数 Gosper2
[> Gosper2(t,n);
显示结果如下
给定多项式 a(n),b(n),c(n),关于多项式 x(n)的如下方程被称为 Gosper 方程
函数 Gosper3 实现了求解 Gosper 方程的功能。
以方程 nx(n+1)-(n-1)x(n)=1 为例,调用如下:
[>Gosper3([n, n+2, 1], n);
显示结果如下
the solve of x(n) is:
K 1 C m1 n
(1.3) 函数 celine 和 cceline 理论背景如下:
下面以函数 f(n,k)= kn!/(k!(n-k)!) 为例进行说明如何调用函数
celine 和 cceline.
调用格式
[>celine((n,k)->k*n!/(k!*(n-k)!),1,2);
显示结果如下
调用格式
[>cceline((n,k)->k*n!/(k!*(n-k)!));
显示结果如下
(1.4) 函数 re 理论算法说明:
使用该函数时需要使用软件包
[> read:= "E:\\";
函数调用格式
[>re(qhyperterm([0], [], q, z, k), [z])";
显示结果如下
The recurrence relation satisfies:
(1.5) 函数 Tran 功能说明:
(n2K n) F(nK 2, kK 1)C (2n2K 3n) F(nK 1, kK 1)
C (n2K n) F(nK 2, k)C (n2K n) F(nK 1, k)
C (K2n2C5nK 3) F(n, k) =0
(K nC 1) F(n, k) C F(nK 1, k) nC F(nK 1, kK 1) n=0
s (z q ) C (z K 1 ) s (z ) = 0
此函数也需要软件包 的支持,函数调用格式
[> Tran(qhyperterm([a, b], [c], q, z, k), [z]);
显示结果如下
The condition that the Transformation Formulas should
comply with is: |c/q|<1.
The recurrence relation satisfies:
(1.6) 函数 Rrop 理论背景
函数调用格式
[>Rrop(pochhammer(x,n));
显示结果如下
we can get [a,b,c,y]
(1.7) 函数 Polysolve 理论背景
函数调用格式
[>Polysolve(N-1, n);
f (z) = K (K z a qC qC cK z b q) f (z q)
q (zK 1)
K
(z a b qK c) f (q2 z)
q (zK 1)
[1, K n, 0, y ]
显示结果如下
the solve of y(n) is:
(2) SYMF——对称函数程序库
(2.1) 调用软件包
[> with(SYMF);
显示结果如下
[Bump, Bump2, ConjPar, Expectationplot, Expectv, InvBump,
IsStdTab, IsTab, Par2StdTab, RSKcorresp1, RSKcorresp2,
RSKinsert, Tab2Mat, Tab2Par, canonical, cellfilling, growthdia,
insertone, invRSK, lattpermins, lattpermlist, longestisubs,
mat2oscil, onerowinsert, onerowinvinsert, oscil2mat, pair2vacilla,
parrank, reducode, skewrank, srank, vacilla2pair]
(2.2) 函数 pair2vacilla 和 vacilla2pair 理论背景:
函数调用格式
[>pair2vacilla({{1}, {5}, {2, 6}, {3}, {4, 7}}, [[1, 7], [5]]);
显示结果如下
[[], [], [[1]], [[1]], [[1, 2]], [[1, 2]], [[1, 2]], [[1, 2]], [[1, 2], [4]], [[1,
2], [4]], [[1, 2], [4], [5]], [[1, 4], [5]], [[1, 4], [5]], [[1], [5]], [[1, 7],
[5]]]
Vacillating tableau V =, [[0], [0], [1], [1], [2], [2], [2], [2], [2, 1],[2,
1], [2, 1, 1], [2, 1], [2, 1], [1, 1], [2, 1]]
a0 K
1
2
n C 1
2
n2
函数调用格式
[>vacilla2pair([[0], [0], [1], [1], [2], [2], [2], [2], [2, 1], [2, 1], [2, 1,
1], [2, 1], [2, 1], [1, 1], [2, 1]]);
显示结果如下
P=, {{1}, {5}, {2, 6}, {3}, {4, 7}}
T=, [[1, 7], [5]]
(2.3) 调用函数 mat2oscil 将一个匹配变成振荡杨表
[>mat2oscil({{1,4},{2,6},{3,5}});
显示结果如下
然后调用函数 oscil2mat 将振荡杨表变回匹配
[>oscil2mat([[], [1], [1, 1], [2, 1], [2], [1], []]);
显示结果如下
这两个函数的理论背景如下:
(2.4) 函数 RSKcorresp1 和 RSKcorresp2 理论背景:
函数调用格式
[>RSKcorresp1([5,7,1,3,2]);
显示结果如下
函数调用格式
[>RSKcorresp2([5,7,1,3,2]);
显示结果:2
(2.5) 函数 growthdia 理论背景:
函数调用格式
[>growthdia([3, 1, 2]);
显示结果:
(2.6) 函数 longestisubs 是用来求一个序列的极大递增子列。
函数调用格式
[>longestisubs([5, 6, 2, 1, 7, 4, 3, 9, 8]);
显示结果:
(2.7) 分拆与斜分拆的秩相关函数理论背景:
[5, 6, 7, 9 ]
函数调用格式
[>parrank([8, 6, 6, 4, 2]);
显示结果:
4
函数调用格式
[>skewrank([6, 6, 4, 2], [3, 2, 1]);
显示结果:
3
函数调用格式
[>reducode([6, 6, 4, 2], [3, 2, 1]);
显示结果:
[0 1 0 1 0 1 0 1 1 1]
[1 1 0 1 1 0 1 1 0 0]
(2.8) 分拆与杨表相关函数理论背景:
函数调用格式
[>IsTab([[1,1],[2,3],[4]]);
显示结果:
true
函数调用格式
[>IsStdTab([[1,5],[2,3],[4]]);
显示结果:
false
函数调用格式
[>Par2StdTab([2,1]);
显示结果:
具有形状[2,1]的标准杨表共有 2 个: [[[1, 2], [3]], [[1, 3], [2]]]
函数调用格式
[>Tab2Par([[1,2,3],[2,3],[4]]);
显示结果:
[3,2,1]
函数调用格式
[>Tab2Mat([[1,2,3],[2,3],[4]]);
显示结果:
(2.9) 函数 canonical 给出置换的标准既约分解,其理论背景如下:
函数调用格式
[>canonical(5, matrix(1, 5, [3, 4, 5, 2, 1]));
显示结果:
The canonical reduced decomposition of the input permutation is:
[1 2 1 3 2 4 3]
(2.10)函数 lattpermlist 理论背景:
函数调用格式
[>lattpermlist([2, 1]);
显示结果:
[1,2,1] [1,1,2]
(3) EPPT——路、排列和树程序库
(3.1) 调用软件包
[> with(EPPT);
显示结果如下
[DOtoDif, DRT_FunctionToTree, DRT_TreeToFunction, DiftoDO,
DyckPath, FindPosition, FindPosition2, FlawDyckPath,
FreeDyckPath, Inv2MajII, Inv2Perm, IsPermutation, Istree,
Maj2InvII, Maj2Perm, MatchingAvoidP, MatchingInsertion,
MatchingList, MatchingNbpattern, MatchingSamepattern,
MatchingSubseqN, PathFlaw, Patience_sort, Perm2Inv, Perm2Maj,
PermAvoidP, PermAvoidPs, PermDistpattern, PermDistpatterns,
PermExceed, PermInsertion, PermList, PermMaj, PermMajPos,
PermNbpattern, PermNbpatternT, PermNbpatterns,
PermNbpatternsT, PermPosition, PermSamepattern, PermSubseqN,
RNASS, RNASSN, belong, double_root_tree, sequence_to_tree,
tree_to_seq_num, tree_to_sequence]
(3.2) 函数 PermList 用来枚举特定长度的排列。函数调用格式如下
[>PermList(3);
显示结果:
[[3, 2, 1], [2, 3, 1], [2, 1, 3], [3, 1, 2], [1, 3, 2], [1, 2, 3]]
(3.3) 函数 PermInsertion 返回把一个元素插入排列得到的所有排列。
调用格式
[>PermInsertion([3,1,2],4);
显示结果:
[4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 4, 2], [3, 1, 2, 4]
(3.4) 函数 PermPosition 返回特定元素在排列中的位置。
调用格式
[>PermPosition(3,[1,3,2]);
显示结果:
2
(3.5) 函数 PermSubseqN 列举排列中所有特定长度的子序列。
调用格式
[>PermSubseqN([1,3,4,2], 3);
显示结果:
[[1, 3, 4], [1, 3, 2], [1, 4, 2], [3, 4, 2]]
(3.6) 函数 Patience_sort 以贪婪策略寻找最长递增子序列。
调用格式
[>Patience_sort([2,3,1,6,4,5],6);
显示结果:
[2,3,4,5]
(3.7) 函数 IsPermutation 判断给定序列是否排列。
调用格式
[>IsPermutation([2,3,2,1,4]);
显示结果:
It is not a permutation.
(3.8) 模式排列理论背景:
下 面 以 枚 举 不 含 特 定 模 式 的 排 列 函 数 PermAvoidP 和
PermAvoidPs 说明
[>PermAvoidP(3,[1,3,2]);
显示结果如下
[>PermAvoidPs(4,[[1,2,3],[1,3,2],[3,1,2]]);
显示结果如下
函数 PermSamepatternt 判断两个模式是否相同。
调用格式
[>PermSamepattern([1,3,2],[4,7,6]);
显示结果:
true
函数 PermNbpattern 返回单个模式出现在序列中的次数。
调用格式
[>PermNbpattern([4,2,1,3],[1,2]);
显示结果:
2
函数 PermNbpatterns 返回多个模式出现在序列中的次数。
调用格式
[>PermNbpatterns([4,2,1,3],[[1,2],[2,1]]);
显示结果:
2,4
函数 PermNbpatternT 列举含有单个模式特定个数的排列。
调用格式
[>PermNbpatternT(4,[1,2],1);
显示结果:
[3, 4, 2, 1], [4, 2, 3, 1], [4, 3, 1, 2]
函数 PermNbpatternsT 列举含有多个模式特定个数的排列。
调用格式
[>PermNbpatternsT(4,[[1,2],[3,1,2]],[1,1]);
显示结果:
[4, 2, 3, 1]
函数 PermDistPattern 列举对称群中元素及所含特定单个模式次
数。调用格式
[>PermDistpattern(3,[2,1]);
显示结果:
[3, 2, 1], 3
[2, 3, 1], 2
[2, 1, 3], 1
[3, 1, 2], 2
[1, 3, 2], 1
[1, 2, 3], 0
函数 PermDistPatterns 列举对称群中元素及所含特定多个模式
次数。调用格式
[>PermDistpatterns(3, [[1, 2], [2, 3, 1]]);
显示结果:
[3, 2, 1], [0, 0]
[2, 3, 1], [1, 1]
[2, 1, 3], [2, 0]
[3, 1, 2], [1, 0]
[1, 3, 2], [2, 0]
[1, 2, 3], [3, 0]
(3.9) 排列统计量相关函数理论背景:
调用格式
[>Perm2Inv([7,8,4,2,6,9,1,3,5]);
显示结果:
[0, 0, 2, 3, 2, 0, 6, 5, 4]
调用格式
[>Inv2Perm([0,0,2,3,2,0,6,5,4]);
显示结果:
[7, 8, 4, 2, 6, 9, 1, 3, 5]
调用格式
[>PermExceed([3,2,5,4,1]);
显示结果:
2
调用格式
[>Perm2Maj([7,8,4,2,6,9,1,3,5]);
显示结果:
[0, 1, 0, 2, 0, 1, 3, 3, 1]
调用格式
[>Maj2Perm([0,1,0,2,0,1,3,3,1]);
显示结果:
[7, 8, 4, 2, 6, 9, 1, 3, 5]
调用格式
[>Inv2MajII([4,4,2,3,4,1,3,2,3]);
显示结果:
[3, 2, 1, 4, 4, 4, 3, 2, 3]
调用格式
[>Maj2InvII([3, 2, 1, 4, 4, 4, 3, 2, 3]);
显示结果:
[4, 4, 2, 3, 4, 1, 3, 2, 3]
(3.10)函数 FreeDyckPath 理论背景:
调用格式
[>FreeDyckPath(1);
显示结果:
调用格式
[>DyckPath(2);
显示结果:
调用格式
[>FlawDyckPath(2,1);
显示结果:
(3.11)匹配相关函数背景:
函数 MatchingList 列举所有特定长度的匹配。
调用格式
[>MatchingList(2);
显示结果:
[[1, 2, 2, 1], [1, 2, 1, 2], [1, 1, 2, 2]]
调用格式
[>MatchingNbpattern([1,2,2,3,1,4,4,3],[1,2,1]);
显示结果:
5
调用格式
[>MatchingAvoidP(3,[1,2,3,1,2]);
显示结果:
[1, 2, 3, 3, 2, 1], [1, 2, 3, 2, 3, 1], [1, 2, 3, 2, 1, 3], [1, 2, 2, 3, 3, 1],
[1, 2, 2, 3, 1, 3], [1, 2, 2, 1, 3, 3], [1, 2, 1, 3, 3, 2], [1, 2, 1, 3, 2, 3],
[1, 2, 1, 2, 3, 3], [1, 1, 2, 3, 3, 2], [1, 1, 2, 3, 2, 3], [1, 1, 2, 2, 3, 3]
(3.12)函数 RNASSN 列举特定基序列的所有 RNA 二级结构。
调用格式
[>RNASSN(3);
显示结果:
{{[1, 3], [2]}, {[1], [3], [2]}}
(3.13)函数 DOtoDif 和 DiftoDO 相关理论背景:
调用格式
[>DOtoDif([45,37,33,31,25,23,15,11,5,3,1]);
显示结果:
76,60,38,27,19,8,1
调用格式
[>DiftoDO([3,11,17,28]);
显示结果:
23,17,9,7,3
(3.14) 标号树函数相关理论背景:
调用格式
[>tree_to_sequence*(Array([[8, 6, 5, 4, 2, 3, 1], [3, 4, 4, 7, 3, 7,
7]]), 8);
显示结果:
[3,4,4,7,3,7]
result_seq
调用格式
[>sequence_to_tree([3, 4, 4, 7, 3, 7], 8);
显示结果:
[8 6 5 4 2 3 1]
[3 4 4 7 3 7 7]
T_edges
函数 DRT_TreeToFunction 把双根树映射成函数。
调用格式
[>DRT_TreeToFunction([[3,3,3,3,8,8,8,8],[2,1,4,9,9,5,6,7]],8,3);
显示结果:
[3, 3, 9, 3, 8, 8, 8, 3, 8]
函数 DRT_FunctionToTree 把函数映射成双根树。
调用格式
[>DRT_FunctionToTree([3, 3, 9, 3, 8, 8, 8, 3, 8],9);
显示结果:
(4) CPQS——q-级数程序库
(4.1) 调用软件包
[> with(CPQS);
显示结果如下
[Bressouddis2supdis, Bressoudsupdis2dis, Durfee1to3, Durfee3to1,
Franklin, Frobenius2, Partitionlod, Sylvesterdis2odd,
Sylvesterodd2dis, qconjugate, qeuler, qfrobenius]
(4.2) 函数 Sylvesterdis2odd 和 Sylvesterodd2dis 说明,这是 Sylvester
映射的两个函数。函数 Sylvesterdis2odd 将一个各部分互不相同
的分拆变成各部分为奇数的分拆。
[> Sylvesterdis2odd([11, 10, 78, 5, 4, 1]);
显示结果如下
[> Sylvesterdis2odd([11, 10, 7, 5, 4, 1]);
显示结果如下
, ,
9 3 1 2 4 5 6 7
3 8 3 3 3 8 8 8
9 8
函数 Sylvesterodd2dis 将一个各部分为奇数的分拆变成各部分互
不相同的分拆。
[> Sylvesterodd2dis([11, 7, 7, 5, 5, 3]);
显示结果如下
(4.3) 函 数 Partitionlod 是 生 成 各 种 不 同 条 件 的 分 拆 , 其 调 用 格 式 为
Partitionlod(n,k,distinct,odd),参数说明如下:
举例调用格式如下
[>Partitionlod(6, 5, 1, 0);
显示结果如下
(4.4) 函数 qfrobenius 和 Frobenius2 是用来演示 Corteel-Lovejoy 映射的。
其具体背景如下:
[5, 1, D]
[4, 2, D]
[3, 2, 1, D]
调用格式
[>qfrobenius([5, 3, 3, 3, 1, 0], [1, 3, 4, 5], [4, 4, 1, 1, 1, 1], [2, 3, 4,
5, 6]);
显示结果如下
[2, 2], [7, 2], [7, 1], [3, 2, 1]
调用格式
[>Frobenius2([2, 2], [7, 2], [7, 1], [3, 2, 1]);
显示结果如下
[5, 3, 3, 3, 1, 0], [1, 3, 4, 5], [4, 4, 1, 1, 1, 1], [2, 3, 4, 5, 6]
(4.5) 函数 qeuler 理论背景:
调用格式
[>qeuler([4, 2, 1]);
显示结果如下
(4.6) Bressoud 映射两函数理论背景:
调用格式
[>Bressoudsupdis2dis([14, 11, 6, 4, 1]);
显示结果如下
[14, 8, 7, 6, 1]
调用格式
[>Bressouddis2supdis([14, 8, 7, 6, 1]);
显示结果如下
[14, 11, 6, 4, 1]
(4.7) Franklin 函数理论背景:
FROM
1 1 1 1
1 1 0 0
1 0 0 0
<=>
1 1 1
1 1 0
1 0 0
PLUS
1
0
0
调用格式
[>Franklin([5,2]);
显示结果如下
[4,2,1]
(4.8) 函数 Durfee1to3、Durfee3to1 和 qconjugate 理论背景:
调用格式
[>Durfee3to1([4, 4, 4, 4], [5, 3, 1], [4, 3]);
显示结果如下
[9, 7, 5, 4, 4, 3]
调用格式
[>Durfee1to3([9, 7, 5, 4, 4, 3]);
显示结果如下
[4, 4, 4, 4], [5, 3, 1], [4, 3]
调用格式
[>qconjugate([9, 7, 5, 4, 4, 3]);
显示结果如下
[6, 6, 6, 5, 3, 2, 2, 1, 1]
(5) PAPM——概率方法应用程序库
(5.1) 调用软件包
[> with(PAPM);
显示结果如下
[Color, Firstpass, Hgame, Hyper, RandomCut, Secondpass,
Thirdpass, Ylocal, colorable, contexpectation, contvariation, csort,
discexpectation, discvariation, quicksort, sapp]
(5.2) 期望和方差相关理论背景:
调用格式
[>contexpectation((1/sqrt(2*Pi))*exp(-x^2/2));
显示结果如下
0
调用格式
[>contvariation(exp(-1/2*x^2)/sqrt(2*Pi));
显示结果如下
1
调用格式
[>discexpectation(exp(-1)/i!);
显示结果如下
1
调用格式
[>discvariation(exp(-1)/i!);
显示结果如下
1
(5.3) 序列排序相关函数理论背景:
调用格式
[>quicksort([29,32,18,49,512]);
显示结果如下
[18, 29, 32, 49, 512]
调用格式
[>csort([29,32,18,49,512]);
显示结果如下
[18, 29, 32, 49, 512]
(5.4) 函数 Ylocal 根据图的关联结构和特定顺序改变顶点状态。
调用格式
[>with(networks);
[>Ylocal(cycle(4),[1,2,4,3,4],[1,0,0,1]);
显示结果如下
[0, 1, 0, 1]
(5.5) 下面我们以简单交错路求解函数 sapp 为例进行说明。函数 sapp
在交错路存在的条件下返回一个顶点序列。
[> sapp([0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1]);
显示结果如下
下面看一个交错路不存在的例子
[> sapp([0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0]);
显示结果
(6) EVST——极值集合论程序库
(6.1) 调用软件包
[> with(EVST);
显示结果如下
(6.2) 函数 shade 和 shadow 理论背景:
[ ], , , , , ,Bondy MatchToFirst schd shade shadow shift1 symchain
调用格式
[>shade(5,2,[[1,2],[2,5]]);
显示结果如下
[[1, 2, 3], [1, 2, 4], [1, 2, 5], [2, 3, 5], [2, 4, 5]]
调用格式
[>shadow(5, 3, [[1, 2, 5], [2, 4, 3]]);
显示结果如下
[[1, 2], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4]]
(6.3) 函数 MatchToFirst 理论背景:
调用格式
[>MatchToFirst(4, 1);
显示结果如下
[[1], [1, 2]]
[[2], [2, 3]]
[[3], [1, 3]]
[[4], [1, 4]]
[]
(6.4) 下面我们以布尔代数分解的两个函数 schd 和 symchain 进行说明。
函数 schd 将布尔代数分解成互不包含的链的并。
[> schd(4);
显示结果如下
函数 symchain 给出过某一特定子集的对称链。
[>symchain(7, {3, 4, 7});
显示结果如下
这两个函数的理论背景如下:
(6.5) 函数 Bondy 返回某一特定集合使其与集系中元素相交时交集互
不相同。调用格式
[>Bondy(5,[{1,2,5},{3,1},{2,3},{2,4,5},{1,3,5}]);
显示结果如下
{2, 3, 4, 5}
七、 帮助文件
为了帮助用户理解和使用程序库中的函数,我们对软件包中的主要函数
进行了说明,包括参数说明、调用格式、函数功能和例子等。下面我们以 APCI
程序库中的函数 Gosper2 为例进行说明,如何使用帮助。
(1) 安装帮助文件
安装文件中的 包含了全部现有的软件帮助信息,将该
文件利用 Maple 环境加入到帮助文件数据库中。
(2) 查找函数 Gosper2 的帮助信息
只需要在打开 Maple 后在命令行里输入如下信息
[> help(Gosper2);
则 Maple 会打开新的窗口,显示如下
八、 联系信息
本软件由南开大学研发,南开大学拥有版权著作权。
地址:天津市南开区卫津路 94 号 邮编:300071
电话:022-2350-2180 传真:022-2350-9272