WO2007004430A1 - データソート処理プログラム、データソート処理方法およびデータソート処理装置 - Google Patents

データソート処理プログラム、データソート処理方法およびデータソート処理装置 Download PDF

Info

Publication number
WO2007004430A1
WO2007004430A1 PCT/JP2006/312468 JP2006312468W WO2007004430A1 WO 2007004430 A1 WO2007004430 A1 WO 2007004430A1 JP 2006312468 W JP2006312468 W JP 2006312468W WO 2007004430 A1 WO2007004430 A1 WO 2007004430A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
node
trie
character
sort processing
Prior art date
Application number
PCT/JP2006/312468
Other languages
English (en)
French (fr)
Inventor
Tatsuya Asai
Seishi Okamoto
Hiroki Arimura
Original Assignee
Fujitsu Limited
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Limited filed Critical Fujitsu Limited
Publication of WO2007004430A1 publication Critical patent/WO2007004430A1/ja
Priority to US12/002,399 priority Critical patent/US8122064B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Definitions

  • the present invention relates to a data sort processing program, a data sort processing method, and a data sort processing device, and more particularly to a data sort processing program, a data sort processing method, and a data sort processing device that sort large-scale data.
  • Conventional data sorting methods include quick sort, bubble sort, and shell sort. Since these data sorting methods require a calculation time exceeding the linear time for the number of data items, when applied to data with a very large number of data items, the calculation time increases and the computing performance of the computer rapidly increases. There is a problem of being evil.
  • This tree structure is a trie structure that can be sorted in linear time (time proportional to the size of the data) for a given data capacity.
  • FIG. 12 is a diagram showing a character string (data) having a plurality of characters in a trie structure.
  • the length in the vertical direction in FIG. 12 is referred to as “depth”, and the length in the left-right direction is referred to as “width”.
  • Tri 90 is made up of one or more nodes (sections), and the first node is called the “root”. A line connecting nodes is called a “branch”. When a given node is called a “parent node”, a node one level lower than the parent node is called a “child node”, and a node that does not have a child node is called a “leaf” (leaf).
  • Tri 90 When searching for characters using Tri 90, start from the root. The root and node have the same number of branches as the character type in Tri 90, and the search You can proceed by simply selecting an inch. In Tri 90, the route has three branches, B, C, and D. For example, if the string is “BACK”, select the B branch first, then select the A branch, then the C branch, and finally the K branch to complete the search.
  • Patent Document 1 Japanese Patent Laid-Open No. 2003-44267
  • Patent Document 2 Japanese Patent No. 2959497
  • the present invention has been made in view of the above points, and a data sort processing program, a data sort processing method, and a data sort capable of performing data sort processing at high speed using a small-capacity memory
  • An object is to provide a processing apparatus.
  • a data sort processing program as shown in FIG. 1 is provided.
  • the computer that executes this data sort processing program has the following functions.
  • the summary order trie creation means 2 creates a summary order trie that stores a common prefix character string that appears more than a certain number of times in the data.
  • the division boundary determining means 3 sets a division boundary between predetermined nodes.
  • the data distribution means 4 distributes the data file into a plurality of data sets based on the division boundary.
  • Summary order trie creation means 2 creates a summary order trie that stores a common prefix string that appears more than a certain number of times in the data. Further, the dividing boundary determining means 3 sets a dividing boundary between predetermined nodes. Further, the data distribution means 4 distributes the data to a plurality of data sets based on the division boundary.
  • the summary order trie creating means is common in the data appearing more than a certain number of times.
  • a summary order trie that stores a prefix character string is created, a partition boundary determining unit sets a partition boundary between predetermined nodes, and a data distribution unit stores the data file into a plurality of data based on the partition boundary.
  • a data sorting method characterized by sorting into sets is provided.
  • the summary order trie creating means creates a summary order trie that stores a common prefix character string that appears more than a certain number of times in the data. Further, the division boundary determining means 3 sets a division boundary between predetermined nodes. Further, the data distribution means 4 distributes the data into a plurality of data sets based on the division boundaries.
  • a common prefix character string that appears more than a certain number of times is stored in a data sort processing device that performs sort processing on a data file having a plurality of data.
  • Summary order trie creating means for creating a summary order trie; division boundary determining means for setting a division boundary between predetermined nodes; data distribution means for distributing the data file to a plurality of data sets based on the division boundary; Have A data sort processing apparatus is provided.
  • the summary order trie creating means creates a summary order trie storing a common prefix character string that appears more than a certain number of times in the data.
  • the division boundary determining means 3 sets a division boundary between predetermined nodes.
  • the data distribution means 4 distributes the data into a plurality of data sets based on the division boundaries.
  • the data sort process can be completed without creating a summary order trie and performing the data sort process without re-merging the data that have been distributed once. Can be simplified, and a high-speed data sorting process can be achieved.
  • the memory capacity can be reduced compared with the case where data is directly sorted.
  • FIG. 1 is a conceptual diagram of the invention applied to the embodiment.
  • FIG. 2 is a diagram illustrating a hardware configuration example of a computer according to the present embodiment.
  • FIG. 3 is a block diagram illustrating functions of a computer.
  • FIG. 4 is a flowchart showing a procedure of data sorting processing.
  • FIG. 5 is a flowchart showing a summary order try routine.
  • FIG. 6 is a flowchart showing a division boundary determination routine.
  • FIG. 7 is a flowchart showing a data distribution routine.
  • FIG. 8 shows a character string file
  • FIG. 9 A conceptual diagram showing a process for constructing a summary order trie.
  • FIG. 10 is a schematic diagram showing data division boundaries using summary order trie.
  • FIG. 11 is a schematic diagram showing data distribution using summary order trie.
  • FIG. 12 is a diagram showing a trie structure of a character string (data) having a plurality of characters.
  • FIG. 1 is a conceptual diagram of the invention applied to the embodiment.
  • the data storage means 1 stores a data file D having a plurality of data Dl,..., D (n).
  • the summary order trie creation means 2 creates a summary order trie when the data file D is input from the data storage means 1 and the growth frequency parameter is input from the growth frequency parameter input means 21.
  • the “trie” is a tree structure constructed by storing information of all input data Dl,..., D (n), and the “summary order trie” is a subtree of the trie. It has the same route as the trie, and stores all data prefixes (common prefix strings) that appear more than a predetermined number of times in the data Dl, ⁇ ' ⁇ ⁇ ( ⁇ ). And, if the child nodes of any parent node are uniquely, for example, alphabet, they are ordered alphabetically, for example, left force right.
  • the summary order trie of the character strings (data) “BAD”, “BACK”, “BADY”, ... creates a node with the character “B” and sets the root number of times (in this example, 3 times) )
  • the node with the character “A” following the node with the character “B” becomes the parent node, and the child node that follows it.
  • “C” and “D” “C” and “D” are created in this order (ordered in a unique direction) when they occur more than a predetermined number of times. It is.
  • the division boundary determining means 3 determines a division boundary that divides between predetermined nodes of the summary order trie. Specifically, the dividing boundary determining means 3 is the data given from the dividing number input means 31. Based on the number of data sets divided and the number of data n, the dividing boundaries of the summarization order trie are determined so that the amount of each data set described later is as even as possible.
  • the data distribution means 4 applies the data Dl, ..., D (n) to the created summary order trie based on the division boundary determined by the division boundary determination means 3, thereby obtaining the data Dl.
  • ..., D (n) is assigned to the data set of the number of data set divisions described above.
  • the sorting data sorting means 5 performs sorting using a predetermined sorting method for each data set.
  • the joining means 6 creates the sorted data by joining the data sets after the sorting by the sorted data sorting means 5 in a unique order.
  • the summary order trie creation means 2 creates a summary order trie. Is done. Then, when the summarization order trie is passed to the partition boundary determination means 3 and the number of data set partitions is input by the partition number input means 31, the partition boundary determination means 3 makes each data set amount as uniform as possible. The dividing boundary of the summary order trie is determined as follows.
  • the data distribution means 4 When the determined dividing boundary and the data Dl, ..., D (n) are passed to the data distribution means 4, the data distribution means 4 generates the data Dl, ..., D (n). Applied to the summary order trie. Then, the data Dl,..., D (n) are distributed to the data sets of the number of data set divisions described above.
  • the distribution data sorting means 5 performs sorting using a predetermined sorting method for each data set.
  • the combining unit 6 When the data set after the sorting is passed to the combining unit 6, the combining unit 6 combines the data sets after the sorting in a unique order, thereby completing the sorting. Completed data is created.
  • FIG. 2 is a diagram illustrating a hardware configuration example of the computer according to the present embodiment.
  • the data sorting program and the data sorting method of the embodiment of the present invention are performed by a computer. This is realized by the data sort processing device 100 configured.
  • the data sort processing device 100 has the following hardware configuration.
  • the data sort processing device 100 is entirely controlled by a CPU (Central Processing Unit) 101.
  • a random access memory (RAM) 102, a hard disk drive (HDD) 103, a graphics processing device 104, and an input interface 105 are connected to the CPU 101 via a bus 10la.
  • At least a part of an OS (Operating System) program application program to be executed by the CPU 101 is temporarily stored in the RAM 102.
  • the RAM 102 stores various data necessary for processing by the CPU 101.
  • the HDD 103 stores an OS, application programs, and the like.
  • a monitor 11 is connected to the graphic processing device 104.
  • the graphic processing device 104 displays an image on the screen of the monitor 11 in accordance with a command from the CPU 101.
  • a keyboard 12 and a mouse 13 are connected to the input counter face 105.
  • the input interface 105 transmits a signal sent from the keyboard 12 or mouse 13 to the CPU 101 via the bus 101a.
  • FIG. 3 is a block diagram illustrating functions of the computer.
  • the HDD 103 stores a character string file X having n character strings XI, ⁇ 2,..., X (n).
  • the data sort processing device 100 includes, as processing functions realized by software, a summary order trie construction unit 110, a division boundary determination unit 120, a character string sorting unit 130, a sorting character string sorting unit 140, and a character string combination It has part 150.
  • the summary order trie construction unit 110 has a variable T representing a summary order trie being created, a variable representing a character to be processed, and a variable V representing a node or route to be controlled.
  • the summary order trie constructing unit 110 also performs the next character in the j (1 ⁇ j ⁇ n) th character string X (j).
  • the function nextchar O that returns the destination node that follows the record a from the node w
  • the summary order trie construction unit 110 reads the character strings XI, ⁇ 2 ⁇ , X (n), and uses the growth frequency parameter oc inputted from the keyboard 12 or the mouse 13 etc., and the variables and functions described above. Create a summary order trie T.
  • the division boundary determination unit 120 returns a packet ID assigned to each node w.
  • the division boundary determination unit 120 receives the number n of character strings and the data set division number ⁇ 8 to which the keyboard 12 and the mouse 13 are also input. Determine the dividing boundary. Specifically, the dividing boundary determination unit 120 adjusts the summarizing order trie T so that the number n of character strings is equally divided (so that the amount of character string data is evenly divided). T1 is created, summary order trie T1 is divided between given nodes, and a bucket ID is assigned to each divided node using the function bucket (w). Note that the packet ID assignment method is not particularly limited as long as each divided node can be identified.
  • the character string sorting unit 130 includes a variable ⁇ 1 representing the current character and a variable vl representing the current node or root.
  • the character string sorting unit 130 includes the above-described function nextchar O, the above-described function goto (w, a), and the above-described function bucket (w).
  • the character string distribution unit 130 creates packets Bl,..., B (m) equal to the number of packet IDs assigned by the division boundary determination unit 120. Then, by applying the string XI, ⁇ 2, ..., X (n) to the summary order trie T1, the string XI, ⁇ 2, ..., X (n) is bucketed according to the HD. Store in Bl, ..., B (m).
  • the sorting character string sorting unit 140 sorts the character string sets Ul,..., U (m), respectively, using a predetermined sorting method.
  • the sorting method is not particularly limited, and examples thereof include a sorting method disclosed in JP-A-2003-44267, a quick sort method, and the like.
  • the character string combining unit 150 uniquely combines the sorted character string sets Ula,..., U (m) a, and outputs the combined data to the monitor 11 as the sorting result.
  • Data sorting is performed by the computer configured as described above.
  • FIG. 4 is a flowchart showing the procedure of the data sorting process. In the following, the process shown in Fig. 4 will be described in order of step number.
  • summary order trie constructing section 110 attempts to read an unread character string (step S11).
  • the summary order trie construction unit 110 determines whether or not all the character strings XI,..., Xn have been read (step S12).
  • step S12 If all character strings have been read (Yes in step S12), the summary order tri structuring unit 110 reads the first character string X (y) (0 Get ⁇ y ⁇ n) and read.
  • summary order trie constructing section 110 sets variable k to 0 (step S13).
  • the summary order trie construction unit 110 increments the variable k (step S14).
  • the summary order trie constructing unit 110 determines whether or not the variable k is larger than the number K of characters of the read character string X (y) (step S 15).
  • step S15 If the variable k is larger than the number of characters K (Yes in step S15), the process proceeds to step S11.
  • step S16 when the variable k is equal to or less than the number of characters K (No in step S15), a summary order trie T is constructed (step S16).
  • step S16 The subroutine of step S16 will be described in detail later.
  • step SI 2 if reading of an unread character string fails in step SI 1, that is, if the summary order trie construction unit 110 reads all character strings XI, ..., X (n) (step (No in SI 2), the division boundary determination unit 120 performs division boundary determination (step S17).
  • step S17 Note that the subroutine of step S17 will be described in detail later.
  • the character string sorting unit 130 attempts to read an unread character string (step S 18).
  • the character string sorting unit 130 determines whether or not it has read all the character strings XI,..., X (n) in the character string file X (step S 19).
  • the character string sorting unit 130 reads the unread character strings XI, ..., X Get the first character string X (y) of (n) and read the first character of the character string X (y).
  • the character string sorting unit 130 sets the variable k to 0 (step S20).
  • the character string sorting unit 130 increments the variable k (step S21). Next, the character string sorting unit 130 determines whether or not the variable k is larger than the number K of characters in the read character string X (y) (step S22).
  • step S22 If the variable k is larger than the number of characters K (Yes in step S22), the process proceeds to step S18.
  • step S23 when the variable k is equal to or less than the number of characters K (No in step S22), the character strings are sorted (step S23).
  • step S23 Note that the subroutine of step S23 will be described in detail later.
  • step S24 Specifically, as described above, the character string set Ul, ⁇ , U (m) is created, and the sorting character string sorting unit 140 sorts the character string set Ul, ⁇ , U (m). The string concatenation unit 150 joins the sorted string sets Ula, ⁇ , U (m) a in this order (uniquely), and sorts the combined data. Is output to the monitor 11. Thereafter, the data sorting process is terminated.
  • FIG. 5 is a flowchart showing the summary order try routine.
  • step S31 initial setting is performed (step S31). Specifically, variable V is set as root and variable
  • step S32 the counter value of the route (node) set in the variable V is incremented (step S32).
  • step S33 it is determined whether or not the counter value of the route (node) set in the variable V is greater than or equal to the growth frequency parameter OC (step S33).
  • step S33 If the counter value is less than the growth frequency parameter a (No in step S33), the process proceeds to step S39.
  • step S34 when the counter value is greater than or equal to the growth frequency parameter a (Yes in step S33), whether the function goto (V, ⁇ ) exists, that is, the root (parent node) force set to the variable V is also It is determined whether or not there is a destination node (child node) that follows the current data (step S34).
  • step S37 If there is a next character (Yes in step S37), the next character in the current character string X (j) is extracted (step S38), and the process proceeds to step S32.
  • Step S39 if there is no next character (No in step S37), there is the next character string X (j + 1) (Step S39).
  • step S39 If there is the next character string X (j + 1) (Yes in step S39), the variable is changed to the next character string X (j
  • FIG. 6 is a flowchart showing the division boundary determination routine.
  • the average number of data D put in each packet Bl,..., B (n) is obtained (step S41).
  • the average number of data D is the value obtained by dividing the number n of character strings XI, ⁇ , X (n) by the number of character set divisions j8.
  • a summary order trie T1 is created (step S42).
  • step S4 the counter value of each node is added for each depth or width of the summary order trie T1, and the node whose value is approximately equal to the average number of data D is defined as a boundary (step S4).
  • step S42 may be performed before the division boundary determination routine.
  • FIG. 7 is a flowchart showing a data distribution routine.
  • initial setting is performed (step S51). Specifically, the variable ⁇ 1 is set to the first character of the character string XI, and the variable vl is set to the root of the summary order try ⁇ .
  • step S52 it is determined whether or not the function goto (vl, ⁇ 1) exists.
  • step S52 When the function goto (vl, ⁇ 1) exists (Yes in step S52), the function goto (vl, ⁇ 1) is executed on the variable vl (step S53).
  • step S54 it is determined whether or not there is a next character in the current character string X (j) (step S54).
  • step S54 If there is a next character (Yes in step S54), the next character in the current character string X (j) is set to the variable ⁇ 1 (step S55), and the process proceeds to step S52.
  • step S54 if the next character is “!” (No in step S54), the process proceeds to step S57.
  • step S52 If the function goto (vl, ⁇ 1) does not exist in step S52 (No in step S52), it is determined whether or not the node set in the variable vl is a leaf node (step S56).
  • step S 56 When the variable vl is set to !, and the node is a leaf node (Yes in step S56), the function bucket (V 1) is assigned to the current string X (j) (step S 57) and step S Move to 59.
  • step S56 when the node set in the variable vl is not a leaf node (No in step S56), the summary sequence try T relates to the node w closest to the leaf node in the current character string X (j). Packet bucket (w) is allocated (step S58), and the process proceeds to step S59.
  • step S59 it is determined whether or not there is a next character string X (j + 1) (step S59).
  • Step S59 If there is the next string X (j + 1) (Yes in step S59), set the variable ⁇ 1 to the first character of the next string X (j + 1) and set the variable vl to the root. (Step S60), the process proceeds to Step S52.
  • step S59 if there is no next character string X (j + 1) (No in step S59), the data distribution routine is terminated.
  • FIG. 8 shows a character string file.
  • Figure 9 is a conceptual diagram showing the process for building a summary order trie.
  • the summary order trie constructing unit 110 acquires the first character string “BEADS” of the character string file X.
  • the summary order trie construction unit 110 sets the route force counter of the summary order trie T to 1, and since it is a route-only trie at this time, the first character " A new node corresponding to “B” is created. Set the counter value of this node to 1. Next, the second character string “CAT” is acquired. As shown in Fig. 9 (b), the counter value of the route is incremented, a node corresponding to the letter “C” is created, and the counter value of that node is set to 1. The same processing is performed for the third character string “DATA”, and a node corresponding to the character “D” is created.
  • the counter value of node “B” is 4, and the counter value of node “B” is greater than or equal to the growth frequency parameter ⁇ . Therefore, as shown in FIG. Create a new node for the second character of “ ⁇ ”, move to the node of the character “ ⁇ ”, and set the counter value of this node “ ⁇ ” to 1.
  • FIG. 10 is a schematic diagram showing a data division boundary using the summary order trie.
  • the counter value 2 of the node with the character “A”, the counter value 2 of the node with the character “E”, and the counter value 6 of the node with the character “B” Therefore, according to the ratio of the counter value of the node of the character “A” and the counter value of the node of the character “E” (1: 1), the counter value of the node of the character “A” and the character “ Add 1 to the counter value of the node “E” to create a similar summary order trie T1.
  • the division boundary determination unit 120 adjusts the combination of counter values so that the total value of one node or each node in the summary order trie T1 is 3 or 4 depending on the calculation result. Determine the partition boundary.
  • a child node for an arbitrary parent node of the summary order trie T1 has a unique directionality. Therefore, the assigned ID number also has a unique direction. That is, the direction in which the ID number increases matches the direction in which the alphabet increases (A ⁇ Z direction).
  • the character string sorting unit 130 scans the character strings XI,..., X10 once again and applies them to the summary order trie T1, thereby matching the corresponding three character strings XI, ',', and 10 Sort to (
  • FIG. 11 is a schematic diagram showing data distribution using summary order trie.
  • the character string sets Ul, U2, and U3 in each packet are sorted for each packet Bl, packet B2, and packet B3 using the existing sorting method.
  • the character string sets Ul, U2, U3 respectively corresponding to the packets Bl, ⁇ 2, ⁇ 3 are stored, and each packet is sorted using a predetermined sorting method.
  • the data sort process can be completed without merging the character sets Ula, U2a, and U3a once sorted, making the data sort process easier be able to.
  • the capacity of data stored in each packet can be adjusted.
  • the number of knotlets Bl,..., B (m) so that the data capacity is even, the creation of packets exceeding the memory capacity can be easily prevented.
  • the sort process of Bl, ..., B (m) even if the capacity of the character string XI, ... It can be performed. As a result, a high-speed data sorting process can be achieved.
  • a character string is used as a sort target.
  • the present invention is not limited to this, and for example, a numerical sequence can be used.
  • the data sort process is performed in the same way as in this embodiment by adding 0 to the beginning of each number so that all the numbers in the sequence have the same number of digits as the number with the most digits. It can be carried out. For example, if the number with the most digits is “11 11”, 61 is “0061”.
  • the above processing functions can be realized by a computer.
  • a data sort processing program describing the processing contents of the functions that the data sort processing apparatus 100 should have is provided.
  • the program describing the processing contents can be recorded on a computer-readable recording medium.
  • Computer readable Possible recording media include magnetic recording devices, optical discs, magneto-optical recording media, semiconductor memories, and the like. Magnetic recording devices include hard disk drives (HDD), flexible disks (FD), and magnetic tapes.
  • Optical disks include DVD (Digital Versatile Disc), DVD—RAM (Random Access Memory), CD—ROM (Compact Disc Read Only Memory), CD—R (Recordable), ZRW (ReWritable), etc. Magneto-optical recording medium. Includes MO (magneto-optical disk).
  • a portable recording medium such as a DVD or a CD-ROM on which the program is recorded is sold. It is also possible to store the program in a storage device of the server computer and transfer the program to other computers via the network.
  • the computer that executes the program stores, for example, a program recorded on a portable recording medium or a server computer-powered program in its own storage device. Then, the computer reads its own storage device power program and executes processing according to the program. The computer can also read the program directly from the portable recording medium and execute processing according to the program. The computer can also execute processing according to the received program sequentially each time the program is transferred to the server computer.
  • Joining means 100 Data sort processor 110 Summarization order trie construction unit 120 Division boundary determination unit 130 Character string sorting unit 140 Sorting character string sorting unit 150 Character string combining unit

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 小容量のメモリを用いて、かつ高速にデータソート処理を行うことができるようにする。  データソート処理プログラムを実行するコンピュータは以下の機能を有する。要約順序トライ作成手段(2)は、ルートを作成し、各データの各文字をそれぞれ順番に読み込み、ルートに接続される所定のノードを過去に通ったデータが所定数あったとき、かつ、所定のノードに関連づけられた文字の次の文字に対応する子ノードが作成されていないときに、所定のノードを共通にする各子ノードが所定の配列となるように子ノードを作成する。分割境界決定手段(3)は、所定のノード間に分割境界を設定する。データ振り分け手段(4)は、分割境界に基づいてデータを複数のデータ集合に振り分ける。

Description

明 細 書
データソート処理プログラム、データソート処理方法およびデータソート処 理装置
技術分野
[0001] 本発明はデータソート処理プログラム、データソート処理方法およびデータソート処 理装置に関し、特に大規模データのソートを行うデータソート処理プログラム、データ ソート処理方法およびデータソート処理装置に関する。
背景技術
[0002] 与えられたデータを、予め定められた順序に並べ替えるデータソート方法が知られ ている。
従来のデータソート方法として、クイックソートやバブルソート、シェルソート等の方 法がある。これらのデータソート方法は、データの件数に対して線形時間を超える計 算時間が必要であるため、件数が非常に多いデータに適用された場合、計算時間が 増大し、コンピュータの演算性能が急激に悪ィ匕するという問題がある。
[0003] この問題を解決するために、唯一の根 (ルート)を持ち閉路を持たない (オープンル ープの)木構造 (グラフ)を用いたデータソート方法が知られて 、る(例えば、特許文 献 1参照)。
[0004] この木構造の 1種として、与えられたデータの容量に対して線形時間(データのサイ ズに比例する時間)でソートすることができるトライ (TRIE)構造がある。
図 12は、複数の文字を有する文字列 (データ)をトライ構造で示した図である。
[0005] なお、以下では、図 12中上下方向の長さを「深さ」、左右方向の長さを「幅」という。
トライ 90は 1つ以上のノード (節)から構成され、特に最初のノードを「ルート」(根)と いう。また、ノードとノードとを結ぶ線を「ブランチ」(枝)という。また、所定のノードを「 親ノード」というとき、親ノードに対して 1つ下位のノードを「子ノード」といい、子ノード を持たないノードを「リーフ」(葉)という。
[0006] トライ 90を用いて文字を探索する場合は、ルートから開始する。ルートおよびノード は、トライ 90内の文字の種類と同じ数のブランチを有し、探索は文字に対応したブラ ンチを選択するだけで進めることができる。トライ 90では、ルートは、 B、 Cおよび Dの 3本のブランチを有している。例えば、文字列が「BACK」ならば、最初に Bのブラン チを選択し、次に Aのブランチ、次に Cのブランチ、最後に Kのブランチを選んで進め ていけば探索が完了する。
[0007] このようなトライ構造を用いた特許文献 1に記載のデータソート方法によれば、巨大 なサイズのデータ (文字列)に適用されても演算性能が急激に悪ィ匕することはない。 しかし、トライ構造は、相異なるデータ (ソートアイテム)のサイズに比例した計算領 域 (主記憶容量)を必要とする (メモリを大量に消費する) 、う欠点を持つ。このため 、文字列の数や文字列の長さが増えると、メモリに収まらなくなってしまい、処理時間 の遅延の原因となる。
[0008] 従って、重複の少ない大規模データのソートや集計に適用されると、計算領域が不 足して極端に演算性能が悪ィ匕する、または、計算が続けられなくなるという問題があ る。
この問題を解決するために、与えられたデータを複数のデータの集合に分割し、そ れぞれのデータの集合に対して既存のソート方法を適用する方法が知られて 、る( 例えば、特許文献 2参照)。
特許文献 1:特開 2003— 44267号公報
特許文献 2:特許第 2959497号公報
発明の開示
発明が解決しょうとする課題
[0009] し力しながら、データを単純に区分けしただけでは、分割して得られる各データ集 合間のデータの順序が定かではないため、これらのデータ集合に対して、さらに、そ れぞれの処理結果を併合するためのデータ処理を行う必要があり、処理を効率良く 行うことができな 、(データ処理のコストが高 、) t 、う問題がある。
[0010] 本発明はこのような点に鑑みてなされたものであり、小容量のメモリを用いて、かつ 高速にデータソート処理を行うことができるデータソート処理プログラム、データソート 処理方法およびデータソート処理装置を提供することを目的とする。
課題を解決するための手段 [0011] 本発明では上記問題を解決するために、図 1に示すようなデータソート処理プログ ラムが提供される。このデータソート処理プログラムを実行するコンピュータは以下の 機能を有する。
[0012] 要約順序トライ作成手段 2は、データに一定回数以上出現する共通接頭文字列を 格納した要約順序トライを作成する。分割境界決定手段 3は、所定のノード間に分割 境界を設定する。データ振り分け手段 4は、分割境界に基づいて、データファイルを 複数のデータ集合に振り分ける。
[0013] このようなデータソート処理プログラムによれば、以下の処理が実行される。要約順 序トライ作成手段 2により、データに一定回数以上出現する共通接頭文字列を格納し た要約順序トライが作成される。また、分割境界決定手段 3により、所定のノード間に 分割境界が設定される。また、データ振り分け手段 4により、分割境界に基づいてデ ータが複数のデータ集合に振り分けられる。
[0014] また、上記課題を解決するために、複数のデータを有するデータファイルに対し、ソ ート処理を行うデータソート処理方法において、要約順序トライ作成手段が、データ に一定回数以上出現する共通接頭文字列を格納した要約順序トライを作成し、分割 境界決定手段が、所定のノード間に分割境界を設定し、データ振り分け手段が、前 記分割境界に基づいて、前記データファイルを複数のデータ集合に振り分ける、こと を特徴とするデータソート処理方法が提供される。
[0015] このようなデータソート処理方法によれば、要約順序トライ作成手段により、データ に一定回数以上出現する共通接頭文字列を格納した要約順序トライが作成される。 また、分割境界決定手段 3により、所定のノード間に分割境界が設定される。また、デ ータ振り分け手段 4により、分割境界に基づいてデータが複数のデータ集合に振り分 けられる。
[0016] また、上記課題を解決するために、複数のデータを有するデータファイルに対し、ソ ート処理を行うデータソート処理装置において、データに一定回数以上出現する共 通接頭文字列を格納した要約順序トライを作成する要約順序トライ作成手段と、所定 のノード間に分割境界を設定する分割境界決定手段と、前記分割境界に基づいて、 前記データファイルを複数のデータ集合に振り分けるデータ振り分け手段と、を有す ることを特徴とするデータソート処理装置が提供される。
[0017] このようなデータソート処理装置によれば、要約順序トライ作成手段により、データ に一定回数以上出現する共通接頭文字列を格納した要約順序トライが作成される。 また、分割境界決定手段 3により、所定のノード間に分割境界が設定される。また、デ ータ振り分け手段 4により、分割境界に基づいてデータが複数のデータ集合に振り分 けられる。
発明の効果
[0018] 本発明によれば、要約順序トライを作成してデータソート処理を行うことによって、一 度振り分けたデータを再度併合することなくデータソート処理を完了させることができ るため、データソート処理を簡易なものとすることができ、また、データソート処理の高 速ィ匕を図ることができる。
[0019] また、データを複数のデータ集合に振り分け、このデータ集合をソートすることにより
、データを直接ソートする場合に比べてメモリの省容量ィ匕を図ることができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施 の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
図面の簡単な説明
[0020] [図 1]実施の形態に適用される発明の概念図である。
[図 2]本実施の形態のコンピュータのハードウェア構成例を示す図である。
[図 3]コンピュータの機能を示すブロック図である。
[図 4]データソート処理の手順を示すフローチャートである。
[図 5]要約順序トライルーチンを示すフローチャートである。
[図 6]分割境界決定ルーチンを示すフローチャートである。
[図 7]データの振り分けルーチンを示すフローチャートである。
[図 8]文字列ファイルを表す図である。
[図 9]要約順序トライを構築する際の課程を示す概念図である。
[図 10]要約順序トライを用いたデータ分割境界を示す概要図である。
[図 11]要約順序トライを用いたデータ振り分けを示す概要図である。
[図 12]複数の文字を有する文字列 (データ)をトライ構造で示した図である。 発明を実施するための最良の形態
[0021] 以下、本発明の実施の形態を図面を参照して詳細に説明する。
まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態 の具体的な内容を説明する。
[0022] 図 1は、実施の形態に適用される発明の概念図である。
データ記憶手段 1は、複数のデータ Dl、 · · ·、 D (n)を有するデータファイル Dを格 納する。
[0023] 要約順序トライ作成手段 2は、データ記憶手段 1からデータファイル Dが入力され、 成長頻度パラメータ入力手段 21から成長頻度パラメータが入力されると、要約順序ト ライを作成する。
[0024] なお、成長頻度パラメータについては後に詳述する。
ところで「トライ」とは、入力された全てのデータ Dl、 · · ·、 D (n)の情報を格納して構 築される木構造であり、「要約順序トライ」とは、トライの部分木構造になっており、トラ ィと同一のルートを有し、データ Dl、 · ' ·ϋ (η)のうち、所定回数以上出現するデータ の接頭辞 (共通接頭文字列)をすベて格納し、かつ、任意の親ノードの子ノードが、 一意に、例えばアルファべットであれば、アルファべット順に例えば左力 右へ順序 付けられて 、るものである。
[0025] 例えば、文字列(データ)「BAD」、「BACK」、「BADY」、 · · ·の要約順序トライは、 文字「B」のノードを作成し、ルート所定回数 (この例では 3回)以上出現し共通する文 字「A」のノードが作成され、さらに全てのデータを格納したときに、文字「B」のノード に続く文字「A」のノードを親ノードとし、それに続く子ノード (この例では「C」および「 D」)が、所定回数以上出現したときに、「C」、「D」が、この順番に(一意な方向に順 序付けられて)作成された木構造である。
[0026] この要約順序トライによれば、データが多い部分の構造が深くなり、データが少ない 部分の構造が浅くなるため、データの重要な部分の情報を失うことなく構造が簡素化 される。
[0027] 分割境界決定手段 3は、要約順序トライの所定のノード間を分割する分割境界を決 定する。具体的には、分割境界決定手段 3は、分割数入力手段 31から与えられるデ ータ集合分割数およびデータのデータ数 nに基づ ヽて、後述する各データ集合量が 可及的に均等になるように要約順序トライの分割境界を決定する。
[0028] データ振り分け手段 4は、分割境界決定手段 3により決定された分割境界に基づい て、データ Dl、 · · ·、 D (n)を作成された要約順序トライに当てはめることにより、デー タ Dl、 · · ·、 D (n)を前述したデータ集合分割数のデータ集合に振り分ける。
[0029] 振り分けデータソート手段 5は、データ集合毎に、所定のソート方法を用いてソート を行う。
結合手段 6は、振り分けデータソート手段 5によってソートが行われた後のデータ集 合を一意な順序で結合することにより、ソートが完了したデータを作成する。
[0030] これにより、データ記憶手段 1からデータファイル Dが入力され、成長頻度パラメ一 タ入力手段 21から成長頻度パラメータが入力されると、要約順序トライ作成手段 2に より、要約順序トライが作成される。そして、要約順序トライが分割境界決定手段 3に 渡され、分割数入力手段 31によりデータ集合分割数が入力されると、分割境界決定 手段 3により、各データ集合量が、可及的に均等になるように要約順序トライの分割 境界が決定される。
[0031] 決定された分割境界およびデータ Dl、 · · ·、 D (n)がデータ振り分け手段 4に渡さ れると、データ振り分け手段 4により、データ Dl、 · · ·、 D (n)が作成された要約順序ト ライに当てはめられる。そして、データ Dl、 · · ·、 D (n)が前述したデータ集合分割数 のデータ集合に振り分けられる。
[0032] データ集合分割数のデータ集合が振り分けデータソート手段 5に渡されると、振り分 けデータソート手段 5により、データ集合毎に、所定のソート方法を用いてソートが行 われる。
[0033] このソートが行われた後のデータ集合が結合手段 6に渡されると、結合手段 6により 、ソートが行われた後のデータ集合が一意な順序で結合されることにより、ソートが完 了したデータが作成される。
[0034] 以下、本発明の実施の形態を具体的に説明する。
図 2は、本実施の形態のコンピュータのハードウェア構成例を示す図である。本発 明の実施の形態のデータソートプログラムおよびデータソート方法は、コンピュータで 構成されるデータソート処理装置 100により実現される。
[0035] データソート処理装置 100は、以下の様なハードウェア構成を有している。
データソート処理装置 100は、 CPU (Central Processing Unit) 101によって装置全 体が制御されている。 CPU101には、バス 10 laを介して RAM (Random Access Me mory) 102、ハードディスクドライブ(HDD:Hard Disk Drive) 103、グラフィック処理装 置 104および入力インタフェース 105が接続されている。
[0036] RAM102には、 CPU101に実行させる OS (Operating System)のプログラムゃァ プリケーシヨンプログラムの少なくとも一部が一時的に格納される。また、 RAM102に は、 CPU101による処理に必要な各種データが格納される。また、 HDD103には、 OSやアプリケーションプログラム等が格納される。
[0037] グラフィック処理装置 104には、モニタ 11が接続されている。グラフィック処理装置 1 04は、 CPU101からの命令に従って、画像をモニタ 11の画面に表示させる。入カイ ンタフェース 105には、キーボード 12とマウス 13とが接続されている。入力インタフエ ース 105は、キーボード 12やマウス 13から送られてくる信号を、バス 101aを介して C PU 101に送信する。
[0038] 以上のようなハードウェア構成によって、本実施の形態の処理機能を実現すること ができる。
以下、図 2に示す構成のデータソート処理装置 100における本実施の形態のデー タソートの処理について詳細に説明する。
[0039] 図 3は、コンピュータの機能を示すブロック図である。
HDD103には、 n個の文字列 XI、 Χ2· · ·、 X(n)を有する文字列ファイル Xが格納 されている。
[0040] データソート処理装置 100は、ソフトウェアによって実現される処理機能として、要 約順序トライ構築部 110、分割境界決定部 120、文字列振り分け部 130、振り分け文 字列ソート部 140および文字列結合部 150を有して 、る。
[0041] 要約順序トライ構築部 110は、作成中の要約順序トライを表す変数 Tと、処理対象 の文字を表す変数えと、制御対象のノードまたはルートを表す変数 Vとを有している。 また、要約順序トライ構築部 110は、 j (1≤j≤n)番目の文字列 X(j)内の次の文字 を取り出す関数 nextchar Oと、ノード wからレコード aをたどる移動先のノードを返す 関数 goto (w, a)と、関数 goto (w, a) = zを満たし、さらに zが要約順序トライ T内で 文字 aに対して一意な順番に位置するよう、要約順序トライ Tにノード zを追加する関 数(戻り値なし) make (w,a,z)と、ノード wのカウンタ値を返す関数 count (w)とを有し ている。
[0042] 例えば、 j番目の文字列 X (j)が「BE」であり、現在の文字が「B」であるとき、関数 ne xtchar ()が実行されると、次の文字「E」が取り出される。
要約順序トライ構築部 110は、文字列 XI、 Χ2 · · ·、 X (n)を読み込み、キーボード 1 2やマウス 13等から入力される成長頻度パラメータ ocと、前述した変数および関数と を用いて要約順序トライ Tを作成する。
[0043] 分割境界決定部 120は、各ノード wに割り当てられたパケット IDを返す関数 bucket
(w)を有している。分割境界決定部 120は、要約順序トライ構築部 110から要約順序 トライ Tが送られると、文字列の個数 nと、キーボード 12やマウス 13等力も入力される データ集合分割数 ι8とに基づいて、分割境界を決定する。具体的には、分割境界決 定部 120は、文字列の個数 nが均等に分割されるように (文字列データ量が均等に 分割されるように)要約順序トライ Tを調整した要約順序トライ T1を作成し、要約順序 トライ T1を所定のノード間で分割し、関数 bucket (w)を用いて分割した各ノードにバ ケット IDを割り当てる。なお、このパケット IDの割り当て方法は、分割した各ノードを判 別できるものであれば特に限定されな 、。
[0044] 文字列振り分け部 130は、現在の文字を表す変数 λ 1と、現在のノードまたはルー トを表す変数 vlとを有して 、る。
また、文字列振り分け部 130は、前述した関数 nextchar Oと、前述した関数 goto( w,a)と、前述した関数 bucket (w)とを有している。
[0045] 文字列振り分け部 130は、分割境界決定部 120によって割り当てられたパケット ID の個数と等しいパケット Bl、 · · ·、 B (m)を作成する。そして、文字列 XI、 Χ2、 · · ·、 X (n)を要約順序トライ T1に当てはめることにより、文字列 XI、 Χ2、 · · ·、 X (n)をバケ ッ HDに従って、それぞれ対応するパケット Bl、 · · ·、 B (m)に格納する。
[0046] ここで、ノケット Bl、 · · ·、 B (m)内に格納される文字列をそれぞれ、文字列集合 U 1、 · · ·、 U (m)とすると、振り分け文字列ソート部 140は、所定のソート方法を用いて 、それぞれ文字列集合 Ul、 · · ·、 U (m)のソートを行う。
[0047] このソート方法としては特に限定されないが、例えば、特開 2003— 44267号公報 に開示されているソート方法や、クイックソート方法等が挙げられる。
文字列結合部 150は、ソートが完了した文字列集合 Ula、 · · ·、 U (m) aを、一意に 結合して、その結合されたデータをソート結果としてモニタ 11に出力する。
[0048] 以上のような構成のコンピュータによってデータソートが行われる。
次に、データソート処理装置 100を用いたデータソート処理を詳細に説明する。 図 4は、データソート処理の手順を示すフローチャートである。以下、図 4に示す処 理をステップ番号に沿って説明する。
[0049] まず、要約順序トライ構築部 110は、未読の文字列の読み込みを試みる (ステップ S 11)。
次に、要約順序トライ構築部 110は、全ての文字列 XI、 · · ·、 Xnを読み込んだか 否かを判断する (ステップ S 12)。
[0050] 全ての文字列を読み込んで 、な 、場合は (ステップ S 12の Yes)、要約順序トライ構 築部 110は、未読の文字列のうちの最先の文字列 X(y) (0≤y<n)を取得し、読み 込む。
[0051] 次に、要約順序トライ構築部 110は、変数 kを 0にセットする (ステップ S13)。
次に、要約順序トライ構築部 110は、変数 kをインクリメントする (ステップ S14)。
[0052] 次に、要約順序トライ構築部 110は、変数 kが、読み込んだ文字列 X(y)の文字数 Kより大き 、か否かを判断する (ステップ S 15)。
変数 kが、文字数 Kより大きい場合は (ステップ S15の Yes)、ステップ S11に移行す る。
[0053] 一方、変数 kが文字数 K以下のときは (ステップ S15の No)、要約順序トライ Tの構 築を行う(ステップ S 16)。
なお、ステップ S16のサブルーチンについては後に詳述する。
[0054] ところで、ステップ SI 1で未読の文字列の読み込みに失敗した場合、すなわち要約 順序トライ構築部 110が全ての文字列 XI、 · · ·、 X(n)を読み込んだ場合は (ステップ SI 2の No)、分割境界決定部 120は、分割境界決定を行う(ステップ S17)。
[0055] なお、ステップ S17のサブルーチンについては後に詳述する。
次に、文字列振り分け部 130は、未読の文字列の読み込みを試みる (ステップ S 18
) o
[0056] 次に、文字列振り分け部 130は、文字列ファイル X内の全ての文字列 XI、 · · ·、 X( n)を読み込んだ力否かを判断する (ステップ S 19)。
全ての文字列 XI、 · · ·、 X (n)を読み込んで!/ヽな 、場合は (ステップ S 19の Yes)、 文字列振り分け部 130は、未読の文字列 XI、 · · ·、 X(n)のうちの最先の文字列 X(y )を取得し、その文字列 X(y)の最初の文字を読み込む。
[0057] 次に、文字列振り分け部 130は、変数 kを 0にセットする (ステップ S20)。
次に、文字列振り分け部 130は、変数 kをインクリメントする (ステップ S21)。 次に、文字列振り分け部 130は、変数 kが、読み込んだ文字列 X(y)の文字数 Kより 大き ヽか否かを判断する (ステップ S22)。
[0058] 変数 kが、文字数 Kより大きい場合は (ステップ S22の Yes)、ステップ S18に移行す る。
一方、変数 kが文字数 K以下のときは (ステップ S22の No)、文字列の振り分けを行 う(ステップ S 23)。
[0059] なお、ステップ S23のサブルーチンについては後に詳述する。
ところで、ステップ S 18で、未読の文字列の読み込みに失敗した場合、すなわち、 全ての文字列 XI、 · · ·、 X(n)を読み込んだ場合は (ステップ S 19の No)、最終処理 を行う(ステップ S24)。具体的には、前述したように、文字列集合 Ul、 · · ·、 U (m)を 作成し、振り分け文字列ソート部 140が、文字列集合 Ul、 · · ·、 U (m)のソートを行い 、文字列結合部 150が、ソートが完了した文字列集合 Ula、 · · ·、 U (m) aを、この順 番に(一意に)結合して、その結合されたデータをソート結果としてモニタ 11に出力す る。その後、データソート処理を終了する。
[0060] 次に、要約順序トライルーチンについて説明する。
図 5は、要約順序トライルーチンを示すフローチャートである。
以下、図 5に示す処理をステップ番号に沿って説明する。 [0061] なお、要約順序トライルーチンの動作は、特に記載がな 、場合は、要約順序トライ 構築部 110で行われる。
まず、初期設定を行う (ステップ S31)。具体的には、変数 Vをルートに設定し、変数
Tをルート Vのみのトライに設定し、変数えを文字列 XIの先頭文字に設定し、関数 co unt (v) =0に設定する。
[0062] 次に、変数 Vに設定されて 、るルート(ノード)のカウンタ値をインクリメントする (ステ ップ S32)。
次に、変数 Vに設定されているルート(ノード)のカウンタ値が成長頻度パラメータ OC 以上か否かを判断する (ステップ S33)。
[0063] カウンタ値が成長頻度パラメータ a未満のときは (ステップ S33の No)、ステップ S3 9に移行する。
一方、カウンタ値が成長頻度パラメータ a以上のときは (ステップ S33の Yes)、関数 goto (V, λ )が存在するか否か、すなわち、変数 Vに設定されて 、るルート (親ノード) 力も現在のデータをたどる移動先のノード (子ノード)が存在するか否かを判断する( ステップ S 34)。
[0064] 関数 goto (V, λ )が存在するときは(ステップ S34の Yes)、ステップ S36に移行す る。一方、関数 goto (V, λ )が存在しないときは(ステップ S34の No)、関数 make (V , λ , w)を実行して新たなノード wを作成し、関数 count (w) =0に設定する (ステツ プ S35)。
[0065] 次に、 v=goto (ν, λ )を実行し、実行対象 (制御対象)のノードを移動先のノードと し、その移動先の変数 Vに設定されているノードのカウンタ値をインクリメントする (ステ ップ S36)。
[0066] 次に、現在の文字列 X(j)の次の文字がある力否力 すなわち現在の文字列 X (j) の全ての文字に対して要約順序トライルーチンを実行した力否かを確認する (ステツ プ S37)。
[0067] 次の文字がある場合は (ステップ S37の Yes)、現在の文字列 X(j)内の次の文字を 取り出し (ステップ S38)、ステップ S32に移行する。
一方、次の文字がない場合は、(ステップ S37の No)、次の文字列 X (j + 1)がある か否かを判断する (ステップ S39)。
[0068] 次の文字列 X(j + 1)がある場合は (ステップ S39の Yes)、変数えを次の文字列 X(j
+ 1)の先頭の文字に設定し、ステップ S32に移行する(ステップ S40)。
一方、次の文字列 X(j + 1)が存在しない場合は (ステップ S39の No)、要約順序ト ライルーチンを終了する。
[0069] 次に、分割境界決定ルーチンについて説明する。
図 6は、分割境界決定ルーチンを示すフローチャートである。
以下、図 6に示す処理をステップ番号に沿って説明する。
[0070] なお、分割境界決定ルーチンの動作は、特に記載がな!、場合は、分割境界決定 部 120で行われる。
まず、各パケット Bl、 · · ·、 B (n)に入れる平均データ数 D を求める(ステップ S41
AVE
)。具体的には、文字列 XI、 · · ·、 X(n)の個数 nを、与えられる文字集合分割数 j8で 割った値を平均データ数 D とする。
AVE
[0071] 次に、要約順序トライ Tの各子ノードのカウンタ値の和力 親ノードのカウンタ値と等 しいか否かを確認し、各子ノードのカウンタ値の和力 親ノードのカウンタ値と等しくな いときは、各子ノードのカウンタ値の比率に応じて、各子ノードのカウンタ値の和が、 親ノードのカウンタ値と等しくなるように、各子ノードのカウンタ値を調整し、近似的な 要約順序トライ T1を作成する (ステップ S42)。
[0072] 次に、要約順序トライ T1の深さ毎または幅毎に各ノードのカウンタ値を足し合わせ て 、き、その値が平均データ数 D に略等しくなつたノードを境界とする (ステップ S4
AVE
3)。
[0073] 次に、要約順序トライ T1を探索し、境界に設定されたノードの前後で値を変えた ID を、変数 Vに設定されているノードに対して与える関数 bucket (V)を決定する (ステツ プ S44)。
[0074] その後、分割境界決定ルーチンを終了する。
なお、ステップ S42のカウンタ値の調整は、分割境界決定ルーチンの前の段階で 行ってもよい。
[0075] 次に、データの振り分けルーチンについて説明する。 図 7は、データの振り分けルーチンを示すフローチャートである。
以下、図 7に示す処理をステップ番号に沿って説明する。
[0076] なお、データの振り分けルーチンの動作は、特に記載がな!、場合は、文字列振り分 け部 130で行われる。
まず、初期設定を行う(ステップ S51)。具体的には、変数 λ 1を文字列 XIの先頭 文字に設定し、変数 vlを要約順序トライ Τのルートに設定する。
[0077] 次に、関数 goto (vl, λ 1)が存在するか否かを判断する (ステップ S52)。
関数 goto (vl, λ 1)が存在するときは (ステップ S52の Yes)、変数 vlに対して関 数 goto (vl, λ 1)を実行する (ステップ S53)。
[0078] 次に、現在の文字列 X(j)内に次の文字がある力否かを判断する (ステップ S54)。
次の文字がある場合は (ステップ S54の Yes)、現在の文字列 X(j)内の次の文字を 変数 λ 1に設定し (ステップ S55)、ステップ S52に移行する。
[0079] 一方、次の文字がな!、場合は (ステップ S54の No)、ステップ S57に移行する。
また、ステップ S52で関数 goto (vl, λ 1)が存在しないときは(ステップ S52の No) 、変数 vlに設定されているノードがリーフノードか否かを判断する (ステップ S56)。
[0080] 変数 vlに設定されて!、るノードがリーフノードのとき(ステップ S56の Yes)、現在の 文字列 X (j )に関数 bucket (V 1 )を割り当てて (ステップ S 57)ステップ S 59に移行す る。
[0081] 一方、変数 vlに設定されているノードがリーフノードでないとき (ステップ S56の No )要約順序トライ Tに現在の文字列 X(j)の、リーフノード側に一番近いノード wに関す るパケット bucket (w)を割り当てて(ステップ S58)、ステップ S59に移行する。
[0082] 次に、次の文字列 X(j + 1)があるか否かを判断する (ステップ S59)。
次の文字列 X(j + 1)がある場合は (ステップ S59の Yes)、変数 λ 1を次の文字列 X (j + 1)の先頭の文字に設定し、変数 vlをルートに設定し (ステップ S60)、ステップ S 52に移行する。
[0083] 一方、次の文字列 X(j + 1)がない場合は (ステップ S59の No)、データの振り分け ルーチンを終了する。
図 8〜図 11は、データソート処理を具体的に示す概念図である。 [0084] 図 8は、文字列ファイルを表す図である。
図 8に示すように、文字列ファイル Xには、上力も順番に 10個の文字列 XI、 · · ·、 X 10 =く BEADSゝ CAT, DATA, BAD, BEA、 BACKゝ DAT, BADYゝ CAKE, BEAR >が格納されて 、る。
[0085] 以下では、文字列ファイル Xのデータソート処理について説明する。
図 9は、要約順序トライを構築する際の課程を示す概念図である。
なお、図 9中の紙面上、右側を「右」、左側を「左」という。
[0086] また、成長頻度パラメータひ = 3、文字集合分割数 β = 3とする。
まず、要約順序トライ構築部 110は、文字列ファイル Xの最初の文字列「BEADS」 を取得する。
[0087] 図 9 (a)に示すように、要約順序トライ構築部 110は、要約順序トライ Tのルートの力 ゥンタを 1にセットし、現時点ではルートのみのトライであるので、最初の文字「B」に対 応するノードを新たに作成する。このノードのカウンタ値を 1にセットする。次に、 2番 目の文字列「CAT」を取得する。図 9 (b)に示すように、ルートのカウンタ値をインクリ メントし、文字「C」に対応するノードを作成して、そのノードのカウンタ値を 1にセットす る。 3番目の文字列「DATA」についても、同様の処理を行い文字「D」に対応するノ ードを作成する。ここで、最初の文字「B」に対して右側に「C」に対応するノードを作 成したので、これらのアルファベットに一意な方向性 (Α、 Β、 · · ·Υ、 Ζ)を持たせるた め、文字「D」に対応するノードは、文字「C」の右側に作成する。
[0088] 次に、 4番目の文字列「BAD」を読み込んだとき、前に文字列「BEADS」を読み込 んだときに既に文字「B」に対するノードが作成されているため、この文字「B」のノード に移動して、この文字「B」のノード(現在のノード)のカウンタ値(以下ノード「B」のカウ ンタ値ともいう)をインクリメントする。この結果、ノード「B」のカウンタ値は 2になる。
[0089] 次に、 5番目の文字列「BEA」を読み込んだとき、ノード「B」のカウンタ値をインクリメ ントする。その結果、ノード「B」のカウンタ値は 3となり、成長頻度パラメータ αと等しく なるので、図 9 (c)に示すように、現在の文字列「ΒΕΑ」の 2番目の文字「Ε」に関する ノードを新たに作成し、文字「Ε」のノードに移動して、このノード「Ε」のカウンタ値を 1 にセットする。 [0090] 次に、 6番目の文字列「BACK」を読み込んだとき、ノード「B」のカウンタ値をインク リメントする。その結果、ノード「B」のカウンタ値は 4になり、ノード「B」のカウンタ値が 成長頻度パラメータ α以上になるため、図 9 (d)に示すように、現在の文字列「BAC K」の 2番目の文字「Α」に関するノードを新たに作成し、文字「Α」のノードに移動して 、このノード「Α」のカウンタ値を 1にセットする。
[0091] 以上の操作を、最後の文字列「BEAR」まで繰り返して行うことにより、図 9 (e)に示 すように、最終的な要約順序トライ Tが完成する。
次に、完成した要約順序トライ Tを用いて、入力データの分割境界を決定する。
[0092] 図 10は、要約順序トライを用いたデータ分割境界を示す概要図である。
分割境界決定部 120は、データ集合分割数 j8 = 3と、入力データ件数 N = 10との 演算、 NZ J8 = 3. 333 · · ·を実行する。
[0093] 次に、図 10 (a)に示すように、文字「A」のノードのカウンタ値 2、文字「E」のノードの カウンタ値 2と、文字「B」のノードのカウンタ値 6との調整を行うため、文字「A」のノー ドのカウンタ値および文字「E」のノードのカウンタ値の比率(1: 1)に応じて、それぞれ 文字「A」のノードのカウンタ値および文字「E」のノードのカウンタ値に 1を加算し、近 似的な要約順序トライ T1を作成する。
[0094] 次に、分割境界決定部 120は、演算結果により要約順序トライ T1内の 1つのノード または各ノードの合計値が 3または 4となるようにカウンタ値の組み合わせを調節する こと〖こよって、分割境界を決定する。
[0095] なお、ここでは、要約順序トライ T1の最下位の子ノードのカウンタ値、すなわち、文 字「A」、文字「E」、文字「C」、文字「D」のノードのカウンタ値の組み合わせを調節す る。
[0096] 具体的には、文字「C」のノードのカウンタ値および文字「D」のノードのカウンタ値の 和が 2 + 2=4であるため、文字「A」のノードと文字「E」のノードとの間、文字「B」のノ ードと文字「C」および文字「D」のノードとの間で分割すると判断し、これらの間に境 界線を引き、文字「A」のノードに ID= 1、文字「E」のノードに ID = 2、文字「C」および 文字「D」のノードに ID = 3を割り当てる。
[0097] ここで、要約順序トライ T1の、任意の親ノードに対する子ノードが、一意な方向性を 有しているため、割り当てられる IDのナンバーも一意な方向性を有する。すなわち、 I Dナンバーの増加する方向と、アルファベットの増加する方向(A→Zの方向)とが一 致する。
[0098] 次に、文字列振り分け部 130は、文字列 XI、 · · ·、 X10をもう一度スキャンして要約 順序トライ T1へ当てはめることにより、文字列 XI、 ','、 10を対応する3個(|8個)の パケットに振り分ける。
[0099] 図 11は、要約順序トライを用いたデータ振り分けを示す概要図である。
まず、 1番目のデータ「BEADS」を取得し、要約順序トライ T1の上を移動させる。「 BE」まで読んだところで移動先のノードがなくなるので、分割決定段階で割り振られ たノード「E」の IDを参照する。その結果、 ID = 2であることが分かるので、データ「BE ADS Jは 2番目のパケット B2に格納される。次に 2番目のデータ「CAT」を取得する。 同様にして要約順序トライ Tの上を移動させると、 1文字目「c」で移動先のノードが無 くなる。このノードの ID= 3であるので、データ「CAT」は 3番目のパケット B3に格納さ れる。以下、同様の処理を続けることにより、 10個の文字列 XI、 · ' ·、Χ10=く BEA DSゝ CAT, DATA, BAD, BEA、 BACKゝ DAT, BADYゝ CAKE, BEAR>は、 次のように 3分割される。パケット B1 :文字列集合 U1 = < BAD、 BACK, BADY> 、パケット B2 :文字列集合 U2= < BEADS、 BEA、 BEAR>、パケット B3 :文字列 集合 U3 =く CAT、 DATA, DAT, CAKE>。
[0100] さらに、既存のソート方法を用いてパケット Bl、パケット B2およびパケット B3毎に各 パケット内の文字列集合 Ul、 U2、 U3を、それぞれソートする。ソート結果の文字列 集合 Ula、 U2a、 U3aは、 Ulaから U3aに向かって一意な方向性をもつ 3つの文字 列集合 Ula= < BACK、 BAD, BADY>、文字列集合 U2a= < BEA、 BEADS, BEAR>、文字列集合 U3a= < CAKE, CAT, DAT, DATA >となる。
[0101] そして、文字列集合 Ulaと U2aと U3aとをこの順番で積み重ねることにより、文字列 XI、 · · ·、 X10= < BEADS、 CAT, DATA, BAD, BEA、 BACK, DAT, BAD Y、 CAKE, BEAR>のソート結果である U= < BACK、 BAD, BADY, BEA、 BE ADS、 BEAR, CAKE, CAT, DAT, DATA >が得られる。
[0102] 以上述べたように、データソート処理装置 100によれば、データの重要な部分の情 報を失うことなく構造が簡素化された要約順序トライ Tを作成することにより、メモリ (R AM102)の省容量ィ匕が図れ、データソート処理を簡易なものにすることができる。
[0103] また、パケット Bl、 Β2、 Β3にそれぞれ該当する文字列集合 Ul、 U2、 U3を格納し 、所定のソート方法を用いて各パケットのソートを行い、ソートが完了した文字列集合 Ula、 U2a、 U3aを、一意に結合することにより、一度振り分けた文字列集合 Ula、 U2a、 U3aを再度併合することなくデータソート処理を完了させることができるため、 データソート処理をより簡易なものとすることができる。また、与えられた RAM102の 容量に応じてパケット Bl、 · · ·、 B (m)の個数を調整することにより、各パケットに格納 されるデータの容量を調節することができる。特に、データの容量が均等になるように 、 ノケット Bl、 · · ·、 B (m)の個数を調整することにより、メモリの容量を超えるパケット の作成を容易に防止することができ、ノ ケット Bl、 · · ·、 B (m)のソート処理において は、処理する文字列 XI、 · · ·、 X(n)の容量が大きなものであっても、再度 HDD103 にアクセスすることなくデータソート処理を行うことができる。これによりデータソート処 理の高速ィ匕を図ることができる。
[0104] また、得られた要約順序トライ Tから近似的な要約順序トライ T1を作成することによ り、さらに処理の高速化と、使用するメモリの少領域ィ匕を図ることができる。
以上本発明の好適な実施の形態について詳述した力 本発明は、その特定の実 施の形態に限定されるものではない。
[0105] 例えば、上記の説明ではソート対象として文字列を用いたが、これに限らず、例え ば、数列を用いることもできる。この場合、数列内の全ての数字が、最も桁数の多い 数字と同じ桁数となるように、数字の先頭に、それぞれ、 0をつけることで本実施の形 態と同様にデータソート処理を行うことができる。例えば、最も桁数の多い数字が「11 11」の場合、 61は「0061」とする。
[0106] なお、上記の処理機能は、コンピュータによって実現することができる。その場合、 データソート処理装置 100が有すべき機能の処理内容を記述したデータソート処理 プログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処 理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンビユー タで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可 能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ 等がある。磁気記録装置には、ハードディスク装置 (HDD)、フレキシブルディスク (F D)、磁気テープ等がある。光ディスクには、 DVD (Digital Versatile Disc)、 DVD— R AM (Random Access Memory)、 CD— ROM (Compact Disc Read Only Memory;、 CD— R(Recordable) ZRW(ReWritable)等がある。光磁気記録媒体には、 MO (Ma gneto— Optical disk)等がめる。
[0107] プログラムを流通させる場合には、たとえば、そのプログラムが記録された DVD、 C D— ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータ の記憶装置に格納しておき、ネットワークを介して、サーバコンピュータ力 他のコン ピュータにそのプログラムを転送することもできる。
[0108] プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプロ グラムもしくはサーバコンピュータ力 転送されたプログラムを、 自己の記憶装置に格 納する。そして、コンピュータは、自己の記憶装置力 プログラムを読み取り、プロダラ ムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログ ラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンビュ ータは、サーバコンピュータ力もプログラムが転送される毎に、逐次、受け取ったプロ グラムに従った処理を実行することもできる。
[0109] 上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が 当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用 例に限定されるものではなぐ対応するすべての変形例および均等物は、添付の請 求項およびその均等物による本発明の範囲とみなされる。
符号の説明
[0110] 1 データ記憶手段
2 要約順序トライ作成手段
3 分割境界決定手段
4 データ振り分け手段
5 振り分けデータソート手段
6 結合手段 100 データソート処理装置 110 要約順序トライ構築部 120 分割境界決定部 130 文字列振り分け部 140 振り分け文字列ソート部 150 文字列結合部
T、T1 要約順序トライ

Claims

請求の範囲
[1] 複数のデータを有するデータファイルに対し、ソート処理を行うデータソート処理プ ログラムにおいて、
コンピュータを、
データに一定回数以上出現する共通接頭文字列を一意な順序で格納した要約順 序トライを作成する要約順序トライ作成手段、
所定のノード間に分割境界を設定する分割境界決定手段、
前記分割境界に基づ 、て、前記データファイルを複数のデータ集合に振り分ける データ振り分け手段、
として機能させることを特徴とするデータソート処理プログラム。
[2] 前記要約順序トライ作成手段は、ルートを作成し、前記各データの各文字をそれぞ れ順番に読み込み、前記ルートに接続される前記ノードを過去に通ったデータが所 定数あったとき、かつ、前記所定のノードに関連づけられた文字の次の文字に対応 する子ノードが作成されて 、な 、ときに、前記所定のノードを共通にする前記各子ノ ードが所定の配列となるように、前記子ノードを作成することを特徴とする請求の範囲 第 1項記載のデータソート処理プログラム。
[3] 前記分割境界決定手段は、前記各データ集合が可及的に均等に振り分けられるよ うに前記分割境界を決定することを特徴とする請求の範囲第 1項記載のデータソート 処理プログラム。
[4] 前記各ノードは、前記各ノードに対応してそれぞれ設けられ、前記各データが前記 各ノードを通る毎にインクリメントするカウンタを備え、
前記データの文字数 K (K≥ 1)のデータを読み込んだとき、前記ルートから深さ k ( l≤k≤K)のノードに設定されたカウンタが所定値以上のとき、かつ、深さ (k+ 1)の 文字に対応するノードが存在しないときは、前記深さ kのノードに深さ(k+ 1)のノード を作成し、かつ、前記深さ (k+ 1)のノードを作成するときに、他の深さ(k+ 1)のノー ドが既に存在するときは、他の深さ (k+ 1)のノードに対して今回作成する前記深さ( k+ 1)のノードが、所定の配列となるように作成することを特徴とする請求の範囲第 1 項記載のデータソート処理プログラム。
[5] 前記分割境界決定手段は、前記カウンタ値と予め設定される分割数とに基づいて 、前記分割境界を設定することを特徴とする請求の範囲第 4項記載のデータソート処 理プログラム。
[6] 前記分割数は、前記各データ集合の容量が前記コンピュータの不揮発性メモリの 容量より小さくなるように設定されることを特徴とする請求の範囲第 5項記載のデータ ソート処理プログラム。
[7] 前記各データ集合を所定の方法でソートするデータ集合ソート手段を有することを 特徴とする請求の範囲第 1項記載のデータソート処理プログラム。
[8] 前記所定の方法でソートされた各データ集合を一意な順序で結合する結合手段を 有することを特徴とする請求の範囲第 7項記載のデータソート処理プログラム。
[9] 前記分割境界決定手段は、 i番目の前記各ノードのカウンタ値の和が、 (i- 1)番目 の前記ノードのカウンタ値と異なるとき、前記 i番目の各ノードのカウンタ値の和が前 記 (i— 1)番目のノードのカウンタ値と等しくなるように、それぞれ前記 i番目の各ノード のカウンタ値を補正することを特徴とする請求の範囲第 1項記載のデータソート処理 プログラム。
[10] 前記 i番目の各ノードは、前記各ノードのカウンタ値の比率に応じて前記各ノードの カウンタ値を補正することを特徴とする請求の範囲第 9項記載のデータソート処理プ ログラム。
[11] 複数のデータを有するデータファイルに対し、ソート処理を行うデータソート処理方 法において、
要約順序トライ作成手段が、データに一定回数以上出現する共通接頭文字列を格 納した要約順序トライを作成し、
分割境界決定手段が、所定のノード間に分割境界を設定し、
データ振り分け手段が、前記分割境界に基づいて、前記データファイルを複数の データ集合に振り分ける、
ことを特徴とするデータソート処理方法。
[12] 複数のデータを有するデータファイルに対し、ソート処理を行うデータソート処理装 ¾【こ; i l /、て、 データに一定回数以上出現する共通接頭文字列を格納した要約順序トライを作成 する要約順序トライ作成手段と、
所定のノード間に分割境界を設定する分割境界決定手段と、
前記分割境界に基づ 、て、前記データファイルを複数のデータ集合に振り分ける データ振り分け手段と、
を有することを特徴とするデータソート処理装置。
PCT/JP2006/312468 2005-06-30 2006-06-22 データソート処理プログラム、データソート処理方法およびデータソート処理装置 WO2007004430A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/002,399 US8122064B2 (en) 2005-06-30 2007-12-17 Computer program, method, and apparatus for data sorting

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005192954A JP4479908B2 (ja) 2005-06-30 2005-06-30 データソート処理プログラム、データソート処理方法およびデータソート処理装置
JP2005-192954 2005-06-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/002,399 Continuation US8122064B2 (en) 2005-06-30 2007-12-17 Computer program, method, and apparatus for data sorting

Publications (1)

Publication Number Publication Date
WO2007004430A1 true WO2007004430A1 (ja) 2007-01-11

Family

ID=37604300

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/312468 WO2007004430A1 (ja) 2005-06-30 2006-06-22 データソート処理プログラム、データソート処理方法およびデータソート処理装置

Country Status (3)

Country Link
US (1) US8122064B2 (ja)
JP (1) JP4479908B2 (ja)
WO (1) WO2007004430A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110837642A (zh) * 2019-11-14 2020-02-25 腾讯科技(深圳)有限公司 恶意程序分类方法、装置、设备及存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979418B1 (en) * 2007-12-21 2011-07-12 Mcafee, Inc. System, method, and computer program product for processing a prefix tree file utilizing a selected agent
WO2010106680A1 (ja) * 2009-03-19 2010-09-23 富士通株式会社 記憶媒体、トライ木生成方法およびトライ木生成装置
JP5387371B2 (ja) * 2009-11-30 2014-01-15 富士通株式会社 トライ木分類プログラムおよびトライ木分類方法
JP5544998B2 (ja) * 2010-04-12 2014-07-09 富士通株式会社 テキスト処理装置、テキスト処理方法、およびテキスト処理プログラム
JP5712851B2 (ja) 2011-07-29 2015-05-07 富士通株式会社 データ分割装置、データ分割方法およびデータ分割プログラム
US10146806B2 (en) * 2015-02-12 2018-12-04 Oracle International Corporation Adaptive resolution hsitogram
US9946512B2 (en) * 2015-09-25 2018-04-17 International Business Machines Corporation Adaptive radix external in-place radix sort
US11048679B2 (en) 2017-10-31 2021-06-29 Oracle International Corporation Adaptive resolution histogram on complex datatypes

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10336216A (ja) * 1997-05-13 1998-12-18 Fihem バイナリツリーデータ要素ソーティング装置およびatmスペーサ
JP2005505079A (ja) * 2001-10-02 2005-02-17 ソニー インターナショナル (ヨーロッパ) ゲゼルシャフト ミット ベシュレンクテル ハフツング 単語データベース圧縮

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0551691A1 (en) * 1992-01-15 1993-07-21 International Business Machines Corporation Sorting method
US6370479B1 (en) * 1992-02-06 2002-04-09 Fujitsu Limited Method and apparatus for extracting and evaluating mutually similar portions in one-dimensional sequences in molecules and/or three-dimensional structures of molecules
GB2292821A (en) 1994-09-03 1996-03-06 Ibm Sorting method.
JP2959497B2 (ja) 1996-11-26 1999-10-06 三菱電機株式会社 データ処理装置及びデータ処理方法
US6614789B1 (en) * 1999-12-29 2003-09-02 Nasser Yazdani Method of and apparatus for matching strings of different lengths
JP3772704B2 (ja) 2001-07-27 2006-05-10 富士通株式会社 データソート方法、データソート装置およびデータソートプログラム
US20030236793A1 (en) * 2002-06-19 2003-12-25 Ericsson Inc. Compressed prefix tree structure and method for traversing a compressed prefix tree
US7283072B1 (en) * 2006-03-30 2007-10-16 International Business Machines Corporation Methods of creating a dictionary for data compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10336216A (ja) * 1997-05-13 1998-12-18 Fihem バイナリツリーデータ要素ソーティング装置およびatmスペーサ
JP2005505079A (ja) * 2001-10-02 2005-02-17 ソニー インターナショナル (ヨーロッパ) ゲゼルシャフト ミット ベシュレンクテル ハフツング 単語データベース圧縮

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110837642A (zh) * 2019-11-14 2020-02-25 腾讯科技(深圳)有限公司 恶意程序分类方法、装置、设备及存储介质
CN110837642B (zh) * 2019-11-14 2023-10-13 腾讯科技(深圳)有限公司 恶意程序分类方法、装置、设备及存储介质

Also Published As

Publication number Publication date
JP4479908B2 (ja) 2010-06-09
US20080114765A1 (en) 2008-05-15
JP2007011784A (ja) 2007-01-18
US8122064B2 (en) 2012-02-21

Similar Documents

Publication Publication Date Title
WO2007004430A1 (ja) データソート処理プログラム、データソート処理方法およびデータソート処理装置
JP4782490B2 (ja) データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法
US7523288B2 (en) Dynamic fragment mapping
JP6028567B2 (ja) データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法
JP4740060B2 (ja) 重複データ検出プログラム、重複データ検出方法および重複データ検出装置
US7536432B2 (en) Parallel merge/sort processing device, method, and program for sorting data strings
US8793224B2 (en) Linear sweep filesystem checking
Cherry A practical exact maximum compatibility algorithm for reconstruction of recent evolutionary history
EP2801911A1 (en) Information processing device, data management method, and program
JP2006139427A (ja) データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
Abhishek et al. A cellular automata-based clustering technique for high-dimensional data
EP2339445A2 (en) File management information storage apparatus and method and program for controlling the same
Raddum et al. Factorization using binary decision diagrams
Marinelli et al. Digital Preservation with Synthetic DNA
Abdolazimi et al. Connected components of big graphs in fixed mapreduce rounds
JP2010092088A (ja) 順位付け装置、順位付け方法及びプログラム
JP2012190078A (ja) 処理装置、分散処理システム、及び処理プログラム
CN113544684B (zh) 数据置换装置、数据置换方法、计算机程序产品
KR20040028081A (ko) 유전자 알고리즘에 있어서 효율적인 적응도 함수 계산을위한 데이터 분류 방법
JP2020123035A (ja) ソート方法、ソートプログラム及びソート装置
KR102683404B1 (ko) 키 값들을 정렬된 상태로 저장하기 위한 동적 해싱을 수행하기 위한 방법 및 장치
JP4422536B2 (ja) ペアリング演算装置、ペアリング演算方法、及びプログラム
JP2001243238A (ja) 索引作成装置および文字列照合装置、索引作成方法および文字列照合方法ならびに記憶媒体
EP4109290A1 (en) A method and apparatus for validation of modifications in a database
Chang et al. An Inverted-ITL Algorithm for Mining Partial Periodic-Frequent Patterns

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 12002399

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06767126

Country of ref document: EP

Kind code of ref document: A1