« poprzedni punkt | następny punkt » |
W tym punkcie zbadamy ograniczenie dolne na liczbę porównań wykonywanych w procesie sortowania, w przypadku średnim. Zadanie polega na zbadaniu średniej długości ścieżki w drzewie decyzyjnym dla algorytmów sortujących przez porównywanie elementów.
Niech D będzie drzewem binarnym, L zbiorem jego liści, a p(v) - długością ścieżki od korzenia do liścia v w drzewie D. Przyjmijmy też następujące oznaczenie:
epl(D) = SvÎL p(v),
epl(D) jest po prostu sumą długości wszystkich ścieżek od korzenia do liści w drzewie D.
Lemat 2.1 Jeżeli dla pewnego D wartość epl(D) jest najmniejsza wśród drzew binarnych lokalnie pełnych o n liściach, to wszystkie liście tego drzewa D znajdują się na dwóch ostatnich poziomach.
Dowód lematu 2.1
Załóżmy przeciwnie, że w drzewie Dn o n liściach i wysokości h, istnieje liść u na poziomie k, k £ h-2, a mimo to wartość epl(Dn) jest minimalna wśród wszystkich drzew binarnych lokalnie pełnych o n liściach (por. Rysunek 5.4).
Niech w będzie wierzchołkiem na poziomie h-1, a w1 i w2 niech będą jego następnikami. Co najmniej jeden taki wierzchołek istnieje, bo drzewo D ma wysokość h. Zbudujemy nowe drzewo D* przenosząc liście w1, w2 z ostatniego poziomu i dowiązując je jako synów wierzchołka u.
Taka modyfikacja nie zmieniła liczby liści w drzewie, zatem D* ma też n liści i jest drzewem lokalnie pełnym. Mamy
epl(D*) = epl(Dn) -2h +(h-1) - k + 2(k+1),
ponieważ w jest w D* liściem, a u nie jest, oraz w1, w2 znajdują się teraz nie na poziomie h, a na poziomie k+1. Stąd
epl(D*) = epl(Dn) + (k- (h-1)).
Ponieważ z założenia k < h-1, zatem epl(D*) < epl(Dn). Otrzymaliśmy sprzeczność, która dowodzi prawdziwości lematu 2.1. J
Jaka jest wartość sumy długości ścieżek w lokalnie pełnym drzewie binarnym o n liściach? Jeśli D jest to pełnym drzewem binarnym, to wszystkie ścieżki mają taką samą długość, równą lg n, a wtedy epl(D)= n´lg n. W dalszym ciągu rozważymy dowolne drzewa rodziny D(n) drzew binarnych, lokalnie pełnych, o n liściach. Udowodnimy następujące ograniczenie dolne wartości epl dla drzew tej rodziny.
Lemat 2.2 min{epl(D): DÎ D(n)} = n ëlg nû + 2( n - 2 ëlg nû).
Dowód lematu 2.2.
Niech D będzie drzewem z rodziny D(n), oraz niech wartość funkcji epl dla tego drzewa osiąga minimum. Na mocy lematu 2.1 wiemy, że wszystkie liście w tym drzewie znajdują się na dwóch ostatnich poziomach. Rozważmy dwa przypadki.
1. n= 2p dla pewnego p. Wtedy mamy do czynienia z pełnym drzewem binarnym, wszystkie liście znajdują się na poziomie p i oczywiście epl(D)= n lg n = n ëlg nû + 2( n - 2 ëlg nû). Zatem w tym przypadku lemat 2.2 jest prawdziwy.
2. 2p-1 < n < 2p, dla pewnego p. Na mocy lematu 1.1, h ³ élg nù. Gdyby jednak h > élg nù, to licząc liczbę liści w tym drzewie przy założeniu, że na przedostatnim poziomie jest y nie-liści, otrzymalibyśmy sprzeczność z założeniem:
n = (2 h-1 - y) + 2y = 2 h-1 + y > 2élg nù = 2p > n,
((2 h-1 - y)- to liście na przedostatnim poziomie, a 2y - to liście na ostatnim poziomie). Zatem, dla drzewa D w rozważanym przypadku musi być h = élg nù. Policzmy wartość funkcji epl(D):
epl(D) = 2y ´ h + (2 h-1 - y)´(h-1) .
Ponieważ n = 2y + (2 h-1 - y) , to y = n - 2 h-1 . Stąd , biorąc pod uwagę równość ëlg nû +1 = élg nù, otrzymujemy:
epl(D) = h ´ n - 2h + n = n élg nù - 2 élg nù + n = n ëlg nû + 2( n - 2 ëlg nû). J
Lemat 2.3 Średnia liczba porównań wykonanych przez dowolny algorytm Alg sortujący ciąg n elementowy przez porównania, jest nie mniejsza niż ëlg n!û, A(Alg, n) ³ ëlg n!û.
Dowód lematu 2.3.
Średnia wysokość h drzewa decyzyjnego wynosi, na mocy lematu 2.2, co najmniej
(1/n!) (n! ëlg n!û + 2( n! - 2 ëlg n!û).
Ponieważ dla dowolnego x, x/2 £ 2 ëlg xû £ x, zatem (2 ëlg xû / x) £ 1, a co za tym idzie 2(n! - 2 ëlg n!û)/ n! ³ 0. Ostatecznie
(1/n!) (n! ëlg n!û + 2( n! - 2 ëlg n!û) ³ ëlg n!û.
Zakończyliśmy w ten sposób dowód lematu 2.3. J
Twierdzenie 2.1 Dolne ograniczenie złożoności algorytmów sortowania przez porównywanie elementów wynosi w przypadku średnim Q(n´lg n).
Wniosek: Algorytm QuickSort jest asymptotycznie optymalnym algorytmem sortowania ze względu na średnią złożoność czasową.
Pytanie 3: Czy MergeSort jest algorytmem asymptotycznie optymalnym ze względu na średnią złożoność czasową?
« poprzedni punkt | następny punkt » |