[發明專利]有約束條件排列組合編碼生成算法及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.szxzyx.cn/pat/books/201710915691.1/2.html,轉載請聲明來源鉆瓜專利網。





