eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingsortowanie › Re: sortowanie
  • Data: 2012-10-14 03:05:10
    Temat: Re: sortowanie
    Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2012-10-14 02:18, M.M. pisze:
    > W dniu niedziela, 14 października 2012 01:33:48 UTC+2 użytkownik bartekltg napisał:
    >> Teoretycznie to ja rysuję drzewo i nie muszę tego
    >> implementować;)
    >> Sprzętowe sortowanie za pomocą pełnego drzewa decyzyjnego
    >> dla 20 liczb? Jaja sobie robisz? ;) Oszczedza się kompa,
    >> ale trzeba tone krzemu.
    > Jak duze musi byc pelne drzewo decyzyjne? Poczatkowo mamy N! mozliwych
    > permutacji. Pierwsza instrukcja IF powoduje ze mam pewnosc co do
    > kolejnosci dwoch elementow. Jesli N==20, to po pierwszym IF nie
    > wiemy nic o 18tu elementach. Daje to 18! ciagow. Pozostale dwa elementy
    > moga byc wplecione w te 18 na 19*19 sposobow. 20! / ( 18! * 19^2 ) = 1.0526.
    > Po pierwszym IFie ilosc permutacji spadla o okolo 5%. O ile spadnie z
    > kazdym nastepnym ifem?

    Każdy if to pojście w prawo lub w lewo w drzewie decyzyjny.
    To jest drzewo binarne o 20! liściach. Czyli o wysokości
    ceil[log_2 (20!)] = 62 (PK już o tym pisał).
    To teraz wszystkie rozmiary w każdym kroku znasz.

    Pamiętaj, że w różnych gałęziach 'te same' ify mogą
    porównywać zupełnie inne obiekty. Zerknij na potworka
    poniżej. A to tylko 3 elementy.

    [pseudokod pod podpisem]

    Za to ile by się uprościło dopuszczając swapa po
    pierwszym porównaniu. Wtedy taki algorym rozgałęzia
    się tylko po 'topologicznie różnych' wynikach
    (oczywiste jest, że po 2 porównaniach możemy mieć
    linię albo V). Nadal ich liczba rośnie jednak wykładniczo.

    pzdr
    bartekltg


    a,b,c

    if (a>b)
    {
    if (b>c)
    {
    return {a,b,c};
    }
    else //a,c>b
    {
    if (a>c)
    {
    return {a,c,b};
    }else
    {
    return {c,a,b};
    }
    }
    }
    else //b>a
    {
    if (a>c)
    {
    return {b,a,c};
    }
    else //b,c>a
    {
    if (b>c)
    {
    return {b,c,a};
    }else
    {
    return {c,b,a};
    }
    }

    }


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: