AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi suche hilfe für Graphentheorie mit BFS
Thema durchsuchen
Ansicht
Themen-Optionen

suche hilfe für Graphentheorie mit BFS

Ein Thema von cLd · begonnen am 28. Apr 2004 · letzter Beitrag vom 14. Aug 2011
 
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.999 Beiträge
 
Delphi 12 Athens
 
#5

AW: suche hilfe für Graphentheorie mit BFS

  Alt 14. Aug 2011, 16:52
Eingabe: Ein Graph G=(V,E)
Ausgabe: Eine Nummerierung bfsnum : V ==> {1,...|V|}
Delphi-Quellcode:

   Forall v (element) V do bfsnum(v):=0;
   count:=1;
   queue:=0;
   while es ein v(element)V mit bfsnum(v)=0 exsitiert
     do begin
       wähle v(element)V mit bfsnum(v)=0;
       bfsnum(v):=count;
       inc(count);
       push(queue,v);
       while queue <>0
       do begin
   v:=pop(queue);
   forall w(element)N(v) mit bfsnum(w)=0
   do begin
          bfsnum(w):=count;
          inc(count);
          push(queue,w);
      end;
     end;
     end;
     end.
Danke...
ich versuch das mal zu übersetzen weil ich es gerade gut gebrauchen kann.



Delphi-Quellcode:
  //I will use containers instead of states, so "waiting" is the default
  WaitingContainer.LoadFromStream(graphStream); //Forall v (element) V do bfsnum(v):=0;
  //count:=1; // count:=1;
  //queue:=0; // queue:=0;

  while WaitingContainer.count > 0 do //while es ein v(element)V mit bfsnum(v)=0 exsitiert
  begin
                                                       //wähle v(element)V mit bfsnum(v)=0;
    SelectedNode := WaitingContainer[0];

    //Change node state top "open" //bfsnum(v):=count;
    WaitingContainer.delete(0);
    OpenContainer.Add(SelectedNode); //OpenContainer.count //inc(count);
 
    
    
    Queue.enqueue(SelectedNode); //push(queue,v);
    while Queue.count > 0 do //while queue <>0 do
    begin
      SelectedNode := Queue.Dequeue; //v:=pop(queue);
      for SelectedSubNode in SelectedNode.Nodes do //for w(element)N(v) mit bfsnum(w)=0 do
      begin
        i := WaitingContainer.indexOf(SelectedSubNode);
        if i > 0 then
        Begin
          WaitingContainer.delete(i); //bfsnum(w):=count;
          OpenContainer.Add(SelectedSubNode); //OpenContainer.count //inc(count);
          Queue.Enqueue(SelectedSubNode); //push(queue,w);
        end;
      end;
    end;
  end;
Weil es mir so noch nichts bringt, muss ich noch den WaitigContainer rausschmeißen und mit OpenContainer und CloseContainer arbeiten....

Weil ich ja unmöglich im voraus das gesammte Internet in den WaitingContainer laden kann...
Und mit nem OpenContainer und CloseContainer kann das dingen schon mal ne zeit lang arbeiten bevor dem Computer die Ressourcen ausgehen.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Aug 2011 um 17:13 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz