Escolar Documentos
Profissional Documentos
Cultura Documentos
Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro
PA 2014/2015
C
autare peste siruri
PA 2014/2015
1 / 36
Outline
Algoritmul Aho-Corasick
Expresii regulate
C
autare peste siruri
PA 2014/2015
2 / 36
Algoritmul Aho-Corasick
Plan
Algoritmul Aho-Corasick
Expresii regulate
C
autare peste siruri
PA 2014/2015
3 / 36
Algoritmul Aho-Corasick
Pk1
j=0
|Pj |.
C
autare peste siruri
PA 2014/2015
4 / 36
Algoritmul Aho-Corasick
Arbore digital
P == {amar , mar , martie, rama, manta}
1
{amar}
4
a
m
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
5 / 36
Algoritmul Aho-Corasick
{amar}
4
a
m
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
6 / 36
Algoritmul Aho-Corasick
state = 0;
g[state, m] = 5 state = 5
g[state, a] = 6 state = 6
g[state, r] nedefinit
presupunem ca valoarea variabilei globale newstate era 9
newstate = 10, g[newstate, r] = 10
newstate = 11, g[newstate, t] = 11
newstate = 12, g[newstate, i] = 12
newstate = 13, g[newstate, e] = 13
out[13] = martie
Presupunem ca alfabetul este .
C
autare peste siruri
PA 2014/2015
7 / 36
Algoritmul Aho-Corasick
C
autare peste siruri
PA 2014/2015
8 / 36
Algoritmul Aho-Corasick
constrTrie(P) {
newstate = 0;
for (each c )
g[0,c] = undef;
for (each Pi P)
addPattern(Pi );
}
C
autare peste siruri
PA 2014/2015
9 / 36
Algoritmul Aho-Corasick
0
p[j] a
f[j] -1
-1
a
1
b
0
a
1 b 2
2
a
0
3
a
1
4
b
1
5
a
2
6
a
3
4 b 5 a 6 a
7
a
4
8
b
1
9
c
2
b 9 c
C
autare peste siruri
PA 2014/2015
10 / 36
Algoritmul Aho-Corasick
Functia esec AC
{amar}
4
~{a,m,r}
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
11 / 36
Algoritmul Aho-Corasick
Functia esec AC
{amar}
4
~{a,m,r}
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
12 / 36
Algoritmul Aho-Corasick
Functia esec AC
{amar}
4
~{a,m,r}
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
13 / 36
Algoritmul Aho-Corasick
Functia esec AC
{amar}
4
~{a,m,r}
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
14 / 36
Algoritmul Aho-Corasick
Functia esec AC
{amar}
4
~{a,m,r}
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
15 / 36
Algoritmul Aho-Corasick
Functia esec AC
{amar}
4
~{a,m,r}
{manta}
9
r
10
{mar}
r
14
a
15 m
16 a
11
12
13
{martie}
17
{rama}
C
autare peste siruri
PA 2014/2015
16 / 36
Algoritmul Aho-Corasick
initializare:
q = empty();
for (each c ) {
state = g[0,c];
if ((state != 0) and (state != undef))
q.pushBack(state);
f[state] = 0;
}
C
autare peste siruri
PA 2014/2015
17 / 36
Algoritmul Aho-Corasick
C
autare peste siruri
PA 2014/2015
18 / 36
Expresii regulate
Plan
Algoritmul Aho-Corasick
Expresii regulate
C
autare peste siruri
PA 2014/2015
19 / 36
Expresii regulate
Definitie
In aceasta sectiune consideram cazul cand pattern-ul constituie doar o
specificatie a ceea ce se cauta n sensul ca el desemneaza o multime de
siruri pentru care se cauta. Numim o astfel de specificatie pattern
generalizat.
Un alt mod de a specifica pattern-uri generalizate l constituie expresiile
regulate.
Definitie
Multimea expresiilor regulate peste alfabetul este definita recursiv astfel:
, empty sunt expresii regulate
orice caracter din este o expresie regulata;
daca e1 , e2 sunt expresii regulate, atunci e1 e2 si e1 + e2 sunt expresii regulate;
daca e este expresie regulata, atunci (e) si e sunt expresii regulate.
C
autare peste siruri
PA 2014/2015
20 / 36
Expresii regulate
<regex>
[abc]
\d sau [[:digit:]]
[[:digit:]]*
[[:digit:]]+
expresia regulata
a+b+c
0 + 1 + + 9
(0 + 1 + + 9)
(0 + 1 + + 9)(0 + 1 + + 9)
C
autare peste siruri
PA 2014/2015
21 / 36
Expresii regulate
Exemplu: Fie alfabetul A = {a, b, c}. Avem L(a(b + a)c) = {abc, aac}
si L((ab) ) = {, ab, abab, ababab, . . .} = {(ab)k | k 0}.
sfex
D. Lucanu (FII - UAIC)
C
autare peste siruri
PA 2014/2015
22 / 36
Expresii regulate
M2
C
autare peste siruri
PA 2014/2015
23 / 36
Expresii regulate
M1
M2
e = e1 + e2 :
M1
start
M2
C
autare peste siruri
PA 2014/2015
24 / 36
Expresii regulate
e = e1 :
start
M1
C
autare peste siruri
PA 2014/2015
25 / 36
Expresii regulate
Exemplu
2
start
7
3
10
C
autare peste siruri
PA 2014/2015
26 / 36
Expresii regulate
Automate nedeterministe
Automatele asociate expresiilor regulate sunt cazuri particulare de
automate finite: M = (Q, , , q0 , Qf ), unde Q este multimea de
stari, alfabetul, : Q A Q tranzitiile, q0 Q starea initiala,
Qf Q starea finala
limbajul acceptat L(M) este multimea de cuvinre ce descriu parcursuri
de la starea initiala la o stare finala
daca M(e) este automatul asociat lui e, atunci L(M(e)) = L(e)
tranzitiile neetichetate se numesc si -tranzitii (sau spontane)
automatul construit direct din definitie este nedeterminist si
neminimal
costisitor de aplicat n practica
se poate construi un automat echivalent determinist?
raspunsul este afirmativ (automatele finite nedeterministe au aceeasi
pute de acceptare ca si cele deterministe), dar cu anumite costuri (a
se vedea slide-urilr urmatoare)
D. Lucanu (FII - UAIC)
C
autare peste siruri
PA 2014/2015
27 / 36
Expresii regulate
C
autare peste siruri
PA 2014/2015
28 / 36
Expresii regulate
Derivativele Brzozowski
Derivativele unei expresii regulate (Brzozowski, 1964):
a (empty ) = empty
?(empty ) = empty
a () = empty
(
a (b) =
empty
?() =
,b = a
, b 6= a
?(b) = empty
a (e ) = a (e)e
?(e ) =
C
autare peste siruri
PA 2014/2015
29 / 36
Expresii regulate
Simplificari
C
autare peste siruri
PA 2014/2015
30 / 36
Expresii regulate
Proprietatea fundamentala
Theorem (Brzozowski)
Multimea derivatelor unei expresii {w (e) | w A } este finita.
Exemplu:
{w ((ab + a ) b a) | w A } =
{(b + )((a b + a) b a), (a b + a) b a, a, , empty}
C
autare peste siruri
PA 2014/2015
31 / 36
Expresii regulate
C
autare peste siruri
PA 2014/2015
32 / 36
Expresii regulate
Exemplu
e = (a b + a) b a
a
(b + )(a b + a) b a
(a b + a) b a + a
b
a
b
start
(a b + a) b a
C
autare peste siruri
PA 2014/2015
33 / 36
Expresii regulate
C
autare peste siruri
PA 2014/2015
34 / 36
Expresii regulate
C
autare peste siruri
PA 2014/2015
35 / 36
Expresii regulate
C
autare peste siruri
PA 2014/2015
36 / 36