Analizuję algorytm merge sort. W algorytmie tym jako dane wejściowe mamy dany pewien ciąg liczb długości n. Ciąg ten jest dzielony rekurencyjnie na pół do momentu gdy podciąg będzie składał się z pojedyńczego elementu. W wyniku takiego działania dostajemy drzewo o pewnej głębokości. Dla przykładu:
Głębokość takiego drzewa jak mi wiadomo wynosi \(\displaystyle{ log_{2}(n)}\). W jaki sposób wyprowadzić to \(\displaystyle{ log_{2}(n)}\)? Chciałbym policzyć jaka będzie głębokość drzewa gdybym dzielił ten ciąg liczb nie na dwie ale na większą ilość części. Jak się zabrać za takie obliczenia?
PS, jeśli pomyliłem podforum to przepraszam. Nie wiem gdzie bliżej temu problemowi, czy tutaj czy np. do ciągów.
Głębokość drzewa.
-
- Użytkownik
- Posty: 2
- Rejestracja: 24 mar 2012, o 16:23
- Płeć: Mężczyzna
- Lokalizacja: .pl
- Podziękował: 1 raz
Głębokość drzewa.
Ostatnio zmieniony 24 mar 2012, o 20:02 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Temat umieszczony w złym dziale.
Powód: Temat umieszczony w złym dziale.
-
- Użytkownik
- Posty: 5974
- Rejestracja: 28 lut 2010, o 19:45
- Płeć: Mężczyzna
- Lokalizacja: Toruń
- Podziękował: 15 razy
- Pomógł: 1251 razy
Głębokość drzewa.
Logarytm bierze się stąd, że długość tego ciągu dzieli się ciągle przez dwa. Więc wysokość jest równa tyle, ile razy możemy dzielić przez dwa aż do otrzymania jedynki, a to właśnie "definicja" logarytmu. Jakbyś dzielił na \(\displaystyle{ k}\) części, to będzie to \(\displaystyle{ \log_{k} n}\)