Führe eine Tiefensuche durch und markiere bereits besuchte Knoten.
Hier mal Pseudocode:
Delphi-Quellcode:
Procedure Cycle (Path : TPath; Graph : TGraph)
Begin
Foreach node in Graph.NeighborOf(Path.Last)
if (node=Path.First) and (Path.Length>MinLength) then
Show(Path+node)
else if Not node.visited then begin
node.visited := True;
Cylce(Path+node,Graph);
node.visited := False;
end
end;
Dabei wird jeder zyklische Pfad, der länger als 'MinLength' ist, ausgegeben (glaube ich).