Rangierbahnhof < Datenstrukturen < Schule < Informatik < Vorhilfe
 
 
   | 
  
 
  
   
    
     
	   | Status: | 
	   		           				(Frage) beantwortet    |    | Datum: |  15:21 Di 14.04.2009 |    | Autor: |  lisa11 |   
	   
	  
 | Aufgabe |   Aufgabe siehe 
 
[Dateianhang nicht öffentlich]  |   
 
Mein Ansatz
 
 
algorithm bahnhof (L;G;H:list):list
 
 
if isEmpty(L) then return G
 
else if isEmpty(L) then return G
 
else if isempty(G) then return H
 
while(n<2n) do
 
if top(G) = A goto next(G)
 
if next(G) = B then
 
push(next(G),top(H)) goto next(H)
 
while (n<2n) do
 
if next(H) = A
 
push(next(H),top(G))
 
else goto next(H)
 
 
 
kann der Algorithmus stimmen?
 
 
 
 
 Dateianhänge: Anhang Nr. 1 (Typ: JPG) [nicht öffentlich] Anhang Nr. 2 (Typ: png) [nicht öffentlich]
  
      | 
     
    
   | 
  
 |          | 
 
 
   | 
  
 
  
   
    
     
	   | Status: | 
	   		           				(Mitteilung) Reaktion unnötig    |    | Datum: |  10:40 Mi 15.04.2009 |    | Autor: |  lisa11 |   
	   
	   gibt es jemanden der sich das ansehen könnte?
 
 
      | 
     
    
   | 
  
 
 |   
|          | 
 
 
   | 
  
 
  
   
    
     
	  
	   Hallo Lisa,
 
 
vielleicht durchschaue ich ja nur die Struktur Deines Pseudocodes nicht, aber so scheint mir der Algorithmus nicht zu funktionieren:
 
 
> algorithm bahnhof (L;G;H:list):list
 
>  
 
> if isEmpty(L) then return G
 
>  else if isEmpty(L) then return G was will diese Zeile?
 
>  else if isempty(G) then return H
 
>  while(n<2n) do Schleifenbedingung?
 
>  if top(G) = A goto next(G)
 
>  if next(G) = B then
 
>  push(next(G),top(H)) goto next(H)
 
>  while (n<2n) do Schleifenbedingung?
 
>  if next(H) = A
 
>  push(next(H),top(G))
 
>  else goto next(H)
 
 
Ich würde das ganz anders stricken. Allerdings fragt sich noch, ob die gleichzeitige Bewegung von n gleichen Waggons als eine Bewegung zählt (was bei Zügen sicher so wäre) oder aber als n Bewegungen (was bei Stackoperationen eher wahrscheinlich ist).
 
 
1) die auf G stehenden Wagen nacheinander sortieren - alle A nach H, alle B nach I.
 
2) die auf H stehenden Wagen sortieren - alle A nach G, alle B nach I.
 
3) die auf I stehenden Wagen nach H verschieben.
 
 
Wenn [mm] g_A [/mm] die für A bestimmten Waggons auf G sind und [mm] g_B, h_A, h_B [/mm] entsprechend die für B bzw. A bestimmten Waggons auf G bzw. H, dann gilt:
 
 
[mm] n=g_A+g_B+h_A+h_B
 [/mm] 
 
Der Algorithmus braucht genau [mm] 2n-h_A [/mm] Züge, wenn die Waggons einzeln bewegt werden, und höchstens n+2 Züge, wenn mehrere Waggons zusammen bewegt werden dürfen.
 
 
Grüße
 
reverend
 
 
      | 
     
    
   | 
  
 
 |   
  
   |