Algo cycle de graph

Algo cycle de graph - Algo - Programmation

Marsh Posté le 29-05-2004 à 14:22:17    

Bonjour,
 
Je cherche un algo pour detecter les cycles (et retourner un pointeur sur le node ou le cycle commence) dans une liste. Le problème c'est de le faire avec une compléxité temps o(n) et en espace o(1).
C'est chaud mais les suggestions sont les bienvenues!


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 29-05-2004 à 14:22:17   

Reply

Marsh Posté le 29-05-2004 à 14:58:51    

si ca peus taider voila uen fonction qui detecte si il y a un cycle, su tu veus le reste des fichiers je te les envoi par mp.
 

Code :
  1. bool detectCycle()
  2. {
  3.       return detectCycleAux(getFirstNodeId(1);
  4. }
  5. bool detectCycleAux(int n)
  6. {
  7.       NodeIdList adjlist;
  8.       int numAdjMarked = 0;
  9.       bool found = false;
  10.       setnode(n).setMarked();
  11.       adjList = getNode(n).getAdj();
  12.       while (!found || adjList.empty())
  13.       {
  14.            if(!getnode(adjList.top()).isMarked())
  15.                 found = detectCycleAux(adjList.top())
  16.            else
  17.                 numAdjMarked++
  18.                 found = found || numAdjMarked > 1
  19.                 adjList.pop()
  20.           }
  21.   return found;
  22.   }


 
 
 
[/cpp]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed