Základy algoritmizace. Pattern matching

Podobné dokumenty
Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Vyhledávání řetězců. a b a c a a b. a b a c a b. a b a c a b

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Hledání v textu algoritmem Boyer Moore

63. ročník Matematické olympiády 2013/2014

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

0.1 Úvod do lineární algebry

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Datové struktury 2: Rozptylovací tabulky

Katedra počítačů FEL

LinuxDays 2017 Ondřej Guth GNU grep LD 17 1 / 14

0.1 Úvod do lineární algebry

[1] LU rozklad A = L U

Dynamické programování

Suffixové stromy. Osnova:

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

Základy algoritmizace. Hašování

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Návrh Designu: Radek Mařík

4. Trojúhelníkový rozklad p. 1/20

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Úvod do lineární algebry

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Úvod do programování 6. hodina

Algoritmy II. Otázky k průběžnému testu znalostí

Vlastnosti regulárních jazyků

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

Standardní algoritmy vyhledávací.

Algoritmus pro hledání nejkratší cesty orientovaným grafem

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

[1] samoopravné kódy: terminologie, princip

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Dijkstrův algoritmus

Další příklady. Katedra softwarového inženýrství. Katedra teoretické informatiky, Fakulta informačních technologii, ČVUT v Praze. Karel Müller, 2011

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

1. Pojmy a definice. 2. Naivní algoritmus. 3. Boyer Moore

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

Algoritmizace a programování

Microsoft Office. Excel vyhledávací funkce

NPRG030 Programování I, 2018/19 1 / :03:07

12. Determinanty. 12. Determinanty p. 1/25

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Přijímací zkoušky z matematiky pro akademický rok 2016/17 NMgr. studium Učitelství matematiky ZŠ, SŠ

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

ANTAGONISTICKE HRY 172

Grafové algoritmy. Programovací techniky

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student:

Grafové algoritmy. Programovací techniky

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Dokumentace programu piskvorek

Afinní transformace Stručnější verze

Cykly a pole

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

Hashovací funkce. Andrew Kozlík KA MFF UK

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

1 Projekce a projektory

IB112 Základy matematiky

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Rozhodovací procesy 8

Regulární výrazy. Vzory

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Číselné vektory, matice, determinanty

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

Základy maticového počtu Matice, determinant, definitnost

Základy matematiky pro FEK

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Algoritmy I, složitost

3. ANTAGONISTICKÉ HRY

Složitost Filip Hlásek

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Operační výzkum. Síťová analýza. Metoda CPM.

Množinu všech matic typu m n nad tělesem T budeme označovat M m n (T ), množinu všech čtvercových matic stupně n nad T pak M n (T ).

Matematika B101MA1, B101MA2

Matematika B101MA1, B101MA2

(Pattern Matching) a b a c a a b. a b a c a b. a b a c a b

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

Operační výzkum. Přiřazovací problém.

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Da D to t v o é v ty t py IB111: Datové typy

Metody síťové analýzy

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Soustavy linea rnı ch rovnic

Nástroj pro monitorování a analýzu českého internetu a sociálních médií

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Lineární algebra. Matice, operace s maticemi

Matice. a m1 a m2... a mn

FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Transkript:

Základy algoritmizace Pattern matching 1

Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají mimo jiné: V textových editorech V utilitách typu grep (OS Linux), které umožňují najít všechny výskyty zadaných vzorků v množině textových souborů V rešeršních systémech Při analýze obrazu, zvuku 2

Pattern matching Vyhledávání v textu je operace, při které se zjišťuje, zda-li daný text (řetězec) obsahuje zadané části textu vzorky (vzory). Pokud ano, zajímá nás kde se v zadaném textu vzorky vyskytují. Byla navržena celá řada algoritmů, jak tento problém řešit. Tyto vyhledávací algoritmy se někdy nazývají vyhledávací stroje. 3

Rozdělení algoritmů 4

Rozdělení algoritmů I. Elementární algoritmus II. Vyhledávací stroje III. Indexové metody IV. Signaturové metody 5

Další kritéria Počet hledaných vzorků Počet výskytů (jeden, všechny) Způsob porovnávání Důležitost znaků (zástupné znaky) Směr vyhledávání 6

Definice 7

Označení 8

Elementární algoritmus 9

Implementace 10

Příklad 11

12

Morris-Prattův algoritmus 13

MP algoritmus (pokračování) Předpona v vzorku x bude odpovídat příponě textu y. Nejdelší taková předpona se nazývá hranicí oba konce u. Tabulka Next udává největší možný posun. 14

Implementace 15

Implementace 16

Příklad 17

18

Knuth-Morris-Prattův algoritmus 19

KMP-algoritmus Vylepšená verze MP-algoritmu Zabráníme okamžité neshodě po předponě v 20

Implementace 21

22

Příklad MP-algoritmus 23

24

Shift-Or algoritmus 25

Shift-Or algoritmus Rychlý a snadno hardwarově implementovatelný. Nechť vzor V=v 1...v M je definován nad abecedou A=a 1,.,a C. Definujme incidenční matici X o rozměrech M*C, kde x ij =0 pokud v i =a j a x ij =1 jindy. Každý sloupec matice X je tvořen M- bitovým binárním řetězcem (ozn. A j ). Algoritmus pracuje s M-bitovými binárním řetězci R. Na začátku je R= 1 1.. 1 Základy algoritmizace, letní semestr 2001/2002 26

Shift-Or algoritmus V každém kroku se řetězec R posune o jednu pozici dolů (horní pozice se naplní nulou) a přečte ze vstupu jeden znak textu. Pokud byl přečtený znak textu roven a j, Výsledek posunu se zkombinuje s řetězcem A j pomocí binární disjunkce. Přechodová funkce je def: (R, a j )=SHIFT(R) or A j Vyhledávání končí úspěšně, pokud se na dolní pozici řetězce R dostane nula. Základy algoritmizace, letní semestr 2001/2002 27

Shift-Or algoritmus - příklad Nechť vzor V= vzorek je definován nad abecedou A={e,k,o,r,v,z,*}, kde znak * zastupuje libovolný znak nevyskytující se ve vzorku. e k o r v z * v 1 1 1 1 0 1 1 z 1 1 1 1 1 0 1 = o 1 1 0 1 1 1 1 r 1 1 1 0 1 1 1 e 0 1 1 1 1 1 1 k 1 0 1 1 1 1 1 Základy algoritmizace, letní semestr 2001/2002 28

Shift-Or algoritmus - příklad sart v y h l e d a t v z o r e k v 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 z 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 R= o 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 r 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 e 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 k 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 Více informací např.: http://www-igm.univ-mlv.fr/~lecroq/string/node6.html Základy algoritmizace, letní semestr 2001/2002 29

Implementace 30

31

Příklad 2 32

Rabin-Karp Nejprve pomocí hashování zjistí úsek zadaného textu (řetězce), který může být stejný jako hledaný vzor - hash hodnoty vzoru a určitého úseku v řetězci se shodují. Teprve v tomto případě dojde k porovnávání jednotlivých znaků vzoru a podřetězce. Na první pohled se algoritmus nemusí jevit efektivnější. Vhodně zvolenou hash funkcí lze však dosáhnout toho, že výpočet hash funkce podřetězce zadaného řetězce se nemusí provádět v každém kroku znovu. Dojde jen k odstranění vlivu prvního znaku a zahrnutí vlivu dalšího znaku z řetězce na výslednou hodnotu této funkce. Základy algoritmizace, letní semestr 2001/2002 33

Rabin-Karp Pro jednoduchost budeme hashovací funkci předpokládat ve tvaru součtu ordinálních čísel jednotlivých znaků. Přepočítání hash hodnoty porovnávaného podřetězce zadaného textu, pak provádíme odečtením ordinální hodnoty prvního znaku a přičtením ordinální hodnoty znaku, který v prohledávaném textu (řetězci) následuje za posledním znakem podřetězce. Základy algoritmizace, letní semestr 2001/2002 34

Rabin-Karp V nejhorším případě dosahuje složitost hodnoty O(M*N). V průměrném případě je složitost menší než složitost metody bruteforce. Složitost je značně ovlivněna volbou hashovací funkce, protože její hodnota rozhoduje o počtu porovnávání. Základy algoritmizace, letní semestr 2001/2002 35

Rabin-Karp - Algoritmus 1. Vypočítá se hash hodnota vzoru. 2. Za podřetězec se zvolí prvních M znaků řetězce, kde M je počet znaků vzoru. 3. Vypočítá se hash hodnota podřetězce. 4. Porovnají se výsledky obou hash hodnot. 5. Jsou-li hash hodnoty stejné, porovnávají se jednotlivé znaky vzoru se znaky podřetězce. V případě rovnosti všech znaků je hledaný vzor nalezen a algoritmus končí. Jinak se vypočítá hash hodnota nového podřetězce. Ten začíná druhým znakem aktuálního podřetězce a musí pochopitelně obsahovat M znaků. Algoritmus pokračuje bodem 3. Není-li potřebný počet znaků k dispozici, algoritmus končí, hledaný vzor není součástí řetězce. Základy algoritmizace, letní semestr 2001/2002 36

Rabin-Karp - příklad Vyhledejte vzor DAB v řetězci ABRAKADABRA. Pro znaky jsou dány následující ordinální hodnoty: ord(a) = 1, ord(b) = 2, ord(r) = 3, ord(k) = 4, ord(d) = 5. hash(d A B) = 8 A B R A K A D A B R A hash A B R 6 B R A 6 R A K 8 nastává porovnání znaků A K A 6 K A D 10 A D A 7 D A B 8 Základy algoritmizace, letní semestr 2001/2002 37

Boyer-Moore Základní myšlenka je založena na vyhledávání stejných znaků ve vzoru i podřetězci tak, aby se poslední znak podřetězce kryl se stejným znakem ve vzoru. Posunutí tedy nemusí probíhat, jako v předchozích metodách, o jeden znak, ale velikost posunutí je dána předem určenou hodnotou. Nejprve se pro všechny znaky vytvoří tabulka hodnot posunutí. Každá hodnota v tabulce udává pro daný znak jeho minimální vzdálenost od konce vzoru. Základy algoritmizace, letní semestr 2001/2002 38

Boyer-Moore Není-li znak ve vzoru obsažen, je mu přiřazena hodnota rovnající se délce vzoru. Porovnávání se pak děje na základě srovnávání jednotlivých znaků vzoru a podřetězce od M-té pozice, kde M je délka vzoru. Dojde-li během porovnávání k neshodě znaků, porovnávání se zastaví. Velikost posunutí je dána hodnotou z tabulky, odpovídající poslednímu znaku v podřetězci. V nejhorším případě je složitost O(NM). Hledání a n b v textu a m b Základy algoritmizace, letní semestr 2001/2002 39

Boyer-Moore - Algoritmus 1. Vypočítá se tabulka indexů pro jednotlivé znaky řetězce. 2. Za podřetězec zvolíme prvních M znaků řetězce. 3. Začneme porovnávat jednotlivé znaky vzoru a podřetězce od konce. 4. Jsou-li všechny znaky vzoru a podřetězce stejné, vzor je nalezen a algoritmus končí. 5. Jinak se z tabulky vybere hodnota posunutí pro poslední znak podřetězce. Tato hodnota udává velikost posunutí pozice prvního znaku nového podřetězce vůči aktuálnímu podřetězci. 6. Pokračujeme bodem 3 jen v případě, že délka nového podřetězce je stejná jako délka vzoru. Jinak vzor není nalezen a algoritmus končí. Základy algoritmizace, letní semestr 2001/2002 40

Boyer-Moore - Algoritmus Vyhledejte vzor DAB v řetězci ABRAKADABRA. Tabulka indexů posunutí bude mít pro jednotlivé znaky tyto hodnoty: A B R K D 1 3 3 3 2 A B R A K A D A B R A D A B D A B D A B D A B Základy algoritmizace, letní semestr 2001/2002 41