You are on page 1of 110

Universidad de San Martn de Porres Facultad de Ingeniera y Arquitectura

ASIGNATURA

INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

Profesor: Ruben Daro Cuadros Ricra

UNIDAD I Conceptos de Inteligencia Artificial y Sistemas Expertos


Semana: 1a

LIMA PER 2002

INTELIGENCIA ARTIFICIAL - CONCEPTOS Consiste en hacer pensar al computador en forma inteligente, tratando de imitar el proceso bsico del aprendizaje y razonamiento humano en la solucin de problemas cuantitativos y cualitativos. La IA es el estudio de como hacer que los ordenadores hagan cosas que, por momento, los seres humanos hacemos mejor. Elaine Rich La IA no es el estudio de los ordenadores, sino de la inteligencia en el pensamiento y en la accin. Los ordenadores son herramientas, porque sus teoras se expresan como programas que capacitan a las mquinas para hacer cosas que requeriran inteligencia si las hiciesen las personas. Margaret Boden La IA es la rama de la informtica que se dedica a programar los ordenadores de la forma que realicen tareas, que si fuesen realizadas por un ser humano, requeriran inteligencia por parte de la persona. Maryin Minsky Un sistema de ayuda a la decisin formalizado en una estructura ms explcita, alterable y flexible que muchos modelos de tipo algortmico. Mario Isunza. Una rama de la Ciencia de la Computacin que estudia los fundamentos tericos y prcticos del diseo de sistemas de computacin inteligentes, esto es sistema que exhiben caractersticas inteligentes del ser humano, tales como: resolucin de problemas, comprensin de lenguajes, aprendizaje, razonamiento etc. Maynard Kong

INTELIGENCIA NATURAL VS. INTELIGENCIA ARTIFICIAL El ser humano se dice que es inteligente por que posee intuicin, inspiracin, capacidad de organizar cadenas lgicas de pensamiento, sentimiento y expresin lingstica, tiene capacidades de aprender, razona y deduce; es decir manipula los conocimientos e informacin que posee, aplicando una serie de reglas y experiencias (formales o intuitivas) para la solucin de problemas. La actividad intelectiva agrupa los siguientes procesos. Percepcin. Asociacin. Memoria Imaginacin o Creatividad. Razonamiento Conciencia. Por lo cual se argumentan criterios contradictorios a la existencia de la IA. Las mquinas carecen de creatividad. Las mquinas no disponen de conciencia. Las mquinas no pueden alcanzar los principios ticos con los que regir su conciencia ... etc. Descartes Asent la tesis de que lo nico que no funciona mecnicamente en el universo es nuestra capacidad de pensar; afirmo el mecanismo de la materia y la creatividad del pensamiento. Frente a estos razonamientos negativos, los especialistas que creen en la legitimidad de la IA, afirman que en la actualidad se ha demostrado que ello no es verdadero debido al uso de la computadora, la cual es capaz de operar simulando la inteligencia del ser humano, realizando con gran rapidez y precisin alguna de sus actividades, con lo cual se percibe el desarrollo de la inteligencia artificial. Si se produce el aprendizaje de las maquinas y se sientan las bases de la creatividad. El estado de conciencia y la tica no son absolutamente imprescindibles para la afirmacin de inteligencia. Si la inteligencia comprende facultades como: Percibir y manipular elementos del mundo real Adquirir y aplicar conocimientos Entender el lenguaje Natural Razonar y resolver problemas Se puede afirmar que Es posible producir IA

INTELIGENCIA ARTIFICIAL - CARACTERSTICAS


3

La IA. ha sido creada por el hombre para copiar, en cierta medida, la inteligencia natural. Para conseguirlo, se ha escogido como herramienta al computador, mquina que es capaz de procesar gran cantidad de datos a gran velocidad, segn las directrices definidas en un programa. Una mquina puede considerarse como inteligente cuando cumple los siguientes requisitos: Si es capaz de percibir visualmente los objetos que la rodean y reconocer sus formas. Si es capaz de "entender" el lenguaje natural, hablado o escrito, as como producir respuestas en dicho lenguaje. Poder elaborar actuaciones de acuerdo con las condiciones cambiantes del entorno y llevarlas a cabo mediante los correspondientes elementos fsicos. cuando puede almacenar informacin y conocimientos a los que manipula mediante reglas y algoritmos para alcanzar soluciones a problemas planteados.

INTELIGENCIA ARTIFICIAL - HISTORIA La IA. Surge en la dcada de los 60 con inicios en el desarrollo de programas heursticos, Logic Theorist (LT) escrito en 1956 que consista en un programa de resolucin de problemas bien definidos. ( Ej. las torres de Hanos), para luego ir a extenderse a soluciones de problemas de la actividad humana. Las etapas por las cuales ha ido evolucionando no han sido fciles ni rpidas. Los investigadores en IA, aprendieron que un alto coeficiente de inteligencia no hace a una persona experta, el conocimiento especializado si lo hace. Por lo tanto para hacer que un procesador simblico en IA. sea consistente, rpido y trabaje como un experto humano, alguien debe dar un saber especializado comparado a lo que un experto humano posee. INTELIGENCIA ARTIFICIAL - CAMPOS DE APLICACIN De todas las actividades que hacen al ser humano inteligente, los investigadores en IA. centran sus estudios en tres campos. Comunicacin y Percepcin Razonamiento Simblico Ingeniera del Conocimiento.

Comunicacin y Percepcin. Desde los inicios de la IA. se intento construir un sistema de traduccin automtica mediante la utilizacin del ordenador, es decir los programas que entienden el lenguaje humano, se ha convertido en uno de los grandes retos de la informtica. Logrndose una fuerte relacin entre la IA. y la lingstica. As mismo el procesamiento y reconocimiento de imgenes es otro gran campo de accin.
4

Razonamiento Simblico En la informtica tradicional los ordenadores trabajan con programas en los cuales los datos acceden directamente al ordenador, pero las decisiones de como procesar dichos datos estn impresas en el lenguaje del programa y almacenadas en memoria durante el proceso de ejecucin; (Ejm. Gestin Cuenta Corriente Banco, que recibe todos los das diferentes datos, pero la forma de que se procesan es invariablemente la misma). La IA. intenta integrar el conocimiento en el sistema, es decir un sistema inteligente que escribe su propio programa. Los sistemas de IA. se basan en reglas heursticas, en contraste con los programas de calculo numricos, basado en el uso de algoritmos. la heurstica hace hincapi, dentro del programa, en los aspectos del problema que parecen ms crticos y en las partes de la base de conocimientos que parecen mas relevantes y gua al programa en los casos particulares desechando ciertos caminos y centrndose en otros. El resultado es que el programa sigue una lnea de razonamiento en vez de seguir una secuencia de pasos fijos en el clculo. Ingeniera del Conocimiento. La IC es un campo de la IA. que concierne a la aplicacin del conocimiento para resolver problemas que ordinariamente requieren inteligencia humana. agrupa las reas que intervienen en el desarrollo de los sistemas expertos y las bases de conocimiento. Estas reas son: Representacin del conocimiento Adquisicin del conocimiento APLICACIONES DE LA INTELIGENCIA ARTIFICIAL Tratamiento de lenguajes naturales Recuperacin inteligente de datos en una Base de Datos Sistemas Expertos Demostracin de Teoremas Robtica Programacin automtica Problemas Combinatorios y de Planificacin Problemas de Percepcin Problemas de Sentido Comn Problemas de diseo de Ingeniera

Lenguaje Natural Cuando los hombres se comunican entre s por medio del lenguaje, emplean casi sin esfuerzo, procesos extremadamente complejos. Es muy difcil desarrollar sistemas informticos capaces de generar y entender simples fragmentos del lenguaje natural. El lenguaje tambin incluye un proceso asociado de estructura mental de un cerebro hacia otro, que se complementan con gestos inteligentes. Por Ejemplo. El vino..... Interprete de licor El vino..... Interprete de venir.
5

APLICACIONES DE LA INTELIGENCIA ARTIFICIAL Recuperacin inteligente de datos de una Base de Datos. Los sistemas de BD. permiten almacenar gran cantidad de hechos relativos a una materia determinada, de tal forma que los usuarios puedan encontrar en ella, informacin a sus preguntas o requerimientos. El diseo de BD. es una especialidad muy activa de la ciencia informtica; se han desarrollado muchas tcnicas para conseguir eficientes mtodos de representacin, almacenamiento y recuperacin de grandes cantidades de hechos. Por lo tanto resulta interesante el tema de querer encontrar respuestas, que requieran elaborar razonamientos deductivos, a partir de hechos de la BD. Cuando se quiere disear uno de estos sistemas inteligentes de recuperacin de la informacin, nos enfrentamos a varios problemas. El problema de construir un sistema que pueda entender preguntas formuladas en un lenguaje natural Como deducir respuestas a partir de los hechos almacenados. La comprensin de la pregunta y la deduccin de la respuesta, puede requerir conocimientos, ms all de los representados en la BD. de la materia en estudio y a menudo se requiere el conocimiento comn (normalmente omitido en la BD.) Ejemplo. De los hechos representados en una BD. de personal. Juan Lpez es el director del Dpto. Ventas Jos Prez trabaja en el Dpto. Ventas Entonces la pregunta Quin es el jefe de Jos Prez ? El sistema debera saber que el Director de un Dpto. es el jefe de todas las personas que trabajan en l. El cmo puede representarse y usarse el conocimiento comn es uno de los problemas del diseo de sistemas. Sistemas Expertos. Los mtodos de la IA. han sido empleados tambin en el desarrollo de sistemas expertos, los cuales proporcionan a los usuarios conclusiones tcnicas sobre materias especializadas. Se han construido sistemas que pueden diagnosticar enfermedades, evaluar potenciales yacimientos de minerales, estructuras de compuestos qumicos, solucin de problemas informticos, evaluaciones financieras...etc. Un problema clave en el desarrollo de un sistema experto es encontrar la forma de representar y usar el conocimiento que los humanos expertos poseen y usan. Este problema se hace ms difcil por el hecho de que en muchos campos, este conocimiento
6

es impreciso, dudoso o anecdtico y en muchos casos se basa en la experiencia o intuicin. Demostracin de Teoremas El encontrar una demostracin o refutacin de un teorema presentado como conjetura, en matemticas, se considera normalmente una tarea inteligente. No solo requiere la capacidad de extraer deducciones a partir de hiptesis, sino que exige destrezas intuitivas tales como la de hacer conjeturas sobre que temas deberan ser probados antes, para facilitar la demostracin del teorema. Se han desarrollado programas para la demostracin automtica de teoremas, que poseen algunas de las habilidades en un grado limitado. En la IA. la formalizacin del proceso deductivo utilizando el lenguaje de la lgica de predicados nos ayuda a comprender mejor los componentes del razonamiento. Robtica. El problema de controlar las acciones fsicas de un robot mvil, no parece requerir de mucha inteligencia. A pesar de ello, las tareas de desplazamiento y reconocimiento de objetos que el hombre realiza casi inconscientemente, si estas fueran realizadas por una mquina, requieren de las mismas habilidades en la resolucin de problemas que requieren inteligencia. Ejemplo. Levantar un Mueble y trasladarlo por una escalera aparentemente es fcil, pero requiere de una complejidad. Programacin Automtica. La tarea de escribir de manera automtica un programa, que conduzca a un resultado prefijado, est internamente relacionado con probar que el programa llegue a ese resultado. Muchos sistemas de programacin producen una verificacin del programa producido, como un beneficio adicional. Una de las contribuciones importantes de la programacin automtica ha sido la nocin de depuracin, como una estrategia de resolucin de problemas. Otro aspecto importante es la generacin de cdigo como solucin a un problema de programacin o de control, aunque el resultado no sea el ideal, nos permite tener un avance importante para su correccin y ahorro de tiempo en desarrollo. Problema Combinatorios y de Planificacin. Una Clase interesante de problemas esta relacionada con la determinacin de planes o combinaciones ptimas. As por ejemplo en el caso de un comerciante de comercio que consiste en determinar, un viaje de mnimo recorrido, partiendo de una de varias ciudades, visitando cada una de ellas, una sola vez y volviendo a la partida. Este problema se puede representar a travs de un grafo con N nodos, de modo que el camino pase por cada nodo una sola vez. Muchos enigmas o rompecabezas (Puzzles) tienen esta misma caracterstica general, en donde la mayor parte de los problemas, el dominio de las combinaciones o secuencias entre los que se debe escoger la solucin es muy grande. Ejm. Juego de Ajedrez.
7

Problemas de Percepcin. Se han hecho dotar a los robots o ordenadores con cmaras de televisin para permitirles Ver sus alrededores o con micrfonos para permitirles or el habla humana. A travs de estas experiencias se ha aprendido que el proceso de los datos complejos de entrada requiere Comprensin y que esta necesita una amplia base de conocimientos acerca de las cosas que han de ser Percibidas. Este proceso de percepcin comprende ordinariamente un conjunto de operaciones. Una escena visual por ejemplo, es codificada por medio de sensores y representada como una matriz de valores de intensidad, estos valores son procesados para determinar, los segmentos rectilneos, curvas simples, vrtices...etc. El objetivo es representar la escena mediante un modelo adecuado. Problemas de Sentido Comn. Son la solucin a problemas de la vida diaria del ser humano, denominados de sentido comn, el cual incluye el razonamiento sobre objetos fsicos y sus relaciones Problemas de Diseo de Ingeniera. Adems de las tareas de la vida diaria, mucha gente puede tambin realizar tareas ms especializadas, en los cuales es necesario una cuidadosa adquisicin de experiencia y aplicacin de un mtodo cientfico. AGENTES INTELIGENTES Que es un Agente? Agente (definicin an no comprendida y estandarizada):
o o

Programa que acta a favor de un usuario Un agente es todo aquello que percibe su ambiente mediante sensores y que responde o acta en tal ambiente por medio de efectores

Otras definiciones : Los agentes son las entidades que deben tener un comportamiento meta-goaloriented autnomo en un cierto ambiente que sirve a menudo muchos de metas externamente definidas (Marks y Bobrow 1995) Un agente es una entidad lgica persistente del software orientada hacia una meta especfica. La caracterstica de la persistencia distingue agentes de subrutinas y la especificidad de metas hace agentes diferentes del software lgica de funcionamientos mltiples (Smith, Cypher y Spohrer, 1994)

Diversos Tipos de Agentes


agentes de software, agentes inteligentes, agentes mviles, agentes autnomos, agentes de interfaz, agentes racionales, agentes intencionales, agentes emocionales, agentes deliberativos, etc.

PROPIEDADES DEL AGENTE Autonoma: acta sin intervencin directa Reactividad: responde a los estmulos en el tiempo real Pro-actividad: decide que es lo que va a hacer Habilidad comunicativa: interacta con otros sistemas (incluso, usuarios, software, otros agentes) Habilidad cooperativa: colabora en la resolucin de problemas Comprensin del ambiente: sabe los aspectos relevantes del ambiente Robusto: maneja las situaciones excepcionales CATEGORAS DE AGENTES Agentes reactivos (no pueden razonar) Agentes intencionales (capaces de razonar acerca de sus intenciones y creencias, crear planes de acciones - BDI) Agentes sociales (poseen modelos de otros agentes)

10

SISTEMAS MULTIAGENTES (SMAS)


Los agentes cooperan para la resolucin del problema Cada agente es un especialista en su rea. Ninguno de agentes no tiene la informacin completa sobre el problema Cada agente cuenta con sus creencias, intereses, y metas. Los agentes son dbilmente acoplados

11

LAS SOLUCIONES CON LOS AGENTES MVILES

REDES ACTIVAS
o o

Delegacin de tareas a los agentes Una vista personalizada

MENOR ACTIVIDAD DEL USUARIO


o o

Informacin personalizada Una red proactiva

12

Universidad de San Martn de Porres Facultad de Ingeniera y Arquitectura

ASIGNATURA

INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

Profesor: Ruben Daro Cuadros Ricra

UNIDAD I Ingeniera del Conocimiento


Semana: 2a

LIMA PER 2002

13

INTELIGENCIA ARTIFICIAL INGENIERA DEL CONOCIMIENTO Ingeniera del Conocimiento Campo de la IA. cuya especialidad es valorar problemas, adquirir conocimientos y construir sistemas de conocimiento. Manejo del Conocimiento Uno de los ms rpidos y slidos resultados que surgieron en las investigaciones de la IA. fue que la inteligencia necesita conocimiento, el cual tiene algunas propiedades poco deseables como: Es voluminoso Es difcil de caracterizarlo con exactitud Cambia constantemente.

Por lo que requiere ser representado de tal forma que permita: El conocimiento represente las generalizaciones.- Es decir que no es necesario representar de forma separada cada situacin individual. En lugar de ello se agrupan las situaciones que comparten propiedades importantes. Debe ser comprendido por las personas que lo proporcionan.- La mayor parte del conocimiento que se suministra, es hecho por personas, hacindolo siempre en trminos que ellos conocen. Puede modificarse fcilmente para corregir errores y reflejar los cambios en el mundo y en nuestra visin del mundo. Puede usarse en gran cantidad de situaciones aun cuando no sea totalmente preciso o completo. Puede usarse para ayudar a superar su propio volumen, ayudando a acotar el rango de probabilidades que normalmente deben ser considerados.

Representacin del Conocimiento IA. ha desarrollado varios mtodos para facilitar el razonamiento simblico y permitir su programacin. Los esquemas ms habituales de representacin son: Reglas de Produccin Estructuras lgicas y El clculo de predicados.

14

Adquisicin del Conocimiento Son las tcnicas para obtener el conocimiento necesario para la creacin de las Bases de conocimiento y esta determinado por las fuentes de informacin que se obtienen de documentacin Bibliogrfica, Revistas especializadas y el conocimiento del Experto Humano. PROCESO DEL CONOCIMIENTO. Clasificacin. La primera tarea para procesar conocimiento consiste en clasificar todos los objetos que van a ser manipulados por el ordenador. La clasificacin es la construccin de una relacin Uno a Uno entre los smbolos del procesamiento y los objetos o ideas externas. Esta clasificacin de conjuntos de objetos similares, se logra asociando un nombre que los identifique. Relaciones. Las relaciones definen las conexiones entre los objetos que ya hemos clasificado. Procedimientos o Reglas. Inicialmente los Sistemas Expertos, se definan como programas capaces de realizar las tareas propias de un experto humano, en un dominio restringido. La clave del xito de los SE. es la constatacin de que el conocimiento que utilizan la mayor parte de los expertos, al realizar su trabajo, puede ser representado en forma de Reglas del tipo: Si se cumple tal condicin, entonces se puede concluir tal cosa o ejecutar tal accin Por lo cual se puede descomponer la tarea del experto en un conjunto adecuado de reglas, que hacen referencia a determinados datos o hechos, y es posible Los procedimientos o Reglas crean nuevas ocurrencias de relaciones y clases a partir de las que ya existen. Estructuras de Control. Dado un conjunto de clases, relaciones y procedimientos, la estructura de control va a determinar en que secuencia se aplican los diversos procedimientos. Esencialmente se establece: Si el siguiente paso no esta explcitamente definido por una estructura del lenguaje, ejecutar la siguiente instruccin. La estructura de control determina que regla va a ser probada a continuacin. Se le denomina a veces, Interprete de Reglas. Mtodos de Inferencia. Son los mtodos que trazan una lnea de razonamiento a una pregunta dada. La solucin involucra la aplicacin de reglas heursticas a los datos, para as deducir consecuencias lgicas probables y probar que esas consecuencias satisfacen la meta o objetivo. Las metas corresponden a propuestas acerca de caractersticas de solucin a una situacin futura deseada.
15

Heurstica. Se define a cualquier criterio, mtodo o principio que sirve para decidir cual entre varios cursos de accin alternativos, promete ser el ms efectivo, con el fin de alcanzar alguna meta en forma ptima. PROCESO DEL CONOCIMIENTO. Solucin de Problemas. Para que un problema pueda ser resuelto aplicando las tcnicas de IA. Debe poseer las siguientes caractersticas;

Debe entenderse el sistema de representacin con el que se plantean los problemas de IA. Para poder ser resueltos. Una vez que estn representados y almacenados los conocimientos disponibles, deben existir procedimientos de bsqueda de la solucin. Debe poderse demostrar que la solucin obtenida es correcta y que esta se puede obtener en un tiempo razonable.

SISTEMAS EXPERTOS Es un programa inteligente que utiliza conocimientos y procedimientos de inferencia para resolver problemas. La investigacin se centra en la bsqueda de mtodos y tcnicas destinadas a la construccin de sistemas Hombre-mquina con experiencia en la resolucin de problemas especficos y concretos. Los primeros grandes SE. desarrollados en laboratorios de IA. como: Dendral (anlisis qumico), Mycin (diagnostico mdico) o Prospector (prospeccin geolgica), se fueron materializando a lo largo de la dcada de los 80. Este paso de los entornos acadmicos a la empresa se inicio con gran entusiasmo, primero en los Estados Unidos, cuna de la IA., pero pronto Japn y Europa definieron sus propias estrategias. El desarrollo de los SE. ha demostrado su rentabilidad econmica y estratgica, lo que promete un factor de competitividad para todo tipo de negocios. Es difcil precisar el nmero total de SE. en explotacin en estos momentos, pero diversas fuentes afirman que muchas empresas de las Fortune 500 han incorporado esta tecnologa. Que son y Que Hacen? Inicialmente los Sistemas Expertos, se definan como programas capaces de realizar las tareas propias de un experto humano, en un dominio restringido. La clave del xito de los SE. es la constatacin de que el conocimiento que utilizan la mayor parte de los expertos, al realizar su trabajo, puede ser representado en forma de Reglas del tipo: Si se cumple tal condicin, entonces se puede concluir tal cosa o ejecutar tal accin
16

Por lo cual se puede descomponer la tarea del experto en un conjunto adecuado de reglas, que hacen referencia a determinados datos o hechos, y es posible codificar dicho conocimiento de forma manejable por un ordenador. Este conjunto de reglas y hechos constituyen lo que se llama Base de Conocimientos. El otro Componente bsico de todo Sistema Experto es el denominado Motor de Inferencias, que es la parte del programa que va analizando encadenadamente las Reglas, de acuerdo con los valores que toman los hechos, simulando el razonamiento que seguira el experto humano en la misma situacin, hasta llegar a una conclusin final, que suele ser un consejo practico relativo a la solucin del problema o la toma de determinada decisin. El papel de las Reglas en la Mayor parte de los Sistemas Expertos hace que en algunos casos se hable de sistemas basados en Reglas, pero adicionalmente, tambin se utilizan otras tcnicas para representar el conocimiento, como las Redes Semnticas o Los Marcos que permiten una caracterizacin de los hechos como entidades u objetos con determinadas propiedades y procedimientos asociados, as como establecer relaciones entre ellos y criterios de herencia de determinadas propiedades. Los expertos humanos, no slo utilizan razonamientos basados en el tipo de reglas lgicas mencionadas, tambin pueden incorporan otro tipo de tcnicas ms sofisticadas, como la lgica difusa (fuzzy), el razonamiento hipottico, el razonamiento basado en modelos .... etc. Por otra parte, no siempre el conocimiento que se puede utilizar forma parte de la experiencia de un profesional, a menudo se encuentra distribuido en otras fuentes, como: documentos, manuales, leyes, bases de datos,... etc. Incluso parte del conocimiento puede estar implcito en el contexto de grandes masas de datos, cuyo tratamiento estadstico proporciona valores para los parmetros utilizables por un SE. Una tecnologa que est dando resultados sorprendentes son las Redes Neuronales, que son modelos muy simplificados de las Redes de Neuronas que constituyen el Cerebro. este proceso consiste en las funciones que realizan las neuronas, las cuales una vez que han sido entrenadas, mediante ejemplos, son capaces de caracterizar o reconocer nuevas entidades muy rpidamente, ya que se pueden comportar como dispositivos de procesamiento en paralelo. Todo lo anterior conduce a considerar, que mientras los sistemas tradicionales manejan Datos, rpida y eficientemente, utilizando algoritmos completamente definidos, de carcter repetitivo y que son reconocidos por el equipo que desarrolla el sistema. En el caso de los SE. se maneja Conocimiento, es decir, como resolver un problema o realizar una tarea, que habitualmente requiere estudio y experiencia por parte de un experto. Este conocimiento a diferencia de algoritmos rgidos establecidos, se basa en estrategias o heursticas, descubiertas por el experto, despus de un cierto tiempo de enfrentarse con la tarea.

17

Herramientas de Desarrollo Adems de los dos lenguajes de programacin ya clsicos de la IA., Prolog y Lisp, los profesionales de la IC. disponen de un gran numero de entornos de desarrollo, que incorporan diversos mtodos de representacin del conocimiento, distintos tipos de razonamiento y herramientas para la construccin de interfaces con el usuario y con el entorno informtico en que deba integrarse el SBC. Dentro de las herramientas que existen en el mercado tenemos: ART, ADS, KGMS, TIRS, NEXPERT, EXSYS... etc. de las cuales la mayora generan cdigo C y pueden ser utilizadas en la mayor parte de plataformas (DOS, WINDOWS, OS/2 UNIX,. etc.) Cual es el Problema de Desarrollo El problema fundamental para la consolidacin de esta tecnologa radica mas en aspectos estratgicos relacionados con los hbitos de desarrollo, uso y explotacin de aplicaciones. tal como ha evolucionado la tecnologa, en general no han sido los centros de proceso de datos (CPD.) de las empresas los que la han promovido. Dada la complejidad de las tcnicas de IA. y su procedencia de entornos acadmicos, los primeros desarrollos fueron aplicaciones especificas aisladas del entorno informtico global de la empresa y muchas veces para departamentos tradicionalmente poco informatizados y con poca o ninguna interaccin con el CPD. Esto dio lugar a que los primeros ingenieros del conocimiento estuvieran muchos mas dedicados a los aspectos ms innovadores del SE. (Adquisicin y Representacin del conocimiento) que a asegurar la implantacin y explotacin de los sistemas resultantes. Esta situacin inicial ha planteado dificultades para la consolidacin de una metodologa estandarizada y que contemple todas y cada una de las fases que componen el ciclo de vida de un SE As, determinados aspectos relacionados con los usuarios, como el desarrollo de interfaces automticamente amigables y ergonmicos o como el sesgo del sistema final hacia la "visin" del experto, a pesar de no ser el usuario real, han sido relegados en algunos SE., lo que ha propiciado su fracaso. La falta de previsin frente a los problemas posteriores de mantenimiento, especialmente delicados en la mayor parte de los SE., que deben evolucionar junto con el conocimiento de la empresa para mantenerse operativos, puede inutilizar sistemas con un excelente rendimiento en el momento de iniciarse su explotacin. En los ltimos aos se estn haciendo notables esfuerzos por consolidar una metodologa estandarizada que caracterice las fases y procedimientos propios de la IC. Bases de Conocimiento Es una coleccin de hechos y reglas que representan elementos del mundo real. Un Sistema de Conocimientos (SBC) es un conjunto de recursos, mquinas, programas y personas. Los SBC. son convencionales en cuatro aspectos: Las bases de conocimiento contienen reglas representadas explcitamente, as como hechos sencillos. Las estructuras de almacenamiento de las bases de conocimiento tienen contenido semntico estructural de bajo nivel comparado con las estructuras de las bases de datos. Los SBC. incluyen componentes para el mantenimiento de la integridad semntica, adems de componentes para verificacin sintctica.
18

Los SBC. incluyen componentes que pueden hacer inferencias. de esta manera proporcionan medios de recuperacin de informacin deductiva. Los SBC. podran utilizarse como componentes de sistemas expertos. sin embargo, su empleo no se limita a esto. Pueden emplearse como sistemas de bases de datos sofisticados o sistemas de datos inteligentes (DBI) y tambin como sistemas de reconocimiento de patrones. Muchas de las actividades que hasta ahora resultaban difcilmente mecanizables, pueden ser ahora abordadas si se dispone de expertos calificados y dispuestos a colaborar o tambin si se tiene acceso a determinadas fuentes de conocimiento. En general todas las empresas suelen tener necesidad de preservar el conocimiento de sus profesionales; tambin necesitan que ese conocimiento, sea accesible para otros empleados no tan calificados, pero que pueden seguir las instrucciones del experto (establecidas en el SBC.) para realizar una determinada tarea. En este sentido, es importante resaltar la gran utilidad de los SBC. para efectuar las tareas ms rutinarias desempeadas por el experto; dejando a este que se concentre, en los aspectos ms creativos e inteligentes de su trabajo. Adems se necesitan nuevas herramientas informticas ms potentes para hacer frente a los nuevos enfoques de Organizacin y Gestin Empresarial. As como para afrontar los retos de productividad, flexibilidad, financiacin y adaptacin a la evolucin de los mercados, que estn caracterizando a las economas actuales. Los SBC. pueden resultar una importante ayuda en las tareas de gestin: Sistemas de Anlisis Financiero y de apoyo a la toma de decisiones, Gestin de personal y recursos, Simulacin Inteligente de Empresas y Mercados, etc. Tambin en las labores de Produccin: Sistemas de Diseo de Planificacin y control de Procesos y Calidad, Gestin de Stocks y Almacenes, etc.. En Marketing y Comercializacin: Sistemas de modernizacin de mercados, Identificacin de perfiles de Clientes, Configuracin de productos durante la venta, Asesoramiento y formacin de vendedores, Planificacin de transporte, etc..Manejo de Bases de datos, logrando acceder de forma eficiente y adecuada a la informacin de grandes Bases de Datos corporativas o externas. Otro gran bloque de necesidad se relaciona con el control Inteligente de equipos o procesos automatizados, tanto para su optimizacin de trabajo o produccin, como para la monitorizacin y deteccin de contingencias, e incluso su reparacin.

19

REPRESENTACIN DEL CONOCIMIENTO. Representar el conocimiento, consiste en encontrar una correspondencia entre: El mundo exterior (forma externa) Un sistema simblico (forma interna o fsica) Que permita el razonamiento, el experto del dominio encargado de transmitir su conocimiento, lo suministra en forma externa, el mecanismo de Adquisicin del Conocimiento trasforma este fragmento del conocimiento a la forma interna, es decir en forma de estructura de datos (tabla, lista) antes de incluirlo en la Base de Conocimiento. Existen algunos formalismos que permiten representar, fcilmente mecanismos de razonamiento puramente lgico; otros se adecuan mejor a la representacin de razonamientos por analoga. Se pueden distinguir tres tipos de representacin: Representacin Procedimental. Autmatas finitos, programas que expresan explcitamente las interrelaciones entre fragmentos de conocimiento, para que sean difcilmente modificables (Reglas y Estructuras de control). Permiten una facilidad de utilizacin del metaconocimiento, lo que permite descomponer, explcitamente, el problema. Representacin Declarativa. Clculo de Predicados, Reglas de Produccin, y Redes Semnticas, que crean fragmentos del conocimiento interdependientes unos de otros y que por consiguiente, son fcilmente modificables. Estos conocimientos se combinan, despus, mediante un mecanismo general de razonamiento y deduccin (Clases y Relaciones). Representacin Mixta. Objetos Estructurados, Marcos, Grafismos, Objetos; que emplea los dos modelos de representacin precedentes. Problema de la Representacin. Para resolver los complejos problemas con los que se enfrenta la IA., es necesario disponer de una gran cantidad de conocimiento, as como una serie de mecanismos que permitan manipularlo con el fin de obtener soluciones a nuevos problemas. La IA., al representar el Conocimiento maneja dos entidades: Hechos: verdades en un cierto mundo. Es aquello que queremos representar. Representaciones de los Hechos, en un determinado formalismo Programas que razonan Representaciones Internas Comprensin Generacin del lenguaje del lenguaje Representaciones en lenguaje natural Correspondencia entre Hechos y Representaciones.
20

Hechos

Los sistemas convencionales solucionan los problemas mediante el uso de algoritmos o procesos repetitivos fijos, que fueron programados con anterioridad y que esperan siempre el mismo tipo de datos a la entrada, para procesarlos y generar la respuesta. Los sistemas de IA, tratan de automatizar el razonamiento humano, buscando representar el conocimiento, cuyo proceso, aprovecha un conocimiento especializado, examina, sintetiza y resuelve los problemas que se le plantean. Sin embargo cualquiera que sea su naturaleza, el conocimiento puede representarse usualmente en trminos de hechos relativos al mundo. Clasificaciones y relaciones entre objetos. Procedimientos o Reglas para manipular los hechos. Informacin sobre cuando o como aplicar las Reglas o Procedimientos.

Normalmente agrupamos los objetos organizndolos en Clases. Por ejemplo podemos pensar en: Ana, Alfredo, Juan, Pedro Alfredo, Juan y Pedro Ana Problema de la Representacin. Una ventaja obvia de la clasificacin es que facilita la memorizacin, pues solo necesitamos conocer las caractersticas de una Clase en vez de tener que conocer cada objeto en forma individual. Tambin podemos definir Relaciones entre Clases u Objetos individuales. Podemos as definir la relacin: supervisa (A, B), significando que A supervisa B. Ejemplo: supervisa (Pedro, Juan) supervisa (Juan, Ana) supervisa (Ana, Alfredo) ---> Clase Persona ---> Varones ---> Mujer

Lo que sugiere una estructura de comunicacin y una relacin entre objetos similares. El conocimiento sobre los Objetos y sus Relaciones nos capacita para clasificarlos y relacionarlos. Un segundo tipo de conocimiento son las Reglas, que nos permite especificar como inferir nuevos componentes de una Clase o nuevas ocurrencias de una Relacin, a partir de Objetos an no clasificados. Ejemplo. Si definimos la relacin. informa(B, A) significando que B informa A (quizs por medio de otros supervisores) entonces podemos enunciar la Regla.
21

Regla: informa (C, A) es verdad Si bien supervisa (A, C) es verdad o supervisa (A, B) y supervisa (B, C) son verdad Regla a dos niveles que nos permite deducir informa (Ana, Pedro) e informa (Alfredo, Juan) son verdad Pero no puede utilizarse para inferir que informa (Alfredo, Pedro) sea verdad Para ello se necesita una regla ms potente que contenga recursin. Regla: informa (C, A) es verdad si bien supervisa (A, C) es verdad o supervisa (A, B) es verdad y informa (C, B) es verdad La primera parte de esta regla recursiva, trata el hecho de la comunicacin directa a un nivel, mientras que la segunda lo hace con la indirecta o de varios niveles. Si hacemos la pregunta: informa (Juan, Pedro) Entonces la primera parte si de la regla se hace inmediatamente verdad de modo que es valida la contestacin a la pregunta. Si hacemos la pregunta: informa (Alfredo, Pedro) El proceso es ms complejo. Lo cual se mostrar en la siguiente tabla, en donde: Columna 1. Columna 2. Columna 3. Indica cual es la pregunta inicial. Detalla la evaluacin de la parte bien de la regla. Detalla a su vez la evaluacin de la Parte O, de la regla que solo tiene lugar s la parte bien falla.

22

Pregunta ?informa (Alfredo, Pedro)

Parte Bien ?supervisa (Pedro, Alfredo) falso ?supervisa (Juan, Alfredo) falso ?supervisa (Ana, Alfredo)? Verdad

Parte 0 supervisa (Pedro, B)? verdad B=Juan ?supervisa (Juan,B)? verdad B=Ana

Nueva Pregunta ?informa (Alfredo, Juan)? ?informa (Alfredo, Ana)?

?informa (Alfredo, Juan)? ?informa (Alfredo, Ana)?

Luego informa (Alfredo, Ana) es verdad y informa (Alfredo, Juan) es verdad y informa (Alfredo, Pedro) es verdad, lo que contesta a pregunta. Por tanto, para describir el proceso, podemos utilizar conocimiento declarativo (Clases y Relaciones) y conocimiento procedimental Reglas y Estructuras de Control. Ejercicio: Represente estas Relaciones. a) Pedro es hijo de Juan y Mara b) Luisa y Fernando son hijos de Pedro Ejercicio: Represente las Relaciones: En un destacamento militar, El General, solicita diariamente al Mayor, los reportes de las acciones llevadas a cabo, l Teniente y personal de tropa, son los encargados de las operaciones.

23

Universidad de San Martn de Porres Facultad de Ingeniera y Arquitectura

ASIGNATURA

INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

Profesor: Ruben Daro Cuadros Ricra

UNIDAD II Lgica Proposicional y Lgica de Predicados


Semana: 3a - 4a - 5a - 6a

LIMA PER 2002

Lgica Formal
24

El primer lgico conocido fue Aristteles (380-392 A.C.) quien desarrolla muchas de las tesis que hoy se conocen como lgica silogstica o lgica clsica. Esencialmente trata de obtener la verdad o falsedad a partir de un argumento filosfico. Aristteles fue uno de los primeros que intento codificar, La Manera correcta de Pensar, es decir procesos de pensamiento que son irrefutables. Sus famosos silogismos son esquemas de argumentacin mediante las cuales siempre se llega a conclusiones correctas si se parte de premisas correctas. Dichas leyes del pensamiento deberan gobernar la manera de operar de la mente. Ejemplo. Juan es un hombre; Todos los hombres son mortales; Por lo tanto; Juan es mortal. En muchos aspectos, es simplemente una formalizacin del sentido comn.

LGICA PROPOSICIONAL. La lgica simblica empez con G.W. Leibnitz y fue redescubierta por George Boole; Trata de la abstraccin de conceptos en smbolos y conexiones de estos smbolos por medio del uso de ciertos operadores. La lgica simblica constituye la mayora de la base de los Lenguajes de Programacin Procedural, quienes posean alguna nocin de electrnica, conocen que un ordenador se construye a travs de puertas lgicas que toman decisiones basadas en los niveles de las seales elctricas. Pero lo que tratamos es del uso de la lgica en un sentido ms amplio del razonamiento humano. Dentro de este tipo de lgica existen dos razones distintas entrelazadas: La lgica proposicional El calculo de predicados.

La lgica proposicional trata de la determinacin de la verdad o falsedad de varias proposiciones. Una proposicin es una sentencia correctamente formada que es verdadera o falsa. La lgica proposicional es la forma ms sencilla de la lgica simblica. Parte del uso de proposiciones o enunciados, los cuales pueden interrelacionarse a travs de conectores u operadores lgicos, de forma que de proposiciones simples construyamos proposiciones compuestas. Utiliza los operadores lgicos: Conjuncin ( And) (,) () Disyuncin (Or) (;) () Negacin (Not). Implicacin Doble implicacin

25

Calculo Proposicional Se pueden crear operaciones complejas usando estos operadores. AB C D Esta expresin es evaluada de izquierda a derecha. Si se aade parntesis a una expresin, funcionan de la misma forma que en matemticas. (AB) (C D) Cada una de las posibles combinaciones de valores de las proposiciones se pueden reflejar en una tabla de verdad. Definiendo formalmente una interpretacin del calculo proposicional podemos definir: Sea G una formula con A1,A2,A3,...,An proposiciones automticas que ocurren en G, entonces una interpretacin de G es una asignacin de valores de verdad a A1, A2,...,An en donde cada Ai ( i = 1,2,...,n) tiene un valor de verdadero o falso, pero no ambos. Por lo tanto una formula G se dice que es valida o tautolgica si y solo si es verdadera bajo las interpretaciones de G, de lo contrario, es falsa. G se dice es inconsistente o contradictoria si y solo si es falsa bajo todas sus interpretaciones, de lo contrario es consistente. A partir de esto, podemos observar las siguientes reglas: 1. 2. 3. 4. 5. 6. Una frmula es valida si y solo si su negacin es inconsistente. Una frmula es inconsistente si y solo si su negacin es valida. Una frmula es invalida si y solo si existe por lo menos una interpretacin que sea falsa. Una frmula es consistente si y solo si existe por lo menos una interpretacin que sea cierta. Si una frmula es valida entonces es consistente, pero no viceversa. Si una frmula es inconsistente entonces es invalida, pero no viceversa

Para demostrar la validez de un argumento o frmula en l calculo proposicional, podemos utilizar la tabla de verdad, lo cual en algunos casos resulta ser muy extensa, cuando los argumentos constan de muchas proposiciones, por lo que existen otros mtodos que se conocen como directos o indirectos. Los primeros desarrollan una cadena de proposiciones tal que cada una se deduce de su predecesora, y as logran pasar de las premisas hasta la conclusin. Los mtodos indirectos proceden demostrando que se produce una contradiccin en la combinacin de las premisas con la negacin de la conclusin. Estos mtodos para demostrar la validez de un argumento utilizan las reglas de Inferencia. Estas permiten convertir la informacin provista por las premisas, en nuevas premisas que muestren que la conclusin fluye lgicamente de estas.

26

Calculo de Predicados Los hechos constituyen una relacin nica, escrita a la izquierda del parntesis y de algunos objetos, que estn relacionados dentro del parntesis, tales estructuras conforman las sentencias bsicas del calculo de predicados. Dentro del calculo de predicados, a los nombres de la relacin se le denominan Predicados, los objetos Argumentos y las estructuras del calculo Proposiciones. Un Objeto puede ser expresado, como una Constante, indicando un individuo o una clase determinada, o como una Variable que indica, que el individuo o su clase estn sin especificar. Existen dos aspectos que deben considerarse: El orden de argumentos definidos con referencia a una determinada interpretacin del predicado, debe ser el mismo desde el comienzo hasta el final. tiene (carro, Juan) tiene (Juan, carro)

X (Y, Z) " Y es la X de Z" Un predicado puede tener cualquier numero de argumentos.

Ejemplo. Pedro trabaja para IBM. como un cientfico en computadoras, se representa: trabaja (Pedro, IBM, cientfico_en_computadoras) trabaja (cientfico_en_computadoras, IBM, Pedro) Ejercicio. Solucin. Ejercicio. Solucin. Si Luis informa a Manuel, Entonces Manuel supervisa a Luis informa (Luis, Manuel) supervisa (Manuel, Luis) Si Pedro escribe el programa y No funciona Entonces lo arregla por la tarde, O se lo entrega a un programador el da siguiente, se representa: escribe (Pedro, programa) ^ ~ funciona (programa) arregla (Pedro, programa, tarde) v entrega (programa, programador, da_siguiente)

La mayor ventaja que ofrece l calculo de predicados sobre la lgica proposicional es el uso de variables. El calculo de predicados usa variables para generalizar predicados. hombre (X) no mujer (X) "Si X es un hombre, entonces X no es una mujer". Con estas estructuras es posible expresar la mayor parte de los medios, contenidos en una tpica Base de Datos.

27

Ejercicio: Antonio es un cientfico en computadoras que trabaja para IBM. como supervisor. Juan y Pedro son programadores que supervisa Antonio, y Juan tiene una responsabilidad adicional con la documentacin tcnica, establezca las relaciones respectivas Solucin: es_un (Antonio, cientifico_en_computadora), trabaja (Antonio, IBM, supervisor), programador (Juan) ^ documentador_tcnico (Juan), programador (Pedro), supervisa (antonio, Juan) ^ supervisa (antonio, Pedro). Inferencia lgica Para procesar conocimiento utilizando l calculo de predicados, es fundamental que seamos capaces de tomar algn conjunto dado de hechos y reglas, y a partir de ellos inferir nuevos hechos o nuevas ocurrencias de relaciones. Podemos hacer esto de forma que estemos seguros de la validez de la nueva informacin. Por lo tanto cuando en un razonamiento, se parte de un conjunto de premisas, y se deduce una conclusin mediante el empleo de reglas lgicas, afirmamos que hemos realizado una deduccin lgica o inferencia. Consecuencia lgica. Dadas dos operaciones, P y Q, afirmamos que Q se sigue lgicamente de P, o que es consecuencia lgica de P, si la implicacin P Q es una equivalencia, si todas las interpretaciones de dicha implicacin son verdaderas. Basta que podamos encontrar un ejemplo, para el cual P Q sea falsa, es decir, para el cual P sea verdadera y Q falsa, para que afirmemos que Q no es consecuencia lgica de P. Calculo de Predicados. Un lenguaje como el clculo de predicados, est definido por su sintaxis. El aspecto ms atractivo de este formalismo lgico es que proporciona de manera inmediata un mtodo muy potente para la obtencin de nuevo conocimiento a partir del antiguo. Las expresiones licitas del clculo de predicados reciben el nombre de frmulas bien formadas (fbf). Los componentes elementales del clculo de predicados son: Los smbolos de predicados, smbolos de variables, smbolos de funciones, smbolos de constantes, aparte de los parntesis, corchetes y comas. (implicancia), (negacin), O), (Y), (para todo), (existe).

Un smbolo de predicado se usa para representar una relacin en un dominio del discurso. Por ejemplo al representar el hecho de que alguien escribi algo. Podemos utilizar el predicado ESCRIBIO para denotar la relacin entre la persona que escribi algo y la cosa escrita por l. escribi (Voltaire, Cndido)
28

En esta frmula atmica, Voltaire y Cndido son smbolos de constantes o trminos, que se usan para representar objetos o entes en un dominio del discurso. Los smbolos de Variables, tales como X o Y, son tambin trminos que nos permiten ser indefinidos respecto al ente al que se refieren. escribi (X, Y) Los smbolos de funcin, nos permiten denotar funciones en el dominio del discurso. Por ejemplo para expresar la sentencia: La madre de Juan est casada con el padre de Juan, podemos usar la siguiente expresin. casados [ padre(Juan), madre(Juan) ]. En el clculo de predicados, a una fbf, puede drsele una interpretacin, asignando una correspondencia entre los elementos del lenguaje y las relaciones, entes y funciones del dominio del discurso. A cada smbolo de predicado le podemos asignar una relacin correspondiente en el dominio; a cada smbolo de constante, un ente del dominio; a cada smbolo de funcin, una funcin del dominio. Estas asignaciones definen la semntica del lenguaje del clculo de predicados. Una vez que ha sido definida una interpretacin para las frmulas atmicas, diremos que est tiene el valor V(verdadero), si y slo si la sentencia correspondiente sobre el dominio es verdadera, y que tiene el valor F(falso) si y slo si la sentencia correspondiente es falsa. JUNTORES. Las frmulas atmicas pueden combinarse, para formar frmulas ms complejas, que permiten representar sentencias compuestas, tales como: A Juan le gusta Mara y a Juan le gusta Carmen. Pero tambin algunas sentencias simples se pueden escribir en forma compuesta. Juan vive en una casa color amarillo. vive(Juan, casa1) color (casa1, amarillo) En el ejemplo de una representacin del juntor () o inclusivo, la sentencia: Juan juega como defensa o delantero [Juega (Juan, defensa) juega (Juan, delantero) ]. Los valores de las conjunciones y disyunciones, vienen determinados por sus componentes. Una conjuncin tiene un valor Verdadero si cada una de las frmulas unidas por el juntor () tiene el valor V; en caso contrario, tiene el valor F. Una disyuncin tiene el valor V si una, al menos, de las frmulas unidas por el juntor () tiene el valor V; en caso contrario, tiene el valor F. El otro juntor, , se usa para representar las sentencias Si- entonces, que recibe el nombre de una implicacin. La frmula de la izquierda de la implicacin se llama antecedente y la de la derecha, consecuente.

29

Una implicacin tiene el valor V si o bien el consecuente tiene el valor V (cualquiera que sea el valor del antecedente), o bien el antecedente tiene el valor F (cualquiera que sea el valor del consecuente); en otro caso, la implicacin tiene el valor F. Si el coche pertenece a Juan, entonces el coche es verde propietario(Juan, coche1) Color (coche1, verde). El smbolo de ( ) negacin, se incluye tambin entre los juntores, aunque en realidad no se usa para conectar dos frmulas. Se utiliza para negar el valor de verdad de una sola frmula; esto es, aplicada a una fbf, cambia su valor de V a F y viceversa. Por ejemplo, la sentencia (verdadera) Voltaire no escribi Hamlet, puede representarse como: escribi (Voltaire, Hamlet) Es fcil determinar que F1 F2 tiene los mismos valores de verdad que F1 F2, por lo cual puede ser reemplazado. aunque heursticamente se prefiere el smbolo de implicacin. CUANTIFICACIN. A veces, una frmula atmica, tal como P(X), tiene el valor V (para una interpretacin dada de P), sin importar la asignacin que se haga para la variable X. Otras veces, esa frmula atmica tiene el valor V para una asignacin al menos de la variable X. En el clculo de predicados se utilizan ests propiedades para establecer los valores de verdad de frmulas que contienen lo que se llaman Cuantores o Cuantificadores. Una frmula que consiste en el cuantor universal ( X) precediendo a una frmula P(X), tiene el valor V para una interpretacin si y slo si el valor de P(X) bajo esa interpretacin es V para todas las asignaciones de X a los entes en el dominio. Una frmula que consiste en el cuantor existencial (X) precediendo a la frmula P(X), tiene el valor V para una interpretacin si y slo si el valor de P(X) bajo esa interpretacin es V al menos para una asignacin de X a un ente en el dominio. As por ejemplo las sentencias: Todos los elefantes son grises ( X) [ elefante (X) color (X, gris) ] Aqu, la frmula que ha sido cuantificada, es una implicacin y X es la variable cuantificada. Diremos por lo tanto que se ha cuantificado sobre X. La sentencia: Hay una persona que escribi Hamlet puede representarse como: ( X) escribi (X, Hamlet).
30

Notaremos que si en una fbf aparecen cuantores, no siempre es posible usar las reglas para las semnticas de los cuantores, para determinar los valores de verdad de la fbf. Por ejemplo, si consideramos la fbf: ( X)P(X). Dada una interpretacin para P y un dominio infinito de entes, tendramos que comprobar si la relacin correspondiente a P se cumple para cada asignacin posible de X a un ente en el dominio, para poder concluir que la fbf tiene el valor V. Tal proceso no acabara nunca. La versin del calculo de predicados que utilizaremos se llama de primer orden, porque no permite la cuantificacin sobre smbolos de funciones. As, frmulas tales como (P)P(A), no son fbf en l calculo de predicados de primer orden. Propiedades de las fbf. Usando las reglas semnticas que hemos estudiado, podemos construir fbf, arbitrariamente complejas tales como: ( x) { ( y) [ (P (x, y) Q( y, x )) R (x) ] } ( q) { ( x) [ P (x) R (q) ] } P [A, g (A, B, A) ] { [ P (A) P (B) ] } P(B). En estas expresiones se han utilizado parntesis, corchetes y llaves, como delimitadores para agrupar las fbf. componentes. Algunos ejemplos de expresiones que no son fbf. f (A) f ( P(A)) Q{ f (A), [P (B) Q (C) ] } A ( ). Los valores de verdad de las fbf pueden determinarse mediante las reglas que se han descrito. Cuando los valores de verdad se determinan, se estn haciendo uso del llamado mtodo de la tabla de verdad. P Q V F V F V V F F PQ PQ PQ V V V F V F F F V V F V P F V F V

31

Si los valores de verdad de dos fbf son los mismos cualesquiera que sea su interpretacin, se dice que estas fbf son equivalentes. Usando las tablas de verdad, se pueden establecer las equivalencias siguientes: ( P) es equivalente a P P Q es equivalente a P Q Las leyes de Morgan: ( P Q) es equivalente a P Q ( P Q) es equivalente a P Q Las leyes distributivas: P (X Y) es equivalente a (P X) (P Y) P (X Y) es equivalente a (P X) (P Y) Las leyes conmutativas: P Q es equivalente a Q P P Q es equivalente a Q P Las leyes asociativas: (P Q) Y es equivalente a P ( Q Y) (P Q) Y es equivalente a P ( Q Y) La ley de contraposicin: P Q es equivalente a Q P

A partir de los significados de los cuantores podemos establecer tambin las equivalencias siguientes: ( x) P(x) es equivalente a (x) [ P(x)] (x) P(x) es equivalente a (x) [ P(x) ] (x)[P(x)Q(x)] es equivalente a (x)P(x)(y) Q(y) (x)[P(x)Q(x)] es equivalente a (x)P(x) ( y) Q(y) (x) P(x) es equivalente a (y) P(y) (x) P(x) es equivalente a (y) P(y) Ejercicio: Cada Ciudad tiene un polica que ha sido mordido por todos los perros de la Ciudad. (x) { ciudad(x) (y) {polica (x, y) (z) { [perro(z) vive_en(x, z)] mordido (y, z)}}}
32

Ejercicio: Para cada conjunto x, hay un conjunto y tal que el cardinal de y es mayor que el cardinal de x. (x) { conjunto(x) (y)(u)(v) [conjunto(y) cardinal(x, u) cardinal(y, v) mayor (u, v) ] } Ejercicio. Todos los bloques que estn encima de bloques que han sido movidos o que estn unidos a bloques que han sido movidos, tambin han sido movidos. (x)(y) { {bloque(x) bloque (y) [ encima(x, y) unido(x, y) ] movido(y) } movido(x) }. Ejercicio: Considere las sentencias siguientes y logre su representacin a travs de la lgica de predicados. 1. 2. 3. 4. 5. 6. 7. 8. Marco era un hombre Marco era un pompeyano. Todos los pompeyanos eran romanos Cesar fue un gobernante. Todos los romanos o eran leales a Cesar o le odiaban. Todo el mundo es leal a alguien. La gente slo intenta asesinar a los gobernantes a los que no es leal. Marco intento asesinar a Cesar.

Los hechos descritos en las frases anteriores se pueden representar como un conjunto de fbf. de la lgica de predicados de la siguiente manera: 1. Marco era un hombre hombre (Marco) 2. Marco era pompeyano pompeyano(Marco) 3. Todos los pompeyanos eran romanos x: pompeyano(x) romano(x) 4. Cesar fue un gobernante gobernante(Cesar) 5. Todos los romanos o eran leales a Cesar o le odiaban. x: romano(x) leal(x, Cesar) odia(x, Cesar). 6. Todo el mundo es leal a alguien x: y : leal (x, y). 7. La gente slo intenta asesinar a los gobernantes a los que no es leal. x: y: persona(x) gobernante(y) intenta_asesinar(x, y) leal(x, y). 8. Marco intento asesinar a Cesar intenta_asesinar(Marco, Cesar).

33

Ahora supongamos que se desea utilizar los anteriores aciertos para responder a la siguiente pregunta: ? Era Marco leal a Cesar? Utilizando 7 y 8 se puede demostrar que Marco no era leal a Cesar, intentando obtener una prueba formal de razonamiento a la inversa desde el objetivo a alcanzar. leal (Marco, Cesar) Para probar este objetivo, es necesario utilizar las reglas de inferencia que permiten transformarlo en otro objetivo (o posiblemente conjunto de objetivos) que a su vez pueden ser transformados, y as sucesivamente, hasta que no quede ningn objetivo por satisfacer. El intento falla, ya que no se puede satisfacer el objetivo persona(Marco) con los aciertos disponibles. El problema es que, a pesar de que se sabe que Marco era un hombre, no se puede deducir que era una persona. Se debe aadir la representacin de otro hecho al sistema: 9. Todos lo hombres son personas. x: hombre(x) persona(x)

De esta forma se satisface el ltimo objetivo y se obtiene una prueba de que Marco no era leal a Cesar. CONVERSIN A FORMA CLAUSAL Al instanciar una variable, queremos conocer el mnimo nmero de sustituciones que deben realizarse para preservar el valor de verdad del sistema. Despus de aplicar todo este procedimiento a un conjunto de fbf. Tendremos un conjunto de clusulas, cada una de las cuales ser una disyuncin de literales. Estas clusulas sern las que utilice el procedimiento de resolucin para generar demostraciones. Algoritmo de conversin a forma clausal. Supongamos que todos los romanos que conocen a Marcos o bien odian a Csar o bien piensan que cualquiera que odie a otro est loco. Esta sentencia se puede representar con la siguiente fbf: x: [ romano(x) conoce(x, marcos) [ odia(x, Csar) ( y: (z: odia(y, z)) cree_loco(x, y))]

Paso 1.
34

Eliminar las implicaciones, , usando el hecho de que a b es equivalente a: a b. Realizando esta transformacin en la fbf. anterior tenemos: x: [ romano(x) conoce (x, Marco) ] [odia(x, Csar) ( y: (z: odia ( y, z)) cree_loco (x, y) ) ] Paso 2. Reducir el mbito de las negaciones, , a un nico trmino, usando el hecho de que (p) = p, las leyes de Morgan, segn las cuales: (a b) = (a b) = ab ab

Las correspondencias normales entre cuantificadores. [ x: P (x) = x: P(x) y x: P(x) = x: P(x) ]. Realizando esta transformacin en las fbf., del paso 1 se obtiene: x: [ romano(x) conoce(x, Marco) ] [odia(x, Csar) ( y: z: odia(y, z) cree_loco(x, y)) ] Paso 3. Normalizar las variables de forma que cada cuantificador este ligado a una nica variable. puesto que las variables son slo nombres sin un valor concreto, este proceso no puede afectar al valor de verdad de la fbf. Por ejemplo la formula: x: P(x) x: Q(x) se convertira en: x: P(x) y: Q(y) Paso 4. Mover todos los cuantificadores a la izquierda de la frmula sin cambiar su orden relativo. Esto es posible gracias a que no existe ningn conflicto entre los nombres de las variables. Realizando esta operacin sobre la frmula del paso 2, se obtiene: x: y: z: [ romano(x) conoce(x, Marco) ] [ odia(x, Csar) ( odia(y, z) cree_loco(x, y) ) ] Esta frmula es lo que se conoce como frmula normal prenex, consiste en un prefijo de cuantificadores seguido por una matriz que esta libre de cuantificadores.

Paso 5.
35

Eliminar los Cuantificadores Existenciales.- En una frmula donde se incluye una variable cuantificada existencialmente se afirma que existe un valor que puede sustituir a la variable, y que hace verdadera la frmula. Es posible eliminar el cuantificador sustituyendo la variable por una referencia a una funcin que produzca el valor deseado. Puesto que no se conoce necesariamente la forma de producir ese valor, se debe crear un nuevo nombre de funcin para cada sustitucin. No se hace ninguna afirmacin sobre esas funciones excepto de que deben existir. y: Alcalde (y) Puede transformarse en la frmula: Alcalde (S1) Donde, S1 es una funcin sin argumentos que produce de algn modo un valor que satisface el predicado Alcalde. Si surgen cuantificadores existenciales dentro del mbito de cuantificadores universales, los valores que satisfagan el predicado pueden depender de los valores de las variables cuantificadas universalmente, Por ejemplo en la frmula. x: y: padre_de(y, x)

El valor de y que satisface padre_de depende del valor concreto de x. Por lo tanto, se deben generar funciones con el mismo nmero de argumentos que el nmero de cuantificadores universales que afecten la expresin que s esta tratando. En el ejemplo anterior se transformar en: x: padre_de(S2(x), x) Estas funciones que generamos se llaman funciones de skolem. Aquellas que no tienen argumentos se llaman a veces constantes de skolem. Paso 6. Eliminar el Prefijo.- En este punto, todas las variables que quedan estn cuantificadas universalmente, por lo que el prefijo puede ser simplemente ignorado, y cualquier procedimiento de demostracin que usemos puede suponer simplemente que cualquier variable con la que se encuentre, est cuantificada universalmente. Ahora la frmula producida en el paso 4 aparece como: [ romano(x) conoce(x, Marco)] [ odia(x, Csar) ( odia(y, z) cree_loco(x, y)) ] Paso 7. Convertir la Matriz en una Conjuncin de Disyunciones.- Como en este ejemplo no aparece ninguna correctiva Y, basta con utilizar la propiedad asociativa de la conectiva lgica O, es decir, la operacin: [ a (b c) = (a b) c ] y quitar simplemente los parntesis, para obtener: romano(x) conoce(x, Marco) odia(x, Csar) odia(y, z) cree_loco(x, y)
36

Sin embargo, con frecuencia es tambin necesario utilizar la propiedad distributiva [ (a b) c = (a c) (b c) ]. Por ejemplo, la frmula: (invierno usar_botas) (verano usar_sandalias) se convierte despus de una aplicacin de la regla en: [ invierno (verano usar_sandalias)] [ usar_botas (verano usar_sandalias)] Despus de una segunda aplicacin, que es necesaria, por que an quedan conjunciones unidas por la conectiva O, en. (invierno verano) (invierno usar_sandalias) (usar_botas verano) (usar_botas usar_sandalias). Paso 8. Crear una clusula por cada conjuncin. Para que una fbf. Sea cierta, todas las clusulas que se han generado a partir de ella deben ser ciertas. Cuando se trabaja con varias fbf, es posible combinar el conjunto de clusulas generadas por cada una de ellas para representar los mismos hechos que representaban las frmulas originales. Paso 9. Normalizar las variables que aparecen en el conjunto de clusulas generadas en el paso 8. Con esto se pretende que no haya dos clusulas que hagan referencia a la misma variable, para lo cual es necesario renombrar a las variables adecuadamente. Esta transformacin se apoya en el hecho: (x: P(x) Q(x) ) = x: P(x) x: Q(x) Por lo que cada clusula es una conjuncin separada y todas las variables estn cuantificadas universalmente, no es necesario que haya ninguna relacin entre las variables de dos clusulas diferentes, ni aunque se hayan generado a partir de la misma fbf. Este paso de normalizacin es importante porque durante el proceso de resolucin a veces ser necesario dar valor a una variable cuantificada universalmente ( sustituirla por un valor concreto). Pero, en general queremos mantener las clusulas en su forma ms general durante tanto tiempo como sea posible.

Resolucin
37

El procedimiento de resolucin es uno de los ms utilizados, para una representacin deductiva, se basa en que utiliza una prueba por contradiccin o refutacin. Es decir, para probar una proposicin (demostrar su validez), se intenta demostrar que su negacin lleva a una contradiccin con las proposiciones conocidas (es decir no se puede satisfacer). Clusulas. Una clusula se define como una fbf. consistente en una disyuncin de literales, el proceso de resolucin, cuando es aplicable, se puede aplicar a un par de clusulas padres, para producir una clusula derivada. Bases de la Resolucin. El procedimiento de resolucin es un proceso interactivo simple en el cual, en cada paso, s comparan (resuelven) dos clusulas llamadas clusulas padres, produciendo una nueva clusula que se ha inferido de ellas. Esta nueva clusula representa la forma en que las dos clusulas padres interaccionan entre s. Supongamos las siguientes clusula: invierno verano invierno fro Esto significa que ambas clusulas deben ser ciertas (es decir, aunque las clusulas parecen independientes, en realidad estn agrupadas). Ahora vemos que siempre deber ser cierta una de las ellas, invierno o invierno. S invierno es cierto, entonces fro debe ser cierto para garantizar la verdad de la segunda clusula. S invierno es verdad, entonces verano debe ser cierto para garantizar la verdad de la primera clusula. A partir de estas dos clusulas se puede deducir: verano fro Esta es la deduccin que har el procedimiento de resolucin. La resolucin opera tomando dos clusulas tales que cada una contenga el mismo literal ( en el ejemplo: invierno). El literal debe estar en forma positiva en una clusula y en forma negativa en la otra. El resolvente se obtiene combinando todos los literales de las dos clusulas padres excepto aquellos que se cancelan. S la clusula producida es la clusula vaca, es que se ha encontrado una contradiccin. Por ejemplo las dos clusulas: invierno invierno producirn la clusula vaca. Si existe una contradiccin, se encontrar en algn momento. Naturalmente, si no existe ninguna contradiccin, es posible que el procedimiento nunca termine, aunque como veremos, a menudo existen formas de detectar que no existe contradiccin. RESOLUCIN EN LGICA PROPOSICIONAL. En lgica proposicional, el procedimiento para producir una demostracin por resolucin de la proposicin P respecto a un conjunto de axiomas F , se emplea el siguiente algoritmo: 1. 2. Convertir todas las proposiciones de F a forma clausal. Negar P y convertir el resultado a forma clausal. Aadir la clusula resultante al conjunto de clusulas obtenidas en el paso 1.
38

3.

Hasta que se encuentre una contradiccin o no se pueda seguir avanzando, repetir: a) Seleccionar dos clusulas. Llamarlas las clusulas padres. b) Resolverlas juntas. La clusula resultante, , llamada resolvente, ser la disyuncin de todos los literales de las clusulas padres con la siguiente excepcin: si existen pares de literales L y L de forma que una de las clusulas padre contenga a L y la otra contenga L, entonces se eliminarn tanto L como L del resolvente. c) S el resolvente es la clusula vaca, es que se ha encontrado una contradiccin. Si no lo es, aadirla al conjunto de clusulas disponibles.

Ejemplo. Supongamos que nos dan los siguientes axiomas: Axiomas de Partida P (PQ) R (ST) Q T UNIFICACIN. El encontrar sustituciones de trminos que hagan idnticas ciertas expresiones, es un proceso importante para la IA, lo cual se denomina Unificacin. Los trminos de la expresin pueden ser: Smbolos de variables Smbolos de Constantes Expresiones funcionales (Smbolos de funciones y trminos). Una particularizacin por sustitucin de una expresin se obtiene sustituyendo en ella trminos en lugar de variables. S = {T1/V1, T2/V2, T3/V3, ......., Tn / Vn } El par Ti / Vi significa que el trmino Ti sustituye a la variable Vi en todos los sitios donde aparece. Se debe tener en cuenta que una sustitucin debe ser tal que todas las ocurrencias de una variable sean sustituidas por el mismo trmino. Adems ninguna variable puede ser reemplazada por un trmino que contenga esa misma variable. La sustitucin de la expresin: P[ X, f (y) , B] ser: S1 = [ z/x, w/y ] S2 = [ A/y ] S3 = [ g (z) / x, A/y ] S4 = [ C/x, A/y ] Convertidos a forma Clausal P P Q R S Q T Q T (1) (2) (3) (4) (5)

As, tenemos cuatro particularidades de P [x, f(y), B ]


39

P [ z, f (w), B ] P [ x, f (A), B ] P [ g (z), f (A), B ] P [ C, f (A), B ] El primero de ellos se llama una variable alfabtica del literal original, ya que simplemente se han introducido smbolos de variables diferentes, mientras que la ltima se dice que es una particularizacin bsica, ya que ninguno de los trminos del literal contiene variables. Para representar una particularizacin por sustitucin de una expresin E1, usando una sustitucin S1, escribiremos ES. P [ z, f (w), B ] = P [ x, f (y), B ] S1 La composicin de dos sustituciones S1 y S2 se representa con S1S2, que es la sustitucin obtenida aplicando S2 a los trminos de S1 y aadindole despus los pares de S2 que tengan variables que no aparezcan en S1. As. {g(x, y)/z} {A/x, B/y, C/w, D/z} = {g(A, B)/z, A/x, B/y, C/w} Se puede apreciar que el aplicar S1 y S2 sucesivamente a una expresin es lo mismo que aplicarle S1S2; esto es, (LS1)S2 = L(S1S2) Por lo que tambin puede probarse que la composicin de sustituciones es asociativa: (S1S2)S3 = S1(S2S3) Las sustituciones no son, en general conmutativas, esto es, generalmente S1S2 no es lo mismo que S2S1. Si aplicamos una sustitucin S a cada uno de los miembros de un conjunto {Ei} de expresiones, el conjunto de particularizaciones por sustitucin lo designaremos con {Ei}S. Por lo que un conjunto {Ei} de expresiones es unificable, si existe una sustitucin S tal que: E1S = E2S = E3S = ....... En este caso, se dice que S es un unificador de {Ei}, ya que su aplicacin convierte el conjunto {Ei} en otro con un solo elemento. Por ejemplo. S = { A/x, B/y } aplicado a: { P[x, f(y), B], P[x, f (B), B ] } nos da { P [A, f (B), B] }. En la lgica proposicional es fcil determinar que dos literales no pueden ser ciertos al mismo tiempo. Basta con buscar L y L. En lgica de predicados el proceso de correspondencia es ms complicado, puesto que se deben considerar los argumentos de los predicados. Por ejemplo, hombre (Juan) y hombre (Juan) es una contradiccin, mientras que hombre(Juan) y hombre(Spot) no lo es. As para detectar las contradicciones, se necesita un procedimiento de emparejamiento que compare dos literales y descubra si existe un conjunto de sustituciones que los haga idnticos. Existe un procedimiento recursivo directo, denominado algoritmo de unificacin, que realiza exactamente esto. La idea bsica de la unificacin es muy sencilla. Para unificar
40

dos literales, en primer lugar se comprueba si los predicados coinciden, seguimos adelante, en caso contrario, no hay forma de unificarlos, sean cuales sean sus argumentos. Por ejemplo. los literales: intenta_asesinar(Marco, Csar) odia(Marco, Csar) No son unificables. S los predicados concuerdan, a continuacin se van comprobando los argumentos de dos en dos. S el primero concuerda, podemos continuar con el segundo, y as sucesivamente. Para comprobar cada par de argumentos, basta con llamar recursivamente al procedimiento de unificacin. Las reglas de emparejamiento son sencillas: Aquellos predicados o constantes que sean diferentes no se pueden emparejar. Aquellos que sean idnticos pueden emparejarse. Una variable se puede emparejar con otra variable, con cualquier constante o con un predicado, con la restriccin de que el predicado no debe contener ninguna instancia de la variable con la que s esta emparejando.

La nica complicacin en este procedimiento es que se debe encontrar una nica sustitucin consistente para todo el literal, y no sustituciones separadas para cada parte del mismo. Para hacerlo, se debe tomar cada sustitucin que encontremos y aplicarla al resto de literales antes de continuar intentando unificarlos. Por ejemplo supongamos que queremos unificar las expresiones: P(x, y) P(y, z) Las dos ocurrencias de P se emparejan sin problema. A continuacin comparamos: X e Y luego decidimos que si sustituimos Y por X, se pueden emparejar, Escribiremos esta sustitucin como. Y/X Naturalmente, se podra haber sustituido X por Y, puesto que ambos son nombres de variables sin ms significado. El algoritmo simplemente elegir una de las dos sustituciones. Pero ahora si continuamos y emparejamos y comparamos X con Z, obtendremos la sustitucin de Z/X. Pero no es posible sustituir, a la vez, Y y Z por X, por lo que la sustitucin no es consistente. Una vez encontrada la primera sustitucin Y/X es necesario realizar dicha sustitucin en el resto de las literales, para obtener: P(X, Y) P(Y, Z) A continuacin intentaremos unificar los argumentos Y y Z, lo que logramos con la sustitucin Z/Y. Con esto se completa el proceso y la sustitucin resultante es la composicin de las dos sustituciones encontradas. La composicin se escribe como: (Z/Y)(Y/X) Siguiendo la notacin estndar para la composicin de funciones. En general, la sustitucin (a1/a2, a3/a4, . . .) (b1/b2, b3/b4, ...) significa aplicar todas las sustituciones de
41

la lista situada ms a la derecha, tomar a continuacin el resultado y aplicarle las de la siguiente lista, y as sucesivamente hasta haber aplicado todas las sustituciones. El objetivo del procedimiento de sustitucin es descubrir, al menos, una sustitucin que permita el emparejamiento de dos literales. Normalmente, si existe una de dichas sustituciones, existirn muchas ms. Por ejemplo los literales: odia(x, y) odia(Marco, Csar) Pueden unificarse con cualquiera de las siguientes sustituciones: (Marco/x, z/y) (Marco, y/z) (Marco/x, Csar/y, Csar/z) (Marco/x, Polonio/y, Polonio/z) Las dos primeras son equivalentes, excepto por la diferencia lxica. Pero las dos segundas, aunque producen un emparejamiento, producen tambin una sustitucin que es ms restrictiva de lo que sera estrictamente necesario para el emparejamiento. Puesto que la sustitucin final producida por el proceso de unificacin ser usada por el procedimiento de resolucin, sera conveniente generar el unificador ms general posible. As podemos describir un procedimiento llamado unificar (L1,L2), que devuelve una lista que representa la composicin de las sustituciones que se han realizado en el proceso de emparejamiento. La lista vaca, NUL, indica que se ha encontrado un emparejamiento sin ninguna sustitucin. El valor FALLO indica que el procedimiento de unificacin ha concluido sin xito. Algoritmo: Unificar (L1, L2) 1. Si L1 o L2 es una variable o una constante entonces: a) b) c) d) Si L1 y L2 son idnticos devolver NUL. Si no, si L1 es una variable, entonces si L1 aparece en L2, devolver FALLO, si no devolver {(L2/L1}. S no, si L2 es una variable, entonces si L2 aparecen en L1, devolver FALLO, si no devolver { (L1/L2)}. S no devolver FALLO.

2. Si los predicados iniciales de L1 y L2 son diferentes, devolver FALLO. 3. S el nmero de argumentos de L1 y L2 es diferente, devolver FALLO. 4. Actualizar SUST a NUL. ( al final de este procedimiento SUST contendr todas las sustituciones utilizadas para unificar L1 y L2). 5. Para i 1 hasta el nmero de argumentos de L1: a) Llamar unificar con el isimo argumento de L1 y el isimo argumento de L2, almacena el resultado en S. b) S S = FALLO entonces devolver FALLO.
42

c)

S S es distinto de NUL, entonces: i. Aplicar S al resto de L1 y L2. ii. SUST := AADIR(S, SUST).

6. Devolver SUST. La nica parte de este algoritmo que an no se ha discutido es la comprobacin, en los pasos 1(b) y 1(c), de que no se unifica una expresin que contiene una variable dada con esa misma variable. Supongamos que intentsemos unificar las expresiones: f ( x, y) f (g(x), g(x)) S se aceptase la sustitucin de g(x) por x, entonces se debera realizar esa misma sustitucin en el resto de las expresiones. Pero esto conducira a una recursin infinita, puesto que nunca ser posible eliminar x. El proceso de unificacin tiene unas profundas races matemticas y es de utilidad en muchos programas de IA., como por ejemplo en los demostradores de teoremas y en los analizadores del lenguaje natural. Es por ello que se han desarrollado algoritmos y estructuras de datos que optimizan su eficiencia. RESOLUCIN EN LGICA DE PREDICADOS Una forma sencilla para determinar si dos literales son contradictorios, es determinar si uno de ellos puede unificarse con la negacin del otro. As por ejemplo: hombre(x) y hombre(x) son contradictorios si hombre(x) y hombre(spot) son unificables. Esto corresponde a la idea intuitiva que dice que hombre(x) no es cierto para cualquier valor de x si se conoce la existencia de algn x, (en el ejemplo: Spot, para el cual es falso hombre(x) ). As, para usar la resolucin sobre expresiones de la lgica de predicados, se utiliza el algoritmo de unificacin para localizar pares de literales que se cancelen mutuamente y obtener la generacin de la clusula resolvente. Algoritmo de resolucin de Predicados 1. 2. 3. Convertir todas las sentencias de F a forma clausal Negar P y convertir el resultado a forma clausal. Aadirlo al conjunto de clusulas obtenidas en 1. Hasta que se encuentra una contradiccin o no pueda realizarse ningn proceso o se haya realizado una cantidad de esfuerzo predeterminada, repetir: a) Seleccionar dos clsusulas. Llamarlas clusulas padres. b) Resolverlas. El resolvente ser la disyuncin de todos los literales de ambas clusulas padres, una vez realizadas las sustituciones apropiadas, con la siguiente excepcin: si existe un par de literales T1 y T2 tales que una de las clusulas padres contenga T1 y la otra contenga T2 y si
43

c)

T1 y T2 son unificables, entonces ni T1 y la otra contenga T2 y si T1 y T2 son unificables, entonces ni T1 ni T2 deben aparecer en el resolvente. Llamaremos T1 y T2 literales complementarios. A continuacin utilizar la sustitucin producida por la unificacin para crear el resolvente. Si existe ms de una pareja de literales complementarios, en el resolvente slo se eliminar uno de ellos. Si el resolvente es la clusula vaca, se ha encontrado una contradiccin. si no lo es, aadirla al conjunto de clusulas sobre las que se est aplicando el procedimiento.

Existen estrategias de seleccin que permiten acelerar el proceso considerablemente: Resolver solamente pares de clusulas que contengan literales complementarios Eliminar ciertas clusulas tan pronto como se generan, de forma que no puedan participar en resoluciones posteriores. Debern eliminarse dos clases de clusulas: la tautologa (que nunca pueden ser satisfechas), y las clsulas que estn dentro de otras clusulas(fciles de satisfacer). Siempre que sea posible, resolver, con una de las clusulas que forma parte de la sentencia que estamos intentando refutar, o con una clusula generada mediante una resolucin con dicha clusula. Esta es la denominada estrategia de conjunto de apoyo, y corresponde a la idea intuitiva de que la contradiccin que estamos buscando debe involucrar la sentencia que estamos intentando demostrar. Cualquier otra contradiccin slo nos dira que eran inconsistentes las sentencias que previamente creamos verdaderas. Siempre que sea posible, resolver con clusulas que contengan un nico literal. Tales soluciones generan nuevas clusulas con menos literales que las ms grandes de sus clusulas padres, por lo que probablemente estn ms cerca de la meta de un resolvente con cero trminos. Este mtodo se denomina estrategia de unidad preferente. Ejemplo: Axiomas en forma clausal: hombre(Marco) pompeyano(Marco) pompeyano(x1) v romano(x1) gobernante(Csar) romano(x2 ) v leal(x 2) v odia(x 2, Csar) leal(x3, f1(x 3)) hombre(x4 ) v gobernante(y1 ) v intenta_asesinar(x4, y 1 ) v leal(x4 , y 1) 8. intenta_asesinar(Marco, Csar) Demostrar: odia(Marco, Csar) odia(Marco, Csar) 3 romano(Marco) v leal(Marco, Csar)
44

1. 2. 3. 4. 5. 6. 7.

5 Marco/x

Marco/x pompeyano(Marco) v leal(Marco, Csar) 7 leal(Marco, Csar) Marco/x4 , Csar/y1 1 hombre(Marco) gobernante(Csar) intenta_asesinar(Marco, Csar) 2

gobernante(Csar) intenta_asesinar(Marco, Csar) intenta_asesinar(Marco, Csar)

4 8

MOTOR DE INFERENCIAS. Los mecanismos de inferencia y de control incluidos en el motor de inferencias de un SE. gobiernan el uso que hace el sistema de los hechos y las reglas que estn contenidas en su base de conocimientos. La parte de control del motor de inferencia ha de resolver dos problemas principales: 1.2.Debe existir una manera de decidir por donde empezar. las reglas y los hechos residen en una base de conocimiento esttico. Tiene que haber una forma de iniciar el proceso de razonamiento. El motor de inferencias debe resolver conflictos que aparecen cuando surgen lneas de razonamiento alternativas. podra ocurrir, por ejemplo, que el sistema llegase a una situacin en que estuvieran dispuestas para varias reglas, el motor de inferencias tiene que elegir cual de entre ellas aplica primero.

El motor de inferencias en el corazn del SE.; es el que alimentado por la BC. construye dinmicamente el razonamiento, decidiendo que reglas se activan y en que orden. Los mecanismos de razonamiento que utilizan reglas de produccin; son los de lgica formal: Modus Ponens Modus Tollens Esto es respecto a las leyes:
45

"Modus Ponendo Ponens" "Afirmando el antecedente se afirma el consecuente" A (A B) B "Modus Tollendo Tollens" "Negando el consecuente se niega el antecedente". (B (A B)) -A Sin embargo cual fuere el modo de razonamiento utilizado, el ciclo de base de un motor de inferencia comprende 4 fases: Fase de Seleccin De un subconjunto de la base de hechos y de la base de reglas, la eleccin es una expresin de una estrategia que hace que el motor de inferencias privilegie un grupo de reglas y no otro. Fase de Filtrado Durante esta etapa el motor de inferencia compara la parte premisa de las reglas seleccionadas con la base de hechos para determinar el conjunto de reglas aplicables. Fase de Resolucin de Conflictos El resultado de esta fase es la eleccin de la regla que efectivamente se va aplicar. De la calidad de esta eleccin dependen las realizaciones del motor de inferencias que va a deducir rpidamente la solucin. Fase de Ejecucin Esta fase se ocupa de aplicar la regla elegida precedentemente y consiste generalmente en aadir uno o varios hechos a la base de hechos, se puede lograr que la aplicacin de esta regla haga llamadas a procedimientos externos, modifique la base de hechos, y hacer consultas al usuario. De este ciclo depende el modo de razonamiento utilizado. se pueden utilizar 3 modos: Encadenamiento hacia delante Dirigido por los datos. Encadenamiento hacia atrs Dirigido por objetivos. Encadenamiento mixto Combinacin de ambos.

Sistemas de Deduccin Basados en Reglas. El uso de reglas para codificar conocimiento, representa un campo de estudio importante, en el estudio de la evolucin de la IA. Con frecuencia. la manera en que un experto en cierto campo expresa alguna parte de su conocimiento, lleva implcita una informacin importante sobre como puede usarse ese conocimiento en forma ptima. Ejemplo: Si x e y son ambos mayores que cero, tambin lo es, el producto de x por y.
46

Una trascripcin inmediata de esta sentencia al clculo de predicados es: (x:) (y:) { [ G(x,0) G(y, 0) ] G(por(x, y),0)} No obstante tambin podramos usar una formula equivalente: (x:) (y:) { [ G(x, 0) G(por(x, y), 0)] G(y, 0)} El contenido lgico de la sentencia, es independiente de las muchas formas en que puede representarse mediante el clculo de predicados. Pero la manera en que la sentencia se expresa mediante palabras, conlleva a menudo informacin de control heurstica. En el ejemplo la, sentencia parece indicar que nosotros debemos usar el hecho de que x e y sean positivos para probar que el producto de ambos tambin lo es. Gran parte del conocimiento utilizado por los sistemas de IA. Se pueden expresar directamente mediante expresiones que son implicaciones generales. 1. Todos los vertebrados son animales. (x) [Vertebrado(x) Animal(x)] 2. Todas las personas del departamento de ventas mayores de 30 aos son casados. (x)(y) {[ trabaja_en(dep_ventas, x) 30)] casado(x)} 3. edad(x, y) mayor(y,

Hay un cubo en la parte superior de cada cilindro rojo. (x) { [ Cilindro(x) rojo(x) (y) [cubo(y) sobre(y, x) ]}

Si nosotros convirtisemos en clusulas estas expresiones, podramos perder la informacin de control, contenida en las implicaciones dadas. Los sistemas de deduccin basados en reglas no convierten las fbf en clusulas; las utilizan en una forma parecida a la dada originalmente. Las fbf que representan conocimientos afirmativos sobre el problema, se separan en dos categoras: REGLAS Y HECHOS Las Reglas Consisten en las afirmaciones dadas en formas de implicacin. Normalmente estas expresan conocimiento general sobre un rea determinada y se usan como reglas de produccin. Los Hechos Son las afirmaciones que no vienen expresadas como implicaciones. Normalmente
47

representan conocimientos especficos sobre casos particulares. Encadenamiento hacia adelante (forward Chaining) Una de las distintas estrategias de control que regulan el orden en que se ejecutan las inferencias, es un sistema basado en reglas, con el encadenamiento hacia adelante, que "empieza afirmando las conclusiones de todas las reglas cuyas clusulas si son verdaderas", y luego comprueba, que nuevas reglas pueden aplicarse dados los nuevos hechos establecidos, el proceso continua hasta que se alcanza un objetivo o se agotan las posibilidades. El razonamiento con un encadenamiento hacia adelante, puede describirse como un ciclo de "reconocimiento-accin", donde primero se reconocen las reglas que pueden aplicarse, dado el contenido de la memoria de trabajo, se seleccionan una de esas reglas y entonces se introduce en la memoria de trabajo la accin o conclusin, luego el sistema, pasa al siguiente ciclo y vuelve a comprobar que reglas son aplicables. Encadenamiento hacia atrs (backward chaining) Es una de las estrategias de control para regular el orden en que se realizan las inferencias. en un sistema basado en reglas, el encadenamiento hacia atrs lo "Inicia una regla objetivo", el sistema trata de determinar si la regla o objetivo es correcto, para ello, retrocede a las clusulas de la parte Si de la regla e intenta determinar si son correctas, esto, a su vez, conduce al sistema a considerar otras reglas que podran confirmar las clusulas Si; De esta manera el sistema va retrocediendo a lo largo de sus reglas. Al final, la secuencia termina, cuando el sistema tiene que hacer una pregunta o se encuentra un resultado previamente almacenado en memoria. Encadenamiento Mixto. Existen determinados aspectos de un problema que se manejan ms fcilmente utilizando un encadenamiento mixto. Considrese por ejemplo que en un programa de diagnostico mdicos basados en el encadenamiento hacia adelante. Este puede aceptar, aproximadamente, una veintena de hechos acerca de la condicin del paciente, entonces trabajara hacia adelante con dichos hechos para intentar deducir la naturaleza y causa de la enfermedad. Ahora supngase que en un momento dado el lado izquierdo de una de las reglas est casi satisfecho, por ejemplo si nueve de las diez precondiciones que tuvieran fuesen ya conocidas, en este caso resultara mejor aplicar un razonamiento hacia atrs para satisfacer la dcima precondicin de un modo directo, en lugar de esperar a que el encadenamiento hacia adelante sustituya al hecho por accidente. Tambin puede ocurrir que la dcima condicin requiera ms pruebas mdicas. En este caso el encadenamiento hacia atrs se puede utilizar para interrogar al usuario. Ello tambin depender del tipo de regla que se estn utilizando y si estas permiten reglas reversibles. Conocimiento Procedimental y Conocimiento Declarativo. Una representacin declarativa, es aquella en la que el conocimiento est especificado, pero en el cual, la manera en que dicho conocimiento debe ser usado no viene dado. Para utilizar una representacin de este tipo se debe adicionar un programa que
48

especifique lo que debe hacerse con el conocimiento y de qu modo debe hacerse. Una representacin procedimental, es aquella en la que la informacin de control necesaria para utilizar el conocimiento se encuentra en el propio conocimiento y se necesita un interprete que siga las instrucciones dadas por el conocimiento. Por ejemplo considere la siguiente BC. hombre(Marco Antonio) hombre(Csar) persona(Cleopatra) x: hombre(x) persona(x) En l supuesto que se intente la respuesta a: y: persona(y) Si se desea ligar y con un valor particular para el cual persona es verdadero. la BC. justifica alguna de las siguientes respuestas: y = Marco Antonio y = Csar y =- Cleopatra Ya que existe ms de un valor que satisface el predicado, y que slo se necesita un valor, la respuesta a la pregunta depender del orden en que se examinen las diferentes aserciones durante la bsqueda de una respuesta. Si consideramos a las aserciones como declarativas, stas no dirn, por s mismas, nada acerca de cmo van a ser examinadas. S por el contrario se les considera como procedimentales, s lo harn. En el ejemplo, se puede especificar que las aserciones sern examinadas en el orden en que aparecen y que la bsqueda se realizar primero en profundidad, lo cual quiere decir que si se establece un nuevo subobjetivo, se convertir en el objetivo prioritario inmediato, mientras que otros caminos sern examinados si el nuevo objetivo falla. Al hacer esto, las aserciones que se dieron en el ejemplo darn como respuesta: y = Cleopatra Si queremos determinar las diferencia entre las representaciones declarativas y procedimentales, considrense las siguientes aserciones: hombre(Marco Antonio) hombre(Csar) x: hombre(x) persona(x) persona(x) Si observamos desde un punto de vista declarativo, forman la misma base de conocimientos que s tenia en el ejemplo anterior.
49

Conocimiento Procedimental y Conocimiento Declarativo. El sistema da las mismas respuestas y ninguna se selecciona explcitamente. Pero si consideramos procedimentalmente, y utilizando el modelo de control que se utilizo para obtener Cleopatra como respuesta, podremos observar que est es una BC. diferente, ya que ahora la respuesta que se obtiene a la pregunta es: Marco Antonio. Esto ocurre porque la primera afirmacin que se alcanza con el objetivo persona, es la regla inferencia: x: hombre(x) persona(x) Esta regla establece un subobjetivo que consiste en encontrar un hombre. De nuevo, las afirmaciones son examinadas desde el principio, pero ahora Marco Antonio, satisface el subobjetivo, y por tanto tambin el objetivo principal. As que Marco Antonio ser la respuesta emitida.

Universidad de San Martn de Porres Facultad de Ingeniera y Arquitectura

50

ASIGNATURA

INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

Profesor: Ruben Daro Cuadros Ricra

UNIDAD III Estructuras de Bsqueda y Mtodos de Razonamiento


Semana: 7a - 8a - 9a - 10a

LIMA PER 2002

ARBOLES DE BUSQUEDA. Un rbol de bsqueda es un mtodo grfico para representar un espacio de bsquedas. Para visualizar los elementos del conocimiento, cada nodo representa un hecho, una regla u otro elemento de la BC.; los nodos se conectan mediante arcos para mostrar las relaciones. El estado inicial del se denomina nodo raz. A partir de el, se baja por las ramas hacia los descendientes, denominados hijos cada nodo adicional tiene uno o ms hijos. la estructura bsica de un rbol es jerrquica. Nodo.- Un punto discreto y posible objetivo. Nodo terminal.- Nodo en que finaliza un camino. Espacio bsqueda.- Conjunto de todos los nodos.
51

Objetivo.- El nodo que es objeto de bsqueda Heurstica.- Informacin descriptiva de la verosimilitud de que un nodo concreto, sea una eleccin mejor para intentar la prxima vez, en vez de otro nodo. Camino solucin.- Un grafo dirigido de los nodos visitados que conducen a la solucin.

Ej. Grafo del camino solucin para encontrar las llaves perdidas ARBOLES DE DECISIN. Al igual que un rbol de bsqueda, un rbol de decisiones tiene un nodo raz, nodos intermedios, arcos de conexin y objetivos. cada nodo representa un punto de decisin. Se puede considerar cada nodo, como una pregunta con una o ms respuestas, una de las formas ms simples del rbol de decisin tiene dos caminos para cada nodo: si y no, verdadero y falso. Ejemplo : El problema consiste en cruzar un pequeo laberinto donde se desconoce el camino de salida, por lo que se deber buscar la salida. Para precisar el problema y el procedimiento de bsqueda representamos mediante coordenadas las posiciones posibles de la persona en el laberinto, y a travs de un grafo. En cada momento el estado del problema vendr definido por la posicin de la persona que cruza el laberinto, partiendo del punto (1,1) estado inicial, debiendo alcanzar el estado (4,4) estado final. Para lo cual pasara por una serie de estados intermedios, con puntos de cruce y puntos muertos. Los nodos representan las posiciones o estados posibles del problema, los arcos los desplazamientos o transiciones entre estados. El valor o costo de los desplazamientos viene indicado por un numero en la mitad del arco. l grafo representa lo que se denomina. espacio de bsqueda. En general nos interesa buscar el camino de mnimo costo o camino ptimo valor = 8 la representacin de las etapas de un problema como un espacio de estados, es la base de la mayora de los mtodos de resolucin de problemas en las que se aplican tcnicas de IA. EXPLORACIN DE GRAFOS Y/O. Un tipo de estructura, el grafo (o rbol) Y/O, es til para la representacin de la solucin en problemas que pueden resolverse descomponindolos en un conjunto de problemas ms pequeos, cada uno de los cuales debe, a su vez, resolverse. Generalmente nos interesamos en grafos Y/O ms que en el caso particular de rboles, ello debido a que diferentes secuencias de reglas pueden generar bases de datos idnticas. Por ejemplo, un nodo podra resultar etiquetado con una base de datos componente que se obtuviese tanto de la descomposicin de una regla compuesta como de la aplicacin de alguna regla a otra. En este caso, tendra que considerarse como un nodo O respecto a un antecesor y como un nodo Y respecto al otro.
52

Definiremos a los grafos Y/O, como la representacin del camino solucin desde el nodo inicial (llamado nodo raz), hacia un conjunto de nodos sucesores que representen los estados solucin. Los arcos que conectan un nodo antecesor con un conjunto de nodos sucesores, son tambin llamados conectores. En el siguiente ejemplo mostramos un grafo Y/O en el que el nodo n0 tiene 1-conector dirigido hacia el sucesor n1 y un 2-conector dirigido al conjunto de sucesores {n4, n5}. En el ejemplo se han representado los K-conectores, cuando k > 1, mediante lneas curvas que unen los arcos que van desde el antecesor hasta los elementos del conjunto de sucesores. (usando la terminologa anterior podramos haber considerado los nodos n4 y n5 como un conjunto de nodos Y, y haber considerado al nodo n1 como un nodo O en relacin con su antecesor comn n0; pero debe observarse que el nodo n8, pertenece a un conjunto de nodos Y en relacin a su antecesor n5, pero sera un nodo O en relacin con su antecesor n4). Tanto en los rboles como en los grafos, llamaremos nodo raz a uno que no tiene antecesor, nodo hoja a uno que no posea sucesores. Exploracin de Grafos Y/O. En los siguientes ejemplos, se asume por simplicidad, que cada operacin tiene un costo uniforme, de forma que cada arco con un solo sucesor tiene un coste igual a 1, y cada arco Y con mltiples sucesores tambin tiene un coste 1 por cada uno de sus componentes.

53

E x p lo ra ci n d e G ra fo s Y /O .

no

n1 n4 n2 n3 n5 n6 n8

n7

9
B B (5) C (3) D (4) E (17) F G (9) H I (27) J C D

(5)

(10) (3) (4) (15) (10)

Ejemplos de encadenamiento hacia adelante con grafos Y/O. Ilustraremos con un ejemplo simple, como opera el encadenamiento hacia adelante. Supongamos que tenemos los siguientes hechos y reglas: Fido ladra y muerde o Fido no es un perro perro(fido) [ ladra(fido) muerde(fido)]

54

Todos los terrier son perros: R1: perro(x) terrier(x) */ usamos la forma contrapositiva de la implicacin. Cualquiera que ladra es ruidoso R2: ladra(y) ruidoso(y)

Supongamos ahora que queremos probar que existe alguien que o no es un terrier o es ruidoso. La fbf de objetivo que representa la sentencia que ha de ser probada ser: terrier(z) ruidoso(z) Ejemplos de encadenamiento hacia atrs. Una propiedad importante de la lgica es la dualidad entre afirmaciones y objetivos. En los sistemas de refutacin por resolucin, la fbf de objetivo era negada, puesta en forma de clusulas y stas aadidas a las que resultaban de las afirmaciones. La dualidad entre afirmaciones y objetivos permita que el objetivo fuese tratado como si fuese una afirmacin. En el siguiente ejemplo: Directorio(D-C, John_Jones) Jhon jones es el director del Departamento de Compras. Trabaja_en(D-C, Joe_Smith) Joe Smith trabaja en el Departamento de Compras. Trabaja_en(D-C, Sally_jones) Trabaja_en(D-C, Pete_Swanson) Director(D-V, Harry_Turner) Harry Turner es el Director del Departamento de Ventas. Trabaja_en(D-V, Mary_jones) Trabaja_en(D-V, Bill_white) Casados(John_jones, Mary_jones) Con objeto de proporcionar cierta informacin de sentido comn sobre conceptos de personal, podramos tener las siguientes reglas: R1: Director(x, y) Trabaja_en(x, y) R2: [Trabaja_en(x, y) Director(x, z)] Jefe_de(y, z) */ una frmula ms precisa establecera que una persona no puede ser jefe de s mismo /* R3: [Trabaja_en(x, y) Trabaja_en(x, z)] Casado(z, y) */ la poltica de la ca. No permite a las parejas de casados trabajar en el mismo departamento /*

55

Ejemplos de encadenamiento hacia atrs. R4: Casados(y, z) Casados(z, y) */ Una frmula ms precisa establecera que las personas no pueden estar casadas consigo mismas /* R5: [Casados(x, y) Trabaja_en(D-C, x)] Asegurado_en(x, Eagle-CO)

*/ Todos los empleados casados del Departamento de compras estn asegurados en la Eagle Corporation/* Con estos hechos y reglas, un sistema de produccin hacia atrs puede responder a diferentes cuestiones. Para este ejemplo, supondremos que la estrategia de control gua la generacin del grafo Y/O mediante una exploracin en profundidad en busca de un grafo solucin consistente. MTODOS DE BSQUEDA. La solucin de un problema representado por el diagrama de rbol se alcanza cuando el camino optimo que une la raz y el destino o meta; para hallar dicho camino se emplean diferentes estrategias de bsqueda, entre las que ms destacan tenemos: Bsqueda en profundidad Bsqueda en anchura Bsqueda exhaustiva Bsqueda heurstica. Una buena representacin, acompaado de un mtodo de bsqueda eficaz, originan una rpida solucin. A la hora de resolver un problema se representa la necesidad de elegir entre varias alternativas, las cuales, a su vez, pueden representar mas alternativas. buscar el camino optimo entre todas las alternativas, en el menor tiempo posible, da origen a los mtodos de bsqueda . Bsqueda en profundidad (depth-fisrt search) La bsqueda en profundidad es una estrategia en la que se examina una regla u objeto del nivel mas alto y a continuacin se examinan, las del nivel inmediatamente inferior; procediendo de este modo, el sistema ira siguiendo una rama nica del rbol jerrquico hasta que se acabe. Ejemplo: informa (Alfredo, Pedro) Existen dos desventajas: Podramos perseguir indefinidamente una rama infinita y nunca volver al resto del rbol n divisible por 5 n es divisible por 5 No puede garantizar la identificacin del camino mas corto antes de haber recorrido otros ms largos.

56

Bsqueda en extensin o anchura (breadth-first search) Es una jerarqua de reglas o de objetos, la bsqueda en extensin se refiere a una estrategia en la que todas las reglas u objetos del mismo nivel en la jerarqua, se examinan antes que la del siguiente nivel. Tiene dos caractersticas: Se buscaran eventualmente todos los nodos La primera solucin hallada ser la solucin

Profundidad 1

3 Profundidad 2

Profundidad 3

En esta bsqueda se desarrollan en primer lugar a la profundidad 1 todos los nodos del rbol del espacio problema; despus a profundidad 2 y as sucesivamente. Bsqueda exhaustiva (exhaustive search) Una bsqueda es exhaustiva, si en ella se examinan todos los caminos posibles de solucin en el rbol o la red de decisin. es muy costosa. Bsqueda heurstica Anteriormente se ha utilizado l termino heurstico para describir una regla que ayuda a expresar el conocimiento. este termino tambin se puede emplear para describir las reglas que se emplean para limitar la amplitud de las bsquedas. las tcnicas heursticas se emplean para centrar la atencin de la bsqueda en las que es ms probable que se encuentre la solucin. las tcnicas heursticas pueden eliminar gran parte de rbol de bsqueda, acelerando notablemente el proceso de solucin del problema. Mtodos de Bsqueda. Existen tcnicas heursticas de propsito especial y general. ejemplo de propsito general son las tcnicas de bsqueda en profundidad limitada. Esta tcnica se usa en la bsqueda en profundidad para evitar que la bsqueda tenga lugar en algunas bifurcaciones muy bajas y en las que no existe posibilidad de encontrar una solucin. Las bsquedas heursticas de propsito especifico solo son aplicables a ciertos tipos de problemas.
57

A travs del uso de reglas especiales denominadas metarreglas, que establecen la forma de utilizar las reglas de conocimiento, a partir de una serie de datos, una metarregla limita la bsqueda, al subconjunto de la BC. que tiene mayor probabilidad de llevar a una solucin. Otra forma de minimizar el proceso bsqueda consiste en subdividir el problema y la BC. en una jerarqua, de esta forma la bsqueda puede restringirse a las porciones de la jerarqua con mayor probabilidad. Las personas en general utilizan metarreglas para determinar que nodo es el que tiene que desarrollarse a continuacin. Como ejemplo en una bsqueda podramos dar pesos ponderativos a las reglas para indicar su utilidad demostrada en problemas anteriores. Entonces se podra utilizar una metarregla que declare que, si existe una eleccin, deber aplicarse la regla de valor ms alto. Supongamos que en un enfoque guiado por los datos, a las reglas se le dan los siguientes pesos: R1 R2 R3 R4 7 10 5 20

El enfoque desarrollara el rbol de bsqueda en el orden indicado por los nmeros de los nodos. Mtodos de Bsqueda.

R1 R2 3 R3 R1 1

R2 R4

R3 8 R4

6 7

R4

9 R 13

R2

R3 10

4 5

R4

R4

R4

11

14
58

12

En el primer paso R1 y R2 seran las nicas reglas aplicables. Puesto que R2 tiene un peso superior a R1, se aplica primero. En el paso siguiente se puede aplicar R1 o R4. R1 quedo descartado desde el primer paso y R4 se hizo aplicable utilizando la regla R2. Puesto que R4 tiene un peso superior a R1, se aplica. Como se encontr una solucin, R1 es la nica regla que ahora puede aplicarse, y de aqu las opciones R3 y R4, y as sucesivamente. TEORA DE LA INCERTIDUMBRE La IA. permite tratar los conocimientos ambiguos e inciertos, mientras que el software algortmico no lo hace, un algoritmo al igual que una frmula, necesita valores especficos como datos de entrada, para as calcular un resultado. S se suministran valores apropiados se generar un resultado correcto en caso contrario los resultados sern incorrectos. La IA. , sin embargo, no necesita de datos de entrada perfectos, para ser capaz de producir resultados coherentes. Cuando un SE. hace una pregunta, Usted puede no ser capaz de proporcionar las respuestas adecuadas y en algunos casos desconocer totalmente las respuestas; en otras ocasiones tendr respuestas cuya validez, no est totalmente seguro. La mayora de los SE. puede manejar estas situaciones. Resolver o manejar la incertidumbre es crucial para la IA. por que es necesaria para interactuar con el mundo real. En su mayora, los humanos tratamos la incertidumbre de la observacin sin mucho problema, por que estamos acostumbrados a ello. Sin embargo, hacer que una computadora trate con la incertidumbre, requiere algn esfuerzo. Enlazar la lgica con la incertidumbre es una tarea no trivial, por que son opuestas. Cuando se logra la unin, el resultado es llamado Lgica difusa o Borrosa (Fuzzy), por que el valor de la verdad se basa en verosimilitudes ms que en hechos. El intentar resolver situaciones donde alguna informacin es desconocida, llegamos a dos reas importantes de investigacin: Lgica Difusa Sistemas Probabilsticos Factores de Certidumbre. Uno de los mtodos diseados para tratar las situaciones inciertas son los factores de certidumbre (FC) y consiste en una medida numrica de la confianza que se tiene en la validez de un hecho o regla. Los factores de certidumbre permiten a los programas de inferencia trabajar con informaciones imprecisas. Se pueden emplear diversas escalas de factores de certidumbre: 0 al 1 Donde el cero indica una falta total de confianza y el 1 la seguridad total. Otros sistemas utilizan otras escalas de medicin. 0 al 10, 0 a 100, - 1 a + 1. En resumen se pueden utilizar otras formas de representacin definidas arbitrariamente por el programador o IC.

59

PROBABILIDAD VS. INCERTIDUMBRE. La validez o verdad de la mayora de observaciones est gobernada por un factor de probabilidad asociada a ella. Es importante comprender que un factor de certidumbre no es lo mismo que la probabilidad. Un factor de certidumbre no es ms que un nmero en una escala, en la que se establece la fe que se tiene en un determinado conocimiento. La Probabilidad, por otra parte, es un nmero que indica la posibilidad de que un hecho se produzca o no. La probabilidad (P) es la razn entre el nmero de veces que se produce un conocimiento (x) y el nmero total de acontecimientos (N) que tiene lugar. P= X/N Dependiendo del tipo de conocimientos involucrados, la probabilidad puede ser una forma ms apropiada de tratar con la incertidumbre, que los factores de certidumbre. En general los factores de certidumbre son difciles de aplicar. LGICA DIFUSA. Uno de los problemas ms difciles que han enfrentado las ciencias exactas como la matemtica, la lgica, etc. Es el clculo de lo que no es exacto, es decir como manejar datos sin perder su carcter rgido aceptando las variables naturales de la realidad. En el medio en que vivimos, se presentan sistemas que es difcil definirlos con modelos matemticos exactos o convencionales. Para analizar estos tipos de sistemas se recurre a la Lgica difusa, Borrosa o Fuzzy. Los sistemas difusos analizan estos fenmenos basados en: Base de Datos (Clasificacin lingstica) Base de Conocimientos (Conjunto de Reglas) Mecanismos de Inferencia (Operadores lgicos difusos)

La lgica formal es la lgica Aristotlica, que dice que una cosa es verdadera o falsa estando excluida una tercera acepcin para el valor de verdad de una proposicin. La lgica difusa nace con Platn y en tiempos recientes con Lukasiewics quien plantea el espectro entre lo verdadero y lo falso y explora una lgica 3,4,5 y ms elementos, llamada lgica multi-nivel. En l965, Lofti Zadech, profesor de Ingeniera Elctrica y Ciencias de la Computacin de la Universidad de Berkeley, basndose en el trabajo de Lukasiewicz, introduce la lgica Difusa basada en la Teora de Conjuntos Difusos, donde un elemento no necesariamente pertenece o no pertenece a un conjunto, sino que hay un continuo
60

grado de pertenencia. 1.0 1.0

0 18 22 26 30 Lgica Convencional

18 22 26 30

Lgica Fuzzy

El grado de pertenencia a un conjunto generalmente de asocia a la letra griega y puede tomar valores entre 0 y 1 inclusive. Esto de denota como: A(x) [0,1] donde a tambin se le conoce como el valor de verdad porque representa el grado en que una proposicin es verdadera. La lgica convencional es un caso particular de la Lgica Difusa, ya que al hacer un grado de pertenencia igual a 0 se indica una pertenencia nula o no pertenencia y si se iguala a 1 una pertenencia total. Los Sistemas basados en la lgica difusa pueden controlar ms adecuadamente procesos que estn gobernados por reglas intuitivas que difcilmente pueden expresarse matemticamente. Emplea infinitos matices entre lo Verdadero o Falso, entre un SI y un NO pues nuestro lenguaje es vago, difuso y eminentemente subjetivo. As tenemos expresiones dentro de este conjunto como: ( rico, muy.., ms o menos ..., algo..., ms bien ..., una especie de ..., cerca de ....). Por ejemplo. En el control de un ascensor, puede determinarse una desaceleracin gradual cuando el ascensor est prximo a su destino. La gran potencia de esta metodologa programable se debe a la posibilidad de expresar operaciones y controlar las reglas del sistema mediante palabras de uso cotidiano. En el ejemplo anterior, podra programarse: SI esta cerca de un piso Y hay orden de parar ENTONCES disminuir la velocidad. En este caso una entrada al sistema de control sera la posicin del ascensor, y como cercaes un conjunto difuso, el valor de verdad de la premisa, y por lo tanto el de la velocidad vara de acuerdo a dicha posicin. La forma de expresar las reglas de operacin mediante palabras permite controlar procesos sencillos con una decena de reglas, y procesos complejos con unas 30 o 40, reduciendo considerablemente la cantidad de cdigo de programacin, el tiempo de diseo del prototipo, la cantidad de memoria etc.
61

La descripcin de un proceso mediante la formulacin de reglas derivadas de la experiencia en vez de ecuaciones matemticas ha llevado a sustituir implementaciones en muchas operaciones. La lgica difusa elimina los altos contenidos de matemtica y fsica de un proceso y va directo al nivel en que el sistema trabaja, esto permite aproximarse intuitivamente a la solucin de un problema mediante la formulacin de Reglas. Otra ventaja del control difuso es la fcil modificacin que puede llevarse a cabo cambiando algunas premisas y operaciones, o adicionando reglas (El criterio de comportamiento del sistema va implcito en las Reglas), mientras que en un sistema convencional, un pequeo cambio requiere de la derivacin completa de nuevas ecuaciones. El control difuso no necesita de la etapa de obtencin del modelo matemtico del proceso. Teora de Conjuntos Difusos La teora de conjunto difuso nos da un fondo matemtico y buenos fundamentos para la descripcin y manejo de tan complicado razonamiento humano. En las matemticas clsicas se est familiarizado con el manejo de conjuntos. En la lgica difusa esta teora es llamada modelamiento de indecisiones, distinguindose los siguientes tipos: Indecisin estocstica: Un evento ocurre con una probabilidad dada (ejemplo. Juego de dados) Indecisin lxica o lingstica: La descripcin imprecisa de un objeto (ejemplo. Grande, bajo precio, etc.) Indecisin informativa: La indecisin causada por la perdida de informacin o informacin incompleta.

Ejemplo: Consideramos un conjunto X de los nmeros reales entre 0 y 10 al que llamamos Conjunto Universal. Ahora definimos un subconjunto A de X de todos los nmeros reales que estn en el rango entre 5 y 8 A = [5,8] Ahora veremos la funcin caracterstica del conjunto A. Esta funcin asigna un nmero entre 1 y 0 para cada elemento en X, y depende de s el elemento es un subconjunto de A o no. Este resultado se ve en el siguiente grfico:

62

A 1

Podemos ver que cada elemento tiene asignado un valor (0 o 1) Los elementos del conjunto A tienen asignados el valor de 1 porque pertenecen a ese conjunto, y cada elemento que tiene asignado el nmero 0 es un elemento que no est en el conjunto A. Ejemplo: Se sugiere describir el conjunto de gente joven, lo cual podemos denotarlo de la siguiente manera: B = { Conjunto de personas jvenes} Entonces, en general, se toma como limite inferior las edades que arrancan en 0 aos. El rango ms alto o mayor es ms difcil de definir. Por lo tanto para un primer caso se puede considerar el rango superior como 20 aos. B tendr entonces el intervalo: B = [ 0, 20 ] La pregunta a resolver sera, Por qu una persona en su cumpleaos 20 es considerada joven y al da siguiente ya no? Obviamente esto es un problema estructural. Pues as variemos el rango superior el problema seguir. Una forma ms natural de construir el conjunto B sera hacer menos drstica l limite entre gente joven y no joven. Para solucionar el problema, se cambiara las frases radicales como SI l / Ella estn en el grupo de gente joven, por una frase ms flexible como medio joven, algo joven, poco joven, etc. Utilizando los conjuntos difusos se sealan alternativas entre 0 y 1 estableciendo el intervalo I = [ 0, 1] La interpretacin de los nmeros asignados entre 0 y 1 en la siguiente grfica, muestra el grado de pertenencia de cada elemento al conjunto universal. Si esta en 1 significa que el elemento pertenece al conjunto B, Si esta en 0 significa que el elemento no pertenece al conjunto B. Todos los dems valores significan una gradual pertenencia al conjunto B.
63

B 1 0.5

20

25

30 edad

50

Si tengo 25 aos de edad soy 50 % Joven. En la grfica, se ve que l limite superior del conjunto B, donde las apreciaciones NO se pueden hacer con un simple SI / NO. Una persona de 21 aos es algo joven, (21, algo joven) Una persona de 25 aos es medio joven, (25, medio joven) Una persona de 28 aos es poco joven, (28, poco joven). Mientras que una persona con 15 aos es joven con seguridad (15, joven con seguridad) Una persona de 50 aos no es joven con seguridad (50, no es joven con seguridad) Se pueden asociar las atribuciones lingsticas: algo, medio, poco con valores, como 0.9, 0,5, 0.2 respectivamente, as por ejemplo: Susana de 21 aos Y = f(21) = 0.9

El Conjunto Difuso es por lo tanto el conjunto de aplicaciones resultantes entre el intervalo [0, 1] que denotan grado de membresa de un elemento en un dominio dado. Donde el resultado 1 significa que el elemento pertenece con absoluta confianza y el 0 contrariamente significa que no pertenece, los valores intermedios, denotan el grado de membresa (En que grado el elemento pertenece al conjunto en cuestin).

Operaciones sobre conjuntos difusos:


64

Con los conjuntos difusos se pueden realizar operaciones bsicas como la interseccin, unificacin y negacin de conjuntos. As tenemos el conjunto A es un intervalo fuzzy entre 5 y 8 y el conjunto B es un nmero fuzzy alrededor de 4. Sobre estos dos conjuntos efectuaremos las operaciones respectivas: A 1

0 B 1

0 A

La lnea ms oscura representa la negacin: (x) = 1 - (x)

65

Lgica Difusa. Un mtodo para manejar el conocimiento impreciso es el llamado Lgica Difusa (Fuzzy). Cuando un especialista crea una Base de Conocimientos puede desear emplear trminos imprecisos, como: Corto, Largo, Pequeo, Grande, ...., etc. El especialista asigna un valor del Factor de certidumbre entre 0 y 1 para indicar el grado de confianza, de que un evento se encuentre en el intervalo dado. Supongamos que se desea definir lo rpido que es un carro. Aunque se puede utilizar la velocidad limite como referencia, pocos carros alcanzan su velocidad lmite en alguna ocasin, de modo que una referencia mejor puede ser utilizar la aceleracin de 0 a 100 Km. / hora. Podra afirmarse entonces que cualquier carro con una aceleracin de 0 a 100 km. / h. en menos de 8 segundos, es rpido y los dems son lentos. Lo cual podemos representarlo grficamente. Evaluacin 1 Rpido 0 4 8 tiempo

La escala vertical representa la opinin de los especialistas sobre lo que es rpido. El valor 1 significa que el 100 % opina que una aceleracin por debajo de los 8 segundos supone un carro rpido. El 0 indica que por encima de los 8 segundos de aceleracin, nadie cree que un carro sea rpido. Pero desde luego, raramente existe un consenso de este tipo. En la vida real, la opinin de los especialistas diferir, por lo que una curva ms real es la que se representa en la siguiente figura.

Evaluacin 1.0 0.5 0.0 4 8 Tiempo

66

En ella se muestra que slo el 50 % de los especialistas considerar que un tiempo por debajo de los 8 segundos es rpido. En cualquier caso, l numero entre 0 y 1 da un valor que indica rapidez de un carro, medida en una cierta escala. Los factores de certidumbre pueden emplearse tambin para representar conceptos como: grande, verdadero, rico, pecaminoso. etc. Este mtodo de representar la informacin imprecisa es til para algunos tipos de problemas. Permite asignar valores numricos a conocimientos cuya validez se desconoce. Razonamiento No Montono. Los sistemas convencionales de razonamiento, como la lgica de predicados de primer orden, estn diseados para trabajar con informacin que cumple tres importantes propiedades: La informacin es completa con respecto al dominio de inters. En otras palabras, todos los hechos necesarios para resolver el problema o estn presentes en el sistema o pueden derivarse de ellos mediante reglas convencionales de la lgica de primer orden. La informacin es consistente La nica forma en que puede cambiar la informacin es que se aaden nuevos hechos conforme estn disponibles. S estos nuevos hechos son consistentes con todos los dems hechos que se han afirmado, entonces ninguno de los hechos pertenecientes al conjunto que eran ciertos pueden refutarse. Esta propiedad se denomina monotona. Desafortunadamente, si no se verifica alguna de estas propiedades, los sistemas de razonamiento basados en la lgica convencional son inadecuados. Los sistemas de razonamiento no montono, por otro lado, se disean para que puedan resolver problemas en los que quiz no aparezca alguna de estas propiedades. Para poder lograrlo, se deben tratar varios aspectos clave, entre los cuales se encuentran: 1. De que forma puede extenderse la Base de Conocimiento, para permitir inferencias realizadas tanto sobre la base de una falta de conocimiento como sobre una presencia del mismo.? Por ejemplo, sera bueno decir cosas como: Si no tienes razones para sospechar que una persona ha cometido un crimen, entonces asuma que l no lo cometi. Especficamente, es necesario tener clara la distincin entre: Se sabe que P. No se sabe si P. La lgica de predicado de primer orden permite el razonamiento basado en la primera de las afirmaciones. Es necesario un sistema extendido que permita razonar tambin sobre la base de la segunda. En este nuevo sistema, a una inferencia que depende de la falta de alguna parte de conocimiento se le denomina Inferencia No Montona. Los sistemas de razonamiento no montono derivan su nombre del hecho de
67

2.

3.

que como las inferencias dependen de la falta de conocimiento. Los sistemas de lgica de predicados de primer orden, son montonos. Conforme se aaden nuevos axiomas, aparecen nuevas fbf, pero nunca se vuelven invlidos los resultados anteriores. Una inferencia no montona puede ser invalidada mediante la adicin de nueva informacin que viola las suposiciones realizadas durante el proceso original de razonamiento. De que forma puede actualizarse correctamente la Base de Conocimiento cuando se aade un nuevo hecho( o cundo se elimina otro anterior)? La adicin de un nuevo hecho en un sistema no montono puede causar que algunas demostraciones previamente descubiertas pasen a ser invlidas. La solucin ms usual consiste en tomar nota de las demostraciones, que con frecuencia se denominan Justificaciones. Esto permite encontrar todas las justificaciones que dependen de la ausencia de un nuevo hecho y, por lo tanto pueden marcarse como invlidas. Cmo puede usarse el conocimiento para ayudar a resolver los conflictos que surgen cuando se pueden usar varias inferencias no montonas inconsistentes? Resulta que cuando las inferencias se basan tanto en la falta de conocimiento como en su presencia, las contradicciones surgen con mucho ms frecuencia que en los sistemas lgicos convencionales, en los que las nicas posibles contradicciones son aquellas que dependen de hechos que se afirmaron explcitamente como ciertos. En particular, en los sistemas no montonos con frecuencia existen partes de la Base de Conocimiento que son localmente consistentes pero mutuamente (globalmente) inconsistentes.

68

Universidad de San Martn de Porres Facultad de Ingeniera y Arquitectura

ASIGNATURA

INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

Profesor: Ruben Daro Cuadros Ricra

UNIDAD IV Programacin con lenguajes de Inteligencia Artificial


Semana: 11a - 12a - 13a - 14a - 15a - 16a - 17a

LIMA PER 2002

Programacin Lgica - PROLOG.


69

El lenguaje Prolog es un lenguaje declarativo. esto significa que dados los hechos y reglas necesarios puede usar razonamientos deductivos para resolver problemas en donde el programador solo debe dar una descripcin del problema y las reglas bsicas para resolverlo, luego Prolog determinara como encontrar la solucin. Prolog tiene sintaxis muy simple y corta, siendo ms fcil de aprender que la mayora de lenguajes tradicionales de programacin. Tiene incorporado un sistema de mens y ventanas que le ayudan a escribir, guardar compilar y depurar programas. En la pantalla principal se visualizan cuatro ventanas separadas por una lnea de men de opciones al principio y una lnea de informacin al final. Ventana de edicin Ventana de dialogo Ventana de traza Ventana de mensajes.

Cada ventana puede ser trasladada, reducida o agrandada segn la comodidad del programador. Divisiones del Programa La mayora de los programas en turbo prolog estn organizados en cuatro secciones principales dominios predicados clusulas (domains) predicates) (clauses)

Dominios.- En el prolog, usted debe especificar los dominios de los objetivos de una relacin, es decir se necesita conocer de antemano que tipo de cosas pueden ser un argumento (numero, smbolo, entero, real,....). Predicados.- son las relaciones que afectan uno o ms objetos. Objetivos.- esta seccin indica la meta, es decir lo que la computadora har con la informacin que se le ha suministrado. el objetivo puede ser interno o externo. Goal interno.- No emite respuesta, es decir no da ningn mensaje de falso o verdadero, por lo cual utiliza un predicado de escritura ( write ) para imprimir el mensaje de Respuesta. Goal externo.- Emite un mensaje de respuesta. True verdadero lo encontr
70

False

falso no lo encontr

Clusulas.- constituyen la base de datos, es donde se almacenan los datos. Los hechos con los que se formulan los objetivos y relaciones se listan en esta seccin, adems de las reglas y otras estructuras. Todas las clusulas terminan en un punto o conectores lgicos and y or. Diferencia con otros Lenguajes El prolog es descriptivo: Es decir en vez de especificar una serie de pasos para que el computador resuelva el problema, se hace tan solo una descripcin del problema. Esta descripcin es hecha en tres partes. 1.- Nombres y estructuras de objetos involucrados en el problema. 2.- Nombre de relaciones que son conocidas y que existen entre los objetos. 3.- Hechos y reglas describiendo estas relaciones. La descripcin en un programa de prolog es usada para especificar la relacin entre la entrada y la salida que ser generada a partir de esta entrada. /* programa ejemplo n-1 */ domains persona, actividad = symbol predicates le_gusta (persona, actividad) clauses le_gusta(ellen, tenis). le_gusta(juan, ftbol). le_gusta(tom, bisbol). le_gusta(erick, natacin). le_gusta(marcos, tenis). le_gusta(bill, X) if le_gusta(tom, X). Como se puede apreciar la seccin clusulas contiene una coleccin de hechos y reglas. hecho: le_gusta(ellen, tenis). corresponde: ellen le gusta el tenis. Se debe notar que no se tiene informacin acerca de s o no le_gusta(bill, bisbol). Para que el prolog determine si a bill le gusta el bisbol, debemos indicar al programa. le_gusta(bill, bisbol). como nuestra meta Por lo tanto el prolog intenta satisfacer esta meta, el sistema usara la regla le_gusta(bill, X) if le_gusta(tom, X). lo cual corresponde a la expresin: bill le gusta X si a tom le gusta X. Al ejecutar el programa, como no se tiene un Goal interno, en la ventana de preguntas o de dialogo se tendr:
71

Goal: le gusta(bill, bisbol). Prolog contestara: True (verdad). y esperara que ingrese otra meta. El prolog ha combinado la regla. le_gusta (bill, X) if le_gusta (tom, X). Con el hecho. le_gusta (tom, bisbol). Para poder decidir que: Luego si ingresamos otra meta: Goal: le_gusta(bill, tenis). El sistema responde: falso le_gusta (bill, bisbol) es verdad.

DOMINIOS. En el Prolog se debe especificar los dominios a los cuales, los objetos de una relacin pertenecen. domains persona, actividad = symbol predicates le_gusta(persona, actividad) /* Especifica que la relacin: "le_gusta"; involucra dos objetos perteneciendo ambos al dominio de los "smbolos". */ Luego si le ingresamos la meta: le_gusta(12, X).

El Prolog responde: un mensaje de error pues, 12 no pertenece al dominio.

Dominios Estndar. El prolog trabaja con seis tipos estndar de dominios.


72

char integer real

Carcter encerrado entre dos apstrofes ( 'a', 'b', 'c') Enteros en el rango -32,768 hasta 32,767 Nmeros con signo opcional, seguido de algunos dgitos, opcionalmente tambin el punto decimal seguido de dgitos para la parte fraccionaria, opcionalmente tambin una parte exponencial ejemplos 42705 -9999 06.72 911.972 -521e230 64e-94 -79.83e+21 el rango mximo permitido es 1e-307 hasta 1e+308. Referidos a una secuencia de caracteres escritos entre comillas ejem. "Juan sin miedo" Existen dos formatos permitidos para los smbolos. 1. Una secuencia de letras, nmeros y smbolos de subrayado, con el primer carcter en minscula. 2. Una secuencia de caracteres encerrados entre comillas (es usado cuando los smbolos tienen espacios o no empiecen con letra minscula).

string symbol

Ejemplos de smbolos: numero_telefono "pasaje_de_tren" "sociedad_mercantil" Los objetos que pertenecen a dominios de carcter o de smbolos y contienen un \ backslash) tienen un significado especial. \ nmero \n \t el nmero indica el cdigo ASCII del carcter carcter de nueva lnea carcter de tabulacin.

Ejemplo: las siguientes lneas: write ('\13') write ('\n') nl Significan cambio de lnea.

/* Ejercicio laboratorio N. 1 */ Escribir un programa que establezca la relacin del estudio de cursos por alumno segn los siguientes predicados.
73

estudia (alumno, curso) crdito (curso, valor) profesor (nombre, curso) examen_parcial (curso, nota) examen_final (curso, nota) practicas (curso, nota) nota_final (curso, nota) 1. 2. Verifique la existencia o validez de los objetivos en forma interna y externa. Modificar el tamao de las ventanas de edicin, dialogo, traza y mensajes.

PREDICADOS. Cada hecho dado en la seccin de clusulas de un programa, consiste de una relacin que afecta uno o ms objetos. As por ejemplo. Le_gusta (tom, bisbol) La relacin es: Los Objetos son: Le_gusta tom y bisbol

El programador es libre de seleccionar los nombres de las relaciones y objetos, que estarn sujetos a las siguientes restricciones: Ejm. Los nombres de los objetos deben empezar con una letra minscula seguida de letras, caracteres, dgitos o _. Los nombres de las relaciones tambin pueden combinar letras, dgitos y caracteres subrayados. tiene(susana, caballo). come(juan, carne). valioso(oro). carro(mercedes, azul, 1992).

Son hechos validos. As mismo una relacin puede involucrar uno, dos o ms objetos. Similarmente la expresin: le_gusta(bill, tom, bisbol). Dar un error a pesar que a bill y tom le gusta el bisbol, ello se debe a que la relacin: le_gusta ha sido definida como un predicado de dos argumento y no tres como se intenta. Variables: Luego si tipeamos la meta anterior: le_gusta(individuo, tenis).
74

Prolog responder. individuo = ellen individuo = marcos 2 soluciones goal: La meta ser resuelta de dos maneras, asignando la variable individuo con ellen y marcos. Aridad La aridad de un predicado, consiste en l numero de argumentos que tiene. /* Programa con hechos de aridad cero */ predicates uno dos tres cinco siete goal cinco, write ("lo encontr"). clauses uno. dos. tres. cinco. siete. Repta. lo encontr

/* programa de aridad 1 */ domains marca = symbol predicates carro (marca) goal carro(toyota) and write("lo encontr") or write ("no lo encontr"). clauses carro (ford). carro (toyota). carro (chevrolet). carro (lada). carro (datsun).
75

El goal interno utiliza un predicado write para dar una respuesta el cual siempre es verdadero. Ejercicio. desarrolle un programa que establezca el siguiente predicado observa (persona, persona) El objetivo es determinar si se cumple la meta externa. Goal: observa (federico, gregorio) Como segunda meta: Goal: observa (Quien1, Quien2) Como tercera meta: Goal: observa (_, gregorio) Dar las respuestas para cada uno de los objetivos.? Solucin: /* programas de aridad 2 */ domains persona = symbol predicates observa(persona, persona) clauses observa (guillermo, roberto). observa (juan, juana). observa (federico, alicia). observa (miguel, guillermo). observa (brenda, gregorio). observa (Roberto, Roberto). observa (federico, gregorio). observa (gregorio, felipe).

PROCESO DE SOLUCIN DEL PROLOG. Busca de arriba-abajo a lo largo de la lista de hechos, para encontrar un hecho que coincida con el objetivo. Luego intentara hacer coincidir el predicado y determina que el primer hecho de la clusula utiliza el mismo predicado. luego comprueba si el hecho tiene el mismo numero de argumentos que el objetivo. Al ser correcto l numero de argumentos, intenta hacer coincidir el primer argumento del
76

hecho e intenta nuevamente de hacerlo coincidir, realizando todo el proceso anterior, hasta encontrar un hecho igual al del objetivo. Si lo encuentra el proceso responder con un mensaje de True (verdadero) o Yes; de lo contrario False (falso) o No.

Puede observarse que ninguna regla impide que un objeto aparezca en ambas posiciones: observa (roberto, roberto) Tambin es posible utilizar variables en un objetivo en todas las posiciones. Goal observa(Quien1, Quien2)

El cual producir una lista de todos los hechos de la Base de Datos, si hubiera otros hechos distintos a "observar", esta operacin seria til para determinar cuantos hechos del mismo objetivo existen en la base de datos: Quien1 = guillermo Quien1 = juan Quien1 = federico N soluciones /* programa Nro. 3 */ domains marca, color = symbol antigedad, precio = integer kilometraje = real predicates carro (marca, kilometraje, antigedad, color, precio) clauses carro(fat, 130000, 3, rojo, 12000). carro(ford, 90000, 4, plomo, 9000). carro(datsun, 800, 1, negro, 15000). En este programa el predicado carro establece el molde para todas las relaciones y tiene objetos que pertenece al dominio de los enteros los cuales estn comprendidos en un rango -32768 .. +32767 , el dominio del kilometraje es del tipo real y puede contener el punto decimal. Ejm. Si incorporamos las siguientes clusulas carro (renault, 13, 3.5, rojo, 13000). carro (ford, rojo,, 9000, 4, 5000). carro (1, negro, 15000, 8000, datsun).
77

Quien2 = roberto Quien2 = juana Quien2 = alicia -

Cada uno de ellos producir un error de dominio. Si ingresamos como objetivo. Goal carro (Fabricante, Kilometraje, Aos, Color, 9000)

El prolog tratar de satisfacer la meta y responder: Fabricante = ford Aos = 4 METAS COMPUESTAS. El Prolog utiliza operadores lgicos y de relacin, para validar los objetivos individuales, formulando metas compuestas. Ejemplo. El objetivo del programa anterior puede formularse de la siguiente manera. Existe un carro en la base de datos que cuesta menos de $ 9000 ? El Prolog buscara la solucin, formulndose la siguiente "meta compuesta". Goal carro (Fabricante, Kilometraje, Aos, Color, Costo) and Costo < 9000. Kilometraje = 90000 Color = plomo 1 solucin.

El Prolog determina que existen dos Submetas 1ra. carro (Fabricante, Kilometraje, Aos, Color, Costo) 2da. Costo < 9000 Ambas relacionadas con el operador lgico "and" y la relacin "menor que" < , esta ultima es similar a una relacin normal que involucra a dos objetos numricos. < (Costo, 9000). Pero es preferible por comodidad anteponer el operador < entre los dos objetivos. /* programa Nro. 4 */ domains nio = symbol edad = integer predicates alumno (nio, edad) clauses alumno (pedro, 9).
78

alumno (pablo, 10). alumno (chis, 9). alumno (susana, 9). alumno (juan, 10). Se desea establecer: Que, Persona1 y Persona2 tengan ambos 9 aos de edad y a la vez sean diferentes. goal: alumno (Persona1), alumno (Persona2), Persona1 <> Persona2 alumno (Persona1, X), alumno (Persona2, Y), X = Y, Persona1 <> Persona2 alumno (Persona1, 9), alumno (Persona2, 9), Persona1 <> Persona2 alumno (Persona1, Persona2), Persona1 <> Persona2, Edad = 9 alumno (Persona1, _ ), alumno (Persona2, _ ), Persona1 <> Persona2

goal:

goal: goal: goal:

La meta correcta ser: alumno (Persona1, 9) and alumno (Persona2, 9) and Persona1 <> Persona2 El Prolog tratara de encontrar una solucin para la primera submeta y solo continuara con la siguiente submeta, una vez que la primera submeta es lograda. la cual es satisfecha al ser la Persona1 igual a Pedro. Luego trata de satisfacer la siguiente submeta. alumno(Persona2, 9) El cual tambin tomara como primer valor a pedro. Continuando con la tercera submeta final Persona1 <> Persona2 Dado que ambos Persona1 y Persona2 ambas son pedro, esta submeta falla. Entonces el Prolog retrocede ( Backtraks ) a la meta anterior, luego busca otra solucin para la segunda submeta, lo que se logra haciendo que Persona2 tome el valor de Chris, por lo que la tercera submeta:
79

Persona1 <> Persona2 Es satisfecha dado que Pedro y Chris son diferentes, con lo cual se satisface toda la meta. Sin embargo el goal externo debe encontrar todas las posibles soluciones para una meta, y una vez mas retrocede a la meta previa, esperando acertar nuevamente por lo tanto alumno (Persona2, 9) Puede ser satisfecha tomando a Persona2 como Susana, luego intenta la tercera submeta, la que se cumple dado que pedro y susana son diferentes, de manera que otra solucin ha sido encontrada para toda la meta. el prolog buscara ms soluciones y nuevamente retrocede a la segunda submeta. pero todas las posibilidades han sido agotadas para esta submeta, entonces el retroceso ( Backtracking ) continua hasta la primera submeta. alumno(Persona1, 9) La cual puede ser satisfecha tomando a Persona1 = chris para luego continuar con la siguiente submeta en donde Persona2 s instancia con pedro, de manera que la tercera submeta es satisfecha, completando toda la meta. Luego s continua en forma similar al proceso anterior hasta llegar a la solucin final. La respuesta del prolog a la meta compuesta ser; : Persona1 = Persona1 = Persona1 = Persona1 = Persona1 = Persona1 = 6 pedro, pedro, chris, chris, susana, susana, Persona2 = chris Persona2 = susana Persona2 = pedro Persona2 = susana Persona2 = pedro Persona2 = chris

Soluciones

Ejercicios. Desarrollar un programa cuyos predicados establezcan relaciones de estudio Metas Cursos aprobados por alumnos Profesores por curso Horario de clases Promedio final por cursos Control del cruce de horario

OPERADOR AND.
80

Si tenemos el objetivo:

observa(guillermo, roberto) and observa(juan, juana).

Preguntara si es verdad que existe un hecho en el cual: guillermo observa a roberto y juan observa a juana. Este objetivo compuesto ser juzgado verdad solo si son verdad ambos objetivos en forma individual. Es decir el Prolog intenta inicialmente identificar el primer objetivo y una vez que lo encuentra, intenta satisfacer el segundo objetivo. Goal observa(guillermo, roberto) and observa(gregorio, brenda) El resultado ser falso por que ambos objetivos individuales necesitan ser verdad, para que se cumpla el objetivo compuesto. OPERADOR OR Se puede construir objetivos compuestos llamados Disyunciones, con el operador lgico or, que indica que ser verdad, si alguno de los objetivos individuales es verdad. Se escribe tambin como un carcter ;. El otro objetivo puede ser verdadero o falso, lo cual no afectara el cumplimiento del objetivo compuesto. Goal observa(guillermo, roberto); observa(gregorio, brenda) ser verdadero.

Existen otros operadores, que tambin pueden escribirse en los objetivos compuestos y son los operadores de relacin: Ejem. ">" "<" "=" Observa (guillermo, Quien), Quien < roberto

Prolog responde Quien = felipe debido a que hay alguien a quien guillermo observa y cuyo nombre viene alfabticamente antes que roberto. OPERADOR NOT El operador lgico not es utilizado para indicar la condicin de negacin Ejemplo. not (fumador (X)).

El Prolog evaluara la condicin anterior como verdadera, al hecho de no encontrar un fumador. /* Programa - Sofa busca un hombre que sea vegetariano y que no fume */ domains
81

persona = symbol predicates hombre (persona) fumador (persona) vegetariano (persona) pareja_elegida (persona) goal pareja_elegida(X) and write ("la posible pareja de Sofa es", X), nl. hombre (jos). hombre (mario). hombre (tomas). hombre (antonio). fumador (tomas). vegetariano (jos). vegetariano (tomas). pareja_elegida (X) hombre (X), not (fumador (X)). pareja_elegida (X) hombre (X), vegetariano (X). Aparte del uso de dos reglas (es permitido el usar muchas mas) se observa el uso del operador not (no) que es usado para indicar la condicin de no fumador. Vemos tambin el uso del predicado write: write (......) Que es un predicado que siempre es verdadero y en este caso mostrara en pantalla el valor de la variable X que satisfaga el goal interno. Goal Interno y Externo Normalmente el goal interno da como resultado un solo elemento de la solucin, mientras que el goal externo, busca todos los elementos y presenta sus respuestas, asignando los valores de las variables o el mensaje true (yes) o false (no). Para que el goal interno pueda imprimir todos los elementos de la base de datos; se coloca un predicado falso para forzar la bsqueda o se utiliza un predicado que siempre es falso llamado "fail". /* programa ejemplo */

clauses

domains color, marca = symbol predicates carro(marca, color) moto(symbol) clauses carro(ford, amarillo). carro (toyota, negro).
82

carro(chevrolet, rojo). carro(nissan,plomo). moto(susuki). moto(fiat). moto(honda). Utilizando goal externo: 1. 2. 3. Listar todos los carros de la base de datos. Listar los carros y motos Listar moto honda con carro de color amarillo

Utilizando goal interno: 1. 2. 3. Solucin. goal goal goal Goal carro (X, Y) carro (X, Y), moto (M) carro (fiat, amarillo), write ("lo encontr); write ("no lo encontr). carro (X, Y), write ("carro:", X, "color:", Y), nl, moto (ford). Un carro fiat de color amarillo indicando un mensaje si lo encontr o no lo encontr. Imprimir todos los carros utilizando un predicado falso. Imprimir todos los carros utilizando un predicado falso.

Predicado falso, obliga la vuelta hacia atrs, pero la bsqueda es larga. Goal carro (X, Y), write("carro:", X, "color:", Y), nl, fail.

El predicado fail siempre es falso y es mejor utilizado.

VARIABLES ANNIMAS. Una variable annima o blanca, se escribe como un carcter subrayado y se utiliza en los mismos lugares de las variables estndares, pero nunca se le asigna un valor particular (es decir se ignora el valor de la variable). Goal Rpta. Edad = 3 Edad = 4 Edad = 1 Precio = 12000 Precio = 9000 Precio = 15000 carro( _, _, Edad, _, Precio), precio < 27000.

las variables anonimas tambien puede usarse:


83

tiene( _, camisa) lava ( _ ) INSTANCIACIN. if (X EQ 4) .... Comparacin X = 4 .... Asigna valor variable

/*cualquiera tiene camisa/ /* cualquiera lava */

El Prolog tiene ambas cosas juntas, lo cual se denomina instanciacin, que significa que a una variable libre se le mueve un valor y luego se efecta la comparacin. REGLAS. Reglas los hechos no son los nicos elementos de la seccin clusulas, se pueden tambien introducir reglas a las bases de datos. Una regla nos indica que algo es verdad (un objetivo se cumplir) si alguna otra cosa es verdad. Las reglas hacen que el prolog pase de ser solo un: "Diccionario o Base de Datos", en el que se busca o verifica un hecho, a ser una mquina lgica pensante". El formato que utilizan las Reglas es: Predicado if Predicado, predicado, predicado, relacin (objeto, objeto, ... ) if relacin (objeto, objeto, ...) and --------relacin (objeto, objeto, ..., objeto). Simblicamente se define. A if B, C, D, E.

Diagrama de rbol A

84

E if :- ........... and , ........... or ; ............ si "y" "o"

/* Programa usando Reglas */ domains persona = symbol predicates observa (persona, persona) feliz (persona) clauses observa (guillermo, roberto). observa (juan, juana). observa (federico, felicita). observa (miguel, guillermo). observa (brenda, gregorio). observa (roberto, roberto). observa (federico, gregorio). observa (guillermo, felipe). feliz (federico) if observa (brenda, federico). feliz (gregorio) if observa (brenda, gregorio). Luego de compilado el programa y al ejecutarse. goal:- feliz (gregorio) El Prolog intentara satisfacer o identificar el objetivo de arriba-abajo, buscara en las clusulas un predicado que coincida con el predicado feliz, encontrndolo casi al final, luego comprueba si dicho predicado tiene la misma aridad, si es as continua el proceso. el prolog encuentra el operador if por lo cual concluye que es una regla y no un hecho. Por lo que para que la "parte izquierda" de una regla sea verdad de forma que se use para identificar un objetivo, la "parte derecha" de la regla deber ser verdadera. Luego el Prolog intenta que el predicado: observa (brenda, gregorio) sea satisfecho como un nuevo objetivo, luego puede volver atrs y satisfacer el "Objetivo Original". Si se intenta otro tipo de objetivos como:
85

goal:- observa (federico, gregorio) goal:- observa (federico, Quien) goal: observa (_,_) Rpta. Yes goal: observa (feliz,_) Rpta. No goal: feliz (Quien) Rpta. Quien = gregorio 1 solucin El prolog utiliza tres tipos de Variables: Variable libre. Variable acotada. Variable annima.

Rpta. yes Rpta. Quien = felicita Quien = gregorio 2 soluciones

El prolog no conoce su valor Tiene un valor conocido No se asigna ningn valor.

Ejercicio: En el siguiente ejemplo se establece las relaciones de un rbol genealgico. Padres... juan, rosa

Hijos... pedro susana pablo mara carlos luisa Nietos... ral juana rosa beatriz elena jos ins patricia Desarrolle el programa que resuelva las siguientes metas: 1. Quien es el hermano de beatriz 2. Quien es el abuelo de ral 3. Quin es la hermana de ? 4. Quien es la cuada de luisa 5. Quienes son los primos de elena 6. Quien es to de ral 7. Quien es la esposa de pablo PREDICADO FAIL.Es un predicado incorporado que siempre es falso y ocasiona una vuelta hacia atrs, liberando a las variables, puede ubicarse en un objetivo como una regla. Con el fail se buscan todos los elementos, dependiendo donde se ubique. A if B, C, D, fail.
86

/* programa que muestra el fail */ domains cosa = symbol predicates busca (cosa) es_un_pato (cosa) camina_como_pato (cosa) suena_como_pato (cosa) tiene_dos_patas (cosa) goal Clauses busca (Y), write (Y), nl, fail. busca (X) if es_un_pato (X), camina_como_pato (X), suena_como_pato (X), tiene_dos_patas (X). camina_como_pato (juan). camina_como_pato (pedro). camina_como_pato (pato). suena_como_pato (juan). suena_como_pato (pedro). suena_como_pato (pedro). tiene_dos_patas (juan). tiene_dos_patas (pato). es_un_pato (pato). es_un_pato (juan). PREDICADO CUT O CORTE (!) . Prolog contiene un elemento que detiene la bsqueda, es un predicado incorporado a la librera que es verdadero e impide la vuelta atrs. Cundo se encuentra un cut "!", se liberan las variables vinculadas de la bsqueda de un objetivo o subjetivo particular de sus valores actuales. Esto significa que puede trabajar dentro de una regla simple o incluido entre reglas. Se escribe una regla: A if B, C, !, D. El prolog intentar satisfacer B y C, luego se mueve hacia la clusula "!", la cual se cumple automticamente quedando las variables vinculadas a "B" y "C" atrapadas en su estado actual. Ahora buscaran todas las posibilidades para "D", si lo encuentra, la regla se cumplir, sino, fallara la regla entera, porque l "!" detiene la vuelta atrs que se producira para encontrar otros valores de "B" y "C". Ejemplo. En el programa anterior le permitir determinar que "es_un_pato" ...... Cuando utilice el objetivo, es_un_pato(Animal)
87

A if B, C, D, E.

Buscando en su base de datos para satisfacer las condiciones compuestas de la regla "es_un_pato". Sin embargo si se aade un corte. es_un_pato (X) if suena_como_pato (X), tiene _dos_patas(X), camina_como_pato (X), !. Slo se obtendr el primer nombre de pato. La regla no permitir volver atrs al primer subobjetivo "suena_como_pato", despus que haya llegado al corte. Luego si colocamos el corte antes de todos los subobjetivos: es_un_pato (X) if !, suena_como_pato (X), tiene_dos_patas (X), camina_como_pato (X). Obtendr los dos nombres de patos, porque el prolog puede libremente volver atrs dentro de las tres clusulas, puede encontrar la primera respuesta y luego confirmar las otras, para volver atrs y hacer lo mismo con el otro nombre.

ESTRUCTURAS. En la mayora de las aplicaciones se necesita emplear tipos de datos ms complejos, que los que se han usado hasta este momento. la habilidad de construir estructuras de datos es fundamental, el Prolog permite el manejo de estas estructuras: Functores Listas Cadenas

FUNCTORES. Una relacin y sus objetos se escriben normalmente como: relacin (objeto, objeto) o predicado (argumento, argumento)

Con la relacin precediendo a los objetos encerrados entre parntesis. El prolog permite crear objetos que tengan otros objetos que son llamados objetos compuestos, lo que le permite aadir mas detalles a las clusulas. Consideramos los siguientes hechos
88

paga (felipe, comida) paga (felipe, telfono) paga (felipe, renta) paga (felipe, tienda) Los objetos compuestos le permiten aadir mas detalles a las clusulas. paga (felipe, comida (parrilla,20)) paga (felipe, telfono (cpt,350679,55.10)) paga (felipe, renta(dueo, 200)) paga (felipe, tienda(factura,350)) Ejemplo. posee (juan, perro (lassie))

Que puede ser interpretado como, juan posee un perro que se llama lassie. lo cual escrito de otra forma. posee (juan, lassie) No precisa si lassie es l titulo de una serie, o el nombre de un perro. Los objetos compuestos consisten de un operador (functor) y el subobjeto perteneciente a este. cuando un argumento es a su vez un predicado se llama functor. los objetos de un functor se llaman componentes y tienen la forma: functor(objeto1,objeto2,....objeton). y se usa como: predicado (argumento, functor(componente, componente,...)) No se debe esto indefinidamente, por que demasiados niveles de parntesis, haran al programa demasiado difcil de leer. sin embargo, utilizado con moderacin los objetos compuestos pueden hacer, un programa ms fcil de organizar. Declaracin de Dominios y Predicados de Objetos Compuestos. los objetos compuestos deben declarar en forma adecuada los dominios y predicados. Escogiendo el lenguaje de los functores y sus componentes, se puede obtener una buena estructura. es necesario declarar cada functor y los dominios de todos los componentes, cada functor debe ser nico, pero la parte derecha de una declaracin de dominio, puede tener varias alternativas de definicin expresadas por el conector or (;) En resumen las declaraciones de dominios para los objetos compuestos pueden ser escritos: domains dominio = alternativa1(d,d,...); alternatina2(d,d,..); alternativa3(d,d,...);...

89

En donde alternativa1; alternativa2; ... son functores arbitrarios pero diferentes y las notaciones (d, d,...) representa una lista de nombres de dominio que se declaran en otra parte o son uno de los dominios standard. La declaracin de dominio de los objetos compuestos tiene la siguiente forma: articulos = libro (titulo, autor); caballo(nombre); bote; cuenta_ahorro(integer)

Ejemplo. domains artculos = libro (titulo, autor) autor = autor (nombre, apellido) ttulo, nombre, apellido = symbol Dominios de los objetos compuestos. Lo cual podemos representar en una estructura de rbol. libro

titulo

autor

nombre

apellido

predicates tiene (nombre, artculos) En este caso artculos pueden ser definidos como un libro que tiene los argumentos, titulo y autor con autor como un functor. /* programa con functores */ domains titulo, autor = symbol pginas = integer publicacin = libro (titulo, paginas) predicates escrito_por (autor, publicacin) novela_extensa(titulo) clauses escrito_por(fleming, libro("Dr.N.",210)). escrito_por(melville, libro("Moby Dick", 600)).
90

novela_extensa(Titulo):escrito_por(_,libro(Ttulo, Extensin)), Extensin >300. goal: novela_extensa (Moby Dick). /* programa con functores */ domains reporte = administracin (cargo, sueldo); informtica(cargo, sueldo); contabilidad(cargo, sueldo) symbol integer

nombre, cargo = sueldo = predicates personal (nombre, reporte) goal clearwindow, write("personal de informtica"), nl, personal(X, informtica ( Y, Z) ), write (" ", X, " ", Y, "S/.", Z), nl, fail. clauses personal(carlos, administracin(limpieza, 300)). personal(javier, contabilidad(contador, 800)). personal(andrs, informtica(operador, 400)). personal(marcos,administracin(gerente, 3000)). personal(miguel, informtica(jefe, 1800)). Respuesta: personal de informtica andrs operador miguel jefe S/. 400 S/. 1,800

/* rbol genealgico de una raz */ cathy michael carlos hazel melody jim eleonor

domains rbol = rama(string, rbol, rbol); vaco( ) predicates imprime (rbol) clauses imprime (vaco). imprime(rama (X, Y, Z)) :- write(X), nl, imprime(Y), imprime(Z).

91

Goal

clearwindow, imprime(rama("Cathy", rama("Michel", rama("Carlos", vaco, vaco), rama("Hazel", vaco, vaco)), rama("Melody", rama("Jim", vaco, vaco), rama("Eleonor", vaco, vaco)))).

RECURSIVIDAD. La recursividad es una tcnica de programacin muy importante y es usada normalmente en dos situaciones: 1. Cuando las relaciones son descritas con la ayuda de las mismas relaciones 2. Cuando los objetos son compuestos son parte de otros objetos compuestos (objetos recursivos). En el primer caso analizaremos el predicado factorial a travs de un hecho y una regla, de manera cuando se ingrese el objetivo: factorial (N, F ) Que indicara verdadero si F es igual a N! esto es s: F = N * (N-1) * (N-2) * .... 3 * 2 * 1

/* programa factorial */ domains n, f = integer predicates factorial (n, f) clauses factorial (1,1). factorial (N, Res) :- N > 0, N1 = N-1, factorial (N1, Facn1), Res = N * Facn1. goal factorial (4, Respuesta) Se tiene la siguiente secuencia de ejecucin - factorial (4, Res) :- 4 > 0, N1 = 4 - 1, factorial(4-1, Facn1), Facn1. - factorial (3, Facn1) :- 3 > 0, N1 = 3-1, factorial(3-1, Facn1), Res = 3 * facn1.
92

Res = 4 *

- factorial (2, Facn1) :- 2 > 0, N1 = 2-1, factorial( 2-1, Facn1), Res = 2 * Facn1. - factorial (1, Facn1) El cual se evaluara , usando el hecho. factorial (1, 1). El goal es satisfecho dando el valor a Facn1: factorial (2-1, Facn1) tiene xito para factorial (3-1, Facn1) tiene xito para factorial (4-1, Facn1) tiene xito para factorial (4, Res) tiene xito para factorial de 4 es 24 El comportamiento ser el siguiente: Goal : factorial(4, Respuesta) llama a: factorial(4, Res) que llama: factorial(4-1, Facn1), 4 * facn1 que llama: factorial(4-1-1, Facn1), (4-1) * Facn1 que llama: factorial(1, 1). Otra forma de construccin del programa se representa: predicates factorial (integer, real) factorial_aux (integer, real, integer, real) clauses factorial (N, Factn) :- factorial_aux(N, Factn, 1,1). factorial_aux(N, Factn, I, P) :- I <= N, Newp = P * I, Newi = I + 1, factorial_aux(N, Factn, Newi, Newp). factorial_aux(N, Factn, I, Factn) :- I > N. Objetos Recursivos La recursin puede ser usada describir objetos donde l numero de elementos no es conocido hacia adelante. considerando el siguiente caso: Ejm. Que objeto puede describir los nombres de todos los alumnos en un saln de clase, sin conocer l numero de personas en adelante? Para solucionar este problema se har una declaracin de dominio denominada lista_clase que describe una clase vaca sin estudiantes. listas_clase = vaca Luego formalizaremos la recursividad lista_clase = clase(nombre, lista_clase) Para esta definicin un objeto tpico podra ser: clase(pedro, X)
93

Facn1 Facn1 Facn1 Res

=1 =2 =6 = 24

Que simboliza una lista_clase con pedro como primer miembro y X simboliza una lista_clase pequea. (sin pedro). Una clase formada por dos estudiantes podra describirse as: clase (pedro, clase(jaime, vacia)) Una clase con tres estudiantes tendrn la forma: clase (andres, clase(pedro, clase(jaime, vacia))) Se deber observar que: clase(nombre, lista_clase) Es un objeto compuesto donde el functor es clase, nombre es un estudiante de la clase y lista_clase contiene los otros estudiantes. La declaracin final del dominio contiene dos diferentes alternativas: lista_clase = clase(nombre, lista_clase); vaca Esto nos permite visualizar como un objeto compuesto es parte de otro objeto compuesto efectuando un proceso recursivo.

LISTAS. Una lista es otra forma de un objeto compuesto, es una importante estructura de datos, una coleccin de elementos separados por comas y colocados entre corchetes y corresponde en forma similar al uso de los arreglos. Ejm. lista de enteros lista de smbolos lista de cadenas lista vacia ....... ....... ....... ....... [1, 2, 3, 4, 5, 8, 13] [mamfero, reptil, aves] ["mamfero", "reptil", "aves"] []

Declaracin de dominios. Las declaraciones de dominios para las listas no son muy diferentes de las declaraciones de otros tipos de objetos. En su forma general es como sigue. domains lista_cosas = cosas * cosas = symbol El asterisco indica que hay cero o ms elementos en la lista. la primera lnea de la declaracin significa que cada objeto de la lista lista_cosas pertenece al tipo cosas.
94

Listas. Todos los objetos de una lista pueden ser de cualquier tipo incluyendo otras listas, sin embargo, todos los elementos de la lista, deben pertenecer al mismo dominio. La segunda lnea define a "cosas" en trminos de las declaraciones de dominios estndares. La declaracin de la lista podra ser mas sencilla si se utiliza uno de los tipos estndares de dominio en la primera lnea. Ejm. domains listanumeros = integer *

Declara que todos los objetos de "listanumeros" son enteros, no se necesita una segunda lnea. Manipulacin de Listas El Prolog procesa las listas dividindola en dos partes Cabeza y Cola. La cabeza de una lista es el primer elemento de la izquierda, la cola es el resto de los elementos. Ejm. lista [1, 2, 3, 4, 5] Cabeza es el elemento 1 Cola ser la lista [2, 3, 4, 5]

El Prolog utiliza una barra vertical ( | ) para separar la cabeza de la cola en una lista. [Cabeza | Cola] Debido a que una lista es solo otro tipo de objeto, deber encerrarse entre parntesis, cuando se utilice en una clusula. predicado ( [Lista] ) predicado ( [Cabeza | Cola] ) As mismo se pueden tener varios objetos para un nico predicado. predicado( [Lista1], [Lista2], [Lista3] ) Tambin se puede utilizar variables en una lista: [X | Y ]

Ejm. Si se trata de satisfacer el objetivo: goal puntaje ( [X | Y] ) Ser satisfecho al encontrar el hecho: puntaje( [0, 1, 2, 3, 4, 6] ). El Prolog responde: La variable X toma el valor de la cabeza X= 0 el valor de Y ser la cola Y = [1, 2, 3, 4, 5, 6 ] Emparejamiento de Listas. Las variables libres sern ligadas con los valores de cabeza y cola de la lista.
95

Lista1 [X, Y, Z] [7] [1,2,3,4] [1, 2]

Lista2 [alberto, come, helado] [X | Y] [X, Y | Z] [3 | X]

Emparejamiento X = alberto, Y = come, Z = helado X=7,Y=[] X = 1, Y = 2, Z =[3,4] falla

/* programa con listas */ domains letras = symbol* numero = reales* predicates ciudades (letras) cantidad (numero, letras, real) clauses ciudades ( [a, b, c, d, hola]). ciudades ( [lima, tacna, ica] ). cantidades ( [3.8, 6.5, 3.2, e-5, 0.5], [h, h, h], 0.50) goal: ciudades (B). B= [A, B, C, D, Hola] B= [lima, tacna, ica] 2 soluciones goal: ciudades ( [X | Y] ), nl X = [a] Y = [b, c, d, hola] X = [lima] Y = [tacna, ica] 2 soluciones goal: ciudades (A, B, C, D, E) A= a , B= b , C= c , D= d , E= hola 1 solucin goal: ciudades (a,[_]) True /* programa de listas */

domains lista_letras = symbol*


96

predicates letras_griegas (lista_letras) clauses letras_griegas ([alfa, beta, gamma, delta, epsilon, etc]). goal: letras_griegas ([Cabeza | Cola]) Cabeza = alfa 1 solucin goal: letras_griegas ( [A, B | C] ) A=alfa, B=beta C = [gamma, delta, epsilon, etc] goal: letras_griegas ( [A, B, C, D, E, F | G] ) A = alfa, B = beta, C = gamma, D = delta, C = epsilon, F = etc, G = [ ] Cola = [beta, gamma, delta, epsilon, etc]

LISTAS DE LISTAS Se pueden hacer estructuras tan complejas como se quiera, es decir se pueden poner listas dentro de listas. Ejemplo la lista animales ([mamferos, reptiles, pajaros, peces]) Pueden darse con mayor profundidad, donde cada elemento podra a su vez ser una lista. Animales ( [[mono, bfalo, rata], [serpiente, iguana, cocodrilo], [paloma, tucn], [sardina, salmn]] ) Tambin cada elemento puede tener un functor y una lista como el objeto del functor. animales ( mamifero ( [mimo, bufalo, rata] ), reptiles([serpiente, iguana, cocodrilo]), pajaros( [paloma, tucan] ), peces( [sardina, salmon] ) ). USO DE LISTAS Las operaciones tpicas que se realizan con listas incluyen las siguientes operaciones. 1. Verificar si un objeto esta dentro de una lista, es decir encontrar el miembro
97

2. 3.

de una lista. Concatenar dos listas, obteniendo una tercera lista, que corresponde a la unin de ambas listas. Adicionar con nuevo objeto a la lista o borrarlo de ella.

Miembro de una lista Se implementara la relacin de la siguiente forma: miembro (X, L) Donde X es un objeto y L es la lista. Si se tiene el objetivo miembro (X, L) ser verdadero si X esta dentro de la lista miembro ( B, [A, B, C] ) miembro (B, [A, D, C) Es verdadero No lo es.

El programa para validar el objetivo puede basarse en las siguientes observaciones X es miembro de L si se cumple: (1) (2) X es la cabeza de L X es miembro de la cola de L.

Lo cual se puede escribir en dos clusulas: miembro (X, [X | Cola]). miembro (X, [Cabeza | Cola]) if miembro (X, Cola). [X | Y] X Y [Y] = [ X' | Y'] X' Y' /* verifica un miembro de lista */ domains nombrelist = nombre * nombre = symbol predicates
98

(1ra.) Simple Hecho (2da.) Es una Regla

miembro (nombre,nombrelist) clauses miembro(Nombre,[Nombre |_]. miembro(Nombre,[_|Cola]) if miembro(Nombre, Cola). goal goal miembro (susan, [juan, beatriz, susan]). miembro (X, [a, b, c, d, e]).

Los predicados especificados en la clusula se pueden analizar desde dos puntos de vista: - El primero desde un punto de vista declarativo que especifica que, dada una lista, nombre es miembro de la lista si es cabeza de la lista; si no nombre es miembro de la lista si es miembro de la cola. - Desde un punto de vista procedural, las dos clusulas pueden ser interpretadas como: encontrar un miembro de una lista, buscar en la cabeza, de otra forma buscar en la cola.

Estos dos puntos de vista corresponden a los objetivos: goal: miembro (2, [1, 2, 3, 4]). goal: miembro (x, [1, 2, 3, 4]). - El primer objetivo verifica que algo es verdadero. - El segundo objetivo encuentra todos los miembros de la lista. Lo cual nos muestra que si nosotros construimos una clusula desde un punto de vista, trabajara, tambien para el otro punto de vista. /* programa con listas */ domains lista = integer* predicates busca(integer) lee(integer, lista) goal busca (4), write ("lo encontr"); write ("no lo encontr"). clauses busca (X) if lee (X, [1, 2, 3, 4, 5, 6]). lee (X [X | Cola]). lee (X, [_ | Cola]) if lee( X, Cola). Rpta. True
99

Listar elementos de una Lista Para mostrar los elementos de una lista podemos definir los siguientes predicados: escribir_lista ([ ]). escribir_lista ([Cabeza | Cola] if write(Cabeza),nl, escribir_lista(Cola). - La primera clusula indica que debe parar cuando no encuentre elementos en una lista (la lista vaca). - La segunda es una regla que indica: escribir la cabeza de la lista, luego pasar a una nueva lnea, luego escribir la cola de la lista. Ejercicio: Escribir un programa que use listas y permita identificar la capital de 10 Pases. /* programa con lista- capitales */ domains lista_ciudad = symbol* ciudad = symbol nombre = symbol predicates capitales(ciudad, lista_ciudad) pas(nombre, ciudad) busca(ciudad) clauses busca(Ciudad) if capitales(Ciudad,[santiago, lima, quito]). capitales (Ciudad,[Ciudad|_]). capitales (Ciudad,[_|Cola] if capitales(Ciudad,Cola). pas (per, lima). pas (chile, santiago). pas (ecuador, quito). pas (argentina, buenos aires). -goal: pas(M, A), busca(A), write(A, "Es la capital de ", M), nl, fail. Recursividad con listas Muchas de las operaciones que se ejecutan sobre listas, se escriben fcilmente como operaciones recursivas, es decir, operaciones que se llaman as mismas. /*Programa de Recursividad con Listas*/ domains listas_ciudad = ciudad* ciudad = symbol predicates ciudad_peru (ciudad) ciudad_chile (ciudad) miembro (ciudad, lista_ciudad) clauses
100

ciudad_per( Ciudad ) if miembro(Ciudad, [lima, tacna, trujillo]). ciudad_chile( Ciudad ) if miembro(Ciudad, [arica, santiago, iquique]). miembro (Ciudad, [Ciudad | _ ] ). miembro (Ciudad, [ _ | Cola] ) if miembro (ciudad,cola). goal: ciudad_per(lima) True.

Las listas y las definiciones recursivas de miembros hacen lo mismo en menos espacio que un programa sin listas. Su uso tambin permite aadir mas ciudades y estados a los hechos sin tener que hacer una carga lista de todos los predicados para cada uno.

/* Programa de Listas */ domains lista_nombre = nombre* nombre = symbol predicates miembro(nombre, lista_nombre) clauses miembro (Nombre, [Nombre| _ ] ). miembro (Nombre, [ _ | Cola] ) if miembro(Nombre,Cola). goal: miembro (juan, [juan, leonardo, eric, franco]) Rpta. True.

Lo cual se interpreta como encontrar un miembro de una lista, encontrar su cabeza, de otra manera encontrar un miembro en su cola. /*Manejo Interactivo de dos Listas*/ domains listas = symbol* predicates lista_profesores (string, lista) lista_cursos (string, lista) ubica_profesor (string) ubica_curso (string) profesores cursos goal clearwindow, profesores, cursos. clauses profesores if write("Relacin de Profesores"), nl, write("================"),nl, ubica_profesor (P), write("\t", P), nl, fail.
101

cursos if

write ("Relacin de Cursos"), nl, write ("=============="),nl, ubica_curso (C), write ("\t", C), nl, fail.

ubica_profesor (Profesor) if lista_profesores (Profesor,["Mejia", "Crdenas","Lpez", Neyra"]). lista_profesores (Profesor, [Profesor | _ ] ). lista_profesores(Profesor, [ _ | Cola] ) if lista_profesores (Profesor, Cola). ubica_curso (Curso) if lista_cursos (Curso,["Anlisis", "MBI", "MBII", "PCP"]). lista_cursos(Curso,[Curso|_]). lista_cursos(Curso,[_|Cola) if lista_cursos(Curso, Cola). Prolog responde Relacin de Profesores ================= Mejia Crdenas Lpez Neyra Relacin de Cursos ============== Anlisis MBI MBII PCP Anexar o aadir listas El prolog a menudo constituye clusulas para un predicado, los cuales a su vez pueden anexar o aadir listas a otra lista. concatenar (L1, L2, L3) Aadir Listas. As para concatenar una lista L2 a una lista L1 para formar una lista L3, la cabeza de L1 deber ser la cabeza de las dos listas, lo que significa que la primera y segunda lista se combinan para producir una nueva lista, y la segunda lista es aadida por el final a la primera lista, as, se trata de concatenar la primera lista con una lista vaca, resulta en la misma lista.
102

[X | L1] X L1 L2 |_______________________| L3 [X|L3] X L3 Una forma recursiva de lograr la adicin es utilizar las siguientes clusulas. concatenar ([ ], L, L ). concatenar ([ X | L1], L2, [X | L3]) if concatenar(L1, L2, L3). Con lo cual lograra concatenar las listas dadas. Ejemplo goal: concatenar([a, b, c],[d, e, f], L). lo cual resultar en: L = [ a, b, c, d, e, f ] Ejemplo si lo usamos en otra forma como. goal: concatenar (L1, L2, [a, b, c]). L1 = [ ] L2 = [a, b, c] L1 = [a] L2 = [b, c] L1 = [a, b] L2 = [c] L1 = [a, b, c] L2 = [ ] Ejemplo: goal: concatenar (Antes,[mayo|Despues],[ene,feb,mar,abr, may, jun, jul,ago,set, oct, nov, dic]). obteniendose: Antes = abr Despues = jun Ejemplo:
103

Un predicado (miembro de lista) puede ser definido utilizando el predicado de concatenar. miembro (X, L) if concatenar (L1, [X, L2] ,L). Lo cual significa que X es miembro de una lista L si L puede ser descompuesto en dos listas de manera que la segunda lista tiene a X como cabeza. Tambin se puede utilizar el manejo de listas para dividir una lista. ejemplo goal: append ([a, b], Lista, [a, b, c, d, e, f]) Lista = [c, d, e, f] 1 solucion

/* programa para anexar listas */ domains lista_enteros = integer* predicates anexar (lista_enteros,lista_enteros,lista_enteros) escribe_lista (lista_enteros) clauses anexar ([ ], Lista, Lista). anexar ([X | L1], Lista2, [X | L3] ) if anexar (L1,lista2, L3). escribe_lista ([ ]). escribe_lista ([Cabeza | Cola]) if write(Cabeza), nl, escribe_lista(Cola). Probar las metas goal: anexar ( [1,2,3], [5,6], L ) and escribe_lista(L). goal: anexar ( [1,2],[3], L ) and anexar (L, L, L1), escribe_lista (L1). goal: anexar (L1, L2, [1, 2, 4]). Agregando un elemento. Para agregar un elemento a una lista, lo mas sencillo es colocar el elemento al comienzo de la lista de manera que este se vuelva cabeza de la lista. Ejemplo.
104

adiciona_elem (X, L, [ X | L ] ). Borrando un elemento de la lista. Para borrar un elemento de la lista se puede establecer la relacin borrar (X, L, L1) Donde L1 es igual a la letra L con el elemento ya removido. Si X es la cabeza de la lista entonces el resultado luego de borrar, ser la cola de la lista. Si X se encuentra en la cola ser borrado de ella en forma recursiva. borrar (X, [X | Cola], Cola). borrar (X, [Y | Cola], [Y | Cola1] if borrar (X, Cola, Cola1). Ejemplo borrar ( a, [a, b, a, a], L ). L = [b, a, a] L = [a, b, c] L = [a, b, a] Permutaciones. Para establecer las permutaciones en una lista se realizara con dos argumentos, que sern dos listas, de manera que una es la permutacin de la otra. permutacin ([a, b, c], P). P = [a, b, c] P = [a, c, d] P = [b, a, c] La formulacin se basa considerando dos casos: dependientes de la primera lista. 1. Si la primera lista esta vaca lo estar entonces la segunda.

2. Si la primera lista no esta vaca entonces tiene la forma [X | L] primero se permuta L obteniendo L1 y luego se inserta X en alguna porcin dentro de L1. /* programa para el calculo de la interseccin */ domains lista = integer * predicates
105

intersecta( lista, lista, lista ) miembro (integer, lista) clauses miembro ( X, [X | _ ] ). miembro ( X, [_Y| _] ) if miembro(X, Y). intersecta ( [ ] , _ , [ ] ). intersecta ( [H | L1], Y, [H | L3] ) if miembro (H, Y) , ! , intersecta ( L1, Y, L3 ). intersecta ( [_ | L1], Y, Z ) if intersecta( L1, Y, Z). goal: intersecta ( [1,2,3,4,6,7,8], [4,3,6,7,9,5], L ). Respuesta: L= [3, 4, 6, 7] ENTRADAS Y SALIDAS SIMPLES Predicados de escritura: 1. Write.- Este predicado puede ser utilizado con un numero opcional de argumentos. write (arg1, arg2, arg3 ... argn) Los argumentos pueden ser constantes (tipos standard de dominios) o variables. Cuando se usan variables estas debern estar instanciadas con anterioridad. Ejemplo alumno (Alumno, Grado), write (Alumno, "esta en el", Grado, "grado"), nl, write ("_____________________________"). Resultado: juan esta en el quinto grado Caracteres de control del predicado Write \ Indica que el siguiente carcter es de control \n Carcter de control para una nueva lnea \t Carcter de control para tabulacin \b Carcter de control para un espacio atrs. Ejemplo write ("\n, Saludos"), busca (X), write ("\t", X ), nl, fail. 2. Writedevice (nombre_archivo_simblico).106

Este predicado indica a que dispositivo enviara el predicado write la informacin, puede trabajar con un archivo simblico predefinido (Pantalla o Impresora) o un archivo que haya abierto. Dispositivos standares: Dispositvo Dispositivo Predefinido Salida printer puerta paralela screen monitor keyboard teclado com1, com2 puertos seriales Ejemplo write ("\n saludos"),busca (X), write ("\t", X), nl, writedevice (printer), fail. 3 Formato Cadena.Escribir una salida formateada de un determinado numero de argumentos, los cuales pueden ser constantes o variables instanciadas. writef (formato, arg1, arg2, arg3, ... argn ) La especificacin que utiliza el campo formato es: % - m. p. f

los caracteres que van despus del % son opcionales e indican: "-" Este carcter indica justificacin a la izquierda, por defecto es justificacin a la derecha. Ejemplo % - 6.1 para el nmero 42.8

4 2 8 b b % 6.1 4 2 . 8 "m" % 6.1 "p" % 6.1 f Especifica la anchura del campo Indica un campo de 6 cifras. Especifica la precisin de un nmero, el numero de decimales o el numero mximo de caracteres a imprimir en una cadena. indica 1 decimal. Especifica el tipo de formato a utilizar, los cuales se indican por los siguientes caracteres: (c ) Representacin de un carcter
107

(d ) (e ) (f ) (g ) (s ) (u ) (x )

Representacin de un nmero decimal Escribe nmeros reales en notacin exponencial. Nmeros reales en notacin decimal fija (tambin por defecto). Escribe usando un formato corto Representacin de un string Representacin de un entero no signado. Representacin en un nmero hexadecimal.

Ejemplo. writef("valor de X = % 6.1f ", "es el resultado obtenido", X) writef("A>%-5.1, Coste=$%3.2f \n ", P, B,) writef("valor de X = \n% 15", "es el resultado obtenido", X) writeln("char: %c, decimal: %d, unsigned: %u", 'a', 55, -1) goal A=one, B=330.12, C=4.3333375, D="one, two, three", writef ("A=`%-7'\n B=`%3.2'\n",A,B), writef ("A=`%'\n B=`% 8.4e'\n",A,B),nl writef ("C=`%-7.79'\n D =`% 7.7'\n,C,D), writef ("C=`% 7.0 f '\n D=`% 0'\n",C,D), writef("char: % C, decimal: %D, hex: % unsigned: %u", 97, `a', 33, 1) Respuesta. A = `one' B = `330.12' A = `one' B = `3.30012e+02' C = `4.3333375' D = `one two' C = `4 ' D = `one two tree' char: a, decimal: 97, hex:21, unsigned:65535 Predicados de Lectura El turbo Prolog tambin puede leer informacin desde el teclado o desde un archivo en disco, desde un carcter hasta una lnea entera de caracteres. 1. readint (variable_entera) lee un valor entero, la variable debe estar libre y el valor instanciado debe corresponder al dominio. Lee desde el dispositivo de entrada. 2. readreal (variable_real) lee un numero real 3. readchar (variable_caracter) lee un carcter 4. readln (cadena) lee una cadena, hasta que encuentre un carcter ASCII de retorno de carro. 5. readterm (dominio_termino) lee un objeto escrito mediante el predicado write, la variable se vincula al objeto del dominio. 6. readdevice (nombre_archivo_simb\lico) permite especificar el dispositivo de lectura asignado.
108

/* predicado de lectura */ domains persona = p (nombre, edad, telfono, ocupacin) edad = integer nombre, telfono, ocupacin = string. predicates leer_persona (persona) ejecutar goal ejecutar

clauses leer_persona (p (Nombre, Edad, Telfono, Ocupacin)) if write ("Que Nombre?"), readln (Nombre), write ("Ocupacin?"), readln(Ocupacin), write("Edad?"), readent(Edad),write("Telfono Nro. ?"),readln(Telfono). ejecutar if leer_persona (P),nl,write(P),nl, nl, write("informacin OK (S/N)"),readchar(Ch), Ch = 's'. ejecutar if nl, nl write("Trate otra vez"), nl, nl, ejecutar.

Fuentes Bibliogrficas
INTELIGENCIA ARTIFICIAL, CONCEPTOS, TCNICAS APLICACIONES Jos Mompin Poblete. Editorial Marcombo Barcelona. Y

APLICACIONES DE LA IA. EN LA ACTIVIDAD EMPRESARIAL, CIENCIA Y LA INDUSTRIA. Webdy B. Rauch Hindin. Edit. Daz de Santos. INTELIGENCIA ARTIFICIAL UN ENFOQUE MODERNO. Stuart Russell, Peter Norvig PRINCIPIOS DE LA INTELIGENCIA ARTIFICIAL. Nils J. Nilsson - Edit. Daz de Santos EXPERT SYSTEMS. Giarratano Riley BASES DE DATOS Y SISTEMAS EXPERTOS. D. B. Frost - Edit. Daz de Santos LGICA PROPOSICIONAL. Grillo Annunziata SISTEMAS EXPERTOS. Paul Harmon Y Davis King. Edit.. Daz de Santos

109

SISTEMAS EXPERTOS MTODOS Y HERRAMIENTAS. A. Dussauchoy in Chatain. Edit. Paraninfo. VISUAL PROLOG. Versin 5.0 Manual Programacin PROLOG, PROGRAMACIN Y APLICACIN MULTIMEDIA. A.A. Becken Inteligencia Artificial. Edit. Anaya PROGRAMACIN EN LISP. C. Quinnec EXPERT SYSTEMS AND FUZZY SYSTEMS. Constantin Virgil Negoitia. Hunter College City - University New York LOGIC AND FUZZIG RELATIONS. E. Trillas And J.L. Castro Journal of Experimental & Theoretical Artificial Intelligence Boletin Volume 10 JETAI 1998. INTELIGENCIA ARTIFICIAL. PROGRAMACIN HEURSTICA. J, Pazos Sierra. Edit. Paraninfo. Redes Neuronales y Sistemas Difusos, Bonifacio Martn del Bro Alfredo Sanz Molina Editorial Alfaomega 2002 Mxico.

110

You might also like