[0001] The application is a continuation-in-part of U.S. patent application Ser. No. 09/564,164 entitled “Apparatus, System and Method for Managing Transaction Profiles representing Different Levels of Market Party Commitment” filed on May 3, 2000.
[0002] The present invention relates to databases that store records having multi-valued fields; i.e., fields with sets rather than single values therein. The present invention can be applied to matching profiles of flexible data, specifically in relation to on-line goods exchanges between buyers and sellers and other involved parties.
[0003] Existing database systems are designed to store specific data records such as details of a purchase order or invoice. This is true not only of relational databases but also of other models such as hierarchical, network, object, XML and associative databases.
[0004] However, as computers start to be used in electronic commerce, it becomes necessary to store flexible data that represents a range or set of specific data records. For example, an offer to enter into a business-to-business transaction may have flexibility in terms of quantity, price, delivery dates and terms and occasionally the buyer or even seller may have some flexibility in terms of technical specifications as well. Such an offer is best represented as a set, which is often a Cartesian product of ranges or enumerations of data (e.g. price<$ 100, 10,000<quantity<11,000, color ε{red, green}).
[0005] One can set up a relational database table that has two fields, price-min and price-max, in order to represent a range in the price. However this requires custom coding of the insertion and querying of records to ensure that the contents of these fields are treated as a range and not as two unrelated values.
[0006] Current on-line Internet exchanges operate by enabling sellers of merchandise to list their wares and by enabling buyers to purchase the wares. Examples of exchanges are auction houses such as the familiar www.ebay.com, where sellers can post commodities and buyers can bid on them, and electronic marketplaces such as www.esteel.com.
[0007] These types of exchanges provide limited interaction between buyer and seller. There is no automated mechanism for matching buyers and sellers. A buyer can either purchase an item, or bid on it, and there is no flexibility on the seller side. Any additional interactions between a buyer and a seller typically must be carried out off-line.
[0008] There is thus a need for expanding conventional databases that typically include records having single-valued fields, to allow for multi-valued fields. Specifically, there is a need for management and operation of databases having records with fields that contain sets.
[0009] Prior art databases, whether relational, object, associative or XML, store specific data and allow flexible queries such as SQL, where an SQL query is associated with the set of the records it matches. In business-to-business e-commerce in particular, but also in other applications, such as security profiles which record the totality of actions for which each of a plurality of users have privileges, it is important to store flexible data or sets; i.e., the set of transactions which meet designated requirements. The present invention relates to design and operation of databases in which both stored records and queries involve sets, and a reply to a query returns records with overlapping sets.
[0010] It is an object of the present invention to allow for the storing of flexible data according to a general scheme that does not require custom coding for each application. The flexible data is typically a Cartesian product of ranges, enumerations, or more general sets wherein each element of the Cartesian product is a specific data record, such as a commercial transaction that is being offered.
[0011] When storing specific data records, databases typically allow the records to be retrieved according to a query. A query may be thought of either as a filter for data records or equivalently as a set (often an infinite set) of data records where the database will output all stored data records which are also within the set specified by the query. In applications such as e-commerce, sellers may each offer ranges of transactions. When a buyer specifies a range of transactions of interest to him, he wants to search for sellers who have some overlap (i.e. non-empty set intersection) in ranges with his, since this means that there is at least one specific transaction which satisfies both buyer and seller needs.
[0012] It is therefore a further object of the invention to store sets (i.e., flexible data) in such a way that there can be provided a query function in which the query represents a set, T, and the result is a list of all stored sets which have non-empty set intersection with T.
[0013] To this end, the present invention provides several innovations, including
[0014] a directed acyclic graph data structure specifically suited to storing sets and to providing set-set queries;
[0015] a series of methods for storing flexible data in the form of Cartesian products of ranges and enumerations in a conventional (e.g. relational) database and for providing required set-set queries by implementing conversions to the queries and using a conventional query mechanism of the database; and
[0016] application of an indexing scheme referred to as a multi-dimensional binary tree to efficient set-set querying, which typically involves multiple inequality constraints that do not scale logarithmically with standard indexing schemes.
[0017] It will be appreciated that the application to negotiation in electronic commerce is only one application for the storage of sets for flexible data and set-set querying for non-empty intersections. An example of another type of application is one involving a data format for describing resources in a system, such as filenames or URLs. For such an application, flexible data can be used, for example, to store a privilege profile of all resources to which a given user is allowed access.
[0018] The term “field” as used throughout the present specification refers to a particular characteristic of an object. The term “record” as used throughout the present specification refers to a description of an object in terms of one or more fields. For example, the object may be a profile for a transaction, and a record may include fields for price, quantity and delivery date.
[0019] The present invention can be applied to matching of transaction descriptions, such as buyer and seller transaction descriptions. Each transaction description is specified by data for various parameters, such as quantity, price, delivery date, delivery location and other transaction characteristics. A parameter for a transaction description can assume one or more values. For example, price can be specified as a range of values, and delivery date can be specified as a range of dates. The present invention applies to matching; i.e., identification of transaction descriptions that are compatible with one another.
[0020] More specifically, in a preferred embodiment, the present invention stores a plurality of transaction descriptions and matches a given transaction description with the stored transaction descriptions, to determine which of the stored transaction descriptions are compatible with the given transaction description.
[0021] The term “transaction description” as used throughout the present specification refers to a description of a desired one or more transactions.
[0022] The present invention provides a method and system for storing and indexing transaction descriptions provided by buyers and sellers and additional involved parties, in order to match them. A buyer provides a description of the commodities he is interested in purchasing, along with payment terms, delivery requirements, and other relevant information. The description is based on parameters for each type of information. The description may include ranges of parameters, allowing for flexibility in one or more terms of the transaction. Similarly, a seller provides a description of the commodities he is interested in selling, with ranges for various parameters.
[0023] In a preferred embodiment, the present invention analyzes transaction descriptions from buyers, sellers and other involved parties, and determines transactions that satisfy the constraints of all parties involved, if such transactions exist. In an alternate embodiment, the present invention also serves as a search vehicle, enabling a buyer to search for sellers that can accommodate his requirements, and enabling a seller to search for buyers that can accommodate his requirements.
[0024] There is thus provided in accordance with a preferred embodiment of the present invention a method for analyzing a plurality of sets of elements, and identifying which sets from among the plurality of sets have elements in common with a trial set, including arranging a stored plurality of sets according to a directed graph data structure, the directed graph including nodes that correspond to sets and including directed edges that correspond to a relationship of set-wise inclusion, for a given trial set, denoted T, finding, within the directed graph, a smallest set, denoted S, that contains T, and determining whether T has a non-empty intersection with sets of the directed graph that are contained within S.
[0025] There is further provided in accordance with a preferred embodiment of the present invention a system for analyzing a plurality of sets of elements, and identifying which sets from among the plurality of sets have elements in common with a trial set, including a data manager arranging a stored plurality of sets according to a directed graph data structure, the directed graph including nodes that correspond to sets and including directed edges that correspond to a relationship of set-wise inclusion, a set analyzer finding, for a given trial set, denoted T, a smallest set, denoted S, within the directed graph that contains T, and determining whether T has a non-empty intersection with sets of the directed graph that are contained within S.
[0026] There is yet further provided in accordance with a preferred embodiment of the present invention a method for analyzing a plurality of transaction descriptions having parameters for describing at least one transaction, and determining which transaction descriptions from the plurality of transaction descriptions overlap with a trial transaction description, including storing a plurality of transaction descriptions having flexible parameters for commercial transactions, selecting a primary parameter from among the flexible parameters, organizing the stored plurality of transaction descriptions in terms of the primary parameter, for a given trial transaction description, denoted T, finding a primary subset of transaction descriptions from among the stored plurality of transaction descriptions that overlap with T with respect to values of the primary parameter; and identifying the transaction descriptions from among the primary subset of transaction descriptions that overlap with T.
[0027] There is moreover provided in accordance with a preferred embodiment of the present invention a system for analyzing a plurality of transaction descriptions having parameters for describing at least one transaction, and determining which transaction descriptions from the plurality of transaction descriptions overlap with a trial transaction description, including a memory storing a plurality of transaction descriptions having flexible parameters for commercial transactions, a parameter selector selecting a primary parameter from among the flexible parameters, a data manager organizing the stored plurality of transaction descriptions in terms of the primary parameter, and a transaction description analyzer finding, for a given trial transaction description, denoted T, a primary subset of transaction descriptions from among the stored plurality of transaction descriptions that overlap with T with respect to values of the primary parameter, and identifying the transaction descriptions from among the primary subset of transaction descriptions that overlap with T.
[0028] There is additionally provided in accordance with a preferred embodiment of the present invention a method for analyzing a plurality of transaction descriptions, including storing a plurality of sets, wherein the sets include data for transaction descriptions that describe at least one transaction, and the elements correspond to individual transactions, arranging the stored plurality of sets according to a directed graph data structure, the directed graph including nodes that correspond to sets and including directed edges that correspond to a relationship of set-wise inclusion, and applying a data locking mechanism to the nodes of the directed graph, for processes to lock and unlock data included within the nodes, wherein a lock on any ancestor of a node precedes a lock on the node itself.
[0029] There is further provided in accordance with a preferred embodiment of the present invention a system for analyzing a plurality of transaction descriptions, including a memory storing a plurality of sets, wherein the sets include data for transaction descriptions that describe at least one transaction, and the elements correspond to individual transactions, a data manager arranging the stored plurality of sets according to a directed graph data structure, the directed graph including nodes that correspond to sets and including directed edges that correspond to a relationship of set-wise inclusion, and a data locking mechanism enabling processes to lock and unlock data included within the nodes of the directed graph, wherein a lock on any ancestor of a node precedes a lock on the node itself.
[0030] There is yet further provided in accordance with a preferred embodiment of the present invention a method for analyzing database records, including providing a database for storing a plurality of records, at least one record having at least one field that contains sets of values, and for a given query that specifies at least one set of values corresponding to at least one field, identifying the records from among the plurality of records in the database whose fields contain sets that have non-empty intersection with corresponding sets in the query.
[0031] There is moreover provided in accordance with a preferred embodiment of the present invention a system for analyzing database records, including a database for storing a plurality of records, at least one record having at least one field that contains sets of values, and a query processor identifying, for a given query that specifies at least one set of values corresponding to at least one field, the records from among the plurality of records in the database whose fields contain sets that have non-empty intersection with corresponding sets in the query.
[0032] There is additionally provided in accordance with a preferred embodiment of the present invention a method for analyzing a plurality of transaction descriptions, including receiving a plurality of submitted user requests, wherein a user request includes a request type, a request owner, and a transaction description having flexible parameters and corresponding to a set of individual transactions, and storing the user requests according to a directed graph data structure, the directed graph including nodes that correspond to user requests and including directed edges that correspond to a relationship of set-wise inclusion.
[0033] There is further provided in accordance with a preferred embodiment of the present invention a system for analyzing a plurality of transaction descriptions, including a user interface receiving a plurality of submitted user requests, wherein a user request includes a request type, a request owner, and a transaction description having flexible parameters and corresponding to a set of individual transactions, and a data organizer storing the user requests according to a directed graph data structure, the directed graph including nodes that correspond to user requests and including directed edges that correspond to a relationship of set-wise inclusion.
[0034] The present invention will be more fully understood and appreciated from the following detailed description, taken in conjunction with the drawings in which:
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046] FIGS.
[0047]
[0048]
[0049]
[0050] FIGS.
[0051]
[0052]
[0053]
[0054] Appendix A is a sample XPL document representing a buyer transaction description.
[0055] The present invention relates to databases that store records having multi-valued fields; i.e., fields with sets rather than single values therein. In business-to-business e-commerce in particular, but also in other applications, such as security profiles which record the totality of actions for which each of a plurality of users have privileges, it is important to store flexible data or sets; i.e., the set of transactions which meet designated requirements. The present invention relates to design and operation of databases in which both stored records and queries involve sets, and a reply to a query returns records with overlapping sets.
[0056] The present invention enables storing of flexible data according to a general mechanism that does not require custom coding for each application. The flexible data is typically a Cartesian product of ranges, enumerations, or more general sets wherein each element of the Cartesian product is a specific data record, such as a commercial transaction that is being offered.
[0057] The present invention can be applied to matching of transaction descriptions, such as buyer and seller transaction descriptions. Each transaction description is specified by data for various parameters, such as quantity, price, delivery date, delivery location and other transaction characteristics. A parameter for a transaction description can assume one or more values. For example, price can be specified as a range of values, and delivery date can be specified as a range of dates. The present invention concerns matching; i.e., determination of transaction descriptions that are compatible with one another.
[0058] More specifically, the present invention stores a plurality of transaction descriptions, and matches a given transaction description with the stored transaction descriptions, to determine which of the stored transaction descriptions are compatible with the given transaction description. The term “transaction description” as used herein refers to a description of a desired one or more transactions.
[0059] As the number of stored transaction descriptions grows, the task of matching can become formidable. In order to efficiently carry out a matching analysis, it is important to choose good internal and external data structures for representing transactions and transaction descriptions. In a preferred embodiment, the present invention uses an XML-based representation as an external data structure. The preferred embodiment described herein introduces an extensible profile language, referred to as XPL and described hereinbelow, to extend XML so as to allow for flexible parameters within XML tags. The use of XPL is advantageous in that it applies to any XML schema, thereby enabling description of sets of valid documents. XPL is also convenient for use in conjunction with a simple user interface, based on HTML or XML, which enables a user to set parameters for his transaction description and enter them within the system of the present invention.
[0060] In a preferred embodiment, the present invention uses a directed acyclic graph (DAG) for an internal data representation of stored transaction descriptions, based on a semi-lattice of sets of transactions, as described hereinbelow. A DAG consists of nodes and directed edges therebetween, and contains no (closed) cycles. In the preferred embodiment, the nodes of the DAG represent transaction descriptions. More specifically, the nodes of the DAG include data for transaction descriptions; namely, data for the flexible parameters for transactions. The nodes of the DAG can be considered as sets, based on transaction descriptions considered as being comprised of one or more individual transactions, as described hereinbelow. The edges of the DAG are directed from nodes (i.e., sets of transactions) to subsets thereof. Use of a DAG in the preferred embodiment reduces the number of comparisons necessary in order to identify stored transaction descriptions that are compatible with a given transaction description.
[0061] In an alternate embodiment of the present invention, stored transaction descriptions are represented internally as records within a database. Data for flexible parameters of the transaction descriptions is stored as fields within the individual records of the database. In the alternate embodiment, a database is employed with efficient indexing, so as to reduce the number of comparisons necessary in order to identify stored transaction descriptions that are compatible with a given transaction description. Specifically, binary search trees or hash tables are employed to bin records (i.e., stored transaction descriptions) relative to one or more fields (i.e., transaction parameters), as described hereinbelow, resulting in rapid identification of potential stored transaction descriptions for consideration as candidates for comparison with a given transaction description. This alternate embodiment can store records that correspond to sets that are Cartesian products and records that do not so correspond.
[0062] The present invention provides a method and system for matching buyers and sellers and additional involved parties within a commodity exchange, based on analysis of transaction descriptions provided by each individual. A buyer provides a description of commodities he is interested in purchasing, along with payment terms, delivery requirements, and other relevant information. The description is based on parameters for each type of information. For example, Table I indicates parameters for a buyer named Auto Industries, within an exchange for automobiles.
TABLE I Buyer Transaction Description Parameter Sub-parameters Value(s) Make Ford or Chevrolet Model 1998, 1999 or 2000 Color Black or Blue Price At most $15,000 Delivery November 1-15, 2000 Payment terms At most 50% upon delivery; the balance within at least 30 days of delivery Parties Buyer Name Auto Industries State CA Seller Name Any seller State CA
[0063] Similarly, a seller provides a description of commodities he is interested in selling. For example, Table II indicates parameters for a seller named Cars, Inc., within the exchange for automobiles.
TABLE II Seller Transaction Description Parameter Sub-parameter Value(s) Make Ford Model 1998 Color Blue Price At least $13,000 Delivery October 25, 2000- November 5, 2000 Payment terms At least 40% upon delivery; the balance within at most 60 days of delivery Parties Buyer Name Any buyer State CA Seller Name Cars, Inc. State CA
[0064] As can be seen, the buyer and seller each effectively describe a plurality of transactions, where an individual transaction corresponds to a single value of each parameter. In the case of the examples above, it can be seen that the buyer and seller descriptions overlap. For example, Table III indicates parameters for a transaction that satisfies both the buyer's and the seller's description.
TABLE III Acceptable Transaction to Buyer and Seller Parameter Sub-parameter Value(s) Make Ford Model 1998 Color Blue Price $13,000 Delivery November 1, 2000 Payment terms 50% upon delivery; 50% within 30 days of delivery Parties Buyer Name Auto Industries State CA Seller Name Cars, Inc. State CA
[0065] This transaction can thus be cleared with the buyer, Auto Industries, and the seller, Cars, Inc.
[0066] Reference is now made to
[0067] Reference is now made to
[0068] In order to conduct an analysis of transaction descriptions so as to determine the existence of transactions that satisfy the requirements of a buyer and a seller, and additional involved parties, the present invention preferably uses a data structure to organize the transaction descriptions resident in transaction server
[0069] Reference is now made to
[0070] Where a directed edge goes from a node A to a node B, node A is referred to as a “parent” of node B, and node B is referred to as a “child” of node A. For example, in
[0071] A transaction description is equivalent to a set of parameter values and, for purposes of clarification, FIGS.
[0072] The sets of parameter values resident in transaction server
[0073] Each DAG is supplied with a root note
[0074] In a preferred embodiment of the present invention, transaction descriptions are input to a DAG by users submitting requests having transaction descriptions. A user request includes an owner, which may be the user submitting the request or another designated entity. A user request is typically either a buyer request, a seller request or a request from an additional involved party, such as a shipper or an insurer. A user request may also include an expiration date. Requests are catalogued in a hash table by means of a request ID, and typically have an expiration date.
[0075] A request within the system of the present invention is removed either upon expiration or upon express removal by its owner or by a system administrator. Removal of a request involves removal of the node in the DAG corresponding to the request.
[0076] User requests are preferably of two types: searches and offers. Search requests are requests to identify transaction descriptions that are compatible with a submitted transaction description. Offers are requests having a commitment to an exchange deal if a compatible transaction description is available. Offers are also of two types: soft offers and hard offers. A soft offer is a request whereby the user submitting the request wishes to be notified when a compatible transaction description is identified. A hard offer is a request whereby the user instructs the system to automatically close an exchange deal when a compatible transaction description is identified.
[0077] User notification of results is preferably achieved on-line, if a user is submitting a new request, or by way of e-mail notification for owners of old requests.
[0078] Preferably, when a deal is automatically closed for hard offers, the present invention automatically clears the deal within the system. Specifically the system automatically updates or removes the nodes for the transaction descriptions involved in the deal, as appropriate. For example, if a seller's transaction description includes 10,000 units of a commodity and a buyer's transaction description includes 8,000 units, and if a deal is closed between them for a sale of 8,000 units, then the seller's transaction description is modified to show 2,000 units, and the buyer's transaction description is removed from the database.
[0079] User requests are described more fully with reference to Table VII hereinbelow.
[0080] In a preferred embodiment of the present invention, for each request present within a database of stored transaction descriptions, there is maintained a list of all transaction descriptions compatible therewith, in the form of a vector referred to as a results vector. As new requests enter the database, the results vectors are updated accordingly.
[0081] When a new user request including a transaction description enters transaction server
[0082] To analyze new set
[0083] To determine sets in the DAG that overlap with X, the present invention preferably examines the intersection of X with each of the descendants of D; i.e., with nodes H, I, J and K in
[0084] In general, buyer transaction descriptions include a parameter identifying a unique buyer, and seller transaction descriptions include a parameter identifying a unique seller. This ensures that transaction descriptions coming from two different buyers (or two different sellers) necessarily have empty intersection. As a consequence, this ensures that when a non-empty intersection X∩TD
[0085] In particular, using the present invention it is not necessary to separate buyer descriptions from seller descriptions within a DAG, in order to avoid matching multiple buyers or multiple sellers together. The present invention automatically ensures that such matching is avoided, and all of the transaction descriptions can thus be treated homogeneously as a single pool of generic sets of parameters.
[0086] In a preferred embodiment of the present invention, if an overlapping transaction description with X is found, say, transaction description TD
[0087] Reference is now made to
[0088] Conversely, in a preferred embodiment of the present invention, if an overlapping transaction description with X is not found, then a node for X is added to the DAG. Reference is now made to
[0089] A new edge
[0090] For those children of D that are not subsets of X, the intersections
[0091] It may be appreciated by those skilled in the art that, for purposes of efficiency in searching, it is typically preferred that the number of child notes descending from a parent node in the DAG not be large. In case the number of child nodes descending from a parent node is large, the present invention preferably introduces artificial nodes to represent combinations of such child notes, within an intermediate level of the DAG, between the parent node and the child notes, in order to reduce the number of branches coming out from the parent node.
[0092] Reference is now made to
[0093] In order to reduce the number of branches stemming from root node
[0094] It may thus be appreciated that there are typically several types of nodes present in a DAG, including (i) nodes originating from user requests, (ii) artificial nodes as illustrated in
[0095] The information reported for reportable nodes includes a list of other reportable nodes that are compatible therewith. Such a list is referred to as a results vector, as mentioned hereinabove. The results vector for a reportable node is initially generated when the corresponding request first enters the database of the present invention. Thereafter the results vector for the node is updated as additional compatible requests enter the database. Specifically, when a new request including a transaction description enters the database, a search is made for transaction descriptions within the database that are compatible with the newly entered transaction description. The compatible transaction descriptions identified in the database are inserted into the results vector for the newly entered transaction description. Correspondingly, the new transaction description is added to the results vectors for each of the identified transaction descriptions that are compatible therewith. In this way, the results vectors for all reportable nodes are maintained current.
[0096] Preferably, when transactions are cleared between two or more user requests, the user requests are modified accordingly, as described hereinabove.
[0097] Preferably, results vectors are updated when new requests are submitted into the database, when existing requests expire or are withdrawn, and when existing user requests are modified. User requests are modified when transactions are automatically cleared, and when owners of requests modify them directly.
[0098] Results vectors for reportable nodes are conveyed to owners of the corresponding requests, either by on-line notification or by e-mail. Notifications are updated periodically, either whenever the results vectors are changed, or according to a preset notification schedule.
[0099] The sets corresponding to nodes in a DAG are often Cartesian products of the individual sets of values for each parameter, although this is not necessary since the parameters in a transaction description may have inter-dependencies. If a transaction description TD specifies values of parameter P
[0100] Reference is now made to
TABLE IV Parameters for Automobile Transactions Parameter Possible Value Make Ford or GE Color Red or Blue Year 1999 or 2000
[0101] DAG
[0102] Also shown in
[0103] Each of the sets in DAG
[0104] An alternative embodiment of the present invention can be described using the cube-like representation of the DAG. Reference is now made to
[0105] By partitioning one of the axes,
[0106] Partitioning the set of all transactions using one of the parameters as index simplifies the process of determining which transaction descriptions in transaction server
[0107] Reference is now made to
[0108] Preferably, searching for items within a two-dimensional partition is carried out with two successive one-dimensional searches. The first search, along one of the axes of cube
[0109] Parameters of a transaction description can be considered as record fields, for records within a database. As is well known in the art, single-index fields can be sorted according to a binary search tree data structure, to facilitate searching for records having specific values in specific fields. For example, if records for transactions related to cars are indexed by color, the records can be sorted according to a binary tree structure. For example, the records can be sorted alphabetically, so that the root contains all 26 letters (the A-Z colors); the two children underneath the root are the A-M colors and the N-Z colors; the two children of the A-K colors are the A-F colors and the G-M colors; the two children of the N-Z colors are the N-S colors and the T-Z, etc. The leaves at the bottom of the tree are the individual letter colors blue, brown, cyan, etc.
[0110] Using the above binary search tree, one can search for all transaction descriptions involving a specific color by traversing the tree. Traversal takes at most CEILING(log
[0111] Reference is now made to
[0112] Referring to
[0113] In a preferred embodiment of the present invention, in order to match an incoming transaction description with a totality of transaction descriptions stored within a database, the set of transaction descriptions in the database that need to be analyzed is reduced by limiting the analysis to those transaction descriptions that have the same parameter value as that of the incoming transaction description, for a selected parameter. Thus, for example, if the incoming transaction description has a parameter x
[0114] In a preferred embodiment of the present invention, if a transaction description within the database specifies a plurality of values for x
[0115] Preferably, when using two indices x
[0116] The use of XPL in the present invention enables parameters to take pluralities of values, such as values within ranges. Thus, for example, an incoming transaction description can specify that x
[0117] In business-to-business applications for which flexible profiles are stored, multiple inequalities arise often. For example, if an inequality x
[0118] Two-dimensional binary search trees, like tree