最小长度加法生成序列算法初探.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最小长度加法生成序列算法初探 【摘要】由最小长度加法生成序列定义出发,结合树 型结构的特点,探索其解决方案。并用Delphi语言实现了 该算法。 【关键词】最小长度加法生成序列;树;结点 Analyzing and Discussing of the shortest Adding production Series Algorithm Liu Na Liu Gui-ping (Department of Science Hetao College Inner Mongolia Bayannur 015000) 【Abstract 】In this paper, How to returning the shortest adding production series from its creating Tree is created , and give out a Delphi source code. 【Keywords 】 the shortest adding production series; tree; node 1引言 什么是加法生成序列? 对于给定的正整数n,一个具有如下性质:①a0=l; ②am=n;③a0称为一个加法生成序列。 什么是最小长度加法生成序列? 对于给定正整数n,依据加法生成序列的原则所构造的 整数序列长度最短,则称之为正整数n的最小加法生成序列。 假如有两个或两个以上的这样的序列,任选其一即可。例如, 和都是n=5的解。 2算法初探 对于给定的n,最直观的也是最长的加法生成序列是。 这个问题解决起来是很方便的,构造一个等差数列,首项 aO=l,公差d=l, a.n=n。但此时得到的显然不是最小加法生 成序列。 接下来看个特例,如果n=2m,也容易得到最小加法生成 序列,即。这是一个等比数列,首项aO=l,公比q=2,am=n。 但如果n^2m,就很难得到这样的结论了。由以上两个例子 我们可以看出,这个序列并不是个简单的等差或是等比数 列。 3树型结构求解 树型结构是一类重要的非线性数据结构,直观看来,树 是以分支关系定义的层次结构。树是n (n^O)个结点的有 限集。在任意一棵非空树中(1)有且仅有一个特定的称为 根的结点;(2)当n〉1时,其余结点可分为m (m〉0)个互 不相交的有限集Tl,T2,…,Tm,其中每个集合本身又是一 棵树,并且称为根的子树。结点的子树的根称为该结点的孩 子,相应地,该结点称为孩子的双亲。例如,图1结点的层 次从根开始定义起,根为第一层,根的孩子为第二层。若某 结点在第1层,则其子树的根就在第1+1层。 结点的袓先是从跟到该节点所经分支上的所有结点。例 如,G的袓先为A、D和F。 如果将树中结点的各子树看成从左至右是有次序的(即 不能互换),则称该树为有序树,否则称为无序树。在有序 树最左边的子树的根称为第一个孩子,最右边的称为最后一 个孩子。 构建最小加法生成序列树型图,如图2所示。 最小加法序列树满足如下特性。 如果对一棵最小加法序列树分层进行连续编号,约定编 号从每一层最左结点起,由左至右编号,并按照其编号将结 点命名。例如编号为11的结点,表示的便是第一层的从左 起的第一个结点,并将其命名为结点all;编号为43的结点, 表示的是第四层从左起的第三个结点,并将其命名为结点 a43o如图3所示。 性质1:除根结点外,其余结点的取值均为其父结点与 祖先结点之和。例如a43=a31+all。 性质2:第m层的结点数最多是(m-1)!个。 设第m-1层有k个结点,由性质1可知,每个结点的子 结点个数最多为(m-1),可以推断出第m层的结点数最多是 kX (m-1)个。由于第一层为根结点,结点数为1,所以第 m层的结点数最多是(m-1)!个。 性质3:在第m层上最小加法序列树穷举了该层次上所 有可能得到的结果,因为列举了上一个层次产生的每一个结 果与其自身以及在同一个分支上的每一个袓先之和。 由性质3可以推断出,若要求得n的最小加法序列,只 需要找到生成目标数n的最小层次即可,由n这个结点向上 逆推到根结点,这个逆推的过程,便是得到序列的过程。 4算法实现 本文用Delphi语言给出算法,采用存储结构为动态数 组,具体代码如下: var N: integer; //整型变量N最小加法生成序列的目 标元素 A: array of array of integer; //动态二维数组 A, 用于存放树的结点 B: array of integer; //一维数组B,用于存放树每 一层的结点数 I, II, 12, J, Jl, J2, P , K: integer; //循环中 用到的整型变量 F: integer; //标志变量,用于判定是否找到了 N C,

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档