Algorytmy i struktury danych Funkcje haszujące, wyszukiwanie wzorca

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Wstawianie i wyszukiwanie kluczy w tablicach i drzewach binarnych
STRUKTURY DANYCH.
C++ wykład 9 ( ) Szablony.
C++ wykład 13,14,15 (16/23/ ) STL.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Standardowa biblioteka języka C++
Haszowanie Jakub Radoszewski.
Wzorce.
INDEKSY I SORTOWANIE ZEWNĘTRZNE
Algorytmy – różne przykłady
Standard Template Library
Wprowadzenie do języka skryptowego PHP – cz. 2
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Elementarne struktury danych Piotr Prokopowicz
WPROWADZENIE DO BAZ DANYCH
Kolekcje Collection Bag SequenceableCollection ArrayedCollection Array
MS Access 2000 Normalizacja Paweł Górczyński 2005.
Sortowanie Zajęcia 13.
SSL - założenia i realizacja Prezentacja na potrzeby projektu E-Bazar Grupa R&D.
Metody ataku na algorytmy kryptograficzne oparte na informacjach z ulotu elektromagnetycznego Robert Borzęcki.
ZŁOŻONOŚĆ OBLICZENIOWA
„Piramid Match Kernel”
Wykład 2: Systemy klasy C.A.T. (Computer-Aided Translation)
mgr inż. Adam Łukasz Kaczmarek Katedra Inżynierii Wiedzy, WETI PG
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
Klasyfikacja Obcinanie drzewa Naiwny klasyfikator Bayes’a kNN
Techniczne aspekty realizacji podpisu cyfrowego z zastosowaniem algorytmu RSA mgr inż. Wojciech Psik Zespół Szkół Elektronicznych i Ogólnokształcących.
Ochrona danych wykład 3.
Autor: Maciej Piwowarczyk
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
Autor: Maciej Piwowarczyk
Algorytmy i struktury danych Dodawanie wielomianów
Zadania Bazy danych.
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
minimalizacja automatów
dr inż. Jarosław Makal mgr inż. Adam Idźkowski
O relacjach i algorytmach
Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B.
Bazy danych.
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Złożona składnia języka C++
Algorytmy i struktury danych
Algorytmy i struktury danych
Plan prezentacji Zarys projektu Geneza tematu
Rejestr systemu Windows
Języki i automaty część 3.
Tablice. Tablica struktura danych, służy do przechowywania danych tego samego typu, zapisana w pamięci w sposób ciągły. Deklaracja tablicy PascalC++,
Wybrane zagadnienia relacyjnych baz danych
WPROWADZENIE DO BAZ DANYCH
Dynamiczne struktury danych
Algorytmy i Struktury Danych
Szyfrowanie i deszyfrowanie
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Wymiana podstawy oraz sprawdzanie autentyczności partnera. Algorytm wymiany małego klucza używaniem metody Diffiego - Hellmana.
JĘZYKI ASSEMBLEROWE ..:: PROJEKT ::..
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
X Y X Y X Y Aby sporządzić wykres danej funkcji utwórz kolejno wykresy następujących funkcji : Sprawdź, czy dobrze narysowałeś wykresy.
Powtórzenie wyk ł adu 10 Fizyczna organizacja danych w bazie danych. Indeksy.
Algorytmy i Struktury Danych Struktury Danych
NP-zupełność Problemy: rozwiązywalne w czasie wielomianowym - O(nk)
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Mapa STL – C++. Problem polega na tym, że najczęściej chcielibyśmy przechowywać w zbiorze elementy jakiegoś bardziej złożonego typu, których on nie będzie.
Kolekcje (3) Zbiory. Porównywanie i porządkowanie elementów kolekcji. (c) Krzysztof Barteczko 2014.
S KANER TĘCZÓWKI OKA Praca dyplomowa inżynierska – Maciej Stępski
Listy.
Indeksy.
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

Algorytmy i struktury danych Funkcje haszujące, wyszukiwanie wzorca Piotr Kustra Faculty of Metals Engineering and Industrial Computer Science Department of Applied Computer Science and Modeling

Tablica mieszająca funkcja haszująca W informatyce tablica mieszająca lub tablica z haszowaniem (ang. hash table, niekiedy błędnie tłumaczone jako "tablica haszująca") to struktura danych, która jest jednym ze sposobów realizacji tablicy asocjacyjnej, tj. abstrakcyjnego typu danych służącego do przechowywania informacji, w taki sposób aby możliwy był do nich szybki dostęp. Tablica mieszająca umożliwia również szybkie porównywanie danych, np. fragmentów tekstów, plików.

Funkcje haszujące Przykłady funkcji haszujących h(x)=m mod x -> np. h(x)= m mod 13 Adresowanie liniowe h(k,i)=(h’(k)+i)mod m Adresowanie kwadratowe h(k,i)=(h’(k)+c1i+ c2i2)mod m Adresowanie dwukrotne h(k,i)=(h1(k) + ih2(k))mod m

Funkcje haszujące Dla zbioru S, doskonała funkcja haszująca przyporządkowuje każdemu elementowi z tego zbioru liczbę całkowitą bez kolizji (brak dwóch taki samych kluczy). Funkcja haszująca: h(x)=x mod m -> np. h(x)= x mod 13 Dobrymi wartościami m są liczby pierwsze niezbyt bliskie potęgom 2. Niech zbiór elementów X składa się z następujących słów: {antek, piotr, olek, asia, adam, basia, ola, ina} Niech nr będzie funkcją przypisującą literom alfabetu kolejno liczby: 1 - 26, np. nr(a) = 1, nr(b) = 2 itd. h(Antek) = (1+15+20+5+11)=52mod13=0

Przykład funkcji haszującej Niech zbiór elementów X składa się z następujących słów: {Antek, Piotr, Olek, Asia, Adam, Basia, Ola, Ina} h(Antek) = (1+15+20+5+11)=52mod13=0, h(Piotr) = (17+9+16+20+18) mod 13 = 80 mod 13 = 2, h(Ola) = (16+12+1) mod 13 = 3, h(Kasia)= (11+1+19+9+1) mod 13 = 2,??? (kolizja)   1 2 3 4 5 6 7 8 9 TAB: Antek Piotr Ola Asia Olek Basia Adam Aga

Rozwiązanie kolizji Metoda adresowania otwartego Metoda łańcuchowa

Metoda łańcuchowa 1 2 3 4 5 6 7 h(Antek) = (1+15+20+5+11)=52mod13=0, h(Piotr) = (17+9+16+20+18) mod 13 = 80 mod 13 = 2, h(Ola) = (16+12+1) mod 13 = 3, h(Kasia)= (11+1+19+9+1) mod 13 = 2,??? (kolizja) 1 2 3 4 5 6 7 Antek null Piotr Kasia null Ola null null null null

Metoda łańcuchowa Insert(x, head) { key=FunHash(x) AddList(x,head[key]) } Search(x, head) exist=SerchList(x,head[key]) return exist FunHash(x) { return x mod 13 }

Wyszukiwanie wzorca Algorytm naiwny Algorytm Rabina Karpa Automat skończony

Algorytm naiwny Tekst T a b c s=3 Wzorzec P a b

m=5 (ilość elementów klucza) Algorytm Rabina Karpa m=5 (ilość elementów klucza) Wzorzec P 3 1 4 5 Przekształcenie klucza:

Algorytm Rabina Karpa 9 Tekst T 2 3 5 9 1 4 6 8

Algorytm Rabina Karpa analizowany tekst 2 3 5 9 1 4 6 7 8 9 3 11 1 7 4 1 4 6 7 8 9 3 11 1 7 4 5 10 wektor kluczy „podejrzane pola” „podejrzane pola” należy interpretować algorytmem naiwnym

Wyszukiwanie wzorca w oparciu o automat T[i] Stan ø(T[i]) - 1 2 3 4 5 6 7 8 9 10 11 a b c 1 2 3 4 5 4 5 6 7 2 3 stan a b c 1 2 3 4 5 6 7 klucz: a, b, a, b, a, c, a