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
Antwort Antwort
cLd

Registriert seit: 28. Apr 2004
Ort: kalkuttaaaa
3 Beiträge
 
#1

suche hilfe für Graphentheorie mit BFS

  Alt 28. Apr 2004, 14:58
hallo zusammen,
ich sitzte gerade in der schule und werde von meinem info lehrer gequält mit der aufgabenstellung eine BFS procedure zu schreiben mit deren hilfe ich den zusammenhang /bzw. den nichtzusammenhang eines Graphen überprüfen soll
ich habe a) keine ahung wie das gehen soll und
b) bin ich langasam am verzweifeln.
könnte mir bitte jemand sage wie das gehn soll?

als vorinformation haben wir folgendes bekommen:

Eingabe: Ein Graph G=(V,E)
Ausgabe: Eine Nummerierung bfsnum : V ==> {1,...|V|}
Delphi-Quellcode:
begin
   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.
für eine antwort wäre ich dankbar

mfg cLd aka sören hinz

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
jeder pc ist so gut wie der anwender....
.... meiner ist ein genie
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: BFS

  Alt 28. Apr 2004, 15:02
Hai cLd,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXIS".

Sei doch bitte so gut und ändere den Titel deines Threads (das geht über den Edit-Butten rechts oben).
Um so aussagekräftiger der Titel um so eher bekommst Du Antworten

Danke
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: suche hilfe für Graphentheorie mit BFS

  Alt 28. Apr 2004, 15:46
Du musst einfach wie Mr. Spock rein logisch und Schritt für Schritt vorgehen.
An deinem Pseudocode ist zu sehen, dass du einen Stack oder eine Queue brauchst (wg Push & Pop).
Also programmierst du dir zuerst eine Stack, Queue und/oder Double-ended-Queue Klasse
oder du bedienst dich im Internet:
easy data structures library for delphi
Andreas
  Mit Zitat antworten Zitat
cLd

Registriert seit: 28. Apr 2004
Ort: kalkuttaaaa
3 Beiträge
 
#4

Re: suche hilfe für Graphentheorie mit BFS

  Alt 28. Apr 2004, 16:26
den queue hab ich einzeln geproggt.... also ausgegliedert.
was ich nicht verstehe wie das programm hinterher laufen soll... bzw wie dieser quelltext zu interpretieren sein soll.

wenn mir jemand einen ansatz liefern könnte wäre ich dankbar

mfg cLd aka sören hinz
jeder pc ist so gut wie der anwender....
.... meiner ist ein genie
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: suche hilfe für Graphentheorie mit BFS

  Alt 14. Aug 2011, 17: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 18:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz