Krawattenrätsel - Verbesserung der oberen Schranke - Freie ...
Krawattenrätsel - Verbesserung der oberen Schranke - Freie ...
Krawattenrätsel - Verbesserung der oberen Schranke - Freie ...
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