SlideShare una empresa de Scribd logo
3
Lo más leído
4
Lo más leído
5
Lo más leído
INSTITUTO POLITÉCNICO NACIONAL
    ESCUELA SUPERIOR DE CÓMPUTO



        Artificial Inteligence




            Tarea No. 2


               Prolog

      Profesor: Hernández Cruz Macario




          Manzano León Jansel




                   3CM4




             Fecha de entrega:
             15-Octubre-2012
Introducción
Desarrollo

       I.      Introducción a Prolog – Hechos y Reglas
Ejercicio 1.1
Considerando la lámina anexa (tomada de la serie de televisión “Los Simpsons”),
represente en lenguaje Prolog las características de los objetos y las relaciones entre ellos.

Asimismo, basadas en las relaciones “progenitor” y el género de las personas (si es
hombre o mujer), establecer las reglas para:

abuelo(X,Y):-
abuela(X,Y):-
tio(X,Y):-
tia(X,Y):-
hermano(X,Y):-
hermana(X,Y):-
Solución (1.1)

macho(homero).
macho(bart).
macho(abraham).
macho(mr_burns).
macho(clancy).
macho(seymour_skinner).
macho(milhouse).

hembra(jacqueline).
hembra(edna).
hembra(mona).
hembra(marge).
hembra(paty).
hembra(selma).
hembra(maggie).
hembra(lisa).

animal(snowball).

alien(kang).
macho(kang).

progenitor(homero,bart).
progenitor(marge,bart).

progenitor(homero,lisa).
progenitor(marge,lisa).

progenitor(kang,maggie).
progenitor(marge,maggie).

progenitor(abraham,homero).
progenitor(mona,homero).

progenitor(clancy,marge).
progenitor(jacqueline,marge).

progenitor(clancy,selma).
progenitor(jacqueline,selma).

progenitor(clancy,paty).
progenitor(jacqueline,paty).

conyuge(homero,marge).

abuelo(X,Y):-progenitor(M,Y),progenitor(X,M),macho(X).
abuela(X,Y):-progenitor(M,Y),progenitor(X,M),hembra(X).

hermano(X,Y):-progenitor(M,Y),progenitor(M,X),macho(X).
hermana(X,Y):-progenitor(M,Y),progenitor(M,X),hembra(X).

tio(X,Y):-progenitor(M,Y),hermano(M,X).
tia(X,Y):-progenitor(M,Y),hermana(M,X).
II.    Aritmética y recursividad en Prolog
Ejercicio 2.1
Considere la definición de la sucesión de Fibonacci.
        fib(n) = n si n < = 1
        fib(n) = fib(n-1) + fib(n-2) si n > 1

De tal forma que los primeros términos de la sucesión son:
0,1,1,2,3,5,8,13,21…...
Desarrolle un conjunto de reglas para calcular el término n-esimo de la sucesión.

?- fibonacci(0,F).
F = 0
?- fibonacci(1,F).
F = 1
?- fibonacci(2,F).
F = 1
?- fibonacci(3,F).
F = 2
?- fibonacci(4,F).
F = 3

Solución (2.1)

       fibonacci(0,0).
       fibonacci(1,1).
       fibonacci(N,F):-       N1 is N-1,N2 is N1-1,
                              fibonacci(N1,A),
                              fibonacci(N2,B),
                              F is A+B.




       III.      Listas
Ejercicio 3.1

Escriba la(s) regla(s) necesaria(s) para imprimir una lista de la siguiente forma.
?- imprime([a, b, c, d]).
a
b
c
d
true
Solución (3.1)

       imprime([]).
       imprime([H|T]):-       write_ln(H),
                              imprime(T).




Ejercicio 3.2
Escriba la(s) regla(s) necesaria(s) para agregar un elemento al principio de una lista.

?- agregar(gato,[zorro, zopilote, puerco],L).
L = [gato, zorro, zopilote, puerco]
true

Solución (3.2)
       agregar(E,L,[E|L]).
       agregar(E,[X|Y],[X|Z]):-agregar(E,Y,Z).




Ejercicio 3.3
Escriba la(s) regla(s) necesaria(s) para agregar un elemento al final de una lista.

?- agregar_final([agua, tierra, viento], fuego, L).
L = [agua, tierra, viento, fuego]
true
Solución (3.3)
       agregar_final([],X,[X|[]]).
       agregar_final([H1|T1],X,[H1|T]):-agregar_final(T1,X,T).




Ejercicio 3.4.
Escriba la(s) regla(s) necesaria(s) para invertir los elementos de una lista.

?- de_reversa([angel, beto, sandra, zoyla],L).
L = [zoyla, sandra, beto, angel]
true

Solución (3.4)
       de_reversa([],_).
       de_reversa([H1|T1],L):-        agregar_final(M,H1,L),
                                      de_reversa(T1,M).




Ejercicio 3.5.
Escriba la(s) regla(s) necesaria(s) para obtener el último elemento de una lista.

?- ultimo([piolin, silvestre, bugss_bunny, porky],X).
X = porky
true

Solución (3.5)
       ultimo(X,[X]).
       ultimo(X,[_|T]):-ultimo(X,T).
Ejercicio 3.6.
Escriba la(s) regla(s) necesaria(s) para obtener las permutaciones de una lista.
?- permutacion([bart,lisa,maggie],L).
L = [bart, lisa, maggie] ;
L = [bart, maggie, lisa] ;
L = [lisa, bart, maggie] ;
L = [lisa, maggie, bart] ;
L = [maggie, bart, lisa] ;
L = [maggie, lisa, bart] ;

Solución (3.6)
       permutacion([],[]).
       permutacion([X|Y],Z):-        permutacion(Y,L),
                                     agregar(X,L,Z).
Ejercicio 3.7.
Escriba la(s) regla(s) necesaria(s) para verificar si una lista esta ordenada.

?- ordenada([agua, fuego, tierra, viento]).
true
?- ordenada([agua, tierra, viento, fuego]).
false

Solución (3.7)
       primero([H|_],H).
       ordenada([]).
       ordenada([_]).
       ordenada([H|T]):-       primero(T,X),
                               (H @< X),
                               ordenada(T).




Ejercicio 3.8.
Escriba la(s) regla(s) necesaria(s) para ordenar los elementos de una lista.

?- ordenar([stan, cartman, kyle, kenny], L).
L = [cartman, kenny, kyle, stan] ;

Solución (3.8)
       ordenar([],_).
       ordenar(L,Z):-          permutacion(L,Z),
                               ordenada(Z).
Conclusiones
Por la realización de este trabajo, se puede establecer que el lenguaje Prolog está
orientado a la Inteligencia Artificial, usando la programación lógica. Gracias a su facilidad
de programar y su sencilla sintaxis gramatical y numérica, se pueden escribir rápidamente
y con pocos errores programas claramente leíbles, además cualquier usuario puede
acceder a él si lo desea y sin problemas de entendimiento.
También utiliza pocos comandos en comparación con otros lenguajes de programación.
Por otra parte en este lenguaje al igual que otros, hay que tener en cuenta la asociatividad
de los operadores antes de trabajar con él.
Las listas son la única estructura disponible en Prolog y el uso de estas para una
programación de complejidad moderada, es de fundamental importancia. Para esto hay
que tener en cuenta la naturaleza recurrente tanto de las llamadas como de las listas en
este lenguaje.
Además Prolog se puede trabajar en diferentes sistemas operativos, tales como UNIX,
WINDOWS, MAC-OS, entre otros.

Referencias
http://www.gedlc.ulpgc.es/docencia/lp/documentacion/GB_Prolog.pdf

http://blog.utp.edu.co/alejandropinto/files/2012/04/Pr%C3%A1cticas-de-Prolog-
%E2%80%93-Departamento-de-Ciencia-de-La-Computaci%C3%B3n-e-
Inteligencia-Artificial-%E2%80%93-Universidad-de-Alicante.pdf

http://larmor.nuigalway.ie/~detinko/prolog_manual.pdf

http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/1.html

Más contenido relacionado

PPTX
Pruebas de escritorio
PDF
Poo manual de ejercicios
PDF
Estructura Repetitiva MIENTRAS (While) con PSeInt
PPTX
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
PPT
Logica de la Programación Problemas y Soluciones
PDF
Arreglos o dimensiones en pseint
PPTX
ALGORITMOS
PDF
Ejercicios resueltos con Python
Pruebas de escritorio
Poo manual de ejercicios
Estructura Repetitiva MIENTRAS (While) con PSeInt
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
Logica de la Programación Problemas y Soluciones
Arreglos o dimensiones en pseint
ALGORITMOS
Ejercicios resueltos con Python

La actualidad más candente (20)

PDF
Cuadro comparativo modelos para el desarrollo de software
PDF
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
PPTX
Requerimiento funcional y no funcional
PDF
Ingenieria de software
PPTX
Procesos e Hilos en los Sistemas Operativos
PPTX
Capas de la ingenieria de software
PPT
Modelo Del Negocio con RUP y UML Parte 2
PPTX
Transformar modelo entidad relacion a modelo logico
PPTX
Recursividad
PPTX
Entrada/Salida de Sistemas Operativos
PPTX
Planificacion de proyecto de software
PPTX
Estructura de Datos - Unidad 6 Metodos de busqueda
PPSX
Planificación por prioridad
PDF
Casos uso uml
PDF
Modelo entidad relacion
PPTX
Metodologia Incremental
PPTX
Uml lenguaje unificado de modelado
PPTX
Ventajas y desventajas de moprosoft
DOCX
Pruebas de sistemas y aceptacion
Cuadro comparativo modelos para el desarrollo de software
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Requerimiento funcional y no funcional
Ingenieria de software
Procesos e Hilos en los Sistemas Operativos
Capas de la ingenieria de software
Modelo Del Negocio con RUP y UML Parte 2
Transformar modelo entidad relacion a modelo logico
Recursividad
Entrada/Salida de Sistemas Operativos
Planificacion de proyecto de software
Estructura de Datos - Unidad 6 Metodos de busqueda
Planificación por prioridad
Casos uso uml
Modelo entidad relacion
Metodologia Incremental
Uml lenguaje unificado de modelado
Ventajas y desventajas de moprosoft
Pruebas de sistemas y aceptacion
Publicidad

Similar a Prolog ejercicios resueltos (20)

PPT
Programacion logica
PDF
Practica i prolog
PPTX
Teoria
DOCX
Listas prolog m_c
PPTX
301405_34-Tarea1-Danilo Coral.pptx
PDF
Ejercicios programacion prolog
PPTX
Exp+s4 c2+(profesor)
PPTX
Ejercicios Python parte 4
PDF
Programacion practica prolog
PPTX
Teoria de Conjuntos
PDF
Ejercicios prolog
PDF
Ejercicios prolog
PDF
Unidad temática iv
PPTX
Unidad 2.4 Programación en Python Listas (3).pptx
PDF
DOCX
Listas prolog m_c
DOCX
Listas prolog m_c
PDF
P r-o-l-o-g-practica01-1204602281352947-2
PDF
Programacion logica
Practica i prolog
Teoria
Listas prolog m_c
301405_34-Tarea1-Danilo Coral.pptx
Ejercicios programacion prolog
Exp+s4 c2+(profesor)
Ejercicios Python parte 4
Programacion practica prolog
Teoria de Conjuntos
Ejercicios prolog
Ejercicios prolog
Unidad temática iv
Unidad 2.4 Programación en Python Listas (3).pptx
Listas prolog m_c
Listas prolog m_c
P r-o-l-o-g-practica01-1204602281352947-2
Publicidad

Último (20)

PPT
Cosacos y hombres del Este en el Heer.ppt
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Cosacos y hombres del Este en el Heer.ppt
2 GRADO UNIDAD 5 - 2025.docx para primaria
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Punto Critico - Brian Tracy Ccesa007.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
Fundamentos_Educacion_a_Distancia_ABC.pdf
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...

Prolog ejercicios resueltos

  • 1. INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO Artificial Inteligence Tarea No. 2 Prolog Profesor: Hernández Cruz Macario Manzano León Jansel 3CM4 Fecha de entrega: 15-Octubre-2012
  • 3. Desarrollo I. Introducción a Prolog – Hechos y Reglas Ejercicio 1.1 Considerando la lámina anexa (tomada de la serie de televisión “Los Simpsons”), represente en lenguaje Prolog las características de los objetos y las relaciones entre ellos. Asimismo, basadas en las relaciones “progenitor” y el género de las personas (si es hombre o mujer), establecer las reglas para: abuelo(X,Y):- abuela(X,Y):- tio(X,Y):- tia(X,Y):- hermano(X,Y):- hermana(X,Y):-
  • 4. Solución (1.1) macho(homero). macho(bart). macho(abraham). macho(mr_burns). macho(clancy). macho(seymour_skinner). macho(milhouse). hembra(jacqueline). hembra(edna). hembra(mona). hembra(marge). hembra(paty). hembra(selma). hembra(maggie). hembra(lisa). animal(snowball). alien(kang). macho(kang). progenitor(homero,bart). progenitor(marge,bart). progenitor(homero,lisa). progenitor(marge,lisa). progenitor(kang,maggie). progenitor(marge,maggie). progenitor(abraham,homero). progenitor(mona,homero). progenitor(clancy,marge). progenitor(jacqueline,marge). progenitor(clancy,selma). progenitor(jacqueline,selma). progenitor(clancy,paty). progenitor(jacqueline,paty). conyuge(homero,marge). abuelo(X,Y):-progenitor(M,Y),progenitor(X,M),macho(X). abuela(X,Y):-progenitor(M,Y),progenitor(X,M),hembra(X). hermano(X,Y):-progenitor(M,Y),progenitor(M,X),macho(X). hermana(X,Y):-progenitor(M,Y),progenitor(M,X),hembra(X). tio(X,Y):-progenitor(M,Y),hermano(M,X). tia(X,Y):-progenitor(M,Y),hermana(M,X).
  • 5. II. Aritmética y recursividad en Prolog Ejercicio 2.1 Considere la definición de la sucesión de Fibonacci. fib(n) = n si n < = 1 fib(n) = fib(n-1) + fib(n-2) si n > 1 De tal forma que los primeros términos de la sucesión son: 0,1,1,2,3,5,8,13,21…... Desarrolle un conjunto de reglas para calcular el término n-esimo de la sucesión. ?- fibonacci(0,F). F = 0 ?- fibonacci(1,F). F = 1 ?- fibonacci(2,F).
  • 6. F = 1 ?- fibonacci(3,F). F = 2 ?- fibonacci(4,F). F = 3 Solución (2.1) fibonacci(0,0). fibonacci(1,1). fibonacci(N,F):- N1 is N-1,N2 is N1-1, fibonacci(N1,A), fibonacci(N2,B), F is A+B. III. Listas Ejercicio 3.1 Escriba la(s) regla(s) necesaria(s) para imprimir una lista de la siguiente forma. ?- imprime([a, b, c, d]). a b c d true
  • 7. Solución (3.1) imprime([]). imprime([H|T]):- write_ln(H), imprime(T). Ejercicio 3.2 Escriba la(s) regla(s) necesaria(s) para agregar un elemento al principio de una lista. ?- agregar(gato,[zorro, zopilote, puerco],L). L = [gato, zorro, zopilote, puerco] true Solución (3.2) agregar(E,L,[E|L]). agregar(E,[X|Y],[X|Z]):-agregar(E,Y,Z). Ejercicio 3.3 Escriba la(s) regla(s) necesaria(s) para agregar un elemento al final de una lista. ?- agregar_final([agua, tierra, viento], fuego, L). L = [agua, tierra, viento, fuego] true
  • 8. Solución (3.3) agregar_final([],X,[X|[]]). agregar_final([H1|T1],X,[H1|T]):-agregar_final(T1,X,T). Ejercicio 3.4. Escriba la(s) regla(s) necesaria(s) para invertir los elementos de una lista. ?- de_reversa([angel, beto, sandra, zoyla],L). L = [zoyla, sandra, beto, angel] true Solución (3.4) de_reversa([],_). de_reversa([H1|T1],L):- agregar_final(M,H1,L), de_reversa(T1,M). Ejercicio 3.5. Escriba la(s) regla(s) necesaria(s) para obtener el último elemento de una lista. ?- ultimo([piolin, silvestre, bugss_bunny, porky],X). X = porky true Solución (3.5) ultimo(X,[X]). ultimo(X,[_|T]):-ultimo(X,T).
  • 9. Ejercicio 3.6. Escriba la(s) regla(s) necesaria(s) para obtener las permutaciones de una lista. ?- permutacion([bart,lisa,maggie],L). L = [bart, lisa, maggie] ; L = [bart, maggie, lisa] ; L = [lisa, bart, maggie] ; L = [lisa, maggie, bart] ; L = [maggie, bart, lisa] ; L = [maggie, lisa, bart] ; Solución (3.6) permutacion([],[]). permutacion([X|Y],Z):- permutacion(Y,L), agregar(X,L,Z).
  • 10. Ejercicio 3.7. Escriba la(s) regla(s) necesaria(s) para verificar si una lista esta ordenada. ?- ordenada([agua, fuego, tierra, viento]). true ?- ordenada([agua, tierra, viento, fuego]). false Solución (3.7) primero([H|_],H). ordenada([]). ordenada([_]). ordenada([H|T]):- primero(T,X), (H @< X), ordenada(T). Ejercicio 3.8. Escriba la(s) regla(s) necesaria(s) para ordenar los elementos de una lista. ?- ordenar([stan, cartman, kyle, kenny], L). L = [cartman, kenny, kyle, stan] ; Solución (3.8) ordenar([],_). ordenar(L,Z):- permutacion(L,Z), ordenada(Z).
  • 11. Conclusiones Por la realización de este trabajo, se puede establecer que el lenguaje Prolog está orientado a la Inteligencia Artificial, usando la programación lógica. Gracias a su facilidad de programar y su sencilla sintaxis gramatical y numérica, se pueden escribir rápidamente y con pocos errores programas claramente leíbles, además cualquier usuario puede acceder a él si lo desea y sin problemas de entendimiento. También utiliza pocos comandos en comparación con otros lenguajes de programación. Por otra parte en este lenguaje al igual que otros, hay que tener en cuenta la asociatividad de los operadores antes de trabajar con él. Las listas son la única estructura disponible en Prolog y el uso de estas para una programación de complejidad moderada, es de fundamental importancia. Para esto hay que tener en cuenta la naturaleza recurrente tanto de las llamadas como de las listas en este lenguaje. Además Prolog se puede trabajar en diferentes sistemas operativos, tales como UNIX, WINDOWS, MAC-OS, entre otros. Referencias http://www.gedlc.ulpgc.es/docencia/lp/documentacion/GB_Prolog.pdf http://blog.utp.edu.co/alejandropinto/files/2012/04/Pr%C3%A1cticas-de-Prolog- %E2%80%93-Departamento-de-Ciencia-de-La-Computaci%C3%B3n-e- Inteligencia-Artificial-%E2%80%93-Universidad-de-Alicante.pdf http://larmor.nuigalway.ie/~detinko/prolog_manual.pdf http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/1.html