Вы находитесь на странице: 1из 18

Tpicos I

Unidad II
Bsqueda de cadenas
Semana 7
Seguridad y encriptacin
Objetivos Generales
Entender el manejo, uso de algoritmos y
estructuras de datos avanzados, haciendo
nfasis en los algoritmos de internet,
seguridad y redes.

Objetivo Especfico
Implementar algoritmos para seguridad y
encriptacin.
Objetivo Instruccional
Implementar algoritmos para el
procesamiento y reconocimiento de
patrones en secuencia de cadenas.
C
o
n
t
e
n
i
d
o
s

Introduccin
Algoritmo de fuerza bruta

Algoritmo de Knuth-Morris-Pratt
Algoritmo de Rabin-Karp
I
n
t
r
o
d
u
c
c
i

n

A menudo sucede que los datos a procesar no se
descomponen lgicamente en registros
independientes que representen pequeas partes
identificables. Este tipo de datos se caracteriza
fcilmente por el hecho de que se pueden escribir en
forma de cadenas: series lineales de caracteres.

Las cadenas son el centro de los sistemas de
tratamiento de texto, que proporcionan una gran
variedad de posibilidades para la manipulacin de
textos. Tales sistemas procesan cadenas
alfanumricas, que pueden definirse como serie de
letras, nmeros y caracteres especiales. Otro tipo de
cadena es la cadena binaria, que es una simple serie
de valores 0 y 1. Los dos tipos de cadena son
equivalentes.
I
n
t
r
o
d
u
c
c
i

n

Una operacin fundamental sobre las cadenas es el
reconocimiento de patrones: dada una cadena
alfanumrica de longitud N y un patrn de longitud
M, encontrar una ocurrencia del patrn dentro del
texto.

El reconocimiento de patrones se puede caracterizar
como un problema de bsqueda en el que el patrn
seria la clave.
El objetivo de bsqueda en cadenas es hallar la
localizacin de un patrn de texto especfico dentro
de un texto largo (ejm., una oracin, un prrafo, un libro, etc.).
En el cual los requisitos son velocidad y eficiencia.
Se alinea la primera posicin del patrn
con la primera posicin del texto, y se
comparan los caracteres uno a uno
hasta que se acabe el patrn, esto es,
se encontr una ocurrencia del patrn
en el texto, o hasta que se encuentre
una discrepancia.
A
l
g
o
r
i
t
m
o

d
e

f
u
e
r
z
a

b
r
u
t
a

A
l
g
o
r
i
t
m
o

d
e

f
u
e
r
z
a

b
r
u
t
a

Si se detiene la bsqueda por una
discrepancia, se desliza el patrn en
una posicin hacia la derecha y se
intenta calzar el patrn nuevamente.
Suponga que se est comparando el patrn y el
texto en una posicin dada, cuando se encuentra
una discrepancia
A
l
g
o
r
i
t
m
o

d
e

K
n
u
t
h
-
M
o
r
r
i
s
-
P
r
a
t
t

Sea X la parte del patrn que coincide con el texto,
e Y la correspondiente parte del texto, y suponga
que el largo de X es j. El algoritmo de fuerza bruta
mueve el patrn una posicin hacia la derecha, sin
embargo, esto puede o no puede ser lo correcto en
el sentido que los primeros j-1 caracteres de X
pueden o no pueden coincidir con los ltimos j-1
caracteres de Y.
La observacin clave que realiza el algoritmo
Knuth-Morris-Pratt (KMP) es que X es igual a Y,
por lo que la pregunta planteada en el
prrafo anterior puede ser respondida
mirando solamente el patrn de bsqueda,
lo cual permite precalcular la respuesta y
almacenarla en una tabla.

Por lo tanto, si deslizar el patrn en una
posicin no funciona, se puede intentar
deslizarlo en 2, 3, ..., hasta j posiciones.
A
l
g
o
r
i
t
m
o

d
e

K
n
u
t
h
-
M
o
r
r
i
s
-
P
r
a
t
t

Por ejemplo:

Cuando se esta buscando X=10100111 en
Y=1010100111, se comienza por detectar la
discordancia en el quinto carcter, pero se
debe retroceder al tercero para continuar la
bsqueda, puesto que de lo contrario se
perdera la concordancia.
A
l
g
o
r
i
t
m
o

d
e

K
n
u
t
h
-
M
o
r
r
i
s
-
P
r
a
t
t

Maquina de estados finitos:

A
l
g
o
r
i
t
m
o

d
e

K
n
u
t
h
-
M
o
r
r
i
s
-
P
r
a
t
t

0
1 2
3 4 6 5 7
0 1 0
0 1 1
1
8
1
1
0
0
1
1
0
0
0
Para determinar el desplazamiento (posiciones de reinicializacin) en
caso de no existir concordancia. Cada desplazamiento hacia atrs
corresponde a desplazar una posicin hacia la derecha del patrn
con respecto a la cadena evaluada, y se reinicia el proceso de
reconocimiento.
Rabin-Karp
El mtodo se basa en calcular la funcin de
dispersin para la posicin i del texto
conociendo su valor para la posicin i-1.

Se supone que se transforman los M
caracteres en nmeros agrupndolos en
una palabra que podra tratarse como un
numero entero. Esto equivale a escribir los
caracteres como nmeros en un sistema de
base d, donde d es el numero de
caracteres posibles.


A
l
g
o
r
i
t
m
o

d
e

R
a
b
i
n
-
K
a
r
p

Rabin-Karp
Calcula un valor hash para el patrn, y
para cada subsecuencia de M-caracteres
de texto.

Si los valores hash son diferentes, se calcula un
valor para la siguiente secuencia.

Si los valores hash son iguales se usa una
comparacin de Fuerza Bruta.
A
l
g
o
r
i
t
m
o

d
e

R
a
b
i
n
-
K
a
r
p

Valor Hash de AAAAA es 37
Valor Hash deAAAAH es 100
Rabin-Karp
A
l
g
o
r
i
t
m
o

d
e

R
a
b
i
n
-
K
a
r
p

1) AAAAAAAAAAAAAAAAAAAH
AAAAH
37<>100
2) AAAAAAAAAAAAAAAAAAAH
AAAAH
37<>100
3) AAAAAAAAAAAAAAAAAAAH
AAAAH
37<>100
.
.
N) AAAAAAAAAAAAAAAAAAAH
AAAAH
100=100

TRABAJO


Investigar algoritmo de Boyer-Moore
para la bsqueda de cadenas


Tpicos I
Unidad II
Bsqueda de cadenas
Semana 7
Seguridad y encriptacin

Вам также может понравиться