Entschuldigt die lange Wartezeit
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;
So etwas habe ich mir auch überlegt, allerdings habe ich da meinen Denkfehler gehabt. Ich war davon ausgegangen, dass für die Rekursion node.visited wieder auf false gesetzt werden muss
ich weiß nicht wie ich auf die Idee gekommen bin..
@Threadstarter - es gibt da eine Unklarheit:
Willst du alle Zyklen die einen bestimmten Knoten (A) enthalten oder willst du alle Zyklen, wo kein Element eines Zyklus' in einem anderen Zyklus vorkommt?!
Ich bin mir nicht ganz sicher, aber die Implementierung dürfte je nach dem anders aussehen. Bevor ich mir also Gedanken mache, wäre es schön, wenn du das klärst!
Wenn ich dich richtig verstanden habe, dann will ich keins von beiden. Ich möchte lediglich alle Zyklen ermitteln, die über mehr als 3 Kanten gehen.
Da ich grad Zeit habe, habe ich das mal schnell gezeichnet
Vielen lieben Dank euch dreien für die (wie immer) schnellen Antworten. Und Entschuldigung meinerseits, für die Verzögerung