Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Wielkość: px
Rozpocząć pokaz od strony:

Download "Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)"

Transkrypt

1 Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie) Wprowadzenie Haszowanie jest to pewna technika rozwiązywania ogólnego problemu słownika. Przez problem słownika rozumiemy tutaj takie zorganizowanie struktur danych i algorytmów, aby można było w miarę efektywnie przechowywać i wyszukiwać elementy należące do pewnego dużego zbioru danych (uniwersum). Przykładem takiego uniwersum mogą być liczby lub napisy (wyrazy) zbudowane z liter jakiegoś alfabetu. Innym rozwiązaniem, które poznamy na dalszych zajęciach są tzw. drzewa BST. Wyobraźmy sobie, że musimy w jakiś sposób przechowywać w programie słowa. Jeżeli chcielibyśmy użyć do tego celu tablicy, to powstanie oczywiście problem, w jaki sposób zamienić (odwzorować) poszczególne słowa na liczby będące indeksami w tej tablicy. Gdybyśmy chcieli ponumerować wszystkie słowa, które występują w języku polskim i następnie używać tych numerów jako indeksów, to tablica musiałaby mieć ogromny rozmiar. Tutaj właśnie rozpoczyna się haszowanie. Polega ono na odwzorowaniu zbioru wszystkich możliwych słów S przy pomocy tzw. funkcji haszującej w stosunkowo niewielką tablicę: H : S 0,, m 1 Oczywiście nie ma cudów: nie da się znaleźć takiej funkcji H, która mogła by odwzorować duży zbiór S w znacznie mniejszy zbiór 0,, m 1 w sposób różnowartościowy. Ale jeżeli dobierze się odpowiednią funkcją H, to sytuacje, w których występują kolizje powinny się zdarzać stosunkowo rzadko. Oczywiście problem kolizji należy jednak uwzględnić. Rozwiązywanie problemu kolizji Metoda I Jest to tzw. metoda łańcuchowa. Dla każdego indeksu i 0,, m 1 przechowujemy w tablicy HashTab początek do listy elementów, które mają tę samą wartość funkcji haszującej. Tak więc nasza struktura może wyglądać tak: m-1

2 Metoda II Jest to tzw. metoda adresowania liniowego. Jeżeli dana pozycja H(k) w tablicy HashTab jest już zajęta, to szukamy nowego miejsca pod adresami H(k)+1, H(k)+2,.... Gdy dojdziemy do końca tablicy HashTab (czyli przekroczymy ostatni indeks równy m-1), to zawijamy się na początek tablicy. Można wiec to opisać pseudokodem tak: i = 1; while (((HashTab[(H(k) + i) mod m]) jest zajęta) i++; wstaw element w miejsce HashTab[(H(k) + i) mod m] Wadą tej metody jest tendencja do grupowania się obiektów wokół pierwotnych kluczy. Metoda III Jest to tzw. metoda adresowania kwadratowego. Metoda ta jest prostą modyfikacją adresowania liniowego. Zamiast dodawać kolejne wartości i dodajemy ich kwadraty i 2 : i = 1; while (((HashTab[(H(k) + i*i) mod m]) jest zajęta) i++; wstaw element w miejsce HashTab[(H(k) + i*i) mod m] Okazuje się, że w tym przypadku nie występuje tendencja do grupowania się obiektów wokół pierwotnych kluczy. Jej niewielką wadą jest to, że podczas próbkowania nie są przeszukiwane wszystkie pozycje tablicy HashTab, tj. może się zdarzyć, że przy wstawianiu nie znajdzie się wolnego miejsca, chociaż puste pozycje w tablicy HashTab nadal występują.. Najlepsze efekty uzyskuje się, gdy jako m (rozmiar tablicy HashTab) używamy liczb pierwszych. Przykład 1 Zakładając, że każde słowo możemy zapisać przy pomocy 26 podstawowych liter alfabetu łacińskiego, oszacujemy ile jest takich słów zakładając, że interesują nas słowa nie dłuższe niże 10 znaków oraz rozróżniamy duże i małe litery. Zamiana słów na liczby Spróbujmy zbudować jakąś prostą funkcje haszującą działającą na dziedzinie słów (z literami bez polskich znaków diakrytycznych ą, ć itd.). Jak wiadomo komputery używają różnych sposobów reprezentacji liter jako liczb. Jednym z takich systemów jest standard ASCII, w którym są m. in. zakodowane wszystkie litery alfabetu łacińskiego (duże i małe znaki), cyfry oraz znaki interpunkcyjne. Przykładowo litera a ma kod 97, d 100, A to 65. Obecnie przechodzi się na kodowanie przy pomocy standardu Unicode, w którym znakom przypisuje się liczby dwubajtowe. My jednak stworzymy własny kod, przyjmując: a to 1, b to 2,..., ż to 32. Oto odpowiednia tabela: a b c d e f g h i j k l ł m n o p r s t u w y z ą ę ć ń ó ś ź ż Jak możemy teraz przekształcić poszczególne słowa w jedną liczbę? Istnieje oczywiście wiele sposobów; my przeanalizujemy tylko dwa dość reprezentatywne. Przekonamy się również, że

3 oba mają poważne wady, co uświadomi nas, że tablice haszujące i odpowiednie funkcje haszujące (mieszające) są niezbędne. Przykład 2 (Dodawanie kodów poszczególnych znaków) Najprostszy sposób odwzorowania słowa na liczbę to dodanie kodów wszystkich liter. Tak więc H( kot )= =47. Przykład 3 (Mnożenie przez potęgi) Spróbujmy odwzorować słowa na liczby inną metodą. Postarajmy się teraz, aby kodów było więcej. Niech H(x 1 x 2...) = liczba, której kodem o podstawie 32 jest napis x 1 x 2..., gdzie wartości poszczególnych cyfr a, b, itd. są takie jak w powyższej tabeli. Tak więc H( kot ) = 32 2 k+32 1 o+32 0 t = = = Przykład 4 (Adresowanie liniowe) Zrealizujemy algorytm haszowania z próbkowaniem liniowym dla zbioru danych, które są liczbami całkowitymi. Dla uproszczenia przyjmijmy, że uniwersum danych do kodowania to S=long (w sensie języka C). W szczególności zdefiniujemy funkcje insert() oraz search(), które odpowiednio wstawiają i wyszukują elementy. Wskazówki W poniższym ogólnym kodzie należy za Item przyjąć typ long. Funkcja mieszająca H() dokonuje pierwszego wyboru indeksu w tablicy HashTab. Można ją różnie definiować. Jako pierwszą najlepiej wybrać proste dzielenie modulo: H(e) = e mod MAX_HASHTAB Deklaracje: const int MAX_HASHTAB =???; // dowolna liczba dodatnia typu int; najlepiej liczba pierwsza const int FREE = -1; // Uwaga! Oznacza to, że nie możemy przechowywać w naszej tabeli // wartości typu long równej -1 Item *HashTab; // dalej będzie alokacja pamięci int n; // do sprawdzania stopnia zapełnienia tablicy Funkcje: int H(long e) return (e % MAX_HASHTAB); void create() HashTab = new Item[MAX_HASHTAB]; for(int i=0; i < MAX_HASHTAB; i++) HashTab[i] = FREE; n = 0; void insert(item e)

4 int i; i = H(e); while (HashTab[i]!= FREE) i = (i + 1) % MAX_HASHTAB; HashTab[i] = e; n++; int search(item e) int i; i = H(e); while (HashTab[i]!= FREE) if (HashTab[i] == e) return i; else i = (i + 1) % MAX_HASHTAB; return -1; main() long e; cout << Test działania\n ; create(); for (e=7; e < ; e += 9) insert(e); Funkcje mieszające dla kluczy napisowych W wielu sytuacjach klucze (elementy słownika) nie są liczbami, lecz długimi ciągami znaków alfanumerycznych. Jak obliczyć funkcję mieszającą dla takiego słowa jak: bardzudlugiklucz? W 7-bitowym kodzie ASCII to słowo odpowiada liczbie: b a c z 128 0, która jest zbyt wielka, aby mogła być używana przez standardowe funkcje arytmetyczne komputerów. A oto inny sposób, który po prostu oblicza resztę z dzielenia wartości wyliczonej powyżej przez rozmiar tablicy (m = MAX_HASHTAB): int H1(char* str, int m) int h = 0; a = 127; while (*str!= 0) h = (a*h + *str) % m; str++;

5 return h; Funkcja H2(), której kod jest podany niżej ma bardziej równomierny rozkład. Oznacza to, że prawdopodobieństwo kolizji pomiędzy dwoma różnymi kluczami zbliża się do 1/m gdzie m jest rozmiarem tablicy mieszania (m = MAX_HASHTAB). Oto kod funkcji: int H2(char* str, int m) int h = 0, a = 31415, b = 27183; while (*str!= 0) h = (a*h + *str) % m; a = a*b % (m-1); str++; return (h < 0)? (h + m) : h;

Haszowanie. dr inż. Urszula Gałązka

Haszowanie. dr inż. Urszula Gałązka Haszowanie dr inż. Urszula Gałązka Problem Potrzebujemy struktury do Wstawiania usuwania wyszukiwania Liczb, napisów, rekordów w Bazach danych, sieciach komputerowych, innych Rozwiązanie Tablice z haszowaniem

Bardziej szczegółowo

Tablice z haszowaniem

Tablice z haszowaniem Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje

Bardziej szczegółowo

Tablice z haszowaniem

Tablice z haszowaniem Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2 Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania

Bardziej szczegółowo

struktury danych dla operacji słownikowych

struktury danych dla operacji słownikowych struktury danych dla operacji słownikowych tablica nieuporządkowana tablica uporządkowana lista dowiązaniowa drzewo poszukiwań binarnych drzewa zrównoważone z tablice haszowaniem tablice z haszowaniem

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Techniki multimedialne

Techniki multimedialne Techniki multimedialne Digitalizacja podstawą rozwoju systemów multimedialnych. Digitalizacja czyli obróbka cyfrowa oznacza przetwarzanie wszystkich typów informacji - słów, dźwięków, ilustracji, wideo

Bardziej szczegółowo

Systemy liczenia. 333= 3*100+3*10+3*1

Systemy liczenia. 333= 3*100+3*10+3*1 Systemy liczenia. System dziesiętny jest systemem pozycyjnym, co oznacza, Ŝe wartość liczby zaleŝy od pozycji na której się ona znajduje np. w liczbie 333 kaŝda cyfra oznacza inną wartość bowiem: 333=

Bardziej szczegółowo

Wykład 4. Tablice z haszowaniem

Wykład 4. Tablice z haszowaniem Wykład 4 Tablice z haszowaniem 1 Wprowadzenie Tablice z adresowaniem bezpośrednim Tablice z haszowaniem: Adresowanie otwarte Haszowanie łańcuchowe Funkcje haszujące (mieszające) Haszowanie uniwersalne

Bardziej szczegółowo

Techniki wyszukiwania danych haszowanie

Techniki wyszukiwania danych haszowanie Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Techniki wyszukiwania danych haszowanie 1 Cel

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Pracownia Komputerowa wykład V

Pracownia Komputerowa wykład V Pracownia Komputerowa wykład V dr Magdalena Posiadała-Zezula http://www.fuw.edu.pl/~mposiada/pk16 1 Reprezentacje liczb i znaków! Liczby:! Reprezentacja naturalna nieujemne liczby całkowite naturalny system

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119 Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek

Bardziej szczegółowo

Ś ź Ś Ś

Ś ź Ś Ś Ś ź Ś Ś Ę Ż Ę ź Ł Ą ź ź Ę ź Ą Ą Ę Ó Ś Ś Ś Ę Ś ź Ś Ś ź ź ź ź Ę Ą Ż Ą ź ź ź Ę ź Ę Ś ź ź ŚĆ Ś Ś ź ź Ą Ą Ą Ą ź ź ź Ż Ś Ą Ś Ą Ś Ń Ś Ą Ż Ś Ń Ś Ą Ą Ę Ś Ą ź ź ź Ą ź ź ź Ą Ż Ą Ą Ę ź Ę Ź ź ź Ą Ś Ą ź ź Ę ź Ą ź Ć

Bardziej szczegółowo

Ż Ń Ś Ł Ó Ś ń Ż ń ć Ż ć ń ź Ż ć ć ć ń ń ć Ż Ż ć

Ż Ń Ś Ł Ó Ś ń Ż ń ć Ż ć ń ź Ż ć ć ć ń ń ć Ż Ż ć ń Ż Ę Ń ń ń ć Ę ź ń ń ń ć Ż Ś Ż Ż Ń Ś Ł Ó Ś ń Ż ń ć Ż ć ń ź Ż ć ć ć ń ń ć Ż Ż ć Ż ć ń ń ń ć Ż ń ć ń ń Ó Ń ź ń ń Ś Ś Ż ć ć ć ć Ż ć ć ń ć ń Ż ć Ó Ż Ż Ż ć Ą ć Ó Ł Ą Ą Ó Ń ń ń ć ć ć ć ń ń ć Ń Ś ć Ś Ż ć ń Ż

Bardziej szczegółowo

Ł Ę Ż Ą Ęć Ń Ń Ł Ę

Ł Ę Ż Ą Ęć Ń Ń Ł Ę Ł Ł Ł Ń Ń Ł Ę Ż Ą Ęć Ń Ń Ł Ę Ł ć ć ć ź ć ć ź ć ć ć ć Ś Ś Ł ć ć ć Ę Ą ć ć Ź ć ć Ó ć ć ź Ł Ń ć Ś ć ć ć ć ć ć ć Ń Ę ć ć ć Ś Ś ć Ę ź Ń Ę ć Ń ć ź ć Ń ć ć ć ć ć ć ć Ę ź ć ć ć ć ć ć ć ŚĆ ć ź ć ć Ł ć ź Ą ć ć Ą

Bardziej szczegółowo

Ą Ś Ó

Ą Ś Ó Ó ź ź Ó Ą ć Ą Ś Ó Ś Ę Ś Ł Ź ć Ś ć Ź Ę Ś Ą Ó Ó ź ć ć Ź Ź Ę ć ź ź Ń Ł Ź Ź ź Ń Ź ć Ś Ę Ą Ś Ź Ń Ń ć Ó Ś Ś ź Ź Ź Ą Ń Ą ź Ń Ł Ń Ń Ń ź Ń ć ć ć ź ć Ś Ń ć ć Ę ć Ę ć Ę Ź Ś Ó Ź Ę Ś Ę Ź Ó Ź Ę Ń ć ź Ź Ó Ę ć Ś Ź Ń ć

Bardziej szczegółowo

Ę ż Ó Ł Ść ą ą ą Ą ć ż ą ż ń ą ć ż ć Ę ą ż ą ą ż ą ź ą ń ą ń ą ą ż ć

Ę ż Ó Ł Ść ą ą ą Ą ć ż ą ż ń ą ć ż ć Ę ą ż ą ą ż ą ź ą ń ą ń ą ą ż ć ż Ś Ą ć ą ą ą ż ż ą ą ć ą ż Ę ą ć ż ć Ó ą ą ń ą ż ń ą Ń ą ą ą Ą ą ż ż Ą ż ą ź ą ą ż ż Ę ź ą ż ą ą ą ż Ź ą ń Ę ż Ó Ł Ść ą ą ą Ą ć ż ą ż ń ą ć ż ć Ę ą ż ą ą ż ą ź ą ń ą ń ą ą ż ć ć ą ż ą ą ą ą ć ć ć ą ą

Bardziej szczegółowo

ś ś Ż ś Ń Ń Ę Ł ć ś Ł

ś ś Ż ś Ń Ń Ę Ł ć ś Ł Ń Ń ś Ń ś ś Ż ś Ń Ń Ę Ł ć ś Ł Ń ś ś Ą ś Ł ś Ń Ą ść ś ś ść ć ś ź ść ść Ą Ń ść ś ść Ń ś ś ć Ń ś ć ć ć Ń Ł Ń ć Ń Ł Ę ś Ł Ł ć ś ź ć ś ś ć ść ś Ł ś Ł Ł Ń Ń Ś ść ś ś ś ść ć Ń ść ść ś ś ść ś ś ś ś ć Ń ść Ł ś

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne

Bardziej szczegółowo

ć ę ę ć ę Ś ę Ń ę ź ę ę ę Ś ę ę ę Ó Ł Ł Ę Ą ę

ć ę ę ć ę Ś ę Ń ę ź ę ę ę Ś ę ę ę Ó Ł Ł Ę Ą ę ć ę ę Ł Ą Ś Ś ę Ś ę ę ć ć ę ę ę ę ć Ś ć ę ę ć ę Ś ę Ń ę ź ę ę ę Ś ę ę ę Ó Ł Ł Ę Ą ę Ą ę Ą ę ć ę ć Ą ć ę ć ć ę Ę ę Ś Ą Ł Ó ę ć ę ę ę ę Ą ć ęć ę ć ę ę ę ę ę ę ę ę ę ę ę ę ę ę ę ę ę ę ę ę Ą ę ę ę ę Ń ę Ó

Bardziej szczegółowo

Ó ń ń ń ń ń ź Ł ć ć ź ć ź ć ć ź ź ć Ó ń ć ń ć Ą ź ć ć ź ń ń ń Ę Ś Ł ć ń ń ń Ó Ó Ó Ó Ą Ó ź ć Ó ź ń ć ź ź Ę Ś ć Ę Ż Ś ź Ć ć ź ć ć ń ź ć Ł Ł Ó Ś ć ć ź ć Ś ń Ł Ó Ś ć Ś Ś ć Ó Ś ź ń ź ź ń Ę Ę ń Ó ń ń ź ź ń

Bardziej szczegółowo

Ł Ł Ę Ż ź

Ł Ł Ę Ż ź Ł Ł Ł Ę Ż ź Ż Ę Ź ć Ź ć ć ć ć ć Ż ć ź Ę Ź Ź Ę Ź Ą Ź Ą Ą Ż Ż Ę Ń Ź Ź ć Ę ć Ę Ę Ę Ę Ę Ą Ę ź ć Ą Ą Ę Ź Ł Ę Ż Ż Ą Ź Ą Ź Ź Ę Ń Ź Ś Ż Ą Ź ź ć ć Ą Ą Ł Ś Ź Ę Ę Ź Ę Ę Ą Ł Ę Ą Ę Ż Ą Ł Ł Ę Ę Ę Ę ź ź ć Ź ź Ś ć Ó

Bardziej szczegółowo

ć ć Ę Ó Ś ż ż Ś ż ż ż Ęć ż ć ć ż ż

ć ć Ę Ó Ś ż ż Ś ż ż ż Ęć ż ć ć ż ż Ń ć Ś ż ź ź ź ć ć Ę Ó Ś ż ż Ś ż ż ż Ęć ż ć ć ż ż Ę Ę ć ć ż Ł ż ź ż ż ż ć ż ż Ś ć ż ż ż Ś Ę ż Ó ć Ą ż ż ż ż ż ć ż ć ż ć Ą Ą ć Ę Ś Ś Ł ć ż ż ż Ł Ś Ś Ł ż Ę Ę ż ć Ę Ę ż ż ż Ł Ś ż ć ż ż ż ż Ś ż ż ć Ę ż ż ż

Bardziej szczegółowo

ń ż ń ń Ą ń ż ż ń ż ż ż Ż ń Ą ń

ń ż ń ń Ą ń ż ż ń ż ż ż Ż ń Ą ń Ł Ą Ę ż ż ż ż Ó ż Ż Ż Ę Ż Ą Ż Ż ż Ś Ż Ś ń ż ń ń Ą ń ż ż ń ż ż ż Ż ń Ą ń Ę Ó Ł Ś ż ż Ę Ę ż Ó ż Ś Ę ń ń ń ż ń ń Ę Ę ń ż Ą ń Ś Ś Ę ń Ż Ę Ę ż ń ń ń ń ż Ę ń ń ń ń Ł Ę ń ń ń ń ż Ę ż ż ż Ź ż Ż ż Ż ż ż Ę ń Ę ż

Bardziej szczegółowo

ż ć Ń Ł Ż Ść Ść ć Ż Ść Ż ć ć Ż ź Ś ć ć Ó ć ć Ść

ż ć Ń Ł Ż Ść Ść ć Ż Ść Ż ć ć Ż ź Ś ć ć Ó ć ć Ść ć Ż ż Ę ż ć Ń Ł Ż Ść Ść ć Ż Ść Ż ć ć Ż ź Ś ć ć Ó ć ć Ść Ż Ść Ż ć Ż Ż Ż ż Ż ć Ł Ś Ż Ś ć Ż ć Ż ż ź Ż Ś ć ć ć ć Ó ć Ż Ść Ż ć ć Ż ż Ł Ż Ę ć ć ć Ż ć ć Ż ż ż ć Ż Ż ć Ł ć Ż Ć Ż Ż Ś Ż Ż Ż ć Ż ć ż ć Ż Ś Ż ć Ł ć

Bardziej szczegółowo

ć ć

ć ć Ł Ź Ź Ś ć ć ć Ś ź Ę Ł ć ć ź ć Ś Ź Ź ź ź Ź ź ź Ś ć ć ć ć ź ć Ę Ś Ą Ń Ś Ł ź Ś Ś Ź Ś ź Ł Ź Ź ź Ś ć Ń Ś Ł ć Ś Ł Ę Ś ź Ź Ś Ą Ę Ś Ę ć ć Ś Ź Ł Ź Ś Ć Ść ć Ś Ś ź Ź ć Ź ć Ł ź ć Ś Ą ć Ść ć ć Ś Ś Ś Ą Ś Ś ć Ś Ś ć ć

Bardziej szczegółowo

Ż Ż Ł

Ż Ż Ł Ż Ż Ł ć Ż Ł Ń Ń Ż Ś ć Ę ć ć ź ć ć Ź Ę ź Ń Ł ć ć Ę ć Ć Ę ć ć ć Ą Ń ć Ą Ą Ś Ę Ć Ę ć ź Ę Ł Ś ć Ą ź Ą Ń ć Ż Ę ć Ó ć ć ć Ę ć ć Ń ć ć ć ć ć Ę ć Ą ć Ę Ż Ć ć Ć ź Ą ź Ś Ę ź Ę Ą ć Ę Ę Ś Ń ź ć ć ć ź Ż ć ŚĆ Ę Ń Ń

Bardziej szczegółowo

ź Ż Ż Ś ć ć Ł ż Ż Ż Ż Ż Ł Ż Ł Ż Ż Ż ż ż ż ż ż ż Ż ć Ż Ś Ś Ń Ść

ź Ż Ż Ś ć ć Ł ż Ż Ż Ż Ż Ł Ż Ł Ż Ż Ż ż ż ż ż ż ż Ż ć Ż Ś Ś Ń Ść Ż Ż ć Ę Ę Ę ż ć ż Ś Ż Ż Ś Ż Ó ź Ż Ż Ś ć ć Ł ż Ż Ż Ż Ż Ł Ż Ł Ż Ż Ż ż ż ż ż ż ż Ż ć Ż Ś Ś Ń Ść Ś Ś Ż ż Ż Ż Ł Ż ć ż Ś Ś Ż Ż Ś Ś Ż Ż ż Ż Ż Ść Ż Ż ż Ż Ż Ś Ą ć Ż ż Ł Ą ż Ś ż ż Ę Ż Ż Ś Ż Ę ć ż ż Ę ć ż ż Ż Ś Ż

Bardziej szczegółowo

ć ć Ść ć Ść ć ć ć ć

ć ć Ść ć Ść ć ć ć ć Ź Ść ć ć ć ć Ść ć ć ć ć Ść ć ć Ść ć Ść ć ć ć ć Ź Ź ć ć Ść ć ć ć ć ć ć ć ć ć ć ć ć Ść ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć Ś ć ć ć Ł ć ć Ł Ść ć ć ć ć ć Ź ć Ść ć ć Ść ć ć Ś ć Ł ć ć ć ć

Bardziej szczegółowo

ć Ś

ć Ś Ą Ą Ń Ą ć Ś Ą ć Ś Ś Ś Ś Ś Ś Ś Ś Ś Ś ź Ś ć Ś Ś ć Ś Ś ź Ż ć ź Ż ć Ą Ś ź ź ć Ę ć Ś ć Ś Ś Ś ź Ś Ś Ś Ś Ś Ś Ś Ś Ą ć ć ć ć Ę ć ć Ś Ś Ś ć ć ć Ś Ś Ś Ś ć Ą ć ź ć ć Ę Ą Ś Ę ć ć ź Ę ć ć Ś Ę ź ć ć Ą Ę Ę Ą Ś Ś ź ć ć

Bardziej szczegółowo

ń ń ń ż ć Ł ż ż ń ż Ą ń Ż ż

ń ń ń ż ć Ł ż ż ń ż Ą ń Ż ż Ł ż ż Ż ć Ź ź ż ń ń Ż ń ń ń ż ć Ł ż ż ń ż Ą ń Ż ż ń ń ż ć ć ń Ó ż Ł Ł ż ż Ł ć Ó ć ć ż ż ć ć ć ż ć ć Ó ż Ź Ż ć ź ż Ó ć ć ń Ł ń ń ń ć Ś ż Ź Ź Ł ż ż ć ź Ź ć ć Ż Ó ń ć ć ń Ż ż ż Ą Ż ż Ź Ż ć ż Ó Ź ź Ą Ż Ł ż

Bardziej szczegółowo

ń ż ś

ń ż ś Ł ń ń ś ś ń ń ń ś ż Ń ż ż ć Ą ń ż ż ń ż ś ś Ł ń ń ść Ł ż Ł Ń ź ść ń ż ż ż ś ś ś ż ś ż ż ś ń ń ż ź ż ż ż ń ź ń ś ń ń Ą ć Ę Ł ń Ń ż ść Ń ż Ę ż ż ż ż ż ż ż ść ż ś ń ż ż ż ż ś ś ś ś ż ś ż ś ć ś ż ż ć ś ż ć

Bardziej szczegółowo

Ść ć Ż ć Ż Ś ć ż ń ż Ż ć Ś Ż ń

Ść ć Ż ć Ż Ś ć ż ń ż Ż ć Ś Ż ń ć Ę ć Ę Ę Ż Ść ć Ż ć Ż Ś ć ż ń ż Ż ć Ś Ż ń ń Ż ż Ń ć ń Ó ć Ę Ż ć ć Ś Ż Ż ż Ż Ż Ż ń ż ż Ż Ż ż Ż Ż ć ć Ż ń ń ć ć ć ż Ś Ł ż Ę Ż ć ć ć ń Ż ń Ł ń ż ć ć Ż ż Ó ć ć ń ć Ż Ż ń ń ń ż Ż ć Ż ż Ż Ó ż Ż ć ż ż Ę Ż Ż

Bardziej szczegółowo

Algorytmy i Struktury Danych, 9. ćwiczenia

Algorytmy i Struktury Danych, 9. ćwiczenia Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

Lista, Stos, Kolejka, Tablica Asocjacyjna Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,

Bardziej szczegółowo

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego Arytmetyka cyfrowa Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego (binarnego). Zapis binarny - to system liczenia

Bardziej szczegółowo

Pracownia Komputerowa wyk ad V

Pracownia Komputerowa wyk ad V Pracownia Komputerowa wyk ad V dr Magdalena Posiada a-zezula Magdalena.Posiadala@fuw.edu.pl http://www.fuw.edu.pl/~mposiada Magdalena.Posiadala@fuw.edu.pl 1 Reprezentacje liczb i znaków Liczby: Reprezentacja

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Algorytmy w teorii liczb

Algorytmy w teorii liczb Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,

Bardziej szczegółowo

Ą Ł Ę Ń Ą Ó ŚĆ Ś ć Ó ń ć ŚĆ ć ć

Ą Ł Ę Ń Ą Ó ŚĆ Ś ć Ó ń ć ŚĆ ć ć ń Ą Ą Ł Ę Ń Ą Ó ŚĆ Ś ć Ó ń ć ŚĆ ć ć Ś Ó ć ć ć ć Ż Ę Ż Ś Ć ń ć ń ć ć ć Ż Ż Ć ć Ż ć ć ć ć ć Ż Ż Ś Ć ń Ć Ó ć Ś Ś Ź ć ć ń ć ć Ż ć ć Ć Ż ń ć ć Ś Ć ć ŚĆ ć ć Ś ć Ż ć ć Ż ŚĆ Ś ń Ś Ż Ś ń Ż ń Ś ŹĆ Ś Ś Ś ń Ś ć Ó

Bardziej szczegółowo

Ż Ę ź Ó

Ż Ę ź Ó ź ź Ę Ą Ż Ę ź Ó Ź Ó ź Ę ź Ę Ę Ą Ź Ą Ń Ź Ź Ź Ź ź Ą ź Ę Ą Ć ź ź ź Ę ź Ź ź ź Ę Ł ź Ź Ź Ź ź ź Ź Ź ź ź Ą Ł Ó Ó Ą Ą Ś Ę Ę Ą Ą Ś Ś Ł Ę Ę ź ź Ó Ą Ą Ą Ł Ą Ę Ź Ę ź ź Ę Ą Ź Ź ź Ł Ą Ł Ą ź Ą ź Ł Ą Ó ĘŚ Ą Ę Ę ź Ź Ę

Bardziej szczegółowo

Ą Ź ć Ń Ą ć Ź Ź

Ą Ź ć Ń Ą ć Ź Ź Ó Ó Ż Ę ć Ą Ź ć Ń Ą ć Ź Ź Ń Ą Ą Ź Ź Ń ć Ś Ł ć ć ć ź ć ć ć ć ć ć ć Ź ź ć ć Ł ć Ź ć ć ź ć ć Ą ć ć ć ć ź ć Ą Ż Ż ć ć ć ć ć ć ć ć Ź Ź ć ć Ń ć ć ć ć Ą ć ć ć ć ć ć Ź ć ć ć Ć Ń Ż Ź ć ć Ń ć ć ć ć Ą Ń ć ć ć Ą ć

Bardziej szczegółowo

Ż Ź Ź ź Ż Ż Ź Ą Ą Ż ź Ś Ż Ż Ś Ź Ś Ą

Ż Ź Ź ź Ż Ż Ź Ą Ą Ż ź Ś Ż Ż Ś Ź Ś Ą Ś Ą Ó Ś Ś Ą Ś Ó Ż ć Ś Ż Ę ć Ż ź Ż Ź Ź ź Ż Ż Ź Ą Ą Ż ź Ś Ż Ż Ś Ź Ś Ą Ą Ż Ź Ś Ą Ń Ś Ą Ż ć Ż Ż Ż ć Ż Ż Ś Ź Ź Ż Ą Ń ź ź Ł Ę ć ć ć Ń ź ć Ż ź Ż źó ć Ż Ż Ó Ń Ż Ó Ź Ó Ż Ź Ż Ż Ż Ż Ę Ż Ż ć ć Ż ć Ó Ż Ż Ż Ą Ź Ż Ż

Bardziej szczegółowo

Ł Ś ś

Ł Ś ś ż ź Ą ą ą ą ą Ł ś ż ś ś ą ż Ż ś ż ż ż ą ż Ł ą ą ą ń ą ś ś ą ą ą ż ś ą ą ż ą ą ą ą ż ń ą ść Ł Ś ś ś ś ą ś ś ą ń ż ą ś ź Ż ą ą ż ś ż ś ść Ź ż ż ś ą ń ą ś ż Ź Ź ż ż ż ą Ó Ż Ź ą Ś ż ść ż ą ź ż ą ą Ź ą Ś Ż

Bardziej szczegółowo

Ł Ą Ó Ł ć Ą ć ć

Ł Ą Ó Ł ć Ą ć ć Ą Ł Ż Ż Ą Ń Ą Ś ź Ść ć Ł Ą Ó Ł ć Ą ć ć Ó ć Ż ż ż ż ć ć ż ć ż Ść Ż ć Ó ź Ł ć Ą ż ż ć ć Ś Ą ż ć Ę Ś Ś Ł ć ć ż ć ź Ż Ę Ó Ś ć ć Ś ż ż ć ć Ż Ó Ń ć Ó Ż Ść Ś ć ć Ż ć Ę ć Ł Ź ŁĄ ż Ó ć ć Ę Ż Ę Ł Ś Ł Ł Ż Ż Ż Ż ć

Bardziej szczegółowo

Ę Ł ź ź ć ź ć Ń ć ź ź Ł

Ę Ł ź ź ć ź ć Ń ć ź ź Ł Ł Ą Ą Ą ź Ł Ę Ń ź ć ć ź ź Ę Ę Ł ź ź ć ź ć Ń ć ź ź Ł ź ć Ń ź Ą Ó Ę Ę ź ć ź ć Ę ć Ż ć Ę Ę ć Ą ć Ą Ł ć Ą ć ć Ń Ń Ń ź ć Ń Ł Ń Ń ź ć ć ć Ę ć Ń ć Ł ć Ń ć ź ź Ę ć Ś ź ć Ą Ę ć Ą ć Ź Ń ź ć ź Ż ć Ł ć Ń ć ź Ą ź Ł

Bardziej szczegółowo

Ó Ż ż Ć ż ż ż Ó Ę Ę Ó Ó ż Ó Ł ż Ł

Ó Ż ż Ć ż ż ż Ó Ę Ę Ó Ó ż Ó Ł ż Ł ż Ó Ż Ż ż ź ż ż Ź Ż ż Ę Ą Ó Ż ż Ć ż ż ż Ó Ę Ę Ó Ó ż Ó Ł ż Ł Ń Ę ż ż Ź ż Ę Ż Ż ż ż ż ż ż ż ż ż ż ż ż Ź ż ż ż Ź Ó Ś Ó ż Ś Ą Ą ż ż Ł Ą Ń Ą Ą Ł ż Ź ż ż ż ż ż ż ŁĄ Ł Ś ż Ż ż Ś ż ż ż Ż ż Ż Ż ż Ż Ż Ż ż ż Ń ź

Bardziej szczegółowo

Ł Ń ś ń ć Ź ś ń

Ł Ń ś ń ć Ź ś ń Ł Ł Ł Ń ś ń ć Ź ś ń ŁĄ Ę Ą Ą Ź ć ś ś Ź ć ć ć ć Ą ń ść ść ń Ź ń ś ś ń ń ń ń ń ś ń ś ść ś Ą ź Ź ś ś ń ć ń ń Ą ń ś ś ś ś Ź ś Ź ś ś Ź ś Ł Ś Ó Ą Ź Ą Ą Ó Ó ń ś ć ć ś ń ń Ść ń Ź ść ść ść ś ś ń ść ś ść ć ś Ń ć

Bardziej szczegółowo

ń

ń Ą ń Ą ż ń Ł ć ń ć ż ć ż Ą ć ń ź ż Ę ż ż ć ń ć ż ć ż ć ż ń ż ć ż ń ń ń ż ń ń ż Ł ń ż ń ć ń ż Ń ć ż ń ń ń ń ń ż ż Ą ć ż ć ż ć ż ć Ń ć ć ń ć ć ń ć ć ż ń ń Ń ń ż ć ź ń ż ż ŁĄ ż ń ż ż ż Ą ż ć ń ż ć ż Ń ż Ń

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 4 1 / 1 DZIELENIE LICZB BINARNYCH Dzielenie

Bardziej szczegółowo

ć Ą ź ć ć Ż ź ź Ą ź ć ź ć ź

ć Ą ź ć ć Ż ź ź Ą ź ć ź ć ź Ż ź ź ź Ę Ą Ł ć Ą ź ć ć Ż ź ź Ą ź ć ź ć ź Ś Ź Ń Ź Ę Ę ź Ł ź Ż Ę ź Ż Ż Ż Ź Ź Ń ź Ź ź ć Ż Ę ć ć Ą ź ź Ź Ż Ś ź Ę Ę Ż Ż Ś Ę Ę ć Ż Ż Ń Ł Ń Ż Ż ź Ą Ą ź ź ź ć Ą ć ź Ż ć Ż Ę Ń Ę Ż Ż Ż Ó Ż Ż Ż Ż Ą Ł Ż Ł Ł Ł Ż Ż

Bardziej szczegółowo

Ę Ę Ę Ś Ł Ł Ł Ś

Ę Ę Ę Ś Ł Ł Ł Ś Ł Ł Ś Ś Ś Ę ĘĄ Ę Ę Ę Ś Ł Ł Ł Ś Ł Ł Ł Ś Ś Ł Ś Ę ź Ź Ż Ę Ś ć Ł Ę Ł Ś Ł Ł ź Ś Ś Ń Ł Ś Ą Ś Ł Ł Ż ć ć Ż Ś Ś Ł Ś Ś Ż Ż Ż Ż Ł Ż Ś ć ć Ż Ż Ż Ż ć Ś Ż ć Ż Ż Ł Ą Ł Ń ź Ń Ń Ę Ń Ą Ń Ż Ż Ó Ż Ż ź ź Ź Ż Ż Ż Ś Ś Ż Ż ź

Bardziej szczegółowo

Ó Ą Ł Ń ń ć ń ń ć Ń Ń ń Ń ń Ń ć ć ć Ń ź ź

Ó Ą Ł Ń ń ć ń ń ć Ń Ń ń Ń ń Ń ć ć ć Ń ź ź Ł Ą ń ń Ń ź Ą Ń Ń ź ń ń ń ń ź Ń ń Ń Ó Ą Ł Ń ń ć ń ń ć Ń Ń ń Ń ń Ń ć ć ć Ń ź ź ń ć ń Ń Ń ń ź ć ń Ń Ę ń Ń Ż Ń ń Ń ń Ń Ą Ń ć Ń Ń ź Ę ź ź ć ź ć ń ń ń ń ć ć ć Ń Ą ć Ą Ż Ó ć ń ć ń ć ć ź ź ć ć Ń Ń ć ń ń Ę ń ń

Bardziej szczegółowo

ż ś ż ś Ę ś ż ś ś ś Ł ś ż Ł ż ś ś ś ż

ż ś ż ś Ę ś ż ś ś ś Ł ś ż Ł ż ś ś ś ż Ą Ń Ę ś Ę Ą ś ś ż ż ś ś ś ś ż ś ż ś Ę ś ż ś ś ś Ł ś ż Ł ż ś ś ś ż ś ś ś ś ś Ś ś ś ś ś ś ż ś ś ż ś ś ż Ś ś Ź ś ś ś ść ś ś ż ż ś ś ś ś ś ś ś ż ż ś ż ś Ę ś ś ż ś ś ż ś ś ś ś ś ś ż ś ż ś ć ś ż ś ż ś ś ść ż

Bardziej szczegółowo

ść ś ń ś ś ź ś ć Ą ś Ą ś ń ś ń ń ń ń Ń ć ź ń ś ń ń Ń ć ń ś ś

ść ś ń ś ś ź ś ć Ą ś Ą ś ń ś ń ń ń ń Ń ć ź ń ś ń ń Ń ć ń ś ś Ł Ś ś Ą ś ć Ń ść ź ń ś ś ń Ę ńź ź ś ść ś ń ś ś ź ś ć Ą ś Ą ś ń ś ń ń ń ń Ń ć ź ń ś ń ń Ń ć ń ś ś ś ń ś Ń ź ź ś ć ź Ę ś ść ś ść ś Ń ń ń ś ść ć ś ń Ę ś Ń ś ść ś ś ś ś ś ś ń ś ć ś ś Ń ń ś ń Ą ń ś ń Ń Ę ś

Bardziej szczegółowo

Ó Ń Ś Ą Ś Ń Ś Ś

Ó Ń Ś Ą Ś Ń Ś Ś ź Ó Ń Ś Ą Ś Ń Ś Ś Ś Ą Ś Ń Ś Ę Ń Ą Ą Ś ź Ś ć Ó Ą Ś Ć ć Ś ć Ń ć Ń Ó Ą Ś ć Ó ć ć ć Ń Ę Ń ź ź ć ć Ę ć ć Ń Ń Ę Ą ź Ą Ń Ń Ą Ą Ą Ń ź ć Ń ź Ę ź ć Ą ć Ń ć Ś Ś Ń ć Ń ź ć Ś ź ź Ń Ń Ń ź Ę Ę ź Ę Ś ź Ń ź ć Ń Ń Ń

Bardziej szczegółowo

Ą Ś Ń Ś Ą Ś Ń

Ą Ś Ń Ś Ą Ś Ń ź Ż Ą Ę Ą Ś Ń Ś Ą Ś Ń Ą Ś Ś Ś Ś Ą Ś Ś ź Ś Ś ŚĆ Ń Ń Ń Ś Ń Ń Ń ć Ń Ń Ó Ą Ś Ą Ń Ń Ń ź ć Ń Ń Ń ć Ń Ę Ę Ś ć Ę Ń Ń ź Ą ć Ń Ą Ś Ń Ę Ń Ę Ę Ż Ś Ń Ń Ń ć Ę Ę Ę ć Ę Ą ć Ń Ą ć Ś Ń Ń Ń ć Ń Ę Ń Ń Ę ź Ń Ą Ę Ę Ę Ę Ę Ę

Bardziej szczegółowo