Diseño e implementación de un lenguaje de programación lógica borrosa con unificación débil.
- Pascual Julián Iranzo Doktorvater/Doktormutter
Universität der Verteidigung: Universidad de Castilla-La Mancha
Fecha de defensa: 08 von Juli von 2011
- María Alpuente Frasnedo Präsident/in
- Ginés Damián Moreno Valverde Sekretär/in
- Mario G. Piattini Velthuis Vocal
- Manuel Ojeda Aciego Vocal
- Rafael Caballero Roldán Vocal
Art: Dissertation
Zusammenfassung
Con el objetivo de facilitar el desarrollo de tales aplicaciones y dar solución a los problemas que la Programación Lógica tiene a este respecto, ha surgido el interés por diseñar lenguajes declarativos (en particular, lenguajes lógicos) que incluyan características de la lógica borrosa e incorporen entre sus recursos expresivos la posibilidad de tratar la información imprecisa de forma natural. Este intento ha dado lugar a un área de investigación denominada Programación Lógica Borrosa, en la cual se enmarca nuestro trabajo. Dentro de la Programación Lógica Borrosa, fijamos nuestra atención en las propuestas que extienden el algoritmo de unificación, en particular, en propuestas que sustituyen el algoritmo de unificación sintáctico por uno borroso basado en relaciones de similaridad. A esta nuevo tipo de unificación se le denomina Unificación Débil y al procedimiento de resolución que lo soporta Resolución SLD Débil. En este trabajo diseñamos e implementamos un lenguaje de programación lógica basado en Unificación Débil que denominamos Bousi~Prolog. Como parte del diseño proponemos una nueva semántica declarativa para un subconjunto puro del lenguaje, demostrando su corrección. Además, con el objetivo de dar solución a algunas limitaciones de los lenguajes basados en similaridad, introducimos un nuevo modelo de unificación débil basada en relaciones de proximidad, que denominamos Unificación basada en Proximidad, demostrando la corrección y completitud del mismo. Adicionalmente, diseñamos e implementamos un nuevo y eficiente algoritmo de unificación de conjuntos borrosos, que nos permite incluir de forma natural el tipo de dato variable lingüística en nuestro lenguaje. Para que el lenguaje diseñado, pueda ser empleado en contextos reales analizamos la implementación de este lenguaje sobre una arquitectura basada en la Máquina Abstracta de Warren (WAM), en concreto, adaptamos la WAM para que pueda ejecutar programas Bousi~Prolog, como resultado obtenemos una WAM que permite el manejo de relaciones borrosas y que denominamos por motivos históricos WAM basada en Similaridad (SWAM). Para que esta máquina sea utilizable se ha implementado un compilador que transforma programas Bousi~Prolog en código SWAM y un entorno de desarrollo que facilita el desarrollo de estos programas. Por último mostramos la utilidad del lenguaje diseñado mediante el análisis e implementación de algunos pequeños ejemplos extraídos de diferentes campos de aplicación, como son: Bases de Datos Flexibles, Sistemas Basados en el Conocimiento, Recuperación de Información y Razonamiento Aproximado.