Constructing Splits Graphs

1 / 55

# Constructing Splits Graphs - PowerPoint PPT Presentation

Constructing Splits Graphs. Author: Andreas W.M. Dress Daniel H. Huson Presented by: Bakhtiyar Uddin. Constructing Splits Graphs. Agenda: Objective Definitions, Theorems and Notations Constructing Plane Splits Graphs Constructing Non Planar Splits Graphs Conclusion.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Constructing Splits Graphs' - Ava

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Constructing Splits Graphs

Author:

Andreas W.M. Dress

Daniel H. Huson

Presented by:

Bakhtiyar Uddin

### Constructing Splits Graphs

• Agenda:
• Objective
• Definitions, Theorems and Notations
• Constructing Plane Splits Graphs
• Constructing Non Planar Splits Graphs
• Conclusion

Objective

### Constructing Splits Graphs

Objective:

Given a set of splits (not necessarily compatible), generate a splits graph. The algorithm is designed to handle large split systems.

Note: Splits graph is a graphical representation of an arbitrary splits system (set of splits).

### Constructing Splits Graphs

Example:

Input:

Set of taxa, X = {dog, cat, mouse, turtle, parrot}

Circular ordering of X = (dog, cat, mouse, turtle, parrot)

Splits System:

S1 = {dog, cat} / {mouse, turtle, parrot} S2 = {turtle, parrot} / {cat, dog, mouse}

S3 = {dog, mouse} / {cat, turtle, parrot} S4 = {mouse, parrot} / {dog, cat, turtle}

### Constructing Splits Graphs

Example:

Input:

Set of taxa, X = {dog, cat, mouse, turtle, parrot}

Circular ordering of X = (dog, cat, mouse, turtle, parrot)

Splits System:

S1 = {dog, cat} / {mouse, turtle, parrot}S2 = {turtle, parrot} / {cat, dog, mouse}

S3 = {dog, mouse} / {cat, turtle, parrot}S4 = {mouse, parrot} / {dog, cat, turtle}

v5

v1

f5

f1

v0

g1

u’2

g5

f4

g4

v4

g2

u’1

u’4

u’3

g3

f3

f2

v3

v2

### Constructing Splits Graphs

This problem has been addressed by earlier publications. But in practice, the proposed approach is only feasible for small split systems.

### Constructing Splits Graphs

Definitions, Theorems and Notations

### Constructing Splits Graphs

Sigma: Set of splits

C: Set of colors

X: set of taxa

X-split: Partitioning of X into two non empty and complementary sets A and A’

EtoC: E -> C

Assigns a color to each edge

nu: X -> V

Mapping from set of taxa X to a node v in a graph.

Properly colored:

A path is properly colored if each edge in P has a different color.

Isometric coloring:

Coloring of the edges such that every shortest paths between any two vertices are properly colored and utilize the same set of colors

Constructing Splits Graphs

Splits Graph:

A graph G = (V,E) is called a splits graph if it is:

1) Finite, simple, connected, bipartite

2) And there exists an isometric and surjective(onto C) edge coloring.

Theorem:

Assume G = (V,E) is a splits graph and EtoC is an appropriate edge coloring. For any color c in C, the graph G_c, obtained by deleting all edges of color c, consists of precisely two separate connected components.

Thus, given a splits Graph G(V,E), there exists a set of color C such that it has one-one mapping with Sigma (set of splits on G). We can use the set C as the range for EtoC.

Also, let StoC be the mapping from split to color.

StoC: Sigma -> C

### Constructing Splits Graphs

Trivial Split:

A partition with a single element in one of the splits.

I represent the set of trivial splits as Sigma_O.

I represent the set of non trivial splits as Sigma_I

Frontier of G:

Frontier of G consists of the set of vertices and edges of G that are incident to the unbounded face of G

Outer-labeled graph:

G is outer-labeled if al labeled vertices of G are of degree one and contained in the frontier of G.

Convex sub graph:

G’ is a convex sub graph of a graph G is an induced subgraph of G such that for any pair of v and w belonging to G’, all shortest paths between v and w that belongs to G also belongs to G’.

Convex Hull:

Convex Hull H_A is the smallest convex sub graph containing all the elements in A.

### Constructing Splits Graphs

Circular Split System:

Split system Sigma for a set of taxa X is circular if there exists an ordered list (x_1,x_2,….,x_n) of elements of X and every split in S belonging to Sigma is interval realizable, ie there exists p,q with 1<p<q<=n such that S = {x_p, x_(p+1),…,x_q}/(X-{x_p, x_(p+1),…,x_q})

Example:

Given ordering (x1,x2,x3,x4) of X = {x1,x2,x3,x4} Sigma = { {x1,x2}/{x3,x4}, {x2,x3}/{x1,x4} } is a circular split system

Theorem:

A set of X-splits Sigma is circular iff there exists an outer-labeled plane splits graph G that represents Sigma U Sigma_O, where Sigma_O = { {x}/(X-{x}) | x belongs to X}

### Constructing Splits Graphs

Example of a circular split system

mouse

dog

turtle

parrot

cat

owl

### Constructing Splits Graphs

Constructing Plane Splits Graphs

### Constructing Splits Graphs

Input: A set of taxa X = {x_1,x_2,….,x_n}

A set of nontrivial X-splits, Sigma_I, such that Sigma_I is circular with respect to the ordering (x_1,x_2,….,x_n)

A set of trivial X-splits, Sigma_O

Output: Outer-labeled plane splits graph G representing Sigma_I and Sigma_O.

### Constructing Splits Graphs

Input: A set of taxa X = {x_1,x_2,….,x_n}

A set of nontrivial X-splits, Sigma_I, such that Sigma_I is circular with respect to the ordering (x_1,x_2,….,x_n)

A set of trivial X-splits, Sigma_O

Output: Outer-labeled plane splits graph G representing Sigma_I and Sigma_O.

Algorithm:

Apply Algorithm 1 to obtain a star graph (G_0, nu) representing Sigma_O.

Order the set Sigma_I by increasing the size of the split part containing x1

For each split S_t in Sigma_I, do:

Determine p,q such that S_t = {x_p, …, x_q}/( X - {x_p,…,x_q} )

Apply Algorithm 2 to find the shortest path P from nu(x_p) to nu(x_q)

Apply Algorithm 3 to G_(t-1), S_t and P to obtain G_t.

### Constructing Splits Graphs

Input: An ordering (x_1,x_2,…, x_n) of X and the set of all trivial X-splits Sigma_O = {S1_O, S2_O,…,Sn_O}

Output: Outer-labeled plane splits graph G_0 = (V,E) representing Sigma_O

### Constructing Splits Graphs

Input: An ordering (x_1,x_2,…, x_n) of X and the set of all trivial X-splits Sigma_O = {S1_O, S2_O,…,Sn_O}

Output: Outer-labeled plane splits graph G_0 = (V,E) representing Sigma_O

Example:

Input: Ordering (x1,x2,x3,x4,x5,x6,x7)

Sigma_O = { {x1}/{x2, …, x7}, {x2}/{x1, x3, …, x7}, {x3}/{x1, x2, x4, …, x7}, {x4}/{x1, …, x3, x5, x6, x7}, {x5}/{x1, …, x4, x6, x7}, {x6}/{x1, …, x5, x7}, {x7}/{x1, …, x6} }

Output:

v2

v1

f1

f2

v3

f3

v7

f7

f4

f6

f5

v4

v6

v5

### Constructing Splits Graphs

• Algorithm 1: Add trivial splits
• Input: An ordering (x1,x2,…, xn) of X and the set of all trivial X-splits Sigma_O = {S1_O, S2_O,…,Sn_O}
• Output: Outer-labeled plane splits graph G_0 = (V,E) representing Sigma_O
• Algorithm:
• Create a new vertex v0
• For each new taxon xi in {x_1,x_2,…,x_n}
• 2.1 Create a new vertex v_i and set nu(x_i) = v_i
• 2.2 Create a new edge f_i and set set c(f_i) = {x_i}/(X-{x_i})
• 2.3 Set E(v_i) = (f_i)
• Set E(v_0) = (f_1,f_2,…,f_n)

### Constructing Splits Graphs

Algorithm 2: Find Shortest Path

Input: Graph, G_(t-1)

Split S_t = {xp, …, xq}/(X - {xp, …, xq})

Output: Shortest path P = (u0, e0, u1, e1, …, uk) from u0 = nu(xp) and uk = nu(xq)

### Constructing Splits Graphs

Algorithm 2: Find Shortest Path

Input: Graph, G_(t-1)

Split S_t = {xp, …, xq}/(X - {xp, …, xq})

Output: Shortest path P = (u0, e0, u1, e1, …, uk) from u0 = nu(xp) and uk = nu(xq)

Example:

Input: G_(t-1) = S_t = {x2, x3, x4}/{x1, x5, x6, x7}

v3

v2

f2

f3

v4

f4

f1

v1

v5

f5

f6

f7

v6

v7

v3

v2

f2

f3

e0

e1

Output: Path P = (v2, e0, u1, e1, u2, e2, u3, e3, v4)

u1

u2

v4

f4

e2

e3

f1

v1

u3

v5

(The algorithm labels edges and vertices)

f5

f6

f7

v6

v7

### Constructing Splits Graphs

Algorithm 2: Find Shortest Path

Input: Graph, G_(t-1)

Split S_t = {xp, …, xq}/(X - {xp, …, xq})

Output: Shortest path P = (u0, e0, u1, e1, …, uk) from u0 = nu(xp) and uk = nu(xq)

Algorithm:

1. Set u_0 = nu(x_p), e_0=f_p

2. Set i = 0

3. Repeat

3.1 Define u_i to be the vertex opposite to u_(i-1) across e_(i-1)

3.2 Define e_i to be the first successor of e_(i-1) in E(u_i) such that e_i not in ({f_1…f_n}-{f_q})

4. Until e_i = f_q [have reached nu(x_q)]

5. Set u_i = nu(x_q)

v7

### Constructing Splits Graphs

Algorithm 2: Add non-trivial circular split

Input: Graph, G_(t-1) representing Sigma_(t-1)

Split S_t = {x_p, …, x_q}/(X - {x_p, …, x_q})

Shortest path P = (u_0, e_0, u_1, e_1, …, u_k) from u_0 = nu(x_p) and u_k = nu(x_q)

Output: Outer-labeled plane splits graph G_t representing Sigma_t

Note: Sigma_t = Sigma_(t-1) U {S_t}

### Constructing Splits Graphs

Example:

Input: G_(t-1) =

v3

v2

f2

S_t = {x2, x3, x4}/{x1, x5, x6, x7}

P = (v2, e0, u1, e1, u2, e2, u3, e3, v4)

(shortest path between nu(x2)=v2 and nu(x4)= v4)

f3

u2

u1

v4

f4

u3

f1

v1

v5

f5

f6

f7

v6

v7

v3

v2

f2

e0

f3

u1

e1

u2

g2

f4

g1

v4

u3

u’1

Output:

u’2

e2

g3

f1

v1

u’3

v5

f5

f6

f7

v6

v7

### Constructing Splits Graphs

S_t = {x2, x3, x4}/{x1, x5, x6, x7}

P = (v2, e0, u1, e1, u2, e2, u3, e3, v4)

(shortest path between nu(x2)=v2 and nu(x4)= v4)

v3

v2

f2

f3

e0

e1

u1

u2

v4

f4

e2

e3

f1

v1

u3

v5

f5

f6

f7

v6

### Constructing Splits Graphs

S_t = {x2, x3, x4}/{x1, x5, x6, x7}

P = (v2, e0, u1, e1, u2, e2, u3, e3, v4)

(shortest path between nu(x2)=v2 and nu(x4)= v4)

v3

v2

f2

f3

e0

u2

e1

u1

v4

e3

f4

e2

e1

u3

u1

u2

e2

f1

v1

u3

v5

f5

f6

f7

v6

### Constructing Splits Graphs

S_t = {x2, x3, x4}/{x1, x5, x6, x7}

P = (v2, e0, u1, e1, u2, e2, u3, e3, v4)

(shortest path between nu(x2)=v2 and nu(x4)= v4)

v3

v2

f2

f3

e0

u2

e1

u1

g2

v4

g1

e3

f4

e2

e1

u3

u1

u2

e2

g3

f1

v1

u3

v5

f5

f6

f7

v6

### Constructing Splits Graphs

Algorithm 3: Add non-trivial circular split

Input: Graph, G_(t-1) representing Sigma_(t-1)

Split S_t = {x_p, …, x_q}/(X - {x_p, …, x_q})

Shortest path P = (u_0, e_0, u_1, e_1, …, u_k) from u_0 = nu(x_p) and u_k = nu(x_q)

Output: Outer-labeled plane splits graph G_t representing Sigma_t

Note: Sigma_t = Sigma_(t-1) U {S_t}

Algorithm:

1 For each i = 1…. k

1.1 Create a new vertex u’_i

1.2 Create a new edge g_i(u’_i, u_i) and EtoS(u’_i) = S_t

1.3 if (i < k) create a new edge e’_i with CtoS(e’_i) = CtoS(e_i)

2 For each I = 1,2,… k

2.1 Assume E(u_i) = (e_(i-1), r_1, r_2, …, r_x, e_i, l_1, l_2, …, l_y)

2.2 Set E(u_i) = (e_(i-1), r_1, r_2, …, r_x, e_i, g_i)

2.3 if (i = 1)

2.3.1 E(u’_i) = (g_i, e’_i, l_1, l_2, .., l_y)

2.4 if (1<i<k)

2.4.1 E(u’_i) = (e’_(i-1), g_i, e’_i, l_1, l_2, …, l_y)

2.5 if (i = k)

2.5.1 E(u’_i) = (e’_(i-1), g_i, l_1, l_2, …, l_y)

### Constructing Splits Graphs

Algorithm 3: Add non-trivial circular split

Input: Graph, G_(t-1) representing Sigma_(t-1)

Split S_t = {x_p, …, x_q}/(X - {x_p, …, x_q})

Shortest path P = (u_0, e_0, u_1, e_1, …, u_k) from u_0 = nu(x_p) and u_k = nu(x_q)

Output: Outer-labeled plane splits graph G_t representing Sigma_t

Note: Sigma_t = Sigma_(t-1) U {S_t}

Algorithm:

1 For each i = 1…. k

1.1 Create a new vertex u’_i

1.2 Create a new edge g_i(u’_i, u_i) and EtoS(u’_i) = S_t

1.3 if (i < k) create a new edge e’_i with CtoS(e’_i) = CtoS(e_i)

2 For each I = 1,2,… k

2.1 Assume E(u_i) = (e_(i-1), r_1, r_2, …, r_x, e_i, l_1, l_2, …, l_y)

2.2 Set E(u_i) = (e_(i-1), r_1, r_2, …, r_x, e_i, g_i)

2.3 if (i = 1)

2.3.1 E(u’_i) = (g_i, e’_i, l_1, l_2, .., l_y)

2.4 if (1<i<k)

2.4.1 E(u’_i) = (e’_(i-1), g_i, e’_i, l_1, l_2, …, l_y)

2.5 if (i = k)

2.5.1 E(u’_i) = (e’_(i-1), g_i, l_1, l_2, …, l_y)

Complexity:

O(k2 + nk)

### Constructing Splits Graphs

Finding ordered list of incident edges recursively (Step 2 of algorithm 3):

For a star graph:

E(v_0) = (f_1,f_2,….,f_n)

E(v_i) = (f_i)

Else

If at the i_th iteration E(u_i) = (e_(i-1), r_1, r_2, …, r_x, e_i, l_1, l_2, …, l_y) for the node u_i

r_2

r_x

r_1

e_i

e_(i-1)

u_i

l_1

l_y

l_2

g_i

And, E(u’_i) =

(g_i, e’_i, l_1, l_2, .., l_y)

(e’_(i-1), g_i, e’_i, l_1, l_2, …, l_y)

(e’_(i-1), g_i, l_1, l_2, …, l_y)

Then,

If i = 1

If 1<i<k

If i = k

e’_i

u_i

l_y

l_1

r_2

l_2

r_x

r_1

g_i

e_i

e_(i-1)

u_i

e’_(i-1)

e’_i

u_i

l_1

l_y

l_2

g_i

g_i

E(u_i) = (e_(i-1), r_1, r_2, …, r_x, e_i, f_i)

e’_(i-1)

u_i

l_1

l_y

l_2

### Constructing Splits Graphs

Example:

Input: Set of taxa X such that X is circular with respect to ordering. X = (dog, cat, mouse, turtle, parrot)

Set of non-trivial splits Sigma_I = { {dog, cat | mouse, turtle, parrot} , {turtle, parrot|cat, dog, mouse}, {dog, mouse | cat, turtle, parrot} }

Set of trivial splits Sigma_O

Output: Outer labeled plane splits graph G representing Sigma_I and Sigma_O

### Constructing Splits Graphs

Algorithm 1 creates the star:

v5

v1

E(v0) = (f1,f2,…f5)

E(dog) = (f1)

E(cat) = (f2)

E(parrot) = (f3)

E(turtle) = (f4)

E(mouse) = (f5)

f5

f1

v0

f4

v4

f2

f3

v2

v3

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,…f5)

E(dog) = (f1)

E(cat) = (f2)

E(parrot) = (f3)

E(turtle) = (f4)

E(mouse) = (f5)

f5

f1

v0

f4

v4

f2

f3

v2

v3

Iteration 1:

Consider S1 = {dog,cat}/{mouse, turtle, parrot}

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,…f5)

E(dog) = (f1)

E(cat) = (f2)

E(parrot) = (f3)

E(turtle) = (f4)

E(mouse) = (f5)

f5

f1

v0

f4

v4

f2

f3

v2

v3

Iteration 1:

Consider S1 = {dog,cat}/{mouse, turtle, parrot}

Algorithm 2 will generate the path P = ( v1, f1, v0, f2, v2)

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,…f5)

E(dog) = (f1)

E(cat) = (f2)

E(parrot) = (f3)

E(turtle) = (f4)

E(mouse) = (f5)

f5

f1

v0

u’1

f4

v4

g1

f2

f3

v2

v3

Iteration 1:

Consider S1 = {dog,cat}/{mouse, turtle, parrot}

Algorithm 2 will generate the path P = ( v1, f1, v0, f2, v2)

Algorithm 3 will create a new node u’1 and a new edge g1(v0, u’1)

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,g1)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

f5

f1

v0

u’1

f4

v4

g1

f2

f3

v2

v3

Iteration 1:

Consider S1 = {dog,cat}/{mouse, turtle, parrot}

Algorithm 2 will generate the path P = ( v1, f1, v0, f2, v2)

Algorithm 3 will create a new node u’1 and a new edge g1(v0, u’1)

Algorithm 3 will also modify E(v0) = (f1, f2, g1) E(u’1) = (g1, f3, f4, f5)

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,g1)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

f5

f1

v0

u’1

f4

v4

g1

f2

f3

v2

v3

Iteration 2:

Consider S2 = {turtle, parrot}/{cat, dog, mouse}

Algorithm 2 will generate the path P = ( v3, f3, u’1, f4, v4)

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,g1)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

f5

f1

u’2

f4

v4

v0

u’1

g1

f2

f3

v3

v2

Iteration 2:

Consider S2 = {turtle, parrot}/{cat, dog, mouse}

Algorithm 2 will generate the path P = ( v3, f3, u’1, f4, v4)

Algorithm 3 will create a new node u’2 and the new edge g2(u’1, u’2)

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,g1)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

E(u’2) = (g2, f5, g1)

f5

f1

u’1

f4

v4

v0

u’2

g2

g1

f2

f3

v3

v2

Iteration 2:

Consider S2 = {parrot, turtle}/{cat, dog, mouse}

Algorithm 2 will generate the path P = ( v3, f3, u’1, f4, v4)

Algorithm 3 will create a new node u’2 and the new edge g2(u’1, u’2)

Algorithm 3 will modify E(u’1) = (f3, f4, g2) E(u’2) = (g2, f5, g1)

### Constructing Splits Graphs

v5

v1

E(v0) = (f1,f2,g1)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

E(u’2) = (g2, f5, g1)

f5

f1

u’1

f4

v4

v0

u’2

g2

g1

f2

f3

v3

v2

Iteration 3:

Consider S3 = {mouse, dog}/{cat, parrot, turtle}

Algorithm 2 will generate the path P = ( v5, f5, u’2, g1, v0, f1, v1)

### Constructing Splits Graphs

v5

v1

f5

f1

E(v0) = (f1,f2,g1)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

E(u’2) = (g2, f5, g1)

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

Iteration 3:

Consider S3 = {mouse, dog}/{cat, parrot, turtle}

Algorithm 2 will generate the path P = ( v5, f5, u’2, g1, v0, f1, v1)

Algorithm 3 will create:

two new nodes u’3, u’4

a new edge g3(u’3, u’4) with EtoC(g2) = EtoC(g3)

and two new edges g4(u’3, v0) and g5(u’4, u’2) with EtoC(g4) = EtoC(g5) = StoC(S3)

### Constructing Splits Graphs

v5

v1

f5

f1

E(v0) = (g1, f1, g4)

E(v1) = (f1)

E(v2) = (f2)

E(v3) = (f3)

E(v4) = (f4)

E(v5) = (f5)

E(u’1) = (g1,f3,f4,f5)

E(u’2) = (f5, g1, g5)

E(u’3) = (g3, g4, f2)

E(u’4) = (g5, g3, g2)

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

Iteration 3:

Consider S3 = {mouse, dog}/{cat, parrot, turtle}

Algorithm 2 will generate the path P = ( v5, f5, u’2, g1, v0, f1, v1)

Algorithm 3 will create:

two new nodes u’3, u’4

a new edge g3(u’3, u’4) with EtoC(g2) = EtoC(g3)

and two new edges g4(u’3, v0) and g5(u’4, u’2) with EtoC(g4) = EtoC(g5) = StoC(S3)

It will modify E(v0), E(u’2) and create E(u’3) and E(u’4)

### Constructing Splits Graphs

Constructing Non planar Splits Graphs

### Constructing Splits Graphs

Non circular splits system leads to non-planar splits graphs.

Reminder:

Convex sub graph:

G’ is a convex sub graph of a graph G is an induced subgraph of G such that for any pair of v and w belonging to G’, all shortest paths between v and w that belongs to G also belongs to G’.

Convex Hull:

Convex Hull H_A is the smallest convex sub graph containing all the elements in A.

### Constructing Splits Graphs

Input: Splits Graph G_(t-1) representing Sigma_(t-1) = Sigma_O U Sigma_I_(t-1)

Split S_t

Output: Splits Graph G_t representing

Sigma_t = Sigma_(t-1) U S_t

### Constructing Splits Graphs

Input: Splits Graph G_(t-1) representing Sigma_(t-1) = Sigma_O U Sigma_I_(t-1)

Split S_t

Output: Splits Graph G_t representing Sigma_t = Sigma_(t-1) U S_t

Algorithm:

Assume S_t = A/A’

1. Compute convex hulls H_A and H_A’

2. Define H_n = intersection of H_A and H_A’

3. F = f_1, f_2, …, f_s denote the set of all edges whose both ends lie in H_n

4. For each i = 1, 2, …, r

4.1 Create a new vertex u’_i

4.2 Create a new edge e_i

4.3 Set EtoC(e_i) = StoC(S_t)

5. For each i = 1,2,…, s

5.1 Create a new edge f’_i

5.2 set EtoC(f’_i) = EtoC(f_i)

6. For each i = 1, 2, …, r

6.1 E_A = set of edges in E(u_i) whose opposite vertices lie in H_A

6.2 E_A’ = set of edges in E(u_i) whose opposite vertices lie in H_A’

6.3 E_n = {g_1, g_2, …, g_q} = set of edges in E(u_i) whose opposite vertices lie in H_n

6.4 E’_n = {g’_1, g’_2, …, g’_q}

6.5 E(u_i) = E_A U E_n U {e_i}

6.6 E(u_i) = E_A’ U E’_n U {e_i}

### Constructing Splits Graphs

v5

v1

f5

f1

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

Consider the split S = {mouse, parrot}/{dog, cat, turtle} = A/A’

(not circular)

### Constructing Splits Graphs

v5

v1

f5

f1

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

split S = {mouse, parrot}/{dog, cat, turtle}

Convex Hull of the nodes {mouse, parrot} = H_A

### Constructing Splits Graphs

v5

v1

f5

f1

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

split S = {mouse, parrot}/{dog, cat, turtle}

Convex Hull of the nodes {dog, cat, parrot} = H_A’

### Constructing Splits Graphs

v5

v1

f5

f1

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

split S = {mouse, parrot}/{dog, cat, turtle}

The intersection of the two convex hulls have edges g5 and g2.

### Constructing Splits Graphs

v5

v1

f5

f1

v0

g1

u’2

u’1

g5

f4

g4

v4

g2

u’4

u’3

g3

f2

f3

v3

v2

split S = {mouse, parrot}/{dog, cat, turtle}

### Constructing Splits Graphs

v5

v1

f5

f1

u’5

v0

g1

u’2

g6

u’7

g7

u’6

g5

f4

g4

v4

g2

u’1

u’4

u’3

g3

f2

f3

v3

v2

split S = {mouse, parrot}/{dog, cat, turtle}

For each edge e in the intersection,

create a new edge f

EtoC(f) = EtoC(e)

For each node u in the intersection,

create a new node v

create an edge f(u,v)

EtoC(f) = StoC(S)

### Constructing Splits Graphs

v5

v1

f5

f1

u’5

v0

g1

u’2

g6

u’7

g7

u’6

g5

f4

g4

v4

g2

u’1

u’4

u’3

g3

f3

f2

v3

v2

split S = {mouse, parrot}/{dog, cat, turtle}

S is the partition obtained by removing the brown color edges

Conclusion

### Constructing Splits Graphs

• The paper include other algorithms
• 1. Algorithm to compute coordinates.
• 2. Algorithm to obtain a circular ordering that maximizes the number of splits in Sigma that are interval-realizable with respect to the given ordering.
• To process a large set of splits:
• 1. First use Algorithm 4 to process the subset of circular splits
• 2. Use Algorithm 6 to process the remaining splits
• All the presented algorithms are implemented in a new program called SplitsTree4.