![]() |
suche hilfe für Graphentheorie mit BFS
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:
für eine antwort wäre ich dankbar
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. mfg cLd aka sören hinz [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: BFS
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 :-D |
Re: suche hilfe für Graphentheorie mit BFS
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: ![]() |
Re: suche hilfe für Graphentheorie mit BFS
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 |
AW: suche hilfe für Graphentheorie mit BFS
Zitat:
ich versuch das mal zu übersetzen weil ich es gerade gut gebrauchen kann.
Delphi-Quellcode:
Weil es mir so noch nichts bringt, muss ich noch den WaitigContainer rausschmeißen und mit OpenContainer und CloseContainer arbeiten....
//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 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 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