/home/coin/SVN-release/OS-2.0.0/Couenne/src/problem/depGraph/checkCycles.cpp

Go to the documentation of this file.
00001 /* $Id: checkCycles.cpp 154 2009-06-16 18:52:53Z pbelotti $ */
00002 /*
00003  * Name:    checkCycles.cpp
00004  * Author:  Pietro Belotti
00005  * Purpose: check for cycles in dependence graph
00006  *
00007  * (C) Carnegie-Mellon University, 2007. 
00008  * This file is licensed under the Common Public License (CPL)
00009  */
00010 
00011 #include "depGraph.hpp"
00012 
00013 //#define DEBUG
00014 
00016 
00017 bool DepGraph::checkCycles () {
00018 
00019   for (std::set <DepNode *, compNode>::iterator 
00020          i = vertices_.begin ();
00021        i  != vertices_.end   (); ++i) {
00022 
00023     int xi = (*i) -> Index ();
00024 
00025     std::set <DepNode *, compNode> *gen2 = (*i) -> DepList ();
00026 
00027     for (std::set <DepNode *, compNode>::iterator j = gen2 -> begin (); 
00028          j != gen2 -> end (); ++j) {
00029 
00030       std::set <DepNode *, compNode> already_visited;
00031 
00032       if ((*j) -> depends (xi, true, &already_visited)) {
00033 
00034 #ifdef DEBUG
00035         printf ("(%d -> %d) ", xi, (*j) -> Index ());
00036         fflush (stdout);
00037 #endif
00038 
00039         return true;
00040       }
00041       else already_visited.insert (*j);
00042     }
00043   }
00044 
00045   return false;
00046 }

Generated on Mon Aug 3 03:02:21 2009 by  doxygen 1.4.7