CN110020003A - 对集合的项目的逐一选择 - Google Patents
对集合的项目的逐一选择 Download PDFInfo
- Publication number
- CN110020003A CN110020003A CN201810992966.6A CN201810992966A CN110020003A CN 110020003 A CN110020003 A CN 110020003A CN 201810992966 A CN201810992966 A CN 201810992966A CN 110020003 A CN110020003 A CN 110020003A
- Authority
- CN
- China
- Prior art keywords
- value
- project
- bit
- index
- item
- 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
- 238000000034 method Methods 0.000 claims abstract description 61
- 210000000352 storage cell Anatomy 0.000 claims abstract description 3
- 239000013598 vector Substances 0.000 claims description 81
- 210000004027 cell Anatomy 0.000 claims description 34
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000013480 data collection Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
用于从关联存储器阵列中的项目集合中逐一选择项目的方法和系统包括:确定集合的密度;如果密度稀疏,则重复执行极端项目选择(EIS)方法,以从集合中选择选定的项目的下一项目并从集合中移除下一项目以创建下一集合;以及如果密度不稀疏,则执行下一索引选择(NIS)方法,以创建选定的项目的链表并重复地从集合中选择下一选定的项目。关联存储器阵列包括以行和列布置的多个关联存储器单元格,其中,第一行和第一列中的每个第一单元格可以访问相邻列中的第二行中的第二单元格的内容。
Description
相关申请的交叉引用
本申请要求享有来自于2017年8月30日提交的美国专利申请15/690,305的优先权,通过引用方式将其并入本文。
技术领域
概括而言,本发明涉及关联计算,并且具体而言涉及使用关联计算的数据挖掘算法。
背景技术
应用经常需要从大型项目数据集中逐一挑选或检索若干选定的项目。可以通过以下方式之一创建选定的项目的集合:由用户手动选择;由算法创建;或者作为搜索或任何其他产生应用所需的项目集合的过程的结果。
在数据集中,属于集合的项目被显式地标识为该集合的部分。可以一个接一个地检索集合中的项目,使得在每个检索步骤中,检索来自集合的单个项目。在其检索之后,可以从集合中移除检索到的项目,以便其不再被检索。用于拣选在每个特定步骤中检索哪个项目的方法在本文中被称为“项目选择”。可以领会,应用可以重复检索步骤,直到已经检索集合中的所有项目并且集合被清空。
假定只要最终检索了集合中的所有项目,从集合中检索项目的次序没有隐式的重要性。朴素的“项目选择”方法可以用于通过项目在数据集中的位置来选择项目。在每个检索操作中,可以扫描整个数据集,从第一项开始直到找到属于集合的项目。一旦被读取,可以将“读取”指示指派给读取的项目,并且应用可以执行下一检索操作。
可以领会,扫描整个数据集的单个检索操作的复杂度是O(N),其中,N是数据集的大小,并且读取具有P个项目的整个集合的复杂度是O(P*N)。
发明内容
根据本发明的优选实施例,提供了用于从大型项目数据集中选定的项目集合中逐一选择项目的方法。方法包括确定集合的密度是否稀疏。如果密度稀疏,则方法包括重复执行极端项目选择(EIS)方法以从集合中选择选定的项目中的下一项目并从集合中移除该下一项目以创建下一集合。如果密度不稀疏,则方法包括执行下一索引选择(NIS)方法以创建选定的项目的链表并重复从集合中选择下一选定的项目。
此外,根据本发明的优选实施例,数据集存储在关联存储器阵列中。
此外,根据本发明的优选实施例,方法还包括:创建具有与数据集相同大小的标记矢量,其中,选定的项目的所有索引具有第一值并且非选定的项目的所有索引具有第二值。
此外,根据本发明的优选实施例,第一值是“1”并且第二值是“0”。
另外,根据本发明的优选实施例,确定包括:对标记矢量中的第一值的数量进行计数以产生大小,将大小除以数据集中的项目数量,并且将除法结果与预定义的值进行比较以提供密度。
此外,根据本发明的优选实施例,确定包括:对标记矢量中的第一值的数量进行计数以产生大小,并且将大小与预定义的值进行比较以提供密度。
根据本发明的优选实施例,提供了用于从大型项目数据集中选定的拣选项目集合中选择期望的项目的方法。方法包括:对于标记矢量中的每个标记比特,根据标记比特来创建组合值(CV)作为CV的最高有效比特(MSB)并且创建数据集的项目的索引,标记比特具有与集合中的每个项目相关联的第一值和与不在集合中的每个项目相关联的第二值;并且选择期望的项目作为其CV具有极值的项目。
此外,根据本发明的优选实施例,极值是最大值或最小值。
此外,根据本发明的优选实施例,当极值为最大值时MSB是标记比特的值,并且当极值是最小值时MSB是标记比特的值的逆(inverse)。
根据本发明的优选实施例,提供了用于从大型项目数据集中选定的拣选项目集合中一次选择一个项目的方法。方法包括:具有标记矢量,其中,选定的项目的所有索引具有第一值并且非选定的项目的所有索引具有第二值。对于具有第一值的比特,方法包括:计算从具有第一值的第一比特到标记矢量中具有第一值的下一比特的增量,将增量添加到索引以创建项目的索引的链表,选择列表的第一项目,并且从链表中重复选择其标记比特具有第一值的下一项目。
另外,根据本发明的优选实施例,下一项目是其索引是链表中的后面的项目并且其标记比特具有第一值的项目。
此外,根据本发明的优选实施例,增量具有最大大小。
此外,根据本发明的优选实施例,链表还包括其标记比特具有第二值的中间项目,并且其中,选择包括:当下一项目是中间项目时,选择由中间项目指示的下一项目。
此外,根据本发明的优选实施例,计算增量包括:创建增量矢量;将增量矢量的所有元素启动为“0”值;对于增量矢量中的所有比特同时地,如果标记矢量的值是第二值,则将1添加到增量矢量中的当前比特的值;并且对于标记矢量中的所有比特同时地,通过在标记矢量中的后续比特的值与标记矢量中的当前比特的值之间执行布尔运算来更新标记矢量,由此对具有第一值的标记比特进行移位;并且将添加和更新重复预先确定的次数。
此外,根据本发明的优选实施例,当第一值为“1”且第二值为“0”时,布尔运算为或运算,并且当第一值为“0”且第二值为“1”时,布尔运算为与运算。
根据本发明的优选实施例,提供了关联存储器阵列。关联存储器阵列包括以行和列布置的多个关联存储器单元格,其中,第一行和第一列中的每个第一单元格可以访问相邻列中的第二行中的第二单元格的内容。
此外,根据本发明的优选实施例,第一行和第二行是相同行。
另外,根据本发明的优选实施例,关联存储器阵列还对于每列包括多路复用器单元,其用于选择在第一列的左侧的相邻列或者在第一列的右侧的相邻列。
此外,根据本发明的优选实施例,关联存储器阵列还对于每列包括逻辑单元,其用于在从第一列中读取的内容和从第二列中读取的内容之间执行布尔运算。
此外,根据本发明的优选实施例,关联存储器阵列还包括电路,其用于将布尔运算的结果存储在第一列中的单元格中。
根据本发明的优选实施例,提供了用于从大型项目数据集中选定的项目集合中逐一选择项目的系统。系统包括项目选择器、极端项目选择器(EIS)和下一索引选择器(NIS)。项目选择器确定集合的密度是否稀疏。如果集合稀疏,则EIS重复从集合中选择选定的项目的下一项目,并且从集合中移除下一项目以创建下一集合。如果该集合不稀疏,则NIS创建选定的项目的链表并且重复从集合中选择下一选定的项目。
此外,根据本发明的优选实施例,系统还包括用于存储数据集的关联存储器阵列。
此外,根据本发明的优选实施例,系统包括:具有与数据集相同大小的标记矢量,其中,选定的项目的索引用第一值标记,并且非选定的项目的索引用第二值标记。
此外,根据本发明的优选实施例,第一值是“1”并且第二值是“0”。
根据本发明的优选实施例,提供了用于从大型项目数据集中选定的拣选项目集合中选择期望的项目的系统。系统包括关联存储器阵列和EIS。关联存储器包括多个列,每列用于存储组合值(CV),其中,与项目数据集的每个项目相关联的标记比特是CV中的每一者的最高有效比特(MSB),并且与项目数据集的每个项目相关联的索引提供CV中的每一者的其他比特。EIS选择与具有极值的CV相关联的项目。
此外,根据本发明的优选实施例,当极值是最大值时MSB是标记比特的值,并且当极值是最小值时MSB是标记比特的值的逆。
根据本发明的优选实施例,提供了用于从大型项目数据集中选定的拣选项目集合中一次选择一个项目的系统。系统包括关联存储器阵列和NIS。关联存储器阵列包括多个列,每列用于存储来自标记矢量的比特。NIS最初计算从具有第一值的第一比特到标记矢量中具有第一值的下一比特的增量,将增量添加到索引以创建标记项目的索引的链表,随后选择链表的第一项目,并且重复选择其索引是链表中下一项目的项目。
附图说明
在说明书的结论部分中特别指出并清楚地要求保护被视为发明的主题。然而,本发明(就操作的组织和方法二者而言,连同其目的、特征和优点)可以通过参考以下详细描述(当与附图一起阅读时)被最好地理解,其中:
图1是根据本发明的优选实施例构造和操作的项目选择系统的示意图;
图2A和图2B是根据本发明的优选实施例构造和操作的形成图1系统的部分的关联存储器阵列的一部分的示意图;
图3是根据本发明的优选实施例的存储在关联存储器阵列组件中的数据的示意图;
图4是根据本发明的优选实施例的描述由图1的系统使用的方法的状态机;
图5是根据本发明的优选实施例的存储在图1的系统中的示例性数据和极端项目选择器对其的使用的示意图;
图6是根据本发明的优选实施例的存储在图1的系统中的示例性数据和下一项目选择器对其的使用的示意图;
图7是根据本发明的优选实施例的示出由图6的下一项目选择器执行的用于构建链表的步骤的流程图;
图8和图9是根据本发明的优选实施例的由图7的流程创建和操纵以创建集合的项目之间的增量的数据的示意图;
图10是根据本发明的优选实施例的由图7的流程创建的最终链表的示意图;以及
图11是根据本发明的优选实施例的由下一项目选择器实现的项目提取流程。
应当领会,为了说明的简单和清楚,附图所示的元素不一定按比例绘制。例如,为了清楚,元素中的一些元素的尺寸可以相对于其他元素被扩大。此外,在认为适当的情况下,可以在附图当中重复附图标记以指示对应或类似的元素。
具体实施方式
在以下详细描述中,阐述了许多具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。在其他实例中,没有详细描述众所周知的方法、过程和组件,以免模糊本发明。
申请人已经认识到,通过扫描整个数据集来选择项目、从第一项目开始对于集合中的每个项目再次全部扫描是不高效的,这是因为复杂度与数据集大小成比例。随着数据集的增长,提取或挑选或选择项目的平均时间将增加,并且响应时间可能恶化。
申请人还已经认识到,关联存储器设备可以用于存储大型数据集,并且可以提供高效的存储器内系统,所述存储器内系统可以以恒定的计算复杂度O(1)执行“项目选择”方法,而不论数据集的大小。
在以下文献中描述了可以提供这样的恒定复杂度的存储器设备:于2012年8月7日发布的美国专利第8,238,173号(题为“USING STORAGE CELLS TO PERFORMCOMPUTATION”);于2015年5月14日公布的美国专利公开第US 2015/0131383号(题为“NON-VOLATILE IN-MEMORY COMPUTING DEVICE”);于2015年7月16日公布的美国专利公开第2015/0200009号(题为“MEMORY DEVICE”),其于2018年1月2日被发布为美国专利第9,859,005号;于2016年8月16日发布的美国专利第9,418,719号(题为“IN-MEMORY COMPUTATIONALDEVICE”)和于2017年1月31日发布的美国专利第9,558,812号(题为“SRAM MULTI-CELLOPERATIONS”),以上被转让给了本发明的共同受让人并且通过引用方式被并入本文。
现在参考的图1示意性地示出了根据本发明的优选实施例构造和操作的项目选择系统100。项目选择系统100包括项目选择器110和可以存储数据集和任何相关信息的关联存储器阵列120。
项目选择器110可以根据下文描述的选择方法之一从集合中选择项目。项目选择器110还包括:在下文中被详细描述的找到并选择(FS)矢量112、选择在集合中具有最高/最低索引的项目的“极端项目选择器”(EIS)114以及选择项目的链表中的下一项目的“下一索引选择器”(NIS)116。
项目选择器110可以将选择的项目的指示添加到FS 112,其可以用于提取或挑选选择的项目。项目选择器110可以在项目被提取之后从FS 112中移除指示。可以领会,在每次提取操作中,FS矢量112中存在单个指示。项目选择器110还可以在项目已经被提取之后从集合中移除该项目。
关联存储器阵列120可以是根据本发明的优选实施例构造和操作并如现在参考的图2A和图2B中更详细地示出的包括多个部分122的存储器设备。部分122可以布置在存储器单元230的行210和列220中,其中,三列标记为LJ、J和RJ。每个存储器单元230可以存储其自己的数据232,并且可以访问存储在每侧上的相邻存储器单元中的数据232。如虚线箭头241所示,MU-J可以读取存储在其左侧的存储器单元230 MU-LJ中的数据232,或者如虚线箭头242所示,可以读取存储在其右侧的存储器单元230 MU-RJ中的数据232。
图2B示意性地示出了根据本发明的优选实施例构造和操作的与(图2A的)部分122的列J相关联的电路200。电路200可以使存储器单元MU-J能够访问相邻的存储器单元MU-RJ和MU-LJ,并且可以可选地执行存储在其中的数据232与MU-J的数据232之间的布尔运算。
电路200包括两个元件:多路复用器(mux)260和逻辑单元280以及导线。电路200的导线提供列J的存储器单元230与电路200的元件之间的连接。导线250-J可以提供列J的存储器单元230与逻辑单元280之间的连接。导线250-LJ可以提供列-LJ的存储器单元230与mux 260之间的连接。导线250-RJ可以提供列RJ的存储器单元230与mux 260之间的连接。可以领会,列(LJ、J、RJ)与电路200中的元件之间的导线(250-LJ、250-J、250-RJ)可以读取存储在该列中的任何存储器单元230中的数据232。另外地或替代地,导线250-LJ、250-J和250-RJ分别可以提供执行存储在列LJ、J、RJ中的若干存储器单元230单元格中的数据232之间的布尔运算的结果。
导线270可以提供mux 260和逻辑单元280之间的连接,并且导线290可以提供逻辑单元280和MU-J之间的连接。Mux 260可以选择从MU-LJ或MU-RJ读取数据232。逻辑单元280可以从MU-J读取数据232并且可以从mux 260接收数据。逻辑单元280可以执行从MU-J读取的数据232与从mux 260接收的数据之间的布尔运算。逻辑单元280可以将结果写入列J的存储器单元230,例如MU-J。
可以领会,使用电路200,存储器单元MU-J可以用相邻存储器单元的数据替换其自己存储的数据。存储器单元MU-J可以替代地执行其自己的存储数据232与来自相邻存储器单元的数据之间的布尔运算,并且可以用执行的布尔运算的结果来替换其自己的数据。
可以领会,类似的电路可以与(图1的)关联存储器阵列120的(图2A的)每个部分122的每列相关联。
现在参考的图3示出了数据及其存储在关联存储器阵列120中的方式。关联存储器阵列120可以存储数据集310、具有与每个项目相关联的独特值的索引320以及标记矢量330。数据集310的每个项目可以存储在横跨若干行的专用列220中。与特定项目相关的索引可以存储在与特定项目相同的列220中。索引可以形成存储在存储器部分122的若干行中的矢量320。存储在部分122的行210(图2A)中的标记矢量330中的指示可以存储在特定项目的相同列中并且可以指示存储在列中的项目是否是集合的部分。在本发明的一个实施例中,标记矢量330的单元格中的值1可以指示存储在列中的项目在集合中(因此,标记矢量330的单元格中的值0可以指示存储在列中的项目不在集合中)。
如图3所示,在列中实际存储和大多数计算是垂直完成的。可以领会,逻辑操作在所有列220上并行执行,即在与存储在数据集中的所有项目有关的数据上同时地执行。
图3提供了存储在关联存储器阵列120中的示例数据集310。数据集310存储数据项目:数据-0、数据-1……数据-n。在该示例中,在整个数据集中,三个项目在选定的集合中,即在标记矢量330中的具有值1的那些项目,并且可以领会,在该示例中,数据项目数据-1、数据-2和数据-x被选定且应当被读取。
项目选择器110可以使用任何适当的“项目选择”方法。如上文描述的,EIS 114可以选择具有集合中最高/最低索引的项目。并且如果集合中的项目的链表被建立并且可以是可提前访问的,则NIS 116可以从列表中的第一项目开始选择项目的链表中的下一项目。下文详细描述了EIS 114和NIS 116二者。
在一个实施例中,项目选择器110可以选择使用根据标记矢量330的密度的方法。如现在参考的图4所示,项目选择器110可以检查(步骤410)标记矢量330的密度。可以通过对标记矢量330中的标记的数量进行计数并将结果除以整个数据集中的项目数量来完成检查。如果比率小于预定义的值(例如,5%、10%、15%等),则标记矢量330可以被认为是稀疏的,否则认为是密集的。替代地,可以通过将集合中的项目数量与预定义的值进行比较来确定密度,并且如果集合中的项目数量小于预定义的值,则标记矢量330可以被认为是稀疏的。
可以领会,可以以任何其他方式评估标记的密度。当标记矢量330稀疏时,如步骤420中指示的,项目选择器110可以使用EIS 114,而当标记矢量330密集时,如步骤430中指示的,项目选择器110可以使用NIS 116。
还可以领会,项目选择器110可以根据除了标记矢量330的密度之外的考虑来选择EIS 114或NIS 116。项目选择器110可以仅使用EIS 114、仅使用NIS 116以及使用EIS 114和NIS 116的任何混合。
EIS 114可以将与存储在数据集中的数据项目相关联的索引以及与数据项目相关联的标记(二者均存储在相同列中)认为是与数据项目相关联的一个组合值(CV),其中,标记比特是组合值的最高有效比特(MSB),并且索引提供其余比特。以该方式考虑CV,被保证的是:在标记矢量330中用“1”标记的选定的项目将具有大于用“0”标记的非选定的项目的值,这是因为在其MSB中具有1的二进制数大于在其MSB中具有0的二进制数;并且最终将挑选单个项目,这是因为每个项目都具有独特的索引,因此CV是独特的,并且将存在单个极端CV。
可以领会,EIS 114还可以将索引和标记比特的逆(非(NOT)-标记)认为是CV的MSB,并且找到集合中的最低索引。以该方式考虑CV,保证的是在标记矢量330中用“1”标记的选定的项目将具有0(非1)作为其CV的MSB,从而确保它们具有小于在其MSB中具有1(非0)的非选定的项目的值。
EIS 114可以使用任何搜索方法来找到CV之间的最大值或最小值。可以领会,通过引用并入的美国专利9,859,005可以描述用于找到数据集中的最大值的方法,其具有恒定的计算复杂度而不论数据集的大小并且可以由EIS 114使用。
现在参考的图5示出了存储在系统100中的示例性数据以及EIS 114方法对其的使用。存储在系统100中的不同数据项目由若干水平矢量呈现:存储实际数据的数据510;对存储的项目的索引进行存储的索引520;以及存储选定的项目集合的标记矢量530。由项目选择器110使用的另外的信息是CV矢量540和FS矢量112,所述CV矢量540和FS矢量112具有对在特定提取请求中项目选择器110所选择的项目的指示。可以领会,CV 540可以实际上不被存储在项目选择系统100中,并且为了清楚而在图5中示出。可以领会,为了清楚,存储在矢量的位置x中的值在本文中被表示为矢量[x]。
在图5的示例中,标记矢量530包括标记[2]、标记[4]、标记[7]、标记[8]、标记[10]和标记[14]中的指示,所述指示分别对其索引为4、7、8、10和14的项目在选定的项目的集合中进行指示。可以领会,位于那些索引中的数据项目分别是数据-2、数据-4、数据-7、数据-8、数据-10和数据-14。可以通过将标记矢量530的比特称为由标记和数据项目的索引创建的值的MSB来创建CV 540。还可以领会,CV 540中的最大值是18、20、23、24、26、30,其如预期地与项目数据-2、数据-4、数据-7、数据-8、数据-10和数据-14相关联。
使用美国专利9,859,005中描述的方法,项目选择器110可以找到CV 540中的最大数。可以领会,数据项目数据-14与30相关联,其中,30是CV 540中的最大值。如所示,项目选择器110可以在FS 112中将FS[14]的值设置为1,并且然后可以读取与FS[14]相关联的项目。
在读取/提取项目之后,项目选择器110可以将标记[14](即,与相关读取数据项目相关联的比特)置零,本质上从集合中移除读取项目。在将标记比特置零后,可以重新计算CV[14]并且可以将FS[14]置零。原始值由列220A指示,并且修改的值由列220B指示。项目选择器110现在可以准备好进行EIS 114的另一操作。
可以领会,找到最大值并将标记矢量530中的条目置零的这些步骤被重复,直到标记矢量530中不再有标记的对象,即集合为空。
如上文已经提到的,当集合中的项目数量大时,NIS 116可以更高效,这是因为链表被构建一次,并且一旦被构建,所有相关项目就可以被直接访问(而不是最大值或最小值搜索操作)。
NIS 116可以通过计算标记之间的“增量”来创建标记的项目的索引的链表。增量是标记矢量中具有值“1”的每两个连续单元格之间具有值“0”的单元格的数量。可以将每个计算的增量添加到当前选定的项目的索引,以获得下一选定的项目的索引。
现在参考的图6示出了存储在系统100中的示例性数据以及NIS 116对其的使用。存储在系统100中的不同数据项目由若干水平矢量呈现:包含存储的项目的索引的索引610;包含实际数据的数据620;以及包含选定的项目集合的标记矢量630。NIS 116可以使用另外的信息:用于中间计算的临时矢量Temp 635;增量矢量640;列表650以及具有对项目选择器110当前选择的一个项目的指示的FS矢量112。
在图6的示例中,标记矢量630包括标记[3]、标记[5]、标记[10]、标记[19]、标记[20]、标记[23]、标记[25]和标记[27]中的指示,所述指示分别对其索引为索引[3]、索引[5]、索引[10]、索引[19]、索引[20]、索引[23]、索引[25]和索引[27]的值(即,数据-3、数据-5、数据-10、数据-19、数据-20、数据-23、数据-25和数据-27)的项目在选定的项目的集合中并且链表650应当包括这些索引进行指示。
NIS 116可以首先同时计算标记矢量630中的标记之间的增量,其中,增量是标记矢量630中每两个连续标记之间的零的数量。链表中的第一项目可以是第一增量的值。在示例中,第一标记比特与其索引为3的项目相关联,因此列650中的第一值(即,位于索引0中的值)是3(列表[0]=3)。列表650中的下一项目可以通过将(到下一标记的)增量添加到当前标记的项目的索引加上一(其为由当前标记的项目占用的空间)来计算。用于计算列表650中的项目的值的公式在等式1中被定义。
列表[x]=索引[x]+增量[x+1]+1 等式1
在示例中,列表650中的下一项目是列表[3]。要存储在列表[3]中的值是通过添加来自增量640(增量[3+1])的相关值(其在该示例中为1)并且添加另一个1来计算的,即列表[3]=3+1+1=5。箭头651在视觉上指向由列表650中的第一项目指向的列。列表650中的下一项目存储在由前一项目指向的位置中,即列表[3]中。箭头652在视觉上指向由列表[3]指向的项目,并且箭头653在视觉上指向列表中的下一项目。可以领会,列表650中的最后项目的值可能是无效的,这是因为它可能指向链表外部。在示例中并且如箭头654所示,在标记630中设置的最后比特是标记[27],并且它“指向”列表外部的29。下文描述了用于构建链表并用于使用它的详细机制。
现在参考图7、图8和图9。图7是描述由NIS 116执行的用于构建链表的步骤的流程图700。图8和图9示出了在执行流程700的步骤时增量640和列表650的数据。在步骤710中,NIS 116可以创建增量640和列表650并且可以将它们初始化为0。另外,NIS 116可以创建Temp 635,以存储要在计算期间使用和操纵的标记630的副本,同时保持标记630的原始值未被改变以供以后使用。
图8示出了在图7的步骤710中存储在索引610、标记630、Temp 635、增量640和列表650中的值的示例。返回到图7,步骤720是可以将步骤730的计算重复K次的循环。K是可以由任何启发法(heuristic)定义的某个预定义的值,所述启发法例如固定数、数据集的大小除以标记的数量、数据集的大小除以标记的数量乘以2或任何其他启发法。
步骤730描述了增量是如何在整个矢量中被同时计算的。只要在临时矢量的位置i(i=0...N,N是数据集的大小)(即,Temp[i]中)存在“0”,增量640的每个相同位置i中的值增量[i]就递增。在每次迭代中,可以计算Temp矢量635的每个单元格i中的值,作为单元格i的值和单元格i+1的值的布尔或(OR)的结果,所述单元i+1是矢量中的下一单元格,如在等式2中定义的。
Temp[i]=Temp[i]OR Temp[i+1] 等式2
可以领会,对Temp 635的条目的布尔或运算的影响本质上是将具有值“1”的条目复制到左侧至多K次。可以领会,仅将值1复制到左侧,而不复制0的值。只要Temp 635中的条目的值为“0”,增量640的值就递增。即,在每次迭代中,增量矢量640中的每个单元格增量[i]的值可以被计算为增量[i]加上存储在Temp 635中的相应单元格Temp[i]中的值的逆,如在公式3中定义的。
增量[i]=增量[i]+NOT(Temp[i]) 等式3
结果是,在迭代期间,每个增量[i]将递增1直到Temp[i]变为1。
现在参考的图9示出了在若干迭代之后增量640和Temp 635的值。Temp1示出了第一迭代之后Temp 635的值,Temp2示出了第二迭代之后Temp 635的值,并且Tempk示出了最后(第K)迭代之后Temp 635的值,其中,Temp 635中每个单元格的值是使用等式2计算的。可以领会,Temp 635的最后单元格的值不改变,这是因为最后单元格之后没有单元格。注意,Temp 635中的单元格的值可以从0改变为1,但反过来从1改变为0不成立。可以领会,在最后迭代之后,增量k[0]与最近的集合标记(标记630中)之间的距离为3,增量k[1]与最近的标记之间的距离为2,增量k[2]与最近的标记之间的距离为1,并且增量k[3]是标记的实际位置,因此到最近标记的距离为0。
增量1示出了第一次迭代之后增量640的值,增量2示出了下一迭代之后增量640的值,并且增量k示出了最后(第K)迭代之后增量640的值,其中,增量640中的每个单元格的值是使用等式3计算的。注意,单元格的值增加并表示对于每个i在过去的迭代中在Temp 635中遇到的零的数量,并且最终表示项目与下一标记的项目之间的零的数量。
返回到图7,步骤740描述了在步骤730的最后迭代之后列表650的计算。可以根据索引610和存储在增量640中的增量来创建列表650。列表650中的第一项目可以是第一增量的值,所述第一增量可以与数据集中的具有索引0的第一项目相关联。列表650的除了第一项目之外的所有项目可以计算为增量和“指向”下一项目的项目的索引的函数,如上文中等式1中定义的。
现在参考的图10示出了使用存储在Temp 635和增量640中的值来计算的列表650的值,如所示。可以领会,列表650中的第一项目指向第一标记的项目,即列表[0]=3。列表650中的下一项目是列表[3],其指向5。箭头指向列表650的条目,并且列表的其他条目具有NIS 116不使用的无意义的值。
应当注意,K(迭代数量)是在与实际标记矢量中的标记之间的实际增量没有任何关联的情况下被选择的。因此,可能的是存在大于K的增量。在该情况下,在仅K次迭代中不能计算大增量,因此,它将不在列表650中被列出。相反,列表650可以包含条目列表[x],其是指向未标记的项目的中间指针,即标记[x]的值可以是0。尽管如此,列表[x]可以指向列表650中可以最终与标记的条目相关联的另一条目。
一旦列表650准备好,它就可以用于读取项目。在现在参考图11中描述了由NIS116实现的项目提取流程。流程1100在步骤1110中描述了要读取的第一项目可以是具有位于列表的第一项目中的索引的项目,即索引=列表[0]。步骤1130指示如果标记被设置(即,标记[索引]==1),则(图1的)NIS 116可以提取数据[索引],并且在步骤1140中,NIS 116可以读取下一项目的索引以从列表中的当前位置提取,即索引=列表[索引]。步骤1145检查索引有效,即其值小于N,所述N是集合的大小。如果索引大于集合,则流程在步骤1150中终止。
本领域技术人员可以领会,流程700和流程1100中所示的步骤并非旨在进行限制,并且可以用更多或更少的步骤或使用不同的步骤顺序或其任何组合来实践两个流程。
可以领会,项目选择系统100可以减少用于从数据库中提取选定的项目的计算时间。可以同时对矢量Temp 635和增量640的所有单元格同时执行计算步骤。关联存储器设备的能力(即,对所有列的同时布尔运算和对存储在相同行中的相邻单元格中的数据的同时访问)可以为两种项目选择方法提供不取决于的矢量大小的计算复杂度。对于大小为P的集合,EIS 114的计算复杂度为O(P),并且NIS 116的计算复杂度为O(K)。
虽然本文已经示出和描述了本发明的某些特征,但是本领域普通技术人员现在将想到许多修改、替换、改变和等同物。因此,应当理解,所附权利要求旨在覆盖落入本发明的真正精神内的所有这样的修改和改变。
Claims (28)
1.一种用于从大型项目数据集中选定的项目集合中逐一选择项目的方法,所述方法包括:
确定所述集合的密度是否稀疏;
如果所述密度稀疏,则重复执行极端项目选择(EIS)方法,以从所述集合中选择所选定的项目的下一项目并从所述集合中移除所述下一项目以创建下一集合;以及
如果所述密度不稀疏,则执行下一索引选择(NIS)方法,以创建所选定的项目的链表并重复地从所述集合中选择下一选定的项目。
2.如权利要求1所述的方法,其中,所述数据集存储在关联存储器阵列中。
3.如权利要求1所述的方法,还包括:创建具有与所述数据集相同大小的标记矢量,其中,所选定的项目的所有索引具有第一值,并且非选定的项目的所有索引具有第二值。
4.如权利要求3所述的方法,其中,所述第一值是“1”,并且所述第二值是“0”。
5.如权利要求3所述的方法,其中,所述确定包括:
对所述标记矢量中的所述第一值的数量进行计数以产生大小;
将所述大小除以所述数据集中的项目数量;以及
将除法的结果与预定义的值进行比较以提供所述密度。
6.如权利要求3所述的方法,其中,所述确定包括:
对所述标记矢量中的所述第一值的数量进行计数以产生大小;以及
将所述大小与预定义的值进行比较以提供所述密度。
7.一种用于从大型项目数据集中选定的拣选项目集合中选择期望的项目的方法,所述方法包括:
对于标记矢量中的每个标记比特,根据所述标记比特来创建组合值(CV)作为所述CV的最高有效比特(MSB)并且创建所述数据集的所述项目的索引,所述标记比特具有与所述集合中的每个项目相关联的第一值以及与不在所述集合中的每个项目相关联的第二值;以及
选择所述期望的项目作为其CV具有极值的项目。
8.如权利要求7所述的方法,其中,所述极值是以下各项之一:最大值和最小值。
9.如权利要求8所述的方法,其中,当所述极值是最大值时,所述MSB是所述标记比特的值,并且当所述极值是最小值时,所述MSB是所述标记比特的值的逆。
10.一种用于从大型项目数据集中选定的拣选项目集合中一次选择一个项目的方法,所述方法包括:
具有标记矢量,其中,所选定的项目的所有索引具有第一值并且非选定的项目的所有索引具有第二值;
对于具有所述第一值的比特,计算从具有所述第一值的第一比特到所述标记矢量中的具有所述第一值的下一比特的增量;
将所述增量添加到索引以创建项目的索引的链表;
选择所述列表的第一项目;以及
从其标记比特具有所述第一值的所述链表中重复选择下一项目。
11.如权利要求10所述的方法,其中,所述下一项目是其索引是所述链表中的后面的项目并且其标记比特具有所述第一值的项目。
12.如权利要求10所述的方法,其中,所述增量具有最大大小。
13.如权利要求12所述的方法,其中,所述链表还包括其标记比特具有第二值的中间项目,并且其中,所述选择包括:当所述下一项目是中间项目时,选择由所述中间项目指示的下一项目。
14.如权利要求12所述的方法,其中,所述计算增量还包括:
创建增量矢量;
将所述增量矢量的所有元素启动为“0”值;
对于所述增量矢量中的所有比特同时地,如果所述标记矢量的所述值是所述第二值,则将1添加到所述增量矢量中的当前比特的值;
对于所述标记矢量中的所有比特同时地,通过执行所述标记矢量中的后续比特的值与所述标记矢量中的当前比特的值之间的布尔运算来更新所述标记矢量,从而使具有所述第一值的标记比特移位;以及
将所述添加和所述更新重复预先确定的次数。
15.如权利要求14所述的方法,其中,当所述第一值为“1”且所述第二值为“0”时,所述布尔运算为或运算;并且当所述第一值为“0”且所述第二值为“1”时,所述布尔运算为与运算。
16.一种关联存储器阵列,其包括:
以行和列布置的多个关联存储器单元格,其中,第一行和第一列中的每个第一单元格能访问相邻列中第二行中的第二单元格的内容。
17.如权利要求16所述的关联存储器阵列,其中,所述第一行和所述第二行是相同行。
18.如权利要求16所述的关联存储器阵列,并且还包括:
对于每列,多路复用器单元,其用于选择以下各项之一:在所述第一列的左侧的相邻列和在所述第一列的右侧的相邻列。
19.如权利要求16所述的关联存储器阵列,并且还包括:
对于每列,逻辑单元,其用于执行从第一列中读取的内容和从第二列中读取的内容之间的布尔运算。
20.如权利要求16所述的关联存储器阵列并且还包括:
电路,其用于将所述布尔运算的结果存储在所述第一列中的单元格中。
21.一种用于从大型项目数据集中选定的项目集合中逐一选择项目的系统,所述系统包括:
项目选择器,其用于确定所述集合的密度是否稀疏;
极端项目选择器(EIS),其用于在所述集合稀疏的情况下从所述集合中重复选择所选定的项目的下一项目,并且从所述集合中移除所述下一项目以创建下一集合;以及
下一索引选择器(NIS)方法,其用于在所述集合不稀疏的情况下创建所选定的项目的链表,并且从所述集合中重复选择下一选定的项目。
22.如权利要求21所述的系统,并且还包括用于存储所述数据集的关联存储器阵列。
23.如权利要求21所述的系统,并且还包括:具有与所述数据集相同大小的标记矢量,其中,所选定的项目的索引用第一值标记,并且非选定的项目的索引用第二值标记。
24.如权利要求21所述的系统,其中,所述第一值是“1”,并且所述第二值是“0”。
25.一种用于从大型项目数据集中选定的拣选项目集合中选择期望的项目的系统,所述系统包括:
关联存储器阵列,其包括多个列,每列用于存储组合值(CV),其中,与所述项目数据集的每个项目相关联的标记比特是所述CV中的每一者的最高有效比特(MSB),以及与所述项目数据集的每个项目相关联的索引提供所述CV中的每一者的其他比特;以及
极端项目选择器(EIS),其用于选择与具有极值的CV相关联的项目。
26.如权利要求25所述的系统,其中,所述极值是以下各项之一:最大值和最小值。
27.如权利要求25所述的系统,并且其中,当所述极值是最大值时,所述MSB是所述标记比特的值,并且当所述极值是最小值时,所述MSB是所述标记比特的值的逆。
28.一种用于从大型项目数据集中选定的拣选项目集合中一次选择一个项目的系统,所述系统包括:
关联存储器阵列,其包括多个列,每列用于存储来自标记矢量的比特;以及
下一项目选择器(NIS),其用于:初始地计算从具有所述第一值的第一比特到所述标记矢量中的具有所述第一值的下一比特的增量,将所述增量添加到索引以创建标记的项目的索引的链表,随后选择所述链表的第一项目,并且重复地选择其索引是所述链表中的下一项目的项目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/690,305 US10956432B2 (en) | 2017-08-30 | 2017-08-30 | One by one selection of items of a set |
US15/690,305 | 2017-08-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110020003A true CN110020003A (zh) | 2019-07-16 |
Family
ID=65437340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810992966.6A Pending CN110020003A (zh) | 2017-08-30 | 2018-08-29 | 对集合的项目的逐一选择 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10956432B2 (zh) |
KR (2) | KR102371347B1 (zh) |
CN (1) | CN110020003A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6278992B1 (en) * | 1997-03-19 | 2001-08-21 | John Andrew Curtis | Search engine using indexing method for storing and retrieving data |
US6505225B1 (en) * | 2000-02-01 | 2003-01-07 | Kabushiki Kaisha Toshiba | Adder logic circuit and processor |
US20110153980A1 (en) * | 2006-03-31 | 2011-06-23 | Kyushu Institute Of Technology | Multi-stage reconfiguration device and reconfiguration method, logic circuit correction device, and reconfigurable multi-stage logic circuit |
US20120198174A1 (en) * | 2011-01-31 | 2012-08-02 | Fusion-Io, Inc. | Apparatus, system, and method for managing eviction of data |
US20130007419A1 (en) * | 2011-04-12 | 2013-01-03 | Texas Instruments Incorporated | Computer implemented method of electing k extreme entries from a list using separate section comparisons |
US20150146491A1 (en) * | 2013-11-28 | 2015-05-28 | Mikamonu Group Ltd. | In-memory computational device |
US20150200009A1 (en) * | 2014-01-12 | 2015-07-16 | Mikamonu Group Ltd. | Memory device |
US20150370794A1 (en) * | 2014-06-24 | 2015-12-24 | Infinidat Ltd. | Hash based read and write operations in a storage system |
US20160378828A1 (en) * | 2015-06-23 | 2016-12-29 | Microsoft Technology Licensing, Llc | Bit vector search index using shards |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3851313A (en) * | 1973-02-21 | 1974-11-26 | Texas Instruments Inc | Memory cell for sequentially addressed memory array |
US5295101A (en) * | 1992-01-31 | 1994-03-15 | Texas Instruments Incorporated | Array block level redundancy with steering logic |
US5452244A (en) * | 1994-08-10 | 1995-09-19 | Cirrus Logic, Inc. | Electronic memory and methods for making and using the same |
US5506810A (en) * | 1994-08-16 | 1996-04-09 | Cirrus Logic, Inc. | Dual bank memory and systems using the same |
JP4329238B2 (ja) * | 2000-07-05 | 2009-09-09 | ソニー株式会社 | データストリーム生成装置とその方法、可変長符号化データストリーム生成装置とその方法、カメラシステム |
JP3661594B2 (ja) * | 2001-02-07 | 2005-06-15 | ソニー株式会社 | データストリーム生成装置とその方法、可変長符号化データストリーム生成装置とその方法、および、カメラシステム |
CA2451208A1 (en) * | 2001-06-21 | 2003-01-03 | Paul P. Vagnozzi | Database indexing method and apparatus |
DE60322540D1 (de) * | 2003-10-13 | 2008-09-11 | St Microelectronics Srl | Übertragungsverfahren für eine optische Busleitung |
JP4872282B2 (ja) * | 2005-09-08 | 2012-02-08 | セイコーエプソン株式会社 | 画像表示システム,画像表示方法,画像表示プログラム,記録媒体,データ処理装置,画像表示装置 |
US7499961B2 (en) * | 2006-01-12 | 2009-03-03 | Sun Microsystems, Inc. | Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector |
US7849107B2 (en) * | 2006-05-26 | 2010-12-07 | Symbol Technologies, Inc. | Data format for efficient encoding and access of multiple data items in RFID tags |
US8321485B2 (en) * | 2006-11-08 | 2012-11-27 | Hitachi, Ltd. | Device and method for constructing inverted indexes |
US9026738B2 (en) * | 2009-04-10 | 2015-05-05 | Panasonic Intellectual Property Corporation Of America | Cache memory device, cache memory control method, program and integrated circuit |
US8238173B2 (en) | 2009-07-16 | 2012-08-07 | Zikbit Ltd | Using storage cells to perform computation |
US10832746B2 (en) | 2009-07-16 | 2020-11-10 | Gsi Technology Inc. | Non-volatile in-memory computing device |
US9236881B2 (en) * | 2009-08-07 | 2016-01-12 | Algorhyme A/S | Compression of bitmaps and values |
EP2724269B1 (en) * | 2011-06-27 | 2020-02-19 | Jethrodata Ltd. | System, method and data structure for fast loading, storing and access to huge data sets in real time |
US10248681B2 (en) * | 2014-07-08 | 2019-04-02 | Sap Se | Faster access for compressed time series data: the block index |
CN110335633B (zh) | 2015-05-05 | 2024-01-12 | Gsi科技公司 | Sram多单元操作 |
KR20170034126A (ko) * | 2015-09-18 | 2017-03-28 | 에스케이하이닉스 주식회사 | 고전압 스위치 회로 및 이를 포함하는 반도체 메모리 장치 |
US20210056085A1 (en) * | 2019-08-19 | 2021-02-25 | Gsi Technology Inc. | Deduplication of data via associative similarity search |
-
2017
- 2017-08-30 US US15/690,305 patent/US10956432B2/en active Active
-
2018
- 2018-08-24 KR KR1020180099357A patent/KR102371347B1/ko active IP Right Grant
- 2018-08-29 CN CN201810992966.6A patent/CN110020003A/zh active Pending
-
2021
- 2021-03-02 US US17/189,316 patent/US11860885B2/en active Active
-
2022
- 2022-03-02 KR KR1020220026648A patent/KR20220029645A/ko active Application Filing
-
2023
- 2023-12-17 US US18/542,690 patent/US20240119061A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6278992B1 (en) * | 1997-03-19 | 2001-08-21 | John Andrew Curtis | Search engine using indexing method for storing and retrieving data |
US6505225B1 (en) * | 2000-02-01 | 2003-01-07 | Kabushiki Kaisha Toshiba | Adder logic circuit and processor |
US20110153980A1 (en) * | 2006-03-31 | 2011-06-23 | Kyushu Institute Of Technology | Multi-stage reconfiguration device and reconfiguration method, logic circuit correction device, and reconfigurable multi-stage logic circuit |
US20120198174A1 (en) * | 2011-01-31 | 2012-08-02 | Fusion-Io, Inc. | Apparatus, system, and method for managing eviction of data |
US20130007419A1 (en) * | 2011-04-12 | 2013-01-03 | Texas Instruments Incorporated | Computer implemented method of electing k extreme entries from a list using separate section comparisons |
US20150146491A1 (en) * | 2013-11-28 | 2015-05-28 | Mikamonu Group Ltd. | In-memory computational device |
US20150200009A1 (en) * | 2014-01-12 | 2015-07-16 | Mikamonu Group Ltd. | Memory device |
US20150370794A1 (en) * | 2014-06-24 | 2015-12-24 | Infinidat Ltd. | Hash based read and write operations in a storage system |
US20160378828A1 (en) * | 2015-06-23 | 2016-12-29 | Microsoft Technology Licensing, Llc | Bit vector search index using shards |
Also Published As
Publication number | Publication date |
---|---|
US20190065558A1 (en) | 2019-02-28 |
US20210182289A1 (en) | 2021-06-17 |
KR102371347B1 (ko) | 2022-03-04 |
KR20220029645A (ko) | 2022-03-08 |
US10956432B2 (en) | 2021-03-23 |
KR20190024741A (ko) | 2019-03-08 |
US11860885B2 (en) | 2024-01-02 |
US20240119061A1 (en) | 2024-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5848416A (en) | Method and apparatus for storing and retrieving data and a memory arrangement | |
CN104679778B (zh) | 一种搜索结果的生成方法及装置 | |
Patrascu et al. | Dynamic integer sets with optimal rank, select, and predecessor search | |
CN108351974A (zh) | 在恒定的处理时间内查找k个极值 | |
Luna et al. | Efficient mining of top-k high utility itemsets through genetic algorithms | |
Claude et al. | Space efficient wavelet tree construction | |
Zhang et al. | SUMMA: subgraph matching in massive graphs | |
CN112434031A (zh) | 一种基于信息熵的不确定高效用模式挖掘方法 | |
Puntambekar | Data structures | |
Arge et al. | An optimal cache-oblivious priority queue and its application to graph algorithms | |
CN113919504A (zh) | 信息处理系统、信息处理方法及计算机可读存储介质 | |
CN110020003A (zh) | 对集合的项目的逐一选择 | |
Kumar et al. | Recombinant sort: N-dimensional cartesian spaced algorithm designed from synergetic combination of hashing, bucket, counting and radix sort | |
CN116245146A (zh) | 基于进化条件生成对抗网络的排序学习方法、系统及应用 | |
CN110221986B (zh) | 闪存逻辑物理映射表的排序方法、系统以及其闪存 | |
Yang et al. | Recursive feature selection based on minimum redundancy maximum relevancy | |
CN109918659B (zh) | 一种基于不保留最优个体遗传算法优化词向量的方法 | |
CN107045535A (zh) | 数据库表索引 | |
Bader et al. | ExactMP: An efficient parallel exact solver for phylogenetic tree reconstruction using maximum parsimony | |
McCorkle et al. | Planned tournament selection | |
Küçükpetek et al. | Multilevel graph partitioning: an evolutionary approach | |
CN110019815A (zh) | 利用knn的自然语言处理 | |
Al Aghbari | Classification of categorical and numerical data on selected subset of features | |
Rosen et al. | Information Structures | |
Day et al. | Extended multi-objective fast messy genetic algorithm solving deception problems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |