Przeszukałem możliwe prace do wykonania dla wyszukiwania binarnego w Erlangu i znalazłem http://ruslanspivak.com/2007/08/15/my-erlang-binary-search/ Ale zastanawiałem się, czy rozwiązanie na blogu działa w O (lg n). Teraz, ponieważ rekurencja dla wyszukiwania binarnego to: T (n) = T (n/2) + c, co daje mi czas wykonania O (lg n).Wyszukiwanie binarne w Erlangu w czasie lg (n)
Ponieważ w macierzy C masz możliwość dostępu do dowolnego elementu w czasie O (1). Ale w erlangu, jeśli dostęp do środka listy zajmuje cn czas, to wyszukiwanie binarne działa w liniowym czasie ogólnym tak słabym, jak wyszukiwanie liniowe.
Natknąłem się na listy: n/2 BIF dla znalezienia n-tego elementu na liście, ale nie jestem pewien co do czasu jego wykonania.
Masz jakieś uwagi?
To jest NIEPRAWIDŁOWE. Moduł Array jest bardzo płaskim drzewkiem tupularnym o współczynniku rozgałęzienia wynoszącym około 12, wybranym jako kompromis między czasem przepisywania a czasem dostępu. Czas dostępu dla pojedynczego elementu nadal wynosi O (log N). Struktury niszczące, takie jak tabele ETS, powinny umożliwiać stały dostęp do czasu, w zależności od danych i typu tabeli, ale to zwiększa koszty związane z kopiowaniem między tabelą a dowolnym procesem Erlanga. W przeciwnym razie plik binarny ('<<" some_binary ">>') może zezwalać na coś, co wygląda jak arytmetyczna wskaźnik i krotki, ma również złożoność O (1) dla dostępu do danych. –