miércoles, 12 de junio de 2013

TAREA PROLOG...

Prolog
Capítulo 1
Ejercicios. 1.- Asumiendo las relaciones definidas en el ejemplo, ¿qué contestará Prolog a las siguientes preguntas?
 

a).?- progenitor( jaime, X).
Prolog contestara:                      


 


b).?- progenitor( X, jaime).
Prolog contestara:








c).?- progenitor( pamela, X), progenitor( X, patricia).
Prolog contestara:



d).?- progenitor( pamela, X), progenitor( X, Y), progenitor(Y,jaime).
Prolog contestara:



1.2 Formule en Prolog las siguientes preguntas acerca de la relación progenitor:
a).¿Cómo se llama el progenitor de patricia ?
?- progenitor(X, patricia).








b).¿Tiene Elizabeth algún hijo ?
?- Progenitor(Elizabeth, X).







 Como Elizabeth no tiene hijo, por eso Prolog contesta false a la pregunta.

c).¿Cómo se llama el abuelo de patricia ?
            ?- abuelo( X, patricia).








1.3. Traduzca las siguientes sentencias a reglas Prolog.
a). Cualquiera que tiene un hijo es feliz (introduzca la relación unaria llamada 'feliz').

feliz(X, hijo).

b). Para todo X, si X tiene un hijo que tiene una hermana, entonces X tiene dos hijos
(Introduzca la relación tiene-dos-hijos).
tiene-dos-hijos(X, Y) :- hermana(Y,Z).














1.4. Defina la relación 'nieto' usando la relación 'progenitor'.
Recomendación: Será similar a la relación abuelo.
nieto( X, Z) :- progenitor( Y, X) , progenitor( Z, Y).

1.5. Defina la relación tía( X, Y) en términos de las relaciones 'progenitor' y
'hermana'. Dibuje primero un diagrama para ésta relación.



?- tía (X,Y) :- hermana(X,Z), progenitor(Z,Y)









1.6. Considere la siguiente definición alternativa de predecesor:
predecesor( X, Z) :- progenitor( X, Z).
predecesor( X, Z) :- progenitor( Y, Z) , predecesor( X, Y).
¿es apropiada esta definición? ¿Puede usted dibujar un diagrama que corresponda con esta definición?

La primera definición no es apropiada.


La segunda definición si es apropiada.











1.7. Trate de entender como Prolog deriva respuestas a las siguientes preguntas, usando el programa familiar. Dibuje también los diagramas de derivación correspondientes. Identifique los bactrakings que se encuentre:

a).?- progenitor( pamela, roberto).






b).?- madre( pamela, roberto).









c).?- abuelo( pamela, ana).
Como Pamela es mujer por eso Pamela no es abuelo de Ana.





            

d).?- abuela(roberto, jaime).
            Como Roberto es hombre por eso Roberto no es abuela de Jaime







Capítulo 2
Ejercicios:
2.1 Sugiera una representación para rectángulos, cuadrados y círculos como objetos Prolog estructurados. Escriba algunos ejemplos que representen objetos físicos concretos utilizando la representación que sugirió.











2.2 ¿Las siguientes operaciones de matching tienen éxito o fallan? Si tienen éxito, ¿cuáles son las instanciaciones resultantes en las variables?


(a). punto( A, B) = punto( 1, 2).
            Tiene éxito. Sus instanciaciones resultantes son:



(b). punto( A, B) = punto( X, Y, Z).
            No tiene éxito



(c). +( 2, 2) = 4.
No tiene éxito






(d). +( 2, D) = +( E, 2).
            Tiene éxito
 

(e). triangulo(punto(-1,0),P2,P3) = triangulo(P1,punto(1,0),punto(0,Y)).
            Tiene éxito




Usando la representación que se definió anteriormente para segmentos de línea, escriba un término que represente cualquier segmento de línea vertical en x = 5.
linea(punto(5,Y1),punto(5,Y2)).






Asuma que un rectángulo se representa con el término rectángulo( P1, P2, P3, P4) donde P1,P2,P3,P4 son los vértices del rectángulo ordenado positivamente. Defina la relación regular( R) que es verdad (true) si R es un rectángulo cuyos lados son vertical y horizontal.





2.3 Considere el siguiente programa:
f( 1, uno).
f( s(1), dos).
f( s(s(1)), tres).
f( s(s(s(X))), N) :- f( X, N).





¿Cómo contestará Prolog las siguientes preguntas? Cuando sean posibles varias respuestas, dé al menos dos de ellas.
(a). ?- f( s(1), A).
            Prolog contestará:





(b). ?- f( s(s(1)), dos).
            Prolog contestará:





(c). ?- f( s(s(s(s(s(s(1)))))), C).
            Prolog contestará:



(d). ?- f( D, tres).

           Prolog contestará:


El siguiente programa dice que dos personas son parientes si,
(a). uno es predecesor del otro, ó
(b). ambos tienen un predecesor común, ó
(c). ambos tienen un sucesor común :
parientes( X, Y) :- predecesor( X, Y).
parientes( X, Y) :- predecesor( Y, X).
parientes( X, Y) :- predecesor( Z, X), predecesor( Z, Y).
parientes( X, Y) :- predecesor( X, Z), predecesor( Y, Z).
¿ puede usted acortar el programa usando la notación de ';' ?



Reescriba el siguiente programa sin utilizar la notación de ';' :
traducir( Numero, Palabra) :-
Numero = 1, Palabra = uno;
Numero = 2, Palabra = dos;

Numero = 3, Palabra = tres.



2.4 Considere el programa anterior y realize la traza de ejecución a la pregunta :
?- enorme(X), oscuro(X).








Compare su traza de ejecución con la anterior, ya que esencialmente es la misma pregunta pero con otro orden. ¿En cuál de ambos casos Prolog realiza más trabajo antes de encontrar la respuesta final?

                   Traza de la Ejecución
1)    Lista inicial de metas: enorme(X), oscuro(X).
2)    Examina el programa de arriba hacia abajo buscando una cláusula cuya cabeza empate con la primera meta:      enorme (X)
Se encuentra la cláusula 1: enorme (oso). Esta cláusula no tiene cuerpo, así que la lista de metas, luego de instanciarse se convierte en:   oscuro(oso).
3)    Examina el programa para buscar la meta oscuro(oso), encuentra la cláusula 7 que luego de instanciarse se convierte en:   enorme(oso),negro(oso).
4)    Examina el programa para buscar la meta negro(oso), no se encuentra ninguna cláusula. Por lo tanto se realiza un proceso de backtracking al paso 3) y se elimina la instanciación negro(oso)
Se continúa examinando el programa a partir de la cláusula 7.
5)    Examina el programa para buscar la meta oscuro(oso), encuentra la cláusula 8 que luego de instanciarse se convierte en:  enorme(oso),cafe(oso).
Esta cláusula no tiene cuerpo, así que la lista de metas se queda vacía. Esto indica una terminación exitosa y la instanciación correspondiente a la variable queda como:             X = oso.

En la ejecución oscuro(X), enorme(X) Prolog realiza más trabajo antes de encontrar la respuesta final.


 Capítulo 3

Ejercicios.
1. Escriba una meta, usando concat, para eliminar los tres últimos elementos de una lista L produciendo otra lista L1. Recomendación: L es la concatenación de L1 y una lista de tres elementos.

2. Escriba una secuencia de metas para eliminar los tres primeros elementos y los tres últimos elementos de una lista L produciendo la lista L2.

3. Defina la relación:
ultimo( Elemento, Lista)
de tal modo que Elemento sea el último elemento de la lista Lista. Escriba dos versiones:
(a) usando la relación concat, y (b) sin usarla.





4. Defina la relación max(X,Y,Max) de tal modo que Max sea el mayor valor de los dos números X y Y.



5. Defina el predicado maxlist(List, Max) de tal manera que Max sea el mayor número de la lista List de números.

6. Defina el predicado sumlist(List, Sum) donde Sum es la suma de una lista de números dada en List.

7. Defina el predicado ordenada(List) el cual es cierto (devolverá yes) si List es una lista ordenada de números en forma ascendente o descendente, por ejemplo,
?- ordenada(1,5,6,6,9,12).
Yes



8. Defina el predicado subsum(Set, Sum, Subset) donde Set es una lista de números, Subset es un subconjunto de esta lista y Sum es la suma de los números en Subset. Por ejemplo,
Sub = [1,2,2];
Sub = [2,3];
Sub = [5];
...

Capítulo 4
Ejercicios.



4.1 Escribir preguntas para encontrar lo siguiente:
aa)    Nombres de las familias que no tienen hijos.


bb)    Nombres de todos los hijos que no trabajan.




cc)    Nombres de las familias con esposas que trabajan y esposos que no trabajan.



dd)    Todos los hijos cuyos padres difieren en edad con al menos 10 años.
ee)    Definir la relación: gemelos(Hijo1, Hijo2) que sirva para encontrar geme-los en la base de datos.
      
    Capítulo 5
Ejercicios.






























sábado, 23 de febrero de 2013

Arbol Genealogico

https://www.dropbox.com/s/zi0w569i4n8r9ke/tarea-vero.pl

viernes, 22 de febrero de 2013

prolog.

Prolog: una introducción a la programación lógica Cuando se piensa en programación, lo que usualmente viene a la mente son funciones, ciclos, condicionales y variables. Conocemos los lenguajes C, C++, Java, C# y demás viejos amigos. Pensamos en algoritmos; una secuencia de pasos apoyados por estructuras de control. El paradigma imperativo de programación es, sin duda, el más utilizado y conocido por la mayoría de la gente. Pocas veces nos imaginamos un lenguaje de programación en donde no necesitamos decirle a la computadora una secuencia de instrucciones; donde el flujo de control sea irrelevante y no necesitamos de for, if, llamadas a métodos y demás artilugios de la programación imperativa. Siendo ésta la revista Paradigmas, usaremos este espacio para cambiar el paradigma de programación al que estamos acostumbrados: el Paradigma Declarativo. Lleva este nombre porque el programador declara lo que debe resultar del cómputo; en contraste con ordenar cómo se debe de llegar al resultado. Es decir, describimos el problema en lugar de implementar un algoritmo para su solución. Una rama del paradigma declarativo es la programación lógica; estrechamente ligada a la Inteligencia Artificial. Programación lógica significa el definir hechos y relaciones combinados con lógica matemática para describir la solución a un problema. Prolog es probablemente el lenguaje lógico más conocido en la actualidad. Nacido en la década de los 70’s en Francia, fue concebido originalmente como un procesador del lenguaje natural (Francés). Existen actualmente muchas implementaciones de Prolog, las cuales pueden ser descargadas gratuitamente, como por ejemplo SWI-Prolog. Tras escribir código Prolog, uno tiene que correrlo en un intérprete y realizar consultas para obtener resultados. Dichas consultas sólo pueden verse en modo de línea de comandos dentro del programa intérprete; pero por medio de librerías externas, se pueden crear interfaces gráficas en otro lenguaje de programación como Java, con Prolog integrado para hacer consultas lógicas. Muchas veces, el proceso por el cual se resuelve un problema es por unificación de variables, el cual será explicado más adelante. Para resolver un problema en Prolog, uno necesita crear una base de conocimientos a partir de aserciones de hechos. Un hecho se define de la forma: Propiedad(x). Lo anterior quiere decir “x tiene propiedad”. Por ejemplo, digamos que queremos hacer un programa que nos diga las relaciones familiares de los personajes de Los Simpson. Nuestra base de conocimientos puede decir quién es hombre y quién es mujer: hombre(abraham). mujer(mona). hombre(homero). mujer(paty). mujer(selma). mujer(marge). hombre(bart). mujer(lisa). mujer(maggie). Ahora necesitamos definir las relaciones entre nuestros personajes. Esto también se hace por medio de hechos, de la siguiente manera: Relación(x,y). Lo anterior significa: “x tiene relación con y”. Podemos entonces hacer relaciones como las que siguen: progenitor(homero,bart). progenitor(marge,bart). progenitor(homero,lisa). progenitor(marge,lisa). progenitor(marge,maggie). progenitor(abraham,homero). progenitor(mona,homero). Ahora, supongamos que queremos saber quiénes son las hermanas o los abuelos de una determinada persona. Podríamos utilizar hechos…pero entonces no estaríamos programando, sino meramente declarando relaciones. Podemos hacer que Prolog deduzca las relaciones. Para esto declaramos una regla de inferencia. Una regla de inferencia es una serie de proposiciones lógicas separadas por comas. Se van evaluando una a una y si alguna resulta devolver falso, toda la proposición resulta falsa. Por ejemplo, para deducir quién es el abuelo de alguien debemos encontrar al hombre que es el padre del padre de la persona. Aquí se usa la llamada unificación de variables. Esto quiere decir que cuando le hacemos una consulta al intérprete de Prolog, le decimos que nos busque todos los valores posibles de alguna variable (denotada con mayúscula) dada cierta regla lógica. Por ejemplo, consideremos los siguientes enunciados: abuelo(X,Y):- hombre(Y), progenitor(P,X),progenitor(Y,P). //Y es abuelo de X si Y es hombre, existe un P tal que P es progenitor de X y Y es progenitor de P. abuela(X,Y):- mujer(Y), progenitor(P,X),progenitor(Y,P). //Y es abuela de X si Y es mujer, existe un P tal que P es progenitor de X y Y es progenitor de P. hermano(X,Y):- hombre(Y), progenitor(E,X),progenitor(E,Y), X \= Y. // Y es hermano de X si Y es hombre, existe un E que sea progenitor de X y de Y, y Y no es la misma persona que X. hermana(X,Y):- mujer(Y), progenitor(E,X),progenitor(E,Y), X \= Y. // Y es hermana de X si Y es mujer, existe un E que sea progenitor de X y de Y, y Y no es la misma persona que X.

sábado, 22 de enero de 2011

Industria.

La industria es el conjunto de procesos y actividades que tienen como finalidad transformar las materias primas en productos elaborados, de forma masiva. Existen diferentes tipos de industrias, según sean los productos que fabrican. Por ejemplo, la industria alimenticia se dedica a la elaboración de productos destinados a la alimentación, como el queso, los embutidos, las conservas, las bebidas, etc. Para su desarrollo, la industria necesita materias primas y maquinarias y equipos para transformarlas.

Importancia de la industria
La industria fue el sector motor de la economía desde el siglo XIX y, hasta la Segunda Guerra Mundial, la industria era el sector económico que más aportaba al producto interior bruto (PIB), y el que más mano de obra ocupaba. Desde entonces, y con el aumento de la productividad por la mejora de las máquinas y el desarrollo de los servicios, ha pasado a un segundo término. Sin embargo, continúa siendo esencial, puesto que no puede haber servicios sin desarrollo industrial.
La industria alimentaria
Es la parte de la industria encargada de la elaboración, transformación, preparación, conservación y envasado de los alimentos de consumo humano y animal.
Las materias primas de esta industria consisten principalmente de productos de origen vegetal (agricultura), animal (ganadería) y fúngico.
El progreso de esta industria nos ha afectado actualmente en la alimentación cotidiana, aumentando el número de posibles alimentos disponibles en la dieta.
El aumento de producción ha ido unido con un esfuerzo progresivo en la vigilancia de la higiene y de las leyes alimentarias de los países intentando regular y unificar los procesos y los productos.

Los procesos de fabricación
Aunque exista una gran diversidad de industrias alimentarias los procesos de fabricación pueden clasificarse en seis diferentes: manipulación de los alimentos, almacenamiento de los mismos y de las materias primas, la extracción de sus propiedades, la elaboración hasta un producto final, el envasado y la conservación de los alimentos.
Procesos de manipulación
Los procesos de manipulación humana de los alimentos tienden a disminuirse en la industria alimentaria, es frecuente ver elementos en las factorías que automatizan los procesos de manipulación humana para la alimentación.

Procesos de almacenamiento
El almacenamiento de materias primas está orientado a minimizar el efecto de estacionalidad de ciertos productos alimentarios. Generalmente suelen emplearse para el almacenamiento en silos, almacenes acondicionados al tipo de industria específico (herméticos, al aire libre, refrigerados, etc.), cámaras frigoríficas, etc.
Procesos de extracción
Algunos alimentos necesitan de procesos de extracción, bien sea de pulpas (en el caso de frutas), huesos, o líquidos. Los procesos industriales para realizar la extracción pueden ser la mediante la trituración del alimento, el machacado o molienda (cereales para el pan, las olivas para el aceite, etc.), extracción mediante calor (grasas, tostado del pan, etc. ), secado y filtrado, empleo de disolventes.
Procesos de elaboración
Los procesos habituales de la elaboración de alimentos, tienen como objeto la transformación inicial del alimento crudo para la obtención de otro producto distinto y transformado, generalmente más adecuado para su ingesta. Algunos de los procesos de elaboración tienen su fundamento en la conservación del alimento

Cocción. Suele emplearse en la elaboración de muchos alimentos de origen cárnico,
Destilación.
Secado, Es tradicional su uso en pescados, así como en el de carne, con motivo de aumentar su conservación. En estos casos el proceso de elaboración y de conservación coincide.
Fermentación, mediante la adicción de microorganismos (levadura), es muy empleada en la industria de las bebidas: industria del vino y en la industria cervecera.
Procesos de conservación
Esta fase es vital en algún tipo de producción de alimentos, en parte debido a que los procesos de conservación en la industria alimentaria tienen por objeto la interrupción de la actividad microbiana y prolongar la vida útil de los alimentos. Para ello se tiene la posibilidad de trabajar con dos variantes:

Pasteurización.
Esterilización antibiótica. Es uno de los procesos de conservación de alimentos más importante, prolongando la vida útil del alimento considerablemente. Es quizás el más antiguo de ellos.
Esterilización por radiación. Entre ellas se encuentra la radiación ionizante empleada para el control de envases, así como la radiación de microondas.
Acción química
Algunos procesos de conservación de alimentos pretenden sin embargo inhibir el desarrollo de los microorganismos, tales son:

Refrigeración.
Deshidratación.
Procesos de envasado
La crisis del agua y el impacto que causa la industria de embotellado, El agua es cada día más escasa y costosa, las actividades en una industria de bebidas, requieren considerable cantidad de este recurso. Existen innumerables estimaciones sobre cuantos litros de agua se necesitan para producir un litro de gaseosa. Cifras procedentes de plantas embotelladoras de otros países indican que el número óptimo es 2,1 litros de Agua por cada litro de bebida embotellada; aunque normalmente fluctúa entre 2,2 a 2,4 litros de agua por cada litro de bebida embotellada.

MORELOS

"QUE LOS NATURALES DE LOS PUEBLOS SON DUEÑOS DE SUS TIERRAS".