-
Data: 2014-09-30 00:22:33
Temat: Re: Zrandomizowane wyszukiwanie binarne
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 29.09.2014 13:47, Wojciech Muła wrote:
> Witajcie, w normalnym wyszukiwaniu binarnym element "środkowy" (c)
> jest średnią arytmetyczną indeksów pierwszego (a) i ostatniego (b)
> z przetwarzanego przedziału.
>
> A teraz weźmy c := liczba losowa z przedziału [a, b] (np. z rozkładem
> normalnym).
Na pewno normalnym? To z jaką wariancją. Jak radzić sobie z wyjściem
poza [a,b] (rozkłąd normlany o dowolnej średniej i std jest -inf..inf),
co najwyżej odpowiednio doże liczby są w praktyce niemożliwe do
wylosowania.
Może miałeś na myśli rozkład jednostajny?
> Czy znacie jakieś artykuły, które by takie wyszukiwanie
> analizowały? Jeśli dobrze pamiętam w Cormenie było porównanie
> wyszukiwania liniowego z losowym.
W cormenie na pewno przy wyszukiwaniu binarnym było wyszukiwanie
interpolacyjne, natomiast losowy wybór elementu dzielącego
był w wersji qsort.
Czy gdzieś (np w ćwiczeniach) była wersja wyszukiwania z losowaniem,
nie wiem, możesz podać dokładniejsze namiary?
Zwykły binsearch ma czas (liczba porównań w zależności
od dlugości tablicy)
T[L] = 0 dla L<=1
T[L] = 1+T(L/2) L>1. [ok, z grubsza;)]
Stąd T[L] = log_2 (L)
W przypadku losowania z rozkładu jednostajnego będzie to coś w rodzaju
T[L] = 1+sum(i=1,L-1) ro(i,L)(T[i] (i)*L + T[L-i]*(L-i)/L) [1]
{zakładam, że w wyniku podziału nie moze powstać pusta tablica}
{ średnia po wynikach losowania, wynikiem losowania jest
i, na i/L szukany obiekt jest w tablicy dlugosci i, na 1 - i/L w
pozostałej części. ro(i,L) to gęstość rozkładu}
Dla ro(i,L) z rozkładu jednostajnego mamy = 1/(L-1)
Szybki wykres:
[matlab]
N=2000;
Tb=zeros(N,1);
for L=2:N,
j=floor(L/2);
Tb(L) = 1+ j/L *Tb(j) + (L-j)/L* Tb(L-j);
% Tb(L) = 1+ mean( ((j).* Tb(j) +(L-j).* Tb(L-j))/(L) ); %
rownoważnie
end
T=zeros(N,1);
for L=2:N,
%j=floor(L/2);
j=(1:L-1)'; %podziały
T(L) = 1+ mean( ((j).* T(j) +(L-j).* T(L-j))/(L) );
end
plot(1:N,Tb,'o',1:N,T,'*',1:N,log2(1:N))
Wersja randomizowana jest też logarytmiczna, ale ciut wolniejsza
(jeśli chodzi o liczbę porównań, to tego dojdzie generowani liczb
losowych)
https://www.dropbox.com/s/e58tjr9ke5t1izl/randbinsea
rch.png?dl=0
Niebieski to zwyczajny bsearch. Czerwona cienka linia to log2.
Po policzeniu nie ma w tym nc zaskakującego;) Wzór [1] na T[L]
to jakaśtam średnia z fukcji
x T(x) + (L-x) T(L-x). [2]
Ma ona symetrie względem L/s, czyli tam jest ekstermum.
Spodziewamy się [pd T(x) funkcji wyglądającej jak logarytm).
x log(x) + (L-x)log(L-x) ma w L/2 minimum.
Lepiej więc wziąć po prostu L/2, niż średnią (a to, dla wartości
oczekiwanej, robimy randomizując punkt podziału).
A, do rzeczy. Skoro algorytm jest wyraźnie gorszy, wątpię, by
ktoś o nim coś więcej i dokładniej pisał. Ale mogę czegoś nie
zauważać.
pzdr
bartekltg
Następne wpisy z tego wątku
- 30.09.14 02:01 A.L.
- 30.09.14 07:20 Wojciech Muła
- 30.09.14 11:27 bartekltg
- 30.09.14 18:58 bartekltg
- 30.09.14 23:17 M.M.
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-27 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-01-27 Warszawa => Java Developer <=
- 2025-01-27 Warszawa => Data Engineer (Tech Lead) <=
- 2025-01-27 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-27 Kto ma PRAWNĄ rację? poseł KO mec. R. Giertych v. mec. B. Lewandowski
- 2025-01-27 Gliwice => IT Expert (Network Systems area) <=
- 2025-01-27 Koszyk okrągły, walec 3x AA, na duże paluszki R6
- 2025-01-27 Warszawa => QA Engineer <=
- 2025-01-27 Warszawa => Analityk Biznesowo-Systemowy <=
- 2025-01-27 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-27 Bieruń => Team Lead / Tribe Lead FrontEnd <=
- 2025-01-27 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-27 Kraków => User Experience Designer <=
- 2025-01-27 Kraków => iOS Developer (Swift experience) <=
- 2025-01-26 Trump-2 JUŻ bardzo łaskawy [1_500 ułaskawień skazanych za Bidena za "Kawkę na Kapitolu"]