LIST COLORING OF BLOCK GRAPHS AND COMPLETE BIPARTITE GRAPHS

List coloring is a vertex coloring of a graph where each vertex can be restricted to a list of allowed colors. For a given graph G and a set L(v) of colors for every vertex v, a list coloring is a function that maps every vertex v to a color in the list L(v) such that no two adjacent vertices receive the same color. It was first studied in the 1970s in independent papers by Vizing and by Erdős, Rubin, and Taylor. A block graph is a type of undirected graph in which every biconnected component (block) is a clique. A complete bipartite graph is a bipartite graph with partitions V 1, V 2 such that for every two vertices v_1 ∈ V_1 and v_2 ∈ V_2 there is an edge (v 1, v 2). If |V_1 |=n and |V_2 |=m it is denoted by K_(n,m). In this paper we provide a polynomial algorithm for finding a list coloring of block graphs and prove that the problem of finding a list coloring of K_(n,m) is NP-complete even if for each vertex v the length of the list is not greater than 3 (|L(v)|≤3).

A cut vertex is any vertex whose removal increases the number of connected components [1] illustrated in Fig 2. Any connected graph decomposes into a tree of biconnected components called the block-cut tree of the graph [2]. In block graphs each block is clique. A complete bipartite graph is а simple bipartite graph such that two vertices are adjacent if and only if they are in different partite sets. When the sets have sizes and , the (unlabeled) complete bipartite graph is denoted by , [1].
For a directed graph ⃗ if there is an edge from a vertex to a vertex we will denote it as → . The graph is called the underlying graph of a directed graph ⃗ if ( ) = ( ⃗ ) and between any pair of vertices and , if the directed graph has an edge → or an edge → , the underlying graph includes the edge ( , ).
For a tree and a vertex let be the directed graph whose underlying graph is and in each edge is directed in such a way that for all vertices ∈ there is a path in from to . We will say that is a rooted tree with the root . Fig. 3 illustrates the rooted tree 1 with the root 1 . A vertex is said to be the parent of the vertex , denoted by ( ) if → and in such a case, the vertex is said to be a child of the vertex . The children of a vertex ∈ ( ) are the set of all vertices ⊆ ( ) such that → for all ∈ ( ). A vertex having no children is said to be a leaf vertex. For a vertex let ( ) be the subtree induced [1] by all the vertices such that there is a path from to in .
List coloring was first introduced in [3] and [4]. The list-coloring problem is NP-complete for general perfect graphs [5], and is also NP-complete for many subclasses of perfect graphs, including split graphs [6], interval graphs [7,8], and bipartite graphs [9]. In [6] a polynomial solution was provided for partial k-trees with the time complexity of (| ( )| +2 ). In [10] different subclasses of perfect graphs were considered where the vertex coloring problem has a polynomial solution but the list coloring problem is NP-Complete [11,12]. In [13] the extended version of list coloring was considered where the colors are intervals of integers and it was shown that for bipartite and complete graphs the problem is NP-Complete.

NP-completeness of the list coloring for complete bipartite graphs
Given a complete bipartite graph , with vertices in the first part denoted by 1 and the vertices in the second part denoted by 2 ( ( , ) = 1 ∪ 2 ). In , for every vertex ∈ 1 and every vertex ∈ 2 there is an edge connecting them ( , ) ∈ ( , ). We are going to prove that the list coloring of , is NP-complete even if the lists have at most 3 colors | ( )| ≤ 3 for all ∈ ( ). To do that we are going to show that the problem of 3-satisfiability (3-SAT) [12] can be solved by finding a list coloring of some , and .
Theorem 1: The Problem 1 of finding a list coloring of complete bipartite graphs where lists can have at most 3 colors is NP-complete.
Proof. We will reduce the 3-SAT problem to the Problem 1. Assume we have an instance of 3-SAT with variables and clauses . We must construct a complete bipartite graph and provide lists of colors on it such that there is a list coloring on that graph if and only if there is a satisfying true assignment for . Let be defined the following way: = when = 1 and = ¬ when = 0. In that case each clause has this form = ( 1 1 We will construct the graph , the following way: for each variable for = 1, … , we will construct a vertex in 1 (| 1 | = ) and for each clause for = 1, … , we will construct a vertex ∈ 2 (| 2 | = ). For every vertex and a vertex there is an edge ( , ) ∈ , . For every variable we will introduce two colors. The color will represent and the color + will represent ¬ . Hence = 2 * and we will construct the lists the following way: for every vertex the list ( ) = { , + }. For every vertex we will take its clause = ( 1 1 ∨ 2 2 ∨ 3 3 ) and the colors will be ( ) = { 1 + (1 − 1 ) * , 2 + (1 − 2 ) * , 2 + (1 − 2 ) * } which means, if the variable appears in the form of in then we have the color in ( ) and if the variable appears in the form of ¬ then we have the color + in ( ). Now let us show that finding a list coloring on this , , is equivalent to finding a satisfying true assignment in , .
Let us first show that if 1 , … , ∈ { , } is a satisfying solution for , such that assigning to makes all = then there is a list coloring : ( , ) → {1, … ,2 * }. For the vertices in 1 let ( ) = if = and ( ) = + if = . Now for each one of the 1 1 , 2 2 , 3 3 is . Suppose 1 1 = . If 1 = 1 then 1 = and we will take ( ) = 1 and if 1 = 0 then 1 = and we will take ( ) = 1 + . Note that from this coloring the only conflict that can happen for the vertex is the vertex 1 because we either color it with 1 or 1 + and in 1 only the vertex 1 can have these colors. But we color the vertex with 1 when 1 = in which case the color of the vertex 1 is 1 + , and we color the vertex with 1 + when 1 = in which case the color of the vertex 1 is 1. In other words, we color the vertices of 2 with the colors for which they become true in the assignment and we color the vertices of 1 with the opposite colors. This means that any satisfying assignment in , is also producing a list coloring in , , . Now suppose we have a list coloring in , , , let us show that there is a satisfying solution for , . For each vertex in we either have ( ) = or ( ) = + . Let us construct the assignment 1 , … , the following way: = if ( ) = + and = if ( ) = . We now want to show that taking = is a satisfying solution for every clause. = ( 1 1 ∨ 2 2 ∨ 3 3 ) and we need to show that one of the 1 1 , 2 2 , 3 3 is . Without loose of generality assume the color of the vertex is 1 + (1 − 1 ) * . If 1 = 1 it means ( ) = 1 which means ( 1 ) = 1 + (because the colors should be different), which means 1 = resulting 1 1 = and hence = . If 1 = 0 it means ( ) = 1 + which means ( 1 ) = 1, which means 1 = resulting 1 1 = and hence = . This means that any list coloring in , , is also producing a satisfying assignment in , proving that the two problems are equivalent, which means the Problem 1 is NP-complete.
A polynomial algorithm for the list coloring of block graphs. For a given block graph let = | ( )| and there are restrictions on the vertices such that for each vertex the restriction ( ) is a set of colors that is allowed to use for the vertex and ( ) ⊆ (for a given ). We need to find a vertex coloring such that for each vertex the restriction is met ( ) ∈ ( ).
Problem: Given an arbitrary block graph with = | ( )| vertices and given arbitrary restrictions for every vertex with ( ) ⊆ . Determine whether it is possible to have a vertex coloring : ( ) → such that ( ) ∈ ( ) for every vertex .
For the block graph let us construct its respective block-cut tree and denote it as . Each vertex in is either a cut vertex or a block of the graph . Fig 4 illustrate a block graph and its respective block-cut tree. Vertices 2, 8, 13, 14, 15 in the graph are respectively the vertices 1 , 2 , 3 , 4 , 5 in the block-cut tree . In the block-cut tree if the vertex is a cut vertex in the graph we will call it a cut vertex in and if the vertex is a block of the graph we will call it a block vertex in the tree . We will draw cut vertices with circles and block vertices with squares. If the vertex is a block vertex in the tree then let ( ) be the block of the graph associated with that block vertex. Since is a block graph ( ) will be a clique. For a cut vertex in the tree let ( ) be the cut vertex in the graph . All the leaf vertices in ( ( ) = 1) are block vertices since a cut vertex is always connected to at least 2 different block vertices in the tree (because removing a cut vertex of the graph will make the graph disconnected).
If the block graph does not contain a cut vertex, then it is a complete graph. Let us first see how we can solve the list coloring problem in the case of complete graphs. For every vertex from 1 , … , we need to select a color from 1, … , that meets the restriction ( ) ∈ ( ). We will construct a bipartite graph the following way: the first partition 1 will be { 1 , … , } and the second partition 2 will be { 1 , … , }. In this bipartite graph we will construct an edge ( , ) if the color ∈ ( ). In that case finding a list coloring is equivalent to finding a matching of size in this bipartite graph because we need to assign a color to each vertex in a way that all the colors are different and the restrictions are met. Fig 5 illustrates that bipartite graph. Moving forward we will assume that there is at least one cut vertex in the graph . Let be an arbitrary cut vertex in which will also be a cut vertex in the graph . We are interested in the rooted tree . In that case would look like the tree shown in Fig. 6. Since is a cut vertex the children of the vertex are block vertices.

RS Global
For a subtree ( ) let ( ( )) be the vertex if it is a cut vertex, and the vertex ( ) if it is a block vertex. For a block vertex the vertex ( ) is a cut vertex and ( ( )) is included in the block ( ), ( ( )) ∈ ( ). For a non-root cut vertex in the vertex ( ) is a block vertex and ( ) ∈ ( ( )). For every the vertex ( ( )) is a cut vertex that is connected to some child block vertices.
For every vertex ∈ let ( ) be the subgraph of the block graph induced by all the vertices that are included in any of the block vertices of ( ) in , i.e. if is a block vertex in and ∈ ( ( )) then ( ( )) ⊆ ( ( )).   Consider the block ( ), since it is a clique, we should make sure that all the vertices in this block have different colors. Let = | ( ( ))| − 1 and let the vertices of ( ) be { 0 , … , } such that 0 = ( ( )), 1 = ( 1 ), … , = ( ). The vertices 0 , 1 , … , are cut vertices and the vertices +1 , … , are not cut vertices in the block graph . In order to find a list coloring of ( ) we need to find a list coloring for the block ( ) and also for all the subgraphs ( 1 ), … , ( ). This means we need to find distinct colors 0 , … , such that ∈ ( ) for all 0 ≤ ≤ and [ ][ ] = 1 for all the child vertices (1 ≤ ≤ ). If we are calculating the value [ ][ ] it means that 0 = . We will construct a bipartite graph the following way: the left partition will be 1 and will have the vertices { 0 , … , } and the right partition will be 2 with the vertices 1 , … , . To calculate the answer for the color ∈ ( 0 ) we will construct the edges of the bipartite graph the following way: for the vertex 0 we will only add the edge ( 0 , ), for the vertices 1 , … , we will add an edge  [ ][ ] = 1 it means we were able to find a list coloring for ( ) which is the entire graph . Storing the results of maximal matchings will allow us to later construct the list coloring from top to bottom.
Let us now calculate the complexity of the algorithm. For every block of the graph we would need to find a maximal matching. If = | ( )| and we want to color with the colors from 1, … , then for a block of size we would need to calculate a matching for a bipartite graph that has vertices on the left partition and vertices on the right partition which can be done in ( * * ) for every color . Since the sum of the number of vertices from all the blocks is ( ) then it would take about ( 2 * 2 ) operations. If = ( ) then the algorithm will run in ( 4 ). Note that we can always assume that = | ⋃ ( ) ∈ ( ) | ≤ ∑ | ( )| ∈ ( ) since we can remove the redundant colors and reindex the colors. This means that is less than the size of the input and hence the algorithm has a polynomial time complexity.