Vous êtes sur la page 1sur 4

Wykad 4

Wstp: Tablice rozproszone Numeryzacja klucza Rozmieszczanie pierwotne Usuwanie kolizji Reorganizacja tablicy

Rozmieszczanie algorytmiczne

- wyszukiwanie liniowe, binarne, - za mao efektywne (czasowo i pamiciowo); - tablica rozproszona, a rozmieszczanie w takiej strukturze rozmieszczanie algorytmiczne - zoono wyszukiwania O(c).

Rozmieszczanie algorytmiczne
Tablica rozproszona: - tablic rozproszon nazywamy system T=<K, D, h>, gdzie: K - zbir n kluczy, D - zbir p adresw, h: KD - funkcja odwzorowujca K w D (haszujca / mieszajca / kodujca / transformujca klucz w adres); - n /p wspczynnik wypenienia
3

Rozmieszczanie algorytmiczne
Rozmieszczanie algorytmiczne: - skada si z algorytmw: numeryzacji klucza, rozmieszczania pierwotnego (funkcja mieszajca) i rozwizywania konfliktw (usuwania kolizji); - problemy: wybr funkcji numeryzujcej i mieszajcej, wybr metody rozwizywania konfliktw; - zastosowania: bazy danych, budowa kompilatorw, rozwizywanie zada numerycznych zawierajcych macierze rzadkie, systemy plikw.

Numeryzacja klucza
Wstp: - algorytmy rozmieszczania pierwotnego i usuwania kolizji s czsto numeryczne, klucz natomiast jest czsto alfanumeryczny i na tyle dugi, e jego binarnej reprezentacji nie da si interpretowa numerycznie; trzeba go przetworzy na liczb z zachowaniem wraliwoci tego przetworzenia na kady bit wejcia; warunek ten spenia metoda skadania.

Numeryzacja klucza
Metody skadania:
- skadanie cykliczne z sumowaniem arytmetycznym:
potnij konwertowany cig bitw na odcinki o dugoci rwnej

dugoci danego wyniku; podpisz i sumuj arytmetycznie odrzucajc ewentualny nadmiar;

- skadania cykliczne z rnic symetryczn:


jak wyej, ale zamiast sumy zastosuj rnic symetryczn (XOR); troch szybsze ni poprzednie;

- skadanie zygzakowe:
po podpisaniu odcinkw jeden pod drugim, odwr kolejno

bitw w co drugim z nich; sumuj lub stosuj XOR; koszt operacji moe da korzy w postaci bardziej rwnomiernego rozmieszczenia elementw.
5 6

Algorytmy rozmieszczania pierwotnego


Algorytmy rozmieszczania niezalene od rozkadu kluczy: - metoda skadania, - metoda rodka kwadratu, - metoda dzielenia. Algorytmy rozmieszczania zalene od rozkadu kluczy: - zbieramy dane statystyczne o znakach wystpujcych w reprezentacji kluczy ze zbioru K.

Algorytmy rozmieszczania pierwotnego


Metoda skadania

WARUNEK: Jeeli przez skadanie klucz zosta skrcony


do k bitw, to dugo tablicy = 2k dziaek, a numeracja dziaek od 0 do 2k -1. WASNOCI ROZPRASZAJCE: dobre. WADA: narzucona wielko tablicy.

Algorytmy rozmieszczania pierwotnego


Metoda rodka kwadratu

Algorytmy rozmieszczania pierwotnego


Metoda dzielenia (reszty z dzielenia)

ALGORYTM: We klucz znumeryzowany, podnie go do


kwadratu, wybierz ze rodka tyle bitw, ile ci potrzeba, zinterpretuj to jako adres. ZNACZENIE METODY: raczej historyczne. ZALETY: wzgldna prostota algorytmu, dobre rozpraszanie. WADY: narzucony wymiar tablicy 2k j.w., indeksacja od 0 do 2k -1.

ALGORYTM: Klucz znumeryzowany podziel przez


dugo tablicy, we reszt z tego dzielenia. WARUNEK: dobre mieszanie, jeeli dugo tablicy jest liczb pierwsz albo pseudopierwsz (aden czynnik pierwszy nie jest mniejszy ni 20). ZALETY: bardzo prosty algorytm, dobre mieszanie. WADY: konieczno docigania dugoci tablicy do najbliszej liczby pierwszej albo pseudopierwszej.

10

Algorytmy rozwizywania konfliktw (usuwania konfliktw)

Algorytmy rozwizywania konfliktw (usuwania kolizji)


Algorytmy rozwizywania konfliktw z obszarem nadmiarowym: - z list synonimw - tworzymy dodatkowe pole w rekordzie, aby utworzy list. Algorytmy rozwizywania konfliktw bez obszaru nadmiarowego: - metody liniowe, - metody kwadratowe: wariant prymitywny, metoda Radkego, metoda Daya, - metody losowe; - podwjne mieszanie.

Algorytmy rozwizywania konfliktw z obszarem nadmiarowym:


- z dodatkow tablic, - z list synonimw - tworzymy dodatkowe pole w rekordzie, aby utworzy list.

11

12

Algorytmy usuwania kolizji


Metody liniowe a(i) = ( a(0) + b * i ) mod p gdzie: a(0) - adres pocztkowy wyznaczony przez algorytm mieszajcy, i - numer prby usunicia kolizji, b - wspczynnik cakowity, p - dugo tablicy. Wspczynnik b: wszystko jedno jaki, a wic najprociej 1 lub -1. Wzr redukuje si zatem do: a(i) = ( a(0) + i ) mod p albo a(i) = ( a(0) i ) mod p

Algorytmy usuwania kolizji


Metody kwadratowe Wariant prymitywny a(i) = ( a(0) + b * i + c * i2) mod p gdzie: b, c - wspczynniki rzeczywiste. Pozostae oznaczenia jak poprzednio. Wspczynnik b: wszystko jedno jaki, wic najprociej 0. Wspczynnik c: wszystko jedno jaki, byle nie 0, wic najprociej 1 albo -1. Wzr upraszcza si zatem do postaci: a(i) = ( a(0) + i2) mod p albo a(i) = ( a(0) - i2) mod p WADY DYSKWALIFIKUJCE: powtrne badania dziaek ju przebadanych, pomijanie niektrych dziaek, skupiska drugiego rzdu.

ZALETY: prostota algorytmu, brak skokw na dugie dystanse, nie narzuca


dugoci tablicy.

WADY: skonno do tworzenia skupie pierwszego rzdu (modyfikacja: b jako


zmienna, double hashing- czyli b jest inna funkcja mieszajc. ZALECENIE: uwaa, aby wspczynnik zapenienia nie przekracza ok. 80%. 13
14

Algorytmy usuwania kolizji


Metody kwadratowe Metoda Radkego WARUNEK: dugo tablicy musi by "liczb Radkego", tj. liczb pierwsz wyraajc si wzorem 4*j + 3, gdzie j jest dowoln liczb naturaln. ALGORYTM: a(1) = ( a(0) + 1) mod p a(2) = ( a(0) - 1) mod p a(3) = ( a(0) + 2) mod p a(4) = ( a(0) - 2) mod p itd. UWAGA: niech algorytm robi tylko p - 1 krokw, bo potem powtrne badania bd MUSIAY nastpi. ZALETA: niezawodno. WADY: wymuszenie dotyczce dugoci tablicy, konieczno obliczania (albo przechowywania i odszukiwania) kwadratw kolejnych liczb naturalnych, powstawanie skupie drugiego rzdu.
15

Algorytmy usuwania kolizji


Metody kwadratowe
Metoda Daya Metoda opiera si na spostrzeeniu, e cig liczb kwadratowych (tzn. cig kwadratw kolejnych liczb naturalnych): 0 1 2 3 4 itd. czyli 0 1 4 9 16 itd., daje po zrnicowaniu: 1 3 5 7 itd., czyli cig kolejnych liczb nieparzystych. Powstaje std pomys, aby kolejne liczby kwadratowe oblicza nie przez podnoszenie do kwadratu, ale przez tworzenie i sumowanie cigu kolejnych liczb nieparzystych. UWAGI: 1. Metoda Daya jest modyfikacj metody Radkego i wymaga rwnie, aby dugo tablicy bya liczb Radkego. 2. Metoda Daya dziaa rwnie dobrze jak metoda Radkego, ale oszczdza na podnoszeniu do kwadratu. 16

Operacje na tablicach rozproszonych


1. Wprowadzanie nowego zapisu - sprowadza si do

Tablice rozproszone
Oglny algorytm wprowadzania zapisu rekordu do tablicy rozproszonej
0: k = numeryzuj (klucz); 1: i 0; 2: di h(k); {obliczanie adresu po..tu.} 3: if T[di] = 0 {dziaka pusta} then begin T[di] zapis (k); 'koniec algorytmu' end; else begin i i + 1; if i p then 'koniec algorytmu {wszystkie dziaki zajte} end; 4: di kolizja (i); {wyznaczenie nowego adresu} 5: go to 3;

szukania.
2. Wyszukiwanie okrelonego zapisu - sprowadza si do szukania. 3. Usuwanie okrelonego zapisu - sprowadza si do szukania i REORGANIZACJI tablicy. 4. Inne algorytmy przetwarzania tablic, np.: reorganizacja, zmiana rozmiaru tablicy, usuwanie rekordu (zaznaczanie, e usunity).

17

18

Tablice rozproszone
Oglny algorytm szukania zapisu rekordu w tablicy rozproszonej
0: k = numeryzuj (klucz); 1: i 0; 2: di h(k); 3: if KEY(di) = klucz KEY(d) funkcja odwrotna do numeryzuj, w sensie odszukania adresu then 'zakocz pomylnie'; 4: if KEY(di) = 0 - T[d] = 0 {dziaka T[d] pusta} zakadamy, e tablica nie jest... (?) then 'zakocz niepomylnie'; 5: i i+ 1; 6: di kolizja (i); {obliczenie nowego adresu} 7: go to 3;
19

Reorganizacja tablic rozproszonych


1. Przygotowanie do reorganizacji: Kady rekord wyposaamy w dwa jednobitowe pola techniczne: - bit rekordu ywego b1 - bit rekordu trwaego b2 (przed uruchomieniem reorganizacji b2 = 0)

20

Reorganizacja tablic rozproszonych


2. Przegldaj sekwencyjnie dziaki tablicy a do koca 3. Po napotkaniu rekordu ywego, nietrwaego, uruchom algorytm rozmieszczania pierwotnego (wyznacz nowy adres rekordu) (to znaczy jeli martwy lub trway to pomijamy) postpuj nastpujco z nowym adresem:
a) if dziaka pusta lub zajta przez rekord martwy then umie nowy rekord i oznacz bitem trwaoci (czyli go to 2) else b) if dziaka zajta przez rekord ywy, nietrway, then wypchnij ten rekord, umie nowy rekord i oznacz b2 = 1, a rekord wypchnity traktuj jako nowy (go to 3) else c) if dziaka zajta przez rekord trway, then uruchom algorytm usuwania kolizji, przejd do dziaki wskazanej przez ten algorytm i (go to a)).
21

Vous aimerez peut-être aussi

  • Asd 07
    Asd 07
    Document5 pages
    Asd 07
    beeew
    Pas encore d'évaluation
  • Asd 08
    Asd 08
    Document2 pages
    Asd 08
    beeew
    Pas encore d'évaluation
  • Asd 06
    Asd 06
    Document6 pages
    Asd 06
    beeew
    Pas encore d'évaluation
  • Asd 05
    Asd 05
    Document2 pages
    Asd 05
    beeew
    Pas encore d'évaluation
  • Asd 02
    Asd 02
    Document4 pages
    Asd 02
    beeew
    Pas encore d'évaluation
  • AZwykład 1
    AZwykład 1
    Document3 pages
    AZwykład 1
    aaazzz123
    Pas encore d'évaluation
  • Asd 03
    Asd 03
    Document3 pages
    Asd 03
    beeew
    Pas encore d'évaluation