Raport z projektu
Transkrypt
Raport z projektu
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 Metoda liniowa Metoda adresowania otwartego Drzewo czerwonoczarne 4078891 7686126 6812844 2123961 150 plików 5192420 10046136 9091225 2803601 300 plików 6845417 16768637 11746637 4199176 Czas wyszukiwania 50 plików 17000000 16000000 15000000 14000000 13000000 12000000 11000000 10000000 9000000 8000000 7000000 6000000 5000000 4000000 3000000 2000000 1000000 0 50 plików Metoda łańcuchowa Metoda liniowa Metoda adresowania otwartego Drzewo czerwonoczarne 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.