CN101911058A - 代表性数据串的产生 - Google Patents
代表性数据串的产生 Download PDFInfo
- Publication number
- CN101911058A CN101911058A CN2008801253113A CN200880125311A CN101911058A CN 101911058 A CN101911058 A CN 101911058A CN 2008801253113 A CN2008801253113 A CN 2008801253113A CN 200880125311 A CN200880125311 A CN 200880125311A CN 101911058 A CN101911058 A CN 101911058A
- Authority
- CN
- China
- Prior art keywords
- string
- segmentation
- output data
- data value
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/26—Techniques for post-processing, e.g. correcting the recognition result
- G06V30/262—Techniques for post-processing, e.g. correcting the recognition result using context analysis, e.g. lexical, syntactic or semantic context
- G06V30/268—Lexical context
Landscapes
- Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
除其它外,提供用于生成代表性数据串的系统、方法和技术。在一种代表性实现中:(a)在数据值的输入串中标识起始数据位置;(b)基于参照输入串中的起始数据位置确定的数据位置的数据值确定输出数据值的子序列;(c)基于匹配标准,对输入串中具有与输出数据值的子序列匹配的分段的那些输入串作出标识;(d)在若干次迭代中重复步骤(a)-(c);以及(e)跨迭代地将输出数据值的子序列合并以提供输出数据串,其中当前迭代的步骤(b)中的确定是基于前一次迭代的步骤(c)中的标识的。
Description
发明领域
本发明涉及从数个输入数据串产生代表性数据串的系统、方法和技术,并可用于,例如,输入数据串的协同压缩。
背景
对于基于已在通信信道上接收的一个或多个位串而尝试重构原始的源位串,存在多种不同的算法。这些算法中各个不同的算法作出有关通信信道特性的不同假设。然而,每种算法一般都假设该通信信道造成原始位串的某些随机逐位独立修改。
许多如此的传统算法对可由通信信道作出的多种修改施加限定,例如,将可能的修改限定为位删除或限定信道能作出的最大修改数。遗憾的是,这些限定并非永远都是实际的。
发明概述
本发明提供经常能适应原始数据串的较多种类潜在修改的方法,例如,包括数据值改变、数据值插入和/或数据值删除。
本发明的一个实施例针对生成代表性数据串,其中:(a)在数据值的输入串中标识起始数据位置;(b)基于参照输入串中的起始数据位置确定的数据位置处的数据值确定输出数据值的子序列;(c)基于匹配条件,对哪些输入串具有与输出数据值的子序列匹配的分段作出标识;(d)在若干次迭代中重复步骤(a)-(c);以及(e)跨迭代地将输出数据值的子序列合并以提供输出数据串,其中当前迭代的步骤(b)的确定基于前一次迭代中步骤(c)的标识。
另一实施例针对生成代表性数据串,其中:(a)将指针设置在数个数据值输入串的每个串中的一个数据位置处;(b)选择输入串的子集;(c)基于由输入串的子集中的指针指向的数据值生成输出数据值;(d)将输出数据值附于输出数据串;(e)使输入串的子集中的指针递增;(f)将步骤(c)-(e)重复若干次以产生输出数据串的新分段;以及(g)将步骤(a)-(f)重复数次,其中基于输入串各部分与紧接的前一次迭代中产生的输出数据串的新分段匹配的能力,在步骤(a)的当前迭代中设置指针。
前面的总括仅旨在提供本发明某些方面的简单说明。通过参照权利要求书以及下面结合附图对较佳实施例的详细说明来获得对本发明的更完整的理解。
附图简述
在下面的公开中,参照附图描述本发明。然而,应当理解附图仅描述本发明的某些代表性和/或示例性实施例和特征,并且不旨在以任何方式限制本发明的范围。下面是对每张附图的简述。
图1是示出从单个源数据串得到多个数据串的理念的方框图。
图2是示出基于源数据串评估压缩和解压数据串的系统的方框图。
图3是示出根据本发明第一实施例生成代表性数据串的过程的流程图。
图4示出输出和输入数据串数据位置以及用于确定输出数据串的第一分段的典型最初指针指向。
图5示出输出和输入数据串数据位置,以及确定输出数据串的后继分段的示例性最初指针指向。
图6是示出根据本发明第二实施例的生成代表性数据串的过程的流程图。
图7示出根据本发明第二实施例的生成代表性数据串的算法。
图8是示出根据本发明第三实施例的生成代表性数据串的过程的流程图。
较佳实施例的说明
本发明尤其涉及从数个输入数据串产生代表性数据串的技术。在许多情形下,如图1所示,可认为输入数据串11-14已产生作为一些底层的源数据串15的修改或衍生物。也就是说,从源数据串15开始,可通过对源数据串15作出合适的修改而构造各数据串11-14中的每一个,对于各种输入数据串11-14,这种修改通常在质和量上都是不同的。
实际上,假设数据串11-14彼此充分相似的话,即使在尚未从共同源数据串15获得输入数据串11-14的一些或全部的情形下,这种概念也是可行的。例如,这种相似性可能是因为以彼此相同的方式生成数据串11-14的缘故。在任何情形下,较佳地可通过修改源数据串15中的数据值、从源数据串15删除数据值,并在各个位置将新数据值插入源数据串15从原始源数据串15生成各数据串11-14(或以相同方式至少回溯地从原始源数据串15的评估生成)。对于二进制值来说,数据值/位置删除对应于丢失位、数据值/位置插入对应于插入位、并且数据值/位置修改对应于位翻转。在本发明的某些实施例中,将这些操作视为相对于原始源数据串15中的每个数据位置随机和独立地发生。
每个原始源数据串15和各输入数据串11-14通常包括在离散数据位置处的的一系列数据值。在本发明的较佳实施例中,每个数据位置保持一个二进制数据值,即一个位。然而,在替代性实施例中,可在潜在值的任何要求集之间定义数据值,而在某些实施例中,同一数据串中的不同数据位置甚至可以具有不同组的潜在值。
通常,原始源数据串15是不可得的。也就是说,能够直接观察到的全部内容都是修改后的形式,例如数据串11-14。在这些情形下,经常要求尝试尽可能地重构原始源数据串15。例如,一旦已评估了原始数据串15,则可将该评估用作压缩各数据串11-14的基础。
另外,原始源数据串15的知识对其本身是有用的。例如,在观察数据串11-14是特殊物种样本的DNA序列的情形下,根据本发明的原始源数据串15的估计经常可使人知道哪种标准DNA序列是针对该物种的。
即使在原始源数据串15(或其一些评估)可得的情形下,本发明的技术经常较为有利地用于生成代表性数据串。也就是说,即使在这种情势下,根据本发明生成的代表性数据串往往仍然能提供额外信息和/或有益于例如上述方式的压缩。这种情况可能是,例如,生成可观察数据串11-14的过程不是零均值(在至少一个方面)而是具有某种偏移量。在这类情形下,可使用本发明的技术生成代表性数据串,并随后将其与原始源数据串15比较,以研究得出可观察数据串11-14的过程的特性(例如包括任何偏移量的量化)。一般在这些情形下,由于原始源数据串15没有偏移量,当将根据本发明生成的代表性数据串用作差分压缩的基础时,也将提供更好的压缩结果。
下面描述的例子一般采用数据串11-14的输入集。然而要注意,这种引用仅为了便于说明。可使用任何数量的输入数据串。
图2示出本发明可工作的一种背景的示例。这里,目标是压缩一组输入串y1,y2,...,ym21。例如,每个输入串21可以是由其位值、字节值或其它标准数据单元表征的不同文件。实际上,应当注意,本文中对“数据串”的任意类属引用一般包括表征数据文件或文档的数据串(或用该数据串的引用来代替)。然而,本文中使用的术语“数据串”和相似术语范围更宽,其涵盖任何数据串,不管是否密封在通常被认为是“文件”还是“文档”的单元中,除非另有说明。
如上所述,可能从同一源串(例如文件)得到各串21(例如文件),例如,如果通过有噪声通信信道发送源串、如果源串由若干不同个人编辑以产生相应不同的串(例如文件)、或者如果相似地生成各串21而不一定取自同一源串,例如在每个串代表从测量或记录同一物理现象(例如图像、音频信号、测震数据或天气数据)的不同(但相似)的传感器得到的读数序列和/或根据相同或相似约束条件生成各串21,就会如此。
根据本发明,在任何情况下将输入串21输入到代表性数据串发生器22,发生器22生成代表性数据串然后,将输入串21和输出代表性数据串25两者输入到源知晓的压缩器27,压缩器27较佳地使用实现该目的的任何可用技术(例如相对另一数据值串差分地压缩一个数据值串的任意传统技术,较佳为无损压缩),相对于代表性数据串25分别压缩每个输入串21(以及未示出的任何附加串,其较佳地被标识为与输入串21以相同方式生成)。。例如,就可将如此压缩的串21存储在计算机可读介质和/或在通信信道上发送。之后,当要求检索任何特定串时,将其压缩版本连同代表性数据串25一起输入到源知晓的解压器30,解压器30随后执行相应解压。这种解压较佳为模块27中使用的压缩技术的简单的逆操作。
有关压缩和解压的额外说明记载于2007年10月31日提交的共同转让的S/N11/930,982美国专利申请中,该申请就象完全阐述那样援引包含于此。尽管’982申请论及使用不同于之前给出的技术来生成源文件估计,然而本文讨论的压缩和解压方法也可应用于根据本发明生成的代表性数据串,例如,顾及插入和删除的修改。替代地,也可代替地使用顾及插入和删除的任何多种其它差分压缩技术。图3是示出根据本发明的第一实施例生成代表性数据串的过程40的流程图。该过程40假设存在数个输入数据串(例如数据串11-14)。较佳地,以全自动方式进行过程40的步骤以使通过执行来自计算机可读介质(该介质可包括在多种计算机可读介质间划分的这些过程步骤)的计算机可执行过程步骤或以本文所述任意其它方式,可以实现整个过程40。
起先,注意,本实施例典型地尝试生成一系列连续分段中的代表性输出数据串(有时称其为数据块)。这些分段较佳地具有基本同一长度(例如,不同于已选作特殊应用的、可能比固定长度更短的最末分段)。然而在替代性实施例中(例如,以响应改变插入、删除和/或修改几率的适应性方式)使用不同长度。如下文中更详细描述的,如图3所示,较佳地通过对过程40中的某些步骤执行相应迭代而生成这些分段。
首先在步骤42中,使一数据位置指向数据值的某些输入串。在较佳实施例中,对特定输入串而言,该数据位置是已确定对应于针对输出数据串生成的当前数据分段起始的数据位置。要注意,可在步骤42对每个可得输入数据串或只对其中的一些指定指针。
图4示出过程40的第一次迭代时的典型指针配置。当执行步骤42的第一次迭代时,经常处于这样的情况,即,对于与要生成的输出数据串80有关的输入数据串11-14了解甚少。同时,对输出数据串80要生成的数据值的当前分段82的第一位置81较佳为输出数据串80中的真正(very)第一数据位置。因此在这种情势下,分别简单地指向所属输入数据串11-14中的真正第一数据位置83-86(例如真正第一位)是较佳的。
在步骤42的下一次迭代中,在已确定一部分输出数据串80后,一般可对每个输入数据串中的哪个数据位置对应于当前分段起始位置作出更好的判断。因此在这些情势下,经常处于这样的情况,即,经常使不同数据位置指向输入中不同的数据串。将结合图5在下文中更为详细地说明这种情形。
在步骤43中,选择输入数据串的子集。该子集较佳地仅包括那样的输入数据串,对于这些输入数据串来说,确定在步骤42中指定的指针可靠地对应于输出数据串的当前分段的第一数据位置。尽管可使用多种不同标准来确定如此的可靠性,然而较佳的标准着眼于对输出数据串80生成的紧接着的前一分段是否识别出匹配。在步骤43的第一次迭代中,尚未生成如此的前一分段,因此在该子集中较佳地包含全部输入数据串。对于第二和后继分段,较佳标准要求输入串中紧接着的前一分段匹配于针对输出串生成的相应分段或可在输入串中找到匹配分段(例如使用定义的搜索窗或其它搜索标准)。下面将结合图6和图7中给出的实施例描述一种具体的可靠性标准。
同样,在本发明不同实施例中,对于判断输入串中的分段是否“匹配于”输出串中对应分段的标准,可予以不同的定义。在一个实施例中,相对于当前分段起始位置(在步骤242中确定)的输入串中的每个数据位置用来确定离输出串的起始第二位置具有相同偏移量的数据位置的值,而依照距离测量来定义“匹配”标准。更佳地,距离测量是汉明距离,即两个串彼此不同时的位位置(或其它数据位置)的数目,而仅基于两分段之间的汉明距离是小于还是等于规定的最大阈值(例如在全部输入分段和全部迭代中固定的恒定阈值)的判断来宣告匹配。然而,也可使用任何其它替代的距离测量和/或任何其它标准。
在步骤45中,基于步骤43中选择的子集中的输入串的指针当前指向的数据位置中的值来生成输出数据值。对数据位置包含二进制值的实施例来说,输出数据值较佳为这些数据值的逐位多数部分(bitwise majority)。在替代性实施例中,该值是平均值、中值、模、加权平均(例如在已将可靠性得分分配给所选子集中的各输入串并且权重基于这些得分的实施例中)或这类数据值的任意其它函数。
在步骤46中,用步骤45中生成的输出数据值来补充输出串。较佳地,该步骤包括简单地将新数据值附加于已有的输出串80。
在步骤48中,递增所选子集中各输入串的指针。如上所述,在较佳实施例中,对于任何给定分段,输入串中的每个数据位置对应于输出串中的单个数据位置。因此,每个指针较佳地简单递增至真正下一数据位置(例如二进制数据值的下一位位置)。例如,再次参见图4,假设过程40仍然是第一遍,则在步骤48中,输入串11-14的指针分别从数据位置83-86递增至数据位置91-94;这里,指定下一输出数据值96的计算的全部数据值。
在步骤49中,作出关于是否已生成输出串80中当前分段的最末输出数据值的判断。如果不是,则过程返回到步骤45以生成下一值。如果是,则过程进至步骤51。
在步骤51中,作出关于是否已处理输出串80的最末规则分段的判断。为了作出这种判断,一个实施例将具有至少与下一规则分段长度一样大的剩余长度的输入串部分作为标准(如上所述,在所有规则分段中都是固定的)。更佳地,通过要求输入串的指定部分包含在步骤43中所选子集中(对于当前迭代或在下一次迭代中要选择的)或通过使用长度标准作为纳入该子集中的标准之一而间接引入长度标准。
如果确定已处理了最末规则分段,则处理进至步骤52。如果不是,则处理返回至步骤42,在步骤42中调整指针指向,并随后处理下一规则分段。
对于这些后继指针指向,在第一次迭代结束后,已使用每个输入串中的相应分段生成了输出串值的整个分段。但因为存在数据值插入和/或删除的可能性,所以一般可在最后执行步骤48期间在选择的数据位置处简单地保持全部输入串的指针。然而,本发明在较佳实施例中,通过重新评估输入串与输出串80(或输出串80已生成的至少一部分)的对齐,在定义分段的结尾处实现这种插入和/或删除。
例如,图5示出根据本发明某些实施例的某些可能性。在图5中,已分别使用输入串11-14的分段101-104为输出串80生成分段100。要注意,在图5中表示出各串80和11-14分别与其相应分段100-104对齐。然而,这些分段在第二次迭代后一般不出现在其各自串中的同一绝对位置处(由于插入和删除的影响)。
如果刚生成的输出串的分段与输入串的相应分段匹配(例如使用上述任何匹配标准),则较佳地将该输入串的指针简单保持在最后执行步骤48期间所选定的数据位置处。因此,假设分段101匹配于分段100,因此串11的指针指向分段101结尾之后的真正下一数据位置111。
另一方面,如果刚生成的输出串的分段不匹配于输入串的相应分段,则假设在输入串的分段中发生至少一个插入或删除;因此,较佳地执行搜索以寻找与输出串80的新生成分段匹配的分段(除非这种搜索不太可能发现任何这类匹配,例如因为怀疑在输入串的当前分段中发生插入或删除)。如果找到这类匹配,则指针较佳地指向紧接在匹配分段之后的下一数据位置。
再次参见图5,发现输入串12的分段102(其用于生成输出串80中的分段100)不具有匹配的分段100。因此,较佳地通过使分段102向左和向右移动(在特定搜索窗内)来进行搜索以确定是否能发现匹配。在本情况中,将分段102向右移动一个位置导致匹配(这表示在当前分段102前的某些点处总计有一次数据位置插入),因此将输入串12的指针设定为指向数据位置112。
同样,发现输入串12的分段103(同样用于生成输出串80中的分段100)不具有匹配的分段100。然而,将分段103向左移动两个位置导致匹配(这表示在当前分段103前的某些点处总计有两次数据位置删除),因此将输入串13的指针设定为指向数据位置113。
再进一步,如果刚生成的输出串的分段不匹配于输入串的相应分段并且搜索不导致匹配(或因认为不太可能得出匹配而没有执行搜索),例如因为怀疑在输入串的当前分段中发生插入或删除,则将针对该输入串的指针较佳地简单保持在最后执行步骤48期间选定的数据位置处。因此,再次参见图5,发现输入串14的分段104不具有输出串80的匹配分段100并且通过移动指定搜索窗内的分段104没有发现匹配。因此,串14的指针指示分段104结尾之后的真正下一数据位置114。
回到图3,在步骤52中(在输出数据串80的最末规则分段生成后执行的步骤),生成输出串80的最末分段。首先,例如,较佳地使用输入串之间最常见的剩余长度来评估最末分段的长度。然后,较佳地仅使用具有标识长度的那些输入串来确定输出串80的最末分段的值,例如,以用来为输出串80的规则分段确定输出值的相同方式实现。再一次假设为二进制值,较佳地确定最末分段的输出值为这些输入串中的相应数据位置的逐位多数部分。
最后,在步骤54中,输出输出串80、存储(例如,在计算机可读介质上)和/或执行任意附加处理(例如,使用输出串80作为差分压缩/解压的基础串25,如图2所示)。如上所述,该附加处理可包括,例如,相对于输出串80差分地压缩每个输入串。
图6是根据本发明第二实施例的用于生成代表性数据串的过程140的流程图。如同前述过程40那样,较佳地以全自动方式执行过程140的步骤,以使通过执行来自计算机可读介质的计算机可执行过程步骤或以本文所述任意其它方式来实现整个过程140。
图6的下面讨论还引用图7所示的算法170。籍此,算法170是一般过程140的一种具体实现。在算法170中,输入串j(j∈{1,2,...,m})中的全部数据位置包含二进制值。
首先参见图6,在步骤141中初始化某些变量。较佳地,这些变量包括分段计数i、指向输入串j中数据位置的指针P(j)以及所选子集M0。如前面的实施例那样,将指针P(j)较佳地初始化至每个相应输入串j中的第一位置,而用于真正第一次迭代(即生成输出串80的第一分段的数据值)的所选子集M0较佳地包括全部可得的输入串。算法170的步骤1-3(由附图标记171指定)执行这些初始化。
在步骤142中,使用子集Mi-1中的每个输入串中的数据值的相应分段确定当前分段的输出数据值。同样,数据值是二进制的较佳技术使用子集Mi-1中的相应数据位置间的逐位多数部分,如算法170的步骤4(a)(由附图标记172表示)所示。然而,可替代地使用来自子集Mi-1中的输入串的相应数据值的其它组合,尤其是这些值是非二进制的场合。
接着,在步骤143中,清除当前迭代Mi的输入串的选定子集(即,置为空集)。例如,参见算法170的步骤4(b)(由附图标记173表示)。
在步骤145中,如果满足规定包含标准,则将输入串追加至子集Mi。在由算法170表征的特定实施例中,这种包含标准包括:(1)用于生成输出串80的新生成分段(即在步骤142的最近一次执行中)的输入串中的分段匹配于输出串80的新生成分段,或可根据规定搜索标准搜索另一匹配分段,以及(2)输入串的剩余长度至少象输出串80所要生成的下一分段一样大。同样,“匹配”标准较佳地使用最大距离阈值,并且对于二进制值,更佳地使用最大汉明距离阈值δ(在这种情形下匹配被称为δ-半匹配)。在算法170中,通过条件指令175和180执行步骤145。
在步骤146中,设置指针P(j)用来确定输出串80的下一分段。在较佳实施例中,该步骤146包括判断匹配分段(例如δ-半匹配)是否存在于特定搜索窗内,如果是,则将指针设置在紧随匹配分段结尾的数据位置处,如果没有发现匹配,则仅使指针前进当前分段的长度(在本例中为固定长度ι)。
本实施例中前述规则的效果是在子集Mi-1中的输入串和不属于子集Mi-1的输入串之间作出区别。如果在子集Mi-1中包含特定输入串,则要么当前分段匹配于输出串80的新生成分段,要么不匹配。如果当前分段匹配,则上述规则命令将指针设置在匹配分段的结尾部,该匹配分段在本例中为固定长度ι,即令指针前进ι个数据位置。如果当前分段不匹配,则假设不匹配意味着向或从输入串的当前分段插入或删除一个或多个数据位置,这意味着在指定的搜索窗内可能没有发现匹配,因此上述规则再一次命令指针前进ι个数据位置。因此两种情势均由算法170中的步骤176处理。要注意,基于同样的理由,如果当前分段不匹配,则简单地从Mi排除输入串(即,在算法170的行175中不将其追加至Mi)而不进行搜索。
另一方面,如果所属输入串不在子集Mi-1中,则对当前指针位置四周的搜索窗内的不同偏移量执行搜索以尝试标识与输出串80的新生成分段匹配的分段。在本例中,搜索窗是对称的,定义为向左具有最大位移Δι且向右具有最大位移Δι。然而,在其它实施例中,搜索窗是非对称的。在算法170中,在行178处执行搜索。然后,如果发现匹配,则将指针设置在紧随行179中匹配之后的位置上,并将输入串添加至行180中选定子集Mi,假如满足长度标准的话。否则,如果在搜索中没有发现匹配,则相应指针仅仅在行182中简单地前进ι个数据位置。
回到图6,在步骤148中作出是否已对输出串80生成最末规则分段的判断。在本例中,在算法170中作出该判断的标准185是至少四分之三的输入串必须位于子集Mi-1内;或者,假设输出串80的剩余分段的长度小于规则分段的要求长度(例如在本例中为ι)。然而要注意,在本发明其它实施例中可代替地使用任何其它部分或任何其它标准。在任何情形下,如果看起来能生成另一规则分段,则处理回到步骤142以生成该分段(例如,以上述方式)。否则,处理进至步骤149。
在步骤149中,生成输出串80的最末分段的数据值。较佳地,该步骤首先选择所有输入串中最常发生的剩余长度作为最末分段的长度ι’。然后,仅从取自剩余长度等于ι’的那些输入串的相应数据位置确定各数据值。更佳地,对于使用二进制值的本例而言,产生输出数据位置作为相应输入串数据位置值的逐位多数部分。步骤5-7(由附图标记187表示)在算法170中实现该步骤149。一旦步骤149结束,较佳地输出所生成的整个输出串80、存储(例如在计算机可读介质上)和/或执行任何附加处理(例如通过将输出串80作为基础串25以供如图2所示的差分压缩/解压)。
图8是根据本发明第三实施例的用于生成代表性数据串的过程210的流程图。较佳地以全自动方式执行过程210的步骤,以使通过执行来自计算机可读介质的计算机可执行过程步骤或以本文所述任意其它方式来实现整个过程210。
首先在步骤211中,在输入数据值串中标识起始数据位置。可在该步骤211中用前面结合步骤42讨论的、标识该起始数据位置的任意技术来标识是否为起始数据位置。接着在步骤212中,使用步骤211中标识的起始数据位置确定输出数据值的子序列。如同前述实施例,在某些实施例中,在确定当前子序列时不对一些输入串进行加权。较佳地,排除的输入串(如果有的话)是那样的一些输入串,即,依照与所要生成的数据值的输出子序列的起始数据位置对齐,确定这些输入串的起始数据位置为不具有足够的可靠性。如同上述实施例,较佳地基于给定输入串中的分段是否能与输出串产生的数据值的最末子序列匹配、基于局部搜索(例如使用分段偏移量的范围)来作出该判断。
对于二进制值,本实施例较佳地将输出数据值确定为至少一些输入串中相应数据值位置的逐位多数部分。在潜在数据值的字母表大于二进制的情形下,较佳地确定输出值为该输入串中的相应数据位置的平均值、中值或模。典型地,每个这样的输入串中仅使用一个数据位置来确定输出串80中相应数据位置的值,并且这些数据位置前后紧接地连续匹配。
然而,根据实施例,可修改这些方法中的任何一个或两个方法。例如,如果其它信息(例如,误差检测码)表示已将特定数据位置插入输入串,则较佳地,简单地跳过插入的数据位置。同样,如果其它信息表示已删除特定数据位置,则在确定已删除输入串中相应数据位置所在的输出数据位置的值时跳过输入串。再进一步,如果预期输入串的生成包括,例如,冗余编码,则较佳地使用来自单个输入串中的多个数据位置的数据值来重构输出串80中的相应数据位置。
在步骤213中,标识具有与步骤212中确定的子序列匹配的分段的输入串。同样,该步骤较佳地首先检查用于确定子序列的输入串的分段,并随后检查指定搜索窗内的偏移量,除非预期该搜索为无益的。常见地,在期望以随机和独立基础发生插入和删除的情形下,渐进指针周围的窗是较佳的。然而在其它情势下,如下文中更详细讨论的那样,可使用附加处理来标识匹配分段。
在步骤215中,作出是否已发生指定的结束条件的判断。例如,结束条件可基于一个指示,该指示表示已产生了最末规则子序列(例如,鉴于输入串某些部分的剩余长度)以及也已产生最末子序列(如果有的话)。在任何情形下,如果尚未满足规定的结束条件,则处理返回到步骤211,以生成下一子序列。如果已满足,则处理进至步骤216。
在步骤216中,将所产生的子序列合并成一个代表性输出串80。同样,可简单地输出该输出串80以供后继分析和/或予以进一步处理,例如差分地压缩输入串11-14。上文所述的大多数实施例以分段或子序列为单位生成输出串80。例如,基于插入和删除的预期概率较佳地确定这种分段或子序列的长度,以预期输入串中相应分段的相对小的部分(例如低于5-20%)已经过插入或删除操作。然而,通常无法事先知晓这些概率,因此在本发明的某些实施例中动态地确定分段长度(例如,如果过少的输入串展现出匹配分段,则使分段长度更短)。对于数据值是二进制的实施例,将分段长度ι和搜索窗Δι较佳地表达为恒定时间logn,其中n是输出串80的期望长度。
上文中已描述了本发明的若干实施例。应当理解这些实施例仅仅为示例性的,并且许多变例是可行的。
例如,在上述实施例的大多数中,使用输入串的子集来确定输出串80的不同分段的数据值,之后标识输入串中的匹配分段。在本发明的替代性实施例中,忽略输入串中用来生成输出串中的分段但随后发现不匹配于输出串的分段,并使用剩下的输入串来再产生输出串80的分段。然而在大多数情形下,通过这种方法取得的额外益处在于通常不必证明附加计算的正确性。
本文所述多数实施例也利用匹配标准以使各输入串同步于所生成的输出串(典型地,为所生成输出串的大多数最近部分)。总的来说,这种匹配标准将输入串的整个分段与输出串的整个分段进行比较以确定它们是否充分匹配。然而在替代性实施例中,执行细粒度处理,例如,以确定两个序列在哪里失去对齐。这些方法在插入、删除和修改几率相对低的情形下经常是特别有用的。在这类情形下,在高度失配数据值的子分段后的相对紧密匹配数据值的子分段可能指示在变化点附近已插入或删除数据值,尤其,在相邻数据值相对彼此不关联的情形下。
上述实施例通常构想成随机且独立的数据值添加、删除和修改。然而,本发明可超出该上下文的范围。例如,本发明可有利地应用于存在多种版本的文本文件的情况中,这些不同的版本构成输入串。在这类实施例中,经常以数据块(有时是相当大的块)执行插入、删除和修改,并且数据位置的信息块甚至可以从一个地点移动至另一地点(这可由一组删除和相应一组插入来表征,尽管这种表征常常无法完整地捕捉到变化的实质)。在任何情形下,基于所产生的输出分段的长度使指针简单地前进固定距离并在该位置周围的窗内搜索经常不足以使输入串与对应的输出串80的部分再对齐。
在这种情形下,经常优选附加处理来帮助执行这种再对齐。例如,在某些替代性实施例中,对输入串进行预处理(例如使用程序分块,加上最小散列、最大散列和/或近似散列技术),以产生一组位置值。然后,如果(例如使用前述搜索窗技术)在特定输入串中没有找到与当前输出分段的匹配,则可用输出串80的生成分段的数据值来确定与该分段匹配的相应输入串中的可能位置(或近似位置)(例如通过计算输出串80的分段的散列或其它摘要(digest),并使用结果值访问所属输入串的相似值的索引)。可容易地理解,本发明的许多技术标识输入串中看起来发生的插入、删除和/或修改的位置或近似位置。在本发明的某些实施例中,将这种信息任意部分或全部标注成相应输入串(例如元数据)以供将来使用。
系统环境
总的来说,除了清楚表示之外,否则可使用一个或多个可编程通用计算设备来实现本文所述的全部系统、方法和技术。例如,这类设备一般包括经由公共总线彼此互连的下列组件中的至少一些:一个或多个中央处理单元(CPU);只读存储器(ROM);随机存取存储器(RAM);(例如使用诸如串行端口、并行端口、USB连接的硬线连接或火线连接或使用诸如蓝牙或802.11协议的无线协议)与其它设备接口的输入/输出软件和电路;用于连接到一个或多个网络的软件和电路,例如,使用诸如以太网卡的硬线连接或或无线协议,诸如码分多址(CDMA)、全球移动通信系统(GSM)、蓝牙、802.11协议或任意其它基于蜂窝或不基于蜂窝的系统,在本发明许多实施例中,这些网络依次连接于因特网或任意其它网络;显示器(例如,阴极射线管显示器、液晶显示器、有机发光显示器、聚合物发光显示器或任意其它薄膜显示器);其它输出设备(例如,一个或多个扬声器、头戴耳机和打印机);一个或多个输入设备(例如,鼠标、触摸垫、写字板、触敏显示器或其它定点设备、键盘、键区、传声器或扫描仪);大容量存储单元(例如,硬盘);实时时钟;可移动存储器读/写设备(例如,用于对RAM、磁盘、磁带、磁光盘、光盘等进行读和写);以及调制解调器(例如,用来发传真或经由拨号连接连接于因特网或任意其它计算机网络)。在操作中,一开始通常将由通用计算机执行的、实现上述方法和功能的过程步骤存储在大容量存储器(例如,硬盘)中,并下载至RAM,随后由RAM外的CPU执行。然而在某些情形下,过程步骤一开始就存储在RAM或ROM中。
可从各销售者那里获得用于实现本发明的合适的设备。在各实施例中,根据任务的大小和复杂度使用不同类型的设备。合适的设备包括大型计算机、多处理器计算机、工作站、个人计算机以及例如PDA、无线电话或任意其它装置或设备的更小型计算机,不管是独立的、硬线连接于网络还是无线连接于网络的。
另外,尽管上文中已对通用可编程计算机作出描述,然而在替代实施例中也可代替地(或作为附加地)使用一个或多个专用处理器或计算机。总的来说,要注意,除了明确表示之外,否则可以软件、硬件、固件或其任意组合来实现任意前述功能,基于已知工程权衡来选择特定实施方式。更具体地,如本领域内技术人员清楚理解的那样,当以固定、预定或逻辑方式实现前述功能时,可通过编程(例如软件或固件)、逻辑器件(硬件)的适宜配置或两者的任何结合来实现前述功能。
要理解,本发明还涉及其上存储执行本发明的方法和功能的程序指令的机器可读介质。例如,所述介质包括磁盘、磁带或例如CD ROM和DVD ROM的光学可读介质或例如PCMCIA卡的半导体存储器、各种类型的存储卡、USB存储器件等。在每种情形下,介质可采用便携物品的形式,例如迷你盘驱动器或小型盘、软盘、磁带、盒式磁盘、卡、棒等,或可采取相对较大或不可移动的物品的形式,例如硬盘驱动器、设置在计算机或其它设备中的ROM或RAM。
前面的说明主要侧重于电子计算机和设备。然而应当理解,可替代地使用其它计算设备或其它类型的设备,例如利用电子、光、生物和化学处理的任意组合的设备。
附加因素
上面描述了本发明的若干不同实施例,其中描述每个这样的实施例为包含某些特征。然而,打算使结合单个实施例描述的这些特征不局限于该实施例而同样也可包含和/或配置在任意其它实施例的多种组合中,如本领域内技术人员所理解的那样。
同样,如上所述,功能有时归因于特定模块或组件。然而,一般可根据需要在任何不同的模块或组件之间再分配功能,在一些情形下完全省去了对于特定组件或模块的需求和/或添加新组件或模块的需求。本领域内技术人员可以理解,参照本发明的特定实施例较佳地根据已知工程权衡来作出功能的精确分配。
因此,尽管已参照较佳实施例和附图对本发明进行了详细说明,然而本领域内技术人员应当清楚知道,可不脱离本发明精神范围地作出本发明的各种调整和修改。因此,本发明不局限于图示和上述的精确实施例。相反,旨在使不脱离本发明精神的所有这些变例落在由所附权利要求书单独限定的范围内。
Claims (20)
1.一种生成代表性数据串的方法,包括:
(a)在数据值的输入串中标识起始数据位置;
(b)基于参照所述输入串中的起始数据位置确定的数据位置处的数据值确定输出数据值的子序列;
(c)基于匹配标准,对输入串中具有与输出数据值的子序列匹配的分段的那些输入串作出标识;
(d)在若干次迭代中重复步骤(a)-(c);以及
(e)跨所述迭代地将输出数据值的子序列合并以提供输出数据串,
其中当前迭代在步骤(b)中的确定是基于前一次迭代中的步骤(c)的标识的。
2.如权利要求1所述的方法,其特征在于,以逐位基础确定所述输出数据值。
3.如权利要求1所述的方法,其特征在于,对于在步骤(c)的当前迭代中标识为匹配的给定输入串来说,将下一次迭代的起始数据位置设置为紧随导致匹配的分段之后。
4.如权利要求1所述的方法,其特征在于,对于在步骤(c)的当前迭代中标识为不匹配的给定输入串来说,使下一次迭代的起始数据位置前进当前迭代的输出数据值的子序列的长度。
5.如权利要求1所述的方法,其特征在于,在当前迭代中,基于相对于多个输入串中的每一个中的起始数据位置的单个数据位置来确定所述子序列中的每个输出数据值。
6.如权利要求5所述的方法,其特征在于,确定所述子序列中的每个输出数据值为跨所述多个输入串的所述单个数据位置中的数据值的逐位多数部分。
7.如权利要求1所述的方法,其特征在于,为了在当前迭代的确定步骤(b)中考虑给定的输入串,对于紧接的前一次迭代的步骤(c)中的给定输入串,必须对匹配作出标识。
8.如权利要求1所述的方法,其特征在于,所述输出数据值的子序列的长度在几乎全部迭代中是恒定的。
9.如权利要求1所述的方法,其特征在于,还包括相对于输出数据串压缩输入串的步骤。
10.如权利要求1所述的方法,其特征在于,还包括步骤:使用基于程序分块技术和基于摘要的技术中的至少一种来将多个输入串再对齐于输出数据串中的当前点。
11.如权利要求1所述的方法,其特征在于,所述匹配标准包括对基于估计出的匹配位置定位的有界搜索窗内的分段进行评价。
12.一种生成代表性数据串的方法,包括:
(a)在多个数据值输入串的每个串中将指针设置在数据位置上;
(b)选择所述输入串的子集;
(c)基于由所述输入串的子集中的指针指向的数据值生成输出数据值;
(d)将输出数据值附于输出数据串;
(e)递增输入串的子集中的指针;
(f)将步骤(c)-(e)重复若干次以产生输出数据串的新分段;以及
(g)重复步骤(a)-(f)达多次迭代,
其中基于输入串各部分与紧接的前一次迭代中生成的输出数据串的新分段的匹配的能力在步骤(a)的当前迭代中设置指针。
13.如权利要求12所述的方法,其特征在于,包含在当前迭代的步骤(b)中选择的子集中的给定输入串的标准包括用于在紧接的前一次迭代中生成新分段的给定输入串的分段和紧接的前一次迭代中生成的新分段之间的匹配的标识。
14.如权利要求12所述的方法,其特征在于,每个指针在步骤(e)递增单个数据位置。
15.如权利要求12所述的方法,其特征在于,如果给定输入串包含在紧接的前一次迭代的子集中,则在当前迭代的步骤(a)中将指针设置在紧接的前一次迭代的步骤(e)中选择的数据位置。
16.如权利要求12所述的方法,其特征在于,如果给定输入串不包含在紧接的前一次迭代的子集中,则在指定搜索窗内执行搜索以尝试标识与输出数据串的新分段匹配的给定输入串中的分段,并基于搜索结果在当前迭代的步骤(a)中设置指针。
17.如权利要求12所述的方法,其特征在于,基于输入串各部分与紧接的前一次迭代中生成的输出数据串的新分段之间的相应汉明距离确定所述匹配。
18.如权利要求12所述的方法,其特征在于,确定每个输出数据值为由所述输入串的子集中的指针指向的数据值的逐位多数部分。
19.如权利要求12所述的方法,其特征在于,步骤(c)中生成的每个输出数据值是一个位。
20.一种存储用于生成代表性数据串的计算机可执行过程步骤的计算机可读介质,所述过程步骤包括:
(a)在数据值的输入串中标识起始数据位置;
(b)基于参照所述输入串中的起始数据位置确定的数据位置处的数据值确定输出数据值的子序列;
(c)基于匹配标准,对输入串中具有与输出数据值的子序列匹配的分段的那些输入串作出标识;
(d)在若干次迭代中重复步骤(a)-(c);以及
(e)跨所述迭代地将输出数据值的子序列合并以提供输出数据串,
其中当前迭代的步骤(b)的确定是基于前一次迭代中步骤(c)的标识的。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2008/051516 WO2009091411A1 (en) | 2008-01-18 | 2008-01-18 | Generation of a representative data string |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101911058A true CN101911058A (zh) | 2010-12-08 |
Family
ID=40885577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801253113A Pending CN101911058A (zh) | 2008-01-18 | 2008-01-18 | 代表性数据串的产生 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20110119284A1 (zh) |
CN (1) | CN101911058A (zh) |
DE (1) | DE112008003623T5 (zh) |
WO (1) | WO2009091411A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110456759A (zh) * | 2018-05-07 | 2019-11-15 | 丰田自动车株式会社 | 诊断设备、诊断系统和诊断方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090150261A1 (en) * | 2007-12-08 | 2009-06-11 | Allen Lee Hogan | Method and apparatus for providing status of inventory |
US20140089424A1 (en) * | 2012-09-27 | 2014-03-27 | Ant Oztaskent | Enriching Broadcast Media Related Electronic Messaging |
CN106294348B (zh) * | 2015-05-13 | 2019-07-09 | 深圳市智美达科技有限公司 | 针对实时上报数据的实时排序方法和装置 |
US11620304B2 (en) | 2016-10-20 | 2023-04-04 | Microsoft Technology Licensing, Llc | Example management for string transformation |
US11256710B2 (en) | 2016-10-20 | 2022-02-22 | Microsoft Technology Licensing, Llc | String transformation sub-program suggestion |
US10846298B2 (en) | 2016-10-28 | 2020-11-24 | Microsoft Technology Licensing, Llc | Record profiling for dataset sampling |
US11600360B2 (en) | 2018-08-20 | 2023-03-07 | Microsoft Technology Licensing, Llc | Trace reconstruction from reads with indeterminant errors |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816830B1 (en) * | 1997-07-04 | 2004-11-09 | Xerox Corporation | Finite state data structures with paths representing paired strings of tags and tag combinations |
US6788224B2 (en) * | 2000-06-26 | 2004-09-07 | Atop Innovations S.P.A. | Method for numeric compression and decompression of binary data |
US7424409B2 (en) * | 2001-02-20 | 2008-09-09 | Context-Based 4 Casting (C-B4) Ltd. | Stochastic modeling of time distributed sequences |
JP4163870B2 (ja) * | 2001-12-28 | 2008-10-08 | 富士通株式会社 | 構造化文書変換装置 |
US7139688B2 (en) * | 2003-06-20 | 2006-11-21 | International Business Machines Corporation | Method and apparatus for classifying unmarked string substructures using Markov Models |
JP4860265B2 (ja) * | 2004-01-16 | 2012-01-25 | 日本電気株式会社 | テキスト処理方法/プログラム/プログラム記録媒体/装置 |
US20050182617A1 (en) * | 2004-02-17 | 2005-08-18 | Microsoft Corporation | Methods and systems for providing automated actions on recognized text strings in a computer-generated document |
US20070085716A1 (en) * | 2005-09-30 | 2007-04-19 | International Business Machines Corporation | System and method for detecting matches of small edit distance |
US20070253621A1 (en) * | 2006-05-01 | 2007-11-01 | Giacomo Balestriere | Method and system to process a data string |
US8214517B2 (en) * | 2006-12-01 | 2012-07-03 | Nec Laboratories America, Inc. | Methods and systems for quick and efficient data management and/or processing |
-
2008
- 2008-01-18 DE DE112008003623T patent/DE112008003623T5/de not_active Withdrawn
- 2008-01-18 WO PCT/US2008/051516 patent/WO2009091411A1/en active Application Filing
- 2008-01-18 US US12/812,919 patent/US20110119284A1/en not_active Abandoned
- 2008-01-18 CN CN2008801253113A patent/CN101911058A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110456759A (zh) * | 2018-05-07 | 2019-11-15 | 丰田自动车株式会社 | 诊断设备、诊断系统和诊断方法 |
Also Published As
Publication number | Publication date |
---|---|
DE112008003623T5 (de) | 2010-11-04 |
WO2009091411A1 (en) | 2009-07-23 |
US20110119284A1 (en) | 2011-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101911058A (zh) | 代表性数据串的产生 | |
KR102007070B1 (ko) | 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법 | |
CN101803203B (zh) | 使用数据依赖组块的优化数据流压缩 | |
US7031972B2 (en) | Algorithms for block-level code alignment of software binary files | |
CN1753368B (zh) | 为远程差异压缩标识对象的方法和系统 | |
US9407287B2 (en) | Parallel history search and encoding for dictionary-based compression | |
KR20100059901A (ko) | 두 번의 패스를 통한 텍스트 스트링의 해시 추출 | |
US10810239B2 (en) | Sequence data analyzer, DNA analysis system and sequence data analysis method | |
CN110442618B (zh) | 融合专家信息关联关系的卷积神经网络评审专家推荐方法 | |
US20090132571A1 (en) | Efficient use of randomness in min-hashing | |
Sun et al. | Analyzing Cross-domain Transportation Big Data of New York City with Semi-supervised and Active Learning. | |
KR20230101760A (ko) | 품질 점수 압축 | |
CN114817651B (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN113986950A (zh) | 一种sql语句处理方法、装置、设备及存储介质 | |
Coutinho et al. | Text classification using compression-based dissimilarity measures | |
Haque et al. | Byte embeddings for file fragment classification | |
Li et al. | Elf: Erasing-based lossless floating-point compression | |
CN111951894A (zh) | 固态驱动器和可并行序列比对方法 | |
US20090112900A1 (en) | Collaborative Compression | |
Li et al. | Erasing-based lossless compression method for streaming floating-point time series | |
CN114238564A (zh) | 一种信息检索方法、装置、电子设备及存储介质 | |
CN114327252A (zh) | 使用基于内容的块对齐实现基于块的存储系统中的数据简化 | |
US20170048303A1 (en) | On the fly statistical delta differencing engine | |
Wandelt et al. | Sequence factorization with multiple references | |
US7840583B2 (en) | Search device and recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20101208 |