Você está na página 1de 62

Universidad Nacional de

Trujillo

Aplicaciones de las Expresiones


Regulares

Monografı́a que como parte del curso de


Lenguajes Formales y Autómatas
Presenta a los alumnos:
Lara Arana Jean Pierre
Cunia Romero Athina Brigitte Danna
Castillo Quispe José Samuel Alonso

Diciembre 2017
Dedicado a nuestras
familias y amigos

I
II
Agradecimientos

Agradecemos a todas las personas que confiaron en nosotros y aquellas que con
sus consejos hicieron de nosotros mejores personas. A todos los profesores de
nuestra universidad, y haciendo una mención especial a la profesora Sofı́a Pedro
Huamán, que hizo un gran trabajo dictando el curso de Lenguajes Formales en
el año 2017.

III
IV
Resumen

En este trabajo que presentamos muestra básicamente como las expresiones re-
gulares se pueden llegar usar en distintos ámbitos excluyendo, sus usos dentro de
las ciencias de la computación. Tanto en ciencias naturales, como lo es la biologı́a,
ası́ como en artes musicales. Haremos un estudio amplio sobre la identificación
de patrones de notas para determinadas escalas musicales, las cuales constituyen
la base fundamental para la creación del conjunto de melodı́as en la composición
de temas musicales en el género Blues. Junto con ello en este trabajo también se
adentrará en el campo de las ciencias biológicas, precisamente en como las ex-
presiones regulares son utilizadas para el análisis de cadenas de ADN. Para una
correcta compresión acerca de las expresiones regulares en los temas ya mencio-
nados, se realizó un capı́tulo introductorio en el cual se manejan conceptos claves
acerca de Expresiones Regulares y otros temas referentes a la informática teóri-
ca, para luego adentrarnos concretamente en las aplicaciones de las Expresiones
Regulares.

V
VI RESUMEN
Índice general

Agradecimientos III

Resumen V

Lista de figuras XI

Lista de tablas XIII

1. Conceptos Básicos 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Uso de las expresiones regulares . . . . . . . . . . . . . . . . . . . 2
1.3. Lenguaje Regular . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1. Autómata Finito . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1.1. Autómata Finito Determinista . . . . . . . . . . 3
1.3.1.2. Autómata Finito No Determinista . . . . . . . . 5
1.3.2. Gramática Regular . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3. Gramática Libre de Contexto . . . . . . . . . . . . . . . . 7
1.4. Expresión Regular . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1. Operadores de las expresiones regulares . . . . . . . . . . . 8
1.4.2. Propiedades de las Expresiones Regulares . . . . . . . . . . 9

VII
VIII ÍNDICE GENERAL

1.4.3. Autómatas Finitos y Expresiones Regulares . . . . . . . . 10

2. Aplicación de expresiones regulares en la musica 13


2.1. ¿Qué es la música? . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2. La Tecnologı́a y la Música . . . . . . . . . . . . . . . . . . . . . . 14
2.3. Elementos Fundamentales de la Música . . . . . . . . . . . . . . 15
2.3.1. Melodı́as . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.2. Armonı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.3. Ritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4. Notas y Escalas . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.1. Notas Musicales Naturales y Alteradas . . . . . . . . . . . 17
2.4.2. Escalas musicales . . . . . . . . . . . . . . . . . . . . . . . 18
2.5. Búsqueda de patrones musicales en Blues . . . . . . . . . . . . . 19
2.5.1. Expresión regular en la identificación de notas en una escala
de Blues . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.2. Algoritmo para la identificación de notas en progresiones . 21
2.5.2.1. Progresión Blues . . . . . . . . . . . . . . . . . . 22

3. Reconocimiento de patrones en secuencia de ADN 25


3.1. Bioinformática . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2. Antecedentes de la Bioinformática . . . . . . . . . . . . . . . . . . 27
3.3. ADN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.1. ADN Nuclear . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.2. ADN Mitocondrial . . . . . . . . . . . . . . . . . . . . . . 29
3.3.3. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4. Secuenciación de ADN . . . . . . . . . . . . . . . . . . . . . . . . 30
ÍNDICE GENERAL IX

3.4.1. Comparación de cadenas de ADN . . . . . . . . . . . . . . 30


3.5. Análisis de patrones de ADN . . . . . . . . . . . . . . . . . . . . . 31
3.5.1. Reconocimiento de patrones . . . . . . . . . . . . . . . . . 32
3.5.1.1. Algoritmo de la Fuerza Bruta . . . . . . . . . . . 33
3.5.1.2. Algoritmo de Knuth-Morris-Pratt . . . . . . . . . 33
3.5.1.3. Algoritmo de Boyer y Moore . . . . . . . . . . . 34

A. Anexos 39
X ÍNDICE GENERAL
Índice de figuras

1.1. Autómata Finito Determinista . . . . . . . . . . . . . . . . . . . . 4


1.2. Autómata Finito No Determinista . . . . . . . . . . . . . . . . . . 6
1.3. Equivalencia de notaciones diferentes para lenguajes regulares . . 11

2.1. Escala de Mi Mayor . . . . . . . . . . . . . . . . . . . . . . . . . . 20


2.2. Patron inicial en Mi Mayor . . . . . . . . . . . . . . . . . . . . . . 20
2.3. Notas en los 5 primeros trastes de Guitarra . . . . . . . . . . . . . 23
2.4. Pseudocodigo para identificación de notas musicales en Blues . . . 24

3.1. Estructura de ADN . . . . . . . . . . . . . . . . . . . . . . . . . . 30


3.2. Funcionamiento del Algoritmo de Fuerza Bruta . . . . . . . . . . 32
3.3. Algoritmo Knuth-Morris-Pratt . . . . . . . . . . . . . . . . . . . . 33
3.4. Creacion de tabla para el Algoritmo Knuth-Morris-Pratt . . . . . 34
3.5. Algoritmo de Boyer y Moore . . . . . . . . . . . . . . . . . . . . . 35

A.1. Funcion Analizar para la Identificacion de notas en escala de MI


mayor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
A.2. Codigo Main para la Identificacion de notas en escala de MI mayor 40
A.3. Prueba para el tema Texas Blues, primera secuencia , nota Mi mayor 41

XI
XII ÍNDICE DE FIGURAS

A.4. Prueba para el tema propuesto, tercera secuencia , nota Si7 . . . 41


Índice de cuadros

1.1. Tabla de transición de Estados para AFD. . . . . . . . . . . . . . 4


1.2. Tabla de transición de Estados para un AFND. . . . . . . . . . . 7

XIII
XIV ÍNDICE DE CUADROS
Introducción

Para la informática teórica, es de suma importancia el estudio de las expresio-


nes regulares, por en una carrera universitaria de ciencias de la computación es
realmente necesario, centrar el estudio en ello. Sin embargo, la aplicación de las
expresiones regulares, en algunos casos es erróneamente atribuida únicamente al
estudio cientı́fico de la informática, pues esto no es cierto del todo.
Existen materias en donde se utilizan aplicaciones de expresiones regulares, y en
muchos casos la persona que trabaja en estos ámbitos no aprecia correctamente
que está trabajando con expresiones regulares. Lo es, por ejemplo, un músico de
blues, utiliza un sin número de reglas para la composición de temas musicales,
o el caso de biólogo que compara dos secuencias de ADN para determinar algún
parentesco; en estos casos se aplica uso de las expresiones regulares, en donde la
persona no conoce con profundidad sobre el tema. Con el avance de la tecnologı́a,
se construyeron y diseñaron sistemas, y equipos electrónico digitales los cuales
tienen uso en diversas actividades; estos equipos o sistemas fueron programados
de tal manera que puedan cumplir con alguna determinada funcionalidad. En mu-
chos casos, estas tecnologı́as también cuentan con una aplicación de expresiones
regulares dentro de su programación, y cada vez más este tipo de tecnologı́as se
utilizan en ámbitos en los que era realmente impensado el uso de la computación.

XV
XVI ÍNDICE DE CUADROS
Capı́tulo 1

Conceptos Básicos

1.1. Introducción

En el estudio de la teorı́a de la computación, relacionado a las representaciones


estructurales de los autómatas existen dos notaciones claves que no son utilizadas
normalmente como los autómatas, pero que cumplen un papel importante en el
estudio de estos y sus aplicaciones. La primera son las gramáticas, estas son
modelos útiles en el diseño del software que se utiliza para procesar datos con
funciones recursivas. Un ejemplo conocido es el de .analizador sintáctico”parser,
este cumple un rol fundamental en la estructura de un compilador. La función del
parser consiste en tomar una porción de texto y determinar su estructura lógica
de este, produciendo un árbol de análisis sintáctico que representa la estructura
del programa. La segunda y nuestra notación más importante y en este trabajo
que presentamos, son las expresiones regulares, estas especifican la estructura
de datos y son muy utilizadas en el análisis de las cadenas de texto. En este
capı́tulo a modo de introducción se explicará estos conceptos de forma breve y

1
2 CAPÍTULO 1. CONCEPTOS BÁSICOS

precisa, de modo que nuestro lector con escasos conocimientos acerca de temas
de informática teórica pueda comprender el uso y aplicaciones de las expresiones
regulares en los temas que trataremos posteriormente.

1.2. Uso de las expresiones regulares

Son diversos los motivos por los que se estudia los autómatas, en la complejidad
de cálculo constituyen una parte importante del core de la informática teórica
dentro de las ciencias de la computación, ası́ como su uso dentro de otros campos
en donde parece casi imposible el uso de fundamentos teóricos. A continuación,
se mostrará conceptos esenciales que se debe tener en cuenta respecto a las Ex-
presiones Regulares.

1.3. Lenguaje Regular

Para nuestro lector inexperto en el tema de informática teórica, las expresiones


regulares y autómatas parten desde el tema de lenguajes regulares, es por eso
que se necesita comprender que es un lenguaje regular. Según (Jeffrey D. Ullman
and Motwani, 2008), básicamente un lenguaje regular es un lenguaje netamente
formal que tiene las siguientes caracterı́sticas:

Puede ser descrito mediante una expresión regular (expresar de forma com-
pacta como son todas las cadenas que son pertenecientes a dicho lenguaje).

Puede ser reconocido mediante un autómata finito (saber si una cadena de


sı́mbolos pertenece a el lenguaje o no).
1.3. LENGUAJE REGULAR 3

Si L es L(A) para un determinado AFD A, entonces decimos que L es un


lenguaje regular.

1.3.1. Autómata Finito

Un autómata finito tiene un conjunto de estados y su control pasa de un estado


a otro en respuesta a las entradas externas. Una de las diferencias fundamentales
entre las clases de autómatas finitos es si dicho control es determinista, lo que
quiere decir que el autómata no debe encontrarse en más de un estado al mismo
tiempo o los autómatas no deterministas, los cuales pueden estar en varios estados
a la vez (Jeffrey D. Ullman and Motwani, 2008).

1.3.1.1. Autómata Finito Determinista

Formalmente un autómata finito determinista es aquel que, puede estar en un


único estado después de leer cualquier secuencia de entradas. (Jeffrey D. Ullman
and Motwani, 2008) El término ”determinista”hace referencia al hecho de que
para cada valor de la transición a partir de un estado, a otros estados no debe
existir más transiciones con el mismo valor, ya que el autómata incurrirı́a en el
no determinismo que veremos en el siguiente tı́tulo.
Otra caracterı́stica resaltante de los autómatas finitos es la ausencia de transicio-
nes lambda que son propias de autómatas no terministas.
Se define de la siguiente forma:

A = (Q, Σ, δ, Q0 , F )
4 CAPÍTULO 1. CONCEPTOS BÁSICOS

El sı́mbolo Q representa el conjunto de estados


El sı́mbolo Σ representa el Alfabeto.
El sı́mbolo δ es la función de transición de estados.
El sı́mbolo Q0 representa estado inicial del autómata
El sı́mbolo F es el estado final de aceptación.

Tabla de Transiciones : Una tabla de transiciones es una representación en


forma de tabla de una función, como por ejemplo δ , que toma dos argumentos
y devuelve un valor. Las filas de la tabla corresponden a los estados y las
columnas a las entradas. La entrada para la fila correspondiente al estado q y la
columna correspondiente a la entrada a es el estado δ(q, a).

Figura 1.1: Autómata Finito Determinista

δ 0 1
q0 q2 q0
q1 q1 q1
q2 q2 q1

Cuadro 1.1: Tabla de transición de Estados para AFD.


1.3. LENGUAJE REGULAR 5

1.3.1.2. Autómata Finito No Determinista

Un autómata finito “no determinista” (AFN) tiene la capacidad de estar en varios


estados a la vez Jeffrey D. Ullman and Motwani (2008). Esta capacidad a menudo
se expresa como la posibilidad de que el autómata “conjeture” algo acerca de su
entrada. Por ejemplo, cuando el autómata se utiliza para buscar determinadas
secuencias de caracteres (por ejemplo, palabras clave) dentro de una cadena de
texto larga, resulta útil “conjeturar” que estamos al principio de una de estas
cadenas y utilizar una secuencia de estados únicamente para comprobar la apa-
rición de la cadena, carácter por carácter. Veremos un ejemplo de este tipo de
aplicación en la Sección. Antes de examinar las aplicaciones, necesitamos definir
los autómatas finitos no deterministas y demostrar que aceptan un lenguaje que
también es aceptado por algunos AFD. Es decir, los AFN aceptan los lenguajes
regulares, al igual que los AFD. Sin embargo, existen razones para estudiar los
AFN: a menudo son más compactos y fáciles de diseñar que los AFD. Además,
si empre es posible convertir un AFN en un AFD, este último puede tener un
número exponencialmente mayor de estados que el AFN; afortunadamente, son
pocos los casos de este tipo.

A continuación presentamos las nociones formales asociadas con los autómatas


finitos no deterministas e indicamos las diferencias entre los AFD y AFN. Un
AFN se representa esencialmente como un AFD.

A = (Q, Σ, δ, Q0 , F )
6 CAPÍTULO 1. CONCEPTOS BÁSICOS

En donde:

El sı́mbolo Q representa el conjunto de estados


El sı́mbolo Σ representa el Alfabeto.
El sı́mbolo Q0 es el estado inicial del autómata, es un elemento de Q
El sı́mbolo F es subconjunto de Q y representa el conjunto de estados finales.
El sı́mbolo δ ,es la función de transición , la cual toma como argumentos un
estado de Q y un sı́mbolo de entrada de Σ y devuelve un subconjunto de Q .La
diferencia de AFND con el AFD radica en que el valor que devuelve Σ es un
conjunto de estados, mientras que en el AFD es un único estado

En el AFND de la figura puede especificarse como:

A = (q0 , q1 , q2 , 0, 1, δ, q0 , F )

En la figura 1.2 podemos observar claramente la diferencia con el AFD . En donde


del estado q0 puede dirigirse dos transiciones con el valor 0 , una transición llevara
al mismo estado q0 , mientras que la segunda transición al estado q1 , este es un
claro ejemplo del no determinismo en los Autómatas Finitos.

Figura 1.2: Autómata Finito No Determinista


1.3. LENGUAJE REGULAR 7

A continuación mostraremos la tabla de transición de estados 1.2 para el ejemplo


propuesto de la figura 1.2.

δ 0 1
q0 q0 , q1 q0
q1 Φ q2
q2 Φ Φ

Cuadro 1.2: Tabla de transición de Estados para un AFND.

1.3.2. Gramática Regular

En informática una gramática regular es una gramática formal (N, Σ, P, S) que


puede ser clasificada como regular izquierda o regular derecha. Las gramáticas
regulares sólo pueden generar a los lenguajes regulares de manera similar a los
autómatas finitos y las expresiones regulares. Dos gramáticas regulares que gene-
ran el mismo lenguaje regular se denominan equivalentes. Toda gramática regular
es una gramática libre de contexto.

1.3.3. Gramática Libre de Contexto

En lingüı́stica e informática, una gramática libre de contexto (o de contexto libre)


es una gramática formal en la que cada regla de producción es de la forma:
V → W . Donde V es un sı́mbolo no terminal y W es una cadena de terminales
y/o no terminales. El término libre de contexto se refiere al hecho de que el no
terminal V puede siempre ser sustituido por w sin tener en cuenta el contexto en
8 CAPÍTULO 1. CONCEPTOS BÁSICOS

el que ocurra. Un lenguaje formal es libre de contexto si hay una gramática libre
de contexto que lo genera.

1.4. Expresión Regular


Las expresiones regulares denotan lenguajes. Por ejemplo, la siguiente expresión
regular (1+0)∗ 10. define el lenguaje que consta de todas las cadenas que finalizan
con el número 10. Enseguida definiremos todos los sı́mbolos empleados en esta
expresión, de modo que pueda ver por qué nuestra interpretación de esta expresión
regular es la correcta. Antes de describir la notación de las expresiones regulares,
tenemos que estudiar las tres operaciones sobre los lenguajes que representan los
operadores de las expresiones regulares.
Una expresión regular R es sólo una expresión, no un lenguaje. Deberı́amos em-
plear L(R) cuando deseemos hacer referencia al lenguaje que R representa.

1.4.1. Operadores de las expresiones regulares

Los operadores para las expresiones regulares , son los siguientes:

Unión: La unión de dos lenguajes L y M, designada como L U M, es el


conjunto de cadenas que pertenecen a L,a M o a ambos. Por ejemplo, si
L = 001, 10, 111 y M = λ, 001, entonces LU M = λ, 10, 001, 111:

Concatenación: La concatenación de los lenguajes L y M es el conjunto de


cadenas que se puede formar tomando cualquier cadena de L y concatenándola
con cualquier cadena de M. Definimos la concatenación de una pareja de
cadenas, el resultado de la concatenación es una cadena seguida de la otra. Para
1.4. EXPRESIÓN REGULAR 9

designar la concatenación de lenguajes se emplea el punto o ningún operador en


absoluto, aunque el operador de concatenación frecuentemente se llama
“punto”. Por ejemplo, si L = 001, 10, 111 y M = λ, 001, entonces L.M,o
simplemente L(M ), es001, 10, 111, 001001, 10001, 111001.

La clausura o cerradura de Kleene: un lenguaje L se designa mediante


L∗ y representa el conjunto de cadenas que se pueden formar tomando en
cuenta cualquier número de cadenas de L, con repeticiones (es decir, la misma
cadena se puede seleccionar más de una vez) y concatenando todas ellas. Por
ejemplo, si L = 0, 1, entonces L es igual a todas las cadenas de 0s y 1s. Si
L = 0, 11, entonces L∗ constará de aquellas cadenas de 0s y 1s tal es que los 1s
aparezcan por parejas, como por ejemplo 011, 11110 y λ, pero no 01011 ni 101.

1.4.2. Propiedades de las Expresiones Regulares

Por definición dos expresiones regulares r1 y r2 se dicen equivalentes, r1 = r2 , si


describen el mismo lenguaje, esto es, si L(r1 ) = L(r2 ). En base a esta definición
se pueden establecer las siguientes equivalencias y propiedades más importantes
según (Navarro, 2017):

Respecto a las operaciones + y . :

asociativas: α + (β + γ) = (α + β) + γ = α + β + γ
α.(β.γ) = (α.β) + γ = α.β.γ

conmutativa: α + β = β + α

idepotente: α + α = α

distributiva: α.(β + γ) = α.β + α.γ

elemento neutro: α.λ = λ.α = α


10 CAPÍTULO 1. CONCEPTOS BÁSICOS

Respecto a las operaciones de * . :

α∗ = λ + α.α∗

λ∗ = λ

α∗ .α∗ = α∗

α.α∗ = α∗ .α

(α∗ )∗ = α∗

(α ∗ +β∗)∗ = (α∗ .β ∗ )∗ = (α + β)∗ = (α∗ .β)∗ .α∗

(α.β)∗ .α = α.(β.α)∗

1.4.3. Autómatas Finitos y Expresiones Regulares

Aunque las expresiones regulares describen los lenguajes de manera completamen-


te diferente a como lo hacen los autómatas finitos, ambas notaciones representan
exactamente el mismo conjunto de lenguajes, que hemos denominado “lengua-
jes regulares”. Como pudimos ver en los temas anteriores, los autómatas finitos
deterministas y los dos tipos de autómatas finitos no deterministas (con y sin
transiciones λ) aceptan la misma clase de lenguajes. Para demostrar que las ex-
presiones regulares definen la misma clase de lenguajes, tenemos que comprobar
los siguientes puntos (Jeffrey D. Ullman and Motwani, 2008):

1. Todo lenguaje definido mediante uno de estos autómatas también se define


mediante una expresión regular. Para demostrar esto, podemos suponer que el
lenguaje es aceptado por algún AFD.
2. Todo lenguaje definido por una expresión regular puede definirse mediante uno
de estos autómatas. Para esta parte de la demostración, lo más sencillo es probar
1.4. EXPRESIÓN REGULAR 11

que existe un AFN con transiciones-λ que acepta el mismo lenguaje.

En la figura 1.3 se muestra la relación que existen entre cada notación, cabe
destacar que existen algoritmos lo cuales nos llevan de una notación a otra.

Figura 1.3: Equivalencia de notaciones diferentes para lenguajes regulares


12 CAPÍTULO 1. CONCEPTOS BÁSICOS
Capı́tulo 2

Aplicación de expresiones
regulares en la musica

En este capı́tulo se centrará en el manejo de expresiones regulares en el ámbito


musical. Como primera instancia podemos decir que la música es un lenguaje y
como ya vimos anteriormente en los conceptos previos de expresiones regulares
y lenguajes regulares, un lenguaje regular puede ser descrito por una expresión
regular. Entonces bien podemos decir que cada elemento del lenguaje viene a ser
representado por una nota musical dentro de una escala determinada si queremos
verlo desde el punto de vista de algún instrumento en particular, por ejemplo la
guitarra. Las expresiones regulares han sido de mucha ayuda en el desarrollo de
tecnologı́a especializada en música como, por ejemplo, los afinadores electrónicos
y los masterizadores cuyo fin es de mejorar la calidad musical dándole más pre-
cisión a las notas que se emplean para cada composición musical y haciendo de
ella un producto que puede reproducirse en cualquier formato y en cualquier dis-
positivo que cuente con la función especı́fica de reproductor musical. En cuanto

13
14CAPÍTULO 2. APLICACIÓN DE EXPRESIONES REGULARES EN LA MUSICA

a la aplicación de las expresiones regulares en el aspecto musical tomaremos con-


cretamente el género blues para hacer estudio de ello y demostrar la importancia
de la aplicación de las expresiones regulares.

2.1. ¿Qué es la música?


Segun (Cordatontonopulos, 2002),la música es el arte de combinar los sonidos
sucesiva y simultáneamente, para transmitir o evocar sentimientos. Es un arte
libre ya que cualquier persona puede aprender y practicar la música, donde se
representan los sentimientos con sonidos, bajo diferentes sistemas de composición,
los cuales son fuentes para la creación de diferentes géneros musicales.

2.2. La Tecnologı́a y la Música


La relación entre la tecnologı́a y la música data de inicios del siglo veinte en don-
de la música paso de ser netamente acústica a eléctrica, con dispositivos eléctri-
cos los cuales reproducı́an o amplificaban la onda auditiva que esta producı́a.
Pasó el tiempo y los mismos instrumentos pasaron a ser netamente electrónicos,
por ejemplo, las baterı́as, bajos, guitarras y teclados. En la década de los sesentas
se experimentó con nuevos dispositivos electrónicos que se usaban conjuntamente
con los instrumentos electrónicos, estos cuales cumplı́an la función de distorsionar
sonidos, siendo estos de uso muy frecuente en géneros como el rock and roll en
una época en donde la cultura hippie marcarı́a el inicio de una revolución musical
y cultural en todo el planeta.
Desde el momento en que el sonido se pudo guardar en forma de ceros y unos,
es decir, de forma digital, tanto la producción como el consumo musical han ido
2.3. ELEMENTOS FUNDAMENTALES DE LA MÚSICA 15

cambiando cada vez más y de forma tan particular, que los músicos y su público
se encuentran hoy más cerca unos de otros y ası́ sucede entre ellos mismos. Los
bits (mı́nimo elemento posible de la información digital) se han convertido en-
tonces en unos diminutos agentes de cambio (no sólo en el ámbito de la música,
por cierto) permitiendo que la información ocupe cada vez un espacio menor, que
sea fácilmente reproducible y distribuible. Para los usuarios de ordenadores per-
sonales, el uso de audio digital se ha vuelto rutinario, ya sea porque mantienen
sus colecciones personales de música extrayéndolas de sus propios CDs, porque
descarguen música a través de sistemas punto a punto o hagan ambas cosas, en
cualquier equipo casero, personal o portable, pueden existir varios gigabytes de
audio. Estamos viviendo la era post-CD. Es importante entender entonces sus
diferencias con respecto a etapas anteriores. Para que cualquier tipo de informa-
ción pueda ser almacenada en un ordenador primero debe ser digitalizada, esto
quiere decir que debe ser representada numéricamente usando el sistema binario.
Cada vez que escuchamos una canción, o un vı́deo musical en la computadora o
en celular, el contenido al que somos expuestos está conformado en realidad por
ceros o unos que permiten la representación numérica de la información.

2.3. Elementos Fundamentales de la Música


Siempre es muy normal escuchar una canción y preguntarse, ¿Cómo es que se
hace la música? o ¿Que tan difı́cil es hacer música?. Pues para ser sinceros hacer
música y más aún, realizar la composición una canción es terriblemente difı́cil
y complejo. Con solo decir que hay carreras musicales que ofrecen importantes
centros de estudios, pues ya hace entrever que tratamos de algo sumamente com-
plejo. Concordamos con el trabajo realizado por.(Cordatontonopulos, 2002), en
16CAPÍTULO 2. APLICACIÓN DE EXPRESIONES REGULARES EN LA MUSICA

el cual manifiesta que la música y cualquier composición debe contar con tres
aspectos básicos: melodı́a, armonı́a y ritmo.

2.3.1. Melodı́as

Las melodı́as son las que cantamos o tarareamos cuando un tema es de nuestro
agrado. No podemos cantar o emitir más de una nota a la vez. La melodı́a es la
forma de combinar los sonidos, pero sucesivamente. De ahı́ que a muchos instru-
mentos se los llames melódicos, por ejemplo, una flauta, un saxo, un clarinete o
cualquier instrumento de viento, porque ellos no pueden hacer sonar más de una
nota a la vez.

2.3.2. Armonı́a

Usando melodı́as solamente, los temas sonarı́an “vacı́os”. A la larga necesitarı́amos


algo que nos haga de base, y que nos dé la sensación de estar junto a otros músi-
cos acompañándonos. La armonı́a es la forma de combinar sonidos en forma
simultánea. Cada compositor la usará para crear diferentes climas. Puede trans-
mitir desde estados de melancolı́a, tristeza, o tensión, hasta estados de alegrı́a,
calma, relajación, etc. Los instrumentos llamados armónicos, como el piano o la
guitarra, son los que pueden tocar más de una nota a la vez.

2.3.3. Ritmo

Cuando estamos escuchando música, es muy común que marquemos golpes de


manera intuitiva con el pie o con la mano. A cada golpe lo llamamos tiempo o
pulso, y serı́an las unidades en que se dividen los diferentes ritmos. El ritmo es el
2.4. NOTAS Y ESCALAS 17

pulso o el tiempo a intervalos constantes y regulares. Hay ritmos rápidos, como


el rock and roll, o lentos, como las baladas, y podemos diferenciarlos básicamente
entre los que son binarios, y los que son ternarios, como el vals.

2.4. Notas y Escalas

Como mencionamos en el capı́tulo de introducción, para describir un lenguaje con


expresiones regulares se tiene en cuenta un alfabeto, pues en el ámbito música
también se cuenta con un conjunto de elementos, a estos se les conoce con el
nombre de alfabeto musical el cual se utiliza para la representación de tonalida-
des producidas cada instrumento, cantante, o algún dispositivo que emita sonido
armónico, más no ruido.

2.4.1. Notas Musicales Naturales y Alteradas

En la música occidental se utilizan doce sonidos para representar y componer


piezas musicales. Existe siete sonidos naturales y cinco alterados. Esas son las
notas presentes en la estructura cada una de las composiciones musicales que
conocemos. Una vez que llegamos a los doce sonidos, volvemos a repetirlos en el
mismo orden, a lo largo del registro de cada instrumento musical. Cada una de
estas repeticiones de doce sonidos se llama octava.

Naturales: DO, RE, M I, F A, SOL, LA, SI.

Alteradas: DO#/Re[ , RE#/M I[ , F A#/SOL[ , SOL#/LA[ , LA#/SI[ .


18CAPÍTULO 2. APLICACIÓN DE EXPRESIONES REGULARES EN LA MUSICA

Para identificar cuál es la octava de alguna determinada nota, comenzamos a


contar desde cualquiera, por ejemplo MI, y seguimos el orden de las restantes
hasta llegar a la repetición de la nota inicial.

Octava: M I, F A, F A#, SOL, SOL#, LA, LA#, SI, DO, DO#, RE, RE#,
MI .

2.4.2. Escalas musicales

La escala es un grupo de notas que siguen el orden natural de los sonidos (do -
re - mi - fa - sol - la - si). La mayorı́a utiliza siete notas, más la repetición de la
primera, que serı́a la octava. Como hay varios tipos de escalas, cada una tiene un
patrón de tono y semitono que la caracteriza. En la construcción de una escala
no pueden faltar notas ni haber notas repetidas.
Cada grado de la escala tiene un nombre, pero hay tres que son los más impor-
tantes son la tónica, subdominante y dominante. Son la tónica, el cuarto y el
quinto grado, y son los más importantes por las diferentes funciones armónicas
que cumplen. Por lo general, el resto recibe el número que le corresponde: se-
gundo grado, tercer grado, etc. Un tipo de escalas existente es el de las escalas
pentatónicas. Este tipo de escala es la más utilizada en la realización de solos,
e improvisaciones relacionadas al blues, la cual tiene un sonido que caracteriza
completamente al género. Cada una de estas escalas puede ser ubicada para cada
una de las tonalidades en varios lugares del diapasón, es decir, son movibles. Las
escalas pentatónicas consisten de cinco notas distintas y se clasifican gruesamente
en menores y mayores.
2.5. BÚSQUEDA DE PATRONES MUSICALES EN BLUES 19

2.5. Búsqueda de patrones musicales en Blues

En esta parte del trabajo dentro de la aplicación de expresiones regulares en la


música, nos centraremos en la búsqueda de patrones musicales para el género
Blues. Cabe destacar que el blues es un género que dio origen a muchos otros por
ejemplo el country, el pop y el básico en todos los subgéneros del rock. El blues
básicamente se compone en base a progresiones armónicas, según (Butrón, 2013)
la progresión más básica del blues, y también la utilizada para la composición del
blues creado en 12 compases.
Las progresiones armónicas del blues son el movimiento de los acordes de una
pieza y sirven de base a la melodı́a musical. Hay una gran cantidad de escalas
que pueden ser utilizadas para improvisar en cada uno de los acordes interpreta-
dos en una canción de blues. Dependiendo del estilo de blues y de la tonalidad,
entre otros, estas escalas varı́an, por lo que un conocimiento extensivo de éstas
resultará en el aprovechamiento máximo de los recursos que pueden ser utilizados
en la improvisación.

2.5.1. Expresión regular en la identificación de notas en


una escala de Blues

Esta aplicación de expresión regular, se basa en el reconocimiento de notas (John La-


ne, 2002), las cuales deben de ser colocadas en una composición musical de acuer-
do a la tonalidad presente en cada escala, para lo cual se tomará como referencia
el uso de la guitarra. Esta expresión regular esta propuesta para el uso por se-
parado de cada secuencia de notas producidas por un determinado instrumento
que componen una pieza musical blues, en la cual será rápidamente identificada
20CAPÍTULO 2. APLICACIÓN DE EXPRESIONES REGULARES EN LA MUSICA

alguna nota que pertenezca o no a la tonalidad en la que se encuentre la escala


propuesta. El estudio de blues es muy amplio por el uso de múltiples escalas y
progresiones musicales, por ello solo mencionaremos un tipo de escala muy usada
en blues básico la cual nos permita comprender con precisión como se realiza una
pieza blues. A continuación, mostraremos una escala de blues en mi mayor, en
un instrumento muy clásico como lo es guitarra.

Figura 2.1: Escala de Mi Mayor

Nota: En las tablaturas y partituras americanas, las notas musicales son


representadas por una letra en la siguiente secuencia :
DO(C) − RE(D) − M I(E) − F A(F ) − SOL(G) − LA(A) − SI(B) .

Figura 2.2: Patron inicial en Mi Mayor

Ahora veamos que el patrón inicial, en algunos casos el llamado patrón 0, es el


que esta primero y abarca notas al aire de cada cuerda de la primera a la sexta:
2.5. BÚSQUEDA DE PATRONES MUSICALES EN BLUES 21

mi si sol re la mi, y en el caso de las notas que se ubican en la parte inferior de


la primera a la sexta están en las notas:
La expresión regular propuesta para la escala de mi, es la siguiente expresión
regular:
(mi(6) + mi(4) + si(5) + la(4))(mi(6) + sol(6) + la(5) + sib(5) + si(5) + re(4) +
mi(4)+sol(3)+la(3)+si(2)+re(2)+mi(1)+sol(1))∗ (mi(6)+mi(4)+si(5)+la(4))

Esta expresión regular puede variar para cada escala de blues, note con deteni-
miento, que el final de cada secuencia de notas siempre tiene que terminar con
alguna de las cuatro notas iniciales de la secuencia. Esto es un hecho determinante
de cada escala y particularidad de blues. El número de cuerda y las repeticiones
solo son referenciales.

Como habı́amos mencionado anteriormente, el blues se basa en la improvisación


ası́ que a continuación propondremos una secuencia de notas, lógicamente perte-
necientes a la escala de Mi. Detallaremos más acerca de la progresión blues que
se usara en la escala de Mi mayor.

2.5.2. Algoritmo para la identificación de notas en pro-


gresiones

Como el blues es una composición de varios sonidos en conjunto, hacemos refe-


rencia al modelo propuesto por (Dovey, 2001) en donde propone un algoritmo
para la detección de notas musicales perteneciente a patrones musicales. Antes
de pasar a la revisión del algoritmo, primero centrémonos en comprender de que
22CAPÍTULO 2. APLICACIÓN DE EXPRESIONES REGULARES EN LA MUSICA

trata una progresión y cómo influye en una composición blues.

2.5.2.1. Progresión Blues

Según (Ganapes, 1995) una progresión de acordes, es sencillamente el cambio de


sucesión de acordes en una tonada; es decir la nota del primer acorde que se toca
viene a representar la tonalidad de dicha progresión. La mayorı́a de progresiones
blues son bastante simples ya que abarcan solo tres tonalidades, a lo que se le
denomina ”progresión de tres acordes”.
Siguiendo el tema, ahora procederemos con los detalles del algoritmo que pro-
pondremos a continuación. Para la identificación de una determinada escala, se
debe tener en cuenta que todas las notas deben ser pertenecientes a dicha escala,
de lo contrario si una de ellas falla o se encuentra perteneciente a otra escala se
dirá entonces que esa nota esta desafinada o está fuera de la tonalidad entonces
le corresponde a otra escala. Se debe tener en cuenta que para el blues las pro-
gresiones deben pertenecer a tres o a lo más cuatro escalas, si en el caso que un
conjunto de notas se encuentren en más de 4 escalas pues estarı́a fuera de las
progresiones de blues.
A continuación, mostramos un algoritmo para determinar la escala perteneciente
dado una secuencia de nota perteneciente a los cinco primeros trastes.

Proponemos tres secuencias de notas para cada tonalidad dentro de la escala que
hemos mencionado anteriormente. Esta composición en muy habitual en el blues
básico, esta composición se titula Texas Blues y cuenta con una progresión de
tres notas, las cuales son mi, la, y si7 (Ganapes, 1995).
2.5. BÚSQUEDA DE PATRONES MUSICALES EN BLUES 23

Figura 2.3: Notas en los 5 primeros trastes de Guitarra

Notas para mi: mi(6) − sol(6) − la(5) − do(5) − re(4) − mi(4) − mi(6).

Notas para la: mi(6) − sol(6) − la(5) − do(5) − re(4) − mi(4) − la(5).

Notas para si7: mi(6) − sol(6) − la(5) − do(5) − re(4) − mib(4) − mi(4).

Ahora haremos unos cambios a las secuencias de notas con el fin de improvisar un
tema, algo que es totalmente normal en el blues como ya lo hemos mencionado.
Propondremos las siguientes notas para la misma progresión del ejemplo anterior.

Notas para mi: sol(1) − mi(1) − re(2) − si(2) − la(3) − sol(3) − mi(4).

Notas para la: sol(1) − mi(1) − re(2) − si(2) − la(3) − sol(3) − la[(3).

Notas para si7: sol(1) − mi(1) − re(2) − si(2) − la(3) − sol(3) − si[(3).

Una vez que se ha ingresado cada progresión blues se realiza una comparación
mediante una expresión regular, la cual se encuentra en la función .Analizar”,
en la que se obtiene una respuesta de salida, en la cual la nota pertenece o no
pertenece a la escala establecida.
24CAPÍTULO 2. APLICACIÓN DE EXPRESIONES REGULARES EN LA MUSICA

Figura 2.4: Pseudocodigo para identificación de notas musicales en Blues

Luego de hacer el análisis correspondiente para las dos composiciones blues en la


misma progresión, en la primera se obtuvo resultados completamente correctos lo
que hace deducir que la composición está de acuerdo a los patrones de la escala
blues en mi mayor, en tanto en la segunda composición se obtuvo resultados
parcialmente correctos, puntualmente se obtuvieron dos errores en la nota la[ en
la tercera cuerda para el acorde LA, y en si[ en la tercera cuerda para el acorde
SI.
Este algoritmo de identificación de notas de progresiones musicales esta imple-
mentado en programas muy sofisticados de ingenierı́a musical en los cuales se
suele identificar las notas fuera de la tonalidad requerida en una composición
musical, para ası́ obtener una correcta composición y por ende una producción
musical de calidad, un ejemplo de ello son los masterizadores de sonido, ellos
procesan sonidos digitales para identificar errores, realizar mejoras y ofrecer una
composición como producto.
Capı́tulo 3

Reconocimiento de patrones en
secuencia de ADN

En los últimos años ha suscitado un crecimiento en cuanto a las cantidades de


datos generados en proyectos de secuencias de genomas y proteı́nas de diversas
especies. Tales datos (secuencias de nucleótidos) es de proteı́nas (aminoácidos)
son de gran escala y almacenados, Por lo cual no puede ser leı́do o analizados por
especialistas a través de métodos tradicionales. Por otro lado, se sabe que si son
grandes cantidades de datos equivalen a un mayor potencial de información. Sin
embargo, la información contenida en los datos no se caracteriza explı́citamente
ya que datos operativos no se erigen cuando se estudia individualmente. Ante este
escenario, surge la necesidad de explorar estos datos para extraer información y
conocimiento para usarlo en el marco del problema.

25
26CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN

3.1. Bioinformática
Comenzamos definiendo a la Bioinformática como la disciplina cientı́fica que com-
bina biologı́a, computación y tecnologı́as de la información definición de (Jennifer
Medina Walteros, 2005). El objetivo de la bioinformática es facilitar nuevas per-
cepciones biológicas y crear una perspectiva global que permita identificar los
principios unificadores de la biologı́a. Inicialmente, la bioinformática se ocupaba
sobre todo de la creación de bases de datos de información biológica, especial-
mente secuencias, y del desarrollo de herramientas para la utilización y análisis de
los datos obtenidos en esas bases de datos. La bioinformática en el campo de los
sistemas es análoga a la Minerı́a de datos de cadenas de ADN, proteı́nas, genómi-
cas, mutación y polimorfismo. Esta abarca distintas áreas como, por ejemplo, las
que mostramos a continuación:

Genómica: Ciencia que estudia el genoma y de igual forma aspectos de los


genes como la estructura, funcionamientos y evolución.

Transcriptómica: Transferencia genoma a proteı́na.

Proteómica: Estudio de las proteı́nas.

Metabolismo: Proceso fı́sico-quı́mico, un buen ejemplo de ello es la respi-


ración.

Genómica Comparativa: Compara genomas de varios individuos, especies.

Genoma Funcional: Estudia la función del gen.

Filogeneticos: Trata acerca de los árboles basados en la genética de las


especies.
3.2. ANTECEDENTES DE LA BIOINFORMÁTICA 27

Las principales áreas de la Bioinformática y de la Biologı́a computacional son el


desarrollo de herramientas que permitan acceso, uso y actualización de distintos
tipos de información biológica, ası́ como el desarrollo de nuevos algoritmos y solu-
ciones estadı́sticas para analizar grandes conjuntos de datos y resolver problemas
biológicos complejos, tales como predecir la estructura de un gen en secuencia
genómica (tema a tratar es este capı́tulo), predecir la estructura de proteı́nas,
identificar familias de proteı́nas por su similitud de secuencia,etc.

3.2. Antecedentes de la Bioinformática

Como ya lo manifestamos la bioinformática es la unión entre las tecnologı́as in-


formáticas y las ciencias biológicas. La historia se remonta mucho tiempo atrás
cuando en 1953 Watson y Crick propusieron el modelo de la doble hélice para
representar de forma estructural al ADN, en aquel momento no se tenı́a la idea
del formidable descubrimiento que generarı́a nueva información a partir de ese
momento, y ası́ se fueron generando una serie de cuestionamientos que fueron
necesitando de procedimientos algorı́tmicos. En el comienzo de los años sesen-
ta la computación ya habı́a sido participe de proyectos, no solo en áreas de la
informática, sino también en referentes a quı́mica de proteı́nas que llevo a los
cientı́ficos a combinar estrategias de la biologı́a molecular, las matemáticas y
las computadoras para poder enfrentar el desafió que representaba la creciente
cantidad de datos de aquellas materias.
28CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN

3.3. ADN
Según la definición propuesta por (Acosta, 2004). el ADN es definido como un
polinucleótido construido por cadenas antiparalelas de unidades de desoxirribo-
nucleótidos unidos covalentemente dispuestos de forma complementaria y adop-
tando la estructura enrollada de doble hélice. Es preciso indicar que se distingue
en el ser humano la existencia de dos tipos de ADN: El ADN nuclear y el ADN
mitocondrial. Ambos pese a su estructura bioquı́mica es similar, pero tienen ca-
racterı́sticas totalmente diferentes.

3.3.1. ADN Nuclear

Es básicamente el ADN que se encuentra en el núcleo de las células. Están for-


mando veintitrés pares de cromosomas (genoma diploide), en total se forman seis
millones de pares de bases de nucleótidos. Esta enorme cantidad de nucleótidos
componen a lo que llamamos el código genético, que es clave en las caracterı́sticas
genotı́picas de cada persona, información que se encuentra en los genes.
El ADN nuclear se divide en ADN codificable y no codificable. El ADN codi-
ficable se encuentra en un setenta por ciento del total del genoma nuclear, se
componen de genes que tienen la información necesaria para el desarrollo del ser
humano. Mientras que el ADN no codificable se encuentra en el treinta por ciento
restante del genoma nuclear, es muy usado por la ciencia forense, y la diferencia
trascendental entre estos dos tipos de ADN nuclear son las siguientes:

El ADN no codificable acumula más variedad interpersonal que el ADN


codificable, lo que facilita la identificación por tener mayor polimorfismo.

Porque el tamaño pequeño de estos le confiere gran resistencia a la degra-


3.3. ADN 29

dación y a la contaminación por paso del tiempo.

3.3.2. ADN Mitocondrial

Como es de conocimiento, la mitocondria es un organelo, esta posee genoma


propio, denominado ADN mitocondrial. Este ADN mitocondrial está compuesto
exactamente por 16 569 pares de bases divididos entre codificables y no codifica-
bles al igual que el ADN nuclear, cuya secuencia es perfectamente conocida desde
1981. Todo el ADN mitocondrial procede de la madre, ya que las mitocondrias
de las personas provienen solo del ovulo materno, las mitocondrias del padre no
forman parte del nuevo ser.

3.3.3. Estructura

El ácido desoxirribonucleico, frecuentemente abreviado como ADN. Contiene la


información genética usada en el desarrollo y el funcionamiento de los organis-
mos vivos conocidos y de algunos virus, siendo el responsable de su transmisión
hereditaria.

En la 3.1 se muestra la estructura del ADN formada por dos cadenas, llama-
das nucleótidos. Cada nucleótido está formado por una molécula de azúcar, un
grupo fosfato y un compuesto nitrogenado llamado base. Esta base puede ser
adenina(A), citosina(C), guanina(G) o timina(T). Las cadenas de genes vendrán
representadas por una serie de letras A-C-G-T.
30CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN

Figura 3.1: Estructura de ADN

3.4. Secuenciación de ADN

Una secuencia de ADN, secuencia de nucleótidos, o secuencia genética, es una


sucesión de letras representando la estructura primaria de una molécula real o
hipotética de ADN, con la capacidad de transportar información. Para (Burriel,
2010) la sucesión de cualquier número de nucleótidos mayor a cuatro es posible de
llamarse una secuencia. En relación a su función biológica, que puede depender del
contexto, una secuencia puede tener sentido o anti sentido, y ser tanto codificante
o no codificante. Las secuencias de ADN pueden contener ADN no codificante.

3.4.1. Comparación de cadenas de ADN

Para iniciar una comparación entre cadenas de ADN, se define una cadena lineal
finita y ordenada de sı́mbolos pertenecientes a un alfabeto, luego se determina
expresión regular o patrón, ası́ mismo se establecerá el tamaño de las expresio-
nes regulares, que evaluará las posibles combinaciones o similitudes dentro de la
secuencia a evaluar. Una vez definida la cadena se ingresa una cadena con carac-
terı́stica similar a la ya definida, con el objetivo de comparar las dos secuencias
3.5. ANÁLISIS DE PATRONES DE ADN 31

para encontrar la posición relativa de ambas en las que se produzca mayor núme-
ro de coincidencias entre sus componentes, a fin de encontrar todas las zonas
de similitud significativa entre las dos secuencias para caracterı́sticas comunes
(Julieth Andrea Paola Rios Daza, 2010).

3.5. Análisis de patrones de ADN

Las iniciativas para el reconocimiento de patrones artificialmente se dividen en


dos categorı́as: de reconocimiento de elementos concretos y abstractos (Gibson,
2008). El reconocimiento de elementos concretos implica el reconocimiento de
impresiones digitales, firmas, objetos fı́sicos, formas de ondas, reconocimiento de
elementos que existen concretamente en este caso , las muestras de ADN. Los
elementos abstractos serı́an elementos sin forma fı́sica como, por ejemplo, la so-
lución para un determinado problema.
El reconocimiento de patrones implica tres niveles de procesamiento: filtrado de la
entrada, extracción de caracterı́sticas y clasificación (Gibson, 2008). Por lo tanto,
generalmente los grandes desafı́os se encuentran en la elección de técnicas para
realizar estos tres aspectos. El filtrado de la entrada de datos tiene el objetivo de
eliminar datos innecesarios o distorsionados haciendo que la entrada presente sólo
datos relevantes para el reconocimiento del objeto en análisis. En general, se cree
que un problema de reconocimiento de patrones bien definido permitirá una re-
presentación compacta de los estándares y una estrategia de decisión simple. Pero
no siempre los patrones a ser reconocidos poseen esas caracterı́sticas. En este caso
reside la importancia de algoritmos de extracción y selección de caracterı́sticas.
32CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN

3.5.1. Reconocimiento de patrones

En esta sección se presentan algunos algoritmos conocidos en la informática y


que son responsables de la realización del reconocimiento de los patrones. Los
algoritmos se utilizan justamente para encontrar cadenas de caracteres conocidas
como estándar en un determinado archivo, secuencia o texto. La utilización de
los algoritmos es más común en el análisis de texto (datos biológicos almacenados
en archivos de texto), ya que se almacenan en forma lineal, es decir, las mismas
se describen como secuencia de nucleótidos o los aminoácidos, las mismas son
cadenas de caracteres muy largas. Será presenta tres algoritmos (Santos, 2011).

Figura 3.2: Funcionamiento del Algoritmo de Fuerza Bruta


3.5. ANÁLISIS DE PATRONES DE ADN 33

3.5.1.1. Algoritmo de la Fuerza Bruta

El Algoritmo de Fuerza Bruta tiene la caracterı́stica de recorrer toda la cadena del


carácter leı́do, buscando el patrón deseado, pero la misma realiza esa búsqueda a
través de todas las posiciones en el texto entre 0 y n − m.
Este proceso es conocido como desplazamiento de ”ventanas”, es decir, en el texto
leı́do la comparación se hace a través de secuencias de caracteres que parecen
pequeñas ventanas que contienen las secuencias deseables. La figura 3.2 muestra
el funcionamiento del algoritmo de fuerza bruta.

Figura 3.3: Algoritmo Knuth-Morris-Pratt

3.5.1.2. Algoritmo de Knuth-Morris-Pratt

La idea central de este algoritmo es aprovechar los caracteres reconocidos en las


secuencias en que el mismo pasó consiguiendo mayor desplazamiento del patrón
leı́do. Utiliza el pre procesamiento del estándar leı́do en lo que resulta en una
34CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN

tabla, esta tabla se consulta cuando hay una colisión. La función de la tabla, en
realidad, serı́a para determinar la mayor parte aprovechable del texto genético y
con ello aprovechar varias comparaciones. Este algoritmo se ha propuesto para
resolver lo siguiente problema: dado dos cadenas X e Y encontrar si hay ocurrencia
entre Y y X. Pasando a la fórmula matemática podemos asignar para que todo
i, 1 ≤ i ≤ n se tiene Ak + 1 = Bi .

Figura 3.4: Creacion de tabla para el Algoritmo Knuth-Morris-Pratt

3.5.1.3. Algoritmo de Boyer y Moore

Este algoritmo tiende a hacer comparaciones de derecha a izquierda, es decir, el


algoritmo posiciona el patrón genético más a la izquierda del texto genético ha-
ciendo una comprobación de derecha a izquierda, si la comparación del patrón no
tiene ninguna diferencia esto indica que se ha encontrado el patrón, de lo contrario
ocurrirá un cambio en la posición del patrón genético, pero ese cambio está basado
en dos heurı́sticas. Estas heurı́sticas evitan que el algoritmo haga comparaciones
innecesarios referentes a la búsqueda de patrones. Las Heurı́sticas se dan por
3.5. ANÁLISIS DE PATRONES DE ADN 35

Heurı́stica-del-Bom-Sufijo y Heurı́stica-del-Mal carácter. La Heurı́stica-del-Mal-


Carácter funciona cuando se tiene un error en el patrón y se utiliza la información
del mal carácter para proponer un nuevo cambio. La Heurı́stica-del-Bom-Sufijo
es cuando se encuentra un patrón diferente en el texto pudiendo avanzar varias
posiciones.

Figura 3.5: Algoritmo de Boyer y Moore

Para concluir con este capı́tulo, estos algoritmos mostrados anteriormente son
implementados en equipos especializados para la búsqueda de patrones de ADN
y análisis de secuencias de ADN. Estos equipos son muy usados por los médicos
y biólogos, los cuales hacen un estudio exhaustivo con información obtenida por
estos equipos altamente eficaces y costosos.
36CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN
Conlusiones

En ese trabajo se pudo evidenciar que las expresiones regulares, no son un tema
que solo se aplica en el campo de las ciencias de la computación, sino que también
está presente en diferentes actividades y/o profesiones, también en la tecnologı́a
desarrollada con funcionalidades especı́ficas para el apoyo de estos ámbitos.
Como pudo notar el lector en los capı́tulos anteriores se enfatizó el tema de las
aplicaciones, llegando a usar la definición y otros aspectos de las expresiones
regulares con datos que obtengamos del área en donde se quiera aplicar estas y
ası́ resolver algún problema o desarrollar funcionalidad con base en expresiones
regulares.
Finalmente la aplicación de las expresiones regulares pueden llegar a adentrase
en más áreas en un futuro, aun existen muchas aplicaciones de las expresiones
regulares por investigar.

37
38CAPÍTULO 3. RECONOCIMIENTO DE PATRONES EN SECUENCIA DE ADN
Apéndice A

Anexos

Con el algoritmo propuesto en el capı́tulo dos, en donde vimos la identificación


de notas musicales pertenecientes a patrones en escalas de blues se implementó el
algoritmo mostrado en ese capı́tulo, simulando el trabajo de los sistemas de mas-
terización musical. El código mostrado a continuación fue escrito en el lenguaje
de programación Java.
En la figura A1 se puede apreciar la utilización de método regex ,el cual nos
permite expresar la expresión regular propuesta en el capitulo 2. En la figura A2
es la que mas se asemeja al pseudocódigo mostrado en la figura 2.4 , en la cual se
omite el bucle ya que se esta incluyendo en la función .Analizar.a toda la cadena.
En cuanto a las pruebas ,en la figura A3 y A4 se observan los resultados obtenidos
en las secuencias de notas musicales propuestas para la escala de MI mayor.

39
40 APÉNDICE A. ANEXOS

Figura A.1: Funcion Analizar para la Identificacion de notas en escala de MI


mayor

Figura A.2: Codigo Main para la Identificacion de notas en escala de MI mayor


41

Figura A.3: Prueba para el tema Texas Blues, primera secuencia , nota Mi mayor

Figura A.4: Prueba para el tema propuesto, tercera secuencia , nota Si7
42 APÉNDICE A. ANEXOS
Bibliografı́a

Acosta, J. A. L. (2004). Nuevas perspectivas en paleopatologia a traves de la


genetica. Laboratorio de Identificacion Genetica- Granada, 1.

Burriel, V. (2010). Estructura y propiedades de los acidos nucleotidos. Quimica


Aplicada a La Ingenieria - Universidad de Valencia, 1.

Butrón, T. R. (2013). Creacion de blues , proceso y resultado. Colegio Suizo-


Santiago,Chile, 1.

Cordatontonopulos, V. (2002). Curso completo de teorı́a de la música. España,


1.

Dovey, M. J. (2001). A technique for “regular expression” style searching in


polyphonic music. Kings College, London, 2.

Ganapes, J. (1995). Blues a tu alcance. Hospitalet de Llobregat,Barcelona, 1.

Gibson, W. (2008). Reconocimiento de patrones de adn. Aleph, 1.

Jeffrey D. Ullman, J. E. H. and Motwani, R. (2008). INTRODUCCION A LA


TEORIA DE AUTOMATAS,LENGUAJES Y COMPUTACION. Pearson, 3
edition.

43
44 BIBLIOGRAFÍA

Jennifer Medina Walteros, Fabrizzio Garzon Urrego, P. T. M. J. B. S. Y. W. G.


(2005). Introduccion a la bioinformatica. Ingenieria Telematica, 8.

John Lane, W. P. (2002). A relational database approach to polyphonic music


search systems using regular expressions. Departament of Computer Science,
Michigan, 2.

Julieth Andrea Paola Rios Daza, Y. J. Q. P. (2010). IdentificaciÓn y comparaciÓn


de secuencias de adn utilizando expresiones regulares. Bogota, Colombia, 1.

Navarro, G. (2017). Lenguajes formales,computabilidad y complejidad. Departa-


mento de Ciencias de la Computacion Santiago,Chile, 1.

Santos, C. E. D. (2011). IntegraÇÃo de um aplicativo para reconhecimento de-


padrÕes na sequÊnciade dna com banco de dados xml. Assis, Sao Paulo, 1.