17
Tema 11: Algoritmos de empate de cadenas 1 Análisis de algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

  • Upload
    dotuyen

  • View
    240

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Tema 11: Algoritmos de empate de cadenas

1

Análisis de algoritmos

M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom

Page 2: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

• Introducción

• Empate de cadenas

• Fuerza bruta

• Complejidad de Fuerza bruta

• Rabin-Karp

• Complejidad de Rabin-Karp

• Knuth-Morris-Pratt

• Complejidad de Knuth-Morris-Pratt

• Autómata finito

• Complejidad de un autómata finito

Contenido

2

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 3: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Introducción• Una cadena es una secuencia de caracteres sobre un

alfabeto finito.

• 𝐴𝑇𝐶𝑇𝐴𝐺𝐴𝐺𝐴 es un cadena sobre Σ = {𝐴, 𝐶, 𝐺, 𝑇}

• El problema de emparejamiento de cadenas esencontrar todas las ocurrencias de una cadena p,llamada patrón, en una cadena más grande T delmismo alfabeto.

• Dadas las cadenas 𝑥, 𝑦 y z, se dice que x es:

• a) Un prefijo de xy,

• b) Un sufijo de yx,

• c) Una subcadena de yxz.3

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 4: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

4

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• A menudo sucede que los datos a procesar no sedescomponen lógicamente en registrosindependientes que representen pequeñas partesidentificables.

• Este tipo de datos se caracteriza fácilmente por elhecho de que se pueden escribir en forma decadenas: series lineales (por lo regular muy largas)de caracteres.

• Las cadenas son evidentemente el centro de lossistemas de tratamiento de texto, que proporcionanuna gran variedad de posibilidades para lamanipulación de textos.

Page 5: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

5

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• Tales sistemas procesan cadenas alfanuméricas,que pueden definirse en primera aproximacióncomo series de letras, números y caracteresespeciales. Estos objetos pueden ser bastantegrandes, por lo que es importante disponer dealgoritmos eficaces para su manipulación.

• Otro tipo de cadena es la cadena binaria, que esuna simple serie de valores 0 y 1. Esta es, en ciertosentido, un tipo especial de cadena alfanumérica,pero es útil hacer la distinción porque existendiferentes algoritmos específicos para este tipo decadenas y porque las cadenas binarias se utilizan enmuchas aplicaciones.

Page 6: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Empate de cadenas• Implica la implementación de algoritmos de búsqueda de

subcadenas y por lo tanto su objetivo es buscar la existenciade una subcadena dentro de una cadena.

• La mayoría de los algoritmos para este problema se puedenmodificar fácilmente para encontrar todas las ocurrencias delpatrón en el texto, puesto que recorren el texto en secuenciay se pueden reinicializar en la posición situadainmediatamente después del comienzo de una concordancia,para encontrar la concordancia siguiente.

6

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 7: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Fuerza bruta• El método en el que se piensa de inmediato para el

reconocimiento de patrones consiste simplementeen verificar, para cada posición posible del texto enla que el patrón pueda concordar, si efectivamentelo hace.

100111010010100010100111000111

Reconocer la cadena: 10100111

100111010010100010100111000111

10100111

10100111

10100111

10100111

10100111

10100111

100111010010100010100111000111

7

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 8: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

8

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• El algoritmo de Fuerza Bruta compara el patrón conel texto un carácter cada vez, hasta encontrar queno coinciden los caracteres.

Page 9: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Complejidad de Fuerza bruta• Dado un patrón de M caracteres de longitud, y un texto de N

caracteres de longitud.• Mejor caso: encuentra el patrón en las primeras M posiciones del

texto.

• Complejidad: O(N)

• Peor caso: compara el patrón con cada subcadena de texto delongitud M.

• Complejidad: O(MN)

9

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

BruteForceSearch (T; P)

{

for (s=0; s <= n-m; s++)

if (P[1..m] == T[s+1..s+m])

cout << “Matching”<< s;

}

Page 10: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Rabin-Karp• Calcula un valor hash para el patrón, y para cada

subsecuencia de M-caracteres de texto.

• Si los valores hash son diferentes, se calcula una valor para lasiguiente secuencia.

• Si los valores hash son iguales se usa una comparación deFuerza Bruta.

• Valor Hash de “AAAAA” es 37

• Valor Hash de“AAAAH” es 100

10

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 11: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Complejidad de Rabin-Karp• Dado un patrón de M caracteres de longitud, y un texto de N

caracteres de longitud.• Complejidad Pre-procesamiento: O(M)

• Complejidad Búsqueda: O(MN)

11

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

RabinKarpSearch(T, P)

{

for( i=1; i<m; i++ ) dM = (dM * D) % Q; // Hash al patrón

for( i=1; i<=m; i++ )

{

h1 = ((h1 * D) + pat[i] ) % Q;

h2 = ((h2 * D) + text[i] ) % Q;

}

for( i = 1; i <= n-m+1; i++ ) // Busqueda

{

if( h1 == h2 ) // Potencial coincidencia

{

for(j=1; j<=m && text[i-1+j] == pat[j]; j++ );

if( j > m ) // Coincidencia confirmada

cout << “Matching”<<i;

}

h2 = (h2 + (Q * D) - text[i]*dM ) % Q;

h2 = ((h2 * D) + text[i+m] ) % Q;

}

}

Page 12: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Algoritmo Knuth-Morris-Pratt• El algoritmo de búsqueda Knuth-Morris-Pratt (KMP)

se diferencia del método de fuerza bruta porquemantiene una pista de información obtenida encomparaciones previas.

• Se calcula una función de fallo (f) que brindainformación sobre el patrón a la hora de hacer lascomparaciones. Permite saber el corrimiento sobreel patrón hasta la próxima comparación con algúncarácter en el texto.

12

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 13: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

13

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• La idea básica de este algoritmo es que cuando sedetecta una discordancia (no concordancia), el <falso>principio se compone de los caracteres que se conocenpor adelantado (puesto que están en el patrón).

• Cuando se detecta la no concordancia, se sabe, en virtuddel hecho de que concuerdan j caracteres, que no senecesita <retroceder> el puntero i del texto, puesto queninguno de los j-1 caracteres del texto puedenconcordar con el primer carácter del patrón.

• Saltar todos los caracteres del patrón cuando se detectauna discordancia, sería un error en el caso en el que elpatrón se repita en el propio punto de la concordancia.

Page 14: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

• Complejidad: O(n + m)

14

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 15: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Complejidad de Knuth-Morris-Pratt• Dado un patrón de M caracteres de longitud, y un texto de N

caracteres de longitud.• Complejidad del calculo de la tabla de fallos: O(M)

• Complejidad Búsqueda: O(M+N)

15

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

KMPSearch(T, P)

{

KMPnext = preKMPfunction(P);

while (r < n)

{

while (h >= 0 && (P[h] != T[r]))

h = KMPnext[h];

h++;

r++;

if (h >= m)

{

cout<<”Matching” << r - h;

h = KMPnext [h];

}

}

Page 16: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

Algoritmo con autómata finito• Un autómata finito (AF) o máquina de estado finito es un

modelo computacional que realiza cómputos en formaautomática sobre una entrada para producir una salida.

• Este modelo está conformado por un alfabeto, un conjuntode estados y un conjunto de transiciones entre dichosestados. Su funcionamiento se basa en una función detransición, que recibe a partir de un estado inicial una cadenade caracteres pertenecientes al alfabeto (la entrada), y queva leyendo dicha cadena a medida que el autómata sedesplaza de un estado a otro, para finalmente detenerse enun estado final o de aceptación, que representa la salida.

16

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 17: 11 Algoritmos de empate de cadenaseafranco.com/docencia/analisisdealgoritmos/files/11/Diapositivas11.pdf · •Una cadena es una secuencia de caracteres sobre ... se pueden escribir

• Utiliza un AF Determinístico

• Cantidad de Estados = m+1

• Cantidad de Comparaciones = n

• Complejidad Pre-procesamiento: O(m³|Σ|))

• Complejidad Búsqueda: O(n)

17

An

ális

is d

e al

gori

tmo

s1

1 A

lgo

ritm

os

de

emp

ate

de

cad

enas

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

AutomataFinitoSearch(T; P;d)

{

estado = automata->getInicial();

for(j = 0; j <= n; j++ )

{

estado = d(estado, T [j]);

if (automata->esFinal(estado))

cout << “Matching”<< j + 1 - m;

}

}

Complejidad de la búsqueda con autómata finito