Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- Warteschange Q (http://www.informatikerboard.de/board/thread.php?threadid=1900)


Geschrieben von evinda am 26.08.2014 um 13:54:

  Warteschange Q

Hallo!!! Wink

Ich habe eine Frage über die Anwendung des folgenden Algorithmus bei einen Beispiel:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Breitensuche(G,s)

for each u !=  V \ {s}
     color[u]<-white
     d[u]<-oo
     p[u]<-Ø
color[s]<-gray
d[s]<-0
p[s]<-Ø
Q<-Ø // Q ist eine Warteschlange
Insert(Q,s)
while Q != Ø
       u<-Delete(Q)
       for each v e  Adj(u)
          if color[v]=white then
             color[v]<-gray
             d[v]=d[u]+1
             p[v]<-u
             Insert(Q,v)

       color[u]<-black


code:
1:
2:
3:
4:
5:
6:
7:
8:
Delete(Q)
x<-Q[head[Q]]
if head[Q]=length[Q] then
   head[Q]<-1
else
   head[Q]<-head[Q]+1
return x



Das Beispiel ist das folgende,s. breadth.png



Am Anfang ist es so,s. fi.png



und nach der ersten "for",ist es so,s. search.png



Ich habe nicht verstanden,warum man von Q das s löscht.

Mit der Anweisung u<-Delete(Q),bekommt u den Wert s, und in der Funktion ändert sich die Variable head[Q],beim Hauptprogramm,bleibt sie aber unverändert,oder nicht? :-?



Geschrieben von Karlito am 27.08.2014 um 06:18:

  RE: Warteschange Q

Hallo evinda,

Zitat:
Original von evinda
Mit der Anweisung u<-Delete(Q),bekommt u den Wert s, und in der Funktion ändert sich die Variable head[Q],beim Hauptprogramm,bleibt sie aber unverändert,oder nicht? :-?


Hier ist es so, dass die Queue manipuliert wird, so dass sie sich auch im Hauptprogramm ändert (alles Andere ergibt keinen Sinn).

Gruß,

Karlito



Geschrieben von evinda am 31.08.2014 um 00:02:

  RE: Warteschange Q

Ok!!! Vielen Dank!!!! Daumen hoch


Forensoftware: Burning Board, entwickelt von WoltLab GmbH