「旋转矩阵原理及算法」
揭秘大乐透旋转矩阵原理及算法
 (2014-08-07 13:16:36)
转载▼
标签: 
股票
 
财经
 
 
旋转矩阵
 
大乐透
分类: 艺眸原创教程
 
摘要:本研究针对乐透型模型,采用的覆盖设计数学方法,并针对传统的“恰好全部至少有一次覆盖”的简单目标向“恰好全部覆盖一次的最少成本”的目标升级。此研究的理论依据并不是概率论,是纯粹的数据组合。算法可用于研究并不仅限于乐透型的选号应用,可以拓展应用于医药测试、育种等等其他领域。算法的可靠度较强,算法的测试结果接近最优解的100%~95%;算法仅供参考学习研究,请勿用于其他目的。
关键词:;旋转矩阵;覆盖设计;算法。
 
一、绪论
改革开放30多年来,随着人们的精神生活日益丰富,公益行业也激起了广大众的参与热情,其中原由一是出于对公益事件的支持,二是受巨额奖金的吸引。众所周知,的开奖结果是随机性极强的,国家也大力支持开奖过程的透明化。然而毕竟受到诸多因素限制,即便结果接近“随机”,也呈现出一定规律。这种规律的研究方法很多,较于广大彩民接受的是统
计法以及概率论。对于更高层的部分“技术彩民”而言,简单的统计与概率学分析已经无法满足对研究的准确性的要求,因为相对于开奖结果数量的千万种,现有的标本才几千个根本无法作出准确的判断,于是数据的组合运筹开始得到彩民的接受与青睐,因为这种方法可以“摆脱概率”。
在数据的组合之中,有一种方法叫做“聪明组合”,其目标是提高中奖机会。这种所谓的“聪明组合”就是一种数学里面的覆盖设计,简单地讲就是把“可供用于选择的数据”最少地选择,要求是“牺牲最大的胃口能满足最佳的要求”。当然不同的覆盖设计具有不同的设计目标。网络上流行的一些“中6保5”“中5保4”之类的就是“聪明组合”的应用。
为了更好地让读者理解后文所说的“恰好全部覆盖一次的最少成本”这一概念,先讲述一下所谓的“中M保N”到底是怎么回事。
举个实例:大乐透35选5(篮球12选2的研究此处略去),如果选择8个数,这8个数里面如果有即将开奖的5个数,现在通过一个组合,要求不管怎样,这个组合都能保证至少有一组能满足中4个(也有可能中5个)。那么,我们称这个组合叫做“大乐透选8中5保4”的“聪明组合”。比如选择的是{01,02,03,04,05,06,07,08},开奖结果在这8个数内,下面的组合
(5注)将保证能至少有一个中4个结果。
大乐透怎么算中奖
01,02,03,05,08
01,02,04,06,07
01,03,04,06,07
02,03,04,06,07
04,05,06,07,08
可能读者会问,这个“聪明组合”到底怎么“聪明”了?大家可以看到上面这个简单的例子里,如果要保证一定能中4的投注单出现,则复式投注需要C(8,5)=56注;而上面的“聪明组合”只有5注就能满足要求。当然,这个基数小时,优越性不够明显,假如是“大乐透选18中5保4”,那么“聪明组合”需要234注,复试组合需要8568注。一般来讲,“聪明组合”的注数只有复式组合的9%~2%,并且选择的基数越大,效果越明显。
二、算法研究
根据绪论所讲述,我们不禁要问道:“聪明组合”到底是怎么的出来的呢?它的运行机制到底是怎样的呢?下面我将以绪论中的“大乐透选8中5保4”的“聪明组合”作例进行算法分析与设计。
首先,我们要知道我们可以选择的有哪些。为了方便操作,我们先对组合进行编号。
可供我们选择的当然就是8个数里面任意选择5个数的组合数了,共计56组。编号方法为:01,02,03,04,05标记为组1,然后从最右边数据进行累加,组号也进行累加,其中单独一组数据满足从左到右依次增大的规律,比如组1中,01到05依次变大。
那么,我们知道了可供我们来设计“聪明组合”的“原材料”有56组数据。从绪论中可以知道,只要56组中的5组就可以满足要求了。那么,是什么样的5组数组可以达到要求呢?我们不妨列出这5组数据为:{Z1,Z2,Z3,Z4,Z5},Z1~Z5表示组号,在1~56内。
把这5组数组列为纵列,再把56组可能出现中奖号码的数组{A1,A2,A3,…,A56}列为横行,则刚好交互为一个二维坐标系。将横竖两个数组的共同数记录在其交点处,则刚好组成一个5*56的矩阵,记为“条件矩阵”。为了方便统计,再增加一列,在每一行末尾进行统计,如果此行B中5个交点值达到要求,则表明这5组数据{Z1,Z2,Z3,Z4,Z5}满足开奖结果为B的
数组的要求。同理,全部56组都满足要求,则表明这5组数据{Z1,Z2,Z3,Z4,Z5}满足全部开奖结果的可能性下达到要求,也就是“不管怎样都可以符合要求”了。
上面的表述就是“聪明组合”的基本原理,在数学上表述为两个数组的集合的对应数组的交集全部满足条件。上例中要求5*56的矩阵,每一个交点处数据满足要求即等价于题设要求。
那么在实际求解中,我们并不知道是5个数组组合满足最优解的,所以在实际操作中,这个“5”其实是个未知数。假设为X组,那么这个X是不是就没有一个范围呢?在具体的算法中,有范围跟没范围将决定算法的计算量,一般来说可以根据已知的最优解系列得到大致的最优解与全复数组合数之间的关系。这样一来,可以尽可能少地减少计算量。
同时,我们上例中的“56行”表示的是56中开奖结果的可能性,因为我们无法确定到底是哪一组数据最后会是开奖结果,所以我们完全的办法就是满足所有的56组可能性!那么,真正的“聪明”的组合中,必然会考虑到某些结果的权重了,这里的权重就是根据自己的判断得出的可能性的意思。比如说,上一开奖结果,在本次预测中,一般把它的权重降为0,也就是说我们认为设定它出现的可能性接近0;或者大家依据其他条件进行判断某些组号里面的结果不会出现,也可以降低权重。那么,最后进行求解的时候,我们的算法设计就会一句权重大小进行排序
执行了。比如说,排除掉了6组数组(权重为0),则条件矩阵中只要满足5*50的矩阵交点达到要求即可。
这样,我们的算法设计就可以依照权重的思路进行了,可以得出一般解与最优解。那么这样的求解结果到底是不是“最聪明”的呢?不论是一般解还是最优解都不一定是。
为什么呢?因为这种思路的大前提是“满足一次覆盖即可”,它只要求“做到了覆盖成员最少”,并不是要求“单次全覆盖成本最优”。怎么理解这些概念呢?还是以上面的“大乐透选8中5保4”为例来分析。普通的旋转矩阵得出的结果往往是只要能确保一定中1组满足中4个数的投注就行,并没有考虑能否再加几注,或许就能保证中2组,也就是说并没有考虑“最大价值的组合”而只是“纯粹的解题”。
最大价值组合是什么概念呢?比如上例中,普通旋转矩阵得出的5注可以保证至少中一注中4的投注,那么最大价值组合假设是8注,能保证至少中2注中4的投注,显然资金的投注效率提高了。进一步深入理解最大价值组合的概念,可以结合规则(如果是其他行业可以参考其行业规则),对每一个解进行二次加权,这是什么意思呢?就好比是求出了一个解,如果不考虑附加规则,纯数学上市最优的,但是结合实际的权重(中奖的奖金的多少)不同,自然我们对
它的重视度就不同。所以,考虑到这一层次,那么这个组合就算是最大价值的了。
那么,经过这么多的加权运算,怎么在算法上面进行实施呢?我们只要抓住一个根本就行,那就是“条件矩阵”,这是整个算法的核心阵地,所有的加权都只是运算后的过滤条件。这样一来,我们就可以把算法程序化了。
那么程序的设计或说算法的设计的步骤是怎么样的呢?
第一步,对投注组合进行编号,全部的最大的集合就是全复式投注的组合数组。
第二步,确定“工具数组”与“靶数组”。这里的“数组”是指投注组合的编号的集合,前面已经解释。工具数组指的是用来进行进行组合的数组,也就是最后几个数组的母数组集合,通俗地将就是“可以拿来用的投注”。一般而言,工具数组是复式投注的组合数组,比如上例中就是{01~56}。我们最后得出的“聪明组合”或最大价值组合都是这个工具数组的子集,也就是说都是从这里面选的元素,称为“目标组合”。靶数组指的是需要被满足的数组集合,它是复式投注的组合集合的子集。“靶”代表的意义是“可能的结果”,比如行业中,指的是可能的开奖结果。对靶数组进行加权,本质上是对“可能的结果”进行预测,这里可以加入多种不同的预测方法(
加权函数),比如行业中,对往期出现的开奖结果一般可以直接排除,那么把权重降为0,对与上期和值相同的也可以降低权重,对遗漏值、和值进行一定的范围规划也可以用来进行加权等等,这些具体加权方法可以任意发挥。
想表述一点的是这里面的“数组”很容易让人搞混淆,因为每一注是一个数组,而进行投注的组合又是数组,准确的讲是数组的一个集合,而求解中的条件加权筛选与结果加权判定也是对数组的操作,实际上是对数组的数组进行数组集运算,然后对这个集合进行再一次的集合运算。为了方便就必须进行“减少维度”,把每一个可能的投注编号,每一个编号可以查询得到对应的投注数组,然后对这些编号进行排列组合!
第三步,构造“条件矩阵”。其实只要把“工具数组”与“靶数组”进行横竖两维布置就得出了一个二维矩阵。
第四步,对条件矩阵进行判定与筛选。我们的最终目的是为了得出自己想要的组合,怎么判断某一目标组合到底符不符合要求呢?自然需要把要求列出来,然后进行判定。
第五步,快速有效的求解。这是对第四步的具体化操作,也就是说怎么根据已经设定好的条件
要求等等进行运算出最佳的答案来。因为每一个目标组合都是工具数组的子集,那么目标组合的可能的数量就是工具数组的元素的全部组合数了,如果工具数组有n个元素,那么目标组合就有2^n-1种,任意的选择m个元素的目标组合有C(n,m)种。我们现在的难点就是如何构造一个算法,可以较快地得出一个目标组合。如果工具数组包含的元素数n不大,可以采取枚举法,也就是把2^n-1种全部枚举进行判定,选择结果最佳的组合即可。但是随着n值增大,求解过程呈现指数级别增加,显然这不能算一种好的算法。一下列出几种算法供参考。
一、权重法。对每一个工具数组元素进行测试,以满足靶数组元素数量进行第一次加权排序。然后对加入目标组合的元素进行上述测试,对结果进行逆排序,也就是目标函数的元素都要求尽可能不重复满足靶数组的某些元素,这样就可以“均摊开来”满足靶数组的元素,或者说靶数组的被满足的元素之间被满足的次数尽可能都是相同的。
二、碰撞法。这个算法类似于退火算法,对每一目标组合的元素进行“碰撞”,如果元素的“有效性不够”,则被退换下来。这里的有效性指的是满足靶数组的元素的个数。然后这个元素把这个特性传递给自己“同性集合”的其他元素,然后其他元素替补上去进行测试,如果还是不行,
则传递给周边“同行集合”。这里的同行集合指的是能满足某一个靶元素的工具数组元素的集合。
三、缩水法。先选择一个基数进行枚举组合,然后对目标组合进行不断的替换与删除元素,逐渐缩小基数,最后达到无法替换与删除元素即为最终解。
四、小峰值组合法。选定一个小基数,进行组合,把得出的满足靶元素最多的组合(小峰值)进行集合,然后以这个峰值集合里的元素进行组合。
至此,讲述完了传统的“恰好全部至少有一次覆盖”的简单目标向“恰好全部覆盖一次的最少成本”的目标升级及其算法的研究与分析。
祝愿大家好运!鉴于有限的知识水平,期待同道中人互相帮扶,指出文中漏洞,提出宝贵建议。也希望本文能启发大家对相应数学应用的继续研究。谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。