[发明专利]一种基于一维索引的组合遍历方法在审
申请号: | 202111292884.9 | 申请日: | 2021-11-03 |
公开(公告)号: | CN113986928A | 公开(公告)日: | 2022-01-28 |
发明(设计)人: | 张游杰;吴伟;杨志杰;郑伟伟;张清萍;陈学丽 | 申请(专利权)人: | 中电科鹏跃电子科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F9/46;G06F16/2455 |
代理公司: | 太原荣信德知识产权代理事务所(特殊普通合伙) 14119 | 代理人: | 杨凯;连慧敏 |
地址: | 030032 山西省太原市*** | 国省代码: | 山西;14 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 索引 组合 遍历 方法 | ||
本发明属于数据处理算法技术领域,具体涉及一种基于一维索引的组合遍历方法,包括下列步骤:S1、建立n个集合Vi,每个所述集合Vi中有k个元素;S2、从每个集合Vi中任取一个元素,构成一个组合;S3、遍历所有S2所述的组合,构成集合G;S4、通过索引算法将集合G中的所有元素在一维空间生成组合索引Gindex;S5、通过for循环实现组合的遍历。本发明占用内存少,内存占用最大的是已知集合对应的变量,而在计算过程中额外占用的内存极少。本发明可适用于多线程和分布式计算,可以将组合索引值index的范围分段后,使用多线程或分布式计算方式,分别计算,以提高效率。
技术领域
本发明属于数据处理算法技术领域,具体涉及一种基于一维索引的组合遍历方法。
背景技术
排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。
组合的遍历是计算机软件中常见的一种应用。大部分组合遍历算法都是通过递归的方式来实现。但是,通过递归方式实现有以下几个缺点:1)由于递归是函数调用自身,而函数调用是存在时间和空间的消耗,运行效率较低。2)当调用的层次太多时,递归深度太大时,就会超出栈的容量,从而导致栈溢出。3) 难以采用多线程或分布式计算方式提高性能。为解决此问题,提出一种基于一维索引的组合遍历方法。
发明内容
针对上述的技术问题,本发明提供了一种额外占用内存极少、计算复杂度小、可完成大数据级的计算的基于一维索引的组合遍历方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于一维索引的组合遍历方法,包括下列步骤:
S1、建立n个集合Vi,每个所述集合Vi中有k个元素;
S2、从每个集合Vi中任取一个元素,构成一个组合;
S3、遍历所有S2所述的组合,构成集合G;
S4、通过索引算法将集合G中的所有元素在一维空间生成组合索引Gindex;
S5、通过for循环实现组合的遍历。
所述S1中的集合
所述S3中的集合G={(v1,v2…vn)|vi∈Vi},i=1,2…n,所述集合G的长度为kn。
所述S4中的组合索引为一个等差递增数列。
所述S4中索引算法的方法为:
S4.1、组合索引值所述ji代表第i个集合Vi中被选中元素的序号,1≤ji≤k;
S4.2、推导出组合索引中每个值对应的集合Vi中所选中元素的序号,所述 ji=((index/ki-1)mod k)+1;
S4.3、组合索引中的值与所对应组合的关系为:
本发明与现有技术相比,具有的有益效果是:
1、本发明占用内存少,内存占用最大的是已知集合对应的变量,而在计算过程中额外占用的内存极少。
2、本发明计算复杂度小,每个数组只需要n个整数的除法和取模算即可得出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中电科鹏跃电子科技有限公司,未经中电科鹏跃电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111292884.9/2.html,转载请声明来源钻瓜专利网。