raport.pdf

(97 KB) Pobierz
Raport z projektu
Przedmiot: Algorytmy i struktury danych 2
Projekt: Haszowanie plików
Autor: Wojciech Topolski
1. Zadanie
Wymyslić funkcje haszujacą ciagu znakowego. Używając tej funkcji rozwiązać problem
z projektu drugiego za pomocą mieszania. (należy zaimplepentować metody mieszania omawiane
na ćwiczeniach). Porównać czas rozwiazania problemu za pomoca drzew czerwono-czarnych oraz
za pomoca mieszania. Projekt powinien zawierać sprawozdanie (3 pkt.) i program (4 pkt.).
2. Charakterystyka metod haszowania
Metoda łańcuchowa
Metoda ta polega na utworzeniu tablicy o stałym rozmiarze. Elementami tablicy są listy
zawierające rekordy z nazwą pliku. A następnie funkcja haszująca obliczamy do której listy
w tablicy należy podpiąć przeczytaną nazwę pliku. Może się zdarzyć sytłacja, iż dwie różne nazwy
plików znajdą się w jednej liście, dlatego po odwołaniu się do właściwej listy należy liniowo
sprawdzić wszytkie jej elementy.
Metoda liniowa
Metoda ta polega na utworzeniu list. Elementami listy są rekordy zawierające nazwę pliku.
Nazwy plików są haszowane. Każdej nazwie jest przypożądkowany jakiś numer, który to jest
indeksem w liście danego słowa. Jeśli dany indeks listy jest już zajęty rekord jest wstawiany do
następnego wolnego miejsca w liście, lub dodawany na koniec listy. Wyszukanie elementu polega
na zwykłym przeszukaniu listy. Zaczynjąc od pierwszego mozliwego wystąpienia elementu w liscie
do ostatniego elementu listy.
Metoda adresowania otwartego
Metoda ta jest bardzo zbliżona do metody liniowej. Idea niczym się nie różni, oprócz
zasady, iż rekord nie jest wstawiony do nastepnego wolnego miejsca w liscie, ale skacze co
wyliczona ilość miejsc w liście szukając wolnego miejsca. np. „ala” -> 10, 10 jest zajęte, więc
program szuka wolnego miejsca co 10%7 pozycji, czyli na 17, 24, 31, ..., aż znajdzie wolne
miejsce. Pomaga i skraca to znacząco czas wyszukiwania elementów w liście.
3. Badania metod
Badanie szybkości wyszukiwania zostało przeprowadzone na grupie 50, 150 i 300 plików.
Kolejno
czterema
metodami:
łańcuchową,
liniową,
adresowania
i
drzewa
czerwono-czarnego badam szybkoć wyszukania wybranych plików. Metoda wybierania plików
polegała na pobraniu co dziesiątego pliku i wyszukaniu go w badanej strukturze.
Metoda łańcuchowa
50 plików
150 plików
300 plików
17000000
16000000
15000000
14000000
13000000
12000000
11000000
10000000
9000000
8000000
7000000
6000000
5000000
4000000
3000000
2000000
1000000
0
50 plików
Metoda liniowa
7686126
10046136
16768637
Metoda adresowania
otwartego
6812844
9091225
11746637
Drzewo czerwono-
czarne
2123961
2803601
4199176
4078891
5192420
6845417
Czas wyszukiwania
Metoda łańcuchowa
Metoda liniowa
Metoda adresowania
otwartego
Drzewo czerwono-
czarne
150 plików
300 plików
Ilość plików
Z przeprowadzonych testów wynika, iż najszybszą metodą wyszukiwania plików jest
metoda drzewa czerwono-czarnego, a nastepnie metoda łańcuchowa. Gożej spisują się metoda
adresowania otwartego i metoda liniowa. Choć wielkości te nie sa, aż tak zróżnicowane najlepsze
wykożystanie pamięci istnieje w drzewie, natomiast najwięcej pamieci alokuje metoda adresowania
otwartego.
Zgłoś jeśli naruszono regulamin