Warteschange Q

Neue Frage »

Auf diesen Beitrag antworten »
evinda 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? :-?
 
Auf diesen Beitrag antworten »
Karlito 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
Auf diesen Beitrag antworten »
evinda RE: Warteschange Q

Ok!!! Vielen Dank!!!! Daumen hoch
 
Neue Frage »
Antworten »


Verwandte Themen