A link/cut tree is a data structure for representing a forest, a set of rooted trees, and offers the following operations:
* Add a tree consisting of a single node to the forest.
* Given a node in one of the trees, disconnect it (and its subtree) from the tree of which it is part.
* Attach a node to another node as its child.
* Given a node, find the root of the tree to which it belongs. By doing this operation on two distinct nodes, one can check whether they belong to the same tree.
Attributes | Values |
---|
rdf:type
| |
rdfs:label
| |
rdfs:comment
| - A link/cut tree is a data structure for representing a forest, a set of rooted trees, and offers the following operations:
* Add a tree consisting of a single node to the forest.
* Given a node in one of the trees, disconnect it (and its subtree) from the tree of which it is part.
* Attach a node to another node as its child.
* Given a node, find the root of the tree to which it belongs. By doing this operation on two distinct nodes, one can check whether they belong to the same tree. (en)
|
foaf:depiction
| |
dcterms:subject
| |
Wikipage page ID
| |
Wikipage revision ID
| |
Link from a Wikipage to another Wikipage
| |
Link from a Wikipage to an external page
| |
sameAs
| |
dbp:wikiPageUsesTemplate
| |
thumbnail
| |
above
| |
data
| |
header
| - Time complexity in big O notation (en)
|
label
| - Type (en)
- Invented (en)
- Invented by (en)
|
headerstyle
| |
has abstract
| - A link/cut tree is a data structure for representing a forest, a set of rooted trees, and offers the following operations:
* Add a tree consisting of a single node to the forest.
* Given a node in one of the trees, disconnect it (and its subtree) from the tree of which it is part.
* Attach a node to another node as its child.
* Given a node, find the root of the tree to which it belongs. By doing this operation on two distinct nodes, one can check whether they belong to the same tree. The represented forest may consist of very deep trees, so if we represent the forest as a plain collection of parent pointer trees, it might take us a long time to find the root of a given node. However, if we represent each tree in the forest as a link/cut tree, we can find which tree an element belongs to in O(log(n)) amortized amortized time. Moreover, we can quickly adjust the collection of link/cut trees to changes in the represented forest. In particular, we can adjust it to merge (link) and split (cut) in O(log(n)) amortized time. Link/cut trees divide each tree in the represented forest into vertex-disjoint paths, where each path is represented by an auxiliary data structure (often splay trees, though the original paper predates splay trees and thus uses biased binary search trees). The nodes in the auxiliary data structure are ordered by their depth in the corresponding represented tree. In one variation, Naive Partitioning, the paths are determined by the most recently accessed paths and nodes, similar to Tango Trees. In Partitioning by Size paths are determined by the heaviest child (child with the most children) of the given node. This gives a more complicated structure, but reduces the cost of the operations from amortized O(log n) to worst case O(log n). It has uses in solving a variety of network flow problems and to jive data sets. In the original publication, Sleator and Tarjan referred to link/cut trees as "dynamic trees", or "dynamic dyno trees". (en)
|
gold:hypernym
| |
prov:wasDerivedFrom
| |
page length (characters) of wiki page
| |
foaf:isPrimaryTopicOf
| |
is Link from a Wikipage to another Wikipage
of | |
is Wikipage redirect
of | |
is foaf:primaryTopic
of | |