WO2016072249A1 - 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体 - Google Patents

情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
WO2016072249A1
WO2016072249A1 PCT/JP2015/079476 JP2015079476W WO2016072249A1 WO 2016072249 A1 WO2016072249 A1 WO 2016072249A1 JP 2015079476 W JP2015079476 W JP 2015079476W WO 2016072249 A1 WO2016072249 A1 WO 2016072249A1
Authority
WO
WIPO (PCT)
Prior art keywords
points
coordinates
section
sequence
coordinate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2015/079476
Other languages
English (en)
French (fr)
Inventor
穣 岡嶋
丸山 晃一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Solution Innovators Ltd
Original Assignee
NEC Solution Innovators Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to US15/523,708 priority Critical patent/US20170322998A1/en
Priority to JP2016557686A priority patent/JP6403232B2/ja
Publication of WO2016072249A1 publication Critical patent/WO2016072249A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Definitions

  • the present invention relates to an information processing apparatus, an information processing method, and a computer-readable recording medium on which a program for realizing the information is recorded, and in particular, information for performing efficient search on multidimensional data
  • the present invention relates to a processing device, an information processing method, and a computer-readable recording medium.
  • This kind of rectangular range search plays an important role in applications that handle geographic information, and in multidimensional data analysis. Specific examples are shown below.
  • the location of a restaurant on the map can be represented by two-dimensional data that is a combination of two values (latitude, longitude).
  • latitude, longitude the location of a restaurant on the map
  • using the rectangular range search it is possible to search for all restaurants that fall within the range of longitude 138 to 139 degrees and latitude 35 to 36 degrees.
  • statistical data on employees of a company can be represented by three-dimensional data (age, height, salary annual).
  • age, height, salary annual can be represented by three-dimensional data (age, height, salary annual).
  • the rectangular range search it is possible to search for all employees whose ages are 30 to 40 years old, whose height is 170 to 180 cm, and whose annual income is in the range of 5 to 6 million yen.
  • the report query is a rectangular range search that returns a list of all points contained in the query area.
  • Report queries return a list whose size is proportional to the number of hits if the number of points included in the query area is called the number of hits. Not suitable for. For example, when tens of millions of points are included, all tens of millions of points are output.
  • an aggregation query that returns the results of aggregation of those points is important.
  • the most typical query among various aggregation queries is a count query (count query).
  • This count query is a rectangular range search that returns the number of points included in the query area.
  • statistics include count and total.
  • a statistic regarding a subset of points included in the query is referred to as a “partial statistic”, and a statistic regarding a set of all points included in the query is referred to as an “overall statistic”.
  • a kd tree is known as a typical data structure that can be used for a rectangular range search (see Non-Patent Document 1, for example).
  • the size of the kd tree can be expressed as O (n), that is, a linear size.
  • O (n) the worst time calculation amount of the rectangular range search in the kd tree.
  • n is the number of data
  • d is the number of dimensions.
  • the worst time complexity O (n (d-1) / d ) achieved by the kd tree is the best time complexity of practically sized data structures known so far. is there.
  • the calculation time can be improved.
  • a super-linear size data structure for example, a data structure called range tree can be cited.
  • the rectangular range search can be realized by a two-dimensional data structure called a wavelet tree (see, for example, Non-Patent Document 1).
  • a search is performed in a two-dimensional space, and the amount of time calculation is O (log n) time.
  • Non-Patent Document 1 describes in detail a technique for calculating a statistical quantity in a two-dimensional space using a wavelet tree.
  • the rectangular range search can be realized by various data structures.
  • the worst time calculation amount O (n (d-1) / d ) to be achieved increases either or both of the number of data n and the number of dimensions d. There is a problem that it gets bigger.
  • An example of an object of the present invention is to solve the above-mentioned problem and to realize a rectangular range search that is faster than a kd tree in a linear size for an arbitrary dimension, an information processing apparatus, an information processing method, and a computer-readable It is to provide a recording medium.
  • an information processing apparatus is an information processing apparatus that processes a data structure representing a set of points on a multidimensional space, When a specific multidimensional area is specified as the query area, The query area includes coordinates of the remaining dimensions on the point sequence obtained by arranging the set of points in a line, and excluding one dimension of all the dimensions constituting the multidimensional space.
  • a section search unit for identifying a section which is configured only by points, For the section specified by the section search unit, as a condition for the points that appear in the section to be included in the query region, a totaling unit that specifies a range of coordinate values in the one dimension removed, With the interval specified by the interval search unit and the range of the coordinate value specified by the aggregation unit as inputs, With respect to the coordinate sequence obtained by taking out the coordinates in the one dimension removed at each point of the set of points in the same order as the sequence of the sequence of points, the coordinate sequence input in the coordinate sequence For all coordinates that appear in the interval and are included in the range where the value is entered, Calculating a statistic about a set of points corresponding to all the coordinates; It is characterized by having.
  • an information processing method for processing a data structure representing a set of points on a multidimensional space
  • A When a specific multidimensional area is designated as the query area, The query area includes coordinates of the remaining dimensions on the point sequence obtained by arranging the set of points in a line, and excluding one dimension of all the dimensions constituting the multidimensional space.
  • Steps and (C) Using as input the section identified in the step (a) and the range of the coordinate value identified in the step (b), With respect to the coordinate sequence obtained by taking out the coordinates in the one dimension removed at each point of the set of points in the same order as the sequence of the sequence of points, the coordinate sequence input in the coordinate sequence For all coordinates that appear in the interval and are included in the range where the value is entered, Calculating a statistic for the set of points to which all the coordinates correspond; and It is characterized by having.
  • a computer-readable recording medium is a program for performing information processing by a computer on a data structure representing a set of points on a multidimensional space.
  • a computer-readable recording medium on which is recorded In the computer, (A) When a specific multidimensional area is designated as the query area, The query area includes coordinates of the remaining dimensions on the point sequence obtained by arranging the set of points in a line, and excluding one dimension of all the dimensions constituting the multidimensional space. A section consisting only of points, identifying a section, and (B) For the section specified in the step (a), a range of coordinate values in the one dimension that has been removed is specified as a condition for including a point appearing in the section in the query area.
  • Steps and (C) Using as input the section identified in the step (a) and the range of the coordinate value identified in the step (b), With respect to the coordinate sequence obtained by taking out the coordinates in the one dimension removed at each point of the set of points in the same order as the sequence of the sequence of points, the coordinate sequence input in the coordinate sequence For all coordinates that appear in the interval and are included in the range where the value is entered, Calculating a statistic for the set of points to which all the coordinates correspond; and A program including an instruction for executing is recorded.
  • FIG. 1 is a block diagram showing a schematic configuration of an information processing apparatus according to an embodiment of the present invention.
  • FIG. 2 is a block diagram showing a specific configuration of the information processing apparatus according to the embodiment of the present invention.
  • FIG. 3 shows an example of a two-dimensional plane from which the kd tree is based.
  • 4A shows an example of a kd tree obtained from a two-dimensional space
  • FIG. 4B shows an example of a sequence P of points obtained from the kd tree.
  • FIG. 5 is a diagram showing an example of a wavelet tree used in the embodiment of the present invention, and FIGS. 5A and 5B show wavelet trees having different dimensions.
  • FIG. 6 is a flowchart showing the operation of the information processing apparatus according to the embodiment of the present invention.
  • FIG. 6 is a flowchart showing the operation of the information processing apparatus according to the embodiment of the present invention.
  • FIG. 7 is a flowchart showing the operation of the function find_intervals (v, Q) for recursively searching for intervals.
  • FIG. 8 shows a function aggregate_interval (v, s , e, l qf , u qf ).
  • FIG. 9 is a diagram illustrating changes in the number of search nodes and the number of included dimensions in the case of two dimensions.
  • FIG. 10 is a diagram showing a comparison in calculation amount between the present invention and the conventional method.
  • FIG. 11 is a block diagram illustrating an example of a computer that implements the information processing apparatus according to the embodiment of the present invention.
  • the kd tree is a binary search tree for handling multidimensional data.
  • the feature of the kd tree is that the entire space is divided into two in order from each dimension from dimension 1 to dimension d.
  • the tree structure represents a recursive division of space, and each node of the binary search tree is associated with a partial region.
  • the partial region R (v) associated with each node v is referred to as a “cover region” of the node.
  • the points existing in the subtree having the node v as a root are included in the cover region R (v) of v.
  • a kd tree can hold a statistic of a set of points included in a subtree rooted at that node in each node. For example, when it is desired to calculate the count query at high speed, the number of points included in the subtree rooted at each node is stored in that node.
  • the rectangular range search in the kd tree is realized as follows. First, starting from the root node of the entire tree, it is determined whether or not the cover area associated with the child node in each internal node overlaps with the query area, and only when it overlaps, moving to that child node is repeated. .
  • the movement to the child node corresponds to dividing the cover area into two parts in a specific dimension.
  • the statistic of the point included in the subtree stored in the node is stored as a partial statistic. . This is because the points included in the subtree are included in the cover area, and the points are also included in the query area at this time. Since this statistic is a statistic regarding a subset of points included in the query area, it is a partial statistic.
  • the node search is finished. At this time, by summing up all these partial statistics, the overall statistics regarding all points included in the query area are calculated and output.
  • the number of included dimensions of the cover area is h” when included in h dimensions among d dimensions. Further, when the number of inclusion dimensions is d, that is, when all dimensions are included, the cover region is called completely included.
  • the number of inclusion dimensions is the number of conditions satisfied among the d range conditions.
  • the kd tree is a technique for dividing a space until the number of inclusion dimensions reaches d, that is, until all d of the range conditions are satisfied.
  • the search result is obtained by combining the statistics of the nodes whose cover area is completely included in the given query area.
  • the cover area is partially included in the query area, but it is necessary to follow all the nodes that are not completely included, but the number of such nodes is O (n (d-1) / d ). For this reason, the worst time complexity of the kd tree is O (n (d-1) / d ).
  • the present invention is characterized in that the search in the kd tree is stopped before the cover area is completely included in the query area, and the search is shifted to the search in the wavelet tree.
  • the space is not divided until the number of inclusion dimensions reaches d, but the space is divided until the number of inclusion dimensions reaches d-1.
  • a fast search can be performed by finding coordinates satisfying the range condition of dimension f using the wavelet tree for dimension f. Realize.
  • the present invention unlike the conventional method of tracing the kd tree to the end, the number of nodes to be traced is reduced, and a rectangular range search faster than the kd tree is realized.
  • n 8
  • all coordinates are represented by integers of [0,7]
  • the present invention can also be applied to a general multidimensional space whose coordinates are not represented by integers.
  • n points represented by arbitrary real numbers can be converted to integer coordinates in the range [0, n-1], and the coordinates can be converted to By using this, a rectangular range search can be realized. Therefore, the present invention can be applied to a general multidimensional space represented by a real number by using the conversion to the rank space. Note that the conversion to the rank space is described in Non-Patent Document 1, for example.
  • the present invention can be applied even if conversion to the rank space is not performed as long as the value can be expressed in binary representation of 1 and 0. That is, when the number of data is n, the present invention can be applied even to data whose coordinate value range is out of the range of [0, n ⁇ 1].
  • the present invention in order to perform a theoretical analysis of the calculation amount, only the range of [0, n-1] is described, and in practice, the range of [0, n-1] is used.
  • the present invention can be applied without any problem even if it is not limited.
  • prefix is obtained by extracting only the high-order bits when an integer is represented in binary representation.
  • prefix of the upper h bits of the integer is represented by a combination of h 1's and 0's and (l-h) *. * Is a wild card, indicating that either 1 or 0 is acceptable.
  • An integer starting with a specific prefix corresponds to the integer being included in a specific continuous range.
  • the length l prefix only corresponds to one integer.
  • a range of coordinate values and an interval of subscripts on the column are strictly distinguished.
  • the range of coordinate values and the subscript interval on the column are represented by two pairs of numbers.
  • [l, u] is called a “range”
  • l and u are the coordinates.
  • Value is the coordinates.
  • [s, e] is referred to as a “section”
  • s and e are subscripts relating to the column.
  • FIG. 1 is a block diagram showing a schematic configuration of an information processing apparatus according to an embodiment of the present invention.
  • the information processing apparatus 100 in the present embodiment shown in FIG. 1 is an apparatus that processes a data structure 40 that represents a set of points in a multidimensional space.
  • the information processing apparatus 100 includes a section search unit 10, a totaling unit 20, and a coordinate string totaling unit 30.
  • the section search unit 10 functions when a specific multidimensional area is designated as the query area.
  • the query area is expressed by a combination of d ranges corresponding to each dimension, for example.
  • the interval search unit 10 is on a point sequence P obtained by arranging a set of points in a row, and the coordinates of each remaining dimension excluding one dimension out of all dimensions constituting the multidimensional space are query regions.
  • the section comprised only by the point contained in is identified.
  • the section search unit 10 includes zero or more subscript sections on the column P including the points that satisfy the condition (d-1) among the d conditions for the points to be included in the query region. Identify.
  • the section search unit 10 outputs the identified section to the counting unit 20.
  • the totaling unit 20 specifies a range of coordinate values in one excluded dimension as a condition for being included in the query area for the section specified by the section search unit 10,
  • the section specified by the section search unit 10 is output to the coordinate string totaling unit 30.
  • the totaling unit 20 includes these points in the query area for the dimension f corresponding to the last range condition that is not satisfied by the points included in each section of the point sequence P specified by the section searching unit 10. Specify the range of coordinate values that will be the range condition necessary to Then, the totaling unit 20 causes the coordinate sequence totaling unit 30 corresponding to the dimension f to receive the coordinate values that serve as the range condition regarding the subscript interval on the column P identified by the interval search unit 10 and the coordinate value of the dimension f. A query is given, given a range.
  • the coordinate string totaling unit 30 functions when a section (subscript section) specified by the section searching unit 10 and a range of coordinate values in the dimension f are input.
  • the coordinate sequence totaling unit 30 is input with respect to the coordinate sequence obtained by extracting the coordinates in the dimension f at each point of the set of points in the same order as the sequence of the sequence P of points. For all the coordinates that appear in the interval and are included in the range in which the value is input, a statistic relating to the set of points corresponding to these coordinates is calculated.
  • the coordinate string totaling unit 30 outputs the calculated statistics to the totaling unit 20.
  • the multidimensional space is divided only until (d-1) conditions among the d conditions representing the query region are satisfied.
  • the amount of calculation required for dividing the query area is reduced. For this reason, according to the information processing apparatus 10, it is possible to realize a rectangular range search for an arbitrary dimension d with a linear size and faster than a kd tree.
  • FIG. 2 is a block diagram showing a specific configuration of the information processing apparatus according to the embodiment of the present invention.
  • the information processing apparatus 100 includes a storage unit 43, an input reception in addition to the section search unit 10, the totaling unit 20, and the coordinate string totaling unit 30 described above.
  • Unit 50 and output unit 60 are included in the information processing apparatus 100.
  • coordinate string totaling units 30-1 to 30-d provided for each dimension are provided.
  • Each of the coordinate string totaling units 30-1 to 30-d calculates a statistic regarding the set of points when the corresponding dimension matches the dimension of the section specified by the section searching unit 10.
  • coordinate string totaling unit 30 when the coordinate string totaling unit is not individually specified, it is expressed as “coordinate string totaling unit 30”.
  • the input receiving unit 50 receives an input of a query area from the outside, and outputs this to the section searching unit 10.
  • the storage unit 43 stores a data structure 40.
  • the data structure 40 includes a section search data structure 41 used for specifying a section by the section search unit 10 and a coordinate sequence tabulation data structure 42 used for calculation of statistics by the coordinate sequence tabulation unit 30. And have.
  • the section search unit 10 inquires the storage unit 43 and acquires the section search data structure 41.
  • the section search data structure 41 satisfies the condition (d-1) among the d conditions representing the query area on the point string P by the section search unit 10 when the query area is designated. It is a data structure for specifying a section including a point.
  • the section search data structure 41 includes a data structure represented by a tree structure having nodes. Further, in this data structure, a node is associated with both one of a plurality of cover areas set in a multidimensional space and a section in which a point included in the corresponding cover area is applied on a sequence of points. ing. Specifically, the section search data structure 41 includes a kd tree. In the present embodiment, the section search data structure 41 is not limited to a kd tree, and may be any data structure in which each node of the tree structure is associated with a rectangular area. Other specific examples include a data structure called kdB tree, R tree, and bounding volume volume hierarchy (BVH).
  • kdB tree kdB tree
  • R tree bounding volume volume hierarchy
  • the section search unit 10 calculates a node in which the coordinates of each remaining dimension excluding one dimension at a point existing in the associated cover area among the nodes are included in the query area. Identify. Then, the section search unit 10 specifies a section in which one or more specified nodes are associated.
  • a kd tree can be used as the section search data structure 41.
  • the kd tree is a binary tree in which each node is associated with a rectangular area set in a multidimensional space. This rectangular area corresponds to the cover area described above.
  • the cover area of the root node of the kd tree is the entire area on the grid, [0, n-1] ⁇ [0, n-1] ⁇ [0, n-1] ⁇ ... ⁇ [0, n-1] is there.
  • the depth of each node is reduced by one when the space is divided into two, paying attention to any one dimension, and the divided dimensions are repeatedly selected in the order of 1, 2, 3, ..., d. .
  • the kd tree can be constructed recursively starting from the root node as follows. First, at each internal node, when the dimension used for division at that depth is k, the coordinates of dimension k are examined for all points included in the cover area, the coordinate that is the median value is selected, and the coordinates are Use to divide the cover area into two. That is, when the coordinate is set to t, the cover area is divided into an area where the coordinate of dimension k is smaller than t and an area where the coordinate of dimension k is the same as or larger than t.
  • a kd tree is constructed by recursively applying this division to the left and right child nodes.
  • Each internal node holds the coordinates used for division. Therefore, when this division is repeated and the number of points included in the cover area becomes one, the leaf node associated with this cover area is constructed and held without further division. The leaf node at the end holds the point itself included in the cover area. Further, when each point has a weight, the leaf node similarly holds this weight.
  • the node v may directly hold the value of the cover area, or when the kd tree is searched,
  • the value of the cover area may be dynamically calculated from the coordinates used for the division.
  • any of these definitions may be used in the present embodiment.
  • the description is made using the definition that holds only the coordinates used by the internal nodes of the kd tree for the division, but the present invention is not limited to this.
  • a definition may be used that holds the point itself used for the division by the internal node of the kd tree. Further, as will be described later, the definition is not limited to a leaf node holding one point, and a definition in which a leaf node holds a plurality of points may be used.
  • the above-described point sequence P is obtained by arranging the points included in the set of points in a line so that the points existing in each of the cover regions associated with the node appear continuously in a single line. .
  • the sequence P of points is defined as follows using the constructed kd tree.
  • the points are arranged based on the order in which they are found when searching through the kd tree in-order. That is, starting from the root node of the kd tree, the left subtree is searched first, and then the right subtree is searched through the root node itself.
  • this search order is recursively applied to all nodes, all the points included in the kd tree are accessed once, and P is a sequence obtained by arranging the points in that order.
  • P k is a coordinate sequence obtained by extracting the coordinates of each point in the dimension k in the same order as the arrangement sequence of the point sequence P with respect to the dimension k.
  • FIG. 3 shows an example of a two-dimensional plane from which the kd tree is based.
  • 4A shows an example of a kd tree obtained from a two-dimensional space, and
  • FIG. 4B shows an example of a sequence P of points obtained from the kd tree.
  • n 8 points on a two-dimensional plane represented by a grid of [0,7] ⁇ [0,7].
  • Each point is given a number from 0 to 7, which represents the order in the sequence P of points as will be described later. That is, the point written as 0 represents P [0], which is the first point in the sequence P of points.
  • the thick line drawn on the grid represents the division of the space caused by the nodes of the kd tree, the horizontal thick line represents the division related to dimension 1, and the vertical thick line represents the division related to dimension 2.
  • each point shown in FIG. 3 is stored in a kd tree.
  • nodes with an even depth represent divisions relating to dimension 1
  • nodes having an odd depth represent divisions relating to dimension 2.
  • the formula shown at the top of the internal node represents which coordinate is used to divide the space.
  • an interval I v in a column P of points corresponding to the node is shown.
  • a point represented by a set of coordinates is held instead of the coordinates used for division.
  • the sequence P of points corresponds to the points shown in FIG. 3 and the kd tree shown in FIG.
  • the coordinate sequences P 1 and P 2 are also represented in the same figure.
  • the first line in FIG. 4B represents the value of the subscript i
  • the second line represents the coordinate string P 1
  • the third line represents the coordinate string P 2 .
  • the coordinate string totaling unit 30 first uses the coordinate string totaling data structure 42 and only coordinates included in the input range among a plurality of partial strings obtained from the coordinate string are used. Identify substrings that appear. Then, the coordinate string totaling unit 30 identifies a section that is a section on the identified partial sequence, and in which coordinates appearing in the section input in the coordinate sequence appear, and the section on the identified partial sequence Compute statistics on the set of points to which the appearing coordinates correspond.
  • examples of the partial sequence include those obtained by extracting coordinates whose bit representation of coordinates starts with the same prefix while maintaining the positional relationship between the coordinates.
  • the coordinate string totaling data structure 42 is a data structure that represents the coordinate string P k corresponding to each dimension k from 1 to d.
  • P k is a coordinate sequence obtained by taking out the coordinates of each point in the dimension k in the same order as the arrangement sequence of the sequence P of points with respect to the dimension k.
  • the index string totaling unit 30 inputs a subscript section on the coordinate string Pk and a range of coordinate values, the position on the coordinate string is input. It is a data structure that enables a statistic relating to a set of points to which these coordinates correspond to all coordinates included in a section and included in a range in which a value is input.
  • each node takes one or more specific digit bits in the bit representation of each coordinate appearing in the subsequence, and arranges the extracted bits in the same order as the subsequence. Can be expressed using.
  • the coordinate sequence totaling unit 30 specifies a section on the partial sequence using a sequence of bits representing each node.
  • a wavelet tree can be used as the coordinate string totaling data structure 42.
  • the coordinate string totaling data structure 42 is not limited to the wavelet tree.
  • the coordinate sequence aggregation data structure 42 is included in the interval on the integer sequence and satisfies the range condition. Any data structure that can search for points can be used.
  • other coordinate sequence tabulation data structures 42 include Chazelle's compressed range tree, compressed range tree expanded to external storage, compressed Range B-tree (CRB-tree), and the like.
  • FIG. 5 is a diagram showing an example of a wavelet tree used in the embodiment of the present invention, and FIGS. 5A and 5B show wavelet trees having different dimensions.
  • FIG. 5A shows the wavelet tree w 1 corresponding to the coordinate sequence P 1 and the coordinate sequence P 1
  • FIG. 5B shows the wavelet tree w 2 corresponding to the coordinate sequence P 2 and the coordinate sequence P 2.
  • the table shown on the left of each figure represents a coordinate string.
  • the first line shows the subscript i of the column
  • the second line shows an integer corresponding to the subscript.
  • bit representations of each integer are shown.
  • a wavelet tree corresponding to the coordinate sequence P k of dimension k is defined as a binary tree as follows.
  • the wavelet tree is a binary tree having a depth l.
  • the edge from the parent to the left child corresponds to bit 0, and the edge from the parent to the right child corresponds to bit 1.
  • the root node of the wavelet tree is at depth 0 and corresponds to a coordinate prefix of length 0 bits. Further, it is assumed that the node v at the depth h of the wavelet tree corresponds to the h-bit coordinate prefix ⁇ obtained by concatenating h bits appearing in the path from the root node to the node. All nodes at depth l are leaf nodes. The leaf node corresponds to one integer represented by l bits obtained by concatenating l bits appearing in the path from the root to the node.
  • the node v corresponding to the coordinate prefix ⁇ at the depth h corresponds to the partial sequence P k ( ⁇ ) of the coordinate sequence P k .
  • P k ( ⁇ ) is a partial sequence extracted from the coordinate sequence P k with all the integers starting with the coordinate prefix ⁇ maintained in the same order.
  • the original P k is referred to as a “coordinate sequence”
  • the subsequence P k ( ⁇ ) extracted by paying attention to the coordinate prefix ⁇ is referred to as a “coordinate subsequence”.
  • the wavelet tree w 1 constructed for the coordinate sequence P 1 of dimension 1 and the coordinate sequence P of dimension 2 are used.
  • the wavelet tree w 2 constructed for 2 is used.
  • 5A and 5B show the coordinate prefix ⁇ , the coordinate subsequence P k ( ⁇ ), and the bit sequence B v corresponding to each node.
  • Each element of the coordinate sequence P 1 is represented by 3 bits.
  • the subsequent child nodes can be considered in the same manner.
  • the wavelet tree holds a complete dictionary of bit strings B v for each internal node v.
  • a complete dictionary is a data structure that supports three types of operations called access, rank, and select for a bit string B of length n. These three types of operations are defined as follows.
  • access returns element B [i] of subscript i on B.
  • rank1 returns the number of 1 existing in the range of B [0, i).
  • rank0 returns the number of 0 that exists in the range of B [0, i).
  • select1 returns the position j at which the i + 1th 1 appears on B.
  • select0 returns the position j at which the i + 1th 0 appears on B.
  • a complete dictionary may be called a simple bit vector or rank ⁇ ⁇ ⁇ / select dictionary depending on the literature.
  • the coordinate prefix ⁇ , the coordinate subsequence P k ( ⁇ ), and the bit sequence B v are shown at each node of the wavelet tree.
  • the wavelet tree holds only the complete dictionary of B v and does not need to hold the coordinate prefix ⁇ and the coordinate subsequence P k ( ⁇ ).
  • Non-Patent Document 1 a wavelet tree is defined without using a prefix, but in this specification, a wavelet tree is defined using a prefix for the sake of explanation. In either case, the essential structure of the wavelet tree is the same, and the same operation can be realized.
  • the wavelet tree may not be explicitly configured as a tree structure as long as it has a structure that can be searched as a tree structure, that is, a structure having a plurality of nodes.
  • a technique called wavelet matrix that implements a wavelet tree without dividing a bit string for each node, but the discussion in the present invention holds true even when a wavelet matrix is used.
  • the totaling unit 20 further calculates the statistics (that is, partial statistics) for each section calculated by the coordinate string totaling unit 30. To do. In this case, the totaling unit 20 outputs the overall statistics obtained by the aggregation to the output unit 60 as overall statistics regarding the set of points included in the query area. Thereafter, the output unit 60 outputs the overall statistics output by the totaling unit 20 to an external terminal device, server device, or the like.
  • the query range condition is guaranteed for dimensions other than f. However, it is not guaranteed that the range condition regarding the dimension f is satisfied.
  • such a property is used. That is, for all coordinates that are included in P f [s, e] and whose coordinate values are included in the query range [l qf , u qf ] for dimension f, Compute the statistics of the set. This statistic can be calculated at high speed by using a wavelet tree. This statistic is a point included in P [s, e] and is equal to the statistic of the set of points included in the query. By calculating this statistic for all the intervals, it is possible to obtain an overall statistic regarding the set of all points included in the query.
  • FIG. 6 is a flowchart showing the operation of the information processing apparatus according to the embodiment of the present invention.
  • FIGS. 1 to 5 are referred to as appropriate.
  • the information processing method is performed by operating the information processing apparatus 100. Therefore, the description of the information processing method in the present embodiment is replaced with the following description of the operation of the information processing apparatus 100.
  • the input receiving unit 50 receives an external input for designating the range of the query area (step A ⁇ b> 1), and outputs the received content to the section searching unit 10.
  • the interval search unit 10 sets an empty set to AS, which is a variable representing a set of statistics (step A2).
  • AS is a variable for storing a partial statistic relating to a subset of points included in the query as an intermediate summary.
  • the section search unit 10 makes an inquiry to the storage unit 43 to acquire the section search data structure 41, that is, the kd tree.
  • the section search unit 10 substitutes the root node of the kd tree for the variable v (step A3).
  • This variable v is a variable representing the node that is currently focused on.
  • the section search unit 10 executes a function find_intervals (v, Q) for the query region Q with respect to the section search data structure 41, and acquires a set IDP of a pair of sections and dimensions as a return value (step A4).
  • the function find_intervals (v, Q) is a function that returns such an IDP.
  • the section search unit 10 outputs IDP and AS to the totaling unit 20.
  • the totaling unit 20 outputs the section Iv to the coordinate sequence totaling unit 30-f regarding the dimension f.
  • the coordinate sequence totaling unit 30-f related to the dimension f receives the section Iv as an input, and makes an inquiry to the storage unit 43, and the coordinate sequence totaling data structure 42 corresponding to the coordinate sequence P f of the dimension f, that is, the wavelet tree w. Get f .
  • the coordinate string totaling unit 30-f regarding the dimension f substitutes the root node of the wavelet tree w f into the variable v (step A6).
  • the coordinate sequence totaling unit 30-f regarding the dimension f calls the function aggregate_interval (v, s, e, lqf , uqf ), and adds the statistic (output result) returned by this function to the AS (step A7).
  • This function aggregate_interval (v, s, e, l qf, u qf) is performed by referring to the wavelet tree w f.
  • the function aggregate_interval (v, s, e, l qf , u qf ) is such that l qf ⁇ P f [i] ⁇ u qf among the coordinates included in P f [s, e] with respect to the coordinate sequence P f
  • This function is a function that specifies a set of all points to which the coordinates included in the set belong for a set of all the coordinates P f [i], and returns a statistic regarding the set of points. These points are part of the points included in the query, and this statistic is a partial statistic.
  • a count (COUNT) that is the number of points that satisfy the condition, a sum (SUM) that is the total weight of the points that satisfy the condition, and the like can be used.
  • the aggregation unit 20 ends the loop after step A7 is executed for all pairs included in the IDP (step A8).
  • the aggregation unit 20 uses the partial statistics included in the AS to calculate the overall statistics for the set of all points included in the query area (step A9). For example, when a count is used as a statistic, the counts of all points included in the query area can be obtained by summing up the counts included in the AS.
  • the output unit 60 outputs the overall statistics about the set of all points included in the query area received from the totaling unit 20 to the outside (step A10).
  • Step A1 to Step A10 the search process for the query region Q ends. Steps A1 to A10 are executed every time the query area Q is input.
  • FIG. 7 is a flowchart showing the operation of the function find_intervals (v, Q) for recursively searching for intervals. This function is realized by the section search unit 10 inquiring the storage unit 43.
  • the section search unit 10 first determines whether the node v of the kd tree is a leaf node (step B1). If the result of the determination in step B1 is Yes, the section search unit 10 checks whether all points held in the leaf node are included in the query area, and is held in the leaf node. Statistics are calculated for points included in the query area and added to AS (step B6). In step B6, if necessary, calculation is performed with reference to the weight held in the leaf node (step B6).
  • aggregate_leaf (v) is a function that checks whether all the points held in the leaf node are included in the query area, and calculates and returns a statistic for the points included in the query area. For example, when realizing the count query, the function aggregate_leaf (v) counts and returns the number of points included in the query region among all the points held in the leaf node v. When the processing related to the leaf node is performed, the section search unit 10 returns an empty set.
  • step B1 if the answer is No, the section search unit 10 determines whether the cover area of the node v of the kd tree overlaps the query area (step B2). Then, as a result of the determination in step B2, the section search unit 10 proceeds to step B3 if the answer is Yes, and returns an empty set if the answer is No.
  • the section search unit 10 determines whether (u vk ⁇ l qk or u qk ⁇ l vk ) holds in at least one dimension k among k satisfying 1 ⁇ k ⁇ d. If the above relationship is established as a result of the determination, the section search unit 10 determines No because there is no overlap in space. If the above relationship does not hold, the section search unit 10 determines Yes because there is an overlap in space.
  • the determination in step B2 is for pruning so as not to search for a cover area that does not overlap with the query area.
  • the section search unit 10 compares the cover area of the node v with the query area, and calculates the inclusion dimension number h (step B3). Specifically, the interval search unit 10 can calculate the inclusion dimension number h by counting how many dimensions k satisfying l qk ⁇ l vk and u vk ⁇ u qk by definition, for example. .
  • the section search unit 10 determines whether the inclusion dimension number h is smaller than d-1 (step B4). If the result of determination in step B4 is Yes, the section search unit 10 assigns the left child node of the node v to the variable v left, and the right of the node v to the variable v right. Is assigned (step B5).
  • step B5 the section search unit 10 recursively calls the same function as follows. return find_intervals (v left , Q) ⁇ find_intervals (v right , Q)
  • step B4 if the answer is No, the section search unit 10 compares the cover area of the node v with the query area and satisfies l qf ⁇ l vf and u vf ⁇ u qf A dimension f that does not satisfy the range condition is obtained (step B7). Then, the section search unit 10 returns a pair (I v , f) of the subscript section I v and dimension f held by the node v.
  • the algorithm shown in FIG. 7 is almost the same as the conventional kd-tree search algorithm, but does not search until a node that satisfies all the d range conditions is found, but does not search for (d-1) range conditions. It differs in that it explores until you find it.
  • step A7 the operation of step A7 in the algorithm shown in FIG. 6 will be described in detail with reference to FIG. That is, the operation of the function aggregate_interval (v, s, e, l qf , u qf ) in FIG. 6 will be described with reference to FIG.
  • FIG. 8 is a diagram showing the operation of the function aggregate_interval (v, s, e, l qf , u qf ) shown in step A7 of FIG.
  • the function aggregate_interval (v, s, e, l qf , u qf ) is a function executed by the coordinate string aggregation unit 30-f regarding the dimension f.
  • This function accepts as input the node v of the wavelet tree w f , the subscript interval [s, e], and the coordinate value range [l qf , u qf ], and the coordinate subsequence P f corresponding to v
  • This is a function that returns, for all coordinates whose coordinate value is included in the range among the coordinates included in the section on ( ⁇ ), statistics regarding the points to which those coordinates belong.
  • step C2 determines whether [l ⁇ , u ⁇ ] ⁇ [l qf , u qf ] is satisfied (step C2).
  • [L ⁇ , u ⁇ ] represents an integer range starting with the prefix ⁇ .
  • step C2 if the answer is Yes, that is, if [l ⁇ , u ⁇ ] ⁇ [l qf , u qf ] holds, the range of coordinate values is included in the query range. The Therefore, the coordinates included in P f ( ⁇ ) [s, e] always belong to the points included in the query. Therefore, the coordinate string aggregation unit 30-f performs the function aggregate_node (v , s, e) are executed, and the output result is returned.
  • Function aggregate_node (v , s, e) is a function that returns a statistic of a set of points to which the coordinates included in P f ( ⁇ ) [s, e] belong with respect to the coordinate sequence P f ( ⁇ ) corresponding to v.
  • step C2 if the answer is No, the coordinate string totaling unit 30-f sets the bit string held in the node v as B v and uses the four rank expressions shown in FIG.
  • the subscript interval [s left , e left ] at the left child node and the subscript interval [s right , e right ] at the right child node are calculated (step C3).
  • the coordinate string totaling unit 30-f recursively calls the following functions in order to perform the same processing for the right child node and the left child node.
  • Step C2 Subsequently, the function aggregate_node (v called in step C2 shown in FIG. , s, e) will be described. This function is executed by the coordinate string totaling unit 30.
  • the function aggregate_node (v, s, e) returns the statistic of the set of points to which the coordinates contained in P f ( ⁇ ) [s, e] belong with respect to the coordinate sequence P f ( ⁇ ) corresponding to the node v It is.
  • the function aggregate_node (v, s, e) is an abstraction of various aggregate functions. By replacing this function with a specific aggregate function, the information processing apparatus 100 can be used for various types of rectangular range searches. Available.
  • the information processing apparatus 100 can count and output the number of points included in the query region Q. This behavior depends on the function aggregate_node (v , s, e) returns (e -Realized by returning s +1). Because P f ( ⁇ ) [s , e ] Correspond to the points included in the query area Q, and (e This is because it indicates that (s + 1) points are included in the query area Q.
  • the function aggregate_interval (v, s , e , l qf , u qf ) operates as a function that counts and returns the number of points included in the query region Q among the points whose coordinates are included in P f [s, e].
  • the counting unit 20 counts and outputs the number included in the query region Q among the points included in the point sequence P.
  • the information processing apparatus 100 can calculate the sum of the weights of the points included in the query region. This is because the column W f ( ⁇ ) in which the weights w (p) of the corresponding points p are arranged in the same order is set in advance for each coordinate included in all the coordinate subsequences P f ( ⁇ ). In addition, it is possible if a data structure capable of calculating the total of the sections on this column is prepared.
  • An example of such a data structure is a data structure that handles an existing partial sum.
  • P f ( ⁇ ) [s , e] is known to correspond to a point included in the query region, included in the interval W f ( ⁇ ) [s, e] on the weight column corresponding to this interval [s, e]
  • the sum of the weights of all the points included in the query region Q can be calculated by calculating the total of the weighted intervals and adding them at the end.
  • the totaling unit 20 outputs the sum of the weights of all points included in the query area Q as a statistic.
  • the information processing apparatus 100 can be used as a report query that returns a list of all points included in the query area Q. That is, P f ( ⁇ ) [s , e], for each element P f ( ⁇ ) [j], the position i on the original integer sequence P f can be specified by going up the wavelet tree. At this time, the point P [i] is included in the query area. In this case, the totaling unit 20 outputs a list of all points included in the query region Q as a statistic.
  • the operation of these two functions is equivalent to the calculation of statistics in two dimensions using a wavelet tree shown in Non-Patent Document 2. That is, the behavior of these two functions is the subscript interval [s , e] and a value range [l qf , u qf ] can be regarded as a search in a two-dimensional space. It is known that the number of intervals obtained by this calculation is O (log n).
  • the present embodiment is not limited to a mode in which the algorithm shown in FIGS. 6 to 8 is used alone, and is a mode in which another search algorithm is appropriately combined with the algorithm shown in FIGS. Also good.
  • FIG. 9 shows the relationship between the number of search nodes and the number of inclusion dimensions in the worst case.
  • FIG. 9 is a diagram illustrating changes in the number of search nodes and the number of included dimensions in the case of two dimensions. As shown in FIG. 9, one node on the tree structure corresponds to one search node. A decrease in the depth of the tree structure indicates that the node is divided once and divided into two search nodes. The numbers on the nodes represent the number of inclusion dimensions. It can be seen that the more the number of inclusion dimensions, the more nodes are divided.
  • Equation 1 This recurrence formula is as shown in Equation 1 below. However, in the following formula 1, C (x, y) represents the number of combinations.
  • the entire search tree becomes a binary tree of depth log n, the total number of nodes reaches O (n), and the division ends.
  • the node with the inclusion dimension number h is O (n (h / d) ).
  • the node with the inclusion dimension number 0 is O (log n).
  • the maximum number of divisions is O (n). If the division is stopped when the number of inclusion dimensions reaches d, the division number becomes O (n (d-1) / d ). On the other hand, if the division is discontinued when the number of inclusion dimensions reaches d-1, the division number becomes O (n (d-2) / d ). In the kd tree, since the division is terminated when the number of inclusion dimensions reaches d, the calculation amount is O (n (d ⁇ 1) / d ). This is consistent with a conventionally known order.
  • This kd-tree analysis is applied to this embodiment.
  • the number of divisions that is, the number of intervals calculated by the kd tree is O (n (d-2) / d ).
  • the function aggregate_interval (v, s , e , l qf , u qf ) are executed.
  • the function aggregate_node (v , s, e) are executed O (log n) times.
  • the function aggregate_node (v , s, e) is a function that can be executed in O (1). For example, in order to realize the count query, it is only necessary to calculate (e ⁇ s + 1), so it can be calculated by O (1).
  • the method in the present embodiment performs O (log n) times and O (1) calculations for each of O (n (d-2) / d ) intervals, so that the total The calculation amount of is O (n (d ⁇ 2) / d log n).
  • FIG. 10 is a diagram showing a comparison in calculation amount between the present invention and the conventional method.
  • the program in the embodiment of the present invention may be a program that causes a computer to execute steps A1 to A10 shown in FIG.
  • the information processing apparatus 100 and the information processing method in the present embodiment can be realized by installing and executing this program on a computer.
  • a CPU Central Processing Unit
  • the storage unit 43 is realized by storing data files constituting these in a storage device such as a hard disk provided in the computer.
  • each computer may function as the search unit 10, the totaling unit 20, the coordinate sequence totaling unit 30, the input receiving unit 50, and the output unit 60, respectively.
  • the storage unit 43 may be constructed on a computer different from the computer that executes the program in the present embodiment.
  • FIG. 11 is a block diagram illustrating an example of a computer that implements the information processing apparatus according to the embodiment of the present invention.
  • the computer 110 includes a CPU 111, a main memory 112, a storage device 113, an input interface 114, a display controller 115, a data reader / writer 116, and a communication interface 117. These units are connected to each other via a bus 121 so that data communication is possible.
  • the CPU 111 performs various operations by developing the program (code) in the present embodiment stored in the storage device 113 in the main memory 112 and executing them in a predetermined order.
  • the main memory 112 is typically a volatile storage device such as a DRAM (Dynamic Random Access Memory).
  • the program in the present embodiment is provided in a state of being stored in a computer-readable recording medium 120. Note that the program in the present embodiment may be distributed on the Internet connected via the communication interface 117.
  • the storage device 113 includes a hard disk drive and a semiconductor storage device such as a flash memory.
  • the input interface 114 mediates data transmission between the CPU 111 and an input device 118 such as a keyboard and a mouse.
  • the display controller 115 is connected to the display device 119 and controls display on the display device 119.
  • the data reader / writer 116 mediates data transmission between the CPU 111 and the recording medium 120, and reads a program from the recording medium 120 and writes a processing result in the computer 110 to the recording medium 120.
  • the communication interface 117 mediates data transmission between the CPU 111 and another computer.
  • the recording medium 120 include general-purpose semiconductor storage devices such as CF (Compact Flash (registered trademark)) and SD (Secure Digital), magnetic storage media such as a flexible disk, or CD- An optical storage medium such as ROM (Compact Disk Read Only Memory) can be used.
  • CF Compact Flash
  • SD Secure Digital
  • magnetic storage media such as a flexible disk
  • CD- An optical storage medium such as ROM (Compact Disk Read Only Memory) can be used.
  • the query area includes coordinates of the remaining dimensions on the point sequence obtained by arranging the set of points in a line, and excluding one dimension of all the dimensions constituting the multidimensional space.
  • a section search unit for identifying a section, which is configured only by points, For the section specified by the section search unit, as a condition for the points that appear in the section to be included in the query region, a totaling unit that specifies a range of coordinate values in the one dimension removed, With the interval specified by the interval search unit and the range of the coordinate value specified by the aggregation unit as inputs, With respect to the coordinate sequence obtained by taking out the coordinates in the one dimension removed at each point of the set of points in the same order as the sequence of the sequence of points, the coordinate sequence input in the coordinate sequence For all coordinates that appear in the interval and are included in the range where the value is entered, Calculating a statistic about a set of points corresponding to all the coordinates;
  • An information processing apparatus comprising:
  • the tabulation section When there are a plurality of sections specified by the section search section, the tabulation section further tabulates statistics relating to the set of points for each section calculated by the coordinate string tabulation section, Outputting the statistics obtained by the aggregation as overall statistics regarding the set of points included in the query area;
  • the information processing apparatus according to attachment 1.
  • the data structure includes a first data structure used for specifying the section by the section search unit and a second data structure used for calculating the statistic by the coordinate string totaling unit. is doing, The information processing apparatus according to attachment 1.
  • the first data structure is It is represented by a tree structure having nodes, which is associated with any one of a plurality of cover areas set in the multidimensional space and a section where points included in the cover area appear on the sequence of the points.
  • the section search unit Of the nodes Identifying a node in which the coordinates of each remaining dimension excluding the one dimension at points included in the associated cover area are included in the query area; Identify the section associated with the identified one or more nodes as the section;
  • the information processing apparatus according to appendix 4.
  • the sequence of points is The points included in the set of points are arranged in a line so that the points included in each of the cover areas associated with the node appear continuously in a single line,
  • the information processing apparatus according to appendix 5.
  • the coordinate sequence totaling unit uses the second data structure, Among the plurality of partial sequences obtained from the coordinate sequence, a partial sequence in which only the coordinates included in the input range appear is specified, and an interval on the specified partial sequence is input in the coordinate sequence Identify the second section where the coordinates appearing in the section Further, a statistic regarding a set of points corresponding to the coordinates appearing in the identified second section is calculated.
  • the information processing apparatus according to appendix 4.
  • the partial sequence is obtained by extracting coordinates whose bit representation of coordinates starts with the same prefix while maintaining the positional relationship between the coordinates,
  • the second data structure is A plurality of nodes associated with the subsequence; Each of the plurality of nodes is obtained by taking out one or more specific digit bits in the bit representation of each coordinate appearing in the subsequence, and arranging the extracted bits in the same order as the subsequence. Expressed using a sequence of bits, The coordinate sequence totaling unit specifies the second section using a sequence of bits representing each of the plurality of nodes.
  • the coordinate string totaling unit calculates the number of points corresponding to all the coordinates as a statistic regarding a set of points corresponding to all the coordinates.
  • the information processing apparatus according to attachment 1.
  • the coordinate string totaling unit calculates the coordinates of each dimension of the points to which all the coordinates correspond, as a statistic regarding the set of points to which all the coordinates correspond.
  • the information processing apparatus according to attachment 1.
  • An information processing method for processing a data structure representing a set of points on a multidimensional space (A) When a specific multidimensional area is designated as the query area, The query area includes coordinates of the remaining dimensions on the point sequence obtained by arranging the set of points in a line, and excluding one dimension of all the dimensions constituting the multidimensional space. A section consisting only of points, identifying a section, and (B) For the section specified in the step (a), a range of coordinate values in the one dimension that has been removed is specified as a condition for including a point appearing in the section in the query area.
  • Steps and (C) Using as input the section identified in the step (a) and the range of the coordinate value identified in the step (b), With respect to the coordinate sequence obtained by taking out the coordinates in the one dimension removed at each point of the set of points in the same order as the sequence of the sequence of points, the coordinate sequence input in the coordinate sequence For all coordinates that appear in the interval and are included in the range where the value is entered, Calculating a statistic for the set of points to which all the coordinates correspond; and
  • An information processing method characterized by comprising:
  • the data structure is a first data structure used for specifying the section in the step (a) and a second data structure used in the calculation of the statistic in the step (c). And having The information processing method according to attachment 11.
  • the first data structure is: It is represented by a tree structure having nodes, which is associated with any one of a plurality of cover areas set in the multidimensional space and a section where points included in the cover area appear on the sequence of the points.
  • the sequence of points is The points included in the set of points are arranged in a line so that the points existing in each of the cover areas associated with the node appear continuously in a single line, The information processing method according to attachment 14.
  • step (c) using the second data structure, Among the plurality of partial sequences obtained from the coordinate sequence, a partial sequence in which only the coordinates included in the input range appear is specified, and an interval on the specified partial sequence is input in the coordinate sequence Identify the second section where the coordinates appearing in the section Further, a statistic regarding a set of points corresponding to the coordinates appearing in the identified second section is calculated.
  • the partial sequence is obtained by extracting coordinates whose bit representation of coordinates starts with the same prefix while maintaining the positional relationship between the coordinates,
  • the second data structure is A plurality of nodes associated with the subsequence; Each of the plurality of nodes is obtained by taking out one or more specific digit bits in the bit representation of each coordinate appearing in the subsequence, and arranging the extracted bits in the same order as the subsequence. Expressed using a sequence of bits, In the step (c), the second section is specified using a bit string representing each of the plurality of nodes.
  • step (c) the number of points corresponding to all the coordinates is calculated as a statistic regarding the set of points corresponding to all the coordinates.
  • a computer-readable recording medium recording a program for performing information processing by a computer with a data structure representing a set of points in a multidimensional space as a processing target,
  • the query area includes coordinates of the remaining dimensions on the point sequence obtained by arranging the set of points in a line, and excluding one dimension of all the dimensions constituting the multidimensional space.
  • Steps and (C) Using as input the section identified in the step (a) and the range of the coordinate value identified in the step (b), With respect to the coordinate sequence obtained by taking out the coordinates in the one dimension removed at each point of the set of points in the same order as the sequence of the sequence of points, the coordinate sequence input in the coordinate sequence For all coordinates that appear in the interval and are included in the range where the value is entered, Calculating a statistic for the set of points to which all the coordinates correspond; and The computer-readable recording medium which recorded the program containing the instruction
  • the data structure is a first data structure used for specifying the section in the step (a) and a second data structure used in the calculation of the statistic in the step (c). And having The computer-readable recording medium according to appendix 20.
  • the first data structure is: It is represented by a tree structure having nodes, which is associated with any one of a plurality of cover areas set in the multidimensional space and a section where points included in the cover area appear on the sequence of the points.
  • the computer-readable recording medium according to appendix 22.
  • the sequence of points is The points included in the set of points are arranged in a line so that the points existing in each of the cover areas associated with the node appear continuously in a single line,
  • step (c) using the second data structure, Among the plurality of partial sequences obtained from the coordinate sequence, a partial sequence in which only the coordinates included in the input range appear is specified, and an interval on the specified partial sequence is input in the coordinate sequence Identify the second section where the coordinates appearing in the section Further, a statistic regarding a set of points corresponding to the coordinates appearing in the identified second section is calculated.
  • the computer-readable recording medium according to appendix 22 The computer-readable recording medium according to appendix 22.
  • the partial sequence is obtained by extracting coordinates whose bit representation of coordinates starts with the same prefix while maintaining the positional relationship between the coordinates,
  • the second data structure is A plurality of nodes associated with the subsequence; Each of the plurality of nodes is obtained by taking out one or more specific digit bits in the bit representation of each coordinate appearing in the subsequence, and arranging the extracted bits in the same order as the subsequence. Expressed using a sequence of bits, In the step (c), the second section is specified using a bit string representing each of the plurality of nodes.
  • step (c) the number of points corresponding to all the coordinates is calculated as a statistic regarding the set of points corresponding to all the coordinates.
  • step (c) As a statistic regarding a set of points to which all the coordinates correspond, the coordinates of each dimension of the points to which all the coordinates correspond are calculated.
  • the computer-readable recording medium according to appendix 20 As a statistic regarding a set of points to which all the coordinates correspond, the coordinates of each dimension of the points to which all the coordinates correspond are calculated.
  • the present invention it is possible to realize a rectangular range search with a linear size and higher speed than a kd tree for an arbitrary dimension d.
  • the present invention is useful in various fields where necessary data needs to be searched from a large amount of data group.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 情報処理装置100は、多次元空間上の点の集合を表現するデータ構造を対象とし、クエリ領域として特定の多次元の領域が指定された場合に、点の集合から得られた点の列上にあり、且つ1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみで構成された区間を特定する区間検索部10と、区間内に出現する点がクエリ領域に含まれるための条件として、除かれた1つの次元での座標値の範囲を特定する集計部20と、特定された区間及び座標値の範囲を入力として、各点の除かれた1つの次元での座標を取り出して得られる座標列に関して、入力区間に出現し且つ値が入力範囲に含まれる全座標について、全座標が対応する点の集合に関する統計量を計算する座標列集計部30とを備えている。

Description

情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
 本発明は、情報処理装置、情報処理方法、及びこれらを実現するためのプログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特には、多次元データ上での効率的な検索を行うための、情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体に関する。
 多次元空間上に点が大量に存在するときに、指定した矩形の範囲に包含される点を見つけることは、矩形範囲検索(orthogonal range search)と呼ばれている。たとえば、次元数をdとおくと、d次元の多次元空間上の点は、d個の座標の組み合わせによりp=(p1, p2, …, pd)という形で表現できる。このような多次元空間上の点の集合が予め与えられているとする。さらに、個々の点pが重みw(p)を付与されているとする。
 このとき、各次元kの範囲を[lqk, uqk]で表すとして、Q=[lq1, uq1]×[lq2, uq2]×…×[lqd, uqd]というd次元の矩形の範囲を考える。この矩形の範囲をクエリ領域と呼ぶこととすると、矩形範囲検索の目標は、このクエリ領域Qに包含される点p、すなわち∀k∈{1,…,d}: lqk ≦ pk≦ uqkを満たす点pの集合を求め、その集合に関する情報を計算することである。このとき、点pがクエリ領域Qに含まれるためのd個の条件∀k∈{1,…,d}: lqk≦ pk≦ uqkをクエリの範囲条件と呼ぶこととする。
 このような矩形範囲検索は、地理情報を扱うアプリケーション、更には多次元データ分析において、重要な役目を果たす。以下に具体例を示す。
 たとえば、地図上でのレストランの位置は(緯度, 経度)という2つの値の組み合わせである2次元データで表すことができる。このとき、矩形範囲検索を用いると、経度が138度から139度、緯度が35度から36度の範囲に収まるような全てのレストランを検索できる。
 また、たとえば、ある会社の社員に関する統計データを(年齢, 身長, 年収)という3次元データで表すことができる。このとき、矩形範囲検索を用いると、年齢が30歳から40歳で、身長が170cmから180cm、年収が500万円から600万円の範囲に収まる全ての社員を検索できる。
 更に、矩形範囲検索には、検索結果として何を返すかによって様々なバリエーションが存在する。バリエーションの一例として、レポート・クエリ(report query)と集計クエリ(aggregate query)とが挙げられる。
 まず、レポート・クエリは、クエリ領域に包含される全ての点のリストを返す矩形範囲検索である。レポート・クエリは、クエリ領域に包含される点の数をヒット数と呼ぶことにすると、ヒット数に比例する大きさのリストを返してしまうため、ヒット数が大きくなるような大規模データの分析には向かない。たとえば、数千万個の点が包含されるとき、数千万個の点を全て出力することになってしまう。
 そこで、大規模データの分析においては、クエリ領域に包含される全ての点のリストを返すよりも、それらの点について集計した結果を返す集計クエリが重要となる。様々な集計クエリの中でも最も代表的なクエリはカウント・クエリ(count query)である。
 このカウント・クエリは、クエリ領域に包含される点の数を返す矩形範囲検索である。この他にも、点にそれぞれ重みが付与されている場合に、クエリ領域に包含される点の重みの合計を返す合計(sum)クエリ、及び最大値を返す最大値(max)クエリなどが存在する。
 本明細書では、これらのクエリが返す情報を、統計量と総称する。たとえば、統計量としては、カウント及び合計などが挙げられる。さらに、クエリに含まれる点の部分集合に関する統計量を「部分的な統計量」と呼び、クエリに含まれる全ての点の集合に関する統計量を「全体的な統計量」と呼ぶ。
 さて、矩形範囲検索に使うことができる代表的なデータ構造として、kd木が知られている(例えば、非特許文献1参照。)。kd木のサイズは、O(n)、つまり線形サイズで表現できる。また、kd木における矩形範囲検索の最悪時間計算量は、O(n(d-1)/d)であることが知られている。なお、nはデータ数、dは次元数である。kd木が達成している最悪時間計算量O(n(d-1)/d)は、これまで知られている実用的な線形サイズのデータ構造の時間計算量の中では、最良のものである。
 また、サイズがO(n)を超えてしまうような超線形サイズのデータ構造に、矩形範囲検索を適用した場合は、計算時間(計算量)を改善することができる。このような超線形サイズのデータ構造としては、たとえば、range treeと呼ばれるデータ構造が挙げられる。
 さらに、矩形範囲検索は、ウェーブレット木(wavelet tree)という2次元のデータ構造でも実現できる(例えば、非特許文献1参照)。この場合、2次元空間において探索が行なわれ、時間計算量は、O(log n)時間となる。
 なお、上述したkd木およびウェーブレット木を用いた矩形範囲検索については、非特許文献1に詳しく記載されている。また、ウェーブレット木を用いて2次元空間上の統計量を計算する手法については、非特許文献2に詳しく記載されている。
Meng He, "Succinct and Implicit Data Structures for Computational Geometry", Lecture Notes in Computer Science Volume 8066 "Space-Efficient Data Structures, Streams, and Algorithms", pp 216-235, 2013, Springer Berlin Heidelberg, ISBN 978-3-642-40272-2 Gonzalo Navarro and Luis M. S. Russo. "Space-efficient data-analysis queries on grids", In Proceedings of the 22nd International Conference on Algorithms and Computation, ISAAC'11, pp. 323-332, Berlin, Heidelberg, 2011. Springer-Verlag.
 このように、矩形範囲検索は種々のデータ構造で実現することができるが、実際には、以下に示す問題がある。まず、矩形範囲検索をkd木で実現した場合においては、達成される最悪時間計算量O(n(d-1)/d)が、データ数n及び次元数dのいずれか又は両方が大きくなる程、大きくなってしまうという問題がある。
 また、矩形範囲検索を超線形サイズのデータ構造で実現した場合は、kd木で実現した場合に比べ、計算時間の改善は図られるが、超線形サイズのデータ構造のサイズが大きすぎるため、実際のアプリケーションに用いることが難しく、実用的でないという問題がある。
 更に、矩形範囲検索をウェーブレット木で実現した場合は、ウェーブレット木が2次元のデータにしか用いることができないため、3次元以上の任意の次元のデータ構造に対する検索ができないという問題がある。
 本発明の目的の一例は、上記問題を解消し、任意の次元について、線形サイズで、kd木よりも高速な矩形範囲検索を実現し得る、情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体を提供することにある。
 上記目的を達成するため、本発明の一側面における情報処理装置は、多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理装置であって、
 クエリ領域として、特定の多次元の領域が指定された場合に、
前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、区間検索部と、
 前記区間検索部で特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、集計部と、
 前記区間検索部で特定された区間、及び前記集計部で特定された前記座標の値の範囲を入力として、
前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
前記全ての座標が対応する点の集合に関する統計量を計算する、座標列集計部と、
を備えている、ことを特徴とする。
 また、上記目的を達成するため、本発明の一側面における情報処理方法は、多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理方法であって、
(a)クエリ領域として、特定の多次元の領域が指定された場合に、
前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、ステップと、
(b)前記(a)のステップで特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、ステップと、
(c)前記(a)のステップで特定された区間、及び前記(b)のステップで特定された前記座標の値の範囲を入力として、
前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
前記全ての座標が対応する点の集合に関する統計量を計算する、ステップと、
を有する、を特徴とする。
 更に、上記目的を達成するため、本発明の一側面におけるコンピュータ読み取り可能な記録媒体は、多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理をコンピュータによって行なうためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
(a)クエリ領域として、特定の多次元の領域が指定された場合に、
前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、ステップと、
(b)前記(a)のステップで特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、ステップと、
(c)前記(a)のステップで特定された区間、及び前記(b)のステップで特定された前記座標の値の範囲を入力として、
前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
前記全ての座標が対応する点の集合に関する統計量を計算する、ステップと、
を実行させる命令を含む、プログラムを記録していることを特徴とする。
 以上のように、本発明によれば、任意の次元について、線形サイズで、kd木よりも高速な矩形範囲検索を実現することができる。
図1は、本発明の実施の形態における情報処理装置の概略構成を示すブロック図である。 図2は、本発明の実施の形態における情報処理装置の具体構成を示すブロック図である。 図3は、kd木の元になる2次元平面の一例を示している。 図4(a)は、2次元空間から得られるkd木の一例を示し、図4(b)は、kd木から得られる点の列Pの一例を示している。 図5は、本発明の実施の形態で用いられるウェーブレット木の一例を示す図であり、図5(a)及び(b)はそれぞれ次元が異なるウェーブレット木を示している。 図6は、本発明の実施の形態における情報処理装置の動作を示すフロー図である。 図7は、再帰的に区間を検索する関数find_intervals(v, Q)の動作を示すフロー図である。 図8は、座標列に基づき集計する関数aggregate_interval(v , s , e , lqf, uqf)の動作を示すフロー図である。 図9は、2次元の場合の探索ノード数と包含次元数との変化を示す図である。 図10は、本発明と従来手法との計算量の比較を示す図である。 図11は、本発明の実施の形態における情報処理装置を実現するコンピュータの一例を示すブロック図である。
(発明の原理)
 最初に、本発明の基本的な原理について、一般的なkd木を例に挙げて以下に説明する。
 まず、kd木は、多次元データを扱うための二分探索木である。kd木の特徴は、空間全体を、次元1から次元dまでの各次元で順番に2分割していくことである。kd木では、木構造が空間の再帰的な分割を表しており、二分探索木の各ノードが部分領域に関連付けられている。各ノードvが関連付けられている部分領域R(v)を、本明細書では、ノードの「カバー領域」と呼ぶことにする。カバー領域R(v)は、R(v)=[lv1, uv1]×[lv2, uv2]×…×[lvd, uvd]というd次元の矩形の範囲として表すことができる。kd木においては、ノードvをルートとする部分木に存在する点は、vのカバー領域R(v)に含まれる。
 さらに、kd木は、各ノードに、そのノードをルートとする部分木に含まれる点の集合の統計量を保持しておくことができる。たとえば、カウント・クエリを高速に計算したい場合は、各ノードをルートとする部分木に含まれる点の数を、そのノードに保存する。
 kd木における矩形範囲検索は以下のように実現される。まず、木全体のルートノードを出発点として、各内部ノードにおいて子ノードが関連付けられているカバー領域がクエリ領域と重なるかどうかが判定され、重なる場合にだけ、その子ノードに移動することが繰り返される。子ノードへの移動は、特定の次元でカバー領域を二分割することに相当する。そして、ノードが関連付けられているカバー領域が、クエリ領域に完全に包含された場合は、そのノードに保存されている、部分木に含まれる点の統計量を、部分的な統計量として記憶する。何故なら、部分木に含まれる点はカバー領域に含まれ、当該点は、このときクエリ領域にも含まれるからである。この統計量は、クエリ領域に含まれる点の部分集合に関する統計量であるため、部分的な統計量である。
 カバー領域がクエリ領域に完全に包含されるノードの統計量を全て見つけたとき、ノードの探索は終了する。このとき、これらの部分的な統計量を全て集計することにより、クエリ領域に含まれる全ての点に関する全体的な統計量を計算して出力する。
 より厳密に説明するため、以下のように用語を定義する。次元kにおいて、[lvk , uvk] ⊆ [lqk , uqk]という範囲条件が成り立つとき、「カバー領域R(v)がクエリ領域Qに次元kで包含されている」と呼ぶ。次元kにおいてカバー領域R(v)がこの範囲条件[lvk , uvk] ⊆ [lqk , uqk]を満たすとき、カバー領域に含まれる点も同様に次元kの範囲条件pk⊆ [lqk , uqk]を満たす。何故なら、pk⊆[lvk , uvk] ⊆ [lqk , uqk]が成り立つからである。すなわち、カバー領域に関して次元kの範囲条件が成り立つとき、カバー領域に含まれる点に関しても次元kの範囲条件が成り立つ。
 さらに、d個の次元のうちh個の次元において包含されているとき、「カバー領域の包含次元数はhである」、と定義する。また、包含次元数がdであるとき、すなわち、全ての次元が包含されているとき、カバー領域は完全に包含されていると呼ぶ。包含次元数は、d個の範囲条件のうち、満たされている条件の数である。
 kd木は、包含次元数がdに達するまで、すなわち、この範囲条件がd個全て満たされるまで空間を分割する手法である。
 kd木の探索では、以上のように、与えられたクエリ領域にカバー領域が完全に含まれるノードの統計量を合わせることによって、探索結果が得られている。このとき、kd木はカバー領域がクエリ領域に一部包含されているが、完全に包含されていないノードを全てたどる必要があるが、このようなノードの数はO(n(d-1)/d)になることが知られている。このため、kd木の最悪時間計算量はO(n(d-1)/d)になる。
 これに対して、本発明は、カバー領域がクエリ領域に完全に包含される前にkd木での探索をやめ、ウェーブレット木での探索に移行することを特徴とする。
 より厳密に言えば、本発明では、包含次元数がdに達するまで空間を分割するのではなく、包含次元数がd-1に達するまで空間を分割する。このとき、まだ範囲条件が満たされていない最後の次元f(1≦f≦d)について、次元fに関するウェーブレット木を用いて、次元fの範囲条件を満たす座標を見つけることで、高速な検索を実現する。
 これにより、本発明によれば、kd木を最後までたどる従来の手法と異なり、たどるノードの数が削減され、kd木より高速な矩形範囲検索が実現される。
(本明細書で用いられる概念)
 ここで、本明細書で用いられる種々の概念について以下に説明する。本明細書では、全ての点の座標piが[0,n-1]の整数で表されるものとする。さらに、これらの整数は、二進表現で長さl=ceil(log n)のビットで表されるとする。なお、ceil()は天井関数を表す。logは底を2とする対数関数を表す。
 たとえば、n=8のとき、全ての座標は[0,7]の整数で表され、二進表現では長さl=ceil(log n) =3ビットで表される。すなわち、0=”000”, 1=”001”, 2=”010”, 3=”011”, 4=”100”, 5=”101”, 6=”110”, 7=”111”で表すことができる。
 ただし、本発明は、座標が整数で表されていない一般の多次元空間に対しても適用できる。たとえば、順位空間(rank space)への変換という手法を用いれば、任意の実数で表されるn個の点を、[0,n-1]の範囲の整数の座標に変換でき、その座標を用いることで、矩形範囲検索を実現できる。従って、この順位空間への変換を用いることにより、本発明を、実数で表される一般の多次元空間に適用することが可能である。なお、順位空間への変換については、たとえば上述の非特許文献1に記載されている。
 また、本発明は、値を1と0の二進表現で表現できていれば、順位空間への変換が行なわれていなくても適用できる。すなわち、データ数がnであるとき、座標の値の範囲が[0,n-1]の範囲から外れているデータであっても、本発明は適用できる。本明細書では、計算量の理論的な分析を行うために[0,n-1]の範囲に限定して説明しているだけであり、実用上は[0,n-1]の範囲に限らなくても問題なく本発明を適用できる。
 また、本明細書では、「接頭辞」という概念を用いる。接頭辞とは、整数を二進表現で表したときに、その上位ビットだけを取り出したものである。本明細書では、整数の上位hビットの接頭辞を、h個の1と0、および(l-h)個の*の組み合わせで表記する。*はワイルドカードであり、1および0のどちらでもよいことを表している。ある整数が特定の接頭辞から始まることは、その整数が、特定の連続範囲に含まれることに対応する。
 たとえば、整数が長さl=3のビット列であらわされているとする。このとき長さ1の接頭辞”0**”は、”000”, “001”, ”010”, ”011”という4つの値に対応する。すなわち、この接頭辞は、整数上の値の範囲である[“000”,”011”]=[0,3]に対応する。同様に、長さ2の接頭辞”01*”は、”010”と”011”という2つの値に対応しており、値の範囲で表すと[“010”,”011”]=[2,3]に対応する。長さlの接頭辞は、ひとつの整数だけに対応する。
 また、本明細書では、列(sequence)に関して、以下の表記が用いられる。たとえば、長さnの列Aが存在するとき、Aの最初の要素をA[0]、Aの最後の要素をA[n-1]とする。さらに、A上の添字sの要素A[s]から添字eの要素A[e]までの(e-s+1)個の要素で構成される列をA[s,e]で表し、終端A[e]を含まない場合はA[s,e)で表すものとする。また、A[s,e]に含まれる要素を、A上で区間I=[s,e]に含まれる要素、と呼ぶ。
 さらに、本明細書では、座標の値の範囲(range)と、列上の添字の区間(interval)とが、厳密に区別される。座標の値の範囲も、列上の添字の区間も、2つの数字のペアで表されるが、この明細書では、[l,u]を「範囲」と呼ぶとき、lとuは座標の値である。一方、[s,e]を「区間」と呼ぶとき、sとeは列に関する添字である。
(実施の形態)
 続いて、本発明の実施の形態における、情報処理装置、情報処理方法、及びプログラムについて、図1~図10を参照しながら説明する。
[装置構成]
 最初に、本実施の形態における情報処理装置の概略構成について図1を用いて説明する。図1は、本発明の実施の形態における情報処理装置の概略構成を示すブロック図である。図1に示す本実施の形態における情報処理装置100は、多次元空間上の点の集合を表現するデータ構造40を処理対象とする装置である。そして、図1に示すように、情報処理装置100は、区間検索部10と、集計部20と、座標列集計部30とを備えている。
 このうち、区間検索部10は、クエリ領域として、特定の多次元の領域が指定された場合に機能する。クエリ領域は、上述したように、例えば、各次元に対応するd個の範囲の組み合わせで表現される。
 区間検索部10は、点の集合を一列に並べて得られる点の列P上にあり、且つ、多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する。言い換えると、区間検索部10は、点がクエリ領域に含まれるためのd個の条件のうち(d-1)個の条件を満たす、点を含む、列P上の添字の区間を0個以上特定する。また、区間検索部10は、特定した区間を集計部20に出力する。
 集計部20は、区間検索部10で特定された区間について、クエリ領域に含まれるための条件として、除かれた1つの次元における座標の値の範囲を特定し、特定した座標の値の範囲と区間検索部10で特定された区間とを座標列集計部30に出力する。
 言い換えると、集計部20は、区間検索部10で特定された点の列Pの各区間に含まれる点が満たしていない最後の範囲条件が対応する次元fについて、これらの点がクエリ領域に含まれるために必要な範囲条件となる座標の値の範囲を特定する。そして、集計部20は、次元fに対応する座標列集計部30に、区間検索部10が特定した列P上の添字の区間と、次元fの座標の値に関する範囲条件となる座標の値の範囲とを与えて、問い合わせを行う。
 座標列集計部30は、区間検索部10で特定された区間(添字の区間)と、次元fにおける座標の値の範囲とが入力されると、機能する。座標列集計部30は、入力がなされると、点の列Pの並び順と同じ順序で、点の集合の各点における次元fでの座標を取り出すことで得られる、座標列に関して、入力された区間に出現し、且つ、値が入力された範囲に含まれる、全ての座標について、これらの座標が対応する点の集合に関する統計量を計算する。また、座標列集計部30は、計算した統計量を集計部20に出力する。
 このように、情報処理装置10では、クエリ領域を表すd個の条件のうち(d-1)個の条件を満たされるまでだけ、多次元空間が分割されるので、kd木を探索する場合に比べて、クエリ領域の分割に要する計算量が削減される。このため、情報処理装置10によれば、任意の次元dについて、線形サイズで、kd木よりも高速な矩形範囲検索を実現することができる。
 次に、図2を用いて、本実施の形態における情報処理装置100の構成について更に具体的に説明する。図2は、本発明の実施の形態における情報処理装置の具体構成を示すブロック図である。
 図2に示すように、本実施の形態では、情報処理装置100は、上述した区間検索部10と、集計部20と、座標列集計部30と、に加えて、記憶部43と、入力受付部50と、出力部60と、を備えている。
 また、本実施の形態では、次元毎に設けられたd個の座標列集計部30-1~30―dが備えられている。そして、座標列集計部30-1~30―dそれぞれは、対応する次元と区間検索部10で特定された区間の次元とが一致する場合に、点の集合に関する統計量を計算する。なお、以降の説明において、座標列集計部を個別に特定しない場合は、「座標列集計部30」と表記する。
 また、入力受付部50は、外部からのクエリ領域の入力を受け付け、これを区間検索部10に出力する。記憶部43は、データ構造40を記憶している。本実施の形態では、データ構造40は、区間検索部10による区間の特定に用いられる区間検索用データ構造41と、座標列集計部30による統計量の計算に用いられる座標列集計用データ構造42とを有している。
 また、区間検索部10は、入力受付部50からクエリ領域が出力されてくると、記憶部43に対して問い合わせ、区間検索用データ構造41を取得する。区間検索用データ構造41は、クエリ領域が指定されたときに、区間検索部10によって、点の列P上における、クエリ領域を表すd個の条件のうち(d-1)個の条件を満たす点を含む区間を特定するための、データ構造である。
 本実施の形態では、区間検索用データ構造41としては、ノードを有する木構造によって表現されたデータ構造が挙げられる。また、このデータ構造において、ノードは、多次元空間に設定された複数のカバー領域のいずれかと、点の列上において、該当するカバー領域に含まれる点が出願する区間と、の両方に関連付けられている。具体的には、区間検索用データ構造41としては、kd木が挙げられる。なお、本実施の形態において、区間検索用データ構造41は、kd木に限定されず、木構造の各ノードが矩形の領域に関連付けられた任意のデータ構造であれば良い。他の具体例としては、kdB木、R木、bounding volume hierarchy (BVH)、と呼ばれるデータ構造も挙げられる。
 本実施の形態では、区間検索部10は、ノードのうち、関連付けられたカバー領域に存在する点における、1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定する。そして、区間検索部10は、特定した1又は2以上のノードが関連付けられている区間を特定する。
 ここで、区間検索用データ構造41について、更に詳しく説明する。上述したように、本実施の形態では、区間検索用データ構造41としてkd木を用いることができる。kd木は、各ノードが多次元空間上に設定された矩形領域に関連付けられた二分木である。この矩形領域が、上述したカバー領域に相当する。kd木のルートノードのカバー領域は、グリッド上の全領域、[0,n-1]×[0,n-1]×[0,n-1]× … ×[0,n-1]である。また、各ノードの深さは、いずれかひとつの次元に着目して空間を二分割すると、1つ下がり、分割する次元は1,2,3,…,dの順番で繰り返して選ぶものとする。
 kd木は、ルートノードを出発点として、以下のように再帰的に構築できる。まず、各内部ノードにおいて、その深さで分割に用いられる次元がkであるとき、そのカバー領域に含まれる全ての点について次元kの座標を調べ、中央値となる座標を選び、その座標を用いてカバー領域を二分割する。すなわち、その座標をtとおくと、カバー領域は、次元kの座標がtより小さくなる領域と、次元kの座標がtと同じか、tより大きくなる領域とに分割される。
 そして、この内部ノードの2つの子ノードは、分割によって得られた2つの領域に対応する。この分割を左の子ノードと右の子ノードに再帰的に適用することで、kd木は構築される。また、内部ノードはそれぞれ、分割に用いられた座標を保持する。従って、この分割を繰り返して、カバー領域に含まれる点が1つになれば、これ以上分割せずに、このカバー領域に関連付けられた葉ノードを構築して保持する。終端となる葉ノードは、そのカバー領域に含まれる点自体を保持する。また、各点が重みを持つ場合、葉ノードは、この重みについても同様に保持する。
 また、kd木の各ノードvのカバー領域R(v)に関して、ノードvは、カバー領域の値を直接保持していても良いし、kd木を探索するときに、通過したノードに保持されている分割に用いられた座標から、カバー領域の値を動的に計算しても良い。
 なお、kd木の定義方法には複数のバリエーションが存在するが、本実施の形態においては、そのいずれの定義が用いられても良い。また、本実施の形態では、kd木の内部ノードが分割に用いた座標のみを保持する定義を用いて説明が行われているが、これに限定される趣旨ではない。本実施の形態においては、kd木の内部ノードが分割に用いた点自体を保持する定義が用いられていても良い。また、後述するように、葉ノードが1つの点を保持する定義に限定されず、葉ノードが複数の点を保持する定義が用いられていても良い。
 また、上述した点の列Pは、ノードに関連付けられたカバー領域それぞれに存在する点が、ひとつながりで連続して出現するように、点の集合に含まれる点を一列に並べて得られている。
 具体的には、点の列Pは、構築されたkd木を用いて以下のように定義される。まず、点の列Pにおいて、各点は、kd木を通りがけ順(in-order)に探索したときに見つかる順序に基づいて並べられているものとする。すなわち、kd木のルートノードを出発点として、まず左の部分木が探索され、次にルートノード自身を通り、右の部分木が探索される。この探索順序を再帰的に全ノードに適用するとき、kd木に含まれる全ての点に一回ずつアクセスすることになるが、その順番通りに点を並べて得られる列をPとする。
 このとき、kd木の任意のノードvに関して、以下の条件を満たす区間Iv = [s, e]が存在する。その条件とは、点の列P上で区間Ivに含まれる点の集合が、vをルートノードとする部分木に含まれる点の集合と一致することである。各ノードvは、このような区間Ivを保持するものとする。このとき、vの部分木に含まれる点の数nvは、nv=e-s+1という式で計算できる。
 さらに、この点の列Pに対応する、k個の座標列Pkを考える。ただし、Pkは、次元kについて、点の列Pの並び順と同じ順序で、各点の次元kでの座標を取り出すことで得られる座標列である。
 ここで、図3及び図4を用いて、kd木の具体例について説明する。また、以下の説明では、次元数dは2次元であるとする。図3は、kd木の元になる2次元平面の一例を示している。図4(a)は、2次元空間から得られるkd木の一例を示し、図4(b)は、kd木から得られる点の列Pの一例を示している。
 図3に示すように、2次元平面上には複数の点が存在している。具体的には、[0,7]×[0,7]のグリッドで表される2次元平面に、n=8個の点が存在している。それぞれの点には0から7の番号が与えられているが、これは後述するように、点の列Pにおける順序を表している。すなわち、0と書かれた点は、点の列Pにおける最初の点であるP[0]を表している。また、グリッドの上に引かれている太線は、kd木のノードによって生じる空間の分割を表しており、横の太線は次元1に関する分割を、縦の太線は次元2に関する分割を表している。
 また、図4(a)に示すように、図3に示した各点はkd木に格納される。この木構造において、深さが偶数のノードは次元1に関する分割を表し、深さが奇数のノードは次元2に関する分割を表している。内部ノードの上部に示されている式は、どの座標を用いて空間を分割しているかを表している。さらに、ノードの下部には、そのノードに対応する点の列Pでの区間Ivが示されている。葉ノードでは、分割に用いる座標の代わりに、座標の組で表される点が保持されている。
 また、図4(b)に示すように、点の列Pは、図3に示した点と図4(a)に示したkd木とに対応する。定義により、座標列P1とP2も同じ図で表される。図4(b)の一行目は添字iの値を表し、二行目は座標列P1、三行目は座標列P2を表す。この図によれば、たとえば、P[0] = (P1[0],P2[0]) = (0,4) である。
 続いて、図4(a)に示したkd木の一例が、上述したkd木の定義を満たしていることについて説明する。たとえば、kd木のルートノードvは、与えられたグリッドにおける全ての領域をカバー領域R(v)として持つ。すなわち、カバー領域R(v)=[0,7]×[0,7]である。さらに、全ての点はルートノードの子として含まれるため、区間Iv= [s, e]=[0,7]である。ルートノードは深さ0であり、次元1で空間を分割している。次元1の座標のうち中央値となるp1=4に注目して、p1<4となる領域と4≦p1となる領域とに分割している。従って、左の子ノードのカバー領域は[0,3]×[0,7]であり、右の子ノードのカバー領域は[4,7]×[0,7]である。以下、同様に分割されて構築されている。
 また、点の列Pは、kd木を通りがけ順に巡回した順番に並んでいるため、全てのノードについて、点の列P上で区間Ivに含まれる点は、そのノードをルートとする部分木に含まれている。たとえば、図4(a)において木全体のルートノードの左の子ノードは、Iv=[0,3]であるが、このことは、P[0]からP[3]の4つの点が、このノードをルートとする部分木に含まれることを表す。
 また、本実施の形態では、座標列集計部30は、まず、座標列集計用データ構造42を用いて、座標列から得られる複数の部分列のうち、入力された範囲に含まれる座標のみが出現する部分列を特定する。そして、座標列集計部30は、特定した部分列上の区間であって、座標列において入力された区間に出現する座標が出現している、区間を特定し、特定した部分列上の区間に出現する座標が対応する点の集合に関する統計量を計算する。なお、後述するように、部分列としては、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものが挙げられる。
 また、本実施の形態では、座標列集計用データ構造42は、1からdの各次元kに対応する座標列Pkを表現するデータ構造である。ただし、Pkは、次元kについて、前記点の列Pの並び順と同じ順序で、各点の次元kでの座標を取り出すことで得られる座標列である。座標列集計用データ構造42は、座標列集計部30において、座標列Pk上の添字の区間と、座標の値の範囲とが入力されたときに、座標列上での位置が入力された区間に含まれ、且つ、値が入力された範囲に含まれる、全ての座標について、これらの座標が対応する点の集合に関する統計量を計算できるようにする、データ構造である。
 座標列集計用データ構造42としては、上述の部分列に関連付けられた複数のノードを有するデータ構造が挙げられる。この場合、各ノードは、部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出したビットを部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現できる。この場合、座標列集計部30は、各ノードを表現するビットの列を用いて、部分列上の区間を特定する。
 具体的には、本実施の形態では、座標列集計用データ構造42として、ウェーブレット木を用いることができる。この場合、区間検索用データ構造42は、1からdの各次元に対応する、d個のウェーブレット木で構築されている。このd個のウェーブレット木の集合をW={wk}とする。
 ただし、本実施の形態において、座標列集計用データ構造42は、ウェーブレット木に限定されるものではない。座標列集計用データ構造42は、整数列上の添字の区間と整数の値の範囲とが条件として与えられたとき、整数列上で、その区間に含まれ、かつ、その範囲条件を満たす、点を検索できる、データ構造であれば良い。たとえば、その他の座標列集計用データ構造42としては、Chazelleのcompressed range tree、compressed range treeを外部記憶に拡張したCompressed Range B-tree (CRB-tree)等が挙げられる。
 ここで、上述した図3及び図4に加え、図5を用いて、座標列集計用データ構造42の具体例、すなわち、d個のウェーブレット木の具体例について説明する。また、以下の説明では、次元数は2次元であるとする。図5は、本発明の実施の形態で用いられるウェーブレット木の一例を示す図であり、図5(a)及び(b)はそれぞれ次元が異なるウェーブレット木を示している。
 図5(a)は座標列P1及び座標列P1に対応するウェーブレット木w1を示し、図5(b)は座標列P2及び座標列P2に対応するウェーブレット木w2を示している。また、各図の左に示されたテーブルは座標列を表している。1行目は列の添字iを示し、2行目は添字に対応する整数を示している。そして、3行目以降には、各整数のビット表現が示されている。
 そして、次元kの座標列Pkに対応するウェーブレット木は、以下のように、二分木として定義される。なお、ウェーブレット木は、深さlの二分木である。この木構造において、親から左の子に向かうエッジはビット0に対応し、親から右の子に向かうエッジはビット1に対応する。
 まず、ウェーブレット木のルートノードは、深さ0にあり、長さ0ビットの座標接頭辞に対応しているものとする。さらにウェーブレット木の深さhにあるノードvは、ルートノードからそのノードへのパスに出現するh個のビットを連結して得られるhビットの座標接頭辞πに対応しているものとする。深さlにあるノードは全て葉ノードである。葉ノードは、ルートからそのノードへのパスに出現するl個のビットを連結して得られるlビットで表される1つの整数に対応する。
 さらに、深さhにおいて座標接頭辞πに対応するノードvは、座標列Pkの部分列Pk (π)に対応する。ただし、Pk (π)は、座標列Pkから座標接頭辞πで始まる全ての整数を、その並び順と同じ順序を保ったまま抜き出した部分列とする。本明細書では、元となるPkを「座標列」、座標接頭辞πに注目して抜き出した部分列Pk(π)を、「座標部分列(coordinate subsequence)」と呼び分けることとする。
 座標部分列Pk(π)の添字iの要素であるPk(π)[i]が、元の座標列Pkの添字jの要素であるPk[j]に相当するとき、このPk(π)[i]は、元々は、点P[j]の次元kの座標である。このとき、本明細書では、座標Pk(π)[i]は、点P[j]に属する、と呼ぶこととする。
 さらに、このノードvは、Pk (π)の各要素のh+1番目のビットのみを抜き出して同じ順序で連結したビット列Bvを記憶しているものとする。すなわち、整数Pk (π)[i]のh+1ビット目が0であるときBv[i]=0となり、1であるときBv[i]=1となるようなビット列である。
 具体的には、図5(a)及び(b)に示すように、本実施の形態では、次元1の座標列P1に対して構築されたウェーブレット木w1と、次元2の座標列P2に対して構築されたウェーブレット木w2とが用いられる。また、図5(a)及び(b)においては、各ノードについて対応する座標接頭辞π、座標部分列Pk(π)、およびビット列Bvが示されている。
 また、図5(a)及び(b)に示すように、ウェーブレット木w1は、座標列P1=(0,2,1,3,4,7,5,6)のウェーブレット木である。座標列P1の各要素は、3ビットで表されている。そして、各ウェーブレット木のルートノードは、座標接頭辞π=”***”に結びつけられている。よって、この座標接頭辞は3ビットで表せる全ての値、すなわち、[“000”,”111”]=[0,7]までの範囲の全ての値に対応している。このため、ルートノードは、座標部分列P1(π)の0+1=1ビット目のビットをビット列Bvとして保持している。
 次に、ルートノードの左の子ノードは、接頭辞“0**”に対応しており、1ビット目が0で始まる3ビットの整数、すなわち[0,3]の範囲に対応し、さらに、座標列P1から[0,3]の範囲に該当する値だけを取り出した座標部分列P1 (π)=(0,2,1,3)にも対応する。よって、この左の子ノードは、その2ビット目のビットをビット列Bvとして保持している。なお、以降の子ノードも同様に考えることができる。
 また、ウェーブレット木は、各内部ノードvについて、ビット列Bvの完備辞書を保持している。完備辞書は、長さnのビット列Bに対してaccess、rank、selectと呼ばれる3種類の操作をサポートするデータ構造である。この3種類の操作は以下のように定義される。
access(B,i)は、B上の添字iの要素B[i]を返す。
rank1(B,i)は、B[0,i)の範囲に存在する1の数を返す。
rank0(B,i)は、B[0,i)の範囲に存在する0の数を返す。
select1(B,i)は、B上でi+1番目の1が出現する位置jを返す。
select0(B,i)は、B上でi+1番目の0が出現する位置jを返す。
 なお、完備辞書は、文献によっては、簡潔ビットベクトルあるいはrank / select dictionaryなどと呼ばれることがある。
 また、図5(a)及び(b)の例では、説明のため、ウェーブレット木の各ノードにおいて、座標接頭辞πと、座標部分列Pk(π)と、ビット列Bvとが、示されているが、実際には、ウェーブレット木はBvの完備辞書だけを保持しており、座標接頭辞πおよび座標部分列Pk (π)を保持している必要はない。これは、座標接頭辞πは、たどってきたエッジの情報から計算でき、座標部分列Pk (π)の各要素は、ビット列Bvの完備辞書を用いることで計算できるためである。よって、記憶部43には、実際には、座標列集計用データ構造42として、完備辞書のみが保持される。
 なお、ウェーブレット木の定義方法は文献によって異なる。上述した非特許文献1では、ウェーブレット木は、接頭辞を用いずに定義されているが、本明細書では、ウェーブレット木は、説明のため、接頭辞を用いて定義されている。どちらの定義の場合であっても、ウェーブレット木の本質的な構造は同一であり、同じ動作を実現できる。
 また、ウェーブレット木は、木構造としての探索が可能な構造、即ち、複数のノードを有する構造を有していれば、明示的に木構造として構成されていなくてもよい。たとえば、ウェーブレット行列という、ビット列をノードごとに分けずにウェーブレット木を実装する手法が知られているが、本発明における議論は、ウェーブレット行列を使った場合でもまったく同様に成立する。
 また、区間検索部10によって特定された区間が複数である場合は、集計部20は、座標列集計部30によって計算された区間毎の統計量(即ち、部分的な統計量)を、更に集計する。この場合、集計部20は、集計によって得られた全体的な統計量を、クエリ領域に含まれる点の集合に関する全体的な統計量として、出力部60に出力する。その後、出力部60は、集計部20が出力した全体的な統計量を、外部の端末装置、サーバ装置等に出力する。
[探索アルゴリズムの概要]
 続いて、情報処理装置100の動作を説明する前に、情報処理装置100において用いられる探索アルゴリズムの概要について以下に説明する。
 初めに、kd木を用いて、ノードのカバー領域がクエリ領域と重なっており、かつ、ノードのカバー領域の包含次元数が(d-1)になるノードを見つける。このことはすなわち、ノードのカバー領域がクエリ領域に含まれるためのd個の範囲条件のうち、(d-1)個の範囲条件が成り立っていることを表す。ここで、条件が成り立っていない次元をfとおく。
 このノードvが保持する添字の区間Iv = [s, e]に注目すると、点の列PのうちP[s,e]に含まれる点は、このノードvをルートとする部分木に含まれる点であるから、f以外の次元に関して、クエリの範囲条件を満たすことが保証される。ただし、次元fに関する範囲条件を満たすことが保証されない。
 そこで、次元fに関する座標列Pfに注目する。もしPf[s,e]に含まれる座標Pf[i]が、次元fに関する範囲条件を満たすとき、座標Pf[i]に対応する点P[i]は、全ての次元に関するd個の範囲条件を満たす。より厳密に表現すれば、s≦i≦eを満たすiに関して、座標Pf[i]が、次元fにおける範囲条件lqf≦Pf[i]≦uqfをさらに満たすとき、この座標Pf[i]はクエリの範囲条件を全て満たす点P[i]に属する。
 本実施の形態では、このような性質が利用される。すなわちPf[s,e]に含まれる座標であって、座標の値が次元fに関するクエリの範囲[lqf,uqf]に含まれるような全ての座標について、それらの座標が属する点の集合の統計量を計算する。この統計量は、ウェーブレット木を用いることで高速に計算できる。この統計量は、P[s,e]に含まれる点であって、クエリに含まれる点の集合の統計量に等しい。この統計量を、全ての区間について計算することで、クエリに含まれる全ての点の集合に関する全体的な統計量を求めることができる。
[装置動作]
 次に、本発明の実施の形態における情報処理装置100の動作について図6を用いて説明する。図6は、本発明の実施の形態における情報処理装置の動作を示すフロー図である。また、以下の説明においては、適宜図1~図5を参酌する。また、本実施の形態では、情報処理装置100を動作させることによって、情報処理方法が実施される。よって、本実施の形態における情報処理方法の説明は、以下の情報処理装置100の動作説明に代える。
 図6に示すように、まず、入力受付部50は、クエリ領域の範囲を指定するための外部からの入力を受付け(ステップA1)、受け付けた内容を区間検索部10に出力する。この入力されたクエリ領域Qは、Q=[lq1, uq1]×[lq2, uq2]×…×[lqd, uqd]と表記される。
 次に、区間検索部10は、統計量の集合を表す変数であるASに、空集合をセットする(ステップA2)。この変数ASは、クエリに含まれる点の部分集合に関する部分的な統計量を、中間集計として格納するための変数である。
 次に、区間検索部10は、記憶部43に問い合わせを行なって、区間検索用データ構造41、すなわちkd木を取得する。区間検索部10は、kd木のルートノードを変数vに代入する(ステップA3)。この変数vは、現在注目しているノードを表す変数である。
 区間検索部10は、クエリ領域Qについて、区間検索用データ構造41を対象として関数find_intervals(v,Q)を実行し、区間と次元とのペアの集合IDPを返り値として取得する(ステップA4)。IDPに含まれる区間Iv=[s,e]と次元fとのペアは、点の列Pにおいて、P[s,e]に含まれるe-s+1個の点が、次元f以外の(d-1)個の範囲条件を満たしていることを表している。また、関数find_intervals(v,Q)は、そのようなIDPを返す関数である。
 なお、関数find_intervals(v,Q)は、クエリに含まれる点であって、点の列P上でこれらの区間に含まれない点を見つけた場合、それらの点については別途統計量を計算して変数ASに格納する。区間検索部10は、IDPおよびASを集計部20に出力する。
 次に、集計部20は、区間検索部10からIDPおよびASを受け取り、IDPに含まれる区間Iv=[s,e]と次元fとのペアについて、ループを開始する(ステップA5)。すなわち、IDPに含まれる全てのペアについて、ステップA6及びA7を実行する。
 次に、集計部20は、次元fに関する座標列集計部30-fに区間Ivを出力する。次元fに関する座標列集計部30-fは、区間Ivを入力として受け付け、記憶部43に問い合わせを行なって、次元fの座標列Pfに対応する座標列集計用データ構造42、すなわちウェーブレット木wfを取得する。そして、次元fに関する座標列集計部30-fは、ウェーブレット木wfのルートノードを変数vに代入する(ステップA6)。
 次元fに関する座標列集計部30-fは、関数aggregate_interval(v, s, e, lqf, uqf)を呼び出し、この関数が返す統計量(出力結果)をASに加える(ステップA7)。この関数aggregate_interval(v, s, e, lqf, uqf)は、ウェーブレット木wfを参照することで実行される。また、関数aggregate_interval(v, s, e, lqf, uqf)は、座標列Pfに関してPf[s, e]に含まれる座標のうち、lqf≦Pf[i]≦uqf が成り立つ全ての座標Pf[i]の集合について、その集合に含まれる座標が属する全ての点の集合を特定し、その点の集合に関する統計量を返す関数である。これらの点はクエリに含まれる点の一部であり、この統計量は部分的な統計量である。
 統計量としては、条件を満たす点の数であるカウント(COUNT)、及び条件を満たす点の重みの合計であるサム(SUM)などを用いることができる。
 集計部20は、IDPに含まれる全てのペアについてステップA7が実行されたのち、ループを終了する(ステップA8)。
 集計部20は、ASに含まれる部分的な統計量を用いて、クエリ領域に含まれる全ての点の集合についての全体的な統計量を計算する(ステップA9)。たとえば、統計量としてカウントを用いる場合は、ASに含まれる各カウントを合計することにより、クエリ領域に含まれるすべての点の集合のカウントが得られる。
 最後に、出力部60は、集計部20から受け取った、クエリ領域に含まれる全ての点の集合についての全体的な統計量を外部に出力する(ステップA10)。ステップA1~ステップA10の実行により、クエリ領域Qについての探索処理は終了する。また、ステップA1~ステップA10は、クエリ領域Qが入力される度に実行される。
[ステップA4]
 続いて、図6に示したステップA4について、図7を用いて更に具体的に説明する。図7は、再帰的に区間を検索する関数find_intervals(v,Q)の動作を示すフロー図である。この関数は区間検索部10が、記憶部43に問い合わせを行なうことで実現される。
 図7に示すように、まず、区間検索部10は、kd木のノードvが葉ノードであるか判定する(ステップB1)。そして、区間検索部10は、ステップB1の判定の結果、答えがYesであれば、葉ノードに保持されている全ての点についてクエリ領域に含まれるか調べ、葉ノードに保持されており、かつクエリ領域に含まれる点について統計量を計算し、ASに加える(ステップB6)。また、ステップB6では、必要であれば、葉ノードに保持されている重みを参照して計算する(ステップB6)。
 また、図7においては、ステップB6で行なわれる操作は、AS=AS∪aggregate_leaf(v)という式で表現されている。aggregate_leaf(v)は、葉ノードに保持されている全ての点にがクエリ領域に含まれているかどうかを調べ、クエリ領域に含まれる点について統計量を計算して返す関数である。たとえば、カウント・クエリを実現する場合、関数aggregate_leaf(v)は、葉ノードvに保持されている全ての点のうち、クエリ領域に含まれる点の数を数えて返す。以上の葉ノードに関する処理を行った場合、区間検索部10は空集合を返す。
 一方、ステップB1の判定の結果、答えがNoであれば、区間検索部10は、kd木のノードvのカバー領域がクエリ領域と重なるかどうかを判定する(ステップB2)。そして、区間検索部10は、ステップB2の判定の結果、答えがYesであればステップB3に進み、答えがNoであれば空集合を返す。
 具体的には、ステップB2では、区間検索部10は、kd木のノードvのカバー領域R(v) = [lv1,uv1] × [lv2,uv2] × … × [lvd,uvd]を取得する。その上で、区間検索部10は、1≦k≦dとなるkのうち、少なくともひとつの次元kにおいて、(uvk<lqkまたは uqk < lvk)が成り立つかどうかを判定する。判定の結果、上記関係が成り立つ場合は、空間上の重なりがないため、区間検索部10は、Noと判定する。上記の関係が成り立たない場合は、空間上での重なりがあるため、区間検索部10は、Yesと判定する。ステップB2の判定は、クエリ領域と重なりがないカバー領域をこれ以上探索しないように枝刈りすることが目的である。
 次に、区間検索部10は、ノードvのカバー領域とクエリ領域とを比較して、包含次元数hを計算する(ステップB3)。具体的には、区間検索部10は、たとえば、定義により、lqk≦ lvk 、且つ uvk ≦ uqkを満たす次元kがいくつ存在しているかを数えることによって、包含次元数hを計算できる。
 次に、区間検索部10は、包含次元数hがd-1よりも小さいかどうかを判定する(ステップB4)。区間検索部10は、ステップB4の判定の結果、答えがYesである場合は、区間検索部10は、変数vleftにノードvの左の子ノードを代入し、変数vrightにノードvの右の子ノードを代入する(ステップB5)。
 そして、ステップB5の後、区間検索部10は、同じ関数を以下のように再帰的に呼び出す。
return find_intervals(vleft, Q) ∪ find_intervals(vright, Q)
 一方、ステップB4の判定の結果、答えがNoである場合は、区間検索部10は、ノードvのカバー領域とクエリ領域とを比較して、lqf ≦ lvf 、且つuvf ≦ uqf という範囲条件が満たされていない次元fを求める(ステップB7)。そして、区間検索部10は、ノードvが保持する添字の区間Ivと次元fとのペアである(Iv,f)を返す。
 以上により、図7に示すアルゴリズムの動作の説明を終える。この図7に示すアルゴリズムは、従来のkd木の探索アルゴリズムとほぼ等しいが、d個の範囲条件全てを満たすノードを見つけるまで探索するのではなく、(d-1)個の範囲条件を満たすノードを見つけるまで探索する点で異なっている。
[ステップA7]
 次いで、図6に示すアルゴリズムにおけるステップA7の動作について、図8を用いて詳しく説明する。すなわち、図6中の関数aggregate_interval(v, s, e, lqf, uqf)の動作について、図8を用いて説明する。図8は、図6のステップA7に示された関数aggregate_interval(v, s, e, lqf, uqf)の動作を示す図である。
 関数aggregate_interval(v, s, e, lqf, uqf)は、次元fに関する座標列集計部30-fによって実行される関数である。この関数は、ウェーブレット木wfのノードvと、添字の区間[s, e]、および、座標の値の範囲[lqf, uqf]を入力として受け付け、vに対応する座標部分列Pf(π)上で該区間に含まれる座標のうち、座標の値が該範囲に含まれる全ての座標について、それらの座標が属する点に関する統計量を返す関数である。
 図8に示すように、次元fに関する座標列集計部30-fは、関数aggregate_interval(v, s, e, lqf, uqf)を実行して、s > e または ([lπ, uπ] ∩ [lqf, uqf]) = φ が成り立つかどうかを判定する(ステップC1)。そして、座標列集計部30-fは、ステップC1の判定の結果、答えがYesであれば、空集合を返す。なお、[lπ, uπ]は、接頭辞πで始まる整数の範囲を表している。
 一方、ステップC1の判定の結果、答えがNoであれば、座標列集計部は、 [lπ, uπ] ⊆ [lqf, uqf] が成り立つかどうかを判定する(ステップC2)。なお、[lπ, uπ]は、接頭辞πで始まる整数の範囲を表している。
 そして、ステップC2の判定の結果、答えがYesであれば、つまり、[lπ, uπ] ⊆ [lqf, uqf] が成り立つときは、座標の値の範囲がクエリの範囲に包含される。よって、Pf(π) [s, e]に含まれる座標は、必ずクエリに包含される点に属する。従って、座標列集計部30-fは、関数aggregate_node(v , s , e)を実行して、その出力結果を返り値とする。関数aggregate_node(v , s , e)は、v に対応する座標列Pf(π)に関して、Pf(π) [s, e]に含まれる座標が属する点の集合の統計量を返す関数である。
 一方、ステップC2の判定の結果、答えがNoであれば、座標列集計部30-fは、ノードvに保持されているビット列をBvとおいて、図8中に示す4つのrankの式を用いて、左の子ノードにおける添字の区間[sleft, eleft]と、右の子ノードにおける添字の区間[sright, eright]とを計算する(ステップC3)。
 これらの式を用いて計算すると、ウェーブレット木の特性により、ノードvに対応する座標部分列Pf(π)上の区間[s, e]から抽出された座標を含む、左の子ノードに対応する座標部分列Pfleft)上の区間[sleft, eleft]、および、右の子ノードに対応する座標部分列Pfright)上の区間[sright, eright]を計算できる。なお、πleft、πrightは接頭辞πを一つ延長したものであり、πleftはπ+”0”に対応し、πrightはπ+”1”に対応している。
 その後、座標列集計部30-fは、右の子ノード、および左の子ノードについて、同様の処理を行うため、再帰的に以下の関数を呼び出す。
  return aggregate_interval (vleft, sleft, eleft, lqf, uqf) ∪aggregate_interval (vright, sright, eright, lqf, uqf)
[ステップC2]
 続いて、図8に示したステップC2で呼び出される関数aggregate_node(v , s , e) について説明する。この関数は座標列集計部30によって実行される。
 関数aggregate_node(v, s , e)は、ノードv に対応する座標列Pf(π)に関して、Pf(π) [s, e]に含まれる座標が属する点の集合の統計量を返す関数である。
 関数aggregate_node(v, s , e)は、様々な集計関数を抽象化したものであり、この関数を、具体的な集計関数に置き換えることで、情報処理装置100を様々な種類の矩形範囲検索に利用できる。
 たとえば、情報処理装置100は、クエリ領域Qに含まれる点の数をカウントして出力することができる。この動作は、関数aggregate_node(v , s , e)が、返り値として(e - s +1)を返すことによって実現される。何故なら、Pf (π)[s ,e ]に含まれる全ての座標が、それぞれクエリ領域Qに含まれる点に対応しており、 (e - s +1)個の点がクエリ領域Qに含まれていることを表しているからである。
 また、このとき、関数aggregate_interval(v , s , e , lqf , uqf)は、Pf[s, e]に座標が含まれる点のうち、さらにクエリ領域Qに含まれる数をカウントして返す関数として動作する。この場合、集計部20は、点の列Pに含まれる点のうち、クエリ領域Qに含まれる数をカウントして出力する。
 また、たとえば、全ての点pに重みw(p)が付与されているとき、情報処理装置100は、クエリ領域に含まれる点の重みの合計を計算することができる。これは、あらかじめ、全ての座標部分列Pf (π)に含まれる各座標について、対応する点pの重みw(p)を同じ順番で並べた列Wf(π)が設定されている場合に、この列上での区間合計を計算できるようなデータ構造が用意されていれば可能となる。
 このようなデータ構造としては、既存のPartial Sumを扱うデータ構造が挙げられる。また、このようなデータ構造であれば、Pf (π)[s ,e]がクエリ領域に含まれる点に対応していることが分かっているとき、この区間[s,e]に対応する重みの列上の区間Wf(π) [s,e]に含まれる重みの区間合計を計算し、最後に足し合わせることで、クエリ領域Qに含まれる全ての点の重みの合計が計算できる。この場合、集計部20は、クエリ領域Qに含まれる全ての点の重みの合計を統計量として出力する。
 同様に、情報処理装置100は、クエリ領域Qに含まれる全ての点のリストを返すレポート・クエリとしても用いることができる。つまり、Pf (π)[s ,e]に含まれる各要素Pf(π)[j]について、元の整数列Pf上での位置iを、ウェーブレット木をさかのぼることによって特定できる。このとき、点P[i]がクエリ領域に含まれる。この場合、集計部20は、クエリ領域Qに含まれる全ての点のリストを統計量として出力する。
 以上で、関数aggregate_interval(v , s , e , lqf , uqf)及び関数aggregate_node(v, s , e)についての説明を終える。この2つの関数の動作は、非特許文献2に示されている、ウェーブレット木を用いた2次元上の統計量の計算と同等であることに注意する。すなわち、この2つの関数の動作は、添字の区間[s , e]と値の範囲[lqf , uqf]を指定した2次元空間上での検索と見なすことができる。この計算によって求まる区間の数はO(log n)であることが知られている。
 また、以上のように、本実施の形態によれば、様々な種類の矩形範囲検索を実現することができる。本実施の形態は、図6~図8に示したアルゴリズムが単独で用いられる態様に限定されず、図6~図8に示したアルゴリズムに、適宜他の探索アルゴリズムが組み合わされた態様であってもよい。
[実施の形態による効果]
 本実施の形態は、kd木を単独で用いる従来手法よりも、計算量が少なくなる効果がある。このことを明らかにするため、最悪計算量について解析する。kd木を用いる従来手法は、包含次元数がdになるまで分割するのに対して、本実施の形態における手法は、d-1になるまでしか分割しない。このことが最悪計算量におよぼす影響を以下に述べる。
 まず、計算量が最悪になる場合のkd木のノードの分割数を見積もる。計算量が最悪になるのは、空間分割数が最大になるときである。つまり、1回の分割で生じた2つのカバー領域が、常にクエリ領域と重なってしまう場合である。
 図9に、最悪な場合の探索ノード数と包含次元数との関係を示す。図9は、2次元の場合の探索ノード数と包含次元数との変化を示す図である。図9に示すように、木構造上のひとつのノードは、ひとつの探索ノードに対応している。木構造の深さが1つ下がることは、ノードが1回分割されて2つの探索ノードに分割されることを表している。ノード上の数字は、包含次元数を表している。分割されるほど、包含次元数が高いノードが増えていくことが分かる。
 ここで、d回の分割をまとめて考える。深さm * dにおいて包含次元数hになるノードの数をTh(m)とおいて、Th(m)とTh(m-1)のあいだに成り立つ漸化式を考える。d回の分割により、1つのカバー領域が2d個のカバー領域に分割される。このとき、必ず各次元で1回の分割が生じる。すでに包含されている次元について分割されても包含次元数は上がらないことを考えると、深さm * dにおいて、包含次元数がhになるノードの数を求めるには、深さ(m-1) * dにおいて包含次元数がi(≦ h)だったノードから、h-i個の次元が新たに包含される数を考えればよい。
 この漸化式は、以下の数1に示す通りとなる。ただし、以下の数1において、C(x,y)は組み合わせの数を表すものとする。
Figure JPOXMLDOC01-appb-M000001
 上記の数1から、d回の分割により、全体のノード数は2d倍に増加するが、そのうち包含次元数hのノードは2h倍に増加することが分かる。
 また、この分割をlog(n)/d回繰り返すと、探索木全体は深さlog nの二分木になり、全体のノード数はO(n)に達して分割が終了する。そのうち包含次元数hのノードは、O(n(h/d))となる。ただし包含次元数0のノードはO(log n)である。
 よって、以下のように説明することができる。まず、探索の打ち切りを全く行なわなければ、分割数は最大でO(n)になる。また、包含次元数がdに達した時点で分割を打ち切れば、分割数はO(n(d-1)/d)となる。一方、包含次元数がd-1に達した時点で分割を打ち切れば、分割数はO(n(d-2)/d)となる。そして、kd木では、包含次元数がdに達した時点で分割が打ち切られるため、計算量はO(n(d-1)/d)となる。これは従来から知られているオーダと一致する。
 このkd木での解析が、本実施の形態に適用される。本実施の形態では、包含次元数がd-1に達した時点で分割が打ち切られるので、分割数、すなわちkd木によって計算される区間の数は最大でO(n(d-2)/d)となる。
 また、区間毎に、関数aggregate_interval(v , s , e , lqf , uqf)が実行される。この関数では、関数aggregate_node(v , s , e)がO(log n)回実行される。ここで関数aggregate_node(v , s , e)がO(1)で実行できる関数だとする。たとえば、カウント・クエリを実現するには、(e - s+1)を計算するだけでよいため、O(1)で計算できる。これにより、本実施の形態における手法は、O(n(d-2)/d)個の区間について、それぞれO(log n)回、O(1)の計算を実行することになるため、合計の計算量はO(n(d-2)/d log n)となる。
 ただし、d=2の場合は特殊である。d-1=1次元が包含された時点で探索ループを抜けるので、分割されたノードの数は、包括次元数が0となるノードの数O(log n)に比例する。各ノードについてO(log n)の計算が必要になるので、d=2の場合の計算量はO(log2 n)となる。
 以上はクエリ領域に包含される点を数えるカウント・クエリの場合であるが、包含される点全てについてリストを出力するレポート・クエリには、出力される点の数をFとして、それぞれについてO(log n)の計算時間がかかる。まとめると、図10に示す通りとなる。図10に示すように、本発明によれば、kd木を用いて探索処理を行なう場合よりも計算量のオーダが改善されており、しかも従来のウェーブレット木と異なり、3次元以上にも適用できる。図10は、本発明と従来手法との計算量の比較を示す図である。
[プログラム]
 本発明の実施の形態におけるプログラムは、コンピュータに、図6に示すステップA1~A10を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における情報処理装置100と情報処理方法とを実現することができる。この場合、コンピュータのCPU(Central Processing Unit)は、区間検索部10、集計部20、座標列集計部30、入力受付部50、及び出力部60として機能し、処理を行なう。また、本実施の形態では、記憶部43は、コンピュータに備えられたハードディスク等の記憶装置に、これらを構成するデータファイルを格納することによって実現される。
 なお、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、検索部10、集計部20、座標列集計部30、入力受付部50、及び出力部60として機能しても良い。また、記憶部43は、本実施の形態におけるプログラムを実行するコンピュータとは別のコンピュータ上に構築されていても良い。
 ここで、本実施の形態におけるプログラムを実行することによって、情報処理装置100を実現するコンピュータについて図11を用いて説明する。図11は、本発明の実施の形態における情報処理装置を実現するコンピュータの一例を示すブロック図である。
 図11に示すように、コンピュータ110は、CPU111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
 CPU111は、記憶装置113に格納された、本実施の形態におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
 また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
 データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
 また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記憶媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体が挙げられる。
 また、上述した実施の形態の一部又は全部は、以下に記載する(付記1)~(付記28)によって表現することができるが、以下の記載に限定されるものではない。
(付記1) 多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理装置であって、
 クエリ領域として、特定の多次元の領域が指定された場合に、
前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、区間検索部と、
 前記区間検索部で特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、集計部と、
 前記区間検索部で特定された区間、及び前記集計部で特定された前記座標の値の範囲を入力として、
前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
前記全ての座標が対応する点の集合に関する統計量を計算する、座標列集計部と、
を備えている、ことを特徴とする情報処理装置。
(付記2) 前記座標列集計部が、前記多次元空間を構成する全次元それぞれ毎に備えられており、それぞれ、対応する次元と前記集計部が座標の値の範囲を特定した次元とが一致する場合に、前記点の集合に関する統計量を計算する、
付記1に記載の情報処理装置。
(付記3) 前記集計部が、前記区間検索部によって特定された区間が複数である場合に、前記座標列集計部によって計算された区間毎の前記点の集合に関する統計量を、更に集計し、集計によって得られた統計量を、前記クエリ領域に含まれる点の集合に関する全体的な統計量として、出力する、
付記1に記載の情報処理装置。
(付記4) 前記データ構造が、前記区間検索部による前記区間の特定に用いられる第1のデータ構造と、前記座標列集計部による前記統計量の計算に用いられる第2のデータ構造とを有している、
付記1に記載の情報処理装置。
(付記5) 前記第1のデータ構造が、
前記多次元空間に設定された複数のカバー領域のいずれかと、前記点の列上において当該カバー領域に含まれる点が出現する区間とに関連付けられている、ノードを有する木構造によって表現されており、
 前記区間検索部が、
前記ノードのうち、
関連付けられた前記カバー領域に含まれる点における、前記1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定し、
特定した1又は2以上のノードが関連付けられている区間を前記区間として特定する、
付記4に記載の情報処理装置。
(付記6) 前記点の列は、
前記ノードに関連付けられたカバー領域それぞれに含まれる点が、ひとつながりで連続して出現するように、前記点の集合に含まれる点を一列に並べて得られている、
付記5に記載の情報処理装置。
(付記7) 前記座標列集計部は、前記第2のデータ構造を用いて、
前記座標列から得られる複数の部分列のうち、入力された前記範囲に含まれる座標のみが出現する部分列を特定し、そして、特定した部分列上の区間であって、前記座標列において入力された前記区間に出現する座標が出現している、第二の区間を特定し、
更に、特定した前記第二の区間に出現する座標が対応する点の集合に関する統計量を計算する、
付記4に記載の情報処理装置。
(付記8) 前記部分列が、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものであり、
 前記第2のデータ構造が、
前記部分列に関連付けられた複数のノードを有し、
前記複数のノードそれぞれは、前記部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出した前記ビットを前記部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現され、
 前記座標列集計部は、前記複数ノードそれぞれを表現するビットの列を用いて、前記第二の区間を特定する、
付記7に記載の情報処理装置。
(付記9) 前記座標列集計部が、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点の個数を計算する、
付記1に記載の情報処理装置。
(付記10) 前記座標列集計部が、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点それぞれの各次元の座標を計算する、
付記1に記載の情報処理装置。
(付記11) 多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理方法であって、
(a)クエリ領域として、特定の多次元の領域が指定された場合に、
前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、ステップと、
(b)前記(a)のステップで特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、ステップと、
(c)前記(a)のステップで特定された区間、及び前記(b)のステップで特定された前記座標の値の範囲を入力として、
前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
前記全ての座標が対応する点の集合に関する統計量を計算する、ステップと、
を有する、ことを特徴とする情報処理方法。
(付記12)(d)前記(a)のステップによって特定された区間が複数である場合に、前記(b)のステップによって計算された区間毎の前記点の集合に関する統計量を、更に集計し、集計によって得られた統計量を、前記クエリ領域に含まれる点の集合に関する全体的な統計量として、出力する、ステップを更に有する、
付記11に記載の情報処理方法。
(付記13) 前記データ構造が、前記(a)のステップによる前記区間の特定に用いられる第1のデータ構造と、前記(c)のステップによる前記統計量の計算に用いられる第2のデータ構造とを有している、
付記11に記載の情報処理方法。
(付記14) 前記第1のデータ構造が、
前記多次元空間に設定された複数のカバー領域のいずれかと、前記点の列上において当該カバー領域に含まれる点が出現する区間とに関連付けられている、ノードを有する木構造によって表現されており、
 前記(a)のステップにおいて、
前記ノードのうち、
関連付けられた前記カバー領域に存在する点における、前記1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定し、
特定した1又は2以上のノードが関連付けられている区間を前記区間として特定する、
付記13に記載の情報処理方法。
(付記15) 前記点の列は、
前記ノードに関連付けられたカバー領域それぞれに存在する点が、ひとつながりで連続して出現するように、前記点の集合に含まれる点を一列に並べて得られている、
付記14に記載の情報処理方法。
(付記16) 前記(c)のステップにおいて、前記第2のデータ構造を用いて、
前記座標列から得られる複数の部分列のうち、入力された前記範囲に含まれる座標のみが出現する部分列を特定し、そして、特定した部分列上の区間であって、前記座標列において入力された前記区間に出現する座標が出現している、第二の区間を特定し、
更に、特定した前記第二の区間に出現する座標が対応する点の集合に関する統計量を計算する、
付記13に記載の情報処理方法。
(付記17) 前記部分列が、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものであり、
 前記第2のデータ構造が、
前記部分列に関連付けられた複数のノードを有し、
前記複数のノードそれぞれは、前記部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出した前記ビットを前記部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現され、
 前記(c)のステップにおいて、前記複数ノードそれぞれを表現するビットの列を用いて、前記第二の区間を特定する、
付記16に記載の情報処理方法。
(付記18) 前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点の個数を計算する、
付記11に記載の情報処理方法。
(付記19) 前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点それぞれの各次元の座標を計算する、
付記11に記載の情報処理方法。
(付記20) 多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理をコンピュータによって行なうためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
(a)クエリ領域として、特定の多次元の領域が指定された場合に、
前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、ステップと、
(b)前記(a)のステップで特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、ステップと、
(c)前記(a)のステップで特定された区間、及び前記(b)のステップで特定された前記座標の値の範囲を入力として、
前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
前記全ての座標が対応する点の集合に関する統計量を計算する、ステップと、
を実行させる命令を含む、プログラムを記録しているコンピュータ読み取り可能な記録媒体。
(付記21)前記プログラムが、前記コンピュータに、
(d)前記(a)のステップによって特定された区間が複数である場合に、前記(b)のステップによって計算された区間毎の前記点の集合に関する統計量を、更に集計し、集計によって得られた統計量を、前記クエリ領域に含まれる点の集合に関する全体的な統計量として、出力する、ステップを実行させる命令を更に含む、
付記20に記載のコンピュータ読み取り可能な記録媒体。
(付記22) 前記データ構造が、前記(a)のステップによる前記区間の特定に用いられる第1のデータ構造と、前記(c)のステップによる前記統計量の計算に用いられる第2のデータ構造とを有している、
付記20に記載のコンピュータ読み取り可能な記録媒体。
(付記23) 前記第1のデータ構造が、
前記多次元空間に設定された複数のカバー領域のいずれかと、前記点の列上において当該カバー領域に含まれる点が出現する区間とに関連付けられている、ノードを有する木構造によって表現されており、
 前記(a)のステップにおいて、
前記ノードのうち、
関連付けられた前記カバー領域に存在する点における、前記1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定し、
特定した1又は2以上のノードが関連付けられている区間を前記区間として特定する、
付記22に記載のコンピュータ読み取り可能な記録媒体。
(付記24) 前記点の列は、
前記ノードに関連付けられたカバー領域それぞれに存在する点が、ひとつながりで連続して出現するように、前記点の集合に含まれる点を一列に並べて得られている、
付記23に記載のコンピュータ読み取り可能な記録媒体。
(付記25) 前記(c)のステップにおいて、前記第2のデータ構造を用いて、
前記座標列から得られる複数の部分列のうち、入力された前記範囲に含まれる座標のみが出現する部分列を特定し、そして、特定した部分列上の区間であって、前記座標列において入力された前記区間に出現する座標が出現している、第二の区間を特定し、
更に、特定した前記第二の区間に出現する座標が対応する点の集合に関する統計量を計算する、
付記22に記載のコンピュータ読み取り可能な記録媒体。
(付記26) 前記部分列が、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものであり、
 前記第2のデータ構造が、
前記部分列に関連付けられた複数のノードを有し、
前記複数のノードそれぞれは、前記部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出した前記ビットを前記部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現され、
 前記(c)のステップにおいて、前記複数ノードそれぞれを表現するビットの列を用いて、前記第二の区間を特定する、
付記25に記載のコンピュータ読み取り可能な記録媒体。
(付記27) 前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点の個数を計算する、
付記20に記載のコンピュータ読み取り可能な記録媒体。
(付記28) 前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点それぞれの各次元の座標を計算する、
付記20に記載のコンピュータ読み取り可能な記録媒体。
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2014年11月7日に出願された日本出願特願2014-227041を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 以上のように、本発明によれば、任意の次元dについて、線形サイズで、kd木よりも高速な矩形範囲検索を実現することができる。本発明は、大量のデータ群から必要なデータを探索する必要がある種々の分野において有用である。
 10 区間検索部
 20 集計部
 30、30-1~30-d 座標列集計部
 40 データ構造
 41 区間検索用データ構造
 42 座標列集計用データ構造
 43 記憶部
 50 入力受付部
 60 出力部
 100 情報処理装置
 110 コンピュータ
 111 CPU
 112 メインメモリ
 113 記憶装置
 114 入力インターフェイス
 115 表示コントローラ
 116 データリーダ/ライタ
 117 通信インターフェイス
 118 入力機器
 119 ディスプレイ装置
 120 記録媒体
 121 バス

Claims (28)

  1.  多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理装置であって、
     クエリ領域として、特定の多次元の領域が指定された場合に、
    前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、区間検索部と、
     前記区間検索部で特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、集計部と、
     前記区間検索部で特定された区間、及び前記集計部で特定された前記座標の値の範囲を入力として、
    前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
    前記全ての座標が対応する点の集合に関する統計量を計算する、座標列集計部と、
    を備えている、ことを特徴とする情報処理装置。
  2.  前記座標列集計部が、前記多次元空間を構成する全次元それぞれ毎に備えられており、それぞれ、対応する次元と前記集計部が座標の値の範囲を特定した次元とが一致する場合に、前記点の集合に関する統計量を計算する、
    請求項1に記載の情報処理装置。
  3.  前記集計部が、前記区間検索部によって特定された区間が複数である場合に、前記座標列集計部によって計算された区間毎の前記点の集合に関する統計量を、更に集計し、集計によって得られた統計量を、前記クエリ領域に含まれる点の集合に関する全体的な統計量として、出力する、
    請求項1または2に記載の情報処理装置。
  4.  前記データ構造が、前記区間検索部による前記区間の特定に用いられる第1のデータ構造と、前記座標列集計部による前記統計量の計算に用いられる第2のデータ構造とを有している、
    請求項1~3のいずれかに記載の情報処理装置。
  5.  前記第1のデータ構造が、
    前記多次元空間に設定された複数のカバー領域のいずれかと、前記点の列上において当該カバー領域に含まれる点が出現する区間とに関連付けられている、ノードを有する木構造によって表現されており、
     前記区間検索部が、
    前記ノードのうち、
    関連付けられた前記カバー領域に含まれる点における、前記1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定し、
    特定した1又は2以上のノードが関連付けられている区間を前記区間として特定する、
    請求項4に記載の情報処理装置。
  6.  前記点の列は、
    前記ノードに関連付けられたカバー領域それぞれに含まれる点が、ひとつながりで連続して出現するように、前記点の集合に含まれる点を一列に並べて得られている、
    請求項5に記載の情報処理装置。
  7.  前記座標列集計部は、前記第2のデータ構造を用いて、
    前記座標列から得られる複数の部分列のうち、入力された前記範囲に含まれる座標のみが出現する部分列を特定し、そして、特定した部分列上の区間であって、前記座標列において入力された前記区間に出現する座標が出現している、第二の区間を特定し、
    更に、特定した前記第二の区間に出現する座標が対応する点の集合に関する統計量を計算する、
    請求項4~6のいずれかに記載の情報処理装置。
  8.  前記部分列が、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものであり、
     前記第2のデータ構造が、
    前記部分列に関連付けられた複数のノードを有し、
    前記複数のノードそれぞれは、前記部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出した前記ビットを前記部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現され、
     前記座標列集計部は、前記複数ノードそれぞれを表現するビットの列を用いて、前記第二の区間を特定する、
    請求項7に記載の情報処理装置。
  9.  前記座標列集計部が、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点の個数を計算する、
    請求項1~8のいずれかに記載の情報処理装置。
  10.  前記座標列集計部が、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点それぞれの各次元の座標を計算する、
    請求項1~8のいずれかに記載の情報処理装置。
  11.  多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理方法であって、
    (a)クエリ領域として、特定の多次元の領域が指定された場合に、
    前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、ステップと、
    (b)前記(a)のステップで特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、ステップと、
    (c)前記(a)のステップで特定された区間、及び前記(b)のステップで特定された前記座標の値の範囲を入力として、
    前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
    前記全ての座標が対応する点の集合に関する統計量を計算する、ステップと、
    を有する、ことを特徴とする情報処理方法。
  12. (d)前記(a)のステップによって特定された区間が複数である場合に、前記(b)のステップによって計算された区間毎の前記点の集合に関する統計量を、更に集計し、集計によって得られた統計量を、前記クエリ領域に含まれる点の集合に関する全体的な統計量として、出力する、ステップを更に有する、
    請求項11に記載の情報処理方法。
  13.  前記データ構造が、前記(a)のステップによる前記区間の特定に用いられる第1のデータ構造と、前記(c)のステップによる前記統計量の計算に用いられる第2のデータ構造とを有している、
    請求項11または12に記載の情報処理方法。
  14.  前記第1のデータ構造が、
    前記多次元空間に設定された複数のカバー領域のいずれかと、前記点の列上において当該カバー領域に含まれる点が出現する区間とに関連付けられている、ノードを有する木構造によって表現されており、
     前記(a)のステップにおいて、
    前記ノードのうち、
    関連付けられた前記カバー領域に存在する点における、前記1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定し、
    特定した1又は2以上のノードが関連付けられている区間を前記区間として特定する、
    請求項13に記載の情報処理方法。
  15.  前記点の列は、
    前記ノードに関連付けられたカバー領域それぞれに存在する点が、ひとつながりで連続して出現するように、前記点の集合に含まれる点を一列に並べて得られている、
    請求項14に記載の情報処理方法。
  16.  前記(c)のステップにおいて、前記第2のデータ構造を用いて、
    前記座標列から得られる複数の部分列のうち、入力された前記範囲に含まれる座標のみが出現する部分列を特定し、そして、特定した部分列上の区間であって、前記座標列において入力された前記区間に出現する座標が出現している、第二の区間を特定し、
    更に、特定した前記第二の区間に出現する座標が対応する点の集合に関する統計量を計算する、
    請求項13に記載の情報処理方法。
  17.  前記部分列が、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものであり、
     前記第2のデータ構造が、
    前記部分列に関連付けられた複数のノードを有し、
    前記複数のノードそれぞれは、前記部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出した前記ビットを前記部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現され、
     前記(c)のステップにおいて、前記複数ノードそれぞれを表現するビットの列を用いて、前記第二の区間を特定する、
    請求項16に記載の情報処理方法。
  18.  前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点の個数を計算する、
    請求項11~17のいずれかに記載の情報処理方法。
  19.  前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点それぞれの各次元の座標を計算する、
    請求項11~17に記載の情報処理方法。
  20.  多次元空間上の点の集合を表現するデータ構造を処理対象とする情報処理をコンピュータによって行なうためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    前記コンピュータに、
    (a)クエリ領域として、特定の多次元の領域が指定された場合に、
    前記点の集合を一列に並べて得られた点の列上にあり、且つ、前記多次元空間を構成する全次元のうち1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている点のみによって構成されている、区間を特定する、ステップと、
    (b)前記(a)のステップで特定された区間について、当該区間に出現する点が前記クエリ領域に含まれるための条件として、除かれた前記1つの次元における座標の値の範囲を特定する、ステップと、
    (c)前記(a)のステップで特定された区間、及び前記(b)のステップで特定された前記座標の値の範囲を入力として、
    前記点の列の並び順と同じ順序で、前記点の集合の各点における、除かれた前記1つの次元での座標を取り出すことで得られる、座標列に関して、当該座標列において入力された前記区間に出現し、且つ、値が入力された前記範囲に含まれる、全ての座標について、
    前記全ての座標が対応する点の集合に関する統計量を計算する、ステップと、
    を実行させる命令を含む、プログラムを記録しているコンピュータ読み取り可能な記録媒体。
  21. 前記プログラムが、前記コンピュータに、
    (d)前記(a)のステップによって特定された区間が複数である場合に、前記(b)のステップによって計算された区間毎の前記点の集合に関する統計量を、更に集計し、集計によって得られた統計量を、前記クエリ領域に含まれる点の集合に関する全体的な統計量として、出力する、ステップを実行させる命令を更に含む、
    請求項20に記載のコンピュータ読み取り可能な記録媒体。
  22.  前記データ構造が、前記(a)のステップによる前記区間の特定に用いられる第1のデータ構造と、前記(c)のステップによる前記統計量の計算に用いられる第2のデータ構造とを有している、
    請求項20または21に記載のコンピュータ読み取り可能な記録媒体。
  23.  前記第1のデータ構造が、
    前記多次元空間に設定された複数のカバー領域のいずれかと、前記点の列上において当該カバー領域に含まれる点が出現する区間とに関連付けられている、ノードを有する木構造によって表現されており、
     前記(a)のステップにおいて、
    前記ノードのうち、
    関連付けられた前記カバー領域に存在する点における、前記1つの次元を除いた残りの各次元の座標がクエリ領域に含まれている、ノードを特定し、
    特定した1又は2以上のノードが関連付けられている区間を前記区間として特定する、
    請求項22に記載のコンピュータ読み取り可能な記録媒体。
  24.  前記点の列は、
    前記ノードに関連付けられたカバー領域それぞれに存在する点が、ひとつながりで連続して出現するように、前記点の集合に含まれる点を一列に並べて得られている、
    請求項23に記載のコンピュータ読み取り可能な記録媒体。
  25.  前記(c)のステップにおいて、前記第2のデータ構造を用いて、
    前記座標列から得られる複数の部分列のうち、入力された前記範囲に含まれる座標のみが出現する部分列を特定し、そして、特定した部分列上の区間であって、前記座標列において入力された前記区間に出現する座標が出現している、第二の区間を特定し、
    更に、特定した前記第二の区間に出現する座標が対応する点の集合に関する統計量を計算する、
    請求項22に記載のコンピュータ読み取り可能な記録媒体。
  26.  前記部分列が、座標のビット表現が同じ接頭辞で始まる座標を、座標同士の位置関係を保ったまま抽出することで得られるものであり、
     前記第2のデータ構造が、
    前記部分列に関連付けられた複数のノードを有し、
    前記複数のノードそれぞれは、前記部分列において出現する各座標のビット表現における、一つ以上の特定の桁のビットを取り出し、取り出した前記ビットを前記部分列と同じ順序で並べることによって得られる、ビットの列を用いて表現され、
     前記(c)のステップにおいて、前記複数ノードそれぞれを表現するビットの列を用いて、前記第二の区間を特定する、
    請求項25に記載のコンピュータ読み取り可能な記録媒体。
  27.  前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点の個数を計算する、
    請求項20~26のいずれかに記載のコンピュータ読み取り可能な記録媒体。
  28.  前記(c)のステップにおいて、前記全ての座標が対応する点の集合に関する統計量として、前記全ての座標が対応する点それぞれの各次元の座標を計算する、
    請求項20~26に記載のコンピュータ読み取り可能な記録媒体。
PCT/JP2015/079476 2014-11-07 2015-10-19 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体 Ceased WO2016072249A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/523,708 US20170322998A1 (en) 2014-11-07 2015-10-19 Information processing device, information processing method, and computer-readable storage medium
JP2016557686A JP6403232B2 (ja) 2014-11-07 2015-10-19 情報処理装置、情報処理方法、及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-227041 2014-11-07
JP2014227041 2014-11-07

Publications (1)

Publication Number Publication Date
WO2016072249A1 true WO2016072249A1 (ja) 2016-05-12

Family

ID=55908976

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/079476 Ceased WO2016072249A1 (ja) 2014-11-07 2015-10-19 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体

Country Status (3)

Country Link
US (1) US20170322998A1 (ja)
JP (1) JP6403232B2 (ja)
WO (1) WO2016072249A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115834672A (zh) * 2023-02-16 2023-03-21 浙江大风智能终端科技有限公司 基于定位器的车联网信息处理方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120148800A (zh) * 2025-05-16 2025-06-13 长治医学院附属和平医院 一种输血科用血液标本存储管理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265479A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd 多次元データ処理方法
JPH10293863A (ja) * 1997-04-21 1998-11-04 Power Reactor & Nuclear Fuel Dev Corp オブジェクト探索方法およびその方法を用いた装置
JP2014002519A (ja) * 2012-06-18 2014-01-09 Hitachi Ltd 時空間データ管理システム、時空間データ管理方法、及びそのプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW418412B (en) * 1998-01-19 2001-01-11 Hosiden Corp Keyboard switch
EP2228110B1 (en) * 2009-03-09 2017-08-30 Nintendo Co., Ltd. Coordinate calculation apparatus and storage medium having coordinate calculation program stored therein

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265479A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd 多次元データ処理方法
JPH10293863A (ja) * 1997-04-21 1998-11-04 Power Reactor & Nuclear Fuel Dev Corp オブジェクト探索方法およびその方法を用いた装置
JP2014002519A (ja) * 2012-06-18 2014-01-09 Hitachi Ltd 時空間データ管理システム、時空間データ管理方法、及びそのプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YOSHITOMO YAGINUMA ET AL.: "One Proposal of a N-Dimensional Multi-Layer Data Structure with Unified Spatial and Attributive Management Capability", THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS, vol. J75-D-I, no. 2, 25 February 1992 (1992-02-25), pages 88 - 97 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115834672A (zh) * 2023-02-16 2023-03-21 浙江大风智能终端科技有限公司 基于定位器的车联网信息处理方法及系统
CN115834672B (zh) * 2023-02-16 2023-04-28 浙江大风智能终端科技有限公司 基于定位器的车联网信息处理方法及系统

Also Published As

Publication number Publication date
JPWO2016072249A1 (ja) 2017-07-27
JP6403232B2 (ja) 2018-10-10
US20170322998A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
Backurs et al. Scalable nearest neighbor search for optimal transport
CN112395288B (zh) 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
Lee et al. Efficient local statistical analysis via integral histograms with discrete wavelet transform
CN113806458A (zh) 时空关联数据的查询方法、装置、电子设备和存储介质
CN113656670B (zh) 面向飞行数据的时空轨迹数据管理分析方法和装置
CN112639786B (zh) 智能地标
CN110888880A (zh) 基于空间索引的邻近分析方法、装置、设备及介质
CN107506490A (zh) 滑动窗口下基于位置top‑k关键词查询的优先查询算法及系统
Gupta et al. Faster as well as early measurements from big data predictive analytics model
Azri et al. Review of spatial indexing techniques for large urban data management
US8140546B2 (en) Computer system for performing aggregation of tree-structured data, and method and computer program product therefor
JP6418658B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP6403232B2 (ja) 情報処理装置、情報処理方法、及びプログラム
KR101116663B1 (ko) 고차원 데이터의 유사도 검색을 위한 데이터 분할방법
Atallah et al. Asymptotically efficient algorithms for skyline probabilities of uncertain data
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
JP3938815B2 (ja) ノード作成方法、画像検索方法及び記録媒体
CN112989193A (zh) 数据处理方法、装置、电子设备及计算机存储介质
US11822582B2 (en) Metadata clustering
CN111625530A (zh) 一种大规模矢量检索方法及装置
Liu et al. GB-Tree: An efficient LBS location data indexing method
JP3615439B2 (ja) 類似特徴量の検索方法,その検索装置およびその検索プログラム記録媒体
Yang et al. Querying a collection of continuous functions
CN110442616A (zh) 一种针对大数据量的页面访问路径分析方法与系统
Venkat et al. A Succinct, Dynamic Data Structure for Proximity Queries on Point Sets.

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15857650

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016557686

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15523708

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15857650

Country of ref document: EP

Kind code of ref document: A1