Data retrieval system, data processing system, data retrieval method, and data processing method

Abstract: It is an object of this invention to provide a data retrieval system which updates data speedily. The dividing means determines the first substring (2) and second substring (3) based on the code string (1) from which a key string is retrieved. For each substring, the generating means (7) generates the dictionary data (5) and (6) showing the correspondence between a trailing string, which is a trailing part of data in the substring, and the start position of the trailing string within the code string. The retrieving means (8) retrieves a trailing string whose leading string is a key string or a part of the key string, based on the dictionary data. The removing means (9) removes duplicate trailing strings. When the changing means (10) changes the code string, the updating means (11) updates dictionary data associated with the substring based on the contents of the change. The first maintaining means (12) maintains the boundary interval at the maximum key length or longer, and the second maintaining means (13) maintains the boundary interval at a specified length or less.

Description: BACKGROUND OF THE INVENTION 1. Field of the Invention This invention relates to data processing systems and data processing methods which process data of a code string in order to find all the occurrences of a specified key string in the code string. More specifically, the invention relates to such data processing systems and methods which use a binary tree to represent the data of the code string. 2 Description of the Prior Art Data retrieval systems and data retrieval methods have been devised heretofore to find all the occurrence positions of a specified key string (pattern) in a code string such as a character string. Figure 55 shows the pattern p which is found in the character string s. A code string retrieval technique may be applied to dictionaries and indexes; more specifically, it is applied to the pattern matching in a text editor, text database, and voice recognition, to pattern analysis in such fields as DNA study, or to substitutional coding. The simplest code string retrieval method is to match a key string against a code string sequentially from the beginning to the end. However, in this method, the retrieval time increases as the character string s becomes longer. To prevent the retrieval time from being increased as the character string s becomes longer while allowing the time to increase as the number of occurrences of the pattern p increases, data specifically-structured for retrieval, which is created based on the one-dimensional character string s, is used. A position tree (Majster, M. et. al. 1980), suffix tree (McCreght, E. 1976 Chang and Lawler, "Approximate String Matching in Sublinear Expected Time", Proceedings of the annual symposium on foundations of Computer Scie, S t . Louis, Oct 22-24, 1990, Volume 1, IEEE, pages 116-124), and directed acyclic word graph (Blumer, A. et. al. 1985) are known as a structure specifically-structured for data retrieval. These data structures are advantageous in that (1) a very large storage area is not necessary; the storage area is approximately proportional to the length of the code string s and (2) a very long retrieval time is not necessary; the time is approximately proportional to the length of the key string (pattern p) and the number of occurrences. Basically, these data structures are based on a Trie (digital search tree). As shown in Figure 56, a Trie is a tree data structure consisting of a root, a plurality of nodes, and ends, and a sequence of labels attached to each edge between each two nodes from the root to an end node (leaf) constitute the character string wi. In this data structure, a leaf corresponds to the character string wi (a full character string). In addition, a character string generated by the labels on the path from the root to a node x is considered to be a prefix (a leading substring) of a character string generated by the labels from the root to a leaf. Data structures that have been used in data retrieval, such as a position tree, suffix tree, or directed acyclic word graph, are based on the Trie described above. A position tree, one of data structures, is a Trie which uses substring identifiers, each starting at each sequential position of the code string s, as character strings. A substring identifier is defined as the shortest unique character string starting at each sequential position. Figure 57 is an example of table (dictionary) containing positions and substring identifiers for the code string "abbabb$". In this figure, the symbol $ is a dummy code appended at the end of the code string to identify the position. Figure 58 is an example of a position tree representing the dictionary for the code string "abbabb$". A suffix tree is a Trie which uses a suffix (a trailing substring) of the code string s as the character string wi. Figure 59 shows an example of a suffix tree. A suffix tree is the simplest form of a Trie. That is, a suffix tree is a tree structure T in which the labels, each attached to a path from the root to a leaf (end node), generate a suffix of the code string s. In a suffix tree, a leaf corresponds to the end of a suffix (end of s). T consists of all combinations of paths from the root to a leaf, and includes all the generated suffixes. A path from the root to a leaf via the node x corresponds to a suffix of the code string s with a character string generated from the root to the node x as a prefix. A directed acyclic word graph is a graph created by merging particular paths of a suffix tree. Figure 60 shows an example of a directed acyclic word graph. However, when the code string s is updated in a traditional data structure, the time required for updating retrieval data increases as the code string s becomes longer. In a suffix tree, for example, a Trie reflects all the suffixes of the code string s. Therefore, if only a part of the code string s is changed, all the suffixes before the changed character are affected and so the whole Trie is affected. This is more prominent as the changed character is closer to the end of the code string s. For example, if the last character "c" of the code string s is deleted in Figure 59, three edges (c) are deleted and the labels on two edges (abc) are changed. Thus, a traditional data retrieval system and a data retrieval method, which take long in updating data, is not practical in an application where strings are updated often. Another known method is to divide a code string into a plurality of substrings and, for each of them, a Trie is created individually. However, there are two problems with this method. One problem is that, if a portion of the code string corresponding to the key string is divided and if the first half belongs to one Trie and the last half to another, it is impossible to search for that portion with the key string. Another problem is that, for a variable-length substring, data processing such as editing or retrieval cannot be done efficiently. For example, a substring changes and variable in length when edited. So, to process a substring, it is always necessary to match a substring with a particular position within the code string. A substring is difficult to process not only in data retrieval but also in many other data processing fields such as data compression or character string editing. Editing of a character string (sentence) is an example of data processing of substrings. When processing data strings on a computer, it is necessary to match a data value in a data string against the position within the data string where the data value is stored. More specifically, it is necessary, during character string editing, to get a code that is in a particular position in a character string; for example, to retrieve the 100-th character from a character string. On the other hand, the position of a particular code may vary during editing. For example, adding 10 characters at the beginning of a character string increases the position of a subsequent character within the character string by 10 (characters). The position of a data item in a data string is not always discrete; it is not always "n-th position" as in the above character string; in many cases, an interval represented by a real number in the floating-point format is used to specify a range of one data value. For example, the value of a signal from a circuit is represented by L (low), H (high), and F (floating, undefined). When processing these values, for example, in a simulation in the time-series mode, it is convenient to treat the duration of a signal value as a real value and, on a computer, to treat it as a floating-point value. In this type of application, editing is performed as for a character string. It is also necessary to quickly respond to inquiries such as: what is a data value at a particular point of time, how long a value at a particular point lasts, at which point of time a data value begins, and whether or not a data value changes between two points and how often. The following explains how difficult it is to efficiently process a substring with the use of a simple example. In this example, suppose that a code string contains characters whose values are 0, 1, or N and that, in most cases, the same code value occurs continuously. This type of string often occurs on a graphics display. The following is an example of this type of code: Position Data 1 0 2 0 3 0 4 N 5 N 6 0 7 0 8 0 9 0 10 1 11 1 12 1 13 1 14 1 15 1 16 0 In this example, 0 is stored in the interval [1..3], N in the interval [4..5], 0 in the interval [6..9], 1 in the interval [10..15], and 0 in the interval [16..16]. In this example, it is thought that a code string is divided into a sequence of code strings of the same value, that is, into intervals. To process this data on a computer, the straightforward method is to store code values sequentially at consecutive addresses in storage (first method). Figure 61 shows how the code string in Table 1 is represented in the first method. In the first method, the position of each code value is proportional to the difference between the address of storage at which the code value is stored and the start address of storage where the code string is stored. This makes it possible to identify the address of a particular code value by performing usual calculation (add, subtract, multiply, and divide). That is, if the start address of storage where the code string is stored is A, then the address of the code value is calculated as follows: [Formula 1] Address = Position + A - 1 However, this method has the following problems: (1) Data occupies as many locations as there are code values, degrading the memory efficiency. In particular, when there are many codes of the same value, the memory is wasted. (2) Because data is stored by plural codes, it takes long to determine a range of the consecutive codes of the same value. That is, to identify a range of consecutive codes of the same value, it is necessary to read code values, one at a time, and to count the number of code values. (3) A change in the length of a substring as a result of insertion or removal causes the addresses of all the data following the insertion or removal point to be increased or decreased. This is a time-consuming process. For example, Figure 62 shows an example in which an interval of code value 1 [6..8] is inserted immediately after the code value N at position 5 (address A + 4). This insertion involves a sequence of operations; that is, data at addresses A + 5 to A + 15 must be moved to addresses A + 8 to A + 18. (4) Because a storage area large enough to contain the number of code values (that is, the number of positions), each consisting of a specified number of bits (code unit), is required, a limited storage area limits the amount of information each code unit can contain. If each code unit is allowed to represent the maximum amount of information, a huge amount of storage is required. This results in less positions and more coarse position increments (less precise). Conversely, smaller position increments increase the number of positions, requiring a huge amount of storage. In this case, only discrete lengths (positions) such as integers can be represented in practice. Another method is to store pairs, each consisting of a code value and a range of a substring where that code consecutively occurs, in a consecutive storage area in the order in which the substrings appear (second method). Figure 63 shows the code string in Table 1 stored in the second method. In the second method, the amount of memory depends on the number of consecutive code value intervals. That is, it depends, not on the number of positions, but on the number of intervals, increasing the memory efficiency. A continuous range of code values can be identified by data. In addition, the broader variations of length precision (length type = discrete or continuous) is allowed. For example, floating-point numbers may be processed easily. Again, in this method, when the length of a substring (interval) or the number of substrings is changed, it is necessary to re-write all the substring data that follow the changed position. In addition, to identify the code value of a particular position, it is necessary to search the corresponding range for the position of the value, for example, using the binary search method. A binary search tree is conveniently used in the binary search method. In this method, a substring at the center of a code string is used as the root node. Each node is assigned a substring range data as well as the code value of the substring. Substring data may be represented by the start point and the end point of the range or only by the start point of the range with the end point obtaining from the start point of the next substring. Figure 64 shows an example of a sub-tree corresponding to the data in Table 1. In this figure, to each node the start point of the corresponding substring (in the circle) and the code value of the substring (below the circle) are assigned. In a sub-tree consisting of nodes that are at the end, one of them (for example, the node at the left) corresponds to the substring preceding the above-described node and the right sub-tree corresponds to the substring that follows the above-described node. Again, in this case, when the position of a substring s changed, it is necessary to change all the data following the change point. It is also possible to store pairs, each consisting of a a code value and the length of a substring where that code consecutively occurs, in a consecutive storage area in the order in which substrings appear (third method). Figure 65 is an example of data stored in the conventional third method. An advantage of this method is that, when a substring is expanded or reduced, only the length of the interval of the expanded or reduced substring need be changed. A disadvantage of this method is that, when obtaining the code at a particular position, the lengths of the intervals from the start or the end to the corresponding position must be added up. In addition, the binary search method cannot be used because information about a particular interval gives us only the information about the length of the interval. A linear list may be used instead of using a consecutive area; this makes it possible to connect non-consecutive areas through pointers (fourth method). Figure 66 shows a data structure represented in the fourth method. The fourth method eliminates the need for transferring data in memory when adding, deleting, dividing, or merging one or more intervals. However, to locate a particular position, this method still requires us to add up the lengths of intervals. A prior art method disclosed in US Patent No. 5 384 568 is discussed in greater detail in relation to the present invention in section 1-2-4-8 of the present description below. This invention seeks to solve the problems of the prior art described above. It is accordingly an object of this invention to provide a data processing system and a data processing method which process data efficiently. This data processing system and data processing method are particularly suitable for implementing the above described data retrieval system and data retrieval method. More specifically, it is another object of this invention to provide a data processing system and a data processing method which allow us to update data simply. It is another object of this invention to provide a data processing system and a data processing method which use memory efficiently. SUMMARY OF THE INVENTION To achieve the above object, an invention according to claim 1 is a data processing system for processing data of a code string divided into a sequence of intervals each having a length defined by the number of code elements in the interval in order to find a specified position in said code string, said data processing system comprising a binary tree generating means for generating a binary tree having a plurality of nodes representing respective positions of said intervals in said code string, said nodes being allocated to respective ones of said intervals in said code string, said nodes being connected from a root node of said tree to leaf nodes thereof in a tree-like structure, each node between said root node and said leaf nodes being a root node of a sub-tree and being connected to a preceding node defined as the left-child node corresponding to an interval in said code string preceding the interval corresponding to the node in question and/or to a following node defined as the right-child node corresponding to an interval in said code string corresponding to an interval in said code string following the interval corresponding to the node in question, each node being assigned a partial interval length defined as the sum of the length of the interval corresponding to the node in question and of the lengths of the intervals corresponding to the nodes, if any, on the leaf side of the node in question, means for identifying the node corresponding to the interval including the specified position by processing the nodes starting from the root node, said means including means for selecting the left-child node of the current node as the next current node if the specified position is less than or equal to the partial interval length of the left-child node, means for selecting the right-child node as the next current node and for updating the representation of the specified position according to the position of the right-child node relative to the current node, if the specified position is greater than the partial interval length of the current node minus the partial interval length of the right-child node; and means for identifying that the specified position is included in the interval corresponding to the current node if the specified position is greater than the partial interval length of the left-child node and less than or equal to the partial interval length of the current node minus the partial length of the right-child node. The invention of claim 20 realizes the invention of claim 1 from a methodological standpoint and is a data processing method for processing data of a code string divided into a sequence of intervals each having a length.defined by the number of code elements in the interval in order to find a specified position in said code string, said data processing method comprising a binary tree generating process for generating a binary tree having a plurality of nodes representing respective positions of said intervals in said code string, said nodes being allocated to respective ones of said intervals in said code string, said nodes being connected from a root node of said tree to leaf nodes thereof in a tree-like structure, each node between said root node and said leaf nodes being a root node of a sub-tree and being connected to a preceding node defined as the left-child node corresponding to an interval in said code string preceding the interval corresponding to the node in question and/or to a following node defined as the right-child node corresponding to an interval in said code string following the interval corresponding to the node in question, each node being assigned a partial interval length defined as the sum of the length of the interval corresponding to the node in question and of the lengths of the intervals corresponding to the nodes, if any, on the leaf side of the node in question, identifying the node corresponding to the interval including the specified position by processing the nodes starting from the root node, by the following; selecting the left-child node of the current node as the next current node if the specified position is less than or equal to the partial interval length of the left-child node; selecting the right-child node as the next current node, updating the representation of the specified position according to the position of the right-child node relative to the current node if the specified position is greater than the partial interval length of the current node minus the partial interval length of the right-child node; and identifying that the specified position is included in the interval corresponding to the current node if the specified position is greater than the partial interval length of the left-child node and less than or equal to the partial interval length of the current node minus the partial length of the right-child node. According to the invention as claimed in claims 1 and 20, the position of a node interval within the code string can be calculated, during retrieval or some other processing, based on the interval length of the preceding (following) node. The net interval length of a node can be calculated by subtracting the total of the interval lengths of the preceding and following nodes from the partial interval length of the node. Therefore, the code element at a specific position within a code string can be identified easily by comparing the specified position with the position and the interval length of each node. And, the positional relation among nodes can be represented by the relation among nodes, the position of each node being calculated by the partial interval length of other nodes. This means that a change in part of an interval affects only the changed node and one or more nodes on the path from that node to the root, thus simplifying the change procedure. According to the invention as claimed in claims 1 and 20, since a node is allocated to each interval, the system requires as many data blocks as intervals and so eliminates the need to use as many memory units as there are codes, thereby increasing memory usage efficiency. In particular, a binary tree in which data storage areas for the nodes are connected by pointers does not require a large consecutive area and therefore uses memory efficiently. The ability to use a precision most suitable for each interval allows the user to use any type of interval data such as floating-point data. According to the invention as claimed in claims 2 and 21, the interval retrieving means identifies an interval in which a specified position is included by moving the current node sequentially from the root to lower-level nodes, one level at a time, to compare the range of the current node with the specified position. The invention of claims 2 and 21 can be symmetrically applied by calculating the range of the current node based on the length of the following node. According to the invention as claimed in claims 3 and 22, the (net) interval length of a node and the partial interval length of the preceding node or the following node of the node is added up as the current node is moved from the specified node to the root node, one node at a time. This process determines the position of the specified node through the interval lengths of the nodes that are right or left to the specified node in L-C-R order. According to the invention as claimed in claims 3 and 22, this simple procedure provided allows the position of the specified node to be identified, making it possible to perform various types of processing. According to the invention as claimed in claim 4, when the specified node becomes the root and when the left end of the interval for the whole binary tree is 0, the interval of the specified node is easily identified; that is, the beginning position is the position following (+1) the partial interval length of the left child of the specified node and the terminating position is the position determined by subtracting the partial interval length of the right child of the specified node from the partial interval length of the specified node. An invention according to claim 5 is a data processing system as claimed in claim 1, further comprising binary tree updating means for updating the binary tree, when the interval is changed, according to the contents of the change. The invention of claim 23 realizes the invention of the claim 5 from a methodological standpoint and is a data processing method as claimed in claim 20, 21, or 22, further comprising a binary tree updating process for updating said binary tree, when said interval is changed, according to the contents of the change. According to the invention as claimed in claims 5 and 23, the binary tree updating means updates a binary tree when an interval is changed, eliminating the need to re-generates the binary tree. An invention according to claim 6 is a data processing system as claimed in claim 5, wherein the binary tree updating means comprises: interval length changing means for changing the interval length; deleting means for deleting the node corresponding to a deleted interval from the binary tree when the interval is deleted; and adding means for adding a node corresponding to an added interval when an interval is added. According to the invention as claimed in claims 6 and 24, the interval length changing means, the deleting means, or the adding means updates the binary tree when an interval length is changed, an interval is deleted, or an interval is added. Combining these means allows complex processing to be performed; for example, the intervals in a code string may be exchanged. According to the invention as claimed in claim 7, even when the length of an interval is changed, only the nodes from that node to the root need be changed. Unlike a conventional system, the data processing system eliminates the need to move all the nodes corresponding to the intervals following the changed node, enhancing data processing efficiency. According to the invention as claimed in claim 8, processing is simplified because there is no need to change the partial interval lengths except that for the root. An invention according to claim 9 is a data processing system as claimed in claim 6, wherein the adding means adds the node corresponding to the interval, which is to be added, to the binary tree, adjusts the connection sequence of the nodes, and adjusts the interval length of each node. According to the invention as claimed in claim 9, the adding means adjusts the connection sequence and interval lengths of nodes to maintain the integrity of a binary tree. According to the invention as claimed in claim 10, the interval lengths are adjusted simply by adding the length of the added interval to each node on the path from the parent of the added node to the root. An invention according to claim 11 is a data processing system as claimed in claim 6, wherein said adding means comprises means to move the node immediately preceding and following a position, at which a node is to be added, to said root node by means of splaying one at a time, means to add said node corresponding to an interval, which is to be added, at a position immediately following said immediately-preceding node or at a position immediately before said immediately-following node, and means to add the interval length of the added node to the partial interval length of said immediately-preceding or immediately-following node or said added node, as necessary. According to the invention as claimed in claim 11, processing is simplified because partial interval lengths need be changed (increased) only for a small number of nodes including the root node. An invention according to claim 12 is a data processing system as claimed in claim 6, wherein said adding means comprises means to add said node corresponding to said interval, which is to be added, to said binary tree with the interval length of the node being 0, means to move the added node to the root node of said binary tree by means of splaying, and means to increase the partial interval length of the node, moved to the root, by the interval length of the added interval. According to the invention as claimed in claim 12, processing is performed speedily because the partial interval length of a node need be increased only once using the desired addition algorithm. An invention according to claim 13 is a data processing system as claimed in claim 6, wherein the deleting means comprises means for deleting from the binary tree the node of the interval to be deleted, means for adjusting the connection among the nodes, and adjusts the interval length of each node. According to the invention as claimed in claim 13, the deleting means adjusts the node connection sequence and the interval lengths to maintain the integrity, such as the sequence of the remaining intervals, of the binary tree. An invention according to claim 14 is a data processing system as claimed in claim 6, wherein said deleting means comprises means for moving said node corresponding to said interval, which is to be deleted, to the root node by means of splaying, means for moving the node immediately preceding or following the node, which is to be deleted, to the root node by means of splaying, means for decreasing the partial interval length of said immediately-preceding or immediately-following node, which is the root node, by the interval length of said node to be deleted, and means for deleting said node to be deleted. According to the invention as claimed in claim 14, processing is performed speedily because only the node of the root need be adjusted during deletion. An invention according to claim 15 is a data processing system as claimed in claim 5, further comprising structure adjusting means for adjusting the structure of the binary tree by changing the connection sequence of the nodes. The invention of claim 25 realizes the invention of the claim 15 from a methodological standpoint and is a data processing method as claimed in claim 23, further comprising a structure adjusting process for adjusting the structure of said binary tree by changing the connection sequence of said nodes. According to the invention as claimed in claims 15 and 25, the structure adjustment prevents only a particular part of the binary tree from being increased, making a plurality of paths, each from the root to a node, approximately equal in length. In this way, it prevents the data processing time from being increased just because the associated path is too long, thereby making various types of data processing, such as retrieval or update, more efficient. According to the invention as claimed in claim 16, the structure adjustment is performed according to the status of the binary tree, because a plurality of processing types are combined to change the structure of a specified range of the binary tree. An invention according to claim 17 is a data processing system as claimed in claim 15, wherein said structure adjusting means comprises means for adjusting said binary tree by means of splaying through which a target node, which is any of said nodes, is moved to said root node. According to the invention as claimed in claim 17, a target node is moved to the root by means of splaying and, at the same time, the length of a path from a node, which is on the path from the target node to the original root, is reduced in most cases. Because of this, various types of processing for the binary tree is performed speedily. According to the invention as claimed in claim 18, one type of binary tree representing the sequence of lines and another type of tree representing the content of each line are created separately. Therefore, when either the sequence of lines or the content of a line is changed, there is no need for changing the other type of binary tree. This ensures efficient code string processing. According to the invention as claimed in claim 19, data can be represented as a single simply-structured binary tree. In addition, according to the invention as claimed in claim 19, representing consecutive characters or blanks with a single node increases both processing efficiency and memory efficiency. Other and further objects, functions, and advantages of the present invention will be more fully understood by the following detailed description. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a block diagram showing the configuration of the data processing system in a first embodiment of this invention; Figure 2 shows an example of a binary tree in the first embodiment of this invention; Figure 3 explains the binary tree in the first embodiment of this invention; Figure 4 is a flowchart showing the procedure for retrieving data in the first embodiment of this invention; Figure 5 shows an example of a binary tree in the first embodiment of this invention (retrieval); Figure 6 shows an example of a binary tree in the first embodiment of this invention (retrieval) ; Figure 7 shows an example of a binary tree in the first embodiment of this invention (retrieval); Figure 8 is an example of flowchart showing a procedure for identifying an interval corresponding to a specified node in the first embodiment of this invention; Figure 9 is another example of flowchart showing a procedure for identifying an interval corresponding to a specified node in the first embodiment of this invention; Figure 10 is a functional block diagram showing an example of hardware configuration suitable for retrieval in the first embodiment of this invention; Figure 11 is a flowchart showing a procedure for changing an interval length in the first embodiment of this invention; Figure 12. shows an example of a binary tree in the first embodiment of this invention (change interval length); Figure 13 shows an example of a binary tree in the first embodiment of this invention (change interval length); Figure 14 shows an example of a binary tree in the first embodiment of this invention (change interval length); Figure 15 is a flowchart showing a procedure for adding and deleting a node in the first embodiment of this invention; Figure 16 shows an example of a binary tree in the first embodiment of this invention (add interval); Figure 17 shows an example of a binary tree in the first embodiment of this invention (add interval); Figure 18 shows an example of a binary tree in the first embodiment of this invention (add interval); Figure 19 shows an example of a binary tree in the first embodiment of this invention (add interval); Figure 20 shows an example of a binary tree in the first embodiment of this invention (delete interval); Figure 21 shows an example of a binary tree in the first embodiment of this invention (delete interval); Figure 22 shows an example of a binary tree in the first embodiment of this invention (delete interval); Figure 23 shows an example of a binary tree in the first embodiment of this invention (adjust structure); Figure 24 shows an example of a binary tree in the first embodiment of this invention (adjust structure); Figure 25 shows an example of a binary tree in the first embodiment of this invention (adjust structure); Figure 26 shows an example of a binary tree in the first embodiment of this invention (adjust structure); Figure 27 shows an example of a binary tree in the first embodiment of this invention (adjust structure); Figure 28 shows an example of a binary tree in the first embodiment of this invention (adjust structure); Figure 29 is a diagram showing an example of binary tree in the first embodiment of this invention; Figure 30 is a conceptual diagram showing the data format for each node in the first embodiment of this invention; Figure 31 is a conceptual diagram showing how the nodes in a part of the binary tree in Figure 29 are connected by pointers in the first embodiment of this invention; Figure 32 is a diagram showing the binary tree in Figure 29 to which double rotation (zig-zig) has been applied in the first embodiment of this invention; Figure 33 is a diagram showing the data and pointers of node d and its subordinate nodes in Figure 31 in the first embodiment of this invention; Figure 34, is a diagram showing the binary tree in Figure 32 to which double rotation (zig-zag) has been applied in the first embodiment of this invention; Figure 35 is a diagram showing the binary tree in Figure 34 to which double rotation (zig-zag) has been applied in the first embodiment of this invention; Figure 36 is a diagram showing the binary tree in Figure 35 to which rotation has been applied in the first embodiment of this invention; Figure 37 is a diagram showing a part of the binary tree before an interval is added through splaying in the first embodiment of this invention; Figure 38 is a diagram showing the binary tree in Figure 37 to which splaying has been applied in the first embodiment of this invention; Figure 39 is a diagram showing the binary tree to which an interval has been added through splaying in the first embodiment of this invention; Figure 40 is a diagram showing the binary tree to which, in the binary tree shown in Figure 38, splaying has been applied to node R which is the node immediately following the addition point in the first embodiment of this invention; Figure 41 is a diagram showing the binary tree to which node X has been added as the right child of node L in the first embodiment of this invention; Figure 42 is a diagram showing the binary tree, shown in Figure 40, where node L has no right child and node L is the left child of node X, in the first embodiment of this invention; Figure 43 is a diagram showing the binary tree, shown in Figure 40, where node L has no right child and node X is the right child of node L, in the first embodiment of this invention; Figure 44 is a diagram showing the binary tree in which node X to be deleted has been moved to the root by means of splaying in the first embodiment of this invention; Figure 45 is a diagram showing the binary tree in which node R immediately following node X to be deleted has been moved to the root by means of splaying in the first embodiment of this invention; Figure 46 is a diagram showing the binary tree from which node X has been deleted in the first embodiment of this invention; Figure 47 is a diagram showing a sample balanced binary tree in the first embodiment of this invention; Figure 48 is a diagram showing information contained in a node in a sample balanced binary tree in the first embodiment of this invention; Figure 49 is a diagram showing the tree, shown in Figure 47, where (a node representing) a new interval x has been inserted to the left of the interval representing node f in the first embodiment of this invention; Figure 50 (a) is a diagram showing one type of rebalancing (promotion) when condition 2 is not satisfied in the first embodiment of this invention; Figure 50 (b) is a diagram showing one type of rebalancing (single rotation) when condition 2 is not satisfied in the first embodiment of this invention; Figure 50 (c) is a diagram showing one type of rebalancing (double rotation) when condition 2 is not satisfied in the first embodiment of this invention; Figure 51 is a diagram showing the binary tree in which node colors have been changed in the first embodiment of this invention; Figure 52 is a diagram showing the binary tree in which single rotation has been performed and node colors have been changed in the first embodiment of this invention; Figure 53 shows a binary tree in a second embodiment of this invention; Figure 54 shows a binary tree in a third embodiment of this invention; Figure 55 shows an example of a pattern in a character string used in a conventional code string retrieval method; Figure 56 shows an example of a conventional Trie; Figure 57 is a table showing the correspondence between code strings and positions in a conventional code string retrieval method; Figure 58 shows an example of a conventional position tree; Figure 59 shows an example of conventional suffix tree; Figure 60 shows an example of a conventional directed acyclic word graph; Figure 61 shows an example of data used in a first conventional method; Figure 62 shows an example of data used in a first conventional method (insert) ; Figure 63 shows an example of data used in a second conventional method; Figure 64 shows an example of a conventional binary tree; Figure 65 shows an example of data used in a third conventional method; Figure 66 shows an example of data used in a fourth conventional method. Symbols 1: Code string 2: First substring 3: Second substring 4: Dividing means 5: First dictionary data 6: Second dictionary data 7: Generating means 31: Binary tree 32: Binary tree generating means 33: Interval retrieving means 34: Binary tree updating means 41: Interval length changing means 42: Adding means 43: Deleting means 45: Structure adjusting means DETAILED DESCRIPTION Referring to the attached drawings, there is shown a preferred embodiment (hereafter called embodiment) of the this invention. Notice that the embodiment described below is implemented on a computer and that each function of the embodiment is implemented by a procedure (program) controlling this computer. Each "means" mentioned in this specification refers to a conceptual equivalent of each function of this embodiment; that is, there is not always a one-to-one correspondence between means and particular pieces of hardware or software routines. One piece of hardware sometimes comprises different means. For example, a computer serves as a means when executing an instruction, but serves as another means when executing another instruction. In addition, one means may be implemented by one instruction in some cases, but by a plurality of instructions in some other cases. Therefore, this specification describes an embodiment with the use of virtual circuit blocks (means) each having its own function of the embodiment. Note that an embodiment implemented by a computer is only an example; all or part of this invention may be packaged, if possible, on an electronic circuit such as a custom chip (custom-made integrated circuit). The computer used in the embodiment usually consists of the CPU (central processing unit) and main storage composed of RAM (random-access memory). A computer of any size, for example, a microcomputer, personal computer, small computer, workstation, or mainframe computer may be used. Typically, the computer has input devices such as a keyboard and a mouse, external storage units such as a hard disk, output devices such as a CRT display or a printer, and other required input/output control circuits. The computer may be built in any configuration, and one or more components may be added, changed or removed as far as the configuration does not depart from the characteristics of this invention. For example, the embodiment may be built on a computer network to which a plurality of computers are connected. Any type of CPU may be used, a plurality of CPUs may be used at the same time, or a single CPU may be used in the time-sharing manner to process a plurality of processes concurrently. Other types of input device (pointing devices such as a touch panel, light pen, and track ball, image input devices such as a digitizer, image reader, and video camera, voice recognition devices, or various types of sensors) may be used. Other external storage devices (floppy disk device, RAM card reader, magnetic tape device, optical disk device, magneto-optical (MO) disk device, bubble memory device, and flash memory card) may be used. Other output devices (liquid crystal display, plasma display device, video projector, LED display device, voice generator, and voice synthesizer) may be used In a typical software configuration of this computer, a program executing each function of this embodiment runs as an application program under the operating system (OS). Typically, the machine language generated by compiling a program coded in a high-level language or assembler is used. However, the software configuration of this computer is free, and may be changed as far as this invention is implemented. For example, the OS need not always be used, and any programming language may be used. An interpreter (serially interpretive execution) such as BASIC may be used to code a program. The program may be stored on any storage device. It may be in ROM (Read-Only Memory) or it may be on an external storage device such as a hard disk; in the latter case, the program is loaded (read) into main memory when the computer or the process is started. In addition, the program may be divided into a plurality of modules which are stored on an external storage device. In this case, only the modules necessary for processing are read into main memory. Each program module may be stored on a storage device most suitable for it. The sequence of steps of a procedure used in this embodiment may be changed, a plurality of steps may be executed concurrently, or the steps may be executed in a different sequence each time the program is executed, as far as the steps do not depart from the characteristics of this invention. The ability to change the sequence of execution is implemented by the menu-driven interface which allows the user to select processing he wants to execute. The "input" mentioned in this specification implies not only the input of data but also other types of processing closely related with data input. They include the echo-back, modification, and editing of entered data. And, the "output" mentioned in this specification implies not only the output of data but also other types of processing closely related with data output. They include the entry of ranges to be output or instruction of screen scrolling. Also, input and output may be integrated into an interactive input/output operation and, through this integrated operation, the user may select, specify or identify processing to be performed. Data (information) or data storage means mentioned in this specification may exist on the computer in any form. For example, data, which is described in this specification to reside on a hard disk, may be in main storage, an external storage unit, CPU register, or cache memory. In addition, data may be held in any form. For example, data may be stored in a file or in memory or a disk to allow direct access by means of physical addresses. The code of a character string may be represented in characters or words. Data may be stored for any period of time; it may be volatile after a specified time. Data not to be changed, for example dictionary data, may be stored in ROM. References in this specification to a specific item do not imply that only that item is used. That is, in this invention, general items needed for the operation of this invention, such as pointers, counters, flags, parameters, and buffers are used as necessary. Unless otherwise specified, information necessary for each portion of this embodiment is obtained from other portions holding the information. For example, information may be obtained by accessing variables or memory holding necessary information. Information may be erased or deleted, not only by deleting the information from a storage area, but also by setting a flag indicating the erasure of the information. [ 1. First Embodiment ] [ 1-1. Configuration of the First Embodiment ] The first embodiment corresponds to a data processing system (corresponds to claims 1 - 17) and a data processing method (corresponds to claims 20 - 25) that is executed on this data processing system. Figure 1 is a block diagram showing the configuration of the first embodiment. It is an object of the first embodiment to provide a data processing system and a data processing method which process data efficiently. This data processing system and a data processing method are particularly suitable for implementing the data retrieval system and the data retrieval method described above. That is, the data processing system and the data processing method in the first embodiment use a substring as an interval to further increase efficiency of various types of processing including data retrieval. Since the contents of a substring can be restored within a dictionary tree of a data retrieval system and a data retrieval method, the data processing system and the data processing method in this embodiment use, not a code string, but first and second substrings of a code string. More specifically, it is an object of the first embodiment to provide a data processing system and a data processing method whose data change procedure is simple. It is another object of the first embodiment to provide a data processing system and a data processing method which use memory more efficiently. As shown in Figure 1, the data processing system in the first embodiment has the binary tree generating means 32 for generating the binary tree 31 representing the range of each interval based on the intervals in a code string, the interval retrieving means 33 for retrieving an interval corresponding to the specified position according to the binary tree 31, and the binary tree updating means 34 for updating the binary tree 31 according to the contents of a change when an interval is changed. The binary tree updating means 34, in turn, has the interval length changing means 41 for changing an interval length, the deleting means 42 for deleting a node corresponding to a deleted interval, and the adding means 43 for adding a node corresponding to an added interval. In addition, the data processing system in the sixth embodiment has the structure adjusting means 45 for adjusting the structure of a binary tree by changing the connection sequence of the nodes. [ 1-2. Operation and Effects of the First Embodiment ] The first embodiment which has the above configuration performs the following operation: that is, it allows the user to store a code string containing a plurality of intervals, to obtain a code value at a specific position within a code string, and to edit a code string as he or she wants. [ 1-2-1. Binary Tree Generation Process ] First, the binary tree generating means 32 generates the binary tree 31 representing the range of each interval according to the intervals in the code string. The binary tree may also be generated, with the use of the adding means 43, by adding a node each time an interval is entered. A code string and the intervals may be entered, for example, via the keyboard. The binary tree 31 is a tree-like data structure consisting of nodes, each corresponding to an interval, connected from the root to the ends. On the end side of each node, the preceding node, which corresponds to the preceding interval of the node and/or the following node, which corresponds to the following interval of the node, is connected. And, in each node, the sum of the interval length of the node itself and the total interval length of the nodes on the end side of the node (sub-tree), is set. This sum is called a partial interval length. Figure 2 shows an example of the binary tree 31 used in the first embodiment, and Figure 3 explains the binary tree 31 in Figure 2. As these figures show, the binary tree 31 in the first embodiment is a tree, consisting of nodes A, B, C, D, and E corresponding to the intervals [1..3], [4..5], [6..9], [10..15], and [16..16] respectively, connected with node B as the root. To the end side of node B, node A corresponding to the interval [1..3] which precedes node B and nodes D, C, and E corresponding to the intervals which follow node B are connected. In addition, on the end side of node D, node C corresponding to the interval which precedes node D and node E corresponding to the interval which follows node D are connected. In each of nodes A, B, C, D and E, the partial interval lengths 3, 16, 4, 11, and 1, each representing the sum of the length of the node itself and the total of the lengths of the nodes on the end side of that node are set. For example, in node D, the sum (11) of the length (6) of the interval [10..15] corresponding to. node D and the total of the lengths (4 and 1) of the intervals [6..9] and [16..16] is set. The data processing system in the first embodiment, which has one node for each interval as described above, requires as many data blocks as intervals and so eliminates the need to use as many memory units as there are codes (positions), thereby increasing memory usage efficiency. In particular, a binary tree in which data storage areas for the nodes are connected by pointers does not require a large consecutive area and therefore uses memory efficiently. The ability to use a precision most suitable for each interval allows the user to use any type of interval data such as floating-point data. In this data processing system, the position of the interval of a node can be calculated, during retrieval or some other processing, based on the interval length of the preceding (following) node. The net interval length of a node can be calculated by subtracting the total of the interval lengths of the preceding and following nodes, contained in the sub-tree connected to the node, from the partial interval length of the node. The interval length of the preceding (following) node can be obtained from the partial interval length of the left (right) child. Therefore, the code at a specific position within a code string can be identified easily by comparing the specified position with the position and the interval length of each node. Thus, the interval position of a node can be calculated by the total of the interval lengths of the preceding (following) nodes. And, the positional relation among nodes can be represented by the relation among nodes, the position of each node being calculated by the partial interval length of other nodes. This means that a change in part of an interval affects only the changed node and one or more nodes on the path from that node to the root, thus simplifying the change procedure. More specifically, even when the length of an interval is changed, the required data processing time is approximately proportional to the logarithm of the number of intervals. [ 1-2-2. Interval Retrieval Process ] Figure 4 is a flowchart showing the retrieval procedure used by the data processing system in the first embodiment. To identify the interval to which a specific position within the code string belongs during retrieval or some other processing, the interval retrieving means 33 performs the following procedure while moving the current node pointed to by the pointer from the root (step 241) to lower-level nodes, one level at a time. The interval retrieving means 33 calculates the range of the current node based on the interval lengths of the current node and the lower-level nodes (step 242), and compares the calculated range with the specified position. If the specified position precedes the calculated range (step 243), the interval retrieving means 33 moves the current node to the preceding node (step 244); if the specified position follows the calculated range (step 245), the interval retrieving means 33 moves the current node to the following node (step 246); if the specified position is included in the calculated range (step 247), the specified range is included in the current node (step 248). This procedure is executed as follows. Suppose that the variable P contains the specified position and that the variable n contains a pointer pointing to the current node (hereafter, the current node is represented by n). During this process, the substantial specified position in the whole tree is not changed. However, when the current node moves down, the representation of the specified position is updated based on the relative position of the current node. If n has a preceding node (hereafter called a "left child") and if: [Formula 2] P ≦ Partial interval length of the left child of n then, the interval retrieving means 33 changes n to the left child of n. If n has a following node (hereafter called a "right child") and if: [Formula 4] P > (partial interval length of n - partial interval length of the right child of n) then, the interval retrieving means 33 changes P to: [Formula 6] P - (partial interval length of n - partial interval length of the right child of n) and changes n to the right child of n. When this process is terminated and if: [Formula 7] (Partial interval length of the left child of n) < P and if: [Formula 9] P ≦ (partial interval length of n - partial interval length of the right child of n) then, n is a node corresponding to the interval containing the specified position. This means that the interval of the current node includes the specified position if the specified position follows the interval preceding the current node and if the specified position is within the net interval length of the current node. If n has no left child and if: [Formula 11] P ≦ 0 or, if n has no right child and if: [Formula 13] P > n then, the interval containing the specified position is not yet stored. This means that the specified position is not included in any interval if it is before the first node or after the last node. This can be said regardless of the presence of the right or left child, when n is the root node. By the way, the interval represented by the retrieved node n is [specified position - (P - partial interval length of the left child of n) + Δ (minimum positional unit) .. specified position + (partial interval length of n - partial interval length of the right child of n - P)]. For example, in the binary tree in Figure 2, the node corresponding to the interval containing the specified position 8 is identified by following the nodes as shown in Figures 5, 6, and 7. In the identified node, n represents [8 - (3 - 0) + 1 .. 8 + (4 - 0 - 3)] = [6..9] (Figure 7). As described above, in the data processing system in the first embodiment, the interval retrieving means 33 compares the specified position with the range of the current node while moving the current node downward, one level at a time, from the root. This simple procedure identifies an interval containing the specified position, facilitating various types of processing such as retrieval. [ 1-2-3. Node Interval Identification Process ] In this embodiment, it is also possible to identify an interval corresponding to a node that is specified. The procedure explained below identifies the position of an interval. A right interval or a left interval (total interval) means that the specified interval is on the right or on the left of the root interval. To identify a node interval, the current node is moved sequentially from the specified node to its parent node until the root is reached. As the current node is moved, either the left interval length which is the total of the lengths of the nodes preceding the specified node or the right interval length which is the total of the lengths of the nodes following the specified node is obtained (claims 3, 22). Figure 8 is a flowchart showing an example of a procedure for identifying the interval corresponding to the specified node. In this procedure, the partial interval length of the left child of the current node that is specified is first set to the left interval length (step 281). Remember that the left interval (length) is the total interval (length) preceding the specified node. Then, the following steps are repeated until the current node becomes the root (step 282). That is, the current node is moved to the parent with the old current node as the child node (step 283). At this time, when the child node, which was the old current node, is the right child of the current node (step 284), the sum of the net interval length of the current node and the partial interval length of the left child of the current node is calculated (step 286) and the sum is added to the left interval length (step 286). Note that the partial interval length of a node represents the total (interval length) of the net interval length of the nodes included in the subtree rooted at the node. The sum of the net interval length of the current node and the partial interval length of the left child of the current node is calculated by subtracting the partial interval lengths of the right child (the old current node) from the partial interval length of the current node. When the current node becomes the root (step 282), the left end of the specified node is immediately left to the left interval; that is, it is calculated by adding 1 to the left interval length (step 287). If an interval is represented in a floating-point number, the value of the left interval length is the left end of the interval. The right end of the specified node is obtained by adding the net interval length of the specified node to the left interval length (step 288). The right interval of the specified node (total of the intervals following the interval corresponding to the specified node) begins at the position following (adding 1 to) the right-end value of the specified node, and ends at the end of the whole interval represented by the binary tree. This end is represented by the value of the partial interval length of the root. Figure 9 is an another example of a flowchart of a procedure for identifying an interval corresponding to the specified node. In the procedure shown in Figure 8, the left interval that is on the left of the specified node interval is determined, and the right side of the specified node interval is calculated based on the left interval length. In the procedure shown in Figure 9, the lengths of both the right interval and the left interval are obtained, and the interval of the specified node is determined as an interval between these two intervals. In this procedure, the specified node is first set to the current node, with the partial interval length of the left child of the current node being the left interval length and with the partial interval length of the right child of the current node being the right interval length (step 291). Then, the following steps are repeated until the current node becomes the root node (step 292). The current node is moved to its parent with the old current node as the child node (step 293). And, when the old current node is the right child (step 295), the sum of the net interval length of the new current node and the partial interval length of the left child of the new current node is added to the left interval length (step 296); when the old current node is the left child (step 295), the sum of the net interval length of the new current node and the partial interval length of the right child of the new current node is added to the right interval length (step 297). The sum of the net interval length of the current node and the partial interval length of the left (right) child of the current node is calculated by subtracting the partial interval lengths of the right (left) child from the partial interval length of the current node. When the current node becomes the root (step 292), the interval of the specified node is identified as the interval between the left interval and the right interval (step 298). The right end of the specified node may be calculated by subtracting the right interval length from the partial interval length of the root. In the first embodiment, the total interval length of a preceding (following) nodes is sequentially added up as the current node moves from the specified node to the root node, as described above. This process determines the position of the specified node through the interval lengths of nodes those are right or left to the specified node. This simple procedure provided in the sixth embodiment allows the position of the specified node to be identified, making it possible to perform various types of processing (claims 3, 25). Figure 10 is a functional block diagram showing an example of hardware configuration for use in the retrieval described above. That is, there are as many information areas as the nodes, each area consisting of the pointer storage area P and the partial interval length storage area L. These areas are contained in a fixed-length array. The nodes are linked by two-way pointers allowing pointer storage areas to be referenced bi-directionally. To perform retrieval, the control section C accesses pointers to reference each node, and the operation section A accesses the partial interval length of each node to calculate interval lengths. The pointer or the storage address of the current node is stored in the current register CR. Information on the nodes, such as information on an old node after the current node is moved, is stored in the auxiliary register SR. The interval length register LR is used as necessary to calculate partial interval lengths. Hardware having this configuration may be used in various types of processing described below. [ 1-2-4. Binary Tree Update Process ] When an interval is changed, the binary tree updating means 34 updates the binary tree 31 according to the contents of the change. Because, in the first embodiment, the binary tree 31 is changed in this manner when an interval is changed, there is no need to re-generate the binary tree 31. In the first embodiment, when the length of an interval in the code string is changed, the interval length changing means 41 changes the corresponding interval length in the binary tree 31. When an interval is deleted from the code string, the deleting means 42 deletes the node corresponding to the deleted interval from the binary tree 31. When an interval is added to the code string, the adding means 43 adds the node corresponding to the added interval to the binary tree 31. In the first embodiment, the interval length changing means, the deleting means, or the adding means updates the binary tree 31 when an interval length is changed, an interval is deleted, or an interval is added. Combining these means allows complex processing to be performed; for example, the intervals in a code string may be exchanged. [ 1-2-4-1. Interval Length Change Process ] When the length of an interval is changed, the partial interval length of each node, from that node to the root, is changed by the changed value. Figure 11 is a flowchart showing the procedure for changing an interval length. As shown in this figure, the target node is first set to the current node (step 311). Then, the current node is moved toward the root (step 312) until it becomes the root (step 314) while increasing or decreasing the partial interval length of each current node by a specified change amount. That is, even when the length of an interval is changed in the first embodiment, only the nodes from that node to the root need be changed. Unlike a conventional system, the data processing system in the sixth embodiment eliminates the need to move all the nodes corresponding to the intervals following the changed node, enhancing data processing efficiency. For example, when the interval with the length of 4 ([6..9]) is changed to an interval with the length of 2 ([6..7]) in the example shown in Figure 22, the partial interval lengths of nodes B, C, and D are reduced by 2 accordingly as shown in Figure 32. After that, if an attempt is made to retrieve a node corresponding to the interval containing position 8 (Figures 33 and 34), the result is node D, not node C. The interval represented by node D is [8 - (3 - 2) + 1 .. 8 + (9 - 1 - 3)] = [8..13]. The following sections explain the procedure for adding and deleting an interval. Figure 15 is a flowchart showing the procedure for adding and deleting an interval in the first embodiment. [ 1-2-4-2. Interval Addition Process ] When adding an interval, the adding means 43 adds to the binary tree 31 a node for an interval to be added (step 351), adjusts the node connection sequence (step 352), and adjusts the interval length of each node (step 353). In the first embodiment, the adding means 43 adjusts the interval lengths to maintain the integrity of the binary tree 31. Any known method for adding a node may be used compatibly. For example, in Figure 2, when an interval [10..12] with the length of 3 is added before the interval [10..15] with the intervals [10..15] and [16..16] being moved to the intervals [13..18] and [19..19], respectively, the new node is added in one of three ways shown in Figures 16, 17, and 18. To adjust the interval length, the adding means 43 finds the sum of the partial interval lengths of the children (0 if there is no child) and the length of the interval to be added, and uses the result as the partial interval length of the node. And, to each node on the path from the parent of the new node to the root, the adding means 43 adds the length of the new interval. In the first embodiment, the interval lengths are adjusted simply by adding the length of the new interval to each node on the path from the parent of the added node to the root. Figure 19 shows the binary tree 31 to which a node has been added at the position β shown in Figure 17. [ 1-2-4-3. Interval Deletion Process ] When deleting an interval, the deleting means 42 deletes from the binary tree 31 the node corresponding to the interval to be deleted, adjusts the connection among the nodes, and, as necessary (step 354), adjusts the partial interval lengths (Figure 35/step 353). In the first embodiment, the deleting means 42 adjusts the node connection sequence and the interval lengths to maintain the integrity, such as the sequence of the remaining intervals, of the binary tree 31. Any known method for deletion and adjustment may be used compatibly. For example, when node D is deleted from the binary tree 31 in Figure 19, the structure after deletion may be the one shown in Figure 20 or the one shown in Figure 21. The following discussion focuses on the case that the only nodes whose parent nodes are changed after deletion are the child nodes of the deleted node. In other cases, the binary tree 31 is changed as necessary during structure adjustment, described below, before or after node deletion. First, for each node on the path from the parent of the deleted node to the root (only B in Figure 20, the partial interval length is reduced by (partial interval length of the deleted node) - (partial interval length of the node (left child) preceding the deleted node) - (partial interval length of the node (right child) following the deleted node) which is the net interval length of the deleted node. Then, for each node on the path beginning at the node which is the parent node of a previous child of the deleted node and was not the parent node of the deleted node (for example, X) and ending at the other child (whose parent is the previous parent of the deleted node) (for example, C), the partial interval length of the former child (for example, E) is added to the partial interval length. Figure 22 shows the binary tree 31 from which a node has been deleted. [ 1-2-4-4. Structure Adjustment Process ] When adding or deleting an interval, the structure adjusting means 45 changes the connection sequence of nodes to maintain the balance of the number of nodes in the binary tree 31 (step 355) This structure adjustment method prevents a particular part of the binary tree 31 from being increased, making a plurality of paths, each from the root to a node, approximately equal in length. In this way, it prevents the data processing time from being increased just because the associated path is too long, thereby making various types of data processing, such as retrieval or update, more efficient. Another structure adjustment method eliminates variations in processing times of retrieval, addition, and deletion for a binary tree. Structure adjustment is necessary for node deletion, addition, or reference. A plurality of structure adjustment methods are known. Any of them may be used. Partial interval lengths should be adjusted as the tree structure is changed according to the structure adjustment method to be used. The length of a path from the root to a node is usually made proportional to the logarithm of the total number of nodes through structure adjustment. For this reason, the time required for processing, such as retrieval, interval length adjustment, and structure adjustment, is approximately proportional to the logarithm of the total number of intervals. Rotation, double rotation (zig-zig), or double rotation (zig-zag), which maintains the node sequence and the structure of a specified range of the binary tree 31, is used in the structure adjustment procedure as an operation unit. The actual structure adjustment procedure is composed of these units. The following shows an example in which a conventional structure adjustment procedure unit is applied to the whole or an part of a path from the root to a node. Performing rotation on the binary tree 31 in Figure 23 results in the binary tree 31 shown in Figure 24. Performing double rotation (zig-zig) on the binary tree 31 in Figure 25 results in the binary tree 31 shown in Figure 26. Performing double rotation (zig-zag) on the binary tree 31. in Figure 27 results in the binary tree 31 shown in Figure 28. Suppose that, for each node n, the partial interval length before change is S(n) and the partial interval length after change is SS(n). SS(n) to be set in each node after execution of an operation unit is calculated as follows; based on the partial interval length S(n) before the operation unit is executed. Note that the nodes except X, Y, and Z need not be changed. Calculation for rotation is performed as follows. [Formula 15] SS(X) = S(X) - S(Y) + S(B) SS(Y) = S(X) Calculation for double rotation (zig-zig) is performed as follows. [Formula 16] SS(X) = S(X) - S(Y) + S(B) SS(Y) = S(X) - S(Z) + S(C) SS(Z) = S(X) Calculation for double rotation (zig-zag) is performed as follows. [Formula 17] SS(X) = S(X) - S(Y) + S(B) SS(Y) = S(Y) - S(Z) + S(C) SS(Z) = S(X) The partial interval length may also be calculated after the net interval length of X, Y, and Z are calculated. The net interval length T(n) for node n is calculated as follows. [Formula 18] For rotation: T(X) = S(X) - S(Y) - S(A) T(Y) = S(Y) - S(B) - S(C) SS(X) = T(X) + S(A) + S(B) SS(Y) = T(Y) + SS(X) + S(C) [Formula 19] For zig-zig: T(X) = S(X) - S(Y) - S(A) T(Y) = S(Y) - S(Z) - S(B) T(Z) = S(Z) - S(D) - S(C) SS(X) = T(X) + S(A) + S(B) SS(Y) = T(Y) + SS(X) + S(C) SS(Z) = T(Z) + SS(Y) + S(D) [Formula 20] For zig-zag: T(X) = S(X) - S(Y) - S(A) T(Y) = S(Y) - S(Z) - S(D) T(Z) = S(Z) - S(C) - S(B) SS(X) = T(X) + S(A) + S(B) SS(Y) = T(Y) + S(C) + S(D) SS(Z) = T(Z) + SS(X) + SS(Y) In the first embodiment, the structure adjustment is performed according to the status of the binary tree 31, because a plurality of processing types are combined to change the structure of a specified range of the binary tree 31. More specifically, there are two structure adjustment methods. One method prevents a binary tree from growing vertically to keep the time of one operation within a specified time (e.g., red-black tree). The other method reduces the total time of the operation (that is, reduces the average time for one operation) although it does not keep the time of one operation within a specified time (e.g., splay tree). In either case, a change in the structure may be processed by a combination of the above processing types (operation units). [ 1-2-4-5. Example of Structure Adjustment ] The following shows splay tree (splaying) as an example of structure adjustment (claim 17, and explains how splaying changes the structure of a binary tree and how the partial interval length of each node is changed during this change. Splaying changes the structure of a binary tree so that any particular node (target node) becomes the root (Reference: Robert Endre Tarjan. "4.3 Self-Adjusting binary trees (pp. 53 - 56)" in Data Structures and Network Algorithms). Splaying is usually applied to nodes retrieved, added, or deleted; more specifically, it is applied to a node where a key match condition occurred during retrieval (or a node last accessed when no key match condition occurred), a node added during node addition, or the parent node of a node deleted during node deletion. During splaying, one of rotation, double rotation (zig-zig), and double rotation (zig-zag) which satisfies the condition is applied repeatedly, with the target node as the node farthest from the root, until the target node becomes the root. Figure 29 shows an example of a binary tree. In this figure, a circle indicates a node, and a triangle indicates a sub-tree whose root is indicated by a circle. Binary tree data like this is structured in a list format by connecting the data items in the nodes via pointers. Figure 30 is a conceptual diagram showing the format of data contained each node. As this figure shows, data contained in each node consists of a pointer to the right child, a pointer to the left child, a pointer to the higher-level node (parent), and the partial interval length of the node. Figure 31 is a conceptual diagram showing how data items in the nodes, which are part of the binary tree shown in Figure 29, are connected via pointers. As this figure shows, the partial interval length of each node (a, b, c, A, B, C) is represented by a symbol immediately followed by a number, such as a1, b1, c1, A1, B1, and C1. When the partial interval length a1 is updated, a new subscript follows the symbol a, such as a2 or a3. The following shows an example of execution of splaying for node a, shown in Figure 29. The net interval length of node a before splaying is calculated by subtracting the partial interval length (F1) of node F, which is the right child of node a, and the partial interval length (E1) of node E, which is the left child of node a, from the partial interval length of node a (a1), as shown below. [Formula 21] a1 - F1 - E1 During execution of splaying, double rotation (zig-zig) is first applied to nodes a, b, c, E, and D. This operation replaces node a with node c, and moves node a to the right child position of node d. Figure 32 shows how the binary tree looks like after double rotation (zig-zig) has been applied. This operation changes the partial interval lengths of nodes c, b, and a, indicated by bold circles, as follows: [Formula 22] c2 = c1 - b1 + D1 b2 = c1 - a1 + E1 a2 = c1 When splaying is executed, the binary tree is restructured by changing the pointers that link the data items contained in the nodes. Figure 33 shows how the pointers in the data items at node d and lower-level nodes in Figure 31, which have been restructured as shown in Figure 32, are linked. In this figure, while node B, which is the left child of node d, is not changed, node a, which is the right child of node d, and the lower-level nodes have been changed. Then, double rotation (zig-zag) is applied to nodes a, d, e, F, and b. This operation replaces node a with node e, and moves node a to the right child position of node f. Figure 34 shows how the binary tree looks like after double rotation (zig-zag) has been applied to the binary tree shown in Figure 32. This operation changes the partial interval lengths of nodes e, d, and a, indicated by bold circles, as follows: [Formula 23] e3 = e1 - d1 + F1 d3 = d1 - a2 + b2 a3 = e1 Then, double rotation (zig-zag) is applied to nodes a, f, g, and e. This operation replaces node a with node g, and moves node a to the left child position of node h. Figure 35 shows how the binary tree looks like after double rotation (zig-zag) has been applied to the binary tree shown in Figure 34. This operation changes the partial interval lengths of nodes g, f, and a, indicated by bold circles, as follows: [Formula 24] g4 = g1 - f1 + e3 f4 = f1 - a3 + d3 a4 = g1 Finally, rotation is applied to nodes a, h, and g. This operation replaces node a with node h, and moves node a to the root position. Figure 36 shows how the binary tree looks like after rotation has been applied to the binary tree shown in Figure 35. This operation changes the partial interval lengths of nodes h and a, indicated by bold circles, as follows: [Formula 25] h5 = h1 - a4 + g4 a5 = h1 In this example, the execution of splaying moves target node a to the root and, at the same time, reduces the length of a path from node b, c, d, e, f, or g, which was on a path from target node a to the old root node h, to the root, thereby enabling various types of operation on this binary tree to be performed speedily (claim 17). Comparing the binary tree before splaying (Figure 29) with the binary tree after splaying (Figure 36) indicates that the length of a path from each node to the root has been changed as shown below. Node Before splaying After splaying b 6 3 c 5 4 d 4 2 e 3 3 f 2 1 g 1 2 During execution of this splaying, the partial interval length of each node is calculated as described below, based on the partial interval length of each node before splaying shown in Figure 29. For node b: [Formula 26] b2 = c1 - a1 + E1 For node c: [Formula 27] c2 = c1 - b1 + D1 For node d: [Formula 28] d3 = d1 - a2 + b2 This formula is expanded as follows: [Formula 29] d1 - (c1) + (c1 - a1 + E1) Terms are eliminated as follows: [Formula 30] d1 - a1 + E1 For node e: [Formula 31] e3 = e1 - d1 + F1 For node f: [Formula 32] f4 = f1 - a3 + d3 This formula is expanded as follows: [Formula 33] f4 = f1 - (e1) + (d1 - a1 + E1) The formula is changed as follows: [Formula 34] f4 = f1 - e1 + d1 - a1 + E1 Similarly, for node g: [Formula 35] g4 = g1 - f1 + e3 [Formula 36] g4 = g1 - f1 + e1 - d1 + F1 Therefore, for node h: [Formula 37] h5 = h1 - a4 + g4 This formula is expanded as follows: [Formula 38] h5 = h1 - (g1) + (g1 - f1 + e1 - d1 + F1) Terms are eliminated as follows: [Formula 39] h5 = h1 - f1 + e1 - d1 + F1 The net interval length of node a after splaying is calculated by subtracting the partial interval length (h5) of node h, which is the right child of node a, and the partial interval length (f4) of node f, which is the left child of node a, from the partial interval length (a5) of node a. [Formula 40] a5 - h5 - f4 This formula is expanded as follows: [Formula 41] h1 - (h1 - f1 + e1 - d1 + F1) - (f1 - e1 + d1 - a1 + E1) Terms are eliminated as follows: [Formula 42] a1 - F1 - E1 Note that this formula is equivalent to formula 21 that gives the net interval length before splaying. Conversely, in Figure 29 where the binary tree before splaying is shown, the sum of the lengths of the intervals to the left of node a is as follows: [Formula 43] E1 + (b1 - a1) + (c1 - b1) + (d1 - c1) + (f1 - e1) Terms are eliminated as follows: [Formula 44] E1 - a1 + d1 - e1 + f1 This is equal to the partial interval length (f4) of node f after splaying, indicating that the relative position of the interval of node a is not affected by splaying. [ 1-2-4-6. Application of Splaying ] Splaying described above allows the following procedure to be used for various types of processing already described. First, when identifying an interval corresponding to the specified node, execution of splaying on the binary tree moves the specified node to the root (claim 21). This makes it easy to identify the specified node which is now the root, because the beginning position and the ending position are identified as follows. When the left-end position of the whole interval is 0, the beginning position is the position immediately following the partial interval length of the left child of the specified node, and the ending position is the position corresponding to the value obtained by subtracting the partial interval length of the right child of the specified node from the partial interval length of the specified node. When changing an interval length, splaying is applied to the node whose interval length is to be changed to make the node the root node. Then, the partial interval length of the root node is increased or decreased (claim 8). This procedure eliminates the need to change the partial interval length of a non-root node, making the processing simpler. When adding a node and adjusting the associated partial interval lengths, splaying is applied to the nodes immediately before and after the node to be added to make them the root node one at a time. Then, the node immediately before the node to be added is the left child, and the node immediately following the node to be added is the right child. The partial interval length of the node to be added is calculated by adding the length of the new interval to the partial interval lengths of the right and left children (claim 11). For example, Figure 37 shows a part of the binary tree before an interval is added through splaying. Assume that this part of the binary tree is located at a non-root position within a larger binary tree. As shown in this figure, an interval indicated by node X is added immediately after the interval corresponding to node L. In this case, node X should be added to the leftmost position in the subtree whose root is the right child of node L, as the left child of the left most node of the subtree indicated by R. Conceptually, this is equivalent to adding node X between node L and node R. First splaying is executed to make node R the root node; node R is the node which will come immediately after node X. Then splaying is executed to make node L the root node; node L is the node which will come immediately before node X. Figure 38 shows how the binary tree looks like after splaying have been executed twice for the binary tree shown in Figure 37. Then, node X is added with node L being the left child and immediately-following node R being the right child. Figure 39 shows how the binary tree looks like after the interval has been added through splaying. The partial interval length of node X in Figure 39 is calculated by adding the length of the new interval to the partial interval length of node L (the root node) in Figure 58 where the binary tree after splaying is shown. The partial interval length of node L in Figure 39 is calculated by subtracting the partial interval length of node R from the partial interval length of node L in Figure 38. In Figure 37, splaying may be executed on node L first, followed by the splaying with node R, to make the binary tree as shown in Figure 40, and then node X may be added as the right child of node L. Figure 41 shows the binary tree to which node X has been added as the right child of node L. In this state, the nodes on the path from the parent of node X to the root are node L and node R. This means that, when the partial interval lengths are changed (increased), those of only these two nodes need be changed, making the procedure simpler (claim 11). This operation can be symmetrically applied in Figure 40, where node X may be added as the right child of node L. If node L in Figure 40 has has no right child (that is, there is no right-side sub-tree whose root is node R), node X may be used as the right child of node L as shown in Figure 43, as well as node L may be used as the left child of node X as shown in Figure 42. In addition, when node addition and associated partial interval length adjustment are involved, processing may be performed as follows. First, a node corresponding to the new interval is added using some method, with the net interval length of the node being 0. The partial interval length of the added node is the sum of the partial interval lengths of the right and left children. Then, splaying is executed to move the added node to the root of the binary tree, and the partial interval length of the node moved to the root is increased by the net interval length of the added interval (claim 12). This means that the partial interval length of the node need be increased only once during execution of a desired addition algorithm, increasing the processing speed. Splaying may also be used to delete a node (interval). To do so, the node to be deleted is first moved to the root through execution of splaying. Figure 44 shows how the binary tree looks like after node X, which is to be deleted, has been moved to the root through execution of splaying. In this figure, node X to be deleted corresponds to the interval immediately before node R. Then, node R immediately after node X, which is to be deleted, is moved to the root through execution of splaying. Figure 45 shows how the binary tree looks like after node R, which immediately follows node X to be deleted, has been moved to the root through execution of splaying. And, the partial interval length of node R, which is now the root, is decreased by the net interval length of node X and, finally, node X is deleted (claim 14) Figure 46 shows how the binary tree looks like after node X has been deleted. This means that only the partial interval length of the root node need be adjusted during deletion, increasing the processing speed. [ 1-2-4-7. Balanced Binary Tree ] The following explains, more specifically, how the partial interval length of each node is changed during binary tree structure adjustment (rebalancing) when a balanced binary tree, one of balanced search trees, is used as a binary tree representing intervals. (Reference: Robert Endre Tarjan. "4.2 Balanced binary trees (pp. 48 - 53)" in Data Structures and Network Algorithms). Operations for rebalancing after node insertion or deletion are: (a) Promote, demote (b) Single rotation (c) Double rotation including two single rotations Rebalancing is performed by sequentially applying a combination of these operations. These operations change partial interval lengths as follows : (a) Promote and demote, which do not change the structure of a binary tree, do not change the partial interval length. (b) Single rotation is equivalent to rotation in this invention. So, formula 15 given above is used to change the partial interval length. (c) Double rotation is equivalent to double rotation (zig-zag) in this invention. So, formula 17 given above is used to change the partial interval length. Balancing after inserting one node requires a series of promote operations ended by up to two single rotations (pp. 50 in the reference given above), while balancing after deleting one node requires a series of demote operations ended by up to three single rotations (pp. 51 in the reference given above). The following explains an example of rebalancing after insertion. The tree in Figure 47 is used as an example of a balanced binary tree. In this tree, each node has an integer rank such as 1 or 2, as shown in Figure 47. The rank of node x is represented by rank (x), the parent of node x is represented by p (x), and the grandparent of node x is represented by p2 (x). Then, the following must be satisfied: (1) When node x has the parent: [Formula 45] Condition 1: rank (x) ≦ rank (p(x)) ≦ rank (x) + 1 (2) When node x has the grandparent: [Formula 46] Condition 2: rank (x) < rank (p2(x)) (3) When node x is an external node: [Formula 47] Condition 3: rank (x) = 0 and when node x has the parent: rank (p2 (x)) = 1 A node whose parent has a rank that is larger than that of the node by 1 or that is undefined is called a black node, while a node whose parent has a rank equal to that of the node is called a red node. In Figure 47, a black node is represented by a solid line, whereas a red node is represented by a dashed line. Information on a node in this tree contains a one-bit field where the color for the node is stored. Figure 48 shows the format of information on a node in the balanced binary tree example. The nodes in this tree are linked by pointers, as in Figure 33. In the following discussion, the partial interval length of each node (a, b, c) is represented by the same symbol immediately followed by a numerical subscript (a1, b1, c1). When the partial interval length a1 is updated, a new numerical subscript immediately follows the symbol, such as a2 and a3. For example, when (a node representing) a new interval x is inserted to the left of the interval represented by node f of the tree in Figure 47, the tree is first changed to the one shown in Figure 49. In this case, the partial interval length of each node is changed as follows, as explained in "1-2-4-2. Interval Addition Step": [Formula 48] f2 = f1 + x1 g2 = g1 + x1 e2 = e1 + x1 b2 = b1 + x1 Because added node x and its parent are both red nodes, the ranks are as follows: [Formula 49] rank (x) = rank (f) = rank (g) This contradicts condition 2 (formula 46), meaning that structure adjustment is required. Figure 50 shows rebalancing that is performed when condition 2 is not satisfied. That is, nodes x, f, g, and h in Figure 49 correspond to (a) in Figure 50. Therefore, the color of node g is changed to red, and the colors of child nodes f and h are changed from red to black so that rank (g) is one level higher than other nodes. Figure 51 shows how the binary tree looks like after the node colors have been changed. In this state, both node g and its parent node e become red, requiring further adjustment. That is, because node a is black, nodes g, e, b, and a correspond to (b) in Figure 50 (symmetric). So, single rotation is performed once to change node b to red, and node e to black. Figure 52 shows how the binary tree looks like after single rotation has been performed and node colors have been changed. This is rotation on nodes e and b, and the partial interval lengths are changed as shown below. [Formula 50] b3 = b2 - e2 + c1 e3 = b2 In Figure 52, contradictions to conditions 1, 2, and 3 are resolved, and structure adjustment (re-balancing) is completed. In the above structure adjustment, the net interval lengths of nodes e and b are as follows in Figure 47 where the binary tree before node insertion is shown. [Formula 51] e: e1 - c1 - g1 b: b1 - a1 - e1 Note that, in Figure 52 where the binary tree after node insertion and structure adjustment is shown, the net interval lengths of nodes e and b remain the same as before, as described below. [Formula 52] e: e3 - b3 - g2 = b2 - (b2 - e2 + c1) - (g1 + x1) = e2 - c1 - g1 - x1 = (e1 + x1) - c1 - g1 - x1 = e1 - c1 - g1 b: b3 - a1 - c1 = (b2 - e2 + c1) - a1 - c1 = (b1 + x1) - (e1 + x1) - a1 = b1 - a1 - e1 [ 1-2-4-8. Comparison with Prior Arts ] A prior art is known which allows the sequence of a node to be obtained from the node in the binary tree (U.S. patent 5384568). This prior art (hereafter called a "prior system") is common to the present invention in that sequenced nodes are processed. However, the prior system processes only the sequence of nodes, not intervals; in the prior system, each node contains the number of nodes of a sub-tree whose root is the node itself. The present invention is superior to the prior system in that intervals are processed. In addition, the prior system follows a path from a specified node to the root to calculate the sequence number of the specified node from its address; however, it cannot retrieve a node when a value within an interval is given. The present invention is superior to the prior system in that it can retrieve a node when a value within an interval is given. To execute this retrieval, the present invention uses a method different from that used in the prior system; that is, it follows a path from the root to the specified node. The prior system adds a node only to the beginning (leftmost position), deletes a node only from the end (rightmost position), and moves any node to the beginning (leftmost position) during update operation; however, it does not add or delete a node to or from other positions. The present invention is superior to the prior system in that it can add or delete a node (interval) to or from any position. [ 2. Second Embodiment ] A binary tree representing text may be configured in the data processing system in which text consisting of a plurality of lines is held. The second embodiment corresponds to claim 18. That is, the first binary tree represents the sequence of lines. This binary tree contains a plurality of nodes, each corresponding to a line, with the interval length of each node being 1. A second binary tree represents a code string of each line. Each secondary binary tree is associated with the corresponding node in the first binary tree through a pointer. Figure 53 shows a binary tree representing the following lines. xyz st (blank line) (blank line) abcdef In the second embodiment, the first binary tree representing the sequence of lines and each of the second binary trees representing the contents of each line are created separately. Therefore, when either the sequence of lines or the content of each line is changed, there is no need for changing the other type of binary tree. This ensures efficient code string processing. When the user edits code strings with a text editor or some other program, it is necessary to specify the number of a line (interval) relative to one of the ends (start of end) of a code string and to specify the number of a code relative to one of the ends of the line before accessing the code determined by them. It is also necessary to change a particular code and to insert or remove one or a plurality of characters before or after the corresponding character. In addition, lines must be able to be added or removed. The data processing system in the seventh embodiment is suitable for this type of processing. Representing a consecutive area of the same code with a single node with the interval length of 2 or larger further increase memory and processing efficiency. [ 3. Third Embodiment ] It is possible to represent a code string, such as text consisting of a plurality of lines, with a single binary tree. The third embodiment corresponds to claim 19. In this case, the maximum number of characters of a line is fixed to a large number, n, and blanks are padded in the positions containing no character. A binary tree is composed of a sequence of code strings beginning at the start (or the end). Then, the j-th code from the beginning of line i begins at a position in the whole text represented by the following formula. [Formula 53] (i - 1) x n + j Figure 54 is an example of a binary tree representing the above text with n being 10. In this way, data may be represented by a single simply-structured binary tree. In addition, because a sequence of a plurality of the same character or a sequence of blanks are represented by a single node with the character as the label and with the interval length represented by the number of consecutive characters, processing and memory efficiency are increased. For example, in Figure 54, consecutive eight blanks and two blank lines are represented as 28 blanks by a single node. The data processing system in the third embodiment is particularly suitable when data containing many sequences of the same code. In addition, compressing bit-string data, such as a facsimile image, with the use of a binary tree in the third embodiment allows any bit in the bit string to be identified as 1 or 0. This is different from a conventional technique. That is, a bit string usually consists of a plurality of 0s and 1s that appear alternately. In a conventional method, bit data is compressed by sequentially recording the numbers of consecutive 0s and 1s (run-length-encoding). In this run-length-encoding method, it is necessary to restore all the preceding bits or to accumulate the lengths of the intervals in order to determine the value of a bit (0 or 1) or to restore a portion of data that appears in the middle of data. As contrasted with this method, a binary tree in the third embodiment requires only as many nodes as the number of intervals and, in addition, makes it possible to restore, or determine the value of, a bit that is in the middle of data. f 4. Other Embodiments ] This invention is not restricted to the preferred embodiments described herein, but may be embodied in other specific forms, such as those described below, without departing from the essential characteristics thereof. For example, although only alphabetically-sequenced dictionary data or trees consisting of alphabetic characters are used in the above embodiments, any type of characters, such as Japanese characters or Hankul alphabet characters, may be used in a code string. Also, a code string in this invention is not restricted to a character string. It may be any type of code, such as a voice pattern code or DNA base layout code. In addition, a substring in a code string may be processed indirectly, for example, by marking a boundary through a pointer. This method eliminates the need to process a part of code string data, for example, by transferring it to another storage area. The label attached to an edge or a node in a tree or binary tree need not be one-character code. Although data may be retrieved through a match in the leading string based on the trailing string in the substring, data may also be retrieved through a match in the trailing string based on the leading string. In that case, "trailing string" and "leading string" should be exchanged in this specification. During processing, characters are obtained from the end of a key string. The leading (preceding) node and the trailing (following) node in the first embodiment should also be exchanged. Thus, this invention provides a data processing system which processes data efficiently.

Claims: A data processing system for processing data of a code string divided into a sequence of intervals each having a length defined by the number of code elements in the interval in order to find a specified position in said code string, said data processing system comprising a binary tree generating means (32) for generating a binary tree (31) having a plurality of nodes representing respective positions of said intervals in said code string, said nodes being allocated to respective ones of said intervals in said code string, said nodes being connected from a root node of said tree to leaf nodes thereof in a tree-like structure, each node between said root node and said leaf nodes being a root node of a sub-tree and being connected to a preceding node defined as the left-child node corresponding to an interval in said code string preceding the interval corresponding to the node in question and/or to a following node defined as the right-child node corresponding to an interval in said code string following the interval corresponding to the node in question, characterized by : each node being assigned a partial interval length defined as the sum of the length of the interval corresponding to the node in question and of the lengths of the intervals corresponding to the nodes, if any, on the leaf side of the node in question, means for identifying the node corresponding to the interval including the specified position by processing the nodes starting from the root node, said means including: means for selecting the left-child node of the current node as the next current node if the specified position is less than or equal to the partial interval length of the left-child node; means for selecting the right-child node as the next current node and for updating the representation of the specified position according to the position of the right-child node relative to the current node, if the specified position is greater than the partial interval length of the current node minus the partial interval length of the right-child node; and means for identifying that the specified position is included in the interval corresponding to the current node if the specified position is greater than the partial interval length of the left-child node and less than or equal to the partial interval length of the current node minus the partial length of the right-child node. A data processing system as claimed in claim 1, further comprising an interval retrieving means (33) for identifying which interval in said sequence of intervals includes said specified position in said code string, wherein said interval retrieving means comprises: means for selecting the current node by means of a pointer; means for moving said pointer from said root node to a one of said leaf nodes; means for calculating the range of positions in said code string of the interval corresponding to the current node based on the interval length of one or both of said preceding node and said following node directly connected to the leaf-node side of the current node or of a lower-level node which is the said following node; means for comparing the range thus calculated with said specified position; means for moving the pointer to the preceding node as the next current node when the specified position precedes the calculated range; means for moving the pointer to the following node as the next current node when the specified position follows the calculated range; and means for identifying that the specified position is included in the interval corresponding to the current node when the specified position is included in the calculated range. A data processing system as claimed in claim 1, further comprising an identifying means for identifying which interval in said sequence of intervals corresponds to a specified node which is any given node in said binary tree (31), wherein the identifying means comprises: means for selecting the current node by means of a pointer; means for moving said pointer from the current node toward the parent node thereof, which is a higher-level node of said current node, one node level at a time, until said root node is reached, means for adding up the interval length of the current node and the partial interval length of the preceding node or the following node of the current node each time the current node is moved, depending upon whether a child node which is said current node before said pointer is moved is said preceding node or said following node, and means for identifying the interval corresponding to said current node by calculating one or both of a left interval length, which is the total interval length of the nodes preceding said current node in L-C-R order or a right interval length, which is the total interval length of the nodes following said current node in L-C-R order. A data processing system as claimed in claim 1, further comprising identifying means for identifying which interval in said sequence of intervals corresponds to a specified node which is any given node in said binary tree (31), wherein the identifying means moves said current node to said root node by means of splaying. A data processing system as claimed in claim 1, 2, or 3, further comprising a binary tree updating means (34) for updating said binary tree (31) when said interval is changed, according to the contents of the change. A data processing system as claimed in claim 5, wherein said binary tree updating means (34) comprises: an interval length changing means (41) for changing said interval length; a deleting means (42) for deleting the node corresponding to a deleted interval from said binary tree (31) when said interval is deleted from said code string; and an adding means (43) for adding a node corresponding to an added interval to said binary tree when an interval is added to said code string. A data processing system as claimed in claim 6, wherein said interval length changing means (41) comprises means to change said partial interval length of each node sequentially from said node corresponding to said interval, whose length is to be changed, to said root node by an amount equal to the changed length. A data processing system as claimed in claim 6, wherein said interval length changing means (41) comprises means to move the node corresponding to said interval, whose length is to be changed, to said root node by means of splaying, and to increase or decrease said partial interval length of the root node by an amount equal to the changed length. A data processing system as claimed in claim 6, wherein said adding means (43) comprises: means to add said node corresponding to said interval, which is to be added, to said binary tree (31), means to adjust the connection sequence of said nodes, and means to adjust said interval length of each node. A data processing system as claimed in claim 9, wherein said adding means (43) comprises means to use the sum of said partial interval length of said added node and the partial interval length of said lower-level node of the current node as said partial interval length of said added node and, for the nodes on the path from the parent node to which the added node is connected directly as a lower-level node to said root node, and means to add the interval length of the added node to the partial interval length of each of the nodes. A data processing system as claimed in claim 6, wherein said adding means (43) comprises: means to move the nodes immediately preceding and following a position, at which a node is to be added, to said root node by means of splaying one at a time, means to add said node corresponding to an interval, which is to be added, at a position immediately following said immediately-preceding node or at a position immediately before said immediately-following node, and means to add the interval length of the added node to the partial interval length of said immediately-preceding or immediately-following node of said added node, as necessary. A data processing system as claimed in claim 6, wherein said adding means (43) comprises: means to add said node corresponding to said interval, which is to be added, to said binary tree with the interval length of the node being 0, means to move the added node to the root node of said binary tree by means of splaying, and means to increase the partial interval length of the node, moved to the root node, by the interval length of the added interval. A data processing system as claimed in claim 6, wherein said deleting means (42) comprises: means for deleting from said binary tree said node of said interval to be deleted, means for adjusting the connection among the nodes, and means for adjusting said interval length of each node. A data processing system as claimed in claim 6, wherein said deleting means (42) comprises: means for moving said node corresponding to said interval, which is to be deleted, to the root node by means of splaying, means for moving the node immediately preceding or following the node, which is to be deleted, to the root node by means of splaying, means for decreasing the partial interval length of said immediately-preceding or immediately-following node, which is the root node, by the interval length of said node to be deleted, and means for deleting said node to be deleted. A data processing system as claimed in claim 5, further comprising a structure adjusting means (45) for adjusting the structure of said binary tree (31) by changing the connection sequence of said nodes. A data processing system as claimed in claim 15, wherein said structure adjusting means (45) comprises means for conducting rotation, double rotation (zig-zig) and double rotation (zig-zag) as a structure adjustment procedure for changing the structure while maintaining the sequence of said nodes of said binary tree (31). A data processing system as claimed in claim 15, wherein said structure adjusting means (45) comprises means for adjusting said binary tree by means of splaying through which a target node, which is any of said nodes, is moved to said root node. A data processing system as claimed in claim 2, wherein: said code string is text containing a plurality of lines of characters as said code elements, said intervals in said code string are the lines included in the text, and said binary tree generating means (32) comprises means to generate a first binary tree having a plurality of nodes representing the sequence of lines, the nodes of said first binary tree being allocated to respective ones of said lines in the text and a second binary tree having a plurality of nodes representing the sequence of code elements in each line, the nodes of said second binary tree being allocated to respective ones of said characters in the line in question. A data processing system as claimed in claim 2, wherein: said code string is text containing a plurality of lines of characters as said code elements, said lines being of a fixed length, and said binary tree generating means (32) comprises means to set a blank character in a position in said code string where no character is present in the text and means to generate said binary tree (31) by representing each substring of the text with a single node, said node having a sequence of characters and/or blank characters occurring consecutively in the substring in question as a label of said node and having the number of consecutive characters in the substring in question as the length of the interval corresponding to said node. A data processing method for processing data of a code string divided into a sequence of intervals each having a length defined by the number of code elements in the interval in order to find a specified position in said code string, said data processing method comprising a binary tree generating process for generating a binary tree (31) having a plurality of nodes representing respective positions of said intervals in said code string, said nodes being allocated to respective ones of said intervals in said code string, said nodes being connected from a root node of said tree to leaf nodes thereof in a tree-like structure, each node between said root node and said leaf nodes being a root node of a sub-tree and being connected to a preceding node defined as the left-child node corresponding to an interval in said code string preceding the interval corresponding to the node in question and/or to a following node defined as the right-child node corresponding to an interval in said code string following the interval corresponding to the node in question, characterized by : each node being assigned a partial interval length defined as the sum of the length of the interval corresponding to the node in question and of the lengths of the intervals corresponding to the nodes, if any, on the leaf side of the node in question, identifying the node corresponding to the interval including the specified position by processing the nodes starting from the root node, by the following: selecting the left-child node of the current node as the next current node if the specified position is less than or equal to the partial interval length of the left-child node; selecting the right-child node as the next current node, updating the representation of the specified position according to the position of the right-child node relative to the current node if the specified position is greater than the partial interval length of the current node minus the partial interval length of the right-child node; and identifying that the specified position is included in the interval corresponding to the current node if the specified position is greater than the partial interval length of the left-child node and less than or equal to the partial interval length of the current node minus the partial length of the right-child node. A data processing method as claimed in claim 20, further comprising an interval retrieving process for identifying which interval in said sequence of intervals includes said specified position in said code string, wherein said interval retrieving process sequentially: selects the current node by means of a pointer; moves said pointer from said root node to a one of said leaf nodes; calculates the range of positions in said code string of the interval corresponding to the current node based on the interval length of one or both of said preceding node and said following node directly connected to the leaf-node side of the current node; compares the range thus calculated with said specified position; moves the pointer to the preceding node as the next current node when the specified position precedes the calculated range; moves the pointer to the following node as the next current node when the specified position follows the calculated range; and identifies that the specified position is included in the interval corresponding to the current node when the specified position is included in the calculated range. A data processing method as claimed in claim 20, further comprising an identifying process for identifying which interval in said sequence of intervals corresponds to a specified node which is any given node in said binary tree (31), wherein the identifying process: selects the current node by means of a pointer; moves said pointer from the current node toward the parent node thereof, which is a higher-level node of said current node, one node level at a time, until said root node is reached; adds up the interval length of the current node and the partial interval length of the preceding node or the following node of the current node each time the current node is moved, depending upon whether a child node which is said current node before movement is said preceding node or said following node, and identifies the interval corresponding to said current node by calculating one or both of a left interval length, which is the total interval length of the nodes preceding said current node in L-C-R order or a right interval length, which is the total interval length of the nodes following said current node in L-C-R order. A data processing method as claimed in claim 20, 21, or 22, further comprising a binary tree updating process for updating said binary tree (31), when said interval is changed, according to the contents of the change. A data processing method as claimed in claim 23, wherein said binary tree updating process comprises: an interval length changing process (step 353) for changing said interval length; a deleting process (step 351) for deleting the node corresponding to a deleted interval from said binary tree when said interval is deleted from said code string; and an adding process (step 351) for adding a node corresponding to an added interval to said binary tree when an interval is added to said code string. A data processing method as claimed is claim 23, further comprising a structure adjusting process (step 355) for adjusting the structure of said binary tree (31) by changing the connection sequence of said nodes.

Inventors: FUJIHARA MUTSUMI, FUJIHARA, MUTSUMI, Fujihara, Mutsumi, c/o Int. Property Division
Applicants: TOSHIBA KK, KABUSHIKI KAISHA TOSHIBA
Application year: 1995
Main classification: G06F17
IPC codes: G06F17