[发明专利]有约束条件排列组合编码生成算法及MATLAB实现方法在审
申请号: | 201710915691.1 | 申请日: | 2017-09-30 |
公开(公告)号: | CN107526903A | 公开(公告)日: | 2017-12-29 |
发明(设计)人: | 杜瑞卿;杜彦辉;顾妍;张征田;张新刚 | 申请(专利权)人: | 南阳师范学院 |
主分类号: | G06F17/50 | 分类号: | G06F17/50 |
代理公司: | 北京中恒高博知识产权代理有限公司11249 | 代理人: | 刘洪京 |
地址: | 473061 河南*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 约束条件 排列组合 编码 生成 算法 matlab 实现 方法 | ||
技术领域
本发明属于运筹、规划、信息、计算机等领域的编码生成算法技术领域,特别涉及有约束条件排列组合编码生成算法及MATLAB实现方法。
背景技术
关于1,2,…,n的全排列及组合生成,目前已有数十种不同的求解算法。典型的排序算法有直接选择排序、冒泡排序、插入排序、归并排序、快速排序等;而全排列生成算法典型的如字典序法、进位法、换位法、邻位对换法等,其中一些是比较难理解的递归型算法。但实际应用中不完全是不同元素的全排列或组合,有时是有特殊要求的排列,诸如课程安排算法的求解,体育赛事的安排,车辆调度,整数线性规划求解,信息编码、某种算法或程序中的要求等。关于有约束条件要求的排列组合,有部分文献资料,但存在不足:1、算法思想不够简捷,比较复杂。2、算法描述不够描述精炼,不易让读者掌握领会。3、在程序实现上,不够具体,缺少明确性。4、约束条件简单,位数少,不具有普遍性。
发明内容
本发明目的是提供一种有约束条件排列组合编码生成的算法;基于算法的程序实现;以实例演示便于掌握该算法及程序;为信息编码、运筹、规划求解等科研、生产实际提供有效服务。
本发明是采用以下技术方案实现的:
一种有约束条件排列组合编码生成算法,包括有约束条件的排列生成方法和有约束条件的组合生成方法,
有约束条件的排列生成方法:
设排列a1a2…am,满足:0≤ai≤Ni,a1+a2+…+am=n,求所有a1a2…am的生成;
从满足约束条件的最小全排列开始,按依次增大的方法生成下一个全排列:
(1)从排列a1a2…an最右边开始向左边查找:at<Nt,t=max{i︱ai<Ni,i≠m},a1a2…at-1保持不变,at+1→at;
(2)计算:
(3)重新生成第t+1位到m位:
MjφNj时,令a′j=Nj,Mj-1=Mj-Nj;Mj≤Nj时,令a′j=Mj,a′j-1=a′j-2=Λ=a′t+1=0;
(4)形成新的排列:a1a2Λat-1(at+1)a′t+1Λa′j-1a′jΛa′m;
(5)重复(1)-(3),可生成全部排列,结束生成。
优选地,有约束条件的组合生成方法:
设求ai≠aj,i≠j,a1+a2+Λ+am=n,由a1,a2,…,am组成的所有组合。
从满足约束条件的最小升序组合开始,按依次增大的方法生成下一个升序组合:
(1)从升序组合a1a2…am的最右边开始寻找ak,t=max{j|aj-1φaj-1},
k=max{r|t-rφ1Ιar+1-ar=2}(1)式或者k=max{r|ar+1-ar≥3}(2)式;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南阳师范学院,未经南阳师范学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710915691.1/2.html,转载请声明来源钻瓜专利网。