O (logn) zawsze drzewo?

głosy
6

Zawsze patrz na operacje (binarne drzewo wyszukiwania) ma czas O (logn) najgorszy przypadek uruchomiony ze względu na wysokość drzewa jest logN. Zastanawiam się, czy jesteśmy powiedział, że algorytm działa razem jako funkcja logN, np m + nlogn możemy stwierdzić, musi ona obejmować (rozszerzonej) Drzewo?

EDIT: Dzięki komentarze, ja sobie teraz sprawę podzielić zwyciężaj i drzewo binarne są tak podobne wizualnie / koncepcyjnie. Nigdy wcześniej wykonane połączenie między nimi. Ale myślę, że w sprawie, gdzie O (logn) nie jest dziel przejęcie algo który wiąże się z drzewa, który nie ma właściwość BST / AVL / drzewo czerwono-czarne.

To rozłączne zestaw struktura danych z find operacji / Unii, których czas trwania wynosi O (N + MlogN), z N to # elementów i M liczba operacji znaleźć.

Proszę dać mi znać, jeśli brakuje mi czegoś, ale nie widzę w jaki sposób dzielenia przejęcie wchodzi w grę tutaj. Ja po prostu zobaczyć w tym zbiorze (rozłączne) sprawy, że ma do drzewa bez własności BST oraz bieżącą chwilę obecną funkcją logN. Więc moje pytanie brzmi, dlaczego / dlaczego nie mogę dokonać uogólnienia z tego sprawy.

Utwórz 22/02/2010 o 05:25
źródło użytkownik
W innych językach...                            


7 odpowiedzi

głosy
7

Nie można również binarne przeszukiwanie posortowanej tablicy (na przykład). Ale nie wierz mi na słowo http://en.wikipedia.org/wiki/Binary_search_algorithm

Odpowiedział 22/02/2010 o 05:26
źródło użytkownik

głosy
3

Jako przykład licznika:

given array 'a' with length 'n'
y = 0
for x = 0 to log(length(a))
    y = y + 1
return y

Czas pracy wynosi O (log (n)), ale nie ma tu drzewo!

Odpowiedział 22/02/2010 o 05:28
źródło użytkownik

głosy
0

Algorytmy poświęcenie czasu logarytmicznej są powszechnie znaleźć w operacje na drzewach binarnych.

Przykłady O (LogN)

  • Znajdowanie elementu w posortowanej tablicy z binarnego wyszukiwania lub zrównoważony drzewa wyszukiwania.

  • Spójrz w górę wartości w posortowanej tablicy wejściowej przez bisekcji.

Odpowiedział 22/02/2010 o 05:40
źródło użytkownik

głosy
7

Co masz dokładnie do tyłu. O(lg N)ogólnie oznacza jakąś dziel i rządź algorytm, a jeden wspólny sposób realizacji dziel i rządź jest drzewo binarne. Podczas drzewo binarne są znaczne podzbiór wszystkich algorytmów dziel i przezwycięża ARE podzbiór tak.

W niektórych przypadkach można przekształcić inne dziel i zwyciężaj dość prosto w drzewo binarne (np komentarzy na inną odpowiedź już podjął próbę twierdząc przeszukiwanie binarne jest podobna). Tylko na innym oczywistym przykładem, jednak wielostronne drzewo (na przykład B-drzewo, B + B * drzewo lub drzewo), natomiast wyraźnie drzewo jest tak wyraźnie nie binarne drzewo.

Ponownie, jeśli chcesz na tyle źle, można rozciągnąć punkt, że wielostronne drzewo może być reprezentowana jako swego rodzaju wypaczoną wersją binarnego drzewa. Jeśli chcesz, prawdopodobnie można rozciągnąć wszystkie wyjątki od punktu mówiąc, że wszystkie z nich są (przynajmniej coś podobnego) drzewo binarne. Przynajmniej mi się jednak, że robi to wszystko zrobić „drzewo binarne” synonimem „dziel i rządź”. Innymi słowy, wszystko co jest osiągnąć wypaczenia słownictwo i zasadniczo zacieranie termin, który jest zarówno wyraźne i użyteczne.

Odpowiedział 22/02/2010 o 06:45
źródło użytkownik

głosy
2

Odpowiedź brzmi: nie. Binary poszukiwanie posortowanej tablicy jest O(log(n)).

Odpowiedział 22/02/2010 o 06:48
źródło użytkownik

głosy
0

A O (log (n)) jest tylko górna granica również wszystkie oznaczają O (1), jak algorytmy function (a, b) return a+b;spełniają warunek.

Ale muszę się zgodzić wszystkie teta (log (n)) algorytmy trochę wyglądać algorytmów drzew lub przynajmniej mogą być wydobywane drzewa.

Odpowiedział 22/02/2010 o 07:26
źródło użytkownik

głosy
0

Krótka odpowiedź:

Tylko dlatego, że algorytm ma log (n) jako część swojej analizie nie znaczy, że drzewo jest zaangażowany. Na przykład po to bardzo prosty algorytm, który jestO(log(n)

for(int i = 1; i < n; i = i * 2)
  print "hello";

Jak widać, nie był zaangażowany drzewo. John, zapewnia także dobry przykład, w jaki sposób binarny wyszukiwania można zrobić na posortowanej tablicy. Są zarówno wziąć O (log (n)) czas, a są inne przykłady kodu, które mogą być tworzone lub odwołuje. Więc nie rób założeń w oparciu o czas asymptotycznej złożoności, spojrzeć na kod, aby wiedzieć na pewno.

Więcej na drzewach:

Tylko dlatego, że algorytm polega na „drzewo” nie oznacza O(logn)albo. Musisz wiedzieć, rodzaj drzewa i jak operacja wpływa na drzewo.

Kilka przykładów:

  • Przykład 1)

Wkładanie lub szukając następujące niesymetryczne drzewo byłoby O(n).

wprowadzić opis obrazu tutaj

  • Przykład 2)

Wkładanie lub poszukać następujące zbalansowane drzewa będzie zarówno przez O(log(n)).

Wyważone drzewo binarne:

wprowadzić opis obrazu tutaj

Zrównoważony Drzewo Stopień 3:

wprowadzić opis obrazu tutaj

dodatkowe komentarze

W przypadku drzew używasz nie ma sposobu, aby „równowaga”, niż istnieje duża szansa, że operacje będą O(n)razem nie O(logn). Jeśli korzystasz z drzew, które balansują na własny, a następnie wstawia normalnie zająć więcej czasu, jak równoważenie drzew normalnie występują w fazie wkładki.

Odpowiedział 27/04/2016 o 00:55
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more