1 / 30

Inteligencia artificial

Inteligencia artificial. Pierre Sergei Zuppa Azúa. Lista y árboles. Keyword. Listas. Es una estructura que se usa para representar un conocimiento jerárquico compuesto por elementos del mismo tipo. Representación de una lista. Operaciones sobre listas. Insertar un elemento en una lista.

Download Presentation

Inteligencia artificial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Inteligencia artificial Pierre Sergei Zuppa Azúa Lista y árboles

  2. Keyword

  3. Listas Es una estructura que se usa para representar un conocimiento jerárquico compuesto por elementos del mismo tipo.

  4. Representación de una lista

  5. Operaciones sobre listas • Insertar un elemento en una lista. • Buscar un elemento en una lista. • Borrar un elemento de una lista. • Recorrer los elementos de una lista. • Borrar todos los elementos de una lista.

  6. Árbol Es una estructura de datos, que puede definirse de forma recursiva como: • Una estructura vacía. • Un elemento o clave de información (nodo), más un número finito de estructuras tipo árbol. Es, por tanto, una estructura no secuencial.

  7. Nomenclatura de un árbol Nodos: son los elementos o vértices del árbol. Nodo raíz: es el primer elemento de un árbol. No tiene ascendiente o antecesor. Nodo padre: es el nodo que tiene por lo menos un hijo. Hijo: descendiente de un nodo. Nodo hoja o nodo terminal: nodo que no tiene ningún descendiente. Rama: relación que conecta un padre con un hijo.

  8. Nomenclatura de un árbol Ascendiente o antecesor: nodo padre de un nodo o padre de algún nodo ancestro. Descendientes o sucesor: hijo de un nodo o el hijo de otro descendiente de ese nodo. Altura o profundidad: es el máximo de los niveles de los nodos de un árbol. Sub-árbol: conjunto de descendientes de un nodo por una de las ramas. Nivel de un nodo: distancia desde la raíz. Ésta está en el nivel cero. Grado de un nodo: número de hijos que tiene un nodo. Ejemplo: d tiene grado cero.

  9. Características de un árbol • Es una forma gráfica y analítica de representar todos los eventos que pueden surgir a partir de una decisión asumida en cierto momento. • Nos ayuda a tomar la decisión más acertada desde un punto de vista probabilístico, ante diferentes soluciones posibles. • Permite desplegar visualmente un problema y organizar el trabajo de cálculos que deben realizarse.

  10. Terminología a Nodo: indica que en este punto del proceso ocurre un evento aleatorio. Está representado por un circulo: Rama: muestra los distintos caminos que se pueden emprender cuando se toma una decisión o cuando ocurre algún evento aleatorio. Se representa con una línea:

  11. Elaboración del diagrama de árbol • Identificar todas las decisiones (y sus alternativas) a realizar y el orden (la secuencia) en que se deben realizar. • Identificar los eventos probables que pueden ocurrir como resultado de la toma de decisión. • Desarrollar el diagrama de árbol que muestre las secuencias de las decisiones y los eventos probables.

  12. Ventajas y desventajas de un árbol Ventajas Desventajas La secuencia que sigue la solución del problema, depende de la probabilidad en que acurran los eventos. Cuando el árbol es muy complejo, es tedioso y tardado hacer la estimación y la evaluación de los eventos. Se requiere una serie de datos que algunas veces pueden ser difíciles de conseguir. • Hace más explícito e intuitivo el proceso de toma de decisiones. • Se captan mejor los diferentes cursos de acción. • Se puede observar la magnitud de las inversiones que cada curso de acción origina.

  13. Listas en Prolog Lista vacía: [] Lista compuesta: [<término>+f| <lista>g] <términos>: sucesión de los primeros elementos de la lista <lista>: lista con los elementos restantes [a, b, c] = [a, b, c| []] = [a, b| [c]] = [a|[b, c]] Algunas relaciones que trabajan con listas: append(L1, L2, L3) :- La lista L3 única con la concatenación de las listas L1 y L2 member(E, L) :- E única con alguno de los elementos de la lista L reverse(L1, L2) :- La inversa de la lista L1 unica con la lista L2

  14. Listas en Prolog Si se tiene la lista [a, b, c, d], la a es la cabeza y la cola es la lista [b, c, d]. Una lista cuya cabeza es A y cola es B, se anota como *A | B+ El predicado primer_elemento(X, [X|_]), tiene éxito si X es el primer elemento de la lista.

  15. Trabajar con listas en Prolog Proporciona los dos términos constructores de la lista: [ ], la constante lista vaca; y [X|R] el operador (función infija) concatenar por la cabeza, donde R debe ser una lista a su vez. Para una definición más formal de lista consultar el predicado is list/1. También se proporcionan predicados para el manejo de listas. is list(+Term): cierto si Term es una lista. • length(?List, ?Int): Int es el número de elementos de la lista List. • sort(+List, -Sorted): Sorted es la lista ordenada de los elementos de List sin duplicados. • append(?List1, ?List2, ?List3): List3 es la concatenación de List1 y List2. • member(?Elem, ?List): Elem es elemento de List. • nextto(?X, ?Y, ?List): Y está después de X en la lista List. • delete(+List1, ?Elem, ?List2): List2 es la eliminación de todos los elementos que unifican. • simultaneamente.con Elem de List1. • nth0(?Index, ?List, ?Elem): Elem es el Index -ésimo elemento de List, comenzando por el 0. • reverse(+List1, -List2): List2 es List1 pero con el orden de los elementos cambiado.

  16. Terminar un árbol en Prolog listing. dios_egipcio(amon). dios_egipcio(anubis). dios_egipcio(apis). dios_egipcio(ra). La orden findall realiza todo el árbol.

  17. LongitudListas en Prolog % Si queremos hallar la longitud de una lista. % La longitud de una lista vacía es 0. % La longitud de cualquier lista es la longitud de la cola + 1.

  18. Búsqueda listas en Prolog % Si queremos determinar si un elemento pertenece a una lista. % El elemento pertenece a la lista si coincide con la cabeza de la lista. % El elemento pertenece a la lista si se encuentra en la cola de la lista.

  19. Eliminación listas en Prolog % Si queremos eliminar un elemento de la lista. % Si X es la cabeza de la lista, la cola T es la lista sin X. % Si X no es la cabeza de la lista, conservamos la cabeza de la lista. % como parte de la respuesta y continuamos eliminando X de la cola T.

  20. Concatenar listas en Prolog % Si queremos concatenar dos listas. % Concatenar una lista vacía con L es L. % Concatenar X|L1 con L2 es poner el primer % elemento de la primera lista (X) más la % concatenación del resto de la lista (L1) con L2.

  21. Concatenación La concatenación o conduplicación es, en general, el acto de unir o enlazar cosas.

  22. MANIPULACIÓN DE SUBLISTAS EN PROLOG Hay (al menos) otras dos formas de cómo definir sublista, ejemplo: usando las relaciones prefijo y sufijo. Todas estas definiciones son equivalentes. Sin embargo, el procedimiento sublista3 es probablemente lo más cercano al estilo de programación tradicional (no declarativo), ya que usa la técnica conocida como "floating window". sublista(S,L):-agregar(_,S,P),agregar(P,_,L). sublista2(S,L):-prefijo(P,L), sufijo(S,P). sublista3(S,L) :- prefijo(S,L). sublista3(S,[_|T]) :- sublista3(S,T).

  23. Ordenamiento La ordenación o clasificación de datos consiste en la disposición de los mismos de acuerdo con algún valor o característica. Por ejemplo, cada elemento de una agenda telefónica tiene un campo nombre, un campo dirección y un campo número telefónico.

  24. Tipos de ordenamiento Interno Externos Mezcla directa. Mezcla equilibrada. Directos • Burbuja. • Selección. • Inserción. Logarítmicos • Shell. • Merge. • Heap. • Quick. • Radix.

  25. Método algorítmico Se caracteriza por tomar en consideración todas las alternativas o posibilidades relativas a un problema. Aunque los algoritmos garanticen un nº finito de posibilidades, en muchas ocasiones, ese número es elevadísimo y exige emplear mucho tiempo. Como ventaja, cabe destacar que si el problema está bien planteado, acaba encontrándose la solución exacta. Es propio de los ordenadores.

  26. Métodos heurísticos Son estrategias generales de resolución y reglas de decisión utilizadas por los solucionadores de problemas, basadas en la experiencia previa con problemas similares. Estas estrategias indican las vías o posibles enfoques a seguir para alcanzar una solución. Es decir, es un procedimiento para resolver un problema de optimización bien definido mediante una aproximación intuitiva, en la que la estructura del problema se utiliza de forma inteligente para obtener una buena solución.

  27. Tipos de conocimiento para resolver problemas Conocimiento declarativo: por ejemplo, saber que un kilómetro tiene mil metros. Conocimiento lingüístico: conocimiento de palabras, frases, oraciones. Conocimiento semántico: dominio del área relevante al problema, por ejemplo, saber que si Álvaro tiene 5 pesos más que Javier, esto implica que Javier tiene menos pesos que Álvaro. Conocimiento esquemático: conocimiento de los tipos de problema. Conocimiento procedimental: conocimiento del o de los algoritmos necesarios para resolver el problema. Conocimiento estratégico: conocimiento de los tipos de conocimiento y de los procedimientos heurísticos.

  28. Pasos del método heurístico • Analizar y definir el problema. • Definir la estrategia a seguir para llegar a la solución y llevarla a la práctica. • Definir alternativas de solución al problema y seleccionar la mejor. • Comprobar la pertinencia de la solución seleccionada.

  29. Características del planteamiento de los problemas de razonamiento • Expresar con claridad, de manera que se entienda lo que se está diciendo. • Incluir todos los datos necesarios para su resolución. • Expresar claramente las condiciones en las cuales se da la situación o el hecho que se va a resolver. • Expresar las reglas con las cuales se debe buscar la solución. • Terminar con una pregunta en la que se indique el tipo de solución que se espera.

  30. Frase “Los programadores hablan sobre desarrollo los fines de semana, vacaciones y en las comidas, no por falta de imaginación, sino porque su imaginación revela mundos que otros no pueden ver”  Larry O'Brien y Bruce Eckelen "Thinking in C#"

More Related