0% found this document useful (0 votes)
61 views14 pages

Jason PDF

(1) The document discusses centroid decomposition, which is a technique to divide a tree into subtrees by recursively finding centroid nodes. (2) A centroid node is one where deleting it splits the tree into subtrees each with less than half the original number of nodes. (3) Performing centroid decomposition on a tree results in a tree of centroids with log(n) depth, allowing problems on trees to be solved recursively in O(n log(n)) time using divide and conquer.

Uploaded by

rahulmnnit_cs
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views14 pages

Jason PDF

(1) The document discusses centroid decomposition, which is a technique to divide a tree into subtrees by recursively finding centroid nodes. (2) A centroid node is one where deleting it splits the tree into subtrees each with less than half the original number of nodes. (3) Performing centroid decomposition on a tree results in a tree of centroids with log(n) depth, allowing problems on trees to be solved recursively in O(n log(n)) time using divide and conquer.

Uploaded by

rahulmnnit_cs
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Centroid Decomposition

Jason Chiu

February 11, 2015

Jason Chiu Centroid Decomposition February 11, 2015 1 / 14


Overview

1 The Problem
Problem description
Solution
Proof of correctness
Time complexity

2 Centroid Decomposition

3 Example Problem

Jason Chiu Centroid Decomposition February 11, 2015 2 / 14


Problem description

Let T be an undirected tree. Find a node v such that if we delete v from


the tree, spliting it into a forest, each of the trees in the forest would all
have fewer than half the number of vertices from the original tree.

Jason Chiu Centroid Decomposition February 11, 2015 3 / 14


Solution

Let T be the given undirected tree with n nodes.


1 Root the tree arbitrarily
2 Perform DFS to obtain, for
P every node v , the size of the subtree
rooted at v : S(v ) = 1 + i S(adj[v ][i])
3 For each node v , check if
max(n − S(v ), S(adj[v ][0]), S(adj[v ][1]), · · · ) < n/2
halt and return v if this is satisfied
Note: we can combine steps 2 and 3 into a single DFS.

Jason Chiu Centroid Decomposition February 11, 2015 4 / 14


Proof of correctness

Theorem. There is always a solution


1 If the root works, great
2 If the root doesn’t work, then we can recurse on the lop-sided
subtree, because the other piece must be < n/2
3 Maximum subtree size gets smaller, so it must terminate eventually
Theorem. The algorithm produces a solution
This is obvious from the description of the algorithm.

Jason Chiu Centroid Decomposition February 11, 2015 5 / 14


Time complexity

O(n) to compute the size of subtrees, and


P O(n) to find the correct node,
because the cost of the node search is v ∈V (1 + deg(v )) = 2n − 1.
Therefore, the time complexity is O(n).

Jason Chiu Centroid Decomposition February 11, 2015 6 / 14


Easy! But why?

Jason Chiu Centroid Decomposition February 11, 2015 7 / 14


Centroid Decomposition

The solution of the previous problem finds a node v which we shall call a
centroid of the tree. Now what happens if we apply the algorithm
recursively to each subtree split by the centroid?

Jason Chiu Centroid Decomposition February 11, 2015 8 / 14


Centroid Decomposition

We get a tree of centroids, which we shall call the centroid


decomposition of the tree.
Runtime is O(n log n) because we will recurse at most log2 n times.
Notice this decomposition has log n depth, so we can essentially do
divide and conquer on the tree!

Jason Chiu Centroid Decomposition February 11, 2015 9 / 14


Questions?

Jason Chiu Centroid Decomposition February 11, 2015 10 / 14


Problem (IOI 2011)

Given a weighted tree with N nodes, find the minimum number of edges in
a path of length K , or return −1 if such a path does not exist.
1 ≤ N ≤ 200000
1 ≤ length(i, j) ≤ 1000000 (integer weights)
1 ≤ K ≤ 1000000

Jason Chiu Centroid Decomposition February 11, 2015 11 / 14


Solution

Brute force solution:


For every node, perform DFS to find distance and number of edges to
every other node
Time complexity: O(n2 )
Obviously fails because N = 200000.

Jason Chiu Centroid Decomposition February 11, 2015 12 / 14


Solution

Better solution:
Perform centroid decomposition to get a “tree of subtrees”
Start at the root of the decomposition, solve the problem for each
subtree as follows
Solve the problem for each “child tree” of the current subtree
Perform DFS from the centroid on the current subtree to compute
the minimum edge count for paths that include the centroid
Two cases: centroid at the end or in the middle of path
Use a timestamped array of size 1000000 to keep track of which
distances from centroid are possible and the minimum edge count for
that distance
Take the minimum of the above two
Time complexity: O(n log n)

Jason Chiu Centroid Decomposition February 11, 2015 13 / 14


The End

Jason Chiu Centroid Decomposition February 11, 2015 14 / 14

You might also like