Investigacion Tema 4

También podría gustarte

Está en la página 1de 5

Instituto Tecnológico Superior de Centla

Investigación Tema 4 Modelo de programación Lógica

Alumno: carlos Alberto Lucino de la cruz


e-mail: 17e50414@centla.tecn.mx
Materia: programación lógica y funcional
Carrera y semestre
Ing. En sistemas computacionales 8vo semestre
Docente: Edgar Martin Lorca Velueta.

1.- INTRODUCCIÓN Lo más importante para Minsky son los conceptos, o sea
la interpretación que se le puede dar a cada palabra en
dependencia de un contexto dado.
En la elaboración de esta investigación describiremos los
puntos más importantes de los que es el tema modelo de El otro grupo encabezado por Mac Carthy (autor del
programación lógica, en la elaboración podrás darte cuenta la LISP), afirma que la lógica matemática es el elemento
manera en la que se realiza por ejemplo En general el característico para la representación del razonamiento y su
PROLOG es un demostrador automático de problema, el cual implantación en la computadora, este grupo centra su atención
utiliza una Base de Conocimientos en forma de reglas de en la formalización y en la estructura de los conocimientos
inferencia deductivas (cláusulas de Horn),la búsqueda de más que en el sentido de los mismos.
espacio como también la semántica de los programas lógicos.
La lógica desde la antigüedad se concibió como el
2.- DESARROLLO. método de descubrir las leyes del pensamiento, pero estas
leyes siempre han estado restringidas al pensamiento científico
4.1 introducción al modelo de programación lógica y muy especialmente el matemático, quedando fuera el sentido
común. Esta deficiencia es admitida por los defensores de la
En los comienzos de los años 70 el francés Alain lógica, pero ellos consideran que la lógica es la única senda
Colmenuer desarrolló el lenguaje PROLOG que también posible para desarrollar programas capaces de mostrar
permite el desarrollo de aplicaciones en forma declarativa. inteligencia.

En general el PROLOG es un demostrador automático 4.2 semántica de los programas lógicos


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 obtenidas son estrictamente lógicas (verdaderas La cabeza es un término simple. Por ejemplo, p (X, 12) podría
o falsas), aunque puede parecer una limitación, esto no es ser la cabeza de una cláusula del predicado p/2. Es decir, todas
totalmente justo, ya que PROLOG permite programar las cláusulas de un mismo predicado tienen en la cabeza un
mecanismos inferenciales con lógica probabilisticas, dado que término con el mismo functor y aridad, aunque los argumentos
se trata de búsquedas en árboles con acumulación de pueden ser distintos.
evidencias. El cuerpo no es más que el conjunto de condiciones que deben
cumplirse (tener éxito) para que el predicado tenga éxito si lo
El PROLOG como lenguaje surgido del cálculo de invocamos con un objetivo que unifique con la cabeza.
predicados, tomó las siguientes ideas de la lógica para su Semántica de los programas lógicos
ejecución. Ejemplo:
1) Un conjunto de axiomas o hechos. Razonamiento lógico:
2) Reglas de inferencias las cuales se resuelven por tiempo(lluvioso) --> suelo(mojado)
resolución y unificación. Representación correcta en prolog:
3) El objetivo a demostrar, que serán las condiciones a suelo(mojado):-tiempo(lluvioso).suelo(mojado)
unificar con las reglas. Comentarios entre /**/
Objetos de Datos
También tomó del LISP el tratamiento de las listas para Tipos de Datos primitivos: variables y constantes.
la representación de estructuras complejas. Aunque el  Enteros
PROLOG tuvo su origen en la lógica matemática no fue una  Reales
transposición exacta, y está ligada a las discusiones que  Caracteres
sostienen desde hace años los principales investigadores de la
Inteligencia Artificial, los cuales están divididos en dos Los identificadores con minúscula representan hechos, los que
grandes grupos, de una parte, Minsky quien propone estudiar van con mayúscula variables.
los mecanismos del pensamiento humano y luego simularlo en Las reglas se utilizan en prolog para significar que un hecho
la computadora. depende de uno o más hechos.

Dr. Edgar Martín Lorca Velueta || Docente de la Academia de Sistemas Computacionales del ITSCe
Instituto Tecnológico Superior de Centla

Una regla consiste en una cabeza y un cuerpo, unidos por el Está clausula es donde se indican las condiciones de filtrado de
signo ":-". los datos. Estas condiciones se definen a través de los
La cabeza está formada por un único hecho. operadores lógicos y de comparación.
El cuerpo puede ser uno o más hechos (conjunción de hechos),
separados por una coma (","), que actúa como el "y" lógico. Cláusula SELECT
Las reglas finalizan con punto ("."). Especifica qué columnas o expresiones han de ser devueltas
Semántica Lógica. por la consulta. Su sintaxis es:

4.3 Representación Clausada del conocimiento SELECT [ DISTINCT ] <select_list>

Representación del conocimiento es un término para referirse a <select_list> ::= [esquema.][TABLE. | VIEW. | alias. ] * |
representaciones pensadas para el procesamiento por { column_name | expression }
ordenadores modernos, en particular, para representaciones [ [AS] column_alias]} [,...n]
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 4.5 Espacio de búsqueda
almacenados.
En optimización, espacio de búsqueda se refiere al dominio de
Tipos de Cláusulas la función a ser optimizada. En el caso de los algoritmos de
Ejemplos búsqueda, que manejan espacios discretos, se refiere al
Enunciado 1. conjunto de todas las posibles soluciones candidatas a un
Si algunos perros son mamíferos, luego todos son mamíferos. problema.
Enunciado 2.
Todos los colibrís son aves. Topología
Este colibrí es ave.
Los espacios de búsqueda, dependiendo de los métodos que se
Conclusión: utilicen para resolver el problema, pueden ser conectados o no.
Para que un programa experto reconozca La desconexión entre diversas zonas del espacio de búsqueda
los enunciados, se tiene que convertir en clausulas o reglas, presenta un problema para los métodos basados en vecindades,
para que estas sean entendidas por el sistema y arroje un por lo que muchas veces se permite aceptar el tratamiento de
resultado final. soluciones infactibles a fin de conectar estas zonas dispersas.
es importante mencionar que la sintaxis de las cláusulas; se
debe de respetar los Explosión combinatoria
()
,
En dominios discretos, cuando existen muchas variables o bien
_
muchos valores posibles a asignarles, se produce explosión
.
combinatoria, es decir, el crecimiento exponencial del tamaño
del espacio de búsqueda en relación a las variables y sus
4.4 consulta de una base de clausulas dominios. Cuando los espacios de búsqueda son muy extensos,
los métodos completos son incapaces de encontrar una
solución en un tiempo aceptable, por lo que se opta por utilizar
Tipos de datos estructurados: heurísticas.
 Átomos: Constantes y variables de cadena.
 Listas, representadas entre [ ]. Cuando se resuelve un problema, se busca la mejor solución
Tipos definidos por el usuario. Las reglas para definir entre un conjunto de posibles soluciones. Al conjunto de todas
relaciones pueden actuar como tipos de usuario. las posibles soluciones a un problema concreto se llama
espacio de búsqueda. Cada punto en el espacio de búsqueda
SELECT select_list representa una posible solución. Cada posible solución se le
FROM table_source puede asociar un fitness o un valor que indicará cómo de
[WHERE search_condition] buena es la solución para el problema. Un algoritmo genético
[GROUP BY group_by_expression] (AG) devolverá la mejor solución de entre todas las posibles
[HAVING search_condition] que tenga en un momento dado.
[ORDER BY order_expression [ASC | DESC] ]
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.
FROM A veces el espacio de búsqueda puede ser bien definido, pero
Especifica de dónde queremos obtener los datos, es decir, de en la mayoría de las ocasiones sólo se conocen algunos puntos
que tabla. Se utiliza no sólo en el comando de consulta, en el espacio de búsqueda. Cuando se usa un AG las posibles
SELECT, sino también en los comandos UPDATE y DELETE soluciones generan otras a medida que el genético evoluciona.
.
WHERE

Dr. Edgar Martín Lorca Velueta || Docente de la Academia de Sistemas Computacionales del ITSCe
Instituto Tecnológico Superior de Centla

La resolución de un problema puede expresarse como la


búsqueda del extremo de una función Aquí resolvemos ese
problema, este es un algoritmo genético que calcula el máximo
de una función. La gráfica representa un espacio de búsqueda
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.
CÓMO SE VE EN PROLOG?
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.6 Programación lógica con números, listas y


árboles.

PROGRAMACIÓN LÓGICA
Arboles
Paradigma donde un programa es una serie de afirmaciones
lógicas, representando el conocimiento mediante reglas,
La representación de hechos simples no es lo común en
por lo que se habla de sistemas declarativos.
la clasificación de elementos, sino que se agrupan los
elementos de un mismo tipo en una lista.
Las listas son colecciones de elementos en PROLOG.
PROGRAMACIÓN DECLARATIVA Una lista se divide en dos partes:
• Cabeza. Es el primer elemento de la lista.
• Aquella a través de la cual se especifica el • Cola. Es una lista con el resto de los elementos de la
conocimiento, más no se indica la manera en el que lista.
conocimiento debe ser usado. La cabeza y la cola de una lista se separan con el
• Prolog es de los sistemas más populares para este tipo símbolo "|".
de programación.

OPERADORES EN PROLOG Numericos

• Este lenguaje cuenta con operadores para la unificación y En PROLOG los objetos numéricos pueden corresponder
comparación, con evaluación o de manera simbólica. a tipos integer o float de C.
• Unificación con evaluación X is Y Para realizar operaciones numéricas, se tiene el
• Unificación simbólica X = Y predicado is, que se comporta como una asignación en un
• Comparación con evaluación X =:= Y lenguaje imperativo.
• Comparación simbólica X == Y Así, el objetivo X is <expresión> será verdadero cuando
X unifique con el resultado numérico de evaluar <expresión>.
Expresiones
Una representación declarativa es aquélla en la que el
conocimiento está especificado, pero en la que la manera en
que dicho conocimiento debe ser usado no viene dado. El más
popular de los sistemas de programación lógica es el
PROLOG.
PROLOG cuenta con operadores para la unificación y
comparación, sea con evaluación o sea simbólica, como los
siguientes:

Dr. Edgar Martín Lorca Velueta || Docente de la Academia de Sistemas Computacionales del ITSCe
Instituto Tecnológico Superior de Centla

• X is Y %unificación con evaluación. |?- var(x)


• X = Y %unificación simbólica X=_
• X=:=Y %comparación con evaluación |?- X-1, var(x)
• X == Y %comparación simbólica. no
Se puede establecer que el lenguaje PROLOG está
orientado a la Inteligencia Artificial, usando la programación
Es uno de los más útiles entre la biblioteca
lógica. standard Prolog:
También utiliza pocos comandos en comparación con El predicado functor/3
otros lenguajes de programación. Sólo hemos comenzado a
explorar el poder que viene de la modelización de cálculo
dentro de la lógica de predicados. 4.9 predicados mitológicos

El siguiente ejemplo muestra cómo se extrae functor y


4.7 Control de busqueda en programas logicos aridad:
? - functor (termino (arg(1)), Functor,Aridad).
Functor = termino
El orden en que aparecen los literales dentro de una sentencia Aridad = 1
(dentro del cuerpo) o el orden en que se introducen las Yes
sentencias en el programa son importantes en PROLOG. El Manipulación de términos.
orden afecta tanto al correcto funcionamiento del programa, El predicado functor es uno de los más útiles entre la
como al recorrido del árbol de llamadas, determinando, entre biblioteca standard Prolog.
otras cosas, el orden en que PROLOG devuelve las soluciones Este predicado permite extraer el functor y la aridad de
a una pregunta dada. El orden de las sentencias determina el un término cualquiera.
orden en que se obtienen las soluciones ya que varía el orden Pero, al ser reversible, también permite construir nuevos
en que se recorren las ramas del árbol de búsqueda de términos a partir del functor y la aridad deseada.
soluciones. Ejemplo: A continuación se presentan dos Los modos de uso son:
versiones del programa "miembro de una lista". Ambas • functor (+Termino, -Functor, -Aridad).
versiones tienen las mismas sentencias pero escritas en distinto • functor (-Termino, +Functor, +Aridad).
orden. A ambas versiones les hacemos la misma pregunta ? Predicados meta-lógicos
miembro (X, [1,2,3]). Ejemplo:
Predicados de Clasificación
Los predicados meta-lógicos permiten controlar el
algoritmo de resolución facilitando la meta-programación.

3.- CONCLUSIONES

Con la elaboración de esta investigación pusimos los puntos


más importantes como las características de expresión de
términos de la manera que la que se manipulan en otros
programas, las características del orden de una sentencia o del
orden que se introduce. En esta investigación podrá encontrar
4.8 Manipulacion de terminos los subtemas antes mencionado para aprender más sobre la
programación lógica.

Consiste en construir programas que manipulan


otros programas proporcionando una mayor 4.- REFERENCIAS
expresividad al lenguaje
Predicados [1] https://lucydelcarmenleonmoreno.blogspot.com/search?q=4.4
Meta-Lógicos
[2] https://es.wikipedia.org/wiki/Espacio_de_b%C3%BAsqueda
abuelo(X,Y):-novar(X)
hombre(x), progenitor(x,z), progenitor(z,y). [3] https://prezi.com/s58qigggszsd/programacion-logica-con-
abuelo(x,y):-novar(y) numeros-listas-y-arboles/
progenitor(z,y), progenitor(x,z), hombre(x)
abuelo(x,y):- X es abuelo de Y [4] https://elbauldelprogramador.com/consulta-de-datos-clausula-
select/
X es una variable no instanciada
Permiten controlar el algoritmo de resolución
facilitando la meta-programación.

Dr. Edgar Martín Lorca Velueta || Docente de la Academia de Sistemas Computacionales del ITSCe
Instituto Tecnológico Superior de Centla

Observaciones:
1. El trabajo debe contener como máximo 5
cuartillas y como mínimo 4.
2. Más de 4 errores ortográficos y gramaticales
anulan el trabajo.
3. Trabajos iguales se anulan.
4. Trabajos individuales.

Dr. Edgar Martín Lorca Velueta || Docente de la Academia de Sistemas Computacionales del ITSCe

También podría gustarte