The invention provides a median selection algorithm based on semantic computing, and specifically designs an algorithm design method based on problem description and semantic analysis. The proposed method is demonstrated by the design of the median selection algorithm. Following our semantic analysis principles, the invention designs a median selection algorithm to find even numbers. The upper bound time complexity of each value is the median of O (3n), which belongs to the field of data structure and algorithm. Its characteristic is to construct a strategy algorithm design method which can be stabilized and optimized by following the Occam's razor principle.
【技术实现步骤摘要】
基于语义计算的中值选取算法
本专利技术提供一种基于语义计算的中值选取算法,具体设计一种基于问题描述和分析的语义分析的算法设计方法,用中值选择算法的设计展示所提出的方法,遵循我们的语义分析原则,本专利技术设计了一个中值选择算法来找出偶数个数值的上限时间复杂度为O(3n)的中值,属于数据结构与算法领域。
技术介绍
在算法设计方面有很多工作,这些工作根据不同的下界和上界产生许多有效的算法。然而,几乎没有方法能够产生可以帮助设计人员以客观的方式接近最优算法的有效策略。本专利技术致力于通过遵循奥卡姆剃刀(Occam'srazor)原理来构建一种能够稳定优化的策略性算法设计方法。本专利技术将选择问题作为这种方法的一个例子。选择是计算机科学算法设计中的一个重要问题。中值选择问题定义如下:给定一个有N个不同数字的数组ARR,找到一个中值数x或一对中值数(x,y)。因此,对于N是奇数,存在大于(N-1)/2个数字且小于(N-1)/2个数字的数目的arrx,当N是偶数,则存在一对数字arrx和arry,他们大于(N-2)/2个其他数字并小于(N-2)/2个其他数字。一个数据集合的中位数通常是很一个很有价值的统计指标,由于它对异常数据不敏感,所以一般会比平均值更能体现数据集合数据的“平均水平”。然而,对于无序数据序列求中位数在实现上却没有求平均值那样简单优美的O(N)复杂度的算法。最容易想到的做法是先对数据进行排序,然后取中点的值,然而这种做法的时间复杂度是O(NlogN)。
技术实现思路
技术问题:本专利技术将选择问题作为本专利技术提出的方法的一个例子。选择是计算机科学算法设计中 ...
【技术保护点】
1.本专利技术定义提出的中位数选择策略为MS,输入是一组数字{x1, x2, x3, x4, x5, x6, ... , xn}, 对于{xi, xi + 1}中的每两个数字,本专利技术设置用于演示目的的顺序方向,假设每个数字的价值都不同,并指定相关规则,其特征在于有如下步骤:步骤S01)输入一组数字{x1, x2, x3, x4, x5, x6, ... , xn},定义为数组ARR,并以{xi, xi+1}的形式组织ARR;步骤S02)xi 与 xi+1比较大小,若xi > xi+1, 则交换xi 和 xi+1的位置步骤S03)从ARR中以{xi, xi+1}形式逐次取值(i>2);步骤S04)放入已处理队列,评估MS的所有属性pMS,本专利技术给出前两次处理的pMS评估如下:步骤S041)方法从数字对{x1, x2}开始,比较1次,我们会得到:x1
【技术特征摘要】
1.本发明定义提出的中位数选择策略为MS,输入是一组数字{x1,x2,x3,x4,x5,x6,...,xn},对于{xi,xi+1}中的每两个数字,本发明设置用于演示目的的顺序方向,假设每个数字的价值都不同,并指定相关规则,其特征在于有如下步骤:步骤S01)输入一组数字{x1,x2,x3,x4,x5,x6,...,xn},定义为数组ARR,并以{xi,xi+1}的形式组织ARR;步骤S02)xi与xi+1比较大小,若xi>xi+1,则交换xi和xi+1的位置步骤S03)从ARR中以{xi,xi+1}形式逐次取值(i>2);步骤S04)放入已处理队列,评估MS的所有属性pMS,本发明给出前两次处理的pMS评估如下:步骤S041)方法从数字对{x1,x2}开始,比较1次,我们会得到:x1<x2或x1>x2(S1)这两种情况在展示当前方法方面没有区别,因为这两个数字的值在开始时实际上是可变的;由于我们正在搜索上界,并且x1<x2需求无操作来维持方向;本发明选择了x1>x2这个更复杂的情况,(S2)我们做1次切换操作以得到在指定方向上的x2<x1;评估中位数:x1和x2均为中位数;隐形中间分界在x1和x2之间,本发明假定有一个中间分界线MDL,形式为:{x2}MDL{x1},然后,对于包含两个新数字的已处理队列,在每次引入两个新数字作为MDL的迭代处理之前,本发明提出的策略将集中在维持MDL;步骤S042)引入数字对{x3,x4},比较1次,我们会得到x3<x4或x3>x4(S1)我们选择x3>x4情况作为更复杂的情形,这种情形需要1次交换操作,交换之后,我们得到x4<x3;(S2)然后将它们引入{x2}MDL{x1},在MDL的两侧需要一次划分,最初的2个比较将是x4与x2和x3与x1比较大小,根据每次比较的两种可能性,会有4种组合情形:{x4<x2且x3>x1,x4>x2且x3<x1,x4<x2且x3<x1,x4>x2且x3>x1}步骤S043)容易和困难的两种情况的处理,根据对称情况的相同性,细分这四种情形分为两种情形:(S1)情况(i):x4<x2且x3>x1或x4>x2且x3<x1,对于x4<x2且x3>x1,中值评估的结果将为{x2}MDL{x1},对于x4>x2且x3<x1,中值评估的结果将为{x4}MDL{x3},因此,中值选择的下界将是这种情况的不断重合;由于对于两个新数字的处理,只有两次的引入比较,因此n个数值的中位数选择的下限是:Omega(1.5n),因为结合了为两个引入数字的一次初始比较和情况(i)中的2次比较;这种情况的特点是每次处理都能很好地保持pML和pMR,并且由于ML和MR的顺序被保持,所以pMLR得到很好的保持;(S2)情况(ii):x4<x2且x3<x1或x4>x2且x3>x1,这种情况不同于情况(i),因为ML与MR的比较结果的顺序不能被保证以符合pMLR的属性,象征性地,ML>MR或ML<MR这种情况的复杂性与相关数字的具体含义无关,同时,具体表示的数字将证实这种情况的复杂性,因此为了便于解释,我们选择该场景的具体代表性名称为:x4<x2且x3<x1(S21)此时,本发明规定ML::=x2,MR::=x3;(S22)为了评估pMLR,需要1次比较:x2与x3比较;对于这两种可能的情况,a.如果x2<x3,则保持pMLR,处理在当前阶段完成,并且可以进入另一轮迭代;b.如果x2>x3,则不保持pMLR,处理在当前阶段完成,并且可以进入另一轮迭代;因为我们正在寻找MS的上限,我们选择利用在单独的左侧比较和右侧比较之后更复杂的ML>MR的情况,因此我们选择探索的场景:x2>x3(S23)因此,需要一次交换才能切换到MDL的另一侧:x2→MRx3→ML(S24)由于这次切换改变了两侧的元素,需要再次评估<pML,pMR,pMLR>的pMS,对于pML,需要评估x4与ML比较的大小,由于x3>x4,pML属性是有保证的;从语义上讲,MS在整个过程中对这种情况的一般意义是引入的两个数字转换到了同一侧;本发明将情景的影响表示为pML|MRN;对于pMR,需要评估x1与MR的比较;从语义上讲,这个场景对于整个MS处理过程的一般意义在于,对于引入两个新数字之前的队列,先前合理的ML或MR(用MLbefore和MRbefore表示)转移到在引入两个新数字之前仅由相同的元素组成的另一侧(用sidebefore(ML)和sidebefore(MR)表示),在MLnew和MRnew引入两个新数字之后,重新将队列中的ML或MR表示为合理的ML或MR;那么对于这种情况的MLnew或MRnew评估是MLnew与sidebefore(MR)比较大小或MRnew与sidebefore(ML)比较大小;根据在引入两个数字之前合理队列的中位数的定义,已知的顺序是MLnew<sidebefore(MR)的每个元素,所以MLnew<sidebefore(MR),相应地,我们得到MRnew>sidebefore(ML);从语义上讲,这种情况的含义是前一个中位数被交换到仅由相同顺序中的前面元素组成的MDL一侧,对于这种情况,定理是不需要操作维护pML或pMR,我们将情景的结果影响表示为pML|MRY;对于pMLR,如果pML和pMR都保持不变,那么pMLR也是合理的;一般来说,在每个复杂处理过程中会有两个相互关联的情况,称为cMS:cMS::=<pML|MRN,pML|MRY>步骤S05)pML|MRN上的建设性语义启示,对于pML|MRN,更一般的情况是,在用{a,b}和a<b表示的两个新引入的数字切换到MDL的一侧,组成sidebefore(ML)(不包括MLbefore)或sidebefore(MR)(不包括MRbefore)之前,需要去验证新的ML或MR:对于MLnew,它位于{{b},sidebefore(ML)-MLbefore}之中对于MRnew,它位于{{a},sidebefore(MR)-MRbefore}之中从语义上讲,就全局评估所需的操作次数而言,两种情况彼此相等,因此可以选择使用其中的任何一种情况来进行后续解释,本发明选择从{{b},sidebefore(ML)-MLbefore}中找到MLnew作为代表方案;建设性地,我们从之前的四个数字场景{x1,x2,(MDL),x3,x4}before继续前面的特定的具体分析开始,对这些数字的表示进行了更新,以便后续的理解;由于MLbefore是x2,sidebefore(ML)-MLbefore是{x1},当a<b被引入到左侧时,{{b},sidebefore(ML)-MLbefore}是{{b},{x1}}:MLnew::=min{{b},{x1}}=min{b,x1}经过1次比较后,我们会得到b和x1之间的顺序,将会有两种可能的模式:步骤S06)(i)branchNew模式b<x1,MLnew=x1从语...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。