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

Podobné dokumenty
Základy algoritmizace. Pattern matching

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

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

Hašování. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

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

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

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

Binární vyhledávací stromy II

Spojová implementace lineárních datových struktur

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

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

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

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Katedra počítačů FEL

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Hledání v textu algoritmem Boyer Moore

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

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

: Teoretická informatika(ti)

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

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

Standardní algoritmy vyhledávací.

Naproti tomu gramatika je vlastně soupis pravidel, jak

Suffixové stromy. Osnova:

Poslední nenulová číslice faktoriálu

Základní jednotky používané ve výpočetní technice

Složitost Filip Hlásek

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

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

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

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do programování 6. hodina

2 Formální jazyky a gramatiky

Dynamické programování

Elegantní algoritmus pro konstrukci sufixových polí

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Automatická segmentace slov s pomocí nástroje Affisix. Michal@Hrusecky.net, Hlavacova@ufal.mff.cuni.cz

Regulární výrazy. Vzory

Bakalářská práce Algoritmy vyhledávání v řetězcích pro DNA aplikace

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

IB111 Úvod do programování skrze Python

Algoritmy komprese dat

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Vysoké učení technické v Brně Fakulta informačních technologií. Gramatiky nad volnými grupami Petr Blatný

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

SMART Notebook verze Aug

Formální jazyky a gramatiky Teorie programovacích jazyků

Základy algoritmizace. Hašování

17. Posloupnosti a řady funkcí

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky.

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

Algoritmy a datové struktury

AUTOMATY A GRAMATIKY

Teoretická informatika průběh výuky v semestru 1

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

Programovací jazyk Pascal

30. listopadu Derivace. VŠB-TU Ostrava. Dostupné: s1a64/cd/index.htm.

Lineární datové struktury

Datové struktury 2: Rozptylovací tabulky

SMART Notebook verze Aug

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Fakulta informačních technologií. Teoretická informatika

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

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

Algoritmy I, složitost

MODULUU OBCHODNÍHO PODNIKÁNÍ

NPRG030 Programování I, 2017/18 1 / :22:16

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Vlastnosti regulárních jazyků

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

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

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

4.2 Syntaxe predikátové logiky

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

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

IB111 Úvod do programování skrze Python

Regulární výrazy. Filtry grep, sed a awk.

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

Úlohy k procvičování textu o svazech

Algoritmizace a programování

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Matematické základy šifrování a kódování

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

Základy teorie množin

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

Aritmetika s didaktikou I.

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Vzdálenost uzlů v neorientovaném grafu

Základní datové struktury III: Stromy, haldy

Teoretická informatika Tomáš Foltýnek Teorie čísel Nekonečno

Základy matematické analýzy

Matematika III. 4. října Vysoká škola báňská - Technická univerzita Ostrava. Matematika III

Transkript:

Vyhledávání v textu doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 9. března 209 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 402 / 442

Osnova přednášky Vyhledávání v textu Definice základních pojmů Vyhledávání hrubou silou Morris-Prattův algoritmus Knuth-Morris-Prattův algoritmus Jiří Dvorský (VŠB TUO) Vyhledávání v textu 403 / 442

Definice základních pojmů Definice Abeceda Σ je konečná neprázdná množina symbolů. Příklady: binární abeceda Σ = {0, }, Morseova abeceda Σ = {.,, /}, abeceda aminokyselin DNA Σ = {A, C, G, T }, anglická abeceda Σ = {a,..., z}. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 404 / 442

Vlajková abeceda abeceda může mít i fyzickou podobu, viz například námořní vlajková abeceda, en.wikipedia.org/wiki/international_maritime_ signal_flags současná podoba z roku 93, celkem 40 vlajek 26 písmen, 0 číslic, potvrzovací vlajka a 3 opakovací, každá vlajka reprezentuje i jednu často opakovanou větu, například vlajka O znamená Muž přes palubu, případně lze vlajky kombinovat do číselných kódů odkazujících do smluveného slovníku. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 405 / 442

Vlajková abeceda příklad Slavný signál admirála Nelsona England expects that every man will do his duty vyslaný v roce 805 před bitvou u Trafalgaru vypadá ve vlajkové abecedě takto: 253 269 863 26 47 958 220 370 4 2 9 24 England expects that every man will do his D U T Y en.wikipedia.org/wiki/england_expects_that_every_man_will_ do_his_duty Jiří Dvorský (VŠB TUO) Vyhledávání v textu 406 / 442

Definice základních pojmů Definice Konečná posloupnost x symbolů ze Σ se nazývá řetězec nad Σ. Definice Prázdná posloupnost se nazývá prázdný řetězec, značíme ji ε. Definice Délka řetězce x se značí x a rovná se počtu výskytů symbolů v něm obsažených, ε = 0. Definice Množinu všech řetězců nad abecedou Σ bez prázdného řetězce budeme značit Σ +. Množinu všech řetězců nad abecedou Σ, včetně prázdného řetězce, budeme značit Σ *. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 407 / 442

Definice základních pojmů (pokrač.) Věta Je zřejmé, že Σ * = Σ + {ε} Definice Nechť x a y jsou libovolné řetězce, pak xy označuje konkatenaci (zřetězení) řetězců x a y. Věta Konkatenace dvou řetězců není obecně komutativní, tj. x, y Σ + : xy yx Dále je zřejmé, že xy = yx = x + y Jiří Dvorský (VŠB TUO) Vyhledávání v textu 408 / 442

Definice základních pojmů (pokrač.) Definice Řetězec u se nazývá předponou (prefixem) řetězce w, jestliže existuje řetězec v (i prázdný) takový, že w = uv. Definice Řetězec v se nazývá příponou (sufixem) řetězce w, jestliže existuje řetězec u (i prázdný) takový, že w = uv. Definice Řetězec y se nazývá podřetězcem (faktorem) řetězce w, jestliže existují řetězce u a v (i prázdné) takové, že w = uzv. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 409 / 442

Definice základních pojmů příklady Abeceda Σ = {A, C, G, T }, řetězce x = GCAGAGAG a y = TAA, x = 8 a y = 3. Konkatenace xy = GCAGAGAGTAA, yx = TAAGCAGAGAG, xy = yx = x + y =. Prefixem řetězce y jsou řetězce T, TA, TAA. Sufixem řetězce y jsou řetězce A, AA, TAA. Podřetězcem řetězce y jsou řetězce A, T, TA, AA, TAA. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 40 / 442

Brute force algoritmus size_t BruteForce(const string& Text, const string& Pattern, const size_t StartPosition) 2 { 3 for (size_t i = StartPosition; i < Text.length() - Pattern.length(); i++) 4 { 5 size_t j = 0; 6 while (j < Pattern.length()) 7 { 8 if (Text[i + j]!= Pattern[j]) 9 break; 0 j += ; } 2 if (j == Pattern.length()) 3 return i; 4 } 5 return PatternNotFound; 6 } Jiří Dvorský (VŠB TUO) Vyhledávání v textu 4 / 442

Brute force algoritmus První pokus 2 3 4 Posun o znak Druhý pokus Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 42 / 442

Brute force algoritmus (pokrač.) Třetí pokus Posun o znak Čtvrtý pokus Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 43 / 442

Brute force algoritmus (pokrač.) Pátý pokus Posun o znak Šestý pokus Posun o znak 2 3 4 5 6 7 8 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 44 / 442

Brute force algoritmus (pokrač.) Sedmý pokus Posun o znak Osmý pokus Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 45 / 442

Brute force algoritmus (pokrač.) Devátý pokus Posun o znak Desátý pokus 2 Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 46 / 442

Brute force algoritmus (pokrač.) Jedenáctý pokus Posun o znak Dvanáctý pokus 2 Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 47 / 442

Brute force algoritmus (pokrač.) Třináctý pokus Posun o znak Čtrnáctý pokus 2 Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 48 / 442

Brute force algoritmus (pokrač.) Patnáctý pokus Posun o znak Šesnáctý pokus Posun o znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 49 / 442

Brute force algoritmus (pokrač.) Sedmnáctý pokus Posun o znak Algoritmus provedl celkem 30 porovnání znaků. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 420 / 442

Morris-Prattův algoritmus První pokus 2 3 4 Posun o i Next[i] = 3 0 = 3 znaky Druhý pokus Posun o i Next[i] = 0 ( ) = znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 42 / 442

Morris-Prattův algoritmus (pokrač.) Třetí pokus Posun o i Next[i] = 0 ( ) = znak Čtvrtý pokus 2 3 4 5 6 7 8 Posun o i Next[i] = 8 = 7 znaků Jiří Dvorský (VŠB TUO) Vyhledávání v textu 422 / 442

Morris-Prattův algoritmus (pokrač.) Pátý pokus Posun o i Next[i] = 0 = znak Šestý pokus 2 Posun o i Next[i] = 0 ( ) = znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 423 / 442

Morris-Prattův algoritmus (pokrač.) Sedmý pokus Posun o i Next[i] = 0 ( ) = znak Osmý pokus Posun o i Next[i] = 0 ( ) = znak Jiří Dvorský (VŠB TUO) Vyhledávání v textu 424 / 442

Morris-Prattův algoritmus (pokrač.) Devátý pokus Posun o i Next[i] = 0 ( ) = znak Algoritmus provedl celkem 9 porovnání znaků. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 425 / 442

Knuth-Morris-Prattův algoritmus První pokus 2 3 4 Posun o 4 znaky, tj. i Next[i] = 3 ( ) Druhý pokus Posun o znak, tj. i Next[i] = 0 ( ) Jiří Dvorský (VŠB TUO) Vyhledávání v textu 426 / 442

Knuth-Morris-Prattův algoritmus (pokrač.) Třetí pokus 2 3 4 5 6 7 8 Posun o 7 znaků, tj. i Next[i] = 8 Čtvrtý pokus Posun o znak, tj. i Next[i] = 0 2 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 427 / 442

Knuth-Morris-Prattův algoritmus (pokrač.) Pátý pokus Posun o znak, tj. i Next[i] = 0 ( ) Šestý pokus Posun o znak, tj. i Next[i] = 0 ( ) Jiří Dvorský (VŠB TUO) Vyhledávání v textu 428 / 442

Knuth-Morris-Prattův algoritmus (pokrač.) Sedmý pokus Posun o znak, tj. i Next[i] = 0 ( ) Osmý pokus Posun o znak, tj. i Next[i] = 0 ( ) Algoritmus provedl celkem 8 porovnání znaků. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 429 / 442

KarpRabin Jiří Dvorský (VŠB TUO) Vyhledávání v textu 430 / 442

KarpRabin (pokrač.) 2 3 4 5 6 7 8 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 43 / 442

KarpRabin (pokrač.) Jiří Dvorský (VŠB TUO) Vyhledávání v textu 432 / 442

KarpRabin (pokrač.) Jiří Dvorský (VŠB TUO) Vyhledávání v textu 433 / 442

BoyerMoore 3 2 8 7 6 5 4 3 2 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 434 / 442

BoyerMoore (pokrač.) 3 2 2 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 435 / 442

QuickSearch 2 3 4 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 436 / 442

QuickSearch (pokrač.) 2 3 4 5 6 7 8 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 437 / 442

Kontrolní otázky. Definujte problém vyhledání vzorku v textu. Kde se lze s těmito problémy setkat? 2. Co je to předzpracování textu a vzorku? 3. Uveďte algoritmus, který pro svůj běh nepotřebuje předzpracovat ani text ani vzorek. 4. Uveďte příklad algoritmu (algoritmů), který předzpracovává vzorek ale nepředzpracovává prohledávaný text. 5. Uveďte příklad vyhledávací metody, která nepředzpracovává vzorek ale předzpracovává prohledávaný text. 6. Uveďte příklad vyhledávací metody, která předzpracovává vzorek i prohledávaný text. 7. Co je to abeceda? Označme ji například Σ. 8. Co je to řetězec nad abecedou Σ? Jak je definována délka řetězce? Jiří Dvorský (VŠB TUO) Vyhledávání v textu 438 / 442

Kontrolní otázky (pokrač.) 9. Máte dánu abecedu Σ a přirozená čísla m a n. Jak budou vypadat řetězce a m a a m b n, kde a, b Σ? 0. Co je to prázdný řetězec? Jak jej značíme? Jaká je jeho délka?. Máte dánu abecedu Σ. Co označují množiny Σ + a Σ *? 2. Co je to předpona (prefix) řetězce w? 3. Co je to přípona (sufix) řetězce w? 4. Co je to podřetězec (faktor) řetězce w? 5. Co je to hranice řetězce w? 6. Popište princip elementárního algoritmu (BruteForce Algorithm). 7. Jaká je časová složitost elementárního algoritmu? Jaké operace nás zajímají u výpočtu složitosti vyhledávacích algoritmů? 8. Jaká je očekávaná časová složitost elementárního algoritmu pro text a vzorek z přirozených jazyků? Jiří Dvorský (VŠB TUO) Vyhledávání v textu 439 / 442

Kontrolní otázky (pokrač.) 9. Elementární algoritmus provádí jednu činnost se vzorkem velice neefektivně. Tato neefektivita mu znemožňuje dosahovat menší časové složitosti při vyhledávání. O jako činnost je vzorkem jde a jak tuto neefektivitu řeší ostatní algoritmy? Například Knuth-Morris-Prattův? 20. Popište princip Shift-Or algoritmu. Jaké dvě bitové operace se tu používají? 2. Jaká je časová složitost Shift-Or algoritmu? 22. Popište princip Karp-Rabinova algoritmu. K čemu slouží u tohoto algoritmu hašovací funkce (Pozn. Vzpomeňte si na kapitolu o hašování a pohled na hašovací funkci jako na negativní filtr.)? 23. Co je to sousměrné a protisměrné vyhledávání? 24. Popište princip Boyer-Mooreova algoritmu. Soustřeďte se na využití protisměrného vyhledávání pro efektivní detekci (ne)výskytu vzorku v textu. Jiří Dvorský (VŠB TUO) Vyhledávání v textu 440 / 442

Kontrolní otázky (pokrač.) 25. Jaká je složitost Boyer-Mooreova algoritmu v nejhorším případě a jaká v nejlepším? Pro jakou kombinaci vzorku a textu dojde k nejhoršímu případu? Jiří Dvorský (VŠB TUO) Vyhledávání v textu 44 / 442

Děkuji za pozornost Jiří Dvorský (VŠB TUO) Vyhledávání v textu 442 / 442