informÁtico - upbbga.edu.co · informatica y computacion - siic 2007 en el mes de septiembre se...
TRANSCRIPT
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
BOLETIN
INFORMÁTICO
�Editorial
� Nuevos grupos de Trabajo en Programación
� Mecanismos de Metaprogramación en JAVA.
� De los Datos al Conocimiento
� El problema del Longest Common Subsequence: Extensiones y Algoritmos
� Estado del Arte de las WSN
Año 1 - Boletín No. 2 Octubre – Noviembre de 2007 Facultad de Ingeniería Informática
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
SEMINARIO INTERNACIONAL DE
INFORMATICA Y COMPUTACION - SIIC 2007
En el mes de septiembre se llevó a cabo el primer “Seminario Taller Análisis de Secuencias Genómicas”, en el cual se
trabajaron las diferentes herramientas informáticas (software) que se usan a nivel mundial para hacer análisis de genomas (de
cualquier especie viva) y que han sido utilizadas en el estudio de las variaciones en los genes de las diferentes especies y que
han permitido detectar similitudes entre diferentes organismos vivientes, lo mismo que para determinar ciertas enfermedades;
los participantes en este taller aprendieron a manejar aplicaciones informáticas que están como punta de lanza en el desarrollo
de la Bioinformática.
Además, se realizó el primer “Seminario Internacional de Informática y Computación” en la Universidad Pontificia
Bolivariana en la cual se dieron a conocer los avances en estas disciplinas, los temas tratados fueron: Seguridad Informática,
Gestión de Tecnologías, Bioinformática, Ingeniería de Software y Bases de Datos, Computación de Alto Rendimiento.
Contamos con ponentes de Venezuela y de España, tocando temas como: desarrollos computacionales aplicados a los
genomas y seguridad informática, para estos temas contamos con el coordinador en el área de servicio de la Red
Iberoamericana de Bioinformática el doctor Raúl Isea (Venezuela) y en el área de criptografía tuvimos al autor de varios
libros sobre Aplicaciones Criptográficas el Doctor Jorge Ramió (España),quien es el coordinador y fundador de la Red
Iberoamericana de Criptografía y Seguridad de la Información – CRIPTORED, en el área de la computación forense
contamos con la presencia de una autoridad a nivel latinoamericano en esta área como es el doctor Jeimy Cano (Colombia).
Como parte adicional a los ponentes anteriores se contó con toda una serie de conferencistas que enriquecieron al auditorio
con los temas tratados, esto fortalece nuestra facultad para fomentar en los estudiantes y asistentes el interés por el desarrollo
Computacional y de la Informática.
Cabe destacar la valiosa participación y colaboración de los docentes y estudiantes de nuestra Facultad, ya que sus valiosos
aportes permitieron que éste evento se convierta en un espacio fundamental de innovación y actualización en el área de la
Ingeniería Informática.
Wilson Castaño Galviz, MSc
Docente Facultad de Ingeniería Informática
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
NUEVOS SEMILLERO DE
PROGRAMACIÓN
El semillero de Construcción de Software y Bases de Datos, abre un nuevo espacio de investigación en el área de
Programación. Con este nuevo grupo se busca que aquellos estudiantes con motivación para trabajar más a fondo en el área
de la programación, mejoren sus habilidades, intercambien ideas, estudien diferentes estrategias de la algoritmia, investiguen
sobre lenguajes novedosos y desarrollen mejores aplicaciones.
Temas como la programación estructurada, programación orientada a objetos, lenguajes para comunicaciones móviles,
desarrollo de juegos, desarrollo en ambientes gráficos, herramientas para el desarrollo de la programación, estrategias
algorítmicas de desarrollo, entre otros forman parte de los tópicos a estudiar. Se realizarán algunas actividades de fogueo
como maratones de programación para estimular la competencia y proyectar el grupo.
Se invita a todos los miembros de la comunidad universitaria con interés en estos temas a que se vinculen a este nuevo grupo
y compartan sus conocimientos, se propiciarán jornadas de teoría y práctica. Este grupo estará abierto a los estudiantes de
todas las carreras de la universidad, lo cual amplía los horizontes de aplicación de los temas estudiados y redundará en un
mayor nivel académico.
Quienes estén interesados podrán contactarse con la Ingeniera Diana Teresa Gómez Forero, docente de la Facultad de
Ingeniería Informática ([email protected]). Inicialmente se planean reuniones para los Miércoles de 6 a 8 pm en la
sala de Informática ubicada en el edificio F salón 203(F203), iniciando el próximo 24 de Octubre.
Si le gusta la programación de computadores, nos gustaría contar con su participación en este grupo.
Diana Teresa Gómez Forero, Msc
Docente Facultad de Ingeniería Informática
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
MECANISMOS DE METAPROGRAMACIÓN EN
JAVA APLICADOS AL DISEÑO E IMPLEMENTACIÓN DE COMPONENTES WEB
Milton Jesús Vera Contreras
Grupo de Investigación GIDIS
Universidad Francisco de Paula Santander
Abstract. This document proposes an architecture for applications Web based on components that use reflection.
The reflection is the capacity of a program in execution to look at itself and its environment and to change what does
depending on which observes. First the problem that originates the necessity of meta-programming mechanisms is
described, secondly a arhitecture based on components which they use reflection is explained, soon expose the
concepts of meta-programming in Java language to explain the implementation of the components and finally a case
of study like example.
1 Introducción
En la sociedad del conocimiento el objetivo del software ya no es el procesamiento automático de datos sino la comunicación
de conocimiento entre las personas que lo usan. Dicho conocimiento está encapsulado en los objetos, los cuales se hacen
visibles gracias a las interfaces gráficas y en general, las interfaces humano-máquina. La persistencia de dichos objetos es
indispensable y se consigue con las tecnologías de bases de datos relacionales y orientadas a objetos. El conocimiento
encapsulado por los objetos del software es cambiante y tanto la visualización como la persistencia de dichos cambios se
logran mediante el procesamiento o lógica del negocio.
La arquitectura del software es la manera como se organizan estos tres elementos, visualización, persistencia y
procesamiento, los cuales comparten la misma representación conceptual de los objetos del dominio del sistema real. En la
actualidad, lo más común es que estos tres elementos estén distribuidos físicamente y su arquitectura consiste en componentes
reutilizables y portables, permitiendo que la industria del software funcione de manera similar a la industria automotriz,
donde un producto final se obtiene rápidamente a través del ensamble de componentes genéricos y/o especializados, y de la
misma forma puede personalizarse y extenderse fácilmente. Las aplicaciones Web son el principal ejemplo de software
distribuido y en la mayoría de los casos su arquitectura está basada en componentes, como las aplicaciones basadas en
tecnologías J2EE. Las aplicaciones Web J2EE pueden ser tan sencillas o complejas como se desee y requiera, desde simples
archivos JSP con marcas HTML y scriptlets Java, hasta aplicaciones robustas que aprovechan al máximo las especificaciones
de los Java Beans y de las librerías de etiquetas personalizadas (Tag Library).
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Por lo general las aplicaciones Web mezclan código HTML y código Java en las páginas JSP, lo cual reduce la reutilización y
complica las tareas de diseño gráfico. Igualmente los Java Beans mezclan código SQL para recuperar la información
almacenada en bases de datos relacionales y repiten patrones de código para convertir datos relacionales en objetos.
El presente trabajo propone una arquitectura para desarrollar aplicaciones Web que evita estas situaciones. La propuesta es
aprovechar las características de reflexión del lenguaje Java, la portabilidad del lenguaje XML y la versatilidad del lenguaje
XSL. Con estas tecnologías se implementan dos componentes genéricos que permiten, en primer lugar, separar por completo
los Java Beans del código que recupera y modifica objetos persistentes y en segundo lugar, independizar las tareas de diseño
gráfico del resto del desarrollo de software.
Primero se describe la arquitectura, seguidamente se especifica el diseño e implementación de cada uno de los componentes y
finalmente se explica el uso de la arquitectura y los componentes en una aplicación específica. Antes de la implementación se
realiza una descripción de la API Java-Reflect e introspección, el mecanismo de metaprogramación empleado.
2 Especificación de la Arquitectura Propuesta
La arquitectura que se propone persigue como objetivo principal centrar la importancia de un proyecto de aplicación Web en
el modelado e implementación del sistema real, independiente de lo mecanismos para visualización y persistencia. Para esto
se requiere conseguir:
• Separar el desarrollo de la interfaz gráfica de usuario GUI del resto del desarrollo del proyecto.
• Aislar los detalles de implementación requeridos para la persistencia de objetos.
• Separar los detalles de seguridad, historial, control de navegación y transacciones en entornos Web.
Inicialmente estos objetivos pueden conseguirse fácilmente siguiendo el patrón arquitectónico Modelo Vista Control (M.V.C.
Model View Control), lo cual en J2EE se implementa mediante páginas JSP y HTML, Servlets y Java Beans. Sin embargo no
existe una total independencia de los mecanismos de visualización y persistencia lo que puede apreciarse en las siguientes
situaciones:
• La implementación de la vista con páginas JSP mezcla el lenguaje HTML con el lenguaje JAVA. Pueden tenerse
diseñadores gráficos muy buenos que carecen de conocimiento de tecnologías JAVA y recíprocamente pueden tenerse
expertos en páginas JSP con regular desempeño en el diseño gráfico. Esto ocasiona inconvenientes si se desea
implementar en paralelo y de manera separada la interfaz gráfica con el resto del proyecto. Igualmente cambios en la
apariencia visual del software, suelen requerir de los expertos en JSP. Esto no solo se presenta con tecnologías JAVA,
sino también ocurre en tecnologías como PHP y ASP, donde incluso es más evidente.
• Independientemente de la tecnología empleada (JAVA, PHP, ASP, etc.) es común encontrar repetidamente líneas de
código similares para la recuperación, inserción, modificación y eliminación de objetos persistentes. Por ejemplo, el
fragmento de código que recupera el listado de deudores de una empresa resulta similar al fragmento de código que
recupera el listado de cursos asignados a un profesor, a pesar de ser objetos muy diferentes.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
La primera situación contrasta con el primer objetivo propuesto y una buena alternativa es emplear el lenguaje XML, el cual
funciona como una vista conceptual previa a la visualización. Para esto es necesario un componente capaz de generar
fragmentos XML a partir de los objetos y reglas de visualización que transformen dichos fragmentos XML en formatos
sencillos y agradables para el usuario.
Para la segunda situación y, consecuentemente, el segundo objetivo, lo ideal es que exista un componente capaz de efectuar
las operaciones de persistencia sobre cualquier objeto.
El tercer objetivo se alcanza encapsulando en componentes genéricos el control del entorno Web, lo cual en la mayoría de los
casos es soportado por las plataformas existentes.
Con lo expuesto es evidente que la arquitectura que se busca debe estar basada en componentes y esto, entre otras ventajas,
permitirá su implementación en cualquier tecnología. Además, es necesario que los componentes puedan mirar al interior de
los objetos “looking inside object”[1],[2],[5],[7] lo que se consigue usando metaprogramación con mecanismos como
reflexión y genericidad. En éste orden de ideas se propone la arquitectura de la figura 1.
Fig 1. Arquitectura Propuesta (Elaborado en Visual Paradigm Community Edition)
2.1 Capa de Presentación
Esta capa tiene como única función ofrecer al usuario una interfaz gráfica agradable y sencilla. Cubre aspectos de diseño
gráfico como la diagramación, apariencia de colores y fuentes, navegación y control de restricciones de envío de información.
Por lo general las tecnologías empleadas son HTML, Java Script, Componentes de Animación como Macromedia Flash, entre
otros[4],[6]. Puesto que se quiere independizar ésta capa, se añade la tecnología XSLT, que permitirá convertir las vistas
conceptuales proporcionadas en XML por la capa Web a cualquier tecnología de visualización requerida. Es fundamental que
las tecnologías se empleen de acuerdo a los estándares puesto que la visualización final depende de un navegador que es un
componente no controlado por los desarrolladores.
2.2 Capa de Persistencia
La función principal de ésta capa es administrar la persistencia de los objetos. Incluye las funciones de representación,
almacenamiento, recuperación e integridad. El único trabajo requerido en ésta capa es el diseño e implementación de un
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
modelo persistente. La implementación se consigue con manejadores de bases de datos relacionales, aunque lo ideal sería una
manejador orientado a objetos. En ocasiones se puede emplear persistencia basada en XML en lugar de persistencia
relacional, por lo general cuando el volumen de objetos es considerablemente pequeño. El diseño del modelo persistente debe
derivar del modelo de clases que usa la capa Web.
2.2 Capa Web
Esta es la capa más compleja pues concentra la lógica del negocio. De manera general, ésta capa solicita a la capa de
persistencia los objetos necesarios para satisfacer un requerimiento del usuario final. Se asumen dos tipos de requerimientos:
consulta de objetos o manipulación de objetos. Cuando el requerimiento es de consulta, la capa Web debe proporcionar una
vista XML de los objetos devueltos por la capa de persistencia y regresar dicha vista a la capa de presentación. Cuando el
requerimiento implica la manipulación de objetos, estos pueden tener encapsulada la lógica de negocios que es independiente
de la persistencia, con lo cual la capa Web debe invocar dicha funcionalidad sobre los objetos. Es posible que la manipulación
de los objetos implique hacer que nuevos objetos se hagan persistentes, que objetos persistentes dejen de serlo o modifiquen
su estado. En estos casos la capa Web debe solicitar a la capa de persistencia que se efectúen tales cambios. Es posible que se
encapsule lógica de negocios como procedimientos almacenados en la base de datos, en tal caso, dichos procedimientos
deben ser invocados por la capa Web. Además de las tareas de lógica de negocio, representación XML y persistencia, la capa
Web debe proporcionar funcionalidades relacionadas con el control de seguridad, navegación y transacciones. La
complejidad de ésta capa se puede separar en componentes:
• Componente del Negocio, implementados como clases del negocio según el modelo conceptual.
• Componente ORM (Object Relational Mapping), encargado de interactuar con la capa de persistencia.
• Componente XMLConverter, que genera fragmentos XML a partir de objetos del negocio.
• Componente de Invocación (TagLibrary) que ocultan el código de acceso a los componentes anteriores.
• Componente Web, que controla los aspectos de seguridad, navegación y transacción.
• Componente de Visualización XSL (físicamente en ésta capa, lógicamente en la capa de presentación).
La comunicación entre las capas realiza mediante el protocolo HTTP y Web Services. La figura 2 muestra un diagrama de
secuencias como escenario general de consulta bajo la arquitectura, el cual se describe a continuación:
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Fig 2. Diagrama de Secuencia para Escenario de Consulta (Elaborado en Visual Paradigm Community Edition)
El usuario interactúa con el navegador demandando alguna funcionalidad. Puede hacerlo con un click sobre algún vínculo, o
pulsando el botón enviar de un formulario. (1). El navegador crea un paquete HTTP y envía la petición al servidor Web que
se encarga de crear una instancia de la página JSP solicitada (2). La página JSP instancia una marca de invocación de
persistencia ORMInvoquer (3) y le solicita obtener uno o varios objetos persistentes (4). El objeto ORMInvoquer instancia un
objeto ORM (5) y le delega la petición del JSP (6). El objeto ORM instancia un Bean (7). El objeto ORM solicita información
persistente (8). La capa de persistencia le regresa al ORM la información solicitada (9). El objeto ORM altera el Bean
instanciado con la información persistente (10). El objeto ORM regresa el resultado de la petición al ORMInvoquer (11). El
objeto ORMInvoquer regresa el resultado de la petición al JSP (12). La página JSP instancia una marca de invocación de
conversión XML, XMLInvoquer (13) y le solicita crear un fragmento XML a partir de los Bean existentes en la sesión. (14)
El objeto XMLInvoquer instancia un objeto XMLConverter (15) y le delega la petición del JSP (16) El objeto XMLConverter
solicita información a los Beans existentes en la sesión (17). Los Beans regresan la información al XmlConverter (18). El
objeto XMLConverter regresa el resultado al XMLInvoquer (19). El objeto XMLInvoquer regresa el resultado de la petición
al JSP(20). El JSP regresa un documento XML bien formado al navegador (21). El navegador interactúa con el servidor Web
solicitando las reglas de transformación XSLT (22). El navegador solicita al XSLT realizar la transformación de fragmentos
XML (23). El XSLT regresa el resultado de la transformación al navegador (24). El navegador muestra el resultado al
Usuario. (25)
Bajo esta arquitectura existen JSP dedicados sólo a consulta y otros dedicados sólo a modificación. Los últimos delegan la
generación de la vista a los primeros. El escenario anterior corresponde a la funcionalidad de consulta. En caso de requerirse
modificaciones a los objetos persistentes, los pasos correspondientes a la generación de la vista XML (paso 13) se omiten y la
página JSP delega (forward) a otra página la respuesta visual.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
3 Metaprogramación en Java
La primera idea de metaprogramación aparece cuando Von Neumann propone guardar las instrucciones y los datos juntos en
la misma memoria [7]-[9]. Esto origina la hipótesis “Si las instrucciones procesan los datos que están en la memoria, un
programa podría tratar las instrucciones de otro programa o las propias como datos, es decir, un programa que computa otro
programa”. El estudio de ésta hipótesis origina el término metaprogramación, el cual, de manera general se considera una
disciplina que consiste en escribir programas que representan y manipulan otros programas o así mismos. Originalmente esto
fue trabajo limitado a la inteligencia artificial y actualmente ha permeado muchas áreas. A continuación se resumen los
principales conceptos empleados y luego se exponen los mecanismos que Java proporciona para implementarlos.
3.1 Hipótesis de Smith
La hipótesis inicialmente propuesta respecto a la máquina de Neumann aparece generalizada a sistemas inteligentes por Brian
Cantwell Smith en “Reflection and Semantics in a Procedural Language” de la siguiente manera: “Del mismo modo que un
proceso computacional puede ser construido para razonar sobre un mundo externo en virtud de la inclusión de un proceso
intérprete que manipule formalmente representaciones de ese mundo, también así puede hacerse a un proceso computacional
razonar sobre sí mismos (u otro proceso computacional) en virtud de la inclusión de un proceso intérprete que manipule
formalmente representaciones de sus propias operaciones y estructuras”[7].
3.2 Concepto de reflexión
La hipótesis de Smith origina el término “reflection” y sobre su traducción al español, origen y semántica hay mucha
discusión. Pattie Maes propone las siguientes ideas [9] que ayudan a aclarar el significado y que son ilustradas por las figuras
3 y 4:
Un sistema computacional es algo que razona y actúa sobre una parte del mundo llamada el dominio.
Si un sistema computacional y su dominio están vinculados de modo que un cambio en uno provoca un efecto sobre el otro,
se dice que el sistema computacional está causalmente conectado.
Un meta-sistema es un sistema computacional que tiene como dominio otro sistema computacional, llamado su sistema-
objeto, que podría ser el mismo.
Reflexión es el proceso de razonar y/o actuar sobre si mismo.
Un sistema reflexivo es un meta-sistema causalmente conectado a si mismo (su sistema-objeto es él mismo).
Fig 3. Representación de Meta Sistema
Fig 4. Representación de Sistema Reflexivo
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
3.3 Clasificación de reflexión
Existen diversos criterios de clasificación. El más importante es el efecto y origina los términos introspección e intercesión
[7],[9]. Ambos son formas de reflexión siendo el primero el empleado en éste trabajo.
Introspección es la capacidad que tiene un sistema computacional para observar y razonar sobre su estado.
Intercesión es la capacidad que de un sistema computacional para modificar su propio estado o alterar su propia
interpretación.
Otra clasificación que se realiza es entre estructural y de comportamiento. En la primera sólo interesa la estructura (métodos,
propiedades, tipos), mientras que en la segunda interesa la semántica (operaciones).
3.4 Introspección en Java
Muchos lenguajes de programación han aparecido como resultado de estudios de metaprogramación y otros lenguajes han
incorporado estos conceptos. Java es uno de los lenguajes que desde sus inicios utiliza introspección dado su carácter de
máquina virtual y la necesidad de la portabilidad. El paquete java.lang.reflect ofrece una colección de interfaces y clases que
permiten al programador observar sus programas e incluso invocar dinámicamente métodos que en tiempo de compilación
desconoce. Las figuras 5 y 6 muestran diagramas de clases para éste paquete que permite realizar operaciones como obtener
el nombre de la clase de un objeto, obtener un metaobjeto que describe la clase de un objeto base, conocer las propiedades y
métodos declarados con sus tipos de datos, modificadores y parámetros, invocar constructores y métodos dinámicamente, lo
cual en cierto sentido va más allá de la introspección al permitir alterar el estado del sistema base [2].
Fig 5. Diagrama de Interfaces de tipos paquete java.lang.reflect. (www.java-sun.com)
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Fig 6. Diagrama de Clases de miembros de clase y paquete java.lang.reflect. (www.java-sun.com)
4 Diseño e Implementación de los Componentes
Uno de los dos problemas planteados es el de duplicidad de patrones de código. Los componentes más importantes para la
solución de éste problema son ORM y XMLConverter, que además reducen sustancialmente el trabajo de los programadores
puesto que, al emplear metaprogramación, consiguen generalizar los algoritmos de acceso a la persistencia y generación de
GUI. El otro problema es la mezcla de código HTML y Java. Para esto se propone usar XML como lenguaje conceptual que
comunique la capa de presentación con la capa Web, etiquetas personalizadas que encapsulen el acceso a los componentes
ORM y XMLConverter y XSL como lenguaje para transformar la vista conceptual XML en alguna vista de usuario como
HTML.
4.1 Componente ORM
Las operaciones de persistencia de objetos resultan ser siempre: hacer un objeto persistente (insert), modificar el estado de
objetos persistentes (update), destruir objetos persistentes (delete) y obtener objetos persistentes (get y/o load). Estas
operaciones pueden soportarse con bases de datos relacionales, bases de datos orientadas a objetos, archivos XML, etc.
Cuando una aplicación requiere de objetos persistentes lo ideal es que los solicite a un componente especializado. Puesto que
lo más común es que la persistencia se implemente con bases de datos relacionales, es necesario mapear los registros a
objetos. Se define entonces una interfaz llamada ORM, que son las siglas de Object Relational Mapping, pero su
funcionalidad no es estrictamente el mapeo de registros a objetos sino que puede tenerse cualquier otra fuente de persistencia,
como por ejemplo, archivos XML. La figura 7 muestra el diagrama de clases con la interfaz ORM y una clase que
implementa dicha interfaz para persistencia en bases de datos relacionales usando la API JDBC. Si en lugar de una base de
datos relacional se tiene una base de datos orientada a objetos, se debe proporcionar una implementación diferente pero
manteniendo la misma interface, lo cual brinda portabilidad.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Fig 7. Diagrama de clases componente ORM. (Elaborado en Visual Paradigm Community Edition)
La interfaz ofrece métodos get y load que se encargan de recuperar objetos desde la fuente persistente según cumplan con las
condiciones especificadas en los parámetros. También proporciona un único método para hacer persistente un objeto y/o
actualizarlo. Finalmente proporciona varios métodos para eliminar uno o varios objetos persistentes.
La implementación que se proporciona de la interfaz ORM usa las características de reflexión proporcionadas por el lenguaje
Java. En lenguajes que no soportan ésta característica, debería estudiarse algún mecanismo que permita simularla o conseguir
resultados similares. Inicialmente se propone que toda clase que describa objetos del dominio del sistema real, debe
proporcionar un constructor sin parámetros, declarar sus propiedades private o protected y proporcionar métodos de acceso a
dichas propiedades. Los métodos de acceso deben comenzar su nombre por el verbo inglés get (obtener) y debe seguirse por
el nombre de la propiedad. El tipo de dato de retorno de un método de acceso debe ser el compatible con el tipo de dato de la
propiedad a la cual se accede. Un método de acceso no debe recibir parámetros. Por ejemplo, para una propiedad “int
estatura”, el método de acceso debe tener la signatura “public int getEstatura(){return this.estatura;}”. Además debe
proporcionar métodos para modificar dichas propiedades. Los métodos de modificación deben comenzar su nombre por el
verbo inglés set (establecer) y debe seguirse por el nombre de la propiedad. El tipo de dato de retorno de un método de
modificación es void, no debe retornar valor. Un método de modificación debe recibir un único parámetro cuyo tipo de dato
debe ser compatible con el tipo de dato de la propiedad que modifica. Por ejemplo, para una propiedad “int estatura”, el
método de modificación debe tener la signatura “public void setEstatura(int estatura){this.estatura = estatura;}”. A una clase
con estas características se le conoce como un POJO "Plain Old Java Object". De ésta forma, el componente ORM invoca los
métodos cuyo nombre inicie con get y/o set según lo requiera para obtener objetos o modificarlos, independientemente de la
fuente de persistencia.
Para usar el componente es suficiente con instanciarlo e invocar sus métodos. Para evitar que los JSP requieran de código
Java para usar el componente, se proporciona un juego de etiquetas personalizadas, una por cada método de la interfaz.
Dichas etiquetas sirven para invocar desde una página JSP un método de ORM, de manera transparente en lo que corresponde
a la codificación. Estas etiquetas conforman el componente ORMInvoquer.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
4.2 Componente XMLConverter
La arquitectura pretende que la capa Web se olvide por completo de la visualización. Para esto, se usa el lenguaje XML como
mecanismo para proporcionar vistas conceptuales cuyo aspecto gráfico final epende del navegador y de las reglas de
visualización. Puesto que la información a visualizar está encapsulada en objetos, es necesario un componente capaz de
generar fragmentos XML a partir de los objetos. Se propone una interfaz muy sencilla: 1- generar una vista simple de un
objeto que muestra sólo sus propiedades sin incluir las relaciones con otros objetos y 2- generar la vista completa de un objeto
que muestra la vista simple del objeto y la de los objetos con los que se relaciona. En la implementación del componente se
presume que las relaciones entre objetos usan las interfaces Collection e Iterator y que puede accederse a las propiedades y
relaciones mediante métodos “get”. De éste modo, usando reflexión, cuando se encuentra un método “get” se verifica el tipo
de dato de retorno, si es un tipo primitivo, un Wrapper o un String, se crea una marca con igual nombre que la propiedad a la
cual accede el método. Cuando el tipo de dato es un objeto, se obtiene recursivamente la representación XML simple de dicho
objeto. Cuando el tipo de dato es un Iterator o un Collection, se obtiene recursivamente la representación XML simple de
cada uno de los objetos contenidos en dicha estructura. Si la vista XML que se requiere es simple, se omiten los métodos
“get” cuyo retorno no es primitivo, wrapper o String.
La figura 8 muestra el diagrama de clases correspondiente. De la misma manera que en la persistencia, se proporciona un
componente con un juego de etiquetas personalizadas que permiten ocultar el código que usa el componente XMLConverter.
Estas etiquetas conforman el componente XMLInvoquer.
Fig 8. Diagrama de clases componente XML (Elaborado en Visual Paradigm Community Edition)
4.3 Componentes Invoquer
El uso de etiquetas en páginas JSP permite encapsular patrones de código requeridos para generar fragmentos HTML o
procesar objetos[3]. Puesto que se usa XML como una vista conceptual, las etiquetas pretenden que una página JSP contenga
sólo marcas. En éste sentido, se tienen una o varias marcas por cada método que ofrecen las interfaces de los dos
componentes ya descritos. El diseño de éstas marcas también contempló aspectos de navegación y concurrencia de usuarios
pero se omiten los detalles ya que no es tema central de éste documento estudiar la tecnología asociada a las Tag Library.
4.4 Componente XSL y XSLT
La visualización de un documento XML dependen del dispositivo y de las reglas de visualización. El lenguaje XSL ofrece
múltiples alternativas de conversión a formatos que van desde el HTML hasta el SWF, incluyendo formatos como el WML,
PDF, XLS, entre otros. El lenguaje XSL es declarativo y requiere de un procesador que ejecute las declaraciones de
conversión de formato. Un programa de procesamiento XSLT lee el documento XML conformando un árbol. Las hojas XSL
son un conjunto de reglas escritas en XML que establecen patrones de etiquetas sobre las cuales debe aplicarse una acción de
formateo o de transformación. Cuando el procesador XSLT encuentra un elemento xml, lo convierte en un nodo y va
conformando el árbol original del documento. Paralelamente, el procesador conforma el árbol de transformación leyendo el
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
documento XSL. Cuando en el árbol XSL aparece una regla de transformación, el programa XSLT busca en el árbol original
XML un nodo que concuerde con el patrón de la regla y la aplica generando un nuevo nodo que va conformando el árbol del
documento transformado. Las reglas de transformación se conocen como plantillas “templates”. Cada elemento XML puede
tener una plantilla de transformación, sólo es obligatorio que exista una plantilla para el nodo raíz. Una plantilla XSL es un
nodo XML dentro de un documento XSL, cuyo contenido indica qué se debe hacer con el contenido de un nodo cuando éste
encaje con el patrón de la plantilla. El qué hacer con el contenido de un nodo pueden ser instrucciones de transformación, de
procesamiento o de formateo. Las plantillas se pueden definir usando la marca <xsl:template match=condicion> o la marca
<xsl:template name=nombre>. La primera forma se emplea a manera de disparo automático durante el procesamiento XSLT
y la segunda puede invocarse de modo similar a un procedimiento.
La lectura de las reglas XSL y la transformación XSLT puede dejarse al cliente o realizarse en el servidor. La mayoría de los
navegadores incluyen un procesador XSLT por lo que en aplicaciones Web es recomendable descargar esta tarea a los
clientes. La visualización puede hacerse directamente en las páginas JSP pero esto implica que los programadores de
aplicaciones Web tengan que realizar tareas de diseño gráfico y de programación en el cliente como JavaScript y SWF Flash
Macromedia. El uso de XML en la capa Web y XSL en la capa del cliente permite que diseñadores gráficos expertos diseñen
la interfaz gráfica en editores profesionales en paralelo con los programadores de páginas JSP, quienes sólo saben marcas y
conocen el dominio de la aplicación.
La estructura del lenguaje XSL permite reutilizar plantillas y realizar plantillas genéricas que visualicen de la misma manera
conjuntos de nodos XML diferentes, como por ejemplo la visualización de tablas, vínculos, árboles, capas, entre otros. Los
elementos de reutilización de XSL más destacados son xsl:import y xsl:call-template, los cuales permiten agrupar conjuntos
de plantillas XSL como un componente donde la interfaz resulta ser la especificación DOM (Document Object Model) de la
W3C. Además, XPATH funciona como un lenguaje de consulta a nodos XML que en cierto sentido permite
metaprogramación en ese nivel, lo cual sigue reduciendo el trabajo de los programadores.
5 PIAGEV un Caso de Estudio
En el año 2003 se terminó el proyecto PIAGEV, Portal Institucional para el AutoAprendizaje y Gestión de la Enseñanza
Virtual, una plataforma elearning integrada al Sistema de Información Académico de la Universidad Francisco de Paula
Santander. Inicialmente PIAGEV se implementó usando Servlets, XML y XSL, pero esto dificultaba su mantenimiento y
modificación lo que llevó a utilizar JSP en el año 2006. Inicialmente se usaron marcas personalizadas para encapsular
patrones de código, las cuales incluían en su implementación pequeños usos de la API Java-Reflect. De aquí se origina el
problema propuesto y dado que en paralelo el Grupo de Investigación GIDIS realiza estudios sobre metaprogramación y en
particular reflection, se planteó la propuesta de experimentar la introducción de éstos mecanismos en la formulación de
arquitecturas dinámicas de software. La figura 9 muestra un diagrama de despliegue de PIAGEV usando los componentes
propuestos. Es posible encontrar información adicional en el sitio Web del proyecto PIAGEV y del grupo de investigación
GIDIS.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Fig 9. Diagrama de despliegue PIAGEV (Elaborado en Visual Paradigm Community Edition)
6 Conclusiones
El mecanismo de reflection proporcionado por Java ofrece la posibilidad de implementar componentes genéricos que, durante
la ejecución miren dentro de los objetos y adapten a estos su comportamiento.
En aplicaciones Web con arquitecturas basadas en MVC, incorporar reflection permite separar realmente el Modelo de la
Vista mediante un componente que puede generar vistas conceptuales XML (preferiblemente) o vistas reales HTML de los
objetos que inspecciona.
Las operaciones tradicionales de persistencia que toda aplicación Web requiere pueden ocultarse en un único componente
capaz de mapear objetos a registros en plataformas relacionales siempre que los metadatos relacionales sean equivalentes a
los metadatos de los objetos. El uso de componentes permite concentrar el esfuerzo durante el desarrollo en las etapas de
análisis y diseño que permitan implementaciones rápidas similares al ensamble de autos en la industria automotriz.
La metaprogramación como objeto de estudio además de ser un tema de gran interés en la actualidad origina diversos matices
adicionales de investigación como las arquitecturas dinámicas de software que usan metaprogramación para conseguir su
dinamismo.
Agradecimientos
Doctor Wladimir Rodriguez, Universidad de los Andes Merida Venezuela, por la revisión del primer borrador de éste artículo
durante la asignatura Desarrollo de Aplicaciones Empresariales en la Maestría en Computación. Ingeniero Oscar Alberto
Gallardo Perez, Universidad Francisco de Paula Santander Cúcuta, por su apoyo y colaboración.
Referencias
[1] Forman Ira R. y Forman Nate. Java Reflection in Action. (2005).
[2] Haapakorpi Mikam, Meta Programming In Java, (2006).
[3] Hanna Phil, JSP Reference, McGrawHill 2005.
[4] Johnson Mark, Designing Enterprise Applications Addison Wesley (2005).
[5] Maes Pattie, Concepts and Experiments in Computational Reflection OOPSLA (1987).
[6] Rodriguez Wladimir, Apuntes Maestría en Computación, Universidad de los Andes Mérida Venezuela 2006.
[7] Ortín Soler Francisco, Diseño de Máquinas abstractas basadas en Reflectividad Computacional (1999)
[8] Ortín Soler Francisco, Diseño de un Sistema de Persistencia Implícita mediante Reflectividad Computacional. (2000)
[9] Tanter Erik, Más allá de la orientación al objeto Reflexión, metaprogramación y programación por aspectos.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
DE LOS DATOS AL
CONOCIMIENTO
La Evolución Digital Inteligente.
Por: Jaime Alonso Parra Giraldo.
Ingeniería de sistemas - Universidad Simón Bolívar
INTRODUCCIÓN
La minería de datos1 a dado lugar a una paulatina sustitución del análisis de datos dirigido a la verificación por un enfoque de
análisis dirigido al descubrimiento del conocimiento. La principal diferencia entre ambos se encuentra en que en el último se
descubre información sin necesidad de formular previamente una hipótesis.
La aplicación automatizada de algoritmos de minería de datos permite detectar fácilmente patrones en los datos, razón por la
cual esta técnica es mucho más eficiente que el análisis dirigido a la verificación cuando se intenta explorar datos procedentes
de repositorios de gran tamaño y complejidad elevada.
Dichas técnicas emergentes se encuentran en continua evolución como resultado de la colaboración entre campos de
investigación tales como: bases de datos, reconocimiento de patrones, inteligencia artificial, sistemas expertos, estadística,
visualización, recuperación de información y computación de altas prestaciones.
Las técnicas de Data Mining (Minería de Datos) son el resultado de un largo proceso de investigación y desarrollo de
productos. Esta evolución comenzó cuando los datos de negocios fueron almacenados por primera vez en computadoras, y
continuó con mejoras en el acceso a los datos, y más recientemente con tecnologías generadas para permitir a los usuarios
navegar a través de los datos en tiempo real. Data Mining toma este proceso de evolución más allá del acceso y navegación
retrospectiva de los datos, hacia la entrega de información prospectiva y proactiva. La Minería de Datos está lista para su
aplicación en la comunidad de negocios porque está soportado por tres tecnologías que ya están suficientemente maduras:
� Recolección masiva de datos
� Potentes computadoras con multiprocesadores
� Algoritmos de Data Mining
Para introducirnos en la comprensión del Descubrimiento de Conocimiento y entender la importancia de la Minería de Datos
dentro del mismo, analizaremos el siguiente enfoque que nos dará una visión mas clara para así entender el presente artículo:
Que es la Minería de Datos?
1 Minería de datos es la traducción al español de las palabras en inglés Data Mining.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
• Reconocer el valor implícito en la gran cantidad de datos almacenados en los sistemas de información de las
organizaciones.
• Los datos dejan de ser un “producto inerte” para convertirse en materia prima que necesita ser procesada, para así
obtener un “producto valioso” como lo es el conocimiento.
• El conocimiento se convierte en una herramienta útil e importante para la toma de decisiones en el área de cualquier
empresa, sobre la cual se han obtenido los datos.
Luego de analizar el anterior enfoque, estudiaremos el Descubrimiento de Conocimiento, dividido en tres partes:
1. Explicar el origen o descubrimiento del conocimiento.
Se puede decir que actualmente las organizaciones luchan por mantener un alto grado de competitividad y para lograr esto
juega un papel muy importante la información que éstas manejan; pero más allá de la información que posean, la clave está
en la estructura y la sistematización de la misma en procura de convertirla en conocimiento.
Como la finalidad de las empresas es mejorar sus resultados cumpliendo sus objetivos organizacionales, la información que
éstas poseen en sí no representa ninguna ventaja, en cambio si se aplica la sistematización necesaria aplicando las tecnologías
adecuadas de KDD (Descubrimiento de Conocimiento) entonces se generará un valor agregado para la organización como es
el conocimiento útil para la toma de decisiones.
Según el modelo de Newman (1997) :
Sostiene que el control y monitorización de los procesos solo produce datos, pero el análisis de dichos datos realizado con
técnicas estadísticas o de minería de datos y su contextualización es lo que proporciona información.
Cuando finalmente, la información es interpretada, esta se transforma en conocimiento útil.
De lo anterior podemos deducir que si deseamos obtener un valor agregado como lo es el conocimiento, se debe aplicar
alguna técnica o herramienta capaz de obtener información útil a partir de datos almacenados.
2. Diferenciar el tipo de conocimiento que se utiliza o genera.
Es importante reconocer el impacto que tienen las tecnologías de la información y comunicación en las organizaciones al
igual que la gestión del conocimiento que se aplica en las mismas buscando mejorar cada vez mas los resultados obtenidos.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Entonces, para alcanzar el mejoramiento de los resultados, las organizaciones aplican técnicas o utilizan herramientas
informáticas para la gestión del conocimiento que responde a enfoques y organizaciones diferentes.
Por lo tanto puede decirse que no existe una única combinación de técnicas y herramientas, ni una metodología exclusiva para
lograr con éxito el proceso de gestión del conocimiento, pero es importante resaltar que técnicas como la minería de datos se
han convertido en un aliado de la gestión del conocimiento a la hora de analizar la información que ya tienen las empresas en
sus bases de datos.
Para definir la palabra conocimiento, existen conceptos muy parecidos que dificultan su entendimiento. Por lo tanto
podríamos decir que conocimiento no es lo mismo que datos, ni lo mismo que información. Entonces los datos son los
elementos base de la pirámide del conocimiento y al conjunto de datos organizados y analizados en un contexto determinado
lo denominamos información.
Es de aclarar que recopilar los datos, organizarlos e incluso analizarlos es algo que puede hacer el software informático, pero
yo considero que al conocimiento (desde el punto de vista humano) de momento no llegan los computadores, por que en sí el
conocimiento es identificar, estructurar y utilizar la información para obtener un resultado, aplicando la intuición y sabiduría
propia de la persona. La capacidad de interpretar esos datos es lo que provoca que la información se convierta en
conocimiento.
3. Describir la función que cumple la minería de datos como fuente de descubrimiento y generación de
conocimiento para las futuras tomas de decisiones en las empresas.
Cuando se utiliza la minería de datos en un determinado proyecto, el proceso que se está realizando es una “extracción no
trivial de información implícita, previamente desconocida a partir de los datos”, a nivel del cocimiento explícito,, con el fin
de descubrir patrones, relaciones, reglas, asociaciones, tendencias etc., que deberemos interiorizar, para luego exteriorizarlo
en la toma de decisiones.
Es de resaltar que la forma de analizar los datos por parte de la minería de datos es bastante parecida, independientemente de
la técnica que utilicemos y destacando que cada proceso de minería de datos es un caso diferente, podremos adaptar y
modificar estos pasos según las propias características del proyecto en el que nos encontremos inmersos:
• Selección y procesado de los datos:
Por lo general los datos que residen en una base de datos no se encuentran en el formato mas adecuado para nuestro
algoritmos, por lo que será necesario realizar diferentes operaciones sobre ellos. Por ejemplo podemos realizar un filtrado de
valores incorrectos (inadecuados), o un muestreo de la población total de los datos para así trabajar con un número reducido
de datos, este muestreo puede ser aleatorio o establecer que cumplan unas características determinadas, también se puede
reducir el número de valores a través de técnicas de redondeo, clustering (agrupación) etc.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
• Selección de características:
Una vez determinada la población sobre la que vamos a realizar nuestra investigación nos encontraremos con que el número
de datos a trabajar es muy amplio, así que aplicamos una selección de características de los datos, es decir determinaremos
aquellas variables que nos interesan, con el fin de simplificar los datos y realizar el proceso de la forma mas sencilla posible.
Se pueden utilizar diferentes técnicas estadísticas o métodos gráficos que nos permitan observar las relaciones existentes entre
las variables.
• Uso de un algoritmo de extracción de conocimiento:
En esta parte aplicaremos la técnica de minería de datos que hayamos determinado anteriormente, para obtener un modelo de
conocimiento con los patrones de comportamiento y las reglas de asociación entre las variables.
• Interpretación y evaluación de los resultados:
Se analizan y verifican si los resultados obtenidos son coherentes y se comparan con los obtenidos por los análisis estadísticos
y de visualización gráfica; luego se determina si son novedosos y si aportan un nuevo conocimiento que puedan inferir en las
decisiones de la organización.
En el caso de que los resultados obtenidos difieran, se debe elegir aquel que mas se ajuste. En el caso de que ningún
resultado satisfaga las expectativas se debe iniciar de nuevo el proceso.
• Consideraciones:
→ El manejo de grandes volúmenes de información, exigen de una arquitectura robusta en velocidad, procesamiento y
almacenamiento de la información.
→ Antes de emprender la aplicación de un proceso de minería de datos se debe analizar de forma clara, precisa y concreta
cuales son nuestros objetivos, que datos se van a explorar y cuáles son los patrones o conocimientos que deseamos
generar.
→ Antes de transmitir el tipo de conocimiento descubierto hay que verificar, interpretar e interiorizar los resultado
obtenidos, ya que de todas formas para la toma de decisiones importantes, los lideres de las organizaciones no desean
correr riesgos, aunque es de considerar hoy en día que las diferentes técnicas de inteligencia artificial están madurando
cada vez mas y se están combinando con herramientas KDD que van embebidas en software de gran importancia, para así
generar aplicaciones inteligentes, confiables y eficientes.
BIBLIOGRAFÍA
HERNÁNDEZ, José – RAMÍREZ, María – FERRI, Cesar. Introducción a la Minería de Datos. Editorial Prentice Hall.
Madrid 2004.
EDELSTEIN, Herbert. Two Crows Corporation [on line]. “Introducción to Data Mining and Knowledge Discovery, Third
Edition”. [Maryland U.S.A] 1999. Disponible desde internet: URL:http://www.twocrows.com/booklet.htm.
STATSOFT, Inc. Data Mining Techniques. [on line]. [Tulsa Oklahoma U.S.A]. Disponible en
internet:<URL:http://www.statsoft.com/textbook/stdatmin.html>.
THEARLING, Kurt. An Introduction to Data Mining. [on line]. Disponible en internet: <URL:
www.thearling.com/text/dmwhite/dmwhite.htm>.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
EL PROBLEMA DEL LONGEST COMMON
SUBSEQUENCE: EXTENSIONES Y
ALGORITMOS
Wilson Soto * wesotof @unal.edu.co
Yoan Pinzón *
Abstract—This survey summarize the problem Longest Common Subsequence (LCS), some his differents extensions and some his differents algorithms techniques that given solution to the problem. A table of classification chronological for author is included, with his respective complexity of time and space of the solution. The final show some applications of LCS, the works to developing to future and conclusions after the production of the survey. Resumen—El estado del arte resume el problema del Longest Common Subsequence (LCS), algunas de sus diferentes extensiones y algunas de las diferentes técnicas de algoritmos que dan solución al problema. Se incluye una tabla de clasificación cronológica por autor, que contiene la respectiva complejidad de tiempo y espacio de la solución. Al final se muestran algunas de las aplicaciones del LCS, los trabajos a desarrollar a futuro y las conclusiones después de la elaboración del estado del arte.
Términos generales
Algoritmos, Secuencia, String.
Palabras Clave
Alineamiento, Distancia, Frontera, Longest Common Subsequence, Puntos Dominantes, Similitud.
* Universidad Nacional de Colombia (Grupo ALGOS – UN), Bogotá.
I. INTRODUCCIÓN
El Longest Common Subsequence es una de las derivaciones del paradigma del string matching, el approximate
string matching, que simplemente es una comparación exacta de cadenas que permite errores.
El problema del Longest Common Subsequence (LCS) o en español la secuencia común más larga es uno de los
modelos computacionales más usados, pues sirve como medida de similitud entre un conjunto de secuencias por
medio de su longitud, que se muestra a través de los símbolos que contiene.
Las aplicaciones que tiene el longest common subsequence son entre otras la compresión de datos, reconocimiento
sintáctico de patrones, procesamiento XML, recuperación WEB, comparación de archivos y bioinformática [36].
El artículo busca dar una clasificación de los algoritmos desarrollados para dar solución a las extensiones del longest
common subsequence desde el punto de vista de las técnicas más comúnmente usadas. Un mapa conceptual que
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
puede resumir la idea básica de este estado del arte se ve en la Figura 1. Por ello se presenta en la sección II los
conceptos básicos y la notación necesaria para entender los problemas. La sección III explica las técnicas usadas
para dar solución a los problemas, incluyendo los algoritmos y estudios que se han desarrollado para las diferentes
extensiones que aquí se mencionan asociadas al problema del longest common subsequence. La sección IV pretende
dar una visión práctica de donde aparece el problema e intenta descubrir las posibles aplicaciones y sobre todo un
campo de investigación. La sección V muestra las necesidades de investigación que son actualmente requeridas y en
las que se puede desarrollar un estudio más profundo.
II. EL PROBLEMA DEL LONGEST COMMON SUBSEQUENCE
A. Conceptos
Las siguientes definiciones son necesarias para entender este articulo:
La distancia entre dos strings x y y es el mínimo costo de operaciones para transformar x en y. El costo de una
secuencia de operaciones es la suma de los costos de las operaciones individuales.
Alineamiento significa insertar espacios tal que letras iguales se alineen con espacios y evitando que estos se
alineen, pero aceptándolos al comienzo o final del string (Ver Figura 1).
G C A T - A T T -
- C A T G - T T G
Figura 1: Alineamiento
Dado un alineamiento se calcula una medida de similitud, esta medida tiene tres posibilidades:
De letra-letra, error letra-letra y letra-espacio(o viceversa).
Los tipos de alineamiento se resumen en [16]. Algunos de los algoritmos de alineamiento más conocidos son:
Needleman y Wunsch (1970), SW (Smith & Waterman, 1981), FASTA (1988) y BLAST (1990) que son
relacionados en [9] y [12]. La similitud de secuencias tiene diversas aplicaciones, entre otras ensamblaje de
fragmentos, agrupamientos, minería, comparación de genomas, análisis fitogénetico, homologías1 funcionales y
estructurales. Entre las medidas de similitud se encuentran la distancia de Hamming, La distancia de Levenshtein, la
distancia de Episodio y el Longest Common Subsequence. El Longest Common Subsequence permite únicamente
inserciones y eliminaciones, todas de costo 1. El nombre de esta distancia refiere a que esta medida representa la
longitud más larga de acoplamiento entre los caracteres que pueden estar entre dos strings, teniendo en cuenta el
orden de las letras, caracteres o símbolos.
1 proteínas que tienen un origen evolutivo común
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Figura 1. Mapa conceptual del problema del
longest common subsequence
B. Definición
La siguiente es la notación formal usada :
Σ = Conjunto de elementos llamados símbolos, caracteres o letras. Por ejemplo Σ = {A, C, G, T}.
String o palabra = Secuencia finita de símbolos que pertenece a un alfabeto. Función s de {1,...,n} sobre Σ.
s = a1a2 ... an donde ai = s(i) ∈ Σ.
ε = Un string sin ningún símbolo o carácter.
Σn = Conjunto de strings o palabras de longitud n. Por ejemplo Σ 3 = {LAS, ESS, FGR, DED}.
Σ* = Conjunto de strings sobre Σ. Por ejemplo Σ* = {ACT, TAC, TAG, ACGT, CT, AG, ACTG, GG, AA, ε}.
|s| = Longitud de un string s. Por ejemplo s = AGCATT, |s| = 6 o si s = ε, |s| = 0.
Prefijo de s = string v tal que s = vt para ciertos t ∈ Σ*.
Sufijo de s = string v tal que s = tv para ciertos t ∈ Σ*.
k = Máximo error permitido. k ∈ R.
d = Σ* x Σ* → R es un función de distancia.
Inserción = Insertar un carácter en un string. Por ejemplo la operación de inserción sobre el string s = TCA
adicionando la letra G, es s’ = TCGA.
Eliminación = Eliminar un carácter de un string. Por ejemplo la operación de eliminación sobre el string s = TCGA
eliminando una letra, es s’ = TGA.
Sustitución = Reemplazar una letra en un string. Por ejemplo la operación de sustitución sobre el string s = AATC
reemplazando una letra por otra, es s’ = ATTC.
Con lo anterior, la definición del problema del LCS consiste en:
Dado Σ y las secuencias S1, S2 ∈ Σ*,|S1| = n y |S2| = m (m ≤ n), LCS(S1, S2) es una secuencia W tal que:
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
1. ∀i, 1 ≤ i ≤ |W| - 1,
∃j, j’: 1≤ j < j’ ≤ | S1 |, ∃k, k’: 1 ≤ k ≤ k’ ≤ | S2 | tal que
W[i] = S1[j] = S2[k], y
W[i+1] = S1[j’] = S2[k’];
2. ∃ W’ ∈ Σ* : (1) y |W’| > |W|
S2 es una subsecuencia de S1 si esta puede ser obtenida desde S1 removiendo algunos de estos símbolos.
Dado S un conjunto de secuencias, S es una secuencia común de S si esta es una subsecuencia de cada secuencia en
S.
El problema del longest common subsequence (LCS) se resume como: sean dos palabras w y s. Se dice que s es
una subsecuencia de w cuando se puede obtener s a partir de w borrando algunas letras (posiblemente todas o
ninguna) [18], [20] y [38]. Ejemplo:
Dadas las secuencias S1 y S2:
S1= 1 0 0 2 3 2 1 1 0 2 2 2 3 3 1 0 0 1
S2= 0 1 1 1 3 3 3 0 2 1 2 1 1 0 1 2 1
Algunas de las subsecuencias comunes de S1 y S2 son:
sc1= 1 3 2 1 2 1
sc2= 0 1 1 3 3 1
sc3= 0 1 1 0 2 2 1 0 1
sc4= 1 0 2 2 1 1 0 2 1
Las subsecuencias comunes más largas son sc3 y sc4 de los dos strings dados y la longitud es |LCS(S1, S2)| = 9.
C. Complejidad del problema
EL LCS es un problema que puede ser resuelto en tiempo polinomial con programación dinámica para dos strings, o
para algún número fijo de strings, pero este se convierte en un problema “NP-Hard” en general para un número
arbitrario k de strings. En [24] muestra un capítulo completo a la complejidad del algoritmo y la relación con la
teoría NP, que se resume a un problema de maximización siguiente: "Dado un lenguaje finito no vacío X, encontrar
una subsecuencia común de X de longitud máxima”. Algunos trabajos ya han estudiado el tema como [3] y [10], que
tratan el tema con soluciones heurísticas que dan solución a la subsecuencia común más larga en tiempo polinomial.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
D. Extensiones
1. All Longest Common Subsequence
El problema del all longest common subsequence (ALCS) consiste en buscar todas las subsecuencias comunes más
largas entre X y algún substring de Y.
Los estudios completos sobre los límites en tiempo de ejecución sobre todos los algoritmos que generan all longest
common subsequence distintos y all longest common subsequence embebidos (posiciones en ambos strings para los
cuales los caracteres del LCS correspondan) se encuentran [1], [25], [26], [27] y [29].
Una de las variaciones presentadas en este tipo de extensión del longest common subsequence es el all semi-local
longest common subsequence [42], donde cada string es comparado contra todos los sufijos del otro string.
2. Length Longest Common Subsequence
La longitud de un longest common subsequence (LLCS) de dos o más strings es una útil medida de su similitud, que
se usa para saber tanto sea posible acerca de la longitud esperada de un par de strings aleatorios. La estimación de
esta longitud esperada promueve algunos problemas de interés combinatorio que son estudiados en [20], [21] y [41].
En [32] algunos de los algoritmos desarrollados para solucionar esta extensión del longest common subsequence
tiene que ver con técnicas de programación dinámica, naive recursive (recursión ingenua) y programación dinámica
con recursión. Otras investigaciones como en [34] y [35] proponen una solución basada en tipos de algoritmos de
paralelismo aplicados a modelos de procesamiento.
3. Constrained Longest Common Subsequence
Dados los strings S1, S2 y P, el problema constrained longest common subsequence (CLCS) para S1 y S2 con respecto
a P es buscar un longest common subsequence LCS de S1 y S2 tal que P es una subsecuencia de este LCS.
En los trabajos [4],[22],[39] y [40] relacionados con el estudio de este tipo de extensión del longest common
subsequence, mencionan el concepto de grafo de edición, este surge a partir de la solución del longest common
subsequence de la matriz de programación dinámica (Ver Figura 2). El grafo de edición es un grafo en el que se
presentan las celdas como nodos y los vértices como las operaciones, con un tamaño de (n+1)(m+1) puntos (i, j) para
0 ≤ i ≤ n, y 0 ≤ j ≤ m como vértices. El peso de los arcos corresponde al costo de las operaciones, inserción (i-1, j),
eliminación (i, j-1) y operaciones de igualación o reemplazo (i-1, j-1). La distancia de edición entre los dos strings es
la ruta más corta desde el vértice [0, 0] (esquina superior izquierda de la matriz) al vértice [m, n] (esquina inferior
derecha de la matriz). Para el ejemplo, la distancia es 5 y el LCS(x, z) = “ACDBC” (Ver Figura 3).
4. Shortest Common Supersequence
El problema del shortest common supersequence (SCS) consiste en buscar para un conjunto dado de strings P, el
más pequeño string el cual es una supersecuencia de cada string de P.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Dadas dos secuencias u y v, la secuencia u es una supersecuencia de v si v es una subsecuencia de u. Si u ∈ Σ* es
una supersecuencia común de v1,...,vn si, para cada i = 1,...,l, secuencia u es una supersecuencia de vi. Entonces u es
una supersecuencia de longitud mínima si u es una supersecuencia común de longitud mínima posible [19].
Aunque este problema es dual con el problema del longest common subsequence, muy pocos algoritmos han sido
desarrollados, autores como Itoga en 1981 y Fraser e Irving en 1995 han tratado el problema, en [43] y [44] también
se aborda este tipo de extensión.
A C D Y B A C
0 0 0 0 0 0 0 0A 0 1 1 1 1 1 1 1C 0 1 2 2 2 2 2 2D 0 1 2 3 3 3 3 3R 0 1 2 3 3 3 3 3B 0 1 2 3 3 4 4 4C 0 1 2 3 3 4 4 5
A C D Y B A C
A
C
D
R
B
C
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 1 1 1 1 1 10
1
1
1
1
1
1
0
1
1
1
0
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
0
1
1
1
0
Figura 2. Matriz de programación dinámica y grafo de edición asociado para x = “ACDYBAC” y z = “ACDRBC”
A C D Y B A C
A C D R B C
Figura 3. Longest common subsequence entre
x = “ACDYBAC” y z = “ACDRBC”
5. Longest Common Increasing Subsequence
Un problema similar al LCS es el problema de Longest Increasing Subsequence (en castellano, Subsecuencia
Creciente Más Larga), el cual consiste en, dada una permutación P de los números 1,2,...,n, encontrar el largo
máximo que puede tener una subsecuencia de P que sea creciente. Por ejemplo, si P = (6,2,8,5,7,4,1,9,3) entonces
una LIS (también la única) es R = (2,5,7,9). Un problema de LIS se reduce a uno de tipo LCS. Para ello,
interpretamos una permutación R = (R1,R2,...,Rn) sobre los números 1,2,...,n como la palabra R1R2...Rn. Es fácil ver
que una LIS entre P y Q corresponde a una LCS entre P y Q = (1,2,...,n). Esta variante es ampliamente estudiada en
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
[14] y [15], además mencionan una extensión de particular del longest common increasing subsequence, el LCWIS
(longest common weakly-increasing subsequence) que considera, un limite y no subsecuencias estrictamente
incrementales.
6. Exemplar Longest Common Subsequence
Es una generalización del problema del longest common subsequence, donde las secuencias de entrada son sobre la
unión de dos conjuntos disyuntos de símbolos, un conjunto de símbolos obligatorios y un conjunto de símbolos
opcional. Esta extensión tiene una acercamiento heurístico el cual es básicamente una restricción al problema de
alineamiento de un string.
El Exemplar Longest Common Subsequence es un conjunto S de secuencias sobre un alfabeto Ao U Am, donde Ao es
el conjunto de símbolos opcionales y Am es el conjunto de símbolos obligatorios. El conjunto Ao y el conjunto Am son
disyuntos, la salida es un secuencia común más larga de todas las secuencias en S y conteniendo todos los símbolos
obligatorios [10]. Algunas de las versiones del Exemplar longest common subsequence se ven en la Tabla I.
Tabla I
Versiones del ELCS
Nombre ProblemaOcurrencias de
símbolos mandatorios
Ocurrencias de símbolos opcionales
ELCS(1,<=1) exactamente 1 a lo sumo 1ELCS(1) exactamente 1 sin restricciónELCS(>=1,<=1) al menos 1 a lo sumo 1ELCS(>=1) al menos 1 sin restricción
7. Otras variantes del Longest Common Subsequence
Estas variantes son relacionadas en [30], introduciendo la noción de gap-constrains en LCS. Esta extensión del
longest common subsequence ofrece la posibilidad de manipular gap-constraints entre las igualdades consecutivas
en medio de las secuencias y además provee la herramienta de manipular problemas de búsqueda donde no todas las
posiciones de este sean importantes. Las siguientes son las definiciones de otras variantes del longest common
subsequence:
Dado un string X[1..n] = X[1] X[2] ... X[n] y una subsecuencia S[1..r] = S[1] S[2] ...S[r] de X, se define una
secuencia de correspondencia de X y S, C(X, S) = C[1] C[2]...C[r] si es una secuencia estrictamente incremental de
enteros tomando desde [1, n] tal que S[i] = X[C[i]] para todo 1≤ i ≤ r.
Dado X y una de sus subsecuencias S, C(X, S) puede no ser única.
El LCS con espacio fijo (FIG), se define como buscar la subsecuencia común fija espaciada (fixed gapped) de
máxima longitud entre dos strings X y Y, si existe una secuencia de correspondencia fija espaciada CFG(k) (X, S) y
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
CFG(k) (Y, S). Una secuencia de correspondencia fija espaciada de un string X de longitud n y una subsecuencia S de
longitud r, con respecto a un entero dado K, se da, si y solo si tiene C[i] - C[i-1] <= K + 1 para todo 2 ≤ i ≤ r.
El LCS con espacio elástico (ELAG), se define como buscar la subsecuencia común elástica espaciada (elastic
gapped) de máxima longitud entre dos strings X y Y, si existe una secuencia de correspondencia elástica espaciada
CFG(k) (X, S) y CFG(k) (Y, S). Una secuencia de correspondencia elástica de un string X de longitud n y una
subsecuencia S de longitud r, con respecto a enteros dados K1 y K2, K2 > K1, se da, si y solo si se tiene K1 < C[i] -
C[i-1] ≤ K2 + 1 para todo 2 ≤ i ≤ r.
El LCS con espacio rígido fijo (RIFIG), se define como buscar la subsecuencia común dados dos strings X[1..n] =
X[1] X[2] ... k[n] y Y[1..n] = Y[1] Y[2] ... Y[n] y un entero K y una subsecuencia común S[1..r] = S[1] S[2] ... S[r] de
X y Y, si existe una secuencia de correspondencia espaciada fija CFG(k) (X, S) y CFG(k) (Y, S) tal que para todo 2 ≤ i ≤
r.
El LCS con espacio rígido elástico (RELAG), se define como buscar la subsecuencia común dados dos strings
X[1..n] = X[1] X[2] ... X[n] y Y[1..n] = Y[1] Y[2] ... Y[n] y un entero K y una subsecuencia común S[1..r] = S[1] S[2]
... S[r] de X y Y, si existe una secuencia de correspondencia espaciada fija CFG(k) (X, S) y CFG(k) (Y, S) tal que para
todo 2 ≤ i ≤ r.
III. TÉCNICAS DE SOLUCIÓN Y ALGORITMOS
La clasificación mostrada en la Tabla II, reúne los algoritmos realizados para dar solución al problema del LCS y sus
extensiones, relacionando las técnicas usadas.
Las técnicas usadas están basadas en la división realizada en [33], las cuales son: Programación Dinámica (peor caso
y caso promedio), Autómatas Finitos, Filtramiento y Paralelismo de Bits (basado en autómata y programación
dinámica). Los algoritmos que dan solución al longest common subsequence son tomados de [2] y [20] y los
algoritmos relacionados a dar solución a las extensiones son tomados de las referencias en las que se encuentra la
definición de cada extensión.
1. Programación dinámica
En la programación dinámica, la solución propuesta usa un algoritmo que construye una matriz D[0..m, 0..n] donde,
Di,j representa el LCS para x1..i y z1..j. Cada celda es calculada según los vecinos superior, izquierdo, superior
izquierdo de la celda. La matriz D es calculada de la siguiente manera (Ver Figura 5):
Di, j = 0 si i =0 o j = 0
Di, j = D[i-1, j-1] + 1si xi = zj
Di, j = max{D[i-1, j], D[i,j-1]}si xi ≠ zj
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Y la distancia de edición es la celda D(m, n).
Por ejemplo: Los strings x = “CTACTAATA” y z = “ATCGTT”
C T A C T A A T A
0 0 0 0 0 0 0 0 0
A 0 0 0 1 1 1 1 1 1 1T 0 0 1 1 1 2 2 2 2 2
C 0 1 1 1 2 2 2 2 2 2G 0 1 1 1 2 2 2 2 2 2T 0 1 2 2 2 3 3 3 3 3
T 0 1 2 2 2 3 3 3 4 4
Figura 5. Matriz de Programación dinámica
|LCS(x, t)| = D(6, 9) = 4, para determinar la subsecuencia común más larga entre las cadenas dadas se utiliza los
conceptos de frontera y puntos dominantes [8]. La frontera no es más que la delimitación de los números similares
dentro de la matriz, como se ve en la figura las líneas gruesas y los puntos dominantes son las esquinas de esas
fronteras. Para saber cual es la subsecuencia común más larga se recorre desde la esquina de la frontera inferior
derecha buscando las esquinas o puntos dominantes que están a la izquierda y por encima al punto dominante
anterior. En el ejemplo, empezamos con 4 ([T,T] posición [6,8]) luego pasamos a la frontera 3 ([T,T] posición [5,5])
luego a la 2 ([C,C] posición [3,4]) y por último a 1 que puede ser ([T,T] posición [2,2]) o (A,A posición [1,3]).
Entonces el LCS(x, t) = “ACTT” o “TCTT”.
El algoritmo que genera la matriz de programación dinámica es el siguiente:
Algoritmo 1 DP
LCS(a, b) {m=|a|, n=|b|}
for i ← 0 to m do D[i, 0] ← 0
for j ← 0 to n do k[0,j] ← 0
for i ← 1 to m do
for j ← 1 to n do
if ai = bj then L[i,j] ← L[i-1,j-1] + 1
else
if D[i,j-1] > D[i-1,j] then
D[i,j] ← D[i,j-1]
else D[i,j] ← D[i-1,j]
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
endfor
endfor
En este tipo de técnica de solución se puede determinar la distancia de edición y las subsecuencias comunes y en
consecuencia la más larga, el algoritmo que construye la matriz tiene complejidad en tiempo de ejecución de O(nm)
y el espacio requerido es O(m). El algoritmo de búsqueda de texto de Hirschberg toma un tiempo de ejecución O(nl
+ n log s) y espacio O(d + n) basado en los puntos dominantes [2] y [29].
Un ejemplo de solución dentro de este tipo de técnica es el algoritmo de solución del ALCS (all longest common
subsequence) se encuentra el mencionado en [26], con tiempo de ejecución de O(m) y espacio O(m):
Algoritmo 2 ALCS – DP
LCS(a,b) {m=|a|, n=|b|}
for j ← 0 to n do
for i ← 0 to m do
if i = 0 or j = 0 then D[i, j] 1
else
D[i, j] ← 0
if ai = bj then D[i, j] ← D[i - 1, j - 1]
else
if L[i - 1, j] = L[i, j] then
D[i, j] ← D[i, j] + D[i - 1, j] endif
if L[i, j - 1] = L[i, j] then
D[i, j] ← D[i, j] + D[i, j - 1] endif
if L[i - 1, j - 1] = L[i, j] then
D[i, j] ← D[i, j] - D[i - 1, j - 1] endif
endif
endif
endfor
endfor
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Una de la extensiones de esta técnica es la técnica Sparse dynamic programming (programación dinámica esparcida)
que se estudia en [6], y básicamente es una técnica diseñada para el mejoramiento de algoritmos en el análisis de
secuencias, que funciona dado un conjunto de recurrencias de programación dinámica para calcular la matriz. Se usa
un conjunto esparcido de las entradas a la matriz que son de importancia, proporcionando la ventaja de producir
algoritmos que tienen tiempo de ejecución dependiente sobre el tamaño del conjunto esparcido mejor que sobre el
tamaño de la matriz de programación dinámica.
2. Autómata Finito
Un autómata finito es una máquina finita de estados donde para cada par de estados y símbolos de entrada, hay una y
solo una transición para un nuevo estado, además es determinista si las transiciones son conocidas y dados algunos
datos de entrada, se sabe que transición realizará la máquina .
El grafo de edición sobre un string S, es un autómata finito determinista que tiene la capacidad de reconocer todos
los substrings de S. Un autómata de sufijos no determinista reconoce algún sufijo para un string S (Ver Figura 6).
Ahora consideremos el anterior autómata con errores, donde cada fila denota el número de errores visto (la primera
fila cero, la segunda fila uno, etc.). Cada columna representa la igualación a un prefijo de patrón. Las flechas
horizontales representan la igualación a un carácter, todas las otras flechas incrementan el número de errores, al
moverse a la próxima fila, las flechas verticales insertan un nuevo carácter en el patrón y las flechas diagonales
representan el reemplazo o eliminación de un carácter del patrón. La flecha inicial que hace un bucle sobre el primer
nodo, indica una igualación para iniciar en cualquier parte en el texto (Ver Figura 7).
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Tabla II
Complejidad de algoritmos para solucionar el Longest Common Subsequence y sus extensiones
TÉCNICA AÑO TIEMPO ESPACIO AUTOR
PD 1974 O(mn) O(mn) Wagner - FisherPD 1975 O(mn) O(n) Hirschberg
PD 1977 O((n+R) log n) O(R+n) Hunt - Szymanski
PD 1977 O(Ln + n log n) O(Ln) Hirschberg
PD 1977 O(L(m - L)log n) O((m - L)² + n) HirschbergPD 1980 O(n max{1, m/log n}) O(n²/log n) Masek - PatersonPD 1982 O(n(m - L)) O(m²) Nakatsu - Kambayashi - YajimaPD 1984 O(Lm log(n/L) + Lm) O(Lm) Hsu DuPD 1985 O(Em) O(E min{m, E}) UkkonenPD 1986 O(kn) O(n) Landau - VishkinPD 1986 O(n + m log n + D log (mn/D)) O(R+n) ApostolicoPD 1987 O(n(m - L)) O(n) Kumar - RaganPD 1987 O(Lm + n) O(D + n) Apostolico - GuerraPD 1990 O(n(m - L)) O(n) Wu - Manber - Myers - MillerPD 1990 O(n + min{D, Lm}) O(D + n) Chin - PoonPD 1992 O(n(m - L)) O(n) Apostolico- Browne - GuerraPD 1992 O(Lm) O(n) Apostolico- Browne - GuerraPD 1992 O(n + D log log min{D, mn/D}) O(D + m) Eppstein - Galil - Giancarlo - GiuseppeA 1996 O(mn/log n) O(n) Wu - Manber - Myers
A 1995 O(min(3m, m(2mt)k, (k+2)m-k(k+1)!)) t numero estados Melichar
F 1999 O(kn log(m)/w) - Baeza Yates - NavarroF 1990 O(n log |ΣP| + pm) - Grossi - LuccioPB - NFA 1996 O( k(m - k)/w n) peor caso O( k² / w n) promedio - Baeza Yates - NavarroPB - PD 1994 O(nm/log(δ) / w) - WrightPB - PD 1999 O( m/w n)peor caso O( k / w n)promedio - MyersPD 2006 O(R log log n + n) θ(max{R, n}) Iliopoulos - RahmanPD 2002 O(2mn) O(mn) KunklePD 2003 O(mn) O(m) GreenbergA 2006 O(mn/log(m+n)) O(m+n) TiskinPD 1992 - - SankoffPD 2005 O(L[patrón]* n²m²) O(L[patrón]*nm) Abdullah - OmerPD 2005 O(k(mL + R) + n) O(Rk) DeorowiczPD 2006 O(pR log log n + n) θ(max{R, n}) Iliopoulos - RahmanPD 1975 O(mn) O(m+n) Hirschberg
PD 2002 O(2mn) - KunklePD 2002 O(mn) - KunklePD 2002 O(mn) θ(mn) KunklePB 1993 O(m+n+1) O(m+n) Mi - RahmanPD 2004 O(mn) O(mn) Yang - Huang - ChaoPD 2005 O((m + nl ) log log δ + Sort (m)) O(m) Brodal - Kaligosi - Katriel - Kutz
LCWIS PD 2005 O(m + n log n) para alfabeto de 2 y 3 letras - Brodal - Kaligosi - Katriel - KutzELCS A 2006 - - Bonizzoni - Della Vedova - Dondi - Fertin - Vialette SCS PD 1995 O(k) - DnacikFIG PD 2006 O(n² + R log log n) θ(R) Iliopoulos - Rahman
ELAG PD 2006 O(n² + R log log n) θ(max(R,n)) Iliopoulos - RahmanRELAG PD 2006 O(n² + R(k2 + k1)) θ(n²) Iliopoulos - RahmanRLCS PD 2006 O(n²) θ(n²) Iliopoulos - RahmanRIFIG PD 2006 O(n²) θ(n²) Iliopoulos - Rahman
LCIS
LLCS
ALCS
CLCS
LCS
δ = tamaño del alfabeto;
A = Autómata Finito No Determinista;
ALCS = All Longest Common Subsequence;
CLCS = Constrained Longest Common Subsequence;
D = Número de puntos dominantes;
E = distancia de edición (E = m + n - 2L);
ELAG = LCS Elastic Gap;
ELCS =Exemplar Longest Common Subsequence;
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
F = Filtramiento;
FIG = LCS Fixed Gap;
k = Número de errores;
l = Longitud del LCIS/LCWIS;
L = Longitud del longest common subsequence;
LCS = Longest Common Subsequence;
LCIS = Longest Common Increasing Subsequence;
LCWIS = Longest Common Weakly-Increasing (or non decreasing) Subsequences;
LLCS = Length Longest Common Subsequence;
m = L(S1) (m <= n); n = L(S2);
p = longitud del tercer string el cual aplica la restricción;
PB = Paralelismo de Bits;
PD = Programación Dinámica;
R = Numero de igualaciones;
RELAG = LCS Rigid Elastic Gap;
RIFIG = LCS Rigid Fixed Gap;
RLCS = LCS Rigid Gap;
SCS = Shorthest Common Supersequence;
Sort = Tiempo de orden de cada secuencia de entrada; t = min(m + 1, s);
w = longitud de palabra del computador en bits.
0 1 2 3 4 5 6
F I N I T O
Figura 6. Autómata finito no determinista que busca
exactamente “finito”
F I N I T O
F I N I T O
0 1 2 3 4 5 6
0 1 2 3 4 5 6
0 1 2 3 4 5 6
F I N I T O
ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ
ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ
ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ
ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ ΣΣΣΣ
εεεε εεεε εεεε εεεε εεεε εεεε
εεεε εεεε εεεε εεεε εεεε εεεε
Figura 7. Autómata no finito determinista que busca el
texto “finito” con 2 errores
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
En [36] se reseña un análisis del autor Melichar de 1995, que mejora la complejidad de espacio y tiempo de
preprocesamiento del autómata a la siguiente expresión:
O(min(3m, m(2mt)k, (k+2)m-k(k+1)!)) donde t = min(m+1,σ)
donde t es el empleo de tiempo en m número de estados.
Una de las extensiones del problema del longest common subsequence que usa esta técnica es la exemplar longest
common subsequence (ELCS)[10] y en [41] se usa un DAG (grafo acíclico directo) que es un autómata finito
determinista que da solución a la extensión all longest common subsequence (ALCS).
3. Filtramiento
Filtramiento o filtración, son algoritmos que filtran el texto, rápidamente descartando áreas de texto las cuales no
generan igualaciones, o mejor, buscan potenciales igualaciones y luego aplican un algoritmo secuencial para revisar
cada candidato. Estos algoritmos están enfocados al caso promedio, y son de mayor funcionalidad en los algoritmos
que no realizan toda la inspección de los caracteres del string, que es el concepto del approximate string matching.
Esta técnica envuelve dos etapas de proceso. La primera etapa preselecciona un conjunto de posiciones en el texto
que son potencialmente similares al patrón. La segunda etapa verifica cada posición potencial usando un método
exacto de rechazo potencial de igualaciones con k errores. La preselección utiliza usualmente O(n+p) tiempo, donde
n es el coeficiente mas pequeño de los algoritmos de preprocesamiento patrón - texto y p es el número potencial de
igualaciones buscadas en la primera etapa del algoritmo. Algunos de las derivaciones de este tipo técnica son la
filtración por tuplas (si un patrón aproximadamente iguala un substring del texto, entonces ellos comparten al menos
una l-tupla para un l suficientemente grande) y filtración por composición (si un patrón aproximadamente iguala un
substring de un texto, entonces ellos tienen composiciones de letras similares). Es de importancia que la complejidad
de los algoritmos desarrollados en este tipo de técnica dependan críticamente de la tasa de r/p, donde r es el número
real de igualaciones con k errores y p es el número potencial de igualaciones buscados en la primera etapa del
algoritmo. Entre mas grande la taza, mas pequeña es la ejecución de la segunda etapa de filtración del algoritmo. La
filtración es útil, para grandes niveles de error donde las áreas de texto a verificar cubren casi todo el texto. La
verificación puede ser hecha en una forma jerárquica [36], este concepto puede ser visto en la Figura 8, en la cual se
desea buscar el patrón “ACTGACAA” con cuatro errores en cualquier texto. Si se divide el patrón en cuatro
subpatrones con algún error, cualquiera de estos puede ser buscado en el texto. Puede verificarse la búsqueda del
patrón completo en un texto desde las hojas hasta la raíz (patrón).
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
A C T G A C A A
A C T G A C A A
A C T G A C A A
Figura 8. Verificación jerárquica
4. Paralelismo de bits
Son algoritmos basados en el trabajo de paralelismo del computador sobre los bits. Se usan sobre los autómatas
finitos no deterministas y la matriz de programación dinámica, que dan solución al problema del longest common
subsequence [36].
Este funciona específicamente con el número de bits de la palabra del computador. Las actuales arquitecturas
funcionan con palabras de 32 o 64 bits de procesamiento, lo que es muy importante en la práctica. Este valor es
comúnmente representado como ω. Por ello las operaciones usadas en este tipo de técnica están basadas en las
operaciones con los bits, que son: conjunción, disyunción inclusiva, disyunción exclusiva, negación y
desplazamiento o corrimiento .
Los algoritmos desarrollados en paralelismo de bits buscan un patrón en un texto simulando la operación de un
autómata no determinista y muchos de estos pueden verse como implementaciones de un autómata determinista,
pues el uso de esta técnica convierte los autómatas no deterministas a deterministas con la ventaja de ser mas simple,
mas rápido y fácil de extender para manipular patrones complejos, pero con la principal desventaja de la limitación
impuesta con el tamaño de palabra del computador.
Unos de los algoritmos desarrollados en es tipo de técnica son el BPD (Bit-Paralellism Diagonals) que es basado
sobre un autómata finito no determinista con el paralelismo de bits por las diagonales cuya complejidad es O( km /
ω n) y el BPR (Bit-Paralellism Rows) que esta basado también sobre un autómata finito no determinista pero con
paralelismo de bits por filas con una complejidad de O( m/ ω kn).
Uno de los mejoramientos en los algoritmos de paralelismo de bits [17] es O(mn log(γ) / ω) en el peor caso y O(n)
caso promedio.
IV. APLICACIONES PRÁCTICAS
Muchos de los estudios relacionados con la solución del problema del longest common subsequence han mostrado la
implementación y posterior experimentación del algoritmo propuesto como en [11], desde las primeras
investigaciones como [23], hasta modificaciones en el uso de un sistema para permitir patrones de subsecuencias
además como patrones de substrings en nodos y acelerar el tiempo de computación [3], pero su verdadero uso en
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
aplicaciones prácticas es diverso, entre las más importantes a mencionar son: la búsqueda de patrones en secuencias
biológicas, búsqueda y recuperación de texto, comparación de archivos y detección de virus e intrusos.
Análisis de secuencias biológicas : El análisis de secuencias biológicas es de suma importancia pues se puede
determinar la evolución de las especies, la cual es dada por la variación genética de los organismos, es decir de sus
genes, y por consiguiente las proteínas que los forman. Esas evoluciones de las proteínas están clasificadas en tres
formas que son la mutación, duplicación y barajado de dominios. Entonces, la comparación de secuencias
(nucleótidos y/o aminoácidos) es una forma de descubrir que partes de las secuencias son más importantes (están
más conservadas), predecir la estructura de las proteínas o la función de las proteínas. Algunos de los trabajos
relacionados se encuentran en [37] y [45].
Búsqueda y recuperación de texto : La necesidad de descubrir y reconocer variantes formas de strings como por
ejemplo variantes de la ortografía, errores ortográficos y diferentes transliteraciones incrementan la dificultan en
recuperación de información y la búsqueda aproximada de texto en la que se encuentra el longest common
subsequence ayudan a solucionar este problema. La recuperación de texto consiste en buscar la información de
mayor importancia en una recopilación de texto, teniendo en cuenta que la tarea básica es la igualdad de strings, y la
búsqueda de patrones de texto permite acceder a zonas de interés donde se encuentra la mayor cantidad de
información. Un ejemplo importante en este tipo de aplicación, son los buscadores WEB.
Uno de los estudios interesantes en este tipo de aplicación esta en [7], donde se analiza la búsqueda sobre texto
comprimido. Otro estudio importante en el área esta en [5], que consiste en la compresión de texto usando strings
comunes largos en un archivo de texto, implementado el algoritmo de string matching de Karp y Rabin(1987).
Comparación de archivos : Poder determinar las diferencias entre dos archivos de texto y determinar las
modificaciones realizadas. El resultado de estas comparaciones son típicamente mostradas al usuario, pero también
pueden ser usadas para lograr tareas en redes, sistemas de archivos y control de revisión. El programa diff2 tiene un
algoritmo capaz de solucionar el problema del longest common subsequence, el
cual busca las líneas que no cambian entre los archivos. La eficiencia práctica del algoritmo es porque este se fija en
las igualaciones esenciales de los archivos, lo que hace que se reduzca a la subsecuencia común mas larga para
algún par de
segmentos iniciales de los dos archivos [28].
Detección de intrusos y virus : La aplicación del longest common subsequence en la detección de intrusos forma
parte de la categoría de detección de intrusos llamado de uso impropio usando pattern matching. Este tipo de
categoría refiere a intrusiones que siguen un patrón bien definido de ataques que explotan la debilidad en un sistema
2 desarrollado en 1970 sobre el sistema operativo Unix en los laboratorios AT&T Bell. El primer prototipo apareció en 1976 por James Hunt
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
y software de aplicación. Esta técnica representa el conocimiento acerca del comportamiento malo o inaceptable y
busca detectarlos directamente, en contraste a la categoría de detección de intrusos de anomalía. En la categoría de
detección de intrusos de uso impropio las firmas de intrusión son usualmente especificadas como una secuencia de
eventos y condiciones que conducen a forzar una entrada. Algunos patrones en escenarios de ataques tienden a
extraer virus de archivos infectados. Se considera de entrada un flujo de eventos para ser igualado contra el patrón
(firma de intrusión). Una de las desventajas de este acercamiento es que este mira únicamente las vulnerabilidades
conocidas y por consiguiente no funciona en posteriores intrusiones desconocidas. El marco completo de la
aplicación del longest common subsequence en la detección de intrusos y virus se puede observar en [33].
V. TRABAJOS A FUTURO
Actualmente los estudios relacionados con el LCS se dirigen a reducir la complejidad de tiempo de ejecución y de
espacio por medio de algoritmos y diversas técnicas con el fin de llegar a resultados más eficientes y mejores, donde
el problema tiene aplicaciones prácticas.
Además el empleo de otras técnicas para solucionar el problema del longest common subsequence como algoritmos
de aprendizaje [13] y otras donde se basan en solución de extensiones del problema, como en [16] basado en una
técnica de solución del shortest common supersequence, son investigaciones que están abiertas. Otros de los trabajos
a futuro para el desarrollo de soluciones del problema, comprenden, el análisis sobre el poder de algoritmos no
basados en la comparación, como los algoritmos basados en bits. Reducción de trabajo para búsqueda de texto como
por ejemplo búsqueda múltiple de strings con más comprobaciones
y algoritmos óptimos no dependientes del texto de entrada.
En general la dirección de las investigaciones a futuro están en la combinación de una heurística y un algoritmo
longest common subsequence exacto.
Lo que se busca es que las dos fases podrían ser ortogonales en el sentido que el trabajo hecho durante el
preprocesamiento pueda ser completamente utilizado en el algoritmo exacto.
VI. CONCLUSIONES
Según la tabla presentada en este estado del arte y que resume la agrupación de algunos de los algoritmos que dan
solución al problema del longest common subsequence y sus extensiones, se puede concluir que hay varias
investigaciones por realizar en el área, como por ejemplo utilizar técnicas para desarrollar algoritmos en las que
posiblemente no se han estudiado.
La intención no era reproducir textualmente los análisis de la solución y los algoritmos, la idea era agrupar la
mayoría de estos y principalmente lograr una clasificación según las técnicas comunes con algunas de las
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
extensiones encontradas. Así la finalidad era mostrar una visión general del problema y profundizar en el
entendimiento del mismo. Pero determinar cual es el mejor de los algoritmos que dan solución al problema del
longest common subsequence no es correcto, pues las mismas investigaciones crean ambientes de experimentación
propios, lo que lleva a la conclusión que dependiendo de la aplicación práctica se debe recurrir a la solución más
apropiada.
REFERENCIAS
[1] Alves C. E. R.; Caceres E. N.;Song S. W. (2003),A BSP/CGM algorithm for the all-substrings longest common
subsequence problem, in Parallel & 2003. Proceedings. International Distributed Processing Symposium, ed.,'IPDPS
'03: Proceedings of the 17th International Symposium on Parallel and Distributed Processing', IEEE Computer
Society, Washington, DC, USA, pp. 57-64.
[2] Apostolico Alberto (1997),String editing and longest common subsequences, in 'Handbook of formal languages,
linear modeling: background and application', Springer-Verlag New York, Inc., New York, NY, USA, pp. 361--398.
[3] Arikawa Setsuo; Hirao Masahiro; Hoshino Hiromasa; Shinohara Ayumi; Takeda Masayuki (2003), 'A práctical
algorithm to find the best subsequences patterns', Theoretical Computer Science 292(2), 465-479.
[4] Arslan Abdullah N.; Egecioglu Omer (2005), 'Algorithms for the Constrained Longest Common Subsequence
Problems', International Journal of Foundations of Computer Science 16, 1099-1109.
[5] Avendaño Perez Carlos; Feregrino Uribe Claudia; Navarro Badino Gonzalo (2004),'Búsqueda Aproximada
Directamente En Texto Comprimido', Technical report, Instituto Nacional de Astrofísica, Óptica y Electrónica
(INAOE), México.
[6] Baker B. S.; Giancarlo R. (1998),Longest Common Subsequence from Fragments via Sparse Dynamic
Programming, in G. Bilardi; G. F. Italiano; A. Pietracaprina; G. Pucci, ed.,'Proceedings of the6th Annual European
Symposium on Algorithms', Springer-Verlag, Berlin, Venice, Italy, pp. 79--90.
[7] Bentley J. ; Mcilroy D. (1999),Data Compression using Long Common Strings, in 'Data Compression
Conference', pp. 287--295.
[8] Bergroth Lasse; Hakonen Harri; Raita Timo (2000),A Survey of Longest Common Subsequence Algorithms, in
'SPIRE 2000: Seventh International Symposium on String Processing Information Retrieval (SPIRE'00)', IEEE
Computer Society, Washington, DC, USA, pp. 39-48.
[9] Bergroth Lasse; Hakonen Harri; Raita Timo (1998),New Approximation Algorithms for Longest Common
Subsequences, in 'String Processing and Information Retrieval'.
[10] Bonizzoni Paola; Della Vedova Gianluca; Dondi Riccardo; Fertin Guillaume; Vialette Stephane
(2006),Exemplar Longest Common Subsequence, in 'Proc. of 2nd International Workshop on Bioinformatics
Research and Applications (IWBRA 2006)', pp. 791-798.
[11] Bonizzoni Paola; Della Vedova Gianluca; Mauri Giancarlo (2001), 'Experimenting an Approximation
Algorithm for the LCS', Discrete Mathemathics 110(1), 13-24.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
[12] Booth Hilary S.; MacNamara Shevarl F.; Nielsen Ole M.; Wilson Susan R (2003), 'An Iterative Approach to the
Longest Common Subsequence', Methodology and Computing in Applied Probability 6(4), 401-421.
[13] Breimer E.; Goldberg M.; Lim D. (2000),A learning algorithm for the longest common subsequence problem, in
'2nd Algorithm Engineering and Experiments', pp. 147--156.
[14] Brodal Gerth Stølting; Kaligosi Kanela; Katriel Irit; Kutz Martin, Faster Algorithms for Computing Longest
Common Increasing Subsequences, in 'Proceedings Combinatorial Pattern Matching, 17th Annual Symposium',
CPM 2006, Springer-Verlag, Barcelona, España. pp. 330-341.
[15] Chao Kun-Mao; Huang Chien-Pin; Yang I-Hsuan, A fast algorithm for computing a longest common increasing
subsequence. Information Processing Letters 93. 2005. pp. 249-253.
[16] Charras C.; Lecroq T.; Pehoushek J.D. (1998),A Very Fast String Matching Algorithm For Small Alphabets
And Long Patterns, in M. Farach-Colton, ed.,'Proceedings of the 9th Annual Symposium on Combinatorial Pattern
Matching', Springer-Verlag, Berlin, Piscataway, NJ, pp. 55--64.
[17] Crochemore Maxime; Iliopoulos Costas S.; Navarro Gonzalo; Pinzon Yoan J.; Salinger Alejandro (2001), Bit-
parallel (δ, γ)-Matching and Suffix Automata, inProc. 10th Intl. Symp. On String Processing and Information
Retrieval (SPIRE’03), LNCS 2857, 2003.
[18] Crochemore Maxime; Thierry Lecroq (2003), The Computer Science and Engineering Handbook, CRC Press,
Inc., Boca Raton, FL, USA, chapter 8 Pattern Matching and Text Compression Algorithms, pp. 1-49.
[19] Dancik Vladimir (1995),Common Subsequences and Supersequences and Their expected Length, in
'Combinatorial Pattern Matching', pp. 55-63.
[20] Dancik Vladimir (1994),'Expected Length of Longest Common Subsequences', PhD thesis, University of
Warwick, UK.
[21] Dancik Vladimir; Paterson Michael S. (1994),Longest Common Subsequences, in 'Proceedings of the 19th
International Symposium on Mathematical Foundations of Computer Science', Springer-Verlag Berlin, London, UK,
pp. 127-142.
[22] Deorowicz Sebastian (2005),'Fast algorithm for constrained longest common subsequence problem', Technical
report, Silesian University of Technology, Poland.
[23] Dowling Geoff,; May Patrick (1980).’Approximate String Matching’,Communications of the ACM vol 12 n. 4.
381-402.
[24] Francois Nicolas (2005),'Alignement, sequence consensus, recherche de similarites : complexite et
approximabilite', PhD thesis, Universite Montpellier II, France.
[25] Greenberg Ronald I. (2003), 'Bounds on the Number of Longest Common Subsequences', The Computing
Research Repository cs.DM/0301030, 1-13.
[26] Greenberg Ronald I. (2003), 'Computing the Number of Longest Common Subsequences', The Computing
Research Repository cs.DS/0301034, 1-3.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
[27] Greenberg Ronald I. (2002),'Fast and Simple Computation of All Longest Common Subsequences', Technical
report, Loyola University, USA.
[28] Heckel P. (1978), 'A technique for isolating differences between files'. Communications of the ACM 21(4), 264-
268.
[29] Hirschberg D. S. (1975), 'A Linear Space Algorithm for Computing Maximal Common Subsequences',
Communications of the ACM 18, 341-343.
[30] Iliopoulos Costas S.; Rahman M. Sohel (2006), New efficient algorithms for LCS and constrained LCS
problem, In Proceedings of the 3rd Workshop on Algorithms and Complexity in Durham (ACiD), Durham, UK,
September 2007.
[31] Iliopoulos Costas S.; Rahman M. Sohel (2006),Algorithms for Computing Variants of the Longest Common
Subsequence Problem (Extended Abstract), in 'International Symposium on Algorithms and Computation ISAAC',
pp. 399-408.
[32] Kunkle Daniel (2002),'Empirical Complexities of Longest Common Subsequence Algorithms', Technical report,
Rochester Institute of Technology, NY, USA.
[33] Kumar S.; Spafford E. (1994), 'A pattern-matching model for intrusion detection. In Proc. National Computer
Security Conference, pp. 11-21.
[34] Lin Hua ; Lu Mi (1991),An Optimal Algorithm for the Longest Common Subsequence Problem, in 'Proceedings
of the Third IEEE Symposium on Parallel and Distributed Processing', pp. 630-639.
[35] Lu Mi; Rahman C.S. (1993),A Partition Approach to Find the Length of the Longest Common Subsequence, in
'6th International Conference on VLSI Design', IEEE, , pp. 31 - 36.
[36] Navarro Gonzalo (2001), 'A Guided Tour To Approximate String Matching', ACM Computing Surveys 33(1),
31--88.
[37] Ning Kang; Ng Hoong Kee; Wai Leong Hon (2006),Finding Patterns in Biological Sequences by Longest
Common Subsequences and Shortest Common Subsequences, in 'Sixth IEEE Symposium on BioInformatics and
BioEngineering (BIBE)'.
[38] Rick Claus (1994),'New Algorithms for the Longest Common Subsequence Problem'(85123-CS), Technical
report, University of Bonn, Germany.
[39] Sankoff David (1972), 'Matching Sequences under Deletion/Insertion Constraints', National Academy of
Sciences of the USA 69, 4-6.
[40] Singh Virdi Sabegh; Wang Hong; Walker Robert A. (2006),Solving The Longest Common Subsequence (LCS)
Problem Using The Associative Asc Processor With Reconfigurable 2d Mesh, in 'International Conference on
Parallel and Distributed Computing and Systems (PDCS 2006)'.
[41] Steele J. M. (1982), 'Long common subsequences and the proximity of two random strings', SIAM Journal on
Applied Mathematics 14(4), 731--737.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
[42] Tiskin Alexander (2006),All semi-local longest common subsequences in subquadratic time, in 'Computer
Science Symposium in Russia'.
[43] Tronicek Zdenek (2001),'Searching subsequences', PhD thesis, Czech Technical University, Prague, Czech
Republic.
[44] Tronicek Zdenek (1999),Problems Related to Subsequences and Supersequences, in 'String Processing and
Information Retrieval Symposium SPIRE / International Workshop on Groupware CRIWG', pp. 199-205.
[45] Wei Liu; Ling Chen (2006),A Parallel Algorithm for Solving LCS of Multiple Biosequences, in 'Fifth
International Conference on Machine Learning and Cybernetics', 2006.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
ESTADO DEL ARTE DE LAS
REDES DE SENSORES
INALAMBRICOS
EDISON JOSUE DIAZ CASADIEGO JESÚS GUALDRON FLOREZ1
1Los autores son estudiantes de la especialización en Seguridad Informática, Facultad de Ingeniería Informática de la Universidad Pontificia Bolivariana Seccional Bucaramanga.
E. Díaz, Ing. de Sistemas, e-mail: [email protected] J. Gualdrón, Ing. Electrónico, e-mail: [email protected]
Resumen: Este artículo presenta el estado del arte de las redes de sensores inalámbricos, una nueva tecnología desarrollada a partir de sensores capaces de detectar y transformar fenómenos físicos como temperatura y movimiento en datos funcionales. Estos sensores se enlazan entre sí de forma inalámbrica, formando redes inteligentes con utilidades que van desde la investigación científica hasta el uso militar. Se presentan en este documento los antecedentes, una descripción del funcionamiento, arquitectura, métodos de comunicación y protocolos usados; se listan algunas aplicaciones prácticas, ideales y actualmente comerciales de las mismas y se muestra un ejemplo de estas redes. Palabras Claves: Redes, Sensores, Inalámbricos, MOTEs Abstract: The current article describes the state of the art of Wireless Sensors Networks, which is a new technology developed out of sensors capable of detecting and transforming physical phenomena such as temperature and movement, into functional data. These sensors are linked together via wireless, creating as a result smart networks that have features ranging from scientific research to military usage. This document shows the antecedents, a description of its functioning, architecture, communication methods and protocols in use. Additionally, some practical, idealistic and current commercial applications are listed, along with an example of these networks. Key Words: Network, Sensors, Wireless, MOTEs.
1. INTRODUCCIÓN
El crecimiento abrumador de las nuevas tecnologías, especialmente aquellas relacionadas con el mercado de las
comunicaciones personales, han obligado una rápida caída de los precios de dispositivos inalámbricos y mejoras
sustanciales en la calidad de los mismos. Al mismo tiempo, los costos vinculados a la instalación, mantenimiento,
adecuaciones y actualización de cableados han aumentado, generando un ambiente propicio para el surgimiento de
desarrollos de vanguardia como las redes de sensores inalámbricos (o Wireless Sensor Networks).
Una red de sensores inalámbricos (o WSN) consiste en una serie de nodos encargados de realizar labores de
detección, computación y comunicación. Dichos elementos conectados entre sí de forma inalámbrica, han venido
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
siendo desarrollados para campos específicos como la vigilancia de espacios abiertos y cerrados, monitoreo de
museos, seguridad perimetral, seguimiento de objetos y detección de intrusos, entre otros.
Durante los últimos 50 años se han venido diseñando nuevas aplicaciones e innovaciones en el uso de la telemetría a
través de señales de radio; de esta forma fueron creados sistemas inalámbricos punto a punto como algunos “modems
capaces de transmitir paquetes de datos a través de una habitación usando interfaces RS-232 en ambos lados” [1].
El desarrollo de los sistemas microelectromecánicos (MEMS) permitió el nacimiento de nuevos sensores que
proveían soluciones para aplicaciones específicas [2], tal como el diseño de air bag para autos gracias a
acelerómetros fabricados a partir de MEMS, o nuevas impresoras de chorro de tinta que usan cabezotes de impresión
fabricados con técnicas MEMS. Otras aplicaciones iniciales iban desde sensores basados en MEMS que teóricamente
podían detectar 400 especies de gases y enviar inalambricamente su concentración en partes por millón (ppb), hasta
la transmisión de temperatura superficial de las cubiertas de barcos militares.
El primer sensor inalámbrico totalmente integrado y disponible comercialmente, fue anunciado por la empresa
Computational Systems Inc99 (http://www.compsys.com), a finales de 1998. CSI desarrolla sensores para controlar
el estado de maquinaria usada para labores críticas, que deben estar bajo el constante monitoreo de parámetros como
temperatura y vibración.
Gracias al hecho de ser sensores remotos, estos dispositivos son llamados MOTES y pueden eventualmente tener el
tamaño de un grano de arena y contener increíblemente sensores, circuitos computacionales, tecnología de
comunicaciones inalámbricas bidireccionales y suministro de energía; todo gracias al adelanto en el uso del silicio y
en las técnicas de fabricación de microcomponentes. [4]
Elementos como la cantidad de nodos y la actividad de los sensores, afectan directamente la calidad y cubrimiento
que se puede esperar de las WSN, influyendo así en el mejor desempeño y funcionalidad de los mismos. Existen
además otras variables que condicionan el rendimiento de los sensores como el tamaño, el diseño y el gasto de
energía. Específicamente este último ítem congrega gran cantidad de investigaciones en redes de sensores, las cuales
tienen como fin el balancear la calidad de la protección y el consumo de energía, de dichos dispositivos uni-
funcionales.
2. CARACTERÍSTICAS ESPECÍFICAS DE LAS WSN
Aunque las redes de sensores comparten muchas características de los conceptos de redes Ad hoc, hay múltiples
diferencias y retos especiales que las distinguen entre ellas, entre esas:
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
Aplicación específica: Gracias a la gran cantidad de tecnologías de detección, computación y comunicación que
pueden ser combinadas para desarrollar aplicaciones, existe una gran gama de posibilidades para el uso de WSN.
Esto hace que sea improbable que exista una solución única para todos los problemas, lo cual genera así redes para
aplicaciones determinadas.
Interacción con el ambiente: Las características mismas de los sensores obligan que las redes interactúen con su
ambiente, lo que hace que su tráfico típico sea muy diferente a otras formas de redes manejadas por humanos. El
ejemplo habitual de esta cualidad se visualiza al revisar las tasas de transferencia de datos, a través de largos periodos
de tiempo en el que se mantienen ratas muy bajas permanentemente, pero que se disparan cuando algo pasa en el
ambiente (eventos como cambios climáticos drásticos ilustran esto).
Escala: Potencialmente, las WSN contendrán una mayor cantidad de nodos (miles) que las redes ad hoc actuales, esto
implica soluciones diferentes que tengan la posibilidad de ser escalables.
Energía: Comparada con muchas formas de redes ad hoc, la alimentación de energía debe ser baja y por lo tanto su
consumo es un elemento determinante. La mayoría de los sensores contienen fuentes de energía no recargables y la
necesidad de prolongar su tiempo de vida tiene un impacto profundo en la arquitectura de red y del sistema en sí.
Calidad de Servicio: Las WSN tendrán diferentes conceptos de Calidad de Servicio, por lo tanto no está claramente
definido el servicio de una red. En algunos casos el envío ocasional de algún paquete será un servicio más que
eficiente, en otros, existirán requisitos mucho más altos de confiabilidad. Teniendo en cuenta que no es una métrica
suficiente la tasa de entrega, sino la cantidad y calidad de información que puede ser extraída de los objetos
observados, indicadores como la cantidad de energía necesaria para obtener la información en cuestión aparecen
como elementos importantes en la definición del QoS.
Centralización de datos: La importancia de un nodo en particular de una red es reducida frente a las redes
tradicionales (arquitectura cliente-servidor), lo que hace que el centro de la red no sea un nodo en sí, sino la
información que pueda(n) tomar algún(os) nodo(s) en particular. El paradigma entonces cambia, de una arquitectura
centralizada en un nodo principal, hacia una arquitectura basada en datos centrales.
Simplicidad: Teniendo en cuenta que los nodos son pequeños y deben tener un consumo bajo de energía, el software
operativo y aplicativo de los sensores debe ser muy simple comparado frente a los computadores actuales. Esta
simplicidad requiere romper con las reglas convencionales de enlace entre software de redes.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
3. NANOTECNOLOGÍA Y DISPOSITIVOS MEMS
El inicio de la nanotecnología se dio hace mas de 40 años cuando fueron realizados los primeros estudios por Von
Neuman, pero solo hasta el año 1959 cuando el premio nobel de física Richard Feynman en su discurso titulado “Al
fondo hay espacio de sobra”, se hizo referencia a las grandes oportunidades que aportaban el estudio de la
nanociencia y la nanotecnologia.
El concepto de nanociencia se asocia al estudio de las propiedades de los objetos y fenómenos a escala nanométrica
permitiendo la manipulación de las estructuras moleculares y de sus átomos. La nanotecnología se ocupa de la
manipulación “controlada” y producción de objetos, materiales, instrumentos, estructuras y sistemas a dicha escala, a
partir del reordenamiento de sus átomos y moléculas. [4]
La aplicación de la nanotecnología al desarrollo de nuevos dispositivos electrónicos, permitió desarrollar la
micromecanización, que esta definida por Francisco Ferrero como “la tecnología que permite integrar sobre un
mismo sustrato de silicio tanto la parte electrónica como los sensores, actuadores y también diversos elementos
mecánicos” [5]. Los sistemas integrados desarrollados con la anterior tecnología son denominados MEMS (Micro-
Electro-Mechanical Systems).
Las ventajas más representativas de los sistemas MEMS son: Sistemas electromecánicos en un solo chip, producción
en masa, múltiples campos de aplicación, tamaño reducido y bajos costos.
Algunos de los campos en los que son usados dispositivos MEMS son la biotecnología (biochips para la detección de
sustancias peligrosas, etc.), comunicaciones (RF-MEMS, etc.) y automotriz (airbag, sensor de lluvia, etc.), lo que
demuestra la importancia a futuro de estos mecanismos, mucho más teniendo en cuenta el bajo precio que pueden
llegar a tener gracias a la producción en masa.
4. ARQUITECTURA DE NODOS Y DE REDES INALÁMBRICAS
Arquitectura de nodos
Una red de sensores inalámbrica, esta compuesta de numerosos nodos independientes. Los nodos sensores son
unidades capaces de medir, procesar, controlar, almacenar en memoria y comunicarse de forma inalámbrica.
La arquitectura de un nodo es completamente dependiente del propósito de la aplicación. Pero se puede generalizar la
arquitectura como se muestra en la Figura 1. Cada nodo consta de un transductor, acondicionador de señal,
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
adquisición de datos, comunicación, memoria y batería. Estos nodos tienen restricciones principalmente de energía,
memoria y capacidad de cómputo.
Figura 1. Arquitectura de un Nodo
• Transductor: Según DLI Engineering Corporation, un transductor es un dispositivo que “convierte un tipo de
energía como vibración o sonido en un tipo diferente de energía generalmente una corriente eléctrica o un
voltaje“ [6], en caso que las señales de salida estén dadas en magnitudes eléctricas, estos elementos son
llamados sensores. En las redes inalámbricas encontramos diferentes tipos de sensores que son utilizados de
acuerdo a la necesidad de su aplicación y que se clasifican según el tipo de magnitud física a detectar.
• Acondicionador de Señal: Los circuitos de acondicionamiento de la señal de entrada se encargan de la
amplificación, filtrado, linealización, diferenciación, integración, comparación con límites de la señal y otras,
obteniendo a su salida una señal analógica lista para su posterior etapa (Digitalización).
• Adquisición de Datos: Etapa encargada de digitalizar la señal, y de gestionar la comunicación del elemento
sensor con el procesador de datos.
• Unidad de Procesamiento: Es el componente que interpreta y procesa los datos para transmitirlos a otra
estación, también gestiona el almacenamiento de datos en la memoria.
Arquitectura de una red inalámbrica de sensores (WSN)
Figura 2. Tomada de Wireless Sensor Network. M. Soledad Escolar Diaz [7]
Los elementos que componen una WSN son:
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
• Nodos Sensor: son procesadores de radio que toman los datos del sensor a través de sus puertas de datos y
envían la información a la estación base.
• Puerto de Enlace: Son los puntos de interconexión entre la red de sensores y una red TCP/IP a la cual surtirá
de información.
• Estación Base: Es un repositorio de datos, el cual puede ser un computador o un sistema completo.
• Red Inalámbrica: Como tal, usualmente se basa en el estándar 802.15.4 (ZigBee).
Dos tipos de arquitectura son utilizadas en las WSN: la arquitectura centralizada y la distribuida.
Arquitectura centralizada:
Figura 3. Topología de Arquitectura Centralizada
En la figura 3 se muestra la topología de una arquitectura centralizada, en donde todos los nodos transmiten al puerto
de enlace y pueden presentar un problema fundamental; el cuello de botella, además si todas las unidades transmiten
al tiempo hay una alta probabilidad de fallo haciendo la red ineficiente, desperdiciando energía (un recurso que es
limitado en este tipo de redes) y haciendo disminuir el tiempo de vida útil de la red.
Arquitectura Distribuida:
Esta arquitectura (de tipo intrínseca) tiende a una computación distribuida, que es aquella en la que los nodos
sensores se comunican sólo con otros sensores dentro de un vecindario; además en el cluster, los nodos cooperan y
ejecutan algoritmos distribuidos para obtener una única respuesta global que el cluster principal se encargará de
comunicar a la estación base.
Figura 4. Topología de Arquitectura Distribuida
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
5. PROTOCOLOS DE COMUNICACIONES EN LAS WSN
Muchos de los aspectos presentes en las pilas de protocolos de las redes de computadores más usadas (como el
TCP/IP) se presentan con cambios mínimos o cambios sustanciales en las capas de comunicaciones de las WSN.
Algunos de los aspectos más sobresalientes y los trabajos desarrollados sobre las mismas son:
Capa Física: El principal dilema de la capa física frente a las trasmisiones típicas de radio, es como transmitir con la
mayor eficiencia de energía posible. Alrededor de este tema se ha trabajado relativamente poco en el desarrollo de
protocolos ajustados a las necesidades de las WSN. Algunos investigadores como Wang, Cho, Sodini y
Chandrakasan [8] han realizado trabajos sobre manejo eficiente de energía, otros como Gao y Hunerberg [9] han
profundizado en consideración de aspectos de hardware para CDMA en nodos sensores, entre otros.
MAC: La capa de Acceso al Medio es y ha sido una las áreas de mayor investigación para WNS, la principal
preocupación en su mayoría ha sido como lograr que los sensores puedan permanecer inactivos el mayor tiempo
posible, sin poder comunicarse, pero alargando el tiempo de vida de sus baterías, lo que ha llevado a que se trate con
mucha frecuencia algunos aspectos de TDMA. En esta aspecto se han elaborado artículos con investigaciones como
PicoRadio MAC [10], S-MAC [11], SMACS [12] y STEM [13].
Link Layer: El trabajo sobre la capa de Enlace ha sido mucho menor que el de la MAC, y es de resaltar el trabajo de
Yogesh Sankarasubramaniam y otros investigadores del Georgia Institute of Technology sobre eficiencia en el gasto
de energía, basada en la optimización del tamaño de paquetes en WSN [14], adicionalmente sobresale el trabajo
sobre FEC y la variación de nivel de transmisión en la energía gastada por bit, desarrollado por investigadores de
MIT como Eugene Shih [15].
Conceptos de Direccionamiento: Se han propuesto métodos diferentes a los conocidos en redes normales para el
direccionamiento de WSN, entre algunos de ellos encontramos el uso de direcciones MAC codificadas asignadas de
forma distribuidas en redes de sensores [16], el uso de direccionamiento basado en la posición geográfica del sensor
o direccionamiento basado en el tipo de información a procesar y comunicar.
Sincronización de tiempos: Este tema es muy importante en redes distribuidas como las WSN, ya que se requiere que
todos los miembros estén sincronizados para asegurar la correcta observación y monitoreo de eventos, muy a la
filosofía del protocolo NTP. Trabajos como “sincronización ligera de tiempo para redes de sensores” [17]
profundizan sobre el tema.
Localización: la ubicación de nodos sensores por la misma red, como los sistemas coordinados de redes de sensores,
es una de las áreas más populares en investigación. Algunos mecanismos van desde el control de indicadores de
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
fuerza de la señal, tiempo de llegada, diferencias en los mismos hasta el ángulo de llegada. Se destacan trabajos como
los del uso de métodos probabilísticos para la localización en WSN [18] y consideraciones de energía para
localización [19].
Capa de Red: Además de MAC y control de topología, esta capa es seguramente la que ha tenido mayor interés en
investigaciones, algunas de las cuales se enfocan principalmente en la búsqueda de soluciones de escalabilidad,
eficiencia en el gasto de energía y centralización de datos.
Capa de Transporte: La definición de servicios adecuados para las WSN, niveles de dependencia y QoS han obtenido
poca consideración hasta el momento. Sobresalen los trabajos de Stann y Heideman sobre RMST [20].
6. IEEE 1451 Y SENSORES SMART
En 1993 la IEEE y el Instituto Nacional de Estandares y Tecnología NIST, comenzaron a trabajar en la creación de
un estandar para Redes de Sensores SMART, con el objetivo de facilitar a los diferentes fabricantes, la producción de
este tipo de dispositivos y la forma como se conectaban estos a las redes. Según la definición de Randy Frank [21] un
sensor SMART es “un sensor que provee funciones extras más allá de aquellas necesarias para generar una correcta
representación de la cantidad detectada”. El estándar IEEE 1451 fue presentado en la Sensors Expo en Philadelphia,
en Octubre de 2001, y definió que las funciones deseable para los sensores incluyen: “fácil instalación, auto
identificación, auto diagnostico, establecimiento de tiempos de alerta para la comunicación con otros nodos, algunas
funciones de software y DSP (Digital Signal Processing), y protocolos de control estándar e interfaces” [22].
Las redes de sensores inalámbricos cumplen con todos los requerimientos anteriores, por lo que son también
consideradas como redes de sensores SMART, y se rigen –en parte- por el estándar IEEE 1451.
7. SISTEMAS OPERATIVOS
Adicional a los problemas generados en cuanto a la estandarización de protocolos de comunicación para WSN, el
desarrollo de un sistema operativo que permita el fácil establecimiento de canales de comunicación entre nodos, se
presenta como otro factor de complejidad en estas nuevas infraestructuras. Actualmente plataformas como TinyOS,
MANTIS, SOS y Contiki, han liderado este aparte, siendo el primero, Tiny MicroThreading Operating System,
(desarrollado por la universidad de Berkeley), el más eficiente hasta el momento.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
8. PROBLEMAS Y DESVENTAJAS
A partir del estado del arte encontrado, se pueden dislumbrar problemas y desventajas de las Redes de Sensores
Inalámbricos.
Con relación a las redes cableadas, las redes móviles Ad hoc presentan cambios de topología frecuentes e
impredecibles debido a la movilidad de sus estaciones. Estas características generan problemas tales como topología
dinámica, necesidad de recursos de ancho de banda, cobertura de red limitada, batería limitada, recursos
computacionales limitados y seguridad reducida.
Al tratarse de información transmitida con un enlace radio, su accesibilidad hace necesaria la implementación de un
mecanismo de seguridad que proteja al sistema de posibles ataques. Para conseguir este objetivo, se han desarrollado
diferentes estándares, generalmente para ser implementados en sistemas de relativamente alta complejidad, como los
protocolos IEEE 802.11 y Bluetooth. Aunque haciendo uso de estos estándares se pueden diseñar redes de sensores
relativamente seguras, hay aplicaciones cuya simplicidad y bajo costo no permiten la implementación de estos
estándares.
Los algoritmos criptográficos y los protocolos de seguridad más conocidos no son fáciles de implementar en sistemas
cuya potencia computacional es muy limitada, por otro lado con el objetivo de mantener costos no altos, se utilizan
módulos de radiofrecuencia de bajo precio y además unidireccionales.
En WSN el procesamiento en la red dificulta el despliegue de los mecanismos de seguridad punto a punto, debido a
que los nodos intermedios necesitan acceso directo al contenido del mensaje.
9. APLICACIONES Y SISTEMAS COMERCIALES DISPONIBLES
Las redes de sensores tienen una amplia variedad de aplicaciones: monitorización de un hábitat (determinar la
población y comportamiento de animales y plantas), monitorización del medio ambiente, observación del suelo o
agua, el mantenimiento de ciertas condiciones físicas (temperatura, luz), control de parámetros en la agricultura,
detección de incendios, terremotos o inundaciones, sensorización de edificios “inteligentes”, control de tráfico,
asistencia militar o civil, control de inventario, control médico, detección acústica, cadenas de montaje, etc.
Según Soledad Escolar, existen aplicaciones completas y complejas que usan WSN y que son usadas comercialmente
como los Crossbow Berkey Motes y los Microstrain’s X-Link Measurement System. [7]
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
La primera es uno de los dispositivos de redes de sensores inalámbricos más versátiles en el mercado para propósitos
de prototipado. Las tres familias de MOTEs –llamadas MICA, MICA2 y MICA2-DOT- desarrollaron nodos con 5
sensores instalados, los cuales miden temperatura, luz, acústica, aceleración-sísmica y magnetismo, y fueron
diseñados para redes de vigilancia para personal y vehículos. Tienen como características físicas bajo consumo de
energía y pequeño tamaño, lo que permite que sean colocados prácticamente en cualquier lugar, además cada nodo
sensor en la red puede funcionar como una estación base lo que permite que la red se pueda autoconfigurar y posea
capacidades de enrutamiento multi-hop. Opera en una frecuencia en banda ISM (Industrial, Scientific, and Medical
Band) de 916 o 433 Mhz, con velocidades de transmisión de 40 Kbps y alcance de 30 a 100 pies. Cada nodo tiene un
procesador microcontrolador de bajo poder con velocidad de 4 Mhz, memoria flash de 128 Kb, SRAM y EEPROM
de 4 Kb y Sistema Operativo Tiny-OS (Sistema Operativo Distribuido desarrollado por UC Berkeley en NES-C).
Otras empresas que se dedican a brindar soluciones para la industria son:
• XSILOGY Solutions, compañía que provee WSN para aplicaciones comerciales: organización de inventario de
tanques, sistemas de distribución de flujos, edificios comerciales, monitorización medioambiental, defensa del
hogar, etc. (http://www.xsilogy.com/home/main/index.html )
• ENSCO investiga con WSN para aplicaciones meteorológicas (http://www.in-q-tel.com/tech/dd.html)
• EMBER provee soluciones con WSN para automatización industrial, edificios inteligentes.
(http://www.ember.com)
• SOFTLINX desarrolla productos de seguridad perimetral basada en sensores. (http://www.soflinx.com)
• XYZ integra redes de sensores inalámbricas pare el control de entornos en el interior de edificios
(http://www.cbe.berkeley.edu/research/briefs-wirelessxyz.htm)
10. CONCLUSIONES
Las redes de sensores inalámbricos tienen una importancia relevante entre las redes en general. La necesidad de
minimizar tanto el tamaño como el gasto de energía de sus nodos las hacen muy diferentes de las redes ad hoc
normales, más aún las aplicaciones específicas para las que deben ser diseñadas ponen en tela de juicio los
paradigmas, métodos, protocolos y esquemas sobre los que nuestras redes han sido concebidas.
Como todo tema de investigación moderno, quedan sobre la mesa muchas preocupaciones que deberán ser resueltas
para llevar a buena marcha el uso masivo de una tecnología tan potente y con tanta proyección como las WSN.
Aspectos como la seguridad de la información transmitida entre redes inalámbricas como estas, el cifrado de los
datos, la revisión de vulnerabilidades, el monitoreo de las mismas por personas no autorizadas y las formas como
deben protegerse saltan a la vista para aquellos preocupados por la seguridad informática, sin embargo todos estos
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
temas deben tener en cuenta como elemento central el gasto de energía, con el fin de tener no solo redes inteligentes
y seguras, sino además redes funcionales e independientes.
BIBLIOGRAFIA
[1] ALLGOOD, Glenn O., MANGES, Wayne W., SMITH, Stephen F. It's Time for Sensors to Go Wireless; Part 1:
Technological Underpinnings. [Online] Sensors Magazine. Abril 1, 1999. Disponible en www: <
http://www.sensorsmag.com/articles/0499/0499_10/main.shtml >
[2] PICRAUX, S.T. and MCWHORTER Peter. The Broad Sweep of Integrated Microsystems. In: IEEE Spectrum.
Vol. 24, Nro. 33 (Diciembre 1998).
[3] HOFFMAN, Thomas. Smart Dust. [Online] Computer World Magazine. Marzo 24, 2003. Disponible en www:
<http://www.computerworld.com/mobiletopics/mobile/story/0,10801,79572,00.html>
[4] BLANCO, Verónica y ARANDA, Eva. Estudio de las tendencias y estado del arte en el desarrollo de dispositivos
en miniatura y su aplicación en entornos inteligentes. Cataluña, 2006, 129 p. Trabajo de Grado (Ingeniera Técnica de
Telecomunicación). Universidad Politécnica de Cataluña. Escuela Técnica Superior de Castelldefels.
[5] FERRERO, Francisco. Curso de Instrumentación Electrónica - Lección 9. [Online] Universidad de Oviedo, 2006,
13 p. Escuela Politécnica Superior de Ingeniería de Gijón. Disponible en www: <
http://www2.ate.uniovi.es/13996/Lecciones/Leccion09.pdf>
[6] DLI Engineering Corporation. Introduction to Machine Vibration Online Text Book. [Online]. 2004. Disponible
en www: < http://www.dliengineering.com/vibman-spanish/transductor1.htm >
[7] ESCOLAR, Soledad. Wireless Sensor Networks. [Online] Universidad Carlos III de Madrid. 2006. Disponible
en www: < http://www.arcos.inf.uc3m.es/~sescolar/index_files/presentacion/wsn.pdf >
[8] WANG, Andrew, CHO, SeongHwan, SODINI, Charles y CHANDRAKASAN, Anantha. Energy Efficient
Modulation and MAC for Asymmetric RF Microsensor Systems. En: International Symposium on Low Power
Electronics and Design (ISLPED ’01), páginas 96-99. Agosto 2001.
[9] GAO, Reid y HUNERBERG, Peter. CDMA-based wireless data transmitter for embedded sensors. En: Proc. 18th
IEEE Instrumentation and Measurement Technology Conference. Budapest, Hungria, volumen 3, páginas 1778-
1783. 2001.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
[10] ZHONG, Lizhi, SHAH, Rahul, GUO, Chunlong y RABAEY, Jan. An Ultra-Low Power and Distributed Access
Protocol for Broadband Wireless Sensor Networks. En: IEEE Broadband Wireless Summit, Las Vegas, NV, Mayo
2001.
[11] YE, Wei, HEIDEMANN, John y ESTRIN, Deborah. An energy-efficient MAC protocol for wireless sensor
networks. En: Proc. IEEE Infocom, 2002.
[12] SOHRABI, Katayoun, GAO, Jay, AILAWADHI, Vishal y POTTIE, Gregory. Protocols for self-organization of
a wireless sensor network. En: 37th Allerton Conference on Communication, Computing and Control, Allerton,
September 1999.
[13] SCHURGERS, Curt, TSIATSIS, Vlasios, GANERIWAL, Saurabh y SRIVASTAVA, Mani. Optimizing Sensor
Networks in the Energy-Latency-Density Design Space. En: IEEE Transactions on Mobile Computing, Vol. 1, No. 1,
Pág. 70-80. Enero 2002.
[14] SANKARASUBRAMANIAM, Yore, AKYILDIZ, Irw, y MCLAUGHLIN, Serg. Energy Efficiency Based
Packet Size Optimization in Wireless Sensor Networks. En: Proc. 1st IEEE Intl. Workshop on Sensor Network
Protocols and Applications (SNPA), Anchorage, AK, Mayo 2003.
[15] SHIH, Eugene, CALHOUN, Benton, CHO, SeongHwan y CHANDRAKASAN, Anantha. Energy-Efficient
Link Layer for Wireless Microsensor Networks. En: Proc. Workshop on VLSI 2001 (WVLSI ’01), Abril 2001.
[16] SCHURGERS, Curt, KULKARNI, Gautam y SRIVASTAVA, Mani. Distributed Assignment of Encoded MAC
Addresses in Sensor Networks. En: Proc. Symposium on Mobile Ad Hoc Networking & Computing (MobiHoc’01),
Long Beach, CA, Octubre 2001.
[17] VAN GREUNEN, Jana y RABAEY, Jan. Lightweight Time Synchronization for Sensor Networks. En: Proc.
2nd ACM Intl. Workshop on Wireless Sensor Networks and Applications (WSNA), San Diego, CA, Septiembre
2003.
[18] RAMADURAI, Vaidyanathan y SICHITIU, Mihail. Localization in Wireless Sensor Networks: A Probabilistic
Approach. En: Proc. 2003 Intl. Conf. on Wireless Networks (ICWN), pág. 300–305, Las Vegas, NV, Junio 2003.
FACULTAD DE INGENÍERIA INFORMÁTICA Seminario Internacional de Informática y Computación Septiembre 19 – 21 de 2007
[19] ZOU, Yi y CHAKRABARTY, Krishnendu. Target Localization Based on Energy Considerations in Distributed
Sensor Networks. En: Proc. 1st IEEE Intl. Workshop on Sensor Network Protocols and Applications (SNPA),
Anchorage, AK, Mayo 2003.
[20] STANN, Fred y HEIDEMANN, John. RMST: Reliable Data Transport in Sensor Networks. En: Proc. 1st IEEE
Intl.Workshop on Sensor Network Protocols and Applications (SNPA), Anchorage, AK, Mayo 2003.
[21] FRANK, Randy. Understanding Smart Sensors. 2da Ed., Artech House, Norwood, MA, 2000. 389 pág. ISBN
978-0890063118.
[22] IEEE 1451, A Standard Smart Transducer Interface [online], Sensors Expo, Philadelphia, Oct. 2001. Disponible
en www: <http://ieee1451.nist.gov/Workshop_04Oct01/1451_overview.pdf>