eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingHasz dla permutacji › Re: Hasz dla permutacji
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!news.mb-net.net!open-news-network.org!aioe.org!.POSTED.ny
    PK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org!not-for-mail
    From: Mateusz Viste <m...@x...invalid>
    Newsgroups: pl.comp.programming
    Subject: Re: Hasz dla permutacji
    Date: Mon, 24 Aug 2020 10:20:34 +0200
    Organization: . . .
    Lines: 40
    Message-ID: <20200824102034.5b84b398@mateusz>
    References: <5f43602a$0$525$65785112@news.neostrada.pl>
    <5f4375ff$0$514$65785112@news.neostrada.pl>
    NNTP-Posting-Host: nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable
    X-Complaints-To: a...@a...org
    X-Notice: Filtered by postfilter v. 0.9.2
    Xref: news-archive.icm.edu.pl pl.comp.programming:215117
    [ ukryj nagłówki ]

    2020-08-24 o 10:10 +0200, Borneq napisał:
    > On 8/24/20 8:37 AM, Borneq wrote:
    > > Mam permutację np. 5 7 1 2 8 ..4
    > > chce każdą oznaczyć haszem, chętnie 64 bitowym by uniknąć kolizji
    > > 32 bitów choć ostatecznie 32 bity to też male prawdopodobieństwo
    > > kolizji. Ma mieć własności:
    > > - nie działam na bitach ale na liczbach, np. 1204 999 451 1021...
    > > nieduże liczby
    > >
    > > - prosty hasz z możliwością generowania przyrostowego:
    > > jak zamieniam liczbę numer 21 z 45 to ze starego generuję nowy
    > > hasz, najlepiej nie z całej tablicy, tak działa prosty XOR, tylko
    > > problem: ma być conajmniej 32 bity a nie tyle bitów ile mają
    > > liczby
    >
    > XOR jest nieczuły na kolejność, więc xor wraz z numerem pozycji:
    > 0 xor tab[0] xor 1 xor tab[1] xor 2 xor tab[2] xor...
    > wada: dla małych liczb hash będzie mały, nie całe 32/64 bity, więc
    > byłoby niebezpieczeństwo że dwie permiutacje będą miały ten sam hash.

    Rób dwie operacje: xor oraz shift jednego bitu... Tak działa BSD sum.
    Zalety takie, że jeszt bardzo szybki oraz wrażliwy na inwersję
    wartości. Szerokość takiego hashu sobie możesz dopasować sam, wystarczy
    użyć innego clampingu.

    3 lata temu popełniłem tego implementację:
    https://sourceforge.net/p/bsum/code/HEAD/tree/trunk/
    bsum.asm

    Mateusz

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: