当前位置: 首页 > 专利查询>杨磊专利>正文

基于概率分布的计算机排序技术制造技术

技术编号:2869251 阅读:225 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及计算机技术中的排序问题。以待排数据量N定义问题规模,目前公知内排序算法平均时间复杂度都不低于O(N.logN)。大多数情况下待排数据可认为是“独立同分布”的,但公知排序技术都没有考虑这一统计特性。本文提出的排序技术,通过概率手段对待排数据目标位置进行估计,有效减少数据的比较与交换操作,提高排序效率。本发明专利技术给出具体的内、外排序方法,内排序方法平均时间复杂度为O(N)。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算机技术中一类非常基础和重要的问题排序。
技术介绍
排序是计算机领域中一类非常基础和重要的问题,在计算机技术中经常遇到,并且在很多数据处理过程中占用了大量的计算时间。同时排序也具有相当的理论价值。快速、高效的计算机排序技术一直是人们所感兴趣的问题。排序问题的数学描述给定N个无序的数据XN=(x0,x1,...,xN-1),找到XN的一个全排列YN=(y0,y1,...,yN-1),使得对于任何k=1,2,...,N-1都有yk-1y成立。若YN中的ym与XN中的某个xn相对应,则称m是xn的目标位置(或者也称ym是xn的目标位置)。说明“”是定义于待排数据集上的一种次序关系。如上文“yk-1yk”表示yk-1应位于yk之前(或我们并不介意二者的相对位置关系,这时ykyk-1也成立,记作yk-1≡yk)。说明在实际应用中XN和YN可根据需要使用相同或者不同的存储空间。前者称为“原地置换排序(In-place Sort)”。如XN的存储空间不被破坏则称为“稳定排序(Stable Sort)”。说明后文也用方括号“,表达与xn相同的含义。根据应用环境不同,排序技术可以分成两类内排序和外排序。内排序指待排数据量较少,所有的数据都可以(存放于计算机内存中)供随机访问的情形。但是,如果待排数据量超过了内存容量,则一次只能从外存设备(如磁带、磁盘等)读入部分数据在内存中排序,并且需要通过多次内排序操作才能实现排序目的。这种情形称为外排序。针对不同情况,目前已经发展出各种各样的排序技术。常用内排序技术有选择排序、冒泡排序、Shell(希尔)排序、堆排序、归并排序、快速排序、基数排序方法等等。常用的外排序技术则有归并法和二阶段法。下面介绍其中几种。冒泡内排序(Bubble Sort)这是一种简单的原地置换排序技术。其基本思想是将待排数据看作是竖着排列的“气泡”,较小数据比较“轻”,从而要往上浮。自底向上检查待排数据集,交换次序不正确的相邻数据,使轻的数据上浮。这样一遍处理之后,最轻的数据就浮到了最高位置;处理第二遍之后,次轻的元素浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是最轻元素,所以不必检查。一般地,进行第n遍处理时,不必检查第n高位置以上的元素,因为经过前面n-1遍处理,它们已正确地排好序。显然,冒泡排序的基本操作是比较与交换。快速内排序(Quick Sort)这是一种递归的排序技术,同时也是一种原地置换排序技术。从待排数据集中任取一个数据x0作为分界点(Pivot),将所有小于x0的数据挪动到x0的前面,所有大于x0的数据挪动到x0的后面,则只要当x0前面和x0后面的数据分别达到有序就能够实现整个数据集有序。而对x0前后数据进行排序可以通过递归的方式实现。快速排序的基本操作仍是待排数据的比较与交换。基数内排序(Radix Sort)这是一种基于关键字分解的排序技术,要求数据的相对次序由多个子关键字共同确定。字符串或整数型数据显然是可以分解成多个子关键字的。基数排序技术有两种形式,一种称为基数交换排序法(高子关键字优先),即首先根据最高子关键字将数据分成若干组,然后在每组中根据次高子关键字分成若干小组。依从高到低的次序对所有的子关键字重复此过程,最后便得到一个有序序列。另一种称为直接基数排序(低子关键字优先)的方法,即由低到高的次序,依次使用各子关键字对待排数据进行排序。依任一子关键字排序过程中,都要求子关键字相同数据的原始次序不发生改变。基数交换排序法的缺点在于缺乏有效的分组方法,而直接基数排序法则可通过链表实现,因此后者使用更加广泛。由于需要针对各子关键字多次扫描待排数据,基数内排序技术只应用于内排序。二阶段外排序将待排序数据分成多个内存能够容纳的部分,分别对每一个部分进行内排序后存储于相应的临时文件中(排序阶段)。然后同时打开所有的临时文件,取出各文件最前部(即该文件中的最小数据)的数据并选取其最小者,即为临时文件中所有待排数据的最小者,可将此数据追加到输出文件的末尾,并从原临时文件中删除。重复该过程,直到所有临时文件中的数据都被删除为止(归并阶段)。三、专利技术目的对一般情况进行分析就会发现,待排数据看似杂乱无章,但在统计上却往往具有一定的概率分布特性。其原因在于待排数据往往产生于特定的数据生成机制。例如在掷正方体色子过程中,如果色子是均匀的,那么掷出每个点数的概率都应是1/6(均匀分布);如果色子不均匀,那么掷出某些特定点数的概率会偏大(或者偏小)。又如正常条件下使用的灯泡寿命符合几何分布;当统计范围足够广时,特定时刻特定地区的物种数量往往呈几何泊松分布;大规模统计得到的人口身高、寿命等大都呈正态分布,等等。另外,一般可以认为同一数据集中不同数据的产生并不存在必然的联系,或者说是互相独立的。概率上把“服从同一概率分布”和“数据产生彼此独立”这两个特性合称“独立同分布”(Independent & IdenticalDistribution,I.I.D.)。大多数情况下待排数据都可认为是独立同分布的。目前公知的排序技术都没有考虑待排序数据的概率分布特性。本专利技术针对“独立同分布”的数据集提出基于概率分布的排序技术。该技术通过一个定义于待排数据集的分布哈希函数,利用待排数据集的概率分布特性对数据的目标位置进行预测,将原排序问题分解成多个小规模的排序子问题,有效减少数据比较与交换次数,提高排序效率。四
技术实现思路
本专利技术最重大的特征是,在对批量数据进行排序的过程中,利用待排数据集的概率分布特性对待排数据的目标位置进行预测,据此将原排序问题分解成多个规模较小的子问题。而这种预测和分解则是通过下面定义的“分布哈希函数”实现的。设M和N都是正整数,且M≤N。对于数据集XN=(x0,x1,...,xN-1)及定义于XN上的函数hM,以下条件合称为分布哈希(Distributed Hash)条件。满足分布哈希条件的函数hM称为XN上的分布哈希函数 称λ=M/N≤1为“冲突度(Conflict)”,它刻划了对待排数据XN的目标位置进行预测所能够达到的精确程度。对于待排数据集XN=(x0,x1,...,xN-1),我们按照表2给出的步骤来对XN进行排序。其中步骤S3需要一种独立的排序方法。 说明具体实现中步骤S1、S2、S3不一定按表2中给出的次序进行。如果将步骤S1和S2和并,则相当于对hM(XN)={hM(x0),hM(x1),...,hM(xN-1)}进行排序,即依分布哈希函数的取值对待排数据进行排序。步骤S0、S1、S2将原排序问题分解成M个排序子问题。可以知道,冲突度λ=M/N是步骤S1所生成的M个子集的平均待排数据个数,也是这M个子问题的平均规模。由分布哈希条件DH3,这些子问题的规模相近。特别当λ较小时,所有的子问题都容易解决。步骤S0需要计算XN上的分布哈希函数。计算机所能够处理的都是离散数据;如果待排数据量往往很大,数据分布在取值区间上一般可以认为是稠密的,这使得我们完全可以把离散数据当成连续数据来考虑。为了方便后面仅讨论连续情形。若XN满足独立同分布条件,则xn的概率分布函数dn(x)=Pr(xn<x)与n无关,可直接记作d本文档来自技高网
...

【技术保护点】
在对批量数据进行排序的过程中,利用待排数据集的概率统计特性对待排数据的目标位置进行预测,并据此将排序问题分解。

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:杨磊黄辉
申请(专利权)人:杨磊
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1