- Caso del Granjero agregando portada personalizada.
- Algoritmos? No recuerdo a que se refiere esta tarea.
- Tarea de investigación de términos de Prolog.
- Práctica de Turbo Prolog con ejemplos de familiares. tía, primo, abuela.
- Práctica de Turbo Prolog con ejemplo de familiares. suegro, concunia, cuñado.
- Abril 30 al 6 de Mayo.
- Mayo 7 al 13.
- Mayo 14 al 20.
- Examen que corresponde según las indicaciones del sorteo.

T3.1 - Caso del el Granjero agregando portada personalizada.
 

REALIZA UN CLICK EN GRAJERO.EXE PARA BAJAR EL ARCHIVO EJECUTABLE

database
     orillaizquierda(symbol)
     orilladerecha(symbol)
     gposicion(symbol)
predicates
     mover(symbol)
     legal
     rio_atravesado
     rio
     navegar(symbol,symbol)
     disponer
     transportizquierda(symbol,integer,integer,integer)
     transportderecha(symbol,integer,integer,integer)
     checkgranjero
     movergranjero(integer)
goal
assert(orilladerecha(pollo)),
assert(orilladerecha(grano)),
assert(orilladerecha(zorra)),
rio_atravesado.

clauses

rio_atravesado:-
     disponer,
     orilladerecha(X),
     mover(X),
     orillaizquierda(pollo),
     orillaizquierda(zorra),
     orillaizquierda(grano),
     cursor(20,8),
     write("Todos del otro Lado"),nl,nl.

mover(X):-
     checkgranjero,
     assert(orillaizquierda(X)),
     retract(orilladerecha(X)),
     navegar(X,izquierda),
     legal,!.

mover(X):-
     orillaizquierda(Y),Y<>X,
     retract(orillaizquierda(Y)),
     navegar(Y,derecha),
     assert(orilladerecha(Y)),!.

mover(X):-
     retract(orillaizquierda(X)),
     navegar(X,derecha),
     assert(orilladerecha(X)).

legal:-
     orillaizquierda(zorra),
     orillaizquierda(grano).

legal:-
     orilladerecha(grano),
     orilladerecha(zorra).

rio:-
     line(5000,12000,25000,12000,5),
     line(5000,18000,25000,18000,5).

navegar(zorra,izquierda):-
     transportizquierda(zorra,9,25,5).
navegar(pollo,izquierda):-
     transportizquierda(pollo,12,25,5).
navegar(grano,izquierda):-
     transportizquierda(grano,15,25,5).
navegar(zorra,derecha):-
     transportderecha(zorra,9,5,25).
navegar(pollo,derecha):-
     transportderecha(pollo,12,5,25).
navegar(grano,derecha):-
     transportderecha(grano,15,5,25).

transportizquierda(T,X1,Y1,Y2):-
     Y1=Y2,
     cursor(X1,Y1),
     write("          "),
     cursor(X1,Y1),
     write(T),
     cursor(6,Y1),
     write("          "),
     cursor(6,Y1),
     readchar(_),
     write("granjero"),
     readchar(_),
     assert(gposicion(izquierda)),!.

transportizquierda(T,X1,Y1,Y2):-
     cursor(X1,Y1),
     write("          "),
     cursor(X1,Y1),
     write(T),
     cursor(6,Y1),
     write("          "),
     cursor(6,Y1),
     readchar(_),
     write("granjero"),
     readchar(_),
     Z=Y1-1,rio,
     transportizquierda(T,X1,Z,Y2).
transportderecha(T,X1,Y1,Y2):-
     Y1=Y2,
     Temp=Y1-1,
     cursor(X1,Temp),
     write("          "),
     cursor(X1,Y1),
     write(T),
     cursor(6,Temp),
     write("          "),
     cursor(6,Y1),
     readchar(_),
     write("granjero"),
     retract(gposicion(izquierda)),!.
     transportderecha(T,X1,Y1,Y2):-
     Temp=Y1-1,
     cursor(X1,Temp),
     write("          "),
     cursor(X1,Y1),
     write(T),
     cursor(6,Temp),
     write("          "),
     cursor(6,Y1),
     readchar(_),
     write("granjero"),
     readchar(_),
     Z=Y1+1,rio,
     transportderecha(T,X1,Z,Y2).

disponer:-
     graphics(1,1,0),
     cursor(0,3),
     write("Universidad Autonoma de Tamaulipas"),
     cursor(4,3),
     write("Unidad Academica Multidisciplinaria"),
     cursor(5,16),
     write("Zona Sur"),
     cursor(8,10),
     write("INTELIGENCIA ARTIFICIAL"),
     cursor(9,3),
     write("Ing. Julio A. Serrano De Los Santos"),
     cursor(13,10),
     write("PROGRAMA DEL GRANJERO"),
     cursor(16,15),
     write("INTEGRANTES:"),
     cursor(17,3),
     write("Jaime Rodriguez Echavarria 9610817"),
     cursor(20,15),
     write("9 A  I.S.C."),
     readchar(_),
     clearwindow,
     rio,
     cursor(6,25), write("Granjero"),
     cursor(9,25), write("Zorra"),
     cursor(12,25), write("Pollo"),
     cursor(15,25), write("Grano"),
     cursor(0,4),
     readchar(_),
     write("Granjero, Zorra, Pollo, y Grano").

checkgranjero:-
     not(gposicion(izquierda)).
checkgranjero:-
     movergranjero(5).

movergranjero(Y):-
     Y=25,
     cursor(6,24),
     write("          "),
     cursor(6,25),
     readchar(_),
     write("granjero"),
     retract(gposicion(izquierda)),rio,!.

movergranjero(Y):-
     Temp=Y-1,
     cursor(6,Temp),
     write("          "),
     cursor(6,Y),
     readchar(_),
     write("granjero"),
     readchar(_),
     Z=Y+1,rio,
     movergranjero(Z).
 
 






T3.2 - Algoritmos

1.- Algoritmo Genetico
Un algoritmo genético (AG) es un método informático de búsqueda de soluciones que está basado en mecanismos genéticos y en la selección natural.

Los AG constituyen una formalización de los procesos evolutivos, y con ellos podemos simular la evolución en los ordenadores.

Los AG nos interesan por dos razones:
* Sintetizan dos disciplinas aparentemente dispares como son la biología y las ciencias de la computación, permitiendo iluminar viejos problemas desde nuevas perspectivas.
* Como método de búsqueda de soluciones es rápido, se puede aplicar a las más variadas situaciones , y es sencillo de programar y de entender.

2.- Método analítico
Si existe la función F, es de una sola variable, y se puede derivar dos veces en todo su rango, se pueden hallar todos sus máximos, sean locales o globales. Sin embargo, la mayoría de las veces no se conoce la forma de la función F, y si se conoce, no tiene porqué ser diferenciable ni siquiera una vez.
Métodos exhaustivos, aleatorios y heurísticos
Los métodos exhaustivos recorren todo el espacio de búsqueda, quedándose con la mejor solución, y los heurísticos utilizan reglas para eliminar zonas del espacio de búsqueda consideradas "poco interesantes".
Algunos algoritmos de búsqueda, como el MiniMax, son de este tipo; se suelen utilizar en juegos para examinar y podar el árbol de posibilidades a partir de la jugada actual; Deep Blue, por ejemplo, juega de esta forma.

En los métodos aleatorios, se va muestreando el espacio de búsqueda acotando las zonas que no han sido exploradas; se escoge la mejor solución, y, además, se da el intervalo de confianza de la solución encontrada.

Subiendo la montaña
En estos métodos, también denominados de hillclimbing, se va evaluando la función en uno o varios puntos, pasando de un punto a otro en el cual el valor de la evaluación es superior. La búsqueda termina cuando se ha encontrado el punto con un valor máximo. En general, un algoritmo escalador funciona de la forma siguiente
3.- Método Escalador o Algoritmo escalador
*Escoger una solución inicial (xi,...,xn)
      *Mientras que siga subiendo el valor de F, hacer
*Alterar la solución (x'i,...,x'n) = (xi,...,xn) + (yi,...,yn), y evaluar F.
*Si F(x'i,...,x'n) > F(xi,...,xn), hacer (xi,...,xn) = (x'i,...,x'n).
*Volver a 2.

Estos algoritmos toman muchas formas diferentes, según el número de dimensiones del problema solución, el valor del incremento y en la dirección en la cual se tiene que dar. En algunos casos se utiliza el llamado Método Montecarlo (por el casino), en el cual se escoge la nueva solución de forma aleatoria.

El principal problema de este tipo de algoritmos es que se quedan en el pico más cercano a la solución inicial; además, no son válidos para problemas multimodales, en los cuales la función de coste tiene varios óptimos posibles.
 

 Recocimiento simulado
Conocido como Simulated Annealing, en inglés, el nombre viene de la forma como se consiguen ciertas aleaciones en forja; una vez fundido el metal, se va enfriando poco a poco, para conseguir finalmente la estructura cristalina correcta, que haga que la aleación sea dura y resistente.

Este algoritmo se podría calificar como escalador estocástico, y su principal objetivo es evitar los mínimos locales en los que suelen caer los escaladores.

Para ello, no siempre acepta la solución óptima, sino que a veces puede escoger una solución menos óptima, siempre que la diferencia entre ambos tenga un nivel determinado, que depende de un parámetro denominado temperatura (seguimos con la metáfora).
 

4.- Método o Algoritmo de reconocimiento simulado
*Inicializar la temperatura T, y la solución inicial (xi,...,xn) y evaluar F(xi,...,xn).
*Repetir los pasos siguientes, hasta que la temperatura sea nula o el valor de F converja:
*Disminuir la temperatura.
*Seleccionar una nueva solución (xi',...,x'n) en la vecindad de la anterior (mutar la solución), y evaluarla.
*Si F(x'i,...,x'n) > F(xi,...,xn), hacer (xi,...,xn) = (x'i,...,x'n), si no, generar un número aleatorio R entre 0 y 1. Si, entonces (xi,...,xn) = (x'i,...,x'n).
 

Técnicas basadas en población
Este tipo de técnicas pueden ser versiones de cualquiera de las anteriores, pero en vez de tener una sola solución, que se va alterando hasta obtener el óptimo, se persigue el óptimo cambiando varias soluciones; de esta forma es más fácil escapar de los mínimos locales tan temidos. Entre estas técnicas se hallan la mayoría de los algoritmos evolutivos.
 

Técnicas experimentales
En algunos casos, solo el ojo humano es capaz de evaluar lo apropiada que es una solución a un tema determinado, por ejemplo, en problemas de diseño o de calidad.

En este caso, se pueden utilizar cualquiera de las técnicas expuestas anteriormente, pero a la hora de evaluar una solución, un experto o experta tendrá que darle una puntuación. Por ejemplo, es lo que se usa cuando uno se prueba ropa para dar con la combinación correcta de colores y estilos.







T3.3 - Tarea de investigación de términos de Prolog.

1. Describe las operaciones con listas permitidas.

Listas
Una lista en Prolog es un conjunto de nombres de objetos, o átomos, separados por comas y encerrados en paréntesis cuadrados. Los miembros de una lista deben ser nombres válidos de objetos, pero todos los miembros deben ser declaraciones de un mismo dominio.

 [member1,member2...memberN]  o [ ]

La lista puede ser vista, como un objeto don dos partes:
        * La cabeza de la lista, conformada por el primer elemento.
        * La parte restante de la lista, llamada la cola.

[ann,tenis,tom,skiing]

En la última lista del ejemplo, la cabeza es ann, mientras que la cola de la lista es la lista:

[tenis,tom,skiing].

Algunas Operaciones son:

Uniones, se un elemento a la listas
 [el a|[b,c,d]] = [el a,b,c,d]
Búsquedas de miembros
member(broccoli, [la manzana, brócoli, las galletas])
Agregar una lista a otra.
append([a,b,c],[d,e,f],X)

2. Muestra como se escriben Comentarios.

Al igual que en lenguaje C los comentarios son escritos dentro de los delimitadores /**/

/* Esto es un comentario de Prolog de lo mas chingon !!!!!! me encanta proramar!!!*/

3. Define un Término Compuesto.

Los términos de Prolog básicos son

Entero : Un positivo o el número negativo cuyo valor absoluto está menos de algunos poder aplicación específico de 2

Átomo : Un texto el principio constante con una letra minúscula.

Variables : Empieza con una letra mayúscula o un guión bajo

Estructura: (Termino compuesto) Los objetos estructurados (o simplemente estructuras) son objetos que tienen varios componentes. Los componentes pueden ser a su vez estructuras. Por ejemplo, la fecha, puede ser vista como una estructura con 3 componentes: día, mes y año. Las estructuras son tratadas en el programa como objetos simples, aunque estén formadas por muchos componentes. El orden en que se combinan los componentes dentro de un objeto simple. Todos los componentes en este ejemplo son constantes (2 enteros y un átomo).

fecha(1, enero, 1975)

4. Define Símbolo Atómico.

Átomos y números
Los átomos pueden construirse con cadenas de letras, dígitos y carácter '_'. Empezando con una letra minúscula:

 anna
 nil
x25
 x_25
 miss_Jones

Cadenas de caracteres encerradas en  apóstrofes. Esto se utiliza cuando se quiere, por ejemplo, tener un átomo que empiece con una letra mayúscula.  Dependiendo del compilador de Prolog, pueden ser dobles las comillas.

 'Tom'
 'South_America'

También pueden hacerse legalmente átomos de los símbolos, como sigue:

--\062
++

5. Define Variable Anónima.

Las variables son similares a los átomos, pero es distinguido empezando con o una letra mayúscula o con el guión bajo ( _ )

 Anna
 Nil
X25
X_25
 _miss_Jones

Cuando una variable aparece en una cláusula sola, no se necesita inventar un nombre para ella. Se usa llamarla variable "anónima", cuando es escrito únicamente el signo '_'. Por ejemplo, consideremos la siguiente regla:

hasachild(X) :- parent (X,Y).

La regla dice: para toda X, X tiene un hijo si X es el padre de alguna Y. Nosotros estamos definiendo la propiedad hasachild el cual, no depende del nombre del hijo. Entonces, aquí hay un lugar en donde podemos usar una variable anónima. Si reescribimos la cláusula:

hasachild(X) :- parent(X,_).

Cada vez que aparezca el subguión en una cláusula, representa una nueva variable anónima. El efecto de esta variable, es ignorar todos los objetos en esta posición.

6. Define Términos o argumentos de los predicados.

Predicados
Un predicado es la relación directa con una expresión. Cada predicado usado en una cláusula de Prolog debe ser declarado, basado en la declaración de los tipos de dominios para cada uno de los nombres de los objetos.

El nombre del predicado sigue las reglas para los átomos. Los argumentos pueden ser cualquier término de Prolog.

 patient (name,age,weight,blood_pressure).
 market (territory,manager,sales).
     genus (species,species,species).

Construir Predicados.

El concepto de construir un predicado de evaluación. Un predicado esta predefinido por Prolog. No hay ninguna cláusula en el banco de datos para construir en predicados. Cuando el código encuentra una meta que se construye  predicado, llamando un procedimiento predefinido.

Construir predicados normalmente se escribe en el idioma llevaba a cabo el programador. Realizando funciones que no tienen nada que ver con teorema para demostrar algo lógico, como escribir a la pantalla Por esta razón ellos se llaman en ocasiones predicados extra-lógicos.

7. Muestra la Sintaxis de las reglas y los hechos.

Reglas:
Una regla, consiste en una conclusión y una premisa expresada en el siguiente formato general:

 relación (objeto) if
       relación (objeto).

Donde el if especificado es de tipo causal, el cual  implica la relación A->B; en donde la regla de Prolog sería: B if A. Hay que hacer notar el punto al final de la expresión. Cualquier número de objetos pueden ser incluidos en el argumento a un lado de la regla, y la premisa puede incluir más de un hecho.

Cláusulas: (Hechos)
Los hechos y las reglas constituyen la base de conocimiento en Prolog, los cuales conocemos como cláusulas.
Una cláusula es una expresión basada en hechos con  un predicado declarado (relación) y un argumento, donde se especifican los objetos, o bien, puede ser una regla en la cual se incluyan expresiones con sus premisas y conclusiones.

 patient("Kendall",female,24).
 stock("armco","30 Aug",89.25,"up",5).
 buy(negociant) :- province("Bordeaux").

El programador de Prolog mantiene los medios de los hechos magnetofónicos y reglas en el banco de datos dinámico, así como los medios para llamarlos. El banco de datos se pone al día por 'consultando o ‘reconsultando’ el programan fuente. También pueden teclearse directamente predicados por el programador, pero ellos no se salvan entre  las sesiones.


T3.4 - Práctica de Turbo Prolog con ejemplos de familiares. tía, primo, abuela.

domains
       persona=symbol
predicates
          vieja(persona)
          machote(persona)
          tia(persona,persona)
          progenitor(persona,persona)
          ruca(persona,persona)
          el_primo(persona,persona)
          hermanilla(persona,persona)
clauses
       vieja(maricela).
       vieja(herminia).
       vieja(ernestina).
       machote(eduardo).
       progenitor(jaime,herminia).
       progenitor(aida,ernestina).
       progenitor(jaime_jr,jaime).
       progenitor(jaime_jr,aida).
       progenitor(eduardo,maricela).
       hermanilla(aida,maricela).

tia(Sobrino,Tia):-
                 progenitor(Sobrino,Padre),
                 hermanilla(Padre,Tia),
                 vieja(Tia).

el_primo(P1,Primo):-
                   progenitor(P1,Padre),
                   progenitor(Primo,Padre2),
                   hermanilla(Padre,Padre2),
                   machote(Primo).

ruca(Nieto,Abuela):-
                  progenitor(Nieto,Padre),
                  progenitor(Padre,Abuela),
                  vieja(Abuela).
 
 



 





T3.5 - Práctica de Turbo Prolog con ejemplo de familiares. suegro, concunia, cuñado.

domains
 persona=symbol

predicates
          vieja(persona)
          machote(persona)
          machote(persona)
          papa_novia(persona,persona)
          concuna(persona,persona)
          cunado(persona,persona)
          progenitor(persona,persona)
          matrimonio(persona,persona)
          hermanitos(persona,persona)

clauses
       vieja(adriana).
       machote(wilson).
       machote(ramon).
       progenitor(maruca,wilson).
       hermanitos(maruca,ramon).
       matrimonio(ramon,adriana).
       matrimonio(jaime,maruca).

papa_novia(Persona,Suegro):-
                            matrimonio(Persona,Esposa),
                            progenitor(Esposa,Suegro),
                            machote(Suegro).

concuna(Persona,Concuña):-
                          matrimonio(Persona,Esposa),
                          matrimonio(Cuñado,Concuña),
                          hermanitos(Esposa,Cuñado),
                          vieja(Concuña).

cunado(Persona,Cuñado):-
                        matrimonio(Persona,Esposa),
                        hermanitos(Esposa,Cuñado),
                        machote(Cuñado).
 





L3.1 - Abril 30 al 6 de Mayo.

1er. Artículo.- Dice que los mensajes en cadena por vía e-mail es una arma para saturar y amenazar a los servidores. En opinión de Ángel Peña comenta que las "cadenas son ataques informáticos ya que las cadenas pueden ser de todo tipo de contenido.

2do. Artículo.- UnosCientificos descubrieron que la tierra pesa menos de lo pensado. Este nuevo calculo dice que pesa 8.000 billones de toneladas métricas, esta medición fue hecha por la Universidad de Washington, en Seattle.

3er. Artículo.-La movilnety Ciudad virtual Merlin Telecom lanzo un sistema de internet desde el celular en su 1era. fase permitira escuchar y responder el correo y acceder a noticias, asi como escuchar horoscopos y chistes. Contiene tecnología de reconocimiento de voz ASR y de texto TTS.


 
 




L3.2 - Mayo 7 al 13.

Artìculo 1.Arrestan a sospechoso de crear virusEste artìculo habla acerca de la persona que causo muchos problemas la semana pasada, con su virus del carta de amor. Este artìculo dice que ya esta arrestado, y por el nombre del virus pensaron que se trataba de una mujer pero segun las pistas los llevaron a un hombre. Éstos registraron el departamento del sospechoso y encontraron revistas de computaciòn pero ninguna computadora. Ahora solo queda seguir investigando y llegar hasta el fin de esto, y sobre todo que si esta persona resulta culpable, pues que reciba su merecido, porque no se ponen a pensar en los problemas que sus dichosos virus ocasionan, ya que todos estamos expuestos a èsto.

Artìculo 2 Atrapado en la redComentan en este articulo muchas de las personas que utilizan Internet, se les vuelve en un hàbito a tal grado, de que necesariamente tienen que navegar. Como dicen esto tal vez no se considere como una enfermedad pero mas que nada para los niños no esta muy bien, hay que controlar este hábito para que no llegue a convertirse en adicciòn.

Artículo 3 ¿Software gratis?Este articulo nos habla sobre los programas gratis
Los "Freeware" son programas que se entregan sin costo alguno, ni ahora ni en el futuro.

Los "Shareware" son programas que se entregan para tomarles el gusto, pero que hay que comprar tras un período de prueba.

Free Site NonagsOnly Freeware Freeware Home Freeware Plus
 
 





L3.3 - Mayo 14 al 20.

PRIMER RESÚMEN:ALARMA POR VARIANTE DE 'I LOVE YOU'

Se está difundiendo una variante por internet del virus "i love you" que está siendo agresiva.

"I love you" infectó 45 millones de computadoras hace dos semanas. El nuevo virus "VBS.NewLove" pude incluso destruir todo el contenido del disco duro.

Se dice que no se abran mensajes de procedencia desconocida o que tenganextensiones ejecutables tales como .exe, .com, .jpg y .vbs.

El virus no ha llegado a Europa, pero se peopaga tal como el "i love you", por e-mail, almacenándose en las direcciones del "Outlook Express" de Windows. Este virus se difunde mas lento pero pude ocacionar daños mayores.

SEGUNDO RESÚMEN:CADA VEZ MÁS ACCESIBLE.

El fabricante de PCS mas grande del mundo sacó su computadora de bolsillo Presario 1200 XL-450, al precio de 999 dólares, la cual ya está disponible.

La Presario 1200 cuenta con un procesador Advanced Micro Devices Inc.AMD K62 de 450 MHZ, también cunta con 32 MB de memoria de accesoaleatorio RAM y un disco duro de 5,9 GB. También contiene software que ya trae incorporado, como MicrosoftWorks 2000, Money 2000, Word 2000 y Encarta 2000.

TERCER RESÚMEN:CELULARES SERIÁN LAS SIGUIENTES VÍCTIMAS

Los celulares podrían ser víctimas de virus parecidos al "Love Bug", el cual interrumpió miles de sistemas de computadoras en el mundo.

Los celulares infectados por estos virus podrían grabar las conversaciones de cualquiera y pasarlas a otros; borrar dinero de 'billeteras electrónicas', o acumular grandes cuentas telefónicas.Alguna persona envía un número de teléfono por e-mail y uno tiene que tocarlo para hacer la llamada, así lo dijo un especialista de seguridad en Internet del laboratorio ATT en New Jersey.










ExP3 -Examen que corresponde según las indicaciones del sorteo.

Parcial 3

Examen 4

Exámen Parcial

     El examen consiste en realizar en Turbo Prolog un conjunto de reglas para las relaciones genéricas (no importa el
     sexo):

          1. primo_a

          2. bisabuelo_a

          3. abuelo_a

          4. cunado_a
 
 

          predicates

               parent(symbol,symbol)

               sibling(symbol,symbol)

               abuelos(symbol,symbol)

               primo(symbol,symbol)

               cunado(symbol,symbol)

               bisabuelo(symbol,symbol)

               casados(symbol,symbol)
 
 

          clauses

               parent(damian,vianka).

               parent(vianka,eduardo).

               parent(vianka,mortimer).

               parent(susana,lily).

               parent(lily,eduardo).

               parent(lily,mortimer).

               parent(julieta,lluvia).

               parent(nora,lluvia).

               parent(eduardo,rafael).

               parent(mortimer,octavio).

               casados(damian,nora).
 
 

          sibling(Child1,Child2):-

               parent(Child1,Parent),

               parent(Child2,Parent),

               not(Child1=Child2).
 
 

          abuelos(Child,Abuelo):-

               parent(Child,Parent),

               parent(Parent,Abuelo).
 
 

          primo(Child1,Child2):-

               parent(Child1,Parent1),

               parent(Child2,Parent2),

               sibling(Parent1,Parent2).
 
 

          cunado(Persona,Cunado):-

               casados(Cunado,Persona2),

               sibling(Persona2,Persona),

               not(Persona2=Persona).
 
 

          bisabuelo(Persona,Bisabuelo):-

               parent(Hijo1,Bisabuelo),

               parent(Hijo2,Hijo1),

               parent(Persona,Hijo2).


1