11.08.2013 Aufrufe

Krawattenrätsel - Verbesserung der oberen Schranke - Freie ...

Krawattenrätsel - Verbesserung der oberen Schranke - Freie ...

Krawattenrätsel - Verbesserung der oberen Schranke - Freie ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Algorithm 1 Krawattenlöser(n)<br />

1: if n == 1 then<br />

2: return<br />

3: end if<br />

4: Tausche 0 u −→ n − 1<br />

5: Call invert(n − 1)<br />

Algorithm 2 invert(k) für gerade k<br />

1: Tausche (0, o) ↔ (1, u)<br />

2: Tausche 1 u −→ k − 1<br />

3: Tausche (k − 1, u) ↔ (k, o)<br />

4: for j = 1 to k/2 − 1 do<br />

5: Tausche (j, o) ↔ (j + 1, u)<br />

6: Tausche j + 1 u −→ k − j<br />

7: end for<br />

8: flip(0, k − 1)<br />

9: Call invert(k/2)<br />

10: flip(0, k/2)<br />

11: for j = 0 to k/2 − 2 do<br />

12: Tausche k/2 − j u −→ k − 1 − 2j<br />

13: Tausche (k/2 − j − 1, o) ↔ (k/2 − j, u)<br />

14: Tausche k/2 − j u −→ k − 2 − 2j<br />

15: end for<br />

Algorithm 3 invert(k) für ungerade k<br />

1: if k == 1 then<br />

2: Tausche (0, o) ↔ (1, o)<br />

3: return<br />

4: end if<br />

5: Tausche (0, o) ↔ (1, u)<br />

6: Tausche 1 u −→ k − 1<br />

7: Tausche (k − 1, u) ↔ (k, o)<br />

8: for j = 1 to (k − 1)/2 do<br />

9: Tausche (j, o) ↔ (j + 1, u)<br />

10: Tausche j + 1 u −→ k − j<br />

11: end for<br />

12: flip(0, k − 1)<br />

13: Call invert((k − 1)/2)<br />

14: for j = 0 to (k − 3)/2 do<br />

15: Tausche ((k − 1)/2 − j, o) ↔ ((k − 1)/2 − j + 1, u)<br />

16: Tausche (k − 1)/2 − j + 1 u −→ k − 1 − 2j<br />

17: Tausche (k − 1)/2 − j − 1 u −→ k − 2 − 2j<br />

18: end for<br />

19: flip(0, 0)<br />

2

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!