Patent ID: 8412667

Claim:
A method comprising: receiving a plurality of tracks by a computing device, wherein each track comprises a plurality of location identifiers; receiving a plurality of segments by the computing device; for each track in the plurality of tracks, determining one or more segments from the plurality of segments that correspond to the track by the computing device; receiving an identifier of a track by the computing device; determining one or more segments from the plurality of segments that correspond to the identified track by the computing device; determining one or more tracks from the plurality of tracks that are similar to the identified track based on the one or more segments that correspond to the identified track and the one or more segments that correspond to each of the plurality of tracks by the computing device; generating a node corresponding to each segment; associating each node with the tracks that correspond to the segment of the node; identifying pairs of nodes that correspond to adjacent segments; and for each identified pair of nodes: determining if the pair of nodes is associated with at least one common track, and if so: generating a node for the identified pair of nodes, wherein the generated node is a parent of the identified pair of nodes and the identified pair of nodes are children of the generated node; and associating the generated node with the tracks associated with the identified pair of nodes; identifying a node that is in more than one identified node pair; determining the node pair that includes the identified node that has the greatest number of associated tracks; and removing at least one node pair from the identified pairs of nodes that includes the identified node that does not have the greatest number of associated tracks.