bipartite roots of graphs
Graph H is a root of graph G if there exists a natural number k such that xy ? E ( G ) ? d H ( x, y ) ? k where d H ( x, y ) is the length of a shortest path in H from x to y. In such a case, H is a k -th root of G and we write G = H k and call G the k -th power of H. Motwani and Sudan proved that it is NP-complete to recognize squares of graphs and believed it is also NP-complete to recognize squares of bipartite graphs. In this paper, we show, rather surprisingly, that squares of bipartite graphs can be recognized in polynomial time. Also, we show that counting the number of different bipartite square roots of a graph can be done in polynomial time although this number could be exponential in the size of the input graph. Furthermore, we can generate all bipartite roots of a graph G in time O(max{?( G )  M, r ( G )}) where ?( G ) is the maximum degree of G, M is the time complexity to do matrix multiplication, and r ( G ) is the number of different bipartite square roots of G. By using the tools developed, we are able to give a new and simpler linear time algorithm to recognize squares of trees and a new algorithmic proof that tree square roots, when they exist, are unique up to isomorphism. Finally, we prove the NP-completeness of recognition of cubes of bipartite graphs.
bipartite graphs graph roots graph powers