예제 #1
0
 private bool IsPlanar(Graph g)
 {
     Counter++;
     if (g.IsCompleteBipartite(3, 3) || g.IsComplete(5))
     {
         NonplanarSubgraph = g;
         return false;
     }
     if (g.Size == 5)
         return true;
     foreach (var edge in g.GetAllEdges())
     {
         var h = g.Shrink(edge.U, edge.V);
         var isPlanar = IsPlanar(h);
         if (!isPlanar)
         {
             ExtendNonplanarSubgraph(g, edge);
             return false;
         }
     }
     return true;
 }