lunes, 17 de junio de 2019

Backtracking


Es un algoritmo general para encontrar todas (o algunas) soluciones a algunos problemas de cómputo, especialmente los problemas de satisfacción restringida , que incrementan los candidatos a las soluciones y abandonan a un candidato ("backtracks") tan pronto como determina que el candidato no puede Se completará a una solución válida. 

El ejemplo clásico del libro de texto sobre el uso del retroceso es el rompecabezas de las ocho reinas, que solicita todos los arreglos de ocho reinas de ajedrez en un tablero de ajedrez estándar para que ninguna reina ataque a ninguna otra. En el enfoque de retroceso común, los candidatos parciales son arreglos de k reinas en las primeras k filas del tablero, todas en diferentes filas y columnas. Cualquier solución parcial que contenga dos reinas mutuamente atacantes puede ser abandonada.



El algoritmo de retroceso enumera un conjunto de candidatos parciales que, en principio, podrían completarse de varias maneras para dar todas las soluciones posibles al problema dado. La finalización se realiza de forma incremental, mediante una secuencia de pasos de extensión candidatos.
Conceptualmente, los candidatos parciales se representan como los nodos de una estructura de árbol, el árbol de búsqueda potencial. Cada candidato parcial es el padre de los candidatos que difieren de él en un solo paso de extensión; Las hojas del árbol son los candidatos parciales que no se pueden extender más.
El algoritmo de retroceso recorre este árbol de búsqueda de forma recursiva, desde la raíz hacia abajo, en primer orden de profundidad. En cada nodo c, el algoritmo verifica si c puede completarse para una solución válida. Si no puede, todo el subárbol enraizado en c se omite (se recorta). De lo contrario, el algoritmo (1) verifica si c en sí es una solución válida, y si es así lo informa al usuario; y (2) enumera recursivamente todos los subárboles de c. Las dos pruebas y los hijos de cada nodo se definen mediante procedimientos dados por el usuario.
Por lo tanto, el árbol de búsqueda real que atraviesa el algoritmo es solo una parte del árbol potencial. El costo total del algoritmo es el número de nodos del árbol real por el costo de obtener y procesar cada nodo. Este hecho debe tenerse en cuenta al elegir el posible árbol de búsqueda e implementar la prueba de poda.




Formas de aprendizaje de un agente basado en conocimiento


Base de Conocimiento

El componente principal de un agente basado en conocimiento y Su base de conocimiento (ó KB) y Conjunto de representaciones de hechos acerca del mundo y Cada representación individual se conoce como sentencia (sentence ) y Las sentencias se expresan en un lenguaje conocido como: y Lenguaje de representación de conocimiento y Se necesita una manera de: y Añadir una nueva sentencia a la KB (método declarativo): Tell y Preguntar qué se conoce Preguntar qué se conoce: Ask y La respuesta proviene de lo que ha dicho a la KB previamente.

Inferencia

Segundo componente principal de un agente basado en conocimiento y Determinar qué sigue a partir de lo que se ha dicho a la KB (tell) es el trabajo del mecanismo de inferencia.

Puedes encontrar mas información aquí


Niveles de agentes basado en conocimiento


Puedes encontrar mas información aquí

Sistemas expertos


Sistemas expertos (ES, siglas del término Expert System) es un sistema de información basado en el conocimiento que usa su conocimiento de un área de aplicación compleja y específica a fin de actuar como un consultor experto para los usuarios finales. Los sistemas expertos proporcionan respuestas sobre un área problemática muy específica al hacer inferencias semejantes a las humanas sobre los conocimientos obtenidos en una base de conocimientos especializados. 
Su uso es especialmente recomendado en las siguientes situaciones:
·         Cuando los expertos humanos en una determinada materia son escasos.
·         En situaciones complejas, donde la subjetividad humana puede llevar a conclusiones erróneas.
·         Cuando es muy elevado el volumen de datos que ha de considerarse para obtener una conclusión.

Como se crean:



Ingeniería del conocimiento


La ingeniería del conocimiento es aquella disciplina moderna que forma parte de la Inteligencia Artificial y cuyo fin es el diseño y desarrollo de Sistemas Expertos. Para esto, se apoya en metodologías institucionales y en las ciencias de la computación y de las tecnologías de la información, intentando representar el conocimiento y razonamiento humanos en un determinado dominio, dentro de un sistema artificial.
El trabajo de los ingenieros del conocimiento consiste en extraer el conocimiento de los expertos humanos en una determinada área, y en codificar dicho conocimiento de manera que pueda ser procesado por un sistema.

La ingeniería del conocimiento engloba a los científicos, tecnología y metodología necesarios para procesar el conocimiento. Su objetivo es extraer, articular e informatizar el conocimiento de un experto.

Características
El problema es que la ingeniería del conocimiento no es un experto en el campo que intenta modelar, mientras que el experto en el tema no tiene experiencia modelando su conocimiento (basado en la heurística) de forma que pueda ser representado de forma genérica en un sistema. La ingeniería del conocimiento engloba a los científicos, tecnología y metodología necesarios para procesar el conocimiento. Su objetivo es extraer, articular e informatizar el conocimiento de un experto.
Puedes encontrar mas información aquí

Listas en Prolog


Una lista es una estructura de datos muy utilizada en programación simbólica. El trabajo con listas en PROLOG permite aumentar la potencialidad del lenguaje. Frecuentemente, los predicados con listas son recursivos.
Una lista es una secuencia ordenada de elementos clasificados que puede tener cualquier longitud. Las listas pueden utilizarse para representar conjuntos, pero existen diferencias importantes:
·         En un conjunto el orden de los elementos no es relevante. En un conjunto no se repiten elementos.
·         A pesar de esto, la mayoría de las operaciones de conjunto, se pueden implementar utilizando listas.
Una lista en PROLOG se define como un conjunto de daos homogéneos es decir del mismo tipo.
Se denota de la siguiente manera:
H|T]
Donde:
H (Head): Representa la cabeza de la lista.
T (Tail): Representa el resto de la lista, es decir la cola de la cola.

Operaciones con listas

La operación de pertenencia se llamará miembro. Permite determinar si un elemento pertenece o no a una lista. El predicado miembro se utiliza como:
¿Es el elemento X miembro de la lista L?
En PROLOG seria:
?-miembro(c,[a,b,c]).
YES
Puedes encontrar mas información