用于在有序集合的并集中查找K阶统计量的方法和系统 【技术领域】
本发明总体上涉及多集合查找系统和方法,并且更特别地涉及一种用于跨越多个有序集合确定k阶统计量的系统和方法。
背景技术
许多应用要求查找多个值的中值,或者在多个集合的并集中与特定等级相关的值,因为排序在计算机应用中是一种常见的任务。例如,对于图像处理而言,查找中值使得可以在一个象素值发生错误的时候使图像变得平滑。另外,对于企业数据库而言,可能希望查找与存储在数据库中的数据相关的中值或者k阶统计量。存在用于在无序集合中查找k阶统计量的线性时间算法。例如,快速排序使用一种分而治之的方法来查找中值,首先将整个队列分为两个部分,然后选择适合的部分并且递归地将该适合地部分分为两个部分,依此类推。这里,选择集合中的一个随机元素并且将该集合分裂为比该被选择的元素大的元素和比该被选择的元素小的元素。最终,仅剩下一个值。
在无序域查找中,线性时间算法是速度最快的,因为不得不考虑每个元素。但是,当查找域包含充分有序的子集的时候,线性时间算法仍然考虑每个元素。在充分有序的子集中考虑每个元素的效率较低。
图1举例说明了一种被应用于两个有序子集从而确定期望值值位置的合并技术。这里,有序集合A100和有序集合B102被合并从而形成有序集合104,该有序集合104是有序集合A和有序集合B的并集。如果期望值是从小到大排列的第11个,那么合并得到的有序集合104中从小到大排列的第11个值是单元106中的值20。但是,该合并技术仍然要求在有序集合A100和B102的元素之间进行线性次数的比较。其优势在于结果是一个充分有序的集合,这可以使得随之发生的查找在恒定的时间内得以完成。但是,保存两个有序子集的合并后的集合会消耗存储器资源。
因此,需要解决现有技术的问题从而提供一种用于在多个有序集合的并集中高效率地确定k阶统计量而不合并该多个有序集合的方法和设备。
【发明内容】
广泛而言,通过提供一种用于保存单独的有序集合并且对这些集合的并集编索引从而确定期望值值位置的方法,本发明满足了上述的需求。应该理解,可以通过多种方式来实施本发明,包含将本发明实现为一种方法、一种系统或者一种设备。下面,对本发明的几种实施方案进行了描述。
在一种实施方案中,提供了一种用于确定对应于第一有序集合和第二有序集合的并集的索引值的元素的方法。该方法首先选择与该第一有序集合子索引相关的第一元素和与该第二有序集合子索引相关的第二元素。该第一有序集合子索引和第二有序集合子索引的和等于索引值。然后,确定该第一元素和第二元素中最低的元素。接下来,各个有序集和中最低的元素和在该最低元素之前的较低元素被丢弃。然后,使索引值减小各个有序集合的子索引。接下来,重复上述操作,直到索引值等于1。当索引值达到1的时候,将剩下的最小值选择为对应于索引值的元素。
在另一种实施方案中,提供了一种用于跨越多个有序集合中确定k阶统计量的方法。该方法首先识别与k阶统计量相关的索引值。然后,为多个有序集合中的每个有序集合定义子索引值。接下来,将最低值元素和位于该最低值元素前面的所有元素从对应于该最低值元素的有序集合中丢弃。然后,使索引值减小等于被丢弃的元素数目的数量。接下来,重复上述操作,直到索引值等于1。当索引值达到1的时候,从该多个有序集合的一个集合中选择剩下的最小值作为k阶统计量的位置。
在另一种实施方案中,提供了一种用于对多个有序集合进行查找从而确定位于多个有序集合的虚拟并集之内的期望位置。该方法首先定义要被定位的值。该要被定位的值与索引值相关。然后,为该多个有序集合中的每个有序集合选择子索引值。接下来,从与用于该多个有序集合中的每个有序集合的子索引值相关的元素中识别最小元素。然后,定义一种递归。接下来,重复该递归,直到索引值被减小到最小值。当索引值为最小值的时候,从多个有序集合中的每个集合中的元素选择该要被定位的值。
在另一种实施方案中,提供了一种用于确定k阶统计量的方法。该方法首先识别至少两个有序集合。然后,定义一种被配置用来丢弃该至少两个有序集合的元素的递归。接下来,通过该递归减小与k阶统计量相关的索引值从而获得基本情况。在获得该基本情况后,从该至少两个集合中选择出剩余元素的最小值。该最小值对应于k阶统计量。
在另一种实施方案中,提供了一种用于确定滑动窗口的中值的方法。该方法首先识别多个子集。然后,对该多个子集中的每个子集排序。接下来,通过该多个子集定义一个合并的子集和一个单独的子集。然后,丢弃该合并的子集的至少一个位于顶部的元素和至少一个位于底部的元素。这个数目被计算为该合并的子集和该单个的子集中的元素数量之间差值的一半,并且向下舍入。接下来,该合并的子集和该单个的子集的中值得以确定。
在另一种实施方案中,提供了一种具有用于确定k阶统计量的程序指令的计算机可读介质。该计算机可读介质包含用于识别至少两个有序集合的程序指令和用于定义一种用来丢弃该至少两个有序集合的元素的递归的程序指令。还包含用于通过该递归来减小与k阶统计量相关的索引值从而获得基本情况的程序指令。提供了用于在获得该基情况后,选择该至少两个有序集合中剩余元素的最小值的程序指令。该最小值代表k阶统计量。
在另一种实施方案中,提供了一种用于确定滑动窗口的中值的计算机程序产品。该计算机程序产品包含用于识别多个子集的程序指令和对该多个子集中的每个子集的元素排序的程序指令。提供了用于通过该多个子集定义一个合并的子集和一个单独的子集的程序指令。还包含用于基于该合并的子集和该单个的子集中的元素数量之间的差值丢弃该合并的子集的至少一个位于顶部的元素和至少一个位于底部的元素的程序指令,以及用于确定该合并的子集和该单个的子集的中值的程序指令。
在另一种实施方案中,提供了一种具有用于确定中值的电路的显示控制器。该显示控制器包含用于识别在由行和列组成的元素栅格上定义的窗口区域的电路。提供了用于对每列元素进行排序的电路。还包含用于合并除了第一有序列之外的所有的有序列,由此定义一个合并的列的电路。提供了用于确定由该第一有序列和该合并的列的虚拟并集所定义的元素的中值的电路。
对本发明的原理采用举例说明的方式,通过下面的详细描述并结合附图可以清楚地显示出本发明的其它方面和优势。
【附图说明】
通过下面的结合附图所作的详细描述,本发明将会很容易被理解,并且同样的标记数字代表同样的结构元件。
图1举例说明了一种应用于两个有序子集从而确定期望值的位置的合并技术。
图2A-2C是两个有序子集的示意图,该示意图用于举例说明根据本发明一种实施方案来定位k阶统计量的技术。
图3A-3E是提供根据本发明一种实施方案的示例性方案的示意图,该示例性方案用于确定两个有序集合的并集的k阶统计量。
图4是根据本发明一种实施方案的方法操作的流程图,该方法操作用于确定两个有序集合的并集的k阶统计量。
图5是根据本发明一种实施方案的流程图,该流程图可用于查找多于两个的有序集合的k阶统计量。
图6是举例说明根据本发明一种实施方案的滑动窗口的示意图,该滑动窗口用于其中要计算中值的图像处理。
图7是根据本发明一种实施方案的方法操作的流程图,该方法操作用于确定对应于第一有序集合和第二有序集合的并集的索引值的元素。
图8是根据本发明一种实施方案的方法操作的流程图,该方法操作用于确定滑动窗口的中值。
图9是根据本发明一种实施方案的方法操作的流程图,该方法操作用于对多个有序集合进行查找从而确定在该多个集合的并集之内的期望位置而不合并该多个有序集合。
图10是根据本发明一种实施方案的计算设备的元件的简化框图,该计算设备被配置用来定位k阶统计量。
【具体实施方式】
描述了一种用于一种设备和方法的发明,该方法和设备用于跨越多个有序集合确定从小到大的第k个元素。但是,对于本领域的技术人员来说很明显的是,本发明可以在不使用某些或全部具体细节中的情况下得以实现。在其它的情况下,为了不给本发明造成不必要的意义上的模糊,就没有对公知的方法操作进行详细的描述。图1已经在″值的+/-10%。
本发明的实施方案定义了一种用于在多个有序集合的并集中查找k阶统计量而不需要合并该多个有序集合的方法和设备。该方法利用有序集合的特性通过进行○(n2log k)次比较从而执行k阶统计量搜索,其中n是有序集合的数量,k是阶统计量,它也被称作索引值,并且○函数描述了该算法的上限执行时间的非常数部分。如这里所使用的,集合的k阶统计量是该集合从小到大或从大到小的第k个元素。在一种实施方案中,从每个有序集合中选择一个元素并且确定所选的这些元素当中的最小元素。对该最小元素和在相应的集合中位于该最小元素之前的元素将不予考虑,即丢弃它们。对元素的去除定义了一种递归,这种递归可以被用来确定k阶统计量而不需要合并该多个有序集合。因此,本发明占据与元素的总数成正比的小的存储器印记(footprint)。另外,不需要对该多个有序集合进行修改。在一种实施方案中,可以认为本方法创造了该多个有序集合的虚拟并集,即将该多个有序集合视作一个并集但是该多个有序集合在物理上仍然保持分开。因此,就避免了与合并两个或更多集合相关的额外处理。
本领域的技术人员可以理解,由于可以在不需要对集合进行实际上地合并的情况下查找k阶统计量,所以可以确定存在于这样一些数据库中的有序子集之间的k阶统计量:这些数据库并没有为合并数据而被配置用来互相通信,即其中两个或更多的表存在于不同系统上的不同数据库中。这里,在下面得到描述的本发明的实施方案使得可以在对数时间内完成对虚拟合并的表编索引,而不需要合并任何表。另一种适用于这里所描绘的实施方案的应用包含为了满足统计的需要而对两个或更多的表进行交叉引用。例如,为了绘制诸如Bell曲线之类的分布图,对包含相关信息(即工资、年龄、人口统计数据等等)的表进行交叉引用是有用的。这里,由于可以对按照一定策略被选择的百分数(k阶统计量)进行访问,所以可以得到在对数时间内绘制出的近似图形。
另外,对于一种每个域都要付费的数据库来说,本发明可以被用来在确定所需的域的范围之前使被访问的域的数量最小化。类似地,对于由于缺乏资源、网络限制等原因而导致在被交叉引用的两个或更多的表的主体之间交换数据变得很困难的这种情况,在这里所描述的本发明的实施方案可以使得在使用最少量的数据交换的情况下实现从远端表中检索域。如将在下面会被更详细地描述的那样,本发明还可以被用于小的易变的集合中,例如用于图像处理应用的滑动窗口中值过滤器。应该理解,上述应用仅起到示例性的作用而不对本发明进行限制,这是因为只要任意一种应用是希望用来确定两个或更多的有序集合之中特定值的位置,那么通常情况下在这里所描述的实施方案就可应用于该应用。
图2A-2C是两个有序子集的示意图,该示意图用于举例说明根据本发明一种实施方案来定位k阶统计量的技术。有序集合A110包含元素a1-am且有序集合B112包含b1-bn。应该理解,各个有序集合的元素a1-am和b1-bn是按照一种有序的方式被安排的。也就是说,元素从集合的顶部到集合的底部按照升序或降序进行排列。转到图2B,选择子索引并且确定对应于这些子索引的元素。这里,对于有序集合A110和B112来说,子索引分别为p和q。因此,对应于子索引p和q的元素分别为ap和bq。子索引p和q的和等于k阶统计量的值。按照数学的术语,对于这种实施方案来说是p+q=k。例如,p可以被定义为其中p是小于或等于k/2的整数,并且q可以被定义为其中q是大于或等于k/2的整数。因此,p定义了下限值而q定义了上限值。
将对应于p和q的元素(即ap和bp)的值进行比较,这使得可以不予考虑这两个元素中的较小的一个元素以及位于该较小的元素之前的所有元素。也就是说,如果ap<bp,那么即使元素b1、b2...bq-1都小于ap,也不会有足够多的元素小于ap从而使ap成为有序集合的并集从小到大的第k个元素。因此,所有小于ap的元素以及ap都位于有序集合A110和B112的并集的从小到大第k个元素之前,并且这些元素可以被去除。进一步,通过去除元素a1、a2...ap(或者如果ap>bq的话去除bl、b2...bq)可以确保该方法在剩余的元素中查找k-p(k-q)阶统计量。
图2C是在相应的元素已经被去除之后的有序集合的示意图。应该理解,去除对应于子索引的两个元素中的较小的一个元素和位于该较小的元素之前的所有元素定义了一种递归,该递归可以被用来确定k阶统计量。另外,通过选择p=k/2(下限值,即向下舍入)和q=k/2(上限值,即向上舍入),该递归在指数时间内运行完。在一种实施方案中,其中如果p>m,那么就假设ap大于bq。同样地,如果q>n,那就假设bq大于ap。如将参考图3A-3E得以描述的那样,如果m和n不相等,那么将向具有最少元素的有序集合填充元素从而使得每个有序集合中的元素的数量是相等的。在一种实施方案中,无穷大的值可能被包含进来作为填充元素从而满足上面所讨论的假设。通过该递归,k的值被减小直到k=1,这可以被称作基本情况,其中有序集合A110和有序集合B112的最小剩余元素中的较小的元素就是对应于有序集合A110和有序集合B112的并集的k阶统计量的元素。因此,两个有序集合的并集的k阶统计量可以得以确定而不用合并或联合这两个有序集合。
图3A-3E是提供根据本发明一种实施方案的示例性方案的示意图,该示例性方案用于确定两个有序集合的并集的k阶统计量。图3A的有序集合A114包含从集合的顶部到集合的底部按照升序排列的7个元素。有序集合B116包含从集合的顶部到集合的底部按照升序排列的8个元素。在一种实施方案中,可以通过向具有最少元素的有序集合填充无穷大的元素从而平衡每个有序集合的元素数量。例如,元素115被填充到有序集合A114的底部从而使得有序集合A的元素总数达到8,即与有序集合B的元素数量相等。
在图3B中,选择k阶统计量的值并且执行递归的第一次迭代。出于举例的目的,又被称作索引值的k被选择为11。因此,希望查找有序集合A和B的并集的从小到大第11个值。应该理解,将该索引值描述为11仅用于举例说明而不是用于限制。也就是说,在这里被描述的实施方案可以将该索引值描述为最小的元素、最大的元素、最小的元素和最大的元素之间任意大小的元素、一个百分比等等。继续进行图3B的例子,在选择完索引值之后就确定对应于该索引值的上限值和下限值。如在上面参考图2A-2C所描述的那样,子索引p和q在这里得以确定。在一种实施方案中,p被定义为k/2,其中p是小于或等于k/2的整数(下限值),并且q被定义为k/2,其中q是大于或等于k/2的整数(上限值)。相应地,该下限值p是5,并且该上限值q是6。一旦定义了子索引值,就对有序集合中对应于子索引的元素ap和bq的值进行比较。在图3B中,对有序集合A114的第5个元素ap和有序集合B116的第6个元素bq进行比较从而确定这两个元素中哪个元素更小。这里,有序集合A114的第5个元素ap的值是16,有序集合B116的第6个元素bq的值是20。因此,16<20(ap<bq),所以16和有序集合A114中所有位于该第5个元素之前的元素都被去除。
图3C描述了用于确定k阶统计量的过程的下一个迭代所得到的结果。这里,索引值所减小的值是与已经从其中去除了元素的有序集合相关的子索引。因此,索引值被减小5从而得到用于下一个迭代的k=6。如上所述,为减小的索引值6确定子索引p和q。对于这次迭代来说,k/2等于3,因此,p和q都等于3。在图3B中去除了前5个元素之后所得到的集合A114的第3个元素是一个无穷大的元素。有序集合B116的第3个元素是8。这里,∞>8(ap>bq),所以8和有序集合B116中的位于8之前的所有元素都被去除。
图3D描述了用于确定k阶统计量的过程的第3次迭代的结果。这里,索引值所减小的值是与已经从其中去除了元素的有序集合相关的子索引。因此,索引值被减小3从而得到用于下一个迭代的k=3。如上所述,为减小的索引值3确定子索引p和q。对于这次迭代来说,k/2提供了下限值p等于1和上限值q等于2。有序集合A114的第1个元素的值是24。在上一次迭代中去除了前3个元素之后,集合B116的第2个元素的值是17。这里,24>17(ap>bq),所以17和有序集合B116中的位于17之前的所有元素都被去除。
图3E描述了用于确定k阶统计量的过程的基本情况。这里,索引值所减小的值是与在上一次迭代或递归中已经从其中去除了元素的有序集合相关的子索引。因此,索引值被减小2从而得到k=1。当k=1时,对位于顶部的两个元素进行比较从而确定那个元素是最小的。有序集合A114的第1个元素的值是24。在上一次迭代中去除了前2个元素之后,集合B116的第1个元素的值是20。这里,24>20,所以,20是与k阶统计量相关的值。也就是说,两个有序集合的并集从小到大的第11个值是20,该最小值是在不用合并这两个有序集合的情况下得以确定的。
图4是根据本发明一种实施方案的方法操作的流程图,该方法操作用于确定两个有序集合的并集的k阶统计量。该方法首先进行判决操作120,其中确定索引值是否等于1。如果索引值等于1,那么该方法前进到操作134,其中两个有序集合的第一个元素中的最小元素就是k阶统计量。当然,如果有序集合中的一个有序集合并没有剩余的元素,即该集合是空集,那么具有剩余元素的有序集合的第一个元素被选择为k阶统计量。如果索引值不等于1,那么该方法进行到操作122,其中子索引被定义。在一种实施方案中,子索引定义下限值和上限值,其中该下限值和上限值是最接近于索引值除以2所得到值的整数。在另一种实施方案中,子索引被配置从而确保递归在指数时间内运行完。
然后,该方法转到判决操作124,其中确定对应于第一有序集合的子索引是否大于该第一有序集合中的元素的数量,即p值是否超出了该第一有序集合的范围。当然,该确定是在如参考图3A-E所讨论的那样向有序集合填充元素之前被做出的。如果子索引大于该第一有序集合中的元素数量,那么该方法前进到操作132。在操作132中,将该第二有序集合中位于第二有序集合子索引之前并包括该子索引的元素从该第二有序集合中去除。索引值被减小的值等于该第二有序集合的子索引值。然后,该方法返回到操作120并且按照上述的方式继续进行。如果该对应于第一有序集合的子索引不大于该第一有序集合中的元素数量,那么该方法前进到判决操作126。这里,确定对应于第二有序集合的子索引是否大于该第二有序集合中的元素数量,即q值是否超出了该第二有序集合的范围。如果该子索引大于该第二有序集合中的元素数量,那么该方法从操作126前进到操作130。在操作130中,将第一有序集合中位于该第一有序集合子索引之前并包括该子索引的元素从该第一有序集合中去除。索引值被减小的值也等于该第一有序集合的子索引值。然后,该方法返回到操作120并且按照上述的方式继续进行。
仍然参考图4,如果在判决操作126中对应于第二有序集合的子索引不大于在第二有序集合中的元素数量,那么该方法进行到判决操作128。在判决操作128中,将对应于第一有序集合的子索引的元素ap与对应于第二有序集合的子索引的元素bq进行比较从而确定是否是ap<bq。如果ap小于bq,那么该方法转到操作130并且按照上述的方式继续进行。如果ap不小于bq,那么该方法转到操作132并且按照上述的方式继续进行。所以,由判决操作128和操作130和132所定义的递归将索引值减小到基本情况,该基本情况使得可以通过保持独立的两个有序集合来确定k阶统计量。应该理解,参考图4和5所描述的方法的实现也是在指数时间(即log k)内运行完的。但是,本领域的技术人员可以理解,该方法还依赖于有序集合的数量n,该数量n为二次的。因此,执行该方法的算法的阶数为○(n2log k)。
对于本领域的技术人员来说很明显的是,图4的流程图可以被最优化从而进一步减少比较的次数。在一种实施方案中,判决操作124和126及其相关的比较都可以被省去。例如,向一个具有较少数量元素的有序集合填充值为无穷大的元素从而平衡每个有序集合的元素数量,这就可以使得去除操作124和126。另外,对p和q的值进行预先处理从而确保它们相对于各自的有序集合来说不会超出范围,这样就可以去除操作124和126。对p和q的值进行预先处理使得可以基于各自的集合的大小有目的性的去除一个有序集合或两个有序集合中的元素,由此算法可以在固定时间内运行完,并且在多数情况中在提供显著的速度提高的同时并不增加算法的复杂度。
图5是根据本发明一种实施方案流程图,该流程图可用于在多于两个的有序集合中查找k阶统计量。图5中用到的符号是定义如下:S1-Sn为有序集合,|Si|代表集合Si在当前迭代中的大小,Si,x代表集合Si在当前迭代中的第x个元素。该方法首先进行判决操作140,其中确定是否存在基本情况条件,例如索引值是否等于1。如果索引值等于1,那么该方法前进到操作148,其中通过有序集合的第一个元素中的每一来确定最小元素。在这里被考虑的有序集合至少具有一个元素,即不包含为空集的有序集合。如果在判决操作140中索引值不等于1,那么该方法进行到操作142,其中选择对应于每个有序集合的子索引。也就是说,为每个单独的有序集合选择一个子索引,例如,如果有3个有序集合,那么就会有3个子索引。子索引的和等于索引值加上集合的个数再减去2,然后再将得到的值除以集合的个数,按照数学术语可以将其表示为pi=(k+n-2)/n。
然后,图5的方法转到操作144,其中对与每个有序集合各自的子索引相关的元素进行比较从而确定最小的元素。在这里又一次,如果各自个有序集合的子索引超出了该集合的范围,那么就可以假设该各自的有序集合并不包含最小值。可替换地,为了平衡有序集合中元素的数量,可以如以上所述的那样向有序集合填充无穷大的值。然后该方法前进到操作146,其中对该最小元素和在相应的有序集合中位于该最小元素之前的元素都不予考虑,由此定义了一种递归。另外,通过从索引值中减去与其中的元素被去除的有序集合相关的子索引,即k=k-px,索引值被减小。应该理解,操作146与图4的操作124、126和128有关。然后该方法返回到操作140并且按照上面所描述的那样重复进行。
图6是举例说明根据本发明一种实施方案的滑动窗口的示意图,该滑动窗口用于其中要计算中值的图像处理。象素值栅格150包含一个3×3的滑动窗口151。滑动窗口151可以被继续向下分为单个列152和元素区域154。可以如将在下面参照图8描述的那样对该元素区域154进行合并和排序。众所周知,可以将3×3的滑动窗口中值过滤器用于图像处理领域。对于一个宽为m,高为n的值的栅格,例如在图6中举例说明的栅格,其中的每个值都与该值自身和与该值相邻的8个值的中值相乘(对于位于边界处的值,使用距离最近的可用的3×3窗口的中值)。因此,每个3×3窗口要求查找一个中值。通过连续地处理相邻值,可以保存滑动窗口的属性。也就是说,滑动窗口151向右运行一列从而定义区域156中的下一个3×3滑动窗口。应该理解,区域156的高度为3行,即定义了一个包含具有ak、bk和ck这三行的3×3栅格。出于举例说明的目的,为了分别识别区域152、154和156,区域156的底部边界线位于包含ck的行的下面。然后就对区域156的3×3滑动窗口计算另一个中值。当滑动窗口达到栅格的右端的时候,将该窗口返回到栅格的左端并且向下移一行。一直重复这一过程,直到滑动窗口到达了图像的左下角。
这里所描述的实施方案可以被用来提高速度,这种速度的提高是通过在实现滑动窗口3×3中值过滤器的时候减少比较的平均次数来实现的。这里,通过增加可以被重复利用的比较(即在多于一个迭代中被使用的比较)的数量从而实现了最大的速度提高。因此,这里所描述的实施方案使得可以被重复利用的比较数量增加,由此提高了性能。例如,假设滑动窗口正在从左向右移动,即首先查找用于b2的第一3×3滑动窗口中值,然后查找用于b3的3×3滑动窗口中值,等等。应该理解,用于边界值的中值并未在本发明的一种实施方案中得以确定。
仍然参考图6,首先计算用于bk(区域151)的中值,然后计算用于bk+1(区域156)的中值。一种示例性的技术首先包含对存储器中的滑动窗口的每个3值的列(区域151)进行排序。应该理解,这一步骤可以在查找3个中值的过程中被重复使用并且在3次比较中被执行,从而得到对于每列每中值来说平均要进行1次比较,或者对于每3列每中值来说平均要进行3次比较。接下来,最后两列被合并从而创造区域154的值的一个有序的6值阵列。也就是说,将具有第k个值和第k+1个值的列进行合并。这可以分5个步骤来完成,并且可以被重复用于查找下一个中值(如用于查找用于bk+1的中值),因此,对于每个中值来说所进行的比较的平均次数为2.5。然后,通过这里所描述的实施方案计算合并后的集合的有序值的中值和剩余列(如列k-1)的有序值的中值。也就是说,该合并后的集合和该剩余列是两个有序集合,其中第一有序集合具有3个元素,第二有序集合具有6个元素,并且需要确定从小到大第5个元素。使用参考图4、5和7所描述的技术,会需要进行3次比较,其中应用了最优化步骤。在该最优化步骤中,可以认识到只有合并后的阵列的中间4个元素为可能的解,从而使问题变成在具有3个元素和4个元素的两个阵列中查找第4个元素。
如果使用上面所描述的技术,那么对于每中值来说,最坏情况下所需要进行的比较的平均次数大约为8.5。但是,对于足够大的m(列数),即使考虑到一些列排序可能没有被重复使用3次(例如在左远端和右远端),并且有可能每行一次合并没有被重复使用,所进行的比较的平均次数也趋近于8.5。
如上面所提到的,可以将某些最优化应用于在这里所描述的用于查找k阶统计量的实施方案。可以实施一种示例性的最优化,其中k大于m但是小于n(k是索引值,m是第一有序集合的行数,n是第二有序集合的行数)。这里,A(第一有序集合)的所有元素都是可能的解。但是,B(第二有序集合)中的可能的解的数量是m+1,或者更准确地说,B中可能解的范围是bk-m,…,bk。也就是说,如果A的所有元素都小于k阶统计量,那么解就是bk-m。另一方面,如果A的所有元素都大于k阶统计量,那么解就是bk。根据A中的元素的值,B的中间的值也可能是解。因此,在这种情况下,可以应用一种通过一个步骤显著地降低k的最优化方法。如果B’={bk-m,…,bk},那么问题就等价于查找A和B’的k’=m+1阶统计量。该最优化是参考图6被提到的最优化,即其中k是5,m是3以及n是6。应该理解,如果k大于n但小于m,那么可以在A和B被交换的情况下应用相同的最优化。
如果k比m和n都大,那么就存在另一种示例性的最优化。查找k阶统计量可以被缩减到查找A和B的从大到小第m+n+1个元素。根据在第一个示例性最优化中所讨论的推理,在这里A和B的最后的m+n+1个元素才可能是解。因此,A的最前面的k-n-1个元素和B的最前面的k-m-1个元素都不是可能的解。如果我们定义A’={ak-n,…,am}以及B’={bk-m,…,bn},那么问题就等价于查找A’和B’的k’=m+n+2+k阶统计量。实际上,该优化步骤确保了该算法的阶变成n2log(min(k,m,n,m+n-k))。应该理解,对于一个大的k,该最优化可以实现在时间和存储器资源方面的显著提高。
图7是根据本发明一种实施方案的方法操作的流程图,该方法操作用于确定对应于第一有序集合和第二有序集合的并集的索引值的元素。该方法首先进行操作160,其中选择与第一有序集合子索引相关的第一元素和与第二有序集合子索引相关的第二元素。这里,该第一有序集合子索引和第二有序集合子索引对应于上面参考图3A-3E和图4描述的p和q。该第一元素和第二元素分别是该第一有序集合和第二有序集合的元素。然后该方法前进到操作162,其中确定该第一元素和第二元素中的最小的元素。这里,如上面所描述的那样,对该第一元素和第二元素进行比较从而确定该第一个元素和第二元素之间的关系。然后该方法进行到操作164,其中该最小元素和相应的有序集合中位于该最小元素之前的更小元素被丢弃。例如,如果确定该第一元素的值小于该第二元素的值,那么该第一元素和第一集合中相应的在前元素都被丢弃,即不再将它们考虑为索引值所处的可能位置。
然后图7的方法转到操作166,其中索引值被减小的量为相应的有序集合的子索引。如上面参考图3C-3E所讨论的那样,将该子索引值从索引值当中减去。应该理解,在这里子索引值还指示从相应的有序集合中被丢弃的元素的数量。在一种实施方案中,减小索引值和导致索引值减小的操作定义了一种递归。然后该方法前进到判决操作168,其中确定索引值是否等于1。如果索引值不等于1,那么该方法转到操作160并且按照上述的方式继续进行。如果索引值等于1,那么该方法进行到操作169。在操作169中,最小剩余值被选择为索引值。这里,对第一有序集合和第二有序集合的第一个元素进行比较从而确定最小剩余值。
图8是根据本发明一种实施方案的方法操作的流程图,该方法操作用于确定滑动窗口的中值。该方法首先进行操作170,其中定义了多个子集。这里,该多个子集可以是滑动窗口的列,例如图6的滑动窗口的每个列。然后该方法前进到操作172,其中对该多个子集中的每个子集进行排序。也就是说,对该多个子集中的每个子集的元素进行安排,以便每个子集都是一个有序子集。然后该方法进行到操作174,其中通过该多个子集定义合并的子集和单个的子集。例如,如参考图6所讨论的那样,可以合并3×3中值过滤器的两列从而定义合并的子集。
然后图8的方法转到操作176,其中该合并的子集的至少一个位于顶部的元素和至少一个位于底部的元素被丢弃。对于3×3中值过滤器,中值(k)是5并且该合并的子集具有6(m)个元素,而该单个子集包含3(n)个元素。如参考下面的最优化所讨论的那样,该合并的子集的第一个元素和最后一个元素都不是可能的解。因此,在这种情况下,位于顶部和位于底部的元素的数量(即元素对)是1。因此,可以去除该第一个和最后一个元素。通常,该数量(即元素对)等于合并的子集和单个的子集中的元素数量之间的差的一半,并向下舍入。应该理解,可以丢弃多于一对的位于顶部和位于底部元素。然后该方法前进到操作178,其中如在这里所讨论的那样确定合并的集合和单个的集合的中值。也就是说,中值是k阶统计量并且合并的子集和单个的子集都是有序子集。因此,定义了一种递归,其中该递归将索引值减小到基本情况。在该基本情况中,从合并的子集和单个的子集的剩余元素中选择出来的最小剩余元素代表3×3滑动窗口的中值。
图9是根据本发明一种实施方案的方法操作的流程图,该方法操作用于对多个有序集合进行查找从而确定在该多个集合的并集之内的期望位置而不合并该多个集合。该方法首先进行操作180,其中定义一个要被定位的值,例如索引值。该索引值可以被称作k阶统计量。另外,该索引值可以是多个有序集合的并集从小到大的第k个值、从大到小第k个值、中值、百分比数值等等。然后该方法前进到操作182,其中选择多个有序集合中的每个有序集合的子索引值。例如,如果有两个有序集合,那么可以按照参考图4所描述的那样计算子索引值。可替换地,如果有多于两个的有序集合,那么可以按照参考图5所描述的那样计算子索引值。如上面所描述的那样,可以计算子索引以便该方法在指数时间内运行完。
图9的方法然后进行到操作184,其中,根据本发明的一种实施方案,确定从与为多个有序集合中的每个有序集合所选择的子索引相关的元素中选出的最小的元素。这里,对与每个有序集合的子索引相关的元素中的每个元素进行比较从而指定最小元素,即该最小元素是被比较的元素中具有最低值的元素。然后该方法转到操作186,其中定义一种递归。在一种实施方案中,该递归可以被定义为去除有序集合中的适当的元素以及相应地将索引值减小与该被去除的适当元素相关的值。这种递归可以被重复从而持续地将索引值减小到基本情况,该基本情况发生在索引值等于1的时候。例如,可以如参考图7所讨论的那样定义该递归。
图10根据本发明一种实施方案的计算设备的元件的简化后的框图,该计算设备被配置用来定位k阶统计量。计算设备100包含与液晶显示器(LCD)控制器104通信的中央处理单元(CPU)102。LCD控制器104与存储器106和显示屏108进行通信。LCD控制器104包含用于将与显示屏108相关的二维象素地址翻译为存储器106中线性地址的电路,而这将在下面被详细讨论。计算设备100可以是任意的手持设备或者通常可以是具有受LCD控制器控制的显示屏的任意便携式电子设备。
在一种实施方案中,LCD控制器包含被配置用来实施这里所描述的方法的电路。也就是说,图7-9的功能可以通过被配置用执行这些功能的电路得以实现。更特别地,LCD控制器可以包含用于参考图8确定3×3滑动窗口的中值的电路。当然,执行对中值进行定位的代码(例如与图像处理应用相关的)可以被硬编码到半导体芯片上。本领域的技术人员可以理解,该半导体芯片可以包含被配置用来提供如上面所述的功能的逻辑门。例如,可以使用硬件描述语音(HDL)来合成用于提供如上面所描述的必要功能的固件和逻辑门布局。应该理解,在这里所显示的LCD显示控制器仅起到举例说明的作用,而不起到限制的作用。也就是说,任意显示控制器可以包含被配置用来执行上述功能的电路。
总而言之,上述发明考虑到了一种用于确定与两个或多个有序集合的并集相关的值的位置的方法和系统。该值的位置得以确定而不用合并有序集合。因此,当有序集合位于不兼容的数据库中的时候,可以确定位置,即k阶统计量。而且,该方法和系统使得可以不需要合并有序集合,特别是当合并后的有序集合在此后不会被用作它用的时候,情况更是如此。在这里所描述的方法定义了一种在指数时间内运行完成的递归。该递归系统地将索引值减小到基本情况。在该基本情况中,从有序集合的最小剩余元素的每个元素中选出的最小值就是所要查找的值,即k阶统计量。在一种特殊的应用中,在这里所描述的方法和系统被用来查找滑动窗口的中值,例如用于图像处理的滑动窗口。如上所述,显示控制器可以包含被配置用来执行定位k阶统计量功能的电路。
考虑到上述实施方案,应该理解,本发明可以使用各种由计算机实施的操作,这些操作涉及存储在计算机系统中的数据。这些操作是那些要求对物理量进行物理操纵的操作。通常,尽管并不必要,但是这些量采用电信号或磁信号的形式。,并且这些电信号或磁信号可以被存储、被转移、被合并、被比较以及被执行其它操作。而且,所执行的操作经常被称作以下这些术语,例如生成、识别、确定或者比较。
也可以使用计算机可读取介质上的计算机可读取代码来实现本发明。该计算机可读取介质是可以存储此后可以被计算机系统读取的数据的任意数据存储设备。该计算机可读取介质还包含一种电磁载波,并且计算机代码在该电磁载波中得以实现。计算机可读取介质的例子包含硬盘驱动器、连接到网络的存储装置(NAS)、只读存储器、随机存取存储器、CD-RCM、CD-R、CD-RW、磁带,以及其它的光学和非光学的数据存储设备。该计算机可读取介质还可以被分布在通过网络连接起来的计算机系统上,以便按照一种分布式的方式存储和执行计算机可读取代码。
尽管为了使本发明更清楚地被理解,已经对本发明进行了详细的描述,但是很明显,在所附的权利要求的范围之内可以做出某些改变和修改。所以,本实施方案被认为只起到举例说明的作用,而不起到限制的作用,并且本发明并不受这里给出的详细描述的限制,而是可以在所附权利要求的范围或等价物之内修改的。