Az összehasonlító rendezések 0. alaptétele (magyarázat) LL
Állítás: Egy összehasonlító rendezés maximális összehasonlítás-száma n elemű input esetén legalább log2(n!).
Bizonyítás
I. Az állítás belátásához egy összehasonlító rendezés döntési fáját kell vizsgálnunk. Mi is az a döntési fa? Az összehasonlító rendező algoritmus futása során össehasonlításokat végez, mindig két elemet hasonlít össze egymással. Az összehasonlítás eredménye kétféle lehet: A > B vagy A < B. (Feltéve ugyebár, hogy csupa különböző elemeket rendezünk.) Az eredmények alapján felépíthetünk egy bináris fát, melynek csúcsaiba a kérdéseket (miket hasonlítunk össze), leveleibe a végeredményt (a rendezett sorozatot) írhatjuk.
Példa: Buborék rendezés döntési fája 3 elemre (Ismételd át hogyan is működik az.) Rendezendő: A B C Buborék: A és B összehasonlítása, majd ha A nagyobb, akkor csere… A ? B A > B B > A
Lejátszva a teljes rendezést, a következő döntési fát kapjuk Lejátszva a teljes rendezést, a következő döntési fát kapjuk. (Levelekben a rendezett sorozat) (Kékkel a sorozat aktuális állapota) A ? B B ? C A ? C B ? A A < B A > B B < C B > C A < C A > C ABC BAC ACB BCA CAB CBA B < A
Vegyük észre, hogy a nyilazott helyeken a kapott válasz már egyértelmű, hiszen ugyanazt a kérdést tettük fel immár másodszor. Ezt a kérdést el is hagyhatnánk, így kapnánk az „okosított” buborék rendező algoritmust. („okosított”, mert nem kérdezi meg ugyanazt kétszer.) ABC A ? B B ? C A ? C B ? A A < B A > B B < C B > C A < C A > C ABC BAC ACB BCA CAB CBA B < A
Az „okosított” buborék rendezés döntési fája 3 elem esetén: A ? B B ? C A ? C A < B A > B B < C B > C A < C A > C ABC BAC ACB BCA CAB CBA
II. Minket most a rendezés maximális összehasonlítás-száma és az input mérete közötti kapcsolat érdekel. h A maximális összehasonlítás-szám a döntési fa magassága. (Azaz hogy hány kérdést tettünk fel: hány összehasonlítást végeztünk a legrosszabb esetben.) Jelöljük h-val. (Itt h=3)
Az input mérete pedig a következőképpen érzékelhető a döntési fán. Az n elemet n!-képpen lehet különbőző módon sorbarendezni, és bármelyik sorrend esetén algoritmusunk-nak helyes választ kell adnia: kell lennie legalább egy, azt a sorrendet tartalmazó levélnek. (Ugyanazt az eredményt több összehasonlítás-sorozat után is adhatja.) levelek Esetünkben 3!=6, és pont ennyi levél is van.
Könnyen látható, hogy egy h magasságú bináris fának legfeljebb 2h levele van. (Egy teljesnek pont 2h) Most már érezhetjük az összefüggést: A döntési fának legalább annyi levele kell, hogy legyen, hogy az input összes lehetséges permutációja elférjen rajtuk.
levélszám ≥ permutációk száma Most már érezhetjük az összefüggést: A döntési fának legalább annyi levele kell, hogy legyen, hogy az input összes lehetséges permutációja elférjen rajtuk. Tehát: levélszám ≥ permutációk száma 2h ≥ n! log22h ≥ log2(n!) h ≥ log2(n!) Vagyis: Egy összehasonlító rendezés maximális összehasonlítás-száma n elemű input esetén legalább log2(n!). Az állítást ezzel beláttuk.
Minimális összehasonlítás-szám különböző n-ekre: Kiegészítés Minimális összehasonlítás-szám különböző n-ekre: n l := log2(n!) [l] + 1 (ennél nagyobb-egyenlő h) 1 1 2,5850 3 4,5850 5 6,9069 7 9,4919 10 21,7911 22 61,0774 62 … Már láttuk, hogy 3 elemet lehet rendezni 3 összehasonlítással. Érdemes elgondolkodni azon, hogy hogyan tudunk 4 elemet 5, illetve 5 elemet 7 összehasonlítással rendezni. 6 elem rendezéséhez viszont már 11 összehasonlítás kell. (Ettől még az alsó becslés helytálló.)
vége Lócsi Levente 2005.03.10.