eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingfunkcja haszująca/skrótuRe: funkcja haszująca/skrótu
  • Data: 2013-09-25 07:56:12
    Temat: Re: funkcja haszująca/skrótu
    Od: Przemysłąw Dębski <p...@g...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Piotrne pisze:
    > W dniu 2013-09-24 06:06, bartekltg pisze:
    >
    > > Pytacz pewnie by docenił dwa słowa, skąd wzorek;)
    >
    >
    > Wzorek jest spisany m.in. tu:
    > http://math.stackexchange.com/questions/349924/funct
    ion-mapping-combinations-to-natural-numbers
    >
    >
    > Wyjaśnić go można obrazowo na trójkącie Pascala
    > ze współczynnikami dwumianowymi. Dla podanego
    > przykładu (kombinacje 2 elementów z 6) znajdujemy
    > liczbę C(6,2) = 15. Tyle jest różnych kombinacji.
    > Jednocześnie tyle jest różnych "dróg" prowadzących
    > od liczby 15 do jedynki na górze trójkąta - przyjmując,
    > że poruszamy się zawsze o "piętro" w górę (do n-1),
    > w lewo (do k-1) lub w prawo (do k). Każda spośród tych
    > dróg reprezentuje inną kombinację: element należy
    > do podzbioru, jeśli "skręciliśmy w lewo" (wybraliśmy k-1).
    >
    > Pozostaje więc ponumerowanie dróg (i jednocześnie kombinacji).
    > Dla przykładowej 15 (= 5 + 10) przyjmujemy, że 5 początkowych
    > numerów (0 do 4) pochodzi z "piątki", a 10 kolejnych numerów
    > (5 do 14) z "dziesiątki". Przenosząc się o poziom wyżej:
    > numery 5 do 14 pochodzą z "czwórki" (5 do 8) oraz "szóstki"
    > (9 do 14). I tak dalej...

    Dzięki za pomoc, algorytm działa idealnie na moich danych, choć to jak
    działa nie do końca jeszcze rozumiem :) Współczynniki stablicowałem.
    Uzupełniając jeszcze Twoją odpowiedź dla Wojtka, dlaczego nie liczby w
    systemie 52. Tak (w sensie - bitowo)zakodowane kombinacje można łatwo
    testować na okoliczność zawierania lub nie elementów przy pomocy
    operatorów bitowych. Ma to znaczenie gdy podzbiór który obrabiam jest
    zdefiniowany w taki sposób, że generowanie iteracyjne jedynie
    prawidłowych kombinacji jest skomplikowane i raczej mało efektywne.
    Przykład:
    Tu muszę nadmienić, że tablica do której robiliśmy wskazania, jest tylko
    przejściową do innej, posortowanej wg. takiego klucza, który gwarantuje
    (poza przypadkami szczególnymi), że podzbiory które będziemy badać będą
    w niej ciągłe (wszystkie wartości od indeksu a do b). Wracając o
    przykładu - odniosę się do faktycznych danych. Mamy zbadać coś we
    wszystkich kombinacjach par od QQxxx do AAxxx, przy czym w xxx nie może
    być kilku konkretnych kart. Ponieważ mają to być pary, generując
    iteracyjnie musiał bym zadbać by xxx oprócz kart których nie mogą z
    założenia zawierać, nie zawierały w sobie róznych innych tworów typu np.
    55x, które z jednej pary tworzą dwie pary. Natomiast jeśli wyjdę od
    strony tablicy w której pary AA-QQ są w ciągłym zakresie indeksów i nie
    ma wśród nich kart klasy innej niż para (tak jest posortowana tablica)
    wówczas pozostaje mi zbadać tylko jawnie zadane warunki nie zawierania
    konkretnych kart. Przy bitowym zakodowaniu robię to najczęściej jednym
    AND, przy kodowaniu w systemie 52 muszę się gimnastykować.

    Pozdrawiam

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: