lunes, 27 de mayo de 2019

4.5 Espacios de Busqueda



Cuando se resuelve un problema, se busca la mejor solución entre un conjunto de posibles soluciones. Al conjunto de todas las posibles soluciones a un problema concreto se llama espacio de búsqueda. Cada punto en el espacio de búsqueda representa una posible solución. Cada posible solución se le puede asociar un fitness o un valor que indicará cómo de buena es la solución para el problema. Un algoritmo genético (AG) devolverá la mejor solución de entre todas las posibles que tenga en un momento dado.

Entonces parece que buscar una solución se reduce a buscar un valor extremo (mínimo o máximo) en el espacio de búsqueda. A veces el espacio de búsqueda puede ser bien definido, pero en la mayoría de las ocasiones sólo se conocen algunos puntos en el espacio de búsqueda. Cuando se usa un AG las posibles soluciones generan otras a medida que el genético evoluciona.

La resolución de un problema puede expresarse como la busqueda del extremo de una función Aquí resolvemos ese problema, este es un algorítmo genético que calcula el máximo de una función. La gráfica representa un espacio de busqueda y las líneas verticales son posibles soluciones. La línea roja es el mejor individuo de la población y las verdes el resto.

Pulsa el botón Empezar para que el genético comience, el botón Parar detendrá la ejecución, en el botón Paso a Paso se ejecutará un único paso creando una nueva población y el botón Reiniciar creará una nueva población inicial.

El problema estriba en que la búsqueda puede ser muy compleja por diversas razones, como por ejemplo no saber dónde buscar una solución o dónde empezar a buscarla. Existen muchos métodos que se usan para buscar una solución válida, pero no necesariamente obtienen la mejor solución. Algunos de estos métodos son los algoritmos de escalada, backtracking o vuelta atrás, búsqueda a ciegas y los algoritmos genéticos. Las soluciones que encuentran estos tipos de búsqueda suelen ser buenas soluciones, pero no siempre encuentran la óptima.


4.4 Consulta de una base de clausulas



Tipos de datos estructurados:
  • Átomos: Constantes y variables de cadena.
  • Listas, representadas entre [ ].
Tipos definidos por el usuario. Las reglas para definir relaciones pueden actuar como tipos de usuario.




4.3 Representación clausada del conocimiento



Representación del conocimiento es un termino para referirse a representaciones pensadas para el procesamiento por ordenadores modernos, en particular, para representaciones compuestas por objetos explícitos y de afirmaciones sobre ellos.
Representar el conocimiento mediante cláusulas permite a los ordenadores sacar conclusiones de conocimiento previamente almacenados.

Tipos de Cláusulas
Ejemplos
Enunciado 1.
Si algunos perros son mamíferos, luego todos son mamíferos.
Enunciado 2.
Todos los colibrís son aves.
Este colibrí es ave.

Conclusión:
Para que un programa experto reconozca
los enunciados, se tiene que convertir en clausulas o reglas, para que estas sean entendidas por el sistema y arroje un resultado final.
es importante mencionar que la sintaxis de las cláusulas; se debe de respetar los
()
,
_
.


4.2 semántica de los programas lógicos


La cabeza es un término simple. Por ejemplo, p (X, 12) podría ser la cabeza de una cláusula del predicado p/2. Es decir, todas las cláusulas de un mismo predicado tienen en la cabeza un término con el mismo functor y aridad, aunque los argumentos pueden ser distintos.
El cuerpo no es más que el conjunto de condiciones que deben cumplirse (tener éxito) para que el predicado tenga éxito si lo invocamos con un objetivo que unifique con la cabeza.
Semántica de los programas lógicos
Ejemplo:
Razonamiento lógico:
tiempo(lluvioso) --> suelo(mojado)
Representación correcta en prolog:
suelo(mojado):-tiempo(lluvioso).suelo(mojado)
Comentarios entre /**/
Objetos de Datos
Tipos de Datos primitivos: variables y constantes.
  • Enteros
  • Reales
  • Caracteres
  •  
Los identificadores con minúscula representan hechos, los que van con mayúscula variables.
Las reglas se utilizan en prolog para significar que un hecho depende de uno o más hechos.
Una reglas consiste en una cabeza y un cuerpo, unidos por el signo ":-".
La cabeza está formada por un único hecho.
El cuerpo puede ser uno o mas hechos (conjunción de hechos), separados por una coma (","), que actúa como el "y" lógico.
Las reglas finalizan con punto (".").
Semántica Lógica
El pasaje a forma clausal se puede realizar aplicando cinco reglas
SEMANTICA DE LOS PROGRAMAS LÓGICOS
Alumno: Saul Adan Aguilar Vera
Eliminar implicaciones
Desplazar negaciones hacia interior de la sentencia (sobre las conjunciones, disyunciones y cuantificadores) hasta quedar delante de fórmulas atómicas.
Desplazar las disyunciones hacia el interior de la sentencia (sobre las conjunciones y cuantificadores) hasta quedar conectando únicamente literales.


4.1 Introducción al modelo de programación lógica


En los comienzos de los años 70 el francés Alain Colmenuer desarrolló el lenguaje PROLOG que también permite el desarrollo de aplicaciones en forma declarativa. 

En general el PROLOG es un demostrador automático de problema, el cual utiliza una Base de Conocimientos en forma de reglas de inferencia deductivas (cláusulas de Horn), es decir sus reglas tienen como consecuente una única acción y las inferencias obte¬nidas son estrictamente lógicas (verdaderas o falsas), aunque puede parecer una limitación, esto no es totalmente justo, ya que PROLOG permite programar mecanismos inferenciales con lógica probabilisticas, dado que se trata de búsquedas en árboles con acumulación de evidencias.

El PROLOG como lenguaje surgido del cálculo de predicados, tomó las siguientes ideas de la lógica para su ejecución.
1) Un conjunto de axiomas o hechos.
2) Reglas de inferencias las cuales se resuelven por resolución y unificación.
3) El objetivo a demostrar, que serán las condiciones a unificar con las reglas.

También tomó del LISP el tratamiento de las listas para la repre¬sentación de estructuras complejas. Aunque el PROLOG tuvo su origen en la lógica matemática no fue una transposición exacta, y esta ligada a las discusiones que sostienen desde hace años los principales investigadores de la Inteligencia Artificial, los cuales están divididos en dos grandes grupos, de una parte Minsky quien propone estudiar los mecanismos del pensamiento humano y luego simularlo en la computadora.
Lo más importante para Minsky son los conceptos, o sea la inter¬pretación que se le puede dar a cada palabra en dependencia de un contexto dado. 

El otro grupo encabezado por Mac Carthy (autor del LISP), afirma que la lógica matemática es el elemento característico para la representación del razonamiento y su implantación en la computadora, este grupo centra su atención en la formalización y en la estructura de los conocimientos más que en el sentido de los mismos.

La lógica desde la antigüedad se concibió como el método de descubrir las leyes del pensamiento, pero estas leyes siempre han estado restringidas al pensamiento científico y muy especialmente el matemático, quedando fuera el sentido común. Esta deficiencia es admitida por los defensores de la lógica, pero ellos consideran que la lógica es la única senda posible para desarrollar programas capaces de mostrar inteligencia.

lunes, 29 de abril de 2019

Arboles Binarios


Arboles Binarios

Esta estructura se usa principalmente para representar datos con una relación jerárquica entre sus elementos, como por ejemplo registros, árboles genealógicos, y tablas de contenidos. Veremos los recorridos que se pueden hacer en los árboles binarios, también se va a ampliar sobre árboles en los lenguajes de programación funcional. Introducción 

 * Recorrido en amplitud. * Es aquel recorrido que recorre el árbol por niveles del nivel superior a los niveles inferiores, en el ejemplo sería: Recorridos de árbol binario 

* Recorrido en profundidad. * Existen 3: Preorden, Postorden, Inorden. Recorridos 

* Recorrer un árbol en preorden consiste en primer lugar, examinar el dato del nodo raíz, posteriormente se recorre el subárbol izquierdo en preorden y finalmente se recorre el subárbol derecho en preorden. Recorrido Preorden 

 * Recorrer un árbol en Postorden consiste en primer lugar en recorrer el subárbol izquierdo en Postorden, luego se recorre el subárbol derecho en Postorden y finalmente se visita el nodo raíz. Recorrido Postorden 

 * Recorrer un árbol en Inorden consiste en primer lugar en recorrer el subárbol izquierdo en Inorden, luego se examina el dato del nodo raíz, y finalmente se recorre el subárbol derecho en Inorden. Recorrido Inorden 

* Los ordenamientos más importantes son llamados: pre-orden, post-orden e Inorden. Si un árbol T es nulo, entonces, la lista vacía es el listado: pre-orden, post- orden e Inorden del árbol T. Si T consiste de un solo nodo n, entonces, n es el listado: pre-orden, post- orden e Inorden del árbol T. Recorridos en Lenguajes de Programación funcional 

* Los algoritmos de recorrido de un árbol binario presentan tres tipos de actividades comunes: *. Visitar el nodo raíz *. Recorrer el subárbol izquierdo *. Recorrer el subárbol derecho Recorridos en Lenguajes de Programación funcional 

·         Recorrido Preorden. 
·         Recorrido Inorden. 
·         Recorrido Postorden. 



Arboles generales
Un árbol es una estructura no lineal a cíclica utilizada para organizar información de forma eficiente.

La definición es recursiva:
Un ´árbol es una colección de valores {v1, v2,. . . vn} tales que ¦
* Si n = 0 el ´árbol se dice vacío. ¦ En otro caso, existe un valor destacado que se denomina raíz (p.e. v1), y los demás elementos forman parte de colecciones disjuntas que a su vez son ´arboles. Estos ´árboles se llaman subárboles de la raíz.
Las estructuras tipo ´árbol se usan principalmente para representar datos con una relación jerárquica entre sus elementos, como ´arboles genealógicos, tablas, etc. X
La terminología de los ´árboles se realiza con las típicas notaciones de las relaciones familiares en los ´arboles genealógicos: padre, hijo, hermano, ascendente, descendente, etc.

Algunas definiciones
Nodo, son los elementos del ´árbol.
 Raíz del ´árbol: todos los ´árboles que no están vacíos tienen un ´único nodo raíz. Todos los demás elementos o nodos se derivan o descienden de ´el.
Nodo hoja es aquel nodo que no contiene ningún subárbol.
Tamaño de un ´árbol es su número de nodos.
A cada nodo que no es hoja se le asocia uno o varios subárboles llamados descendientes o hijos. X De igual forma, cada nodo tiene asociado un antecesor o ascendiente llamado padre.

Todos los nodos tienen un solo padre excepto la raíz que no tiene padre.
Cada nodo tiene asociado un número de nivel que se determina por la longitud del camino desde la raíz al nodo específico.
La altura o profundidad de un ´árbol es el nivel más profundo más uno.