Next Article in Journal
Algorithms for Non-Negatively Constrained Maximum Penalized Likelihood Reconstruction in Tomographic Imaging
Next Article in Special Issue
New Heuristics for Rooted Triplet Consistency
Previous Article in Journal / Special Issue
Computing the Eccentricity Distribution of Large Graphs
Article

A Polynomial-Time Algorithm for Computing the Maximum Common Connected Edge Subgraph of Outerplanar Graphs of Bounded Degree

Bioinformatics Center, Institute for Chemical Research, Kyoto University, Gokasho, Uji, Kyoto 611-0011, Japan
*
Author to whom correspondence should be addressed.
Algorithms 2013, 6(1), 119-135; https://doi.org/10.3390/a6010119
Received: 30 October 2012 / Revised: 27 January 2013 / Accepted: 7 February 2013 / Published: 18 February 2013
(This article belongs to the Special Issue Graph Algorithms)

Abstract

The maximum common connected edge subgraph problem is to find a connected graph with the maximum number of edges that is isomorphic to a subgraph of each of the two input graphs, where it has applications in pattern recognition and chemistry. This paper presents a dynamic programming algorithm for the problem when the two input graphs are outerplanar graphs of a bounded vertex degree, where it is known that the problem is NP-hard, even for outerplanar graphs of an unbounded degree. Although the algorithm repeatedly modifies input graphs, it is shown that the number of relevant subproblems is polynomially bounded, and thus, the algorithm works in polynomial time.
Keywords: maximum common subgraph; outerplanar graph; dynamic programming maximum common subgraph; outerplanar graph; dynamic programming

1. Introduction

Finding common parts of graph-structured data is an important and fundamental task in computer science. Among many such problems, the maximum common subgraph problem has applications in various areas, which include pattern recognition [1,2] and chemistry [3,4]. Although there are several variants, the maximum common subgraph problem (MCS) usually means the problem of finding a connected graph with the maximum number of edges that is isomorphic to a subgraph of each of the two input undirected graphs (i.e., the maximum common connected edge subgraph problem).
Because of its importance in pattern recognition and chemistry, many practical algorithms have been developed for MCS and its variants [1,2,3,4]. Some exponential-time algorithms that are better than naive ones have also been developed [5,6]. Kann studied the approximability of MCS and related problems [7].
It is also important for MCS to study a polynomially solvable subclasses of graphs, because graph structures are restricted in many application areas. It is well-known that if input graphs are trees, MCS can be solved in polynomial time using maximum weight bipartite matching [8]. Akutsu showed that MCS can be solved in polynomial time if input graphs are almost trees of bounded degree, whereas MCS remains NP-hard for almost trees of unbounded degree [9], where a graph is called an almost tree if it is connected and the number of edges in each biconnected component is bounded by the number of vertices plus some constant. Yamaguchi et al. developed a polynomial-time algorithm for MCS and the maximum common induced connected subgraph problem for a degree bounded partial k-tree and a graph with a polynomially bounded number of spanning trees, where k is a constant [10]. However, the latter condition seems rather artificial. Schietgat et al. developed a polynomial-time algorithm for outerplanar graphs under the block-and-bridge preserving subgraph isomorphism [11]. However, they modified the definition of MCS by this restriction. Although it was announced that MCS can be solved in polynomial time if input graphs are partial k-trees and MCS must be k-connected (for example, see [12]), the restriction that subgraphs are k-connected is too strict from a practical viewpoint. As for the subgraph isomorphism problem, which is closely related to MCS, polynomial-time algorithms have been developed for biconnected outerplanar graphs [13,14] and for partial k-trees with some constraints, as well as their extensions [15,16].
In this paper, we present a polynomial-time algorithm for outerplanar graphs of a bounded degree (a preliminary version has appeared in [17]). Although this graph class is not a superset of the classes in previous studies [9,10], it covers a wide range of chemical compounds (it was reported that 94.4% of chemical compounds in the NCI database have outerplanar graph structures [18]). Furthermore, the algorithm and its analysis in this paper are not simple extensions or variants of those for the subgraph isomorphism problem for outerplanar graphs [13,14] or partial k-trees [15,16]. These algorithms heavily depend on the property that each connected component in a subgraph is not decomposed. However, to be discussed in Section 4, connected components from both input graphs can be decomposed in MCS, and considering all decompositions easily leads to exponential-time algorithms. In order to cope with this difficulty, we introduce the concept of a blade. The blade and its analysis play a key role in this paper.
It is to be noted that the number of MCS can be exponential even for trees [19]. Therefore, our proposed algorithm and all polynomial-time algorithms mentioned above are focusing on finding the one of MCS’s. It should also be noted that the proposed algorithm is not practical, because the polynomial degree is very high, although it gives a non-trivial theoretical result on the computation of MCS.

2. Preliminaries

A graph is called outerplanar if it can be drawn on a plane such that all vertices lie on the outer face (i.e., the unbounded exterior region) without crossing of edges. Although there exist many embeddings (i.e., drawings on a plane) of an outerplanar graph, it is known that one embedding can be computed in linear time. Therefore, in this paper, we assume that each graph is given with its planar embedding. A path is called simple if it does not pass the same vertex multiple times. In this paper, a path always means a simple path that is not a cycle.
A cut vertex of a connected graph is a vertex whose removal disconnects the graph. A graph is biconnected if it is connected and does not have a cut vertex. A maximal biconnected subgraph is called a biconnected component. A biconnected component is called a block if it consists of at least three vertices; otherwise, it is an edge and called a bridge. An edge in a block is called an outer edge if it lies on the boundary of the outer face; otherwise, it is called an inner edge. It is well-known that any block of an outerplanar graph has a unique Hamiltonian cycle, which consists of outer edges only [20]. For the details of the terminology used in graphs and outerplanar graphs, refer to an appropriate textbook on graph theory (e.g., [21]).
If we fix an arbitrary vertex of a graph G as the root r, we can define the parent-child relationship on biconnected components. For two vertices, u and v, u is called further than v if every simple path from u to r contains v. A biconnected component, C, is called a parent of a biconnected component C if C and C share a vertex v, where v is uniquely determined, and every path from any vertex in C to the root contains v. In such a case, C is called a child of C. A cut vertex v is also called a parent of C if v is contained in both C and its parent component ( both of a cut vertex and a biconnected component can be parents of the same component). Furthermore, the root, r, is a parent of C if r is contained in C.
For each cut vertex v, G ( v ) denotes the subgraph of G induced by v and the vertices further than v. For a pair of a cut vertex v and a biconnected component, C, containing v, G ( v , C ) denotes the subgraph of G induced by vertices in C and its descendant components. For a biconnected component, B, with its parent cut vertex, w, a pair of vertices, v and v , in B is called a cut pair if v v , v w and v w hold. For a cut pair ( v , v ) in B, V B ( v , v ) denotes the set of the vertices lying on the one of the two paths connecting v and v in the Hamiltonian cycle that does not contain the parent cut vertex, except its endpoints. B ( v , v ) is the subgraph of B induced by V B ( v , v ) and is called a half block. It is to be noted that B ( v , v ) contains both v and v . Then, G ( v , v ) denotes the subgraph of G induced by V B ( v , v ) and the vertices in the biconnected components, each of which is a descendant of some vertex in V B ( v , v ) - { v , v } , and G ¯ ( v , v ) denotes the subgraph of G induced by the vertices in G ( v , v ) and descendant components of v and v , where descendants are defined via the parent-child relationship.
Example Figure 1 shows an example of an outerplanar graph G ( V , E ) . Blocks and bridges are shown by gray regions and bold lines, respectively. B 1 , B 3 and e 2 are the children of the root r. B 4 , B 6 and B 7 are the children of B 3 , whereas B 4 and B 6 are the children of w. Both w and B 3 are the parents of B 4 and B 6 . G ( w ) consists of B 4 , B 5 and B 6 , whereas G ( w , B 4 ) consists of B 4 and B 5 . ( v , v ) is a cut pair of B 7 , and B 7 ( v , v ) is a region surrounded by a dashed bold curve. G ¯ ( v , v ) consists of B 7 ( v , v ) , B 8 , B 9 , B 10 , e 4 , e 5 and e 6 , whereas G ( v , v ) consists of B 7 ( v , v ) , B 10 , e 4 and e 5 .
If a connected graph, G c ( V c , E c ) , is isomorphic to a subgraph of G 1 and a subgraph of G 2 , we call G c a common subgraph of G 1 and G 2 . A common subgraph G c is called a maximum common connected edge subgraph of G 1 and G 2 if its size is the maximum among all common subgraphs (we use MCS to denote both the problem and the maximum common subgraph), where the size means the number of edges. In what follows, for the sake of simplicity, a maximum common subgraph (MCS) always means a maximum common connected edge subgraph. In this paper, we consider the following problem.
Figure 1. Example of an outerplanar graph.
Figure 1. Example of an outerplanar graph.
Algorithms 06 00119 g001
Maximum Common Subgraph of Outerplanar Graphs of Bounded Degree (OUTER-MCS)
Given two undirected connected outerplanar graphs, G 1 and G 2 , whose maximum vertex degree is bounded by a constant, D, find a maximum common subgraph of G 1 and G 2 .
Note that the degree bound is essential, because MCS is NP-hard for outerplanar graphs of unbounded degree, even if each biconnected component consists of at most three vertices [9]. Although we do not consider labels on vertices or edges, our results can be extended to vertex-labeled and/or edge-labeled cases in which label information must be preserved in isomorphic mapping. In the following, n denotes the maximum number of vertices of two input graphs ( it should be noted that the number of vertices and the number of edges are in the same order, since we only consider connected outerplanar graphs).
In this paper, we implicitly make extensive use of the following well-known fact [13], along with outerplanarity of the input graphs.
Fact 1 Let G 1 and G 2 be biconnected outerplanar graphs. Let ( u 1 , u 2 , , u m ) (resp. ( v 1 , v 2 , , v n ) ) be the vertices of G 1 (resp. G 2 ) arranged in clockwise order in a planar embedding of G 1 (resp. G 2 ). If there is an isomorphic mapping { ( u 1 , v i 1 ) , ( u 2 , v i 2 ) , , ( u m , v i m ) } from G 1 to a subgraph of G 2 , then v i 1 , v i 2 , , v i m appear in G 2 in either clockwise or counterclockwise order.

3. Algorithm for a Restricted Case

In this section, we consider the following restricted variant of OUTER-MCS, which is called SIMPLE-OUTER-MCS, and present a polynomial-time algorithm for it: (i) any two vertices in different biconnected components in a maximum common subgraph, G c , must not be mapped to vertices in the same biconnected component in G 1 (resp. G 2 ); (ii) each bridge in G c must be mapped to a bridge in G 1 (resp. G 2 ); (iii) the maximum degree need not be bounded.
It is to be noted from the definition of a common subgraph (regardless of the above restrictions) that no two vertices in different biconnected components in G 1 (resp. G 2 ) are mapped to vertices in the same biconnected component in any common subgraph, and no bridge in G 1 (resp. G 2 ) is mapped to an edge in a block in any common subgraph (otherwise there would exist a cycle containing the edge in a common subgraph, which would mean that the edge in G 1 (resp., G 2 ) is not a bridge).
SIMPLE-OUTER-MCS is intrinsically the same as the one studied by Schietgat et al. [11]. Although our algorithm is more complex and less efficient than their algorithm, we present it here, because the algorithm for a general (but bounded degree) case is rather involved and is based on our algorithm for SIMPLE-OUTER-MCS.
Here, we present a recursive algorithm to compute the size of MCS in SIMPLE-OUTER-MCS, which can be easily transformed into a dynamic programming algorithm to compute an MCS, as is true for many other dynamic programming algorithms. The following is the main procedure of the recursive algorithm.
Procedure S i m p l e O u t e r M C S ( G 1 , G 2 )
s max 0 ;
for all pairs of vertices ( u , v ) V 1 × V 2 do
  Let ( u , v ) be the root pair ( r 1 , r 2 ) of ( G 1 , G 2 ) ;
   s max max ( s max , M C S c ( G 1 ( r 1 ) , G 2 ( r 2 ) ) ) ;
return s max .
The algorithm consists of a recursive computation of the following three scores:
M C S c ( G 1 ( u ) , G 2 ( v ) ) :
the size of an MCS G c between G 1 ( u ) and G 2 ( v ) , where ( u , v ) is a pair of the roots or a pair of cut vertices, and G c must contain a vertex corresponding to both u and v.
M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) :
the size of an MCS G c between G 1 ( u , C ) and G 2 ( v , D ) , where ( C , D ) is either a pair of blocks or a pair of bridges, u (resp. v) is the cut vertex belonging to both C (resp. D) and its parent, G c must contain a vertex corresponding to both u and v and G c must contain a biconnected component (which can be empty) corresponding to a subgraph of C and a subgraph D.
M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) :
the size of an MCS G c between G 1 ( u , u ) and G 2 ( v , v ) , where ( u , u ) (resp. ( v , v ) ) is a cut pair, and G c must contain a cut pair ( w , w ) corresponding to both ( u , u ) and ( v , v ) . If there does not exist such G c (which must be connected), its score is - .
In the following, we describe how to compute these scores.
Computation of M C S c ( G 1 ( u ) , G 2 ( v ) )
As in the dynamic programming algorithm for MCS for trees or almost trees [9], we construct a bipartite graph and compute a maximum weight matching.
Let C 1 , , C h 1 , e 1 , , e h 2 and D 1 , , D k 1 , f 1 , , f k 2 be children of u and v respectively, where C i ’s and D j ’s are blocks and e i ’s and f j ’s are bridges (see Figure 2). We construct an edge-weighted bipartite graph B G ( X , Y ; E ) by
X = { C 1 , , C h 1 , e 1 , , e h 2 } Y = { D 1 , , D k 1 , f 1 , , f k 2 } E = { ( x , y ) | x X , y Y } w ( C i , f j ) = 0 w ( C i , D j ) = M C S b ( G 1 ( u , C i ) , G 2 ( v , D j ) ) w ( e i , D j ) = 0 w ( e i , f j ) = M C S b ( G 1 ( u , e i ) , G 2 ( v , f j ) )
Then, we let M C S c ( G 1 ( u ) , G 2 ( v ) ) be the weight of the maximum weight bipartite matching of B G ( X , Y ; E ) . It is to be noted that w ( C i , f j ) = 0 (resp., w ( e i , D j ) = 0 ) comes from the fact that f j must be mapped to a bridge in G c , but a bridge in G c must not be mapped to an edge in any block (e.g., C i ), because of the condition (ii) of SIMPLE-OUTER-MCS.
Figure 2. Computation of M C S c ( G 1 ( u ) , G 2 ( v ) ) .
Figure 2. Computation of M C S c ( G 1 ( u ) , G 2 ( v ) ) .
Algorithms 06 00119 g002
Computation of M C S b ( G 1 ( u , C ) , G 2 ( v , D ) )
Let ( u 1 , u 2 , , u h ) be the sequence of vertices in G 1 ( u , C ) , such that there exists an edge, { u i , u } , for each u i , where u 1 , u 2 , , u h are arranged in clockwise order. ( v 1 , v 2 , , v k ) is defined for G 2 ( v , D ) in the same way. It is to be noted that ( C , D ) is either a pair of blocks or a pair of bridges. A pair of subsequences ( ( u i 1 , u i 2 , , u i g ) , ( v j 1 , v j 2 , , v j g ) ) is called an alignment if i 1 < i 2 < < i g and j 1 < j 2 < < j g or j g < j g - 1 < < j 1 hold ( the latter ordering is required for handling mirror images.), where g = 0 is allowed. We compute M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) by the following (see Figure 3):
Procedure S i m p l e O u t e r M C S b ( G 1 ( u , C ) , G 2 ( v , D ) )
s max 0 ;
for all alignments ( ( u i 1 , u i 2 , , u i g ) , ( v j 1 , v j 2 , , v j g ) ) do;
  if C is a block and g = 1 then continue; /* blocks must be preserved */
   s 0 ;
  for t = 1 to g do s s + 1 + M C S c ( G 1 ( u i t ) , G 2 ( v j t ) ) ;
  for t = 2 to g do s s + M C S p ( G 1 ( u i t - 1 , u i t ) , G 2 ( v j t - 1 , v j t ) ) ;
   s max max ( s , s max ) ;
return s max .
In the above procedure, the first inner for loop takes care of blocks, such as C 1 , C 4 , D 1 and D 4 in Figure 3, whereas the second inner for loop takes care of half blocks, such as C 2 , C 3 , D 2 , D 3 and D 5 in Figure 3.
For example, consider an alignment, ( ( u 1 , u 2 , u 3 ) , ( v 1 , v 2 , v 4 ) ) , in Figure 3, where all alignments are to be examined in the algorithm. Then, the score of this alignment is given by 3 + M C S b ( G 1 ( u 1 , C 1 ) , G 2 ( v 1 , D 1 ) ) + M C S p ( G 1 ( u 1 , u 2 ) , G 2 ( v 1 , v 2 ) ) + M C S p ( G 1 ( u 2 , u 3 ) , G 2 ( v 2 , v 4 ) ) . M C S b ( G 1 ( u 1 , C 1 ) , G 2 ( v 1 , D 1 ) ) comes via the computation of M C S c ( G 1 ( u 1 ) , G 2 ( v 1 ) ) , in which B G ( X , Y ; E ) is given by X = { C 1 } , Y = { D 1 } , E = { ( C 1 , D 1 ) } , and thus, the maximum weight matching is given by w ( C 1 , D 1 ) = M C S b ( G 1 ( u 1 , C 1 ) , G 2 ( v 1 , D 1 ) ) . In this case, an edge, { v , v 3 } , is removed and then v 3 is treated as a vertex on the path connecting v 2 and v 4 in the outer face. For another example, consider an alignment ( ( u 1 ) , ( v 1 ) ) in the same figure. Then, this alignment is ignored by the “if ... then ...” line of the procedure, because a bridge in G c , which would correspond to { u , u 1 } in G 1 and { v , v 1 } in G 2 , must not be mapped to an edge in C or D. However, if both { u , u 1 } and { v , v 1 } are bridges, the resulting score would be 1 + M C S c ( G 1 ( u 1 ) , G 2 ( v 1 ) ) .
Figure 3. Computation of M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) .
Figure 3. Computation of M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) .
Algorithms 06 00119 g003
Since the above procedure examines all possible alignments, it may take exponential time. However, we can modify it into a dynamic programming procedure, as shown below, where we omit a subprocedure for handling mirror images, because it is trivial. In this procedure, u 1 , u 2 , , u h and v 1 , v 2 , , v k are processed from left to right. In the first for loop, M [ s , t ] stores the size of MCS between G 1 ( u s ) and G 2 ( v t ) plus one (corresponding to a common edge between { u , u s } and { v , v t } ). The double for loop computes an optimal alignment. M [ s , t ] stores the size of MCS between G 1 ( u , C ) and G 2 ( v , D ) up to u s and v t , respectively. f l a g is introduced to ensure the connectedness of a common subgraph. For example, f l a g = 0 if G 1 ( u ) is a triangle, but G 2 ( v ) is a rectangle. If C (and also D) is an edge, f l a g = 0 , but the procedure returns M [ 1 , 1 ] .
for all ( s , t ) { 1 , , h } × { 1 , , k } do
   M [ s , t ] 1 + M C S c ( G 1 ( u s ) , G 2 ( v t ) ) ;
f l a g 0 ;
for s = 2 to h do
  for t = 2 to k do
    M [ s , t ] M [ s , t ] + max s < s , t < t { M [ s , t ] + M C S p ( G 1 ( u s , u s ) , G 2 ( u t , u t ) ) } ;
   if M [ s , t ] > - then f l a g 1 ;
if C is a block and f l a g = 0 then return 0 else return max s , t M [ s , t ] .
Computation of M C S p ( G 1 ( u , u ) , G 2 ( v , v ) )
Let ( u 1 , u 2 , , u h ) be the sequence of vertices in G 1 ( u , u ) , such that there exists an edge { u i , u } or { u i , u } for each u i , where u 1 , u 2 , , u h are arranged in clockwise order. ( v 1 , v 2 , , v k ) is defined for G 2 ( v , v ) in the same way. For a pair, ( u i , v j ) , l ( u i , v j ) = 1 if { u i , u } E 1 and { v j , v } E 2 hold, otherwise, l ( u i , v j ) = 0 . Similarly, for a pair, ( u i , v j ) , r ( u i , v j ) = 1 if { u i , u } E 1 and { v j , v } E 2 hold, otherwise, r ( u i , v j ) = 0 . We compute M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) by the following procedure, where it does not examine alignments with j g < j g - 1 < < j 1 :
Procedure S i m p l e O u t e r M C S p ( G 1 ( u , u ) , G 2 ( v , v ) )
if { u , u } E 1 and { v , v } E 2 then s max 1 else s max - ;
for all alignments ( ( u i 1 , u i 2 , , u i g ) , ( v j 1 , v j 2 , , v j g ) ) do
  if l ( u i t , v j t ) = 0 and r ( u i t , v j t ) = 0 hold for some t then continue;
  if l ( u i 1 , v j 1 ) = 0 or r ( u i g , v j g ) = 0 holds then continue;
  if { u , u } E 1 and { v , v } E 2 then s 1 else s 0 ;
  for t = 1 to g do s s + l ( u i t , v j t ) + r ( u i t , v j t ) + M C S c ( G 1 ( u i t ) , G 2 ( v j t ) ) ;
  for t = 2 to g do s s + M C S p ( G 1 ( u i t - 1 , u i t ) , G 2 ( v j t - 1 , v j t ) ) ;
   s max max ( s , s max ) ;
return s max .
This procedure returns - if there is no connected common subgraph between G 1 ( u , u ) and G 2 ( v , v ) that contains ( w , w ) corresponding to both ( u , u ) and ( v , v ) . It should be noted that the first line in the body of the main loop puts the constraint that all corresponding pairs, ( u i t , v j t ) , in an alignment must be connected to either ( u , v ) or ( u , v ) , and the second line puts the constraint that ( u i 1 , v j 1 ) must be connected to ( u , v ) and ( u i g , v j g ) must be connected to ( u , v ) .
As an example, consider an alignment, ( ( u 1 , u 2 , u 3 , u 4 ) , ( v 1 , v 2 , v 3 , v 5 ) ) , in Figure 4. Then, the score is given by 4 + M C S p ( G 1 ( u 1 , u 2 ) , G 2 ( v 1 , v 2 ) ) + M C S p ( G 1 ( u 2 , u 3 ) , G 2 ( v 2 , v 3 ) ) + M C S b ( G 1 ( u 3 , C 3 ) , G 2 ( v 3 , D 4 ) ) + M C S p ( G 1 ( u 3 , u 4 ) , G 2 ( v 3 . v 5 ) ) , where M C S b ( G 1 ( u 3 , C 3 ) , G 2 ( v 3 , D 4 ) ) is given via the computation of M C S c ( G 1 ( u 3 ) , G 2 ( v 3 ) ) .
Figure 4. Computation of M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) .
Figure 4. Computation of M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) .
Algorithms 06 00119 g004
For another example, the score is - for each of alignments, ( ( u 1 , u 3 ) , ( v 4 , v 5 ) ) , ( ( u 1 , u 2 ) , ( v 1 , v 2 ) ) and ( ( u 3 ) , ( v 3 ) ) , whereas the score of ( ( u 2 ) , ( v 3 ) ) is 2, since { u , u } E , { v , v } E , l ( u 2 , v 3 ) = 1 , r ( u 2 , v 3 ) = 1 and M C S c ( G 1 ( u 2 ) , G 2 ( v 3 ) ) = 0 . It is to be noted that vertices not appearing in an alignment can match in a later dynamic programming process; for example, u 2 can match with v 2 under an alignment of ( ( u 1 , u 3 ) , ( v 1 , v 4 ) ) , although edges { u , u 2 } and { v , v 2 } are ignored.
As in the case of S i m p l e O u t e r M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) , S i m p l e O u t e r M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) can be modified into a dynamic programming version.
Then, we have the following theorem:
Theorem 1 SIMPLE-OUTER-MCS can be solved in polynomial time.
Proof. First we consider the correctness of the algorithm S i m p l e O u t e r M C S ( G 1 , G 2 ) . The crucial points of the algorithm are that it examines all possible combinations of the neighbors via alignments examined in S i m p l e O u t e r M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) for each pair of cut vertices ( u , v ) and via alignments examined in S i m p l e O u t e r M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) for each pair of cut pairs ( ( u , u ) , ( v , v ) ) , where the connectedness in the latter case is taken care of by the use of l ( u i , v j ) and r ( u i , v j ) . It should be noted that non-neighbors of u cannot be neighbors of a node corresponding to u in MCS, and the ordering of neighbors must be preserved by Fact 1. Therefore, examination of all alignments covers all valid combinations of neighbors. Based on these facts, it is straightforward to see that S i m p l e O u t e r M C S ( G 1 , G 2 ) correctly computes the size of MCS.
Next, we consider the time complexity. Since we examine O ( n 2 ) possible root pairs, we focus on the case where the roots are fixed, where n is the maximum number of vertices in G 1 and G 2 .
Although S i m p l e O u t e r M C S ( G 1 , G 2 ) is described as a recursive algorithm, the numbers of required scores of M C S ( G 1 ( u ) , G 2 ( v ) ) , M C S ( G 1 ( u , C ) , G 2 ( v , D ) ) and M C S ( G 1 ( u , u ) , G 2 ( v , v ) ) are O ( n 2 ) , O ( n 2 ) and O ( n 4 ) , respectively. Therefore, by storing these values in some tables, we can transform S i m p l e O u t e r M C S ( G 1 , G 2 ) into a dynamic programming algorithm.
Computation of M C S ( G 1 ( u ) , G 2 ( v ) ) can be done in O ( n 3 ) time per call, because a maximum weight bipartite matching can be computed in O ( n 3 ) time [22]. Using the dynamic programming version, the computation of each of M C S ( G 1 ( u , C ) , G 2 ( v , D ) ) and M C S ( G 1 ( u , u ) , G 2 ( v , v ) ) can be done in O ( h 2 k 2 ) O ( n 4 ) time per call.
Therefore, the total time complexity is O ( n 2 ) × ( O ( n 2 ) × O ( n 3 ) + O ( n 2 ) × O ( n 4 ) + O ( n 4 ) × O ( n 4 ) ) = O ( n 10 ) .  ☐
Though it might be possible to substantially reduce the degree of polynomial by some simplification, as done in [11], we do not go further, because our main purpose is to present a polynomial-time algorithm for the non-restricted (but bounded degree) case.

4. Algorithm for Outerplanar Graphs of Bounded Degree

In order to extend the algorithm in Section 3 for a general (but bounded degree) case, we need to consider the decomposition of biconnected components. For example, consider graphs G 1 and G 2 in Figure 5. We can see that in order to obtain a maximum common subgraph, biconnected components in G 1 and G 2 should be decomposed, as shown in Figure 5, where there can be multiple ways of optimal decompositions in general. This is the crucial point, because considering all possible decompositions easily leads to exponential-time algorithms. In order to characterize decomposed components, we introduce the concept of a blade, as shown below (see also Figure 6).
Suppose that v i 1 , , v i k are the vertices of a half block arranged in this order, and v i 1 and v i k are respectively connected to v and v , where v and v can be the same vertex. If we cut one edge, { v i h , v i h + 1 } for i h { 2 , 3 , . . . , k - 2 } , we obtain two half blocks, one induced by v i 1 , v i 2 , , v i h and the other induced by v i k , v i k - 1 , , v i h + 1 . However, only one half block is obtained in the case of i 1 = i h or i k = i h + 1 , and no half block is obtained in the case of k = 2 (see Figure 7). Each of these half blocks is a chain of biconnected components called a blade body, and a subgraph consisting of a blade body and its descendants is called a blade. Vertices v i 1 and v i k , an edge { v i h , v i h + 1 } and vertices v i h , v i h + 1 are called base vertices, a tip edge and tip vertices, respectively. The sequence of edges in the shortest path from v i 1 to v i h (resp. from v i k to v i h + 1 ) is called the backbone of a blade. As a result, the edges between two blades are deleted (it does not cause a problem, because all possible configurations are examined, as discussed later). In addition, there exists three subcases, depending on the existence of edges { v i 1 , v i k } and { v , v i 1 } (cases with { v , v i k } can be handled in an analogous way). We need not consider the case where { v , v i 1 } is deleted, but { v i 1 , v i k } remains, because deletion of { v , v i 1 } can be handled in the computation of M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) ):
  • both { v i 1 , v i k } and { v , v i 1 } are deleted
  • { v i 1 , v i k } is deleted, but { v , v i 1 } remains
  • both { v i 1 , v i k } and { v , v i 1 } remain
where these three cases are respectively denoted by “deletion of e”, “deletion of e ¯ ” and “deletion of e ^ ” (see Figure 7). It is to be noted that, in any case, we cannot have multiple tip edges simultaneously for the same pair, ( v , v ) , because disconnected component(s) would appear if multiple tip edges exist.
Figure 5. Example of a difficult case.
Figure 5. Example of a difficult case.
Algorithms 06 00119 g005
Figure 6. (A) Construction of blades where subgraphs, excluding gray regions (descendant components), are blade bodies; and (B) schematic illustration of a blade.
Figure 6. (A) Construction of blades where subgraphs, excluding gray regions (descendant components), are blade bodies; and (B) schematic illustration of a blade.
Algorithms 06 00119 g006
Figure 7. Types and subcases of blades, where two other subcases for (ii) and another subcase (i.e., { v , v i 1 } remains) for (iii) and (iv) are omitted.
Figure 7. Types and subcases of blades, where two other subcases for (ii) and another subcase (i.e., { v , v i 1 } remains) for (iii) and (iv) are omitted.
Algorithms 06 00119 g007
In addition, we allow { v , v i 1 } (resp. { v , v i k } ) to be a tip edge. In this case, after removing this tip edge, the resulting half block induced by v i k , , v i 2 , v i 1 (resp. ( v i 1 , v i 2 , , v i k ) ) is a blade body, where v i k (resp. v i 1 ) becomes the base vertex. For example, the rightmost blade in Figure 8 is created by removing a tip edge { u , u 5 } and u 4 becomes the base vertex.
Figure 8. Example of configuration and its resulting subgraph of G 1 ( u ) . Black circles, dark gray regions and thin dotted lines denote selected vertices, blades and removed edges, respectively. Block C 1 and edges e 1 , e 2 are the children of u in G 1 ( u ) , where block H 1 is a child of e 1 , blocks H 2 , H 3 are children of C 1 and block H 4 is a child of e 2 . Edges, e a , e b , are tip edges, where { u , u 5 } is also regarded as a tip edge. Then, edge e 1 is deleted along with block H 1 , whereas edge e 2 remains as it is. Block C 1 is divided into block C 1 , blades B 1 , , B 5 and edge e 1 , where blocks, H 2 , H 3 , and blades, B 1 , B 2 , B 3 , are children of C 1 and blades, B 4 , B 5 , are children of e 1 . In the resulting subgraph, block, C 1 , and edges, e 1 , e 2 , are the children of u.
Figure 8. Example of configuration and its resulting subgraph of G 1 ( u ) . Black circles, dark gray regions and thin dotted lines denote selected vertices, blades and removed edges, respectively. Block C 1 and edges e 1 , e 2 are the children of u in G 1 ( u ) , where block H 1 is a child of e 1 , blocks H 2 , H 3 are children of C 1 and block H 4 is a child of e 2 . Edges, e a , e b , are tip edges, where { u , u 5 } is also regarded as a tip edge. Then, edge e 1 is deleted along with block H 1 , whereas edge e 2 remains as it is. Block C 1 is divided into block C 1 , blades B 1 , , B 5 and edge e 1 , where blocks, H 2 , H 3 , and blades, B 1 , B 2 , B 3 , are children of C 1 and blades, B 4 , B 5 , are children of e 1 . In the resulting subgraph, block, C 1 , and edges, e 1 , e 2 , are the children of u.
Algorithms 06 00119 g008
Since a blade can be specified by a pair of base and tip vertices and an orientation (clockwise or counterclockwise), there exist O ( n 2 ) blades in G 1 and G 2 . Of course, we need to consider the possibility that during the execution of the algorithm, other subgraphs may appear from which new blades are created. However, we will show later that blades appearing in the algorithm are restricted to be those in G 1 and G 2 .

4.1. Description of Algorithm

In this subsection, we describe the algorithm as a recursive procedure, which can be transformed into a dynamic programming one, as stated in Section 3.
The main procedure, O u t e r M C S ( G 1 , G 2 ) is the same as that mentioned in Section 3, and we recursively compute three kinds of scores: M C S c ( G 1 ( u ) , G 2 ( v ) ) , M C S b ( G 1 ( u , C ) , G 2 ( v , D ) ) and M C S p ( G 1 ( u , u ) , G 2 ( v , v ) ) , where cut vertices, cut pairs, blocks and bridges do not necessarily mean those in the original graphs, but may mean those in subgraphs generated by the algorithm.
Computation of M C S c ( G 1 ( u ) , G 2 ( v ) )
Let C 1 , , C h 1 and e 1 , , e h 2 be children of u, where C i ’s and e j ’s are blocks and bridges, respectively. Let u i 1 , , u i h be the neighboring vertices of u that are contained in the children of u. We define a configuration as a tuple of the following (see Figure 8).
s ( u i j ) { 0 , 1 } for j = 1 , , k :
s ( u i j ) = 1 means that u i j is selected as a neighbor of u in a common subgraph, otherwise s ( u i j ) = 0 . u i j is called a selected vertex if s ( u i j ) = 1 .
t i p ( u i j , u i k ) :
e = t i p ( u i j , u i k ) is an edge in B ( u i j , u i k ) , where B is the block containing u i j , u i k and u. This edge is defined only for a consecutive selected vertex pair, u i j and u i k , in the same block (i.e., B ( u i j , u i k ) does not contain any other selected vertex). e is used as a tip edge, where e can be empty, which means that we do not cut any edge in B ( u i j , u i k ) . It is to be noted that, at most, one edge in B ( u i j , u i k ) can be a tip edge, and thus, each B ( u i j , u i k ) is divided into, at most, two blade bodies; further decomposition will be done in later steps. We also consider e ¯ and e ^ for e = t i p ( u i j , u i k ) whenever available.
Each configuration defines a subgraph of G 1 ( u ) as follows:
  • e i = { u i j , u } ( i { 1 , , h 2 } ) remains if s ( u i j ) = 1 . Otherwise, e i is removed along with its descendants.
  • If no vertex in C i is selected, it is removed along with its descendants. Otherwise, C i is divided into blocks, blade bodies (according to s ( ) ’s and t i p ( ) ’s) and bridges, where edges, { u i j , u } with s ( u i j ) = 0 , are removed.
Let C 1 , , C p 1 and e 1 , , e p 2 be the resulting blocks and bridges containing u, which are new `children’ of u, for a configuration, F 1 . Configurations are defined for G 2 ( v ) in an analogous way. Let D 1 , , D q 1 and f 1 , , f q 2 be the resulting new children of v for a configuration F 2 of G 2 . As stated in Section 3, we construct a bipartite graph B G F 1 , F 2 by
w ( C i , f j ) = 0 w ( C i , D j ) = M C S b ( G 1 ( u , C i ) , G 2 ( v , D j ) ) w ( e i , D j ) = 0 w ( e i , f j ) = M C S b ( G 1 ( u , e i ) , G 2 ( v , f j ) )
and we compute the weight of the maximum weight matching for each configuration pair ( F 1 , F 2 ) ( although a bridge cannot be mapped on a block here, a bridge can be mapped to an edge in a block of an input graph by converting the block into smaller blocks and bridges using tip edge(s)). The following is a procedure for computing M C S c ( G 1 ( u ) , G 2 ( v ) ) :
Procedure O u t e r M C S c ( G 1 ( u ) , G 2 ( v ) )
s max 0 ;
for all configurations F 1 for G 1 ( u ) do
  for all configurations F 2 for G 2 ( v ) do
    s weight of the maximum weight matching of B G F 1 , F 2 ;
   if s > s max then s max s ;
return s max .
Computation of M C S b ( G 1 ( u , C ) , G 2 ( v , D ) )
This score can be computed, as stated in Section 3, although we should take blades into account. In this case, we can directly examine all possible alignments, because the number of neighbors of u or v is bounded by a constant, and we need to examine a constant number of alignments.
Computation of M C S p ( G 1 ( u , u ) , G 2 ( v , v ) )
As in O u t e r M C S c ( G 1 ( u ) , G 2 ( v ) ) , we examine all possible configurations by specifying selected vertices and tip edges (see Figure 9). Each configuration defines a subgraph of G 1 ( u , u ) (resp. G 2 ( v , v ) ). This subgraph contains three kinds of biconnected components:
(i)
components connecting only to u (resp. v)
(ii)
components connecting only to u (resp. v ) and
(iii)
component connecting to both u and u (resp. v and v ), where this type (iii) component is uniquely determined.
Figure 9. Example of configuration and its resulting subgraph for G 1 ( u , u ) . Black circles, dark gray regions and thin dotted lines denote selected vertices, blade, and removed edges, respectively. Edges, e a , e b , are tip edges, where { u , u } is also regarded as a tip edge. In the resulting subgraph, C 1 is a type (i) component, e 1 and e 2 are type (ii) components and C 0 ( u , u ) is a type (iii) component.
Figure 9. Example of configuration and its resulting subgraph for G 1 ( u , u ) . Black circles, dark gray regions and thin dotted lines denote selected vertices, blade, and removed edges, respectively. Edges, e a , e b , are tip edges, where { u , u } is also regarded as a tip edge. In the resulting subgraph, C 1 is a type (i) component, e 1 and e 2 are type (ii) components and C 0 ( u , u ) is a type (iii) component.
Algorithms 06 00119 g009
For each of type (i) and type (ii) components, we construct a bipartite graph, as in O u t e r M C S ( G 1 ( u ) , G 2 ( v ) ) , although blades might appear in the recursive process. Let the resulting bipartite graphs be B G F 1 , F 2 l and B G F 1 , F 2 r , respectively. Let C 0 ( u , u ) and D 0 ( v , v ) be type (iii) components (i.e., half blocks) for G 1 ( u , u ) and G 2 ( v , v ) , respectively. For this pair of components, we compute a maximum common subgraph, as in S i m p l e O u t e r M C S ( G 1 ( u , u ) , G 2 ( v , v ) ) . The following is a pseudocode of O u t e r M C S ( G 1 ( u , u ) , G 2 ( v , v ) ) :
Procedure O u t e r M C S ( G 1 ( u , u ) , G 2 ( v , v ) )
s max 0 ;
for all configurations F 1 for G 1 ( u , u ) do
  for all configurations F 2 for G 2 ( v , v ) do
    s score of the maximum common subgraph between C 0 ( u , u ) and D 0 ( v , v ) ;
    s s + weight of the maximum weight matching of B G F 1 , F 2 l ;
    s s + weight of the maximum weight matching of B G F 1 , F 2 r ;
   if s > s max then s max s ;
return s max .

4.2. Analysis

As mentioned before, each blade is specified by base and tip vertices in G 1 or G 2 and an orientation. Each half block is also specified by two vertices in a block in G 1 or G 2 . We show that this property is maintained throughout the execution of the algorithm and bound to the number of half blocks and blades, as below.
Lemma 1 The number of different half blocks and blades appearing in O u t e r M C S ( G 1 , G 2 ) is O ( n 2 ) .
Proof. We prove it by mathematical induction on the number of steps in the execution of the algorithm. At the beginning of the algorithm, this property is trivially maintained, because we only have G 1 and G 2 . A new half block (along with its descendants) or a new blade is created only when graphs are modified according to a configuration or alignment. In the alignment case, it is straightforward to see that new half blocks are half blocks of the current block or current half block. It can also be seen that whenever a blade is newly created, it is a half block (along with descendants) of the current block or current half block. The crucial cases lie when an existing blade is modified according to a configuration. Let u and { u , w } be the base vertex and a backbone edge in a blade B D , respectively. Let C 0 be the block in G 1 (resp. G 2 ) from which B D was created. Then, we need to consider the following three cases (Figure 10) ( new blades may also be created by a tip edge in a half block specified by a pair of selected vertices):
(a)
w is not selected.
The base vertex of a new blade is the selected vertex nearest to w in the first block (i.e., block containing u) of B D . Since the original blade body was a half block of a block C 0 , the resulting blade body is also a half block of C 0 .
(b)
w is selected, and there is no tip edge between w and its nearest selected vertex.
The resulting blade body begins from w (in the next step), which is a half block of C 0 .
(c)
w is selected, and there is a tip edge between w and its nearest selected vertex.
The resulting blade body begins from w, which is a half block of C 0 . Furthermore, two (or less) new blade bodies are created, both of which are half blocks of C 0 .
Therefore, we can see that every half block or blade appearing in the algorithm is specified by two vertices in a block of G 1 or G 2 , from which the lemma follows.  ☐
Figure 10. Three cases considered in the proof of Lemma 1. Bold lines and dark gray regions denote backbone edges and new blade bodies, respectively.
Figure 10. Three cases considered in the proof of Lemma 1. Bold lines and dark gray regions denote backbone edges and new blade bodies, respectively.
Algorithms 06 00119 g010
Finally, we obtain the following theorem.
Theorem 2 A maximum common connected edge subgraph of two outerplanar graphs of bounded degree can be computed in polynomial-time.
Proof. It is straightforward to check the correctness of the algorithm, because it implicitly examines all possible common subgraphs via alignment, decomposition by configurations and bipartite matching, where Fact 1 enables us to use alignment and dynamic programming. Therefore, we focus on the time complexity.
Since the number of half blocks and blades is O ( n 2 ) and the maximum degree is bounded, the number of different G 1 ( u ) ’s and G 1 ( u , u ) ’s (resp. G 2 ( v ) ’s and G 2 ( v , v ) ’s) appearing in the algorithm, some of which can be obtained from subgraphs of G 1 (resp. G 2 ), is O ( n 3 ) , where an additional O ( n ) factor comes from the fact that O ( n ) new blocks and bridges may be created per blade. Therefore, we can transform the recursive algorithm into a dynamic programming algorithm using O ( n 3 ) × O ( n 3 ) = O ( n 6 ) size tables.
For each subgraph appearing in O u t e r M C S ( G 1 ( u ) , G 2 ( v ) ) or O u t e r M C S ( G 1 ( u , u ) , G 2 ( v , v ) ) as an argument, the number of configurations is O ( n 2 D - 3 ) , because there exists at most 2 D - 2 neighboring vertices (excluding those nearer to the root) of u and u (resp. v and v ) for a constant, D, ( D > 2 ) and a tip edge lies between a path connecting two neighboring vertices. For some block pair, we need to examine all possible alignments. Since the maximum degree is bounded by constant, D, we need to examine a constant number of alignments, and thus, this calculation can be done in constant time. By the same reason, a maximum matching can be computed in constant time. All other miscellaneous operations, which include modification of edges and summation of scores, can be performed in O ( n 2 ) time per pair of configurations, pair of biconnected components and pair of half blocks. Since we need to examine O ( n 2 ) pairs of the roots, the total computation time is:
O ( n 2 ) × O ( n 6 ) × O ( n 2 D - 3 ) × O ( n 2 D - 3 ) × O ( n 2 ) = O ( n 4 D + 4 )
for a constant, D (a constant factor depending only on D is ignored here, because we assume that D is a constant).  ☐

5. Concluding Remarks

We have presented a polynomial-time algorithm for the maximum common connected edge subgraph problem for outerplanar graphs of bounded degree. However, it is not practically efficient. Therefore, development of a much faster algorithm is left as an open problem. Although the proposed algorithm might be modified for outputting all maximum common subgraphs, it would not be an output-polynomial-time algorithm. Therefore, such an algorithm should also be developed.
Recently, it has been shown that the maximum common connected edge subgraph problem is NP-hard, even for partial k-trees of a bounded degree, where k = 11 [23]. Since outerplanar graphs have treewidth 2 and most chemical compounds have a treewidth of at most 3 [10,18], to decide whether the problem for partial k-trees is NP-hard for k = 3 is left as an interesting open problem.

Acknowledgments

Tatsuya Akutsu was partly supported by JSPS, Japan (Grants-in-Aid 22240009 and 22650045). Takeyuki Tamura was partly supported by JSPS, Japan (Grant-in-Aid for Young Scientists (B) 23700017).

References

  1. Conte, D.; Foggia, P.; Sansone, C.; Vento, M. Thirty years of graph matching in pattern recognition. Int. J. Pattern Recognit. Artif. Intell. 2004, 18, 265–298. [Google Scholar] [CrossRef]
  2. Shearer, K.; Bunke, H.; Venkatesh, S. Video indexing and similarity retrieval by largest common subgraph detection using decision trees. Pattern Recognit. 2001, 34, 1075–1091. [Google Scholar] [CrossRef]
  3. Raymond, J.W.; Willett, P. Maximum common subgraph isomorphism algorithms for the matching of chemical structures. J. Comput. Aided Mol. Des. 2002, 16, 521–533. [Google Scholar] [CrossRef] [PubMed]
  4. Hans-Christian Ehrlich, H-C.; Rarey, M. Maximum common subgraph isomorphism algorithms and their applications in molecular science: A review. WIREs Comput. Mol. Sci. 2011, 1, 68–79. [Google Scholar]
  5. Abu-Khzam, F.N.; Samatova, N.F.; Rizk, M.A.; Langston, M.A. The Maximum Common Subgraph Problem: Faster Solutions via Vertex Cover. In Proceedings of the 2007 IEEE/ACS International Conference Computer Systems and Applications, IEEE; Piscataway, NJ, USA, 2007; pp. 367–373. [Google Scholar]
  6. Huang, X.; Lai, J.; Jennings, S.F. Maximum common subgraph: Some upper bound and lower bound results. BMC Bioinforma. 2006, 7 (Suppl. 4), S6:1–S6:9. [Google Scholar] [CrossRef] [PubMed]
  7. Kann, V. On the Approximability of the Maximum Common Subgraph Problem. In Proceedings of the 9th Symposium Theoretical Aspects of Computer Science; Springer: Heidelberg, Germany, 1992; Volume 577, pp. 377–388. [Google Scholar]
  8. Garey, M.R.; Johnson, D.S. Computers and Intractability; Freeman: New York, NY, USA, 1979. [Google Scholar]
  9. Akutsu, T. A polynomial time algorithm for finding a largest common subgraph of almost trees of bounded degree. IEICE Trans. Fundam. 1993, E76-A, 1488–1493. [Google Scholar]
  10. Yamaguchi, A.; Aoki, K.F.; Mamitsuka, H. Finding the maximum common subgraph of a partial k-tree and a graph with a polynomially bounded number of spanning trees. Inf. Proc. Lett. 2004, 92, 57–63. [Google Scholar] [CrossRef]
  11. Schietgat, L.; Ramon, J.; Bruynooghe, M. A Polynomial-Time Metric for Outerplanar Graphs. In Proceedings of the Workshop on Mining and Learning with Graphs, Firenze, Italy, 1 August 2007.
  12. Bachl, S.; Brandenburg, F-J.; Gmach, D. Computing and drawing isomorphic subgraphs. J. Graph Algorithms Appl. 2004, 8, 215–238. [Google Scholar] [CrossRef]
  13. Lingas, A. Subgraph isomorphism for biconnected outerplanar graphs in cubic time. Theoret. Comput. Sci. 1989, 63, 295–302. [Google Scholar] [CrossRef]
  14. Syslo, M.M. The subgraph isomorphism problem for outerplanar graphs. Theoret. Comput. Sci. 1982, 17, 91–97. [Google Scholar] [CrossRef]
  15. Dessmark, A.; Lingas, A.; Proskurowski, A. Faster algorithms for subgraph isomorphism of k-connected partial k-trees. Algorithmica 2000, 27, 337–347. [Google Scholar] [CrossRef]
  16. Hajiaghayi, M.; Nishimura, N. Subgraph isomorphism, log-bounded fragmentation, and graphs of (locally) bounded treewidth. J. Comput. Syst. Sci. 2007, 73, 755–768. [Google Scholar] [CrossRef]
  17. Akutsu, T.; Tamura, T. A Polynomial-Time Algorithm for Computing the Maximum Common Subgraph of Outerplanar Graphs of Bounded Degree. In Proceedings of the 37th International Symposium on Mathematical Foundations of Computer Science; Springer: Heidelberg, Germany, 2012; Volume 7464, pp. 76–87. [Google Scholar]
  18. Horváth, T.; Ramon, J.; Wrobel, S. Frequent Subgraph Mining in Outerplanar Graphs. In Proceedings of the 12th ACM SIGKDD Int. Conf. Knowledge Discovery and Data Mining; ACM: New York, NY, USA, 2006; pp. 197–206. [Google Scholar]
  19. Akutsu, T. An RNC algorithm for finding a largest common subtree of two trees. IEICE Trans. Inf. Syst. 1992, E75-D, 95–101. [Google Scholar]
  20. Syslo, M.M. Characterizations of outerplanar graphs. Disc. Math. 1979, 26, 47–53. [Google Scholar] [CrossRef]
  21. Chartrand, G.; Lesniak, L.; Zhang, P. Graphs and Digraphs, Fifth Edition; Chapman and Hall/CRC: Boca Raton, FL, USA, 2010. [Google Scholar]
  22. Cormen, T.H.; Leiserson, C.E.; Rivest, R.L.; Stein, C. Introduction to Algorithms, Third Edition; The MIT Press: Cambridge, MA, USA, 2009. [Google Scholar]
  23. Akutsu, T.; Tamura, T. On the Complexity of the Maximum Common Subgraph Problem for Partial k-trees of Bounded Degree. In Proceedings of the 23rd International Symposium Algorithms and Computation; Springer: Heidelberg, Germany, 2012; Volume 7676, pp. 146–155. [Google Scholar]
Back to TopTop