Jestem nowy w zrozumieniu algorytmów informatycznych. Rozumiem proces wyszukiwania binarnego, ale mam niewielkie nieporozumienie z jego wydajnością.
W rozmiarze elementów znalezienie danego elementu wymagałoby średnio kroków. Biorąc podstawę 2 logarytmu obu stron daje . Czy więc średnia liczba kroków dla algorytmu wyszukiwania binarnego nie byłaby ?
Artykuł z Wikipedii na temat algorytmu wyszukiwania binarnego mówi, że średnia wydajność wynosi . Dlaczego tak jest? Dlaczego ten numer nie jest ?
algorithms
runtime-analysis
binary-search
Dr Pepper
źródło
źródło
Odpowiedzi:
Po zmianie podstawy logarytmu wynikowe wyrażenie różni się tylko stałym czynnikiem, który z definicji notacji Big-O oznacza, że obie funkcje należą do tej samej klasy pod względem ich asymptotycznego zachowania.
Na przykład gdzie .
Więc i różni się stałą , a zatem oba są prawdziwe: Ogólnie to dla dodatnich liczb całkowitych i większych niż 1.log10n log2n C
Innym interesującym faktem związanym z funkcjami logarytmicznymi jest to, że chociaż dla stałej , to NIE , ale to od który różni się od tylko stałym współczynnikiem .k>1 nk O(n) lognk O(logn) lognk=klogn logn k
źródło
Oprócz odpowiedzi fade2black (która jest całkowicie poprawna), warto zauważyć, że notacja „ ” jest niejednoznaczna. Baza nie jest właściwie określona, a domyślna baza zmienia się w zależności od kontekstu. W czystej matematyce prawie zawsze przyjmuje się, że podstawa to (o ile nie określono), podczas gdy w niektórych kontekstach inżynierskich może to być 10. W informatyce podstawa 2 jest tak wszechobecna, że często przyjmuje się jako podstawa 2. Ta wikipedia artykuł nigdy nie mówi nic o bazie.log(n) e log
Ale, jak już pokazano, w tym przypadku nie ma to znaczenia.
źródło