Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B.

Slides:



Advertisements
Podobne prezentacje
Sortowanie przez scalanie
Advertisements

Algorytmy sortowania i przeszukiwania
Schemat blokowy M START KONIEC
Grażyna Mirkowska PJWSTK 15 listopad 2000
Programowanie w języku Visual Basic
Programowanie I Rekurencja.
Operacje zmiennoprzecinkowe
ALGORYTMY I STRUKTURY DANYCH
pseudokody algorytmów
Tablice.
Metody numeryczne © Jacek Śmietański, Kraków 2005.
XML. Pierwszy dokument XML Witaj świecie! Elementy i atrybuty niezwykle oryginalny Witaj świecie! Druga możliwość: Witaj świecie!
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Odkrywanie wzorców sekwencji
Semantyki programów współbieżnych " Determinizm programów sekwencyjnych, " Nie-determinizm programów współbieżnych, " prawdziwa równoległość vs.przeploty.
Edytor tekstu.
Autor: Maciej Piwowarczyk
Algorytmy i struktury danych Funkcje haszujące, wyszukiwanie wzorca
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Kod Graya.
Podstawy programowania
Hipoteza cegiełek, k-ramienny bandyta, minimalny problem zwodniczy
SQL – podstawowe funkcje
Algorytmy i struktury danych
MATEMATYCZNE METODY SZYFROWANIA
Podstawy programowania II
Operacje na strukturach listowych
Sekrety klawiatury czyli jak sobie poradzić bez myszki
Pierwsze programy.
Algorytmy i Struktury Danych Typy algorytmów
TABLICE C++.
Algorytmy i struktury danych
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Edytor Vi.
Przesunięcie wykresu funkcji
Liczby całkowite dodatnie BCN
INSTRUKCJE Umożliwiają zapis algorytmu, służą do sterowania przebiegiem programu. warunkowe (podejmowanie decyzji) 1. if-else „jeżeli”, 2. switch-case.
Zasady przywiązywania układów współrzędnych do członów.
Wykres funkcji kwadratowej
Podstawy języka Instrukcje - wprowadzenie
Podstawy Techniki Cyfrowej
Temat 7: Instrukcje warunkowe
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
Excel Filtrowanie Funkcje bazodanowe
MODELOWANIE ROZPRĘŻANIA GAZU Programowanie probabilistycznego modelu rozprężania gazu w próżnię Witold Kranas.
Podstawy Techniki Cyfrowej
PHP Operacje na ciągach znaków Damian Urbańczyk. Zabezpieczanie tekstów Pewne dane muszą być przechowywane w taki sposób, aby nie mogły się do nich dostać.
Laboratorium nr.3 Algorytm przyrównania globalnego
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Programowanie w VBA Operacje na tekstach. Zbiory danych. Dopisywanie i pobieranie danych. Ćwiczenia.
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
METODY REPREZENTOWANIA IFORMACJI
K ODY ZMIENNEJ DŁUGOŚCI Alfabet Morsa Kody Huffmana.
Wstęp do programowania Wykład 8 Łańcuchy, struktury i pliki Metoda dziel i zwyciężaj Metoda zachłanna.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Moduł ECDL-AM5 Bazy danych, poziom zaawansowany Tabele, relacje.
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Media Cyfrowe  Media cyfrowe to dowolna forma (lub format) prezentacji i użytkowania treści (np. tekstowych, graficznych, audiowizualnych), które są.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ Zapis liczb binarnych ze znakiem.
Jak zaczynam przygodę z programowaniem z gimnazjalistami?
Przypomnienie wiadomości – kilka zadań
Listy.
Piotr Grzegorzewski klasa 1GB (rok szkolny 2011/2012)
EWOLUCJA SIŁY SZYFRÓW ABCDEFGHIJKLMNOPQRSTUVWXYZ
ALGORYTMY I STRUKTURY DANYCH
Operacje na ciągach znaków
ALGORYTMY I STRUKTURY DANYCH
Dane, zmienne, instrukcje
G Dostosuj ten transparent, wpisując własną wiadomość. Zaznacz literę i dodaj własny tekst. Używaj jednego znaku na slajd.
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B

A B D C E A B A B D C E A B A B D C E A B A B D C E A B A B D C E A B A B D C E A B A B D C E A B

Algorytm Boyera-Moore’a (uproszczony) D Ciąg znaków: Wzorzec: A B C Okno wzorca umieszczamy na początku przeszukiwanego tekstu. Porównanie rozpoczynamy od ostatniego znaku wzorca. Znaki są różne. Dodatkowo znak D z tekstu nie występuje we wzorcu. Wzorzec przesuwamy o wielkość okna – 5 Brak zgodności – ale we wzorcu jest A A C B D A B C A C B D A B C

Okno wzorca przesuwamy tak, aby litera A z tekstu i ostatnia litera A ze wzorca zrównały się pozycjami. Porównujemy pozostałe znaki A C B D A B C A C B D A B C

Algorytm Boyera-Moore’a Wzorzec: A B C Tablica Last (indeksy poszczególnych elementów odpowiadają kodom znaków alfabetu, elementy natomiast określają ostatnie położenie danej litery we wzorcu) Przesunięcie: Index 1 2 3 Litera A B C D Wartość 4 -1 i – pozycja okna wzorca w tekście j – pozycja niezgodności okna ze wzorcem

A C B D A B C A C B D A B C ? A C B A B C Index 1 2 3 Litera A B C D Wartość 4 -1 A) Brak znaku we wzorcu, gdyż: Last['D'] = -1 , to przesunięcie wynosi: i = 0 + 4 – (– 1) = 5 A C B D A B C B) Znak jest we wzorcu gdyż: Last['A'] = 3, to przesunięcie wynosi: i = 5 + 4 – 3 = 6 C) Nigdy nie cofamy okna w lewo: Last['A'] = 3, to przesunięcie wynosi: i = 0 + 1 = 1 A C B D A B C ? A C B A B C

Funkcje haszujące Alfabet: ABC (3-znakowy) Wzorzec: CBBAB Kody znaków: A = 0, B = 1, C = 2 Podstawa: 3 (długość alfabetu) Moduł: 23 (najlepiej liczba pierwsza, niezamała) Wzorzec: CBBAB

Funkcje haszujące Łańcuch znaków: CBBABB Wzorzec: BBABB Wyznacz hash okna: H(CBBAB) = 15 Przesuń okno o jeden w prawo (okno: BBABB) Wyznacz H(BBABB) na podstawie H(CBBAB) Usuń pierwszy znak (C): Przesunięcie wszystkich znaków hasha o jedno w lewo Dodanie nowego znaku (B) Sprawdźmy: Kody znaków: A = 0, B = 1, C = 2

Algorytm Karpa-Rabina m = length(p) // lub p_len=|p| n = length(s) // lub s_len=|s| pat_hash = H(p) str_hash = H(s[0:m]) // hash pierwotnego okna i = 0 while i < n – m // dopóki mamy co przetwarzać if str_hash NOT pat_hash // jeśli hash okna jest różny od hasha wzorca i++ // przesun okno wzorca o jeden w prawo str_hash = H(s[i:i+m]) // oblicz nowy hash okna else if p == s[i:i+m] //sprawdz czy na pewno wzorzec jest na pozycji i return i //jesteśmy pewnie, że znaleźliśmy wzorzec endwhile return -1 //wzorca nie znaleziono