You are on page 1of 18

Analiza porównawcza wybranych

implementacji tablic
skojarzeniowych

Praca inżynierska

Autor: Janusz Paszyński I6B2S1
Promotor: dr inż. Kazimierz Worwa
Zadania do pracy

1. Przegląd literatury w zakresie:
a) organizacji tablic z haszowaniem,

b) funkcji haszujących,

c) metod rozwiązywania kolizji.
Zadania do pracy cd.

2. Charakterystyka podstawowych
metod organizacji tablic z
haszowaniem.

3. Analiza porównawcza wybranych
implementacji tablic haszowanych.
Zadania do pracy cd.

4. Opracowanie programowego
eksperymentu pomiarowego dla
potrzeb porównania efektywności
implementacji wybranych metod
haszowania.

5. Ocena uzyskanych rezultatów.
Charakterystyka dziedziny
Tablica z haszowaniem – struktura
danych korzystająca z funkcji haszującej
do mapowania klucza na wartość indeksu
dla przechowywanego obiektu
Funkcja haszująca – dowolna procedura,
lub funkcja matematyczna konwertująca
ciąg danych na liczbę całkowitą, możliwą
do użycia jako indeks tablicy.
Charakterystyka dziedziny cd.

Podstawowe typy tablic haszujących:
 Łańcuchowa

 Z adresowaniem otwartym
 Szukanie liniowe
 Szukanie kwadratowe

 Mieszanie podwójne

 Rozproszone (DHT)
Charakterystyka dziedziny cd.

Podstawowe różnice
 Implementacja struktury
 Tablica statyczna
 Tablica dynamiczna

 Drzewo zrównoważone

 Realizacja funkcji mieszającej
Cel pracy
 Porównanie różnych implementacji
tablic mieszających
 Zbadanie implementacji tablic
haszujących w popularnych
językach programowania
 Porównanie szybkości badanych
implementacji
Oczekiwane wyniki
 Wytworzenie aplikacji pozwalającej na
zbadanie szybkości różnych implementacji
tablic skojarzeniowych dla wielokrotnych
operacji
 Stworzenie spójnego opisu wybranych
implementacji
 Zestawienie wyników testów
implementacji pozwalające na porównanie
wybranych implementacji
Plan pracy

1. Wstęp
2. Opis podstawowych implementacji
tablic haszujących
2.1. Opis organizacji struktury
2.2. Porównanie funkcji
mieszających
1. Porównanie wybranych
implementacji hash map
Plan pracy cd.
4. Projekt aplikacji do
eksperymentalnego porównania
implementacji
4.1. Model aplikacji w języku UML
4.2. Implementacja w wybranym języku
programowania
5. Zestawienie i ocena wyników
uzyskanych z eksperymentu
6. Wnioski
Literatura

1. Wprowadzenie do algorytmów
- H. Coben, C. E. Leiserson, R. L.
Rivest
2. Handbook of Algorithms and
Data Structures – G. H. Gonnet
3. Sorting and Searching, volume
3 of The Art of computer
Programming – D. E. Knuth
Literatura cd.
 Wikipedia:
• http://en.wikipedia.org/wiki/Hash_table
• http://en.wikipedia.org/wiki/Distributed_hash_table
• http://en.wikipedia.org/wiki/Hash_function
 Inne strony www:
• http://www.azillionmonkeys.com/qed/hash.html
• http://bd-things.net/
hash-maps-with-linear-probing-and-separate-chaini
/
Harmonogram pracy
Marzec Wybór tematu pracy
2009

Kwiecień Gromadzenie materiałów pomocniczych
2009 Analiza zadań do pracy

Maj 2009 Zapoznanie z literaturą

Czerwiec Zapoznanie z dokumentacją języków
2009 programowania dotyczącą tablic z
haszowaniem
Harmonogram pracy cd.
Sierpień Zapoznanie z literaturą
2009

Wrzesień Opis wybranych implementacji
2009

Październik Analiza i projekt aplikacji do wykonania
2009 eksperymentu

Listopad Implementacja aplikacji
2009 eksperymentalnej
Harmonogram pracy cd.
Grudzień Przygotowanie i przeprowadzenie
2009 eksperymentu

Styczeń Opis, zestawienie i analiza uzyskanych
2010 wyników

Luty 2010 Obrona pracy
Zadania na następny etap
 Wybór implementacji tablic
haszujących
 Zapoznanie z literaturą
 Zapoznanie z dokumentacją
języków programowania dotycząca
hash map
 Wstępny opis implementacji
Koniec

Dziękuję za uwagę