-
Data: 2010-10-09 21:48:49
Temat: Re: Zadanie z książki Cormena-czy to jest oczekiwane rozwiązanie?
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 09.10.2010 21:57, Mariusz Marszałkowski pisze:
> On 9 Paź, 21:35, Michoo<m...@v...pl> wrote:
>> A klasyczne hashtable o rozmiarze k realizowane funkcją modulo k wymaga
>> obsługi powtarzających się haszy. i te powtarzające się hasze będzie się
>> obługiwać albo w ulog u przy uży7ciu stosu/drzewa (gdzie u to ilość
>> haszy kolidujących) albo w u^2 przy naiwnej implementacji z listą.
>
> No dobra, ale po co brać pod uwagę pesymistyczny przypadek który
> zdarza się tak rzadko, że ciężko policzyć?
Ale to zadanie z książki o teorii algorytmów. Nie podręcznika sprytnego
programisty.
> To się w praktyce dla
> dużych danych nie zdarzy, a dla małych najszybciej zadziała algorytm o
> małym narzucie liniowym.
Dla dużych danych nie możemy mieć za dużego hashtable, bo wylecimy z
cache i wszystko znacznie zwolni. tak więc dla n danych i k kubełków (w
przypadku optymistycznym):
- n/k danych w kubełku
- n/k * ln(n/k) lub n/k * (n/k)^2 czas wstawiania do jednego kubełka
- mamy k kubełków, więc k*(n/k * ln(n/k)) = n * ln(n/k) lub k*(n/k *
(n/k)^2) = n*(n/k)^2 na wstawienie do wszystkich
- tak czy tak wychodzi trochę gorzej niż liniowo, ten sam rząd co dla
sortowania (może mniejsza stała np o 1/2 będzie), ale rząd złożoności
ten sam.
P.S.
Ja bym w c++ użył mapy - bo się najszybciej pisze.
std::map<int,int> count;
count.insert(data.begin(),data.end());
for(auto i=count.begin();i!=count.end();++i)
if(i->second != 1)
std::cout <<i->first<<std::endl;
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 09.10.10 22:03 Mariusz Marszałkowski
- 09.10.10 22:56 Michoo
- 11.10.10 08:59 Mariusz Marszałkowski
- 11.10.10 15:28 Wojciech Muła
Najnowsze wątki z tej grupy
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- 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?
Najnowsze wątki
- 2025-03-24 Spawanie filamentem
- 2025-03-23 Rozkaz 5-2025: O Umorzeniu Postępowania Sądowego
- 2025-03-23 Rozkaz 4-2025: O Ochronie Praw Autorskich
- 2025-03-23 Rozkaz 3-2025: O Zaprzestaniu Bratobójczych Walk Na Ukrainie
- 2025-03-23 Rozkaz 2-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-03-23 Rozkaz 1-2025: O Uchwaleniu Totaliztycznych Praw i Obowiązków Człowieka
- 2025-03-23 Waga z legalizacją
- 2025-03-23 Nowy VW 208 :-)
- 2025-03-23 ile Tesla ma gwarancji?
- 2025-03-22 OT Silnik sie przegrzewa
- 2025-03-22 Przenoszenie przez wifi na nowego Androida
- 2025-03-22 Warszawa => Senior Account Manager <=
- 2025-03-22 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-22 Warszawa => Spedytor Międzynarodowy <=
- 2025-03-22 Warszawa => NMS System Administrator <=