eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingZadanie z książki Cormena-czy to jest oczekiwane rozwiązanie?Re: Zadanie z książki Cormena-czy to jest oczekiwane rozwiązanie?
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not
    -for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Zadanie z książki Cormena-czy to jest oczekiwane rozwiązanie?
    Date: Sat, 09 Oct 2010 23:48:49 +0200
    Organization: http://onet.pl
    Lines: 37
    Message-ID: <i8qnsn$21h$1@news.onet.pl>
    References: <7...@n...onet.pl>
    <b...@l...googlegroups.com>
    <i8qg1t$cuj$1@news.onet.pl>
    <b...@p...googlegroups.com>
    NNTP-Posting-Host: chello087206113207.chello.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1286660823 2097 87.206.113.207 (9 Oct 2010 21:47:03 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Sat, 9 Oct 2010 21:47:03 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.12) Gecko/20100913
    Icedove/3.0.7
    In-Reply-To: <b...@p...googlegroups.com>
    Xref: news-archive.icm.edu.pl pl.comp.programming:187061
    [ ukryj 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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: