triangle partition problem Jian Li Sep,2005
Proposed by Redstar in Algorithm board in Fudan BBS. Motivated by some network design strategy.
Problem description 3n point in a metric space. A triangle partition is to divide this 3n points into n point disjoint triangle. GOAL: Obtain a triangle partition T to minimize max t 2 T { e 2 t len(e)}
NP-hard proof Reduction from 3-partition problem 3-partition problem: Given 3n integers. The question is whether we can partition them into n class, where each class contain exactly 3 integers, such that the sums of integers in each class are all the same.
Reduction: Create 3n nodes. Each node v i represent a integer a i. Define the distance len(v i,v j )=a i +a j It is easy to verify it is a metric len(v i,v j )+len(v j,v k ) · len(v i,v k ) We claim the {a 1 ………a 3n } admits a 3- partition if and only if max t 2 T { e 2 t len(e)} · i=1 3n ai/n
But for euclidean case, I can ’ t prove it is in NP-hard or P
A failed attempt If we have a polynomial algorithm to do the following thing, we can optimally solve the problem.(of course we can ’ t) Suppose oracle A solve the following problem:For a graph G(V,E) with 3n vertice, can we partition it to vertice- disjoint triangle?
A failed attempt Algorithm: Sort the edges in an increasing order. Begin with an empty graph, then add the edge one by one, then we call A to decide whether the current graph have a triangle partition. However, A cant be polynomial time implemented because the problem is known as triangle packing problem and NPC.
Is there a polymomial time algorithm to decide whether a graph can be packed using the vertices disjoint 2-length path. If yes, we can get a good approximation for triangle partition problem. A promising way.
A simple constant approximation ALGORITHM: First construct a MST. Sort the edge of the MST in increasing order. Adding these edge one by one. If in some stage, every component is of size a multiply of 3, stop adding edges.
ALGO Cont. the current graph is a forest. Now for each tree of this forest with 3k vertice, we obtain a triangle partition as following.
Use E to denote the max length of this tree Root the tree at any vertice. First change the tree to its binary tree representation,with the max length of whose edge at most 2E. For this binary tree, we construct the triangle partition in a bottom-up manner.
Find the deepest vertex. The perimeter of the triangle · 2E+6E+8E=16E
Suppose the last edge e ’ we add is of length L. It is easy to show OPT ¸ 2L Suppose e join two components S 1 and S 2 with size 3k 1 +1 and 3k Then OPT must use at least 2 edge in (S 1 ), and by the property of MST, e’ is of min length in (S 1 ).
So, SOL · 16L · 8OPT \qed I believe a better approximation exist if we change the way to construct a triangle partition for a single tree.
Note so far we are working on metric space, for euclidean case the thing may become better. Some property may be useful eg, for euclidean plane, there exist a MST with max-deg at most five. Every angle in euclidean MST is at least 60.
Thanks~~~~~~~~~~~~ welcome to discuss the problem