Cursul 3 - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

Cursul 3

Description:

Cursul 3 Cautare peste siruri problema cautarea naiva algoritmul Knuth-Morris-Pratt algoritmul Boyer-Moore algoritmul Rabin-Karp cazul mai multor pattern-uri – PowerPoint PPT presentation

Number of Views:113
Avg rating:3.0/5.0
Slides: 28
Provided by: DorelL
Category:
Tags: cursul | karp | rabin

less

Transcript and Presenter's Notes

Title: Cursul 3


1
Cursul 3
  • Cautare peste siruri
  • problema
  • cautarea naiva
  • algoritmul Knuth-Morris-Pratt
  • algoritmul Boyer-Moore
  • algoritmul Rabin-Karp
  • cazul mai multor pattern-uri
  • expresii regulate

2
Tipul de date abstract String
  • obiecte siruri de elemente apartinind unui tip
    abstract Character
  • operatii
  • inserarea unui subsir
  • eliminarea unui subsir
  • concatenarea a doua siruri
  • regasirea unui sir ca subsir al altui sir
  • sirul in care se cauta se numeste subiect il
    notam s0..n-1
  • sirul a carui aparitie este cautata in subiect se
    numeste pattern il notam p0..m-1

3
Cautare naiva proprietati
  • nu necesita preprocesare
  • spatiu suplimentar O(1)
  • totdeauna deplaseaza pattern-ul cu o unitate la
    dreapta

s
?
p
  • comparatiile pot fi facute in orice ordine
  • complexitatea cautarii O(m?n)
  • numarul mediu de comparatii intre caractere 2n
    .

4
Cautarea naiva algoritm
  • function pmNaiv(s, n, p, m)
  • begin
  • i ? -1
  • while (i lt n-m) do
  • i ? i1
  • j ? 0
  • while (sij pj) do
  • if (j m-1)
  • then return i
  • else j ? j1
  • return -1
  • end

5
Algoritmul KMP proprietati
  • realizeaza comparatiile de la stanga la dreapta
  • preprocesare in timpul O(m) cu spatiu suplimentar
    O(m)
  • complexitatea timp a cautarii O(nm)
    (independent de marimea alfabetului)

6
Algoritmul KMP ideea
a b a b
?
?
a b a b c
7
Algoritmul KMP ideea
?
8
Algoritmul KMP functia esec
  • procedure determinaFctEsec(p,m,f)
  • begin
  • f0 ? -1
  • for j ? 1 to m-1 do
  • k ? fj-1
  • while (k ? -1 and pj-1 ? pk) do
  • k ? fk
  • fj ? k1
  • end

9
Algoritmul KMP functia esec exemplu
  • p abaabaaabc

i 0 1 2 3 4 5 6 7 8 9
pi a b a a b a a a b c
fi -1 0 0 1 1 2 3 1 1 2
10
Algoritmul KMP
  • function KMP(s, n, p, m, f)
  • begin
  • i ? 0
  • j ? 0
  • while (i lt n) do
  • while (j ? -1 and si ? pj)do
  • j ? fj
  • if (j m-1)
  • then return i-m1
  • else i ? i1
  • j ? j1
  • return -1
  • end

11
Algoritmul Boyer-Moore proprietati
  • comparatiile sunt realizate de la dreapta la
    stanga
  • preprocesare in timpul O(km) si spatiu
    suplimentar O(k), unde k Character
  • complexitatea timp a cautarii O(mn)
  • 3n comparatii de caractere in cazul cel mai
    nefavorabil pentru un pattern neperiodic
  • cea mai buna performanta O(n / m) .

12
Algoritmul Boyer-Moore ideea
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
V I S U L U N E I N O P T I D E I A R N A
?

?
?
?
?
?
?


I A R
0 1 2
I A R
0 1 2
I A R
0 1 2
I A R
0 1 2
I A R
0 1 2
I A R
0 1 2
I A R
0 1 2
I A R
0 1 2
0
1
2
3
4
5
6
7
8
9
10
13
Algoritmul Boyer-Moore functia salt
  • cazul cind caracterul apare o singura data in
    pattern
  • AMAR
  • MAR
  • saltA 1
  • cazul cind caracterul apare de mai multe ori in
    pattern
  • SAMAR
  • AMAR
  • saltA 1

14
Algoritmul Boyer-Moore salt
isaltA
A B A nu e in u
j
saltA m-j
im-j
A B A e in u
j
saltA lt m-j
15
Algoritmul Boyer-Moore
  • function BM(s, n, p, m, salt)
  • begin
  • i ? m-1 j ? m-1
  • repeat
  • if (si pj)
  • then i ? i-1
  • j ? j-1
  • else
  • if (m-j) gt saltsi
  • then i ? im-j
  • else i ? isaltsi
  • j ? m-1
  • until (jlt0 or igtn-1)
  • if (jlt0)
  • then return i1
  • else return -1
  • end

16
Algoritmul Rabin-Karp proprietati
  • utilizeaza o functie hash
  • preprocesare in timpul O(m) si spatiu suplimentar
    O(1)
  • cautare in timpul O(mn)
  • timpul mediu O(nm) .

17
Algoritmul Rabin-Karp ideea
p

0 m-1
s

i im-1

i1 im
s
18
Algoritmul Rabin-Karp
  • function RK(s, n, p, m)
  • begin
  • dlam1 ? 1
  • for i ? 1 to m-1 do dlam1 ? (ddlam1)q
  • hp ? 0
  • for i ? 0 to m-1 do hp ? (dhpindex(pi))q
  • hs ? 0
  • for i ? 0 to m-1 do hs ? (dhsindex(si))q
  • i ? 0
  • while (i lt n-m) do
  • if (hp hs and equal(p, s, m, i))
  • then return i
  • hs ? (hsdq-index(si)dlam1)q
  • hs ? (dhsindex(sim))q
  • i ? i1
  • return -1
  • end

19
Algoritmul Rabin-Karp implementare C
  • define REHASH(a, b, h) ((((h)-(a)d) ltlt 1) (b))
  • int RK(char p, int m, char s, int n)
  • long d, hs, hp, i, j
  • / Preprocesare /
  • for (d i 1 i lt m i)
  • d (d ltlt 1)
  • for (hp hs i 0 i lt m i)
  • hp ((hp ltlt 1) pi)
  • hs ((hs ltlt 1) si)
  • / Cautare /
  • i 0
  • while (i lt n-m)
  • if (hp hs memcmp(p, s i, m) 0)
  • return i
  • hs REHASH(si, si m, hs)
  • i
  • return -1

20
Mai multe pattern-uri
21
Mai multe pattern-uri (continuare)
C
B
E
D
2
3
1
4
5
A
E
C
D
6
7
8
0
B
C
10
9
22
Expresii regulate
  • definitia expresiilor regulate peste A
  • ltexpr_reggt a e empty
  • (?expr_reg??expr_reg?)
  • (?expr_reg? ?expr_reg?)
  • ?expr_reg?
  • limbajul definit de expresiile regulate
  • L(a) a
  • L(e) e
  • L(empty) Ø
  • L(e1e2) L(e1)L(e2) uv u ?L(e1), v ? L(e2)
  • L(e1e2) L(e1) ? L(e2)
  • L(e) ?iL(ei) ?iL(e)i

23
Automatul asociat unei expresii regulate
a ? A
e
empty
e1
e2
24
Automatul asociat unei expresii regulate
(continuare)
(e1e2)
(e1 e2)
e1
25
Automatul asociat unei expresii regulate exemplu
e a(bacd)
s abbcacdaaab
26
Algoritm de cautare structuri de date
  • D coada cu restrictii la iesire, unde
    inserarile se pot face si la inceput si la
    sfarsit iar stegerile/citirile numai la inceput.
  • q starea curenta a automatului,
  • j pozitia curenta in textul s, i pozitia in
    textul s de inceput a "pattern"-ului curent
  • Simbolul va juca rolul de delimitator (el poate
    fi inlocuit cu starea invalida -1).
  • Initial avem D (), q 1 (prima stare dupa
    starea initiala 0),
  • i j 1.

27
Algoritm de cautare pasul curent
  • Daca
  • din q pleaca doua arce neetichetate , atunci
    insereaza la inceput in D destinatiile celor doua
    arce
  • din q pleaca un singur arc etichetat cu sj
    atunci insereaza la sfarsitul lui D destinatia
    arcului
  • q este delimitatorul atunci
  • daca D Ø, atunci incrementeaza i, j devine noul
    i, insereaza in D si atribuie 1 lui q (aceasta
    corespunde situatiei cand au fost epuizate toate
    posibilitatile de a gasi in text o aparitie a
    unui sir specificat de "pattern" care incepe la
    pozitia i)
  • daca D ? Ø, atunci incrementeaza j si insereaza
    la sfarsitul lui D
  • q este starea finala atunci s-a gasit o aparitie
    a unui sir specificat de "pattern" care incepe la
    pozitia i.
  • Extrage starea de la inceputul lui D si o
    memoreaza in q
Write a Comment
User Comments (0)
About PowerShow.com