martes, 26 de junio de 2007

Características del lenguaje prolog

Ejecución de los programas:
Para la ejecución de los programas de Prolog, proponemos el Ciao-Prolog, http://www.clip.dia.fi.upm.es/Software/Ciao/index.html#ciao
el cual tiene un shell que permite ejecutar objetivos.

El shell es una aplicación que esta incluida dentro del Ciao-Prolog con el nombre de ciaosh, y al ejecutarla aparece el siguiente mensaje:

Ciao-Prolog 1.9 #44: Mon Dec 30 16:47:15 2002
?-

El símbolo? nos indica la zona donde podemos escribir los objetivos a ejecutar.

Por ejemplo:

Ciao-Prolog 1.9 #44: Mon Dec 30 16:47:15 2002
?- f(X) = f(3).

X = 3 ?

Para ejecutar el objetivo es necesario teclear punto al final y teclear ENTER.
A continuación, el shel nos dice si los objetivos tiene éxito o no y como quedan instanciadas las variables. Después aparece un signo de interrogación, lo cual nos indica que le podemos pedir otra solución tecleando un punto y como (;) y pulsando ENTER.

Para cargar un programa en Ciao-Prolog es como sigue:


?- Consutl( ‘Programa.pl’ ).

Yes
?-

Observe que el nombre de fichero se escribe entre comillas simples. En caso de que se quiera ejecutar a los programas desde una carpeta, por ejemplo curso, seria:

?- Consutl( ‘c:/curso/Programa.pl’ ).

Yes
?-


Para salir del shell basta teclear el predicado halt.
?- halt.




2.2.1. Declaración de hechos y reglas

Como ya se dijo una regla al estilo prolog se representa como:

Predicado (Argumento1, Argumento2,.....)

Pc(Arg,..) si P1(Arg,.....) y P2(Arg,.....) y .......

Ahora bien la sintaxis correcta en Prolog seria

Pc (Arg,.....) :- P1(Arg,......) , P2(Arg,.....) , P3(Arg,....)........
(la cual es la sintaxis estándar que viene DEC 10 Prolog)

Algunos lenguajes aceptan también la siguiente sintaxis

Pc(Arg,.....) if P1(Arg,....) and P2(Arg,....) and ..........

Donde a cada regla se le llama cláusula
Y tendremos que para:
Pc :- Pi
Pc: Cabeza de la cláusula
Pi: Cuerpo de la cláusula
:- Cuello de la cláusula.

Sean los siguientes ejemplos de hechos o predicados:
progenitor (juan, luis).
progenitor (maria, luis).
progenitor (luis, jose).
progenitor (luis, ana).
progenitor (ana, elena).


Ahora si se preguntaran al compilador Prolog

? – progenitor (juan, luis).
yes.

Pero si fuera

? – progenitor (juan, sofia)
no

Seria la respuesta, ya que no existe ningún hecho que confirme la pregunta.

Si quiseramos saber todos los descendiente de Luis

?- progenitor (luis, X).
X= Jose
X= Ana

José y Ana son los descendientes de Luis

Ahora vamos a definir una regla o cláusula, hasta ahora solo hemos definidos hechos.
Veamos la regla abuelo:
abuelo(X,Y) :- progenitor(X,Z) , progenitor(Z, Y) , masculino (X).
Nos hizo falta un predicado que no estaba definido (masculino), por lo que necesitamos incluir nuevos hechos.
masculino(juan).
masculino(jose).
masculino(luis).
femenino(ana).
femenino(maria).
femenino(elena).
Ahora mi base de conocimientos esta compuesta por la regla Abuelo y los hechos progenitor, masculino y femenino.
Y si quisiera incluir la regla hermano.
hermano(X,Y) :- progenitor(Z,X), progenitor(Z,Y), masculino(X).
O la regla madre:
madre(X,Y) :- progenitor(X,Y), femenino(X).


Estructura de datos

Variables: Un nombre de variable puede ser cualquier sucesión de caracteres alfanuméricos que comience con una letra “mayúscula” o un subrayado (permite representar variables anónimas).
Ejemplo: Balonm X, _ , _39
Puede utilizarse la variable anónima ( _ ) cuando no interesan los valores de ese termino.
Hallar ( _, X, Y, _) Prolog solo devolverá los valores del 2do. Y 3er. Argumento. El primero y cuarto no se imprimen.
Las variables pueden unificarse con cualquier termino.

Atomos: Son constantes textuales. Pueden tener letras, dígitos o símbolos, comenzando con letras “minúsculas”. Si comienza con letra “mayúscula” o un dígito, entonces hay que encerrarlos entre apóstrofes.
Ejemplo: tenis, ‘23’, ‘París’
Los átomos siempre se unifican con átomos del mismo nombre.

Enteros: Los enteros siempre unifican con enteros del mismo valor.
Ejemplo: -2, 0, 313

Reales: Los números en Prolog no tienen limite de precisión o rango. Están limitados únicamente por la memoria disponible.
Ejemplos: 0.5 , 55.3 , -83.021
Los siguientes casos son erróneos:
5. , .5

Cadenas: Las cadenas son constantes textuales utilizadas para manipular textos en forma eficiente. Se escriben como caracteres ASCII.
Ejemplo: “Pedro vive en: “ , “El numero de tarjeta es: “
Las cadenas se unifican con otras cadenas idénticas. Las cadenas y los átomos no se unifican.


Estructura: Es una colección de objetos agrupados bajo un nombre (functor), donde
Ti = functor (A1, A2, A3,......) y unifica si los functores cazan y los argumentos son iguales.
Ejemplo: h1 = mamiferos( perro, gato, caballo)
Y h2 = mortales( mamiferos, peces, aves)
Lo cual se puede unificar como: mortales(mamiferos(perro,gato,caballo), peces, aves)

Lista: Es una colección de objetos (al igual que la estructura) agrupados en secuencia.
L = [a, b, c]. Donde siempre se extrae el primer elemento y se incluye también por el principio.
Ejemplo: Para extraer un elemento de L
L = [X ¦ R] donde ¦ es el constructor de lista
Y se obtiene X = a y R = [b, c] con X y R como variables no instanciadas
Otro ejemplo:
X = 1 y R = [2, 3]
P = [X ¦ 2, 3]
Se obtiene: P = [1, 2, 3]


Unificación de términos

La unificación es el mecanismo mediante el cual las variables toman valores. Una variable puede tomar cualquier valor de los definidos anteriormente y en ese caso se dice que la variable esta instanciada y las variables no instanciadas, son aquellas que no han tomado aun valor alguno.

Los argumentos en la unificacion cazan de la siguente forma:

Ejemplos:
?- X = 3 X unifica con el entero 3 ( y a partir de este momento queda instanciada con ese valor).
?- 5 = 5 da verdadero
?- f(X, 3) = f(5, Y) donde la variable X unifica con el entero 3 y la Y con el 5. Quedando ambas variables instanciadas con sus respectivos valores.

Estructura.

Propietario(juan,libro)
Lo que quiere decir que: Juan es propietario de un libro
Ahora si quisiéramos decir: Juan es propietario del libro la edad de oro de José Marti.
Propietario (juan, libro(“Edad de oro”, “Jose Marti”))
O mejor: Propietario(Nombre, libro(Titulo, autor(Nombre, Apellido)))
Y seria: Propietario( juan, libro(“Edad de oro”, autor (Jose, Marti)))
Esta representación tiene la ventaja que nos permite hacer búsquedas de cualquier objeto que posea Juan.
Ejemplo:
Propietario(juan, radio)
Propietario(juan, televisor)
Propietario(juan, libro(“Ismaelillo”, autor(Jose, Marti)))
Propietario(juan, libro(“Don Quijote”,autor(Miguel, Cervantes))

A la pregunta
?- Propietario (juan, Y) nos dará todas las propiedades que posee Juan
?- propietario (juan, libro) dará todos los libros que posee Juan.
?- porpietario(juan, libro(X, autor(jose, marti))) dara todos los libros que posee Juan cuyo autor sea José Marti.


Ejemplo, sean los hechos:

padre(pedro, luis).
padre(juan,mario).
padre(luis, jose).
padre(mario, marco).

Y la regla:
abuelo(X,Y) :- padre(X,Z), padre(Z,Y).

Se puede preguntar:
? - abuelo(X,Y) Todos los abuelos que existen para ese Universo
? - abuelo(juan, X) Quienes son los nietos de Juan
? - abuelo(X, jose) Quien es el abuelo de Jose (de acuerdo a la base de hechos solo puede haber un abuelo).
? - abuelo(juan, jose) Comprobar si Juan es el abuelo de Jose.


Veamos como unifican los términos para abuelo(X, jose)

?- abuelo(X, jose)

Lo primer que hará será tratar de demostrar que el objetivo abuelo se cumple, para ellos buscara una cláusula (regla), que será abuelo(X,Y) :-
Y luego unificaran los términos la variable X con la variable X y el átomo ‘jose’ con la variable Y.
Después se pasa al cuerpo de la cláusula :- padre(X,Z), padre(Z,Y).
Convirtiéndose padre(X,Z) en el objetivo a demostrar.
Para ello seleccionara el primer predicado (hecho) padre.
Padre(pedro,luis) y unificara los términos X con pedro y Z con luis
Y se pasa a ejecutar el otro predicado contenido en el cuerpo de la cláusula.
Padre(Z, Y) donde Z viene instanciada con el valor ‘luis’ y la Y viene con el valor ‘jose’
O sea buscara un padre(luis, jose).
Y como este predicado existe en la base de hecho de los padres.
Dará X = luis.

Mecanismo de control. El retroceso

Sean los siguientes hechos o predicados
padre(juan, pedro).
padre(juan, ramon).
padre(juan, luis).
padre(luis, francisco).
padre (jose, nicolas).

Y la regla o clausula
hermano(X, Y) :- padre(Z, X) , padre(Z, Y), diferente(X, Y).
diferente(X, Y) :- X \== Y.

Probar que:

?- hermano(pedro, X), padre(X, francisco).

Observen que se esta pidiendo demostrar dos objetivos. Probar que Pedro es hermano
de alguien (X) y que ese alguien es padre de Francisco.

1. Hay que demostrar que los objetivos se cumplen.
2. Analizar para que valores de las variables los objetivos se hacen ciertos.

Se probo que Pedro y Ramón son hermanos pero ahora falta demostrar el otro objetivo: Ramón padre de Francisco.
Para ello prolog deber retroceder hasta el objetivo hermano e instanciar la variable X con el átomo ramon, y pasar el objetivo padre

Por lo que prolog deberá retroceder nuevamente al objetivo hermano y comienza nuevamente el proceso de buscar otro hermano para Pedro

Prolog va marcando los hechos (padres) que ya utilizo en su demostración (con los que fracaso) y escoge otros, siempre que no se indique otra cosa escogerá los predicados de la base de hechos de forma consecutiva.


La recursividad

Veamos ahora uno de los mecanismos más complejos de estos tipos de lenguajes: la recursividad.

Primero vamos a tratar de entender el algoritmo y luego veremos un ejemplo practico.
Sea la regla:
f(X, Y) :- h(X, X1), f(X1, Y1), g(Y,Y1).
y los hechos:
f(3,3). (criterio de parada).
h(0,1)
h(1,2)
h(2,3)
g(3,2)
g(2,1)
g(1,0)

Que pasaría si le preguntáramos lo siguiente:

?- f(X, Y)


Veamos un ejemplo:

Hallar el factorial de 4
4! = 1 x 2 x 3 x 4 = 24
Esto es igual a
4! = 4 x 3!
3! = 3 x 2!
2! = 2 x 1!
O sea:
N! = N(N-1)!
(N-1)! = (N-1)(N-2)!
Por lo que podemos definir una función recurrente como sigue.
Fact(n) = n . Fact(n-1)

Veamos el programa en Prolog
% Se le asigna a la variable N1 el resultado de la expresión N – 1. (esto es un comentario)
resta(N, N1) :- N1 is –(N,1).
% Se le asigna a la variable F el resultado de la expresión N * F1.
mult(N, F1, F) :- F is *(N, F1).
fact(1,1).
fact(N,F) :- resta(N, N1), fact(N1,F1), mult(N, F1, F).

Observen que para la asignación se utilizo IS, ya que el signo(=) lo que hace es unificar
O sea si digo: X = 3+4, la variable X unificara con la estructura +(3, 4). Por lo que el valor de X no será 7, sino la expresión 3 + 4. Si quiere asignarle a X el valor de la expresión seria: X is 3 + 4. Y ahora, si el valor de X es 7.

miércoles, 6 de junio de 2007

Realidad ampliada

Vivimos tiempos de cambio, donde el desarrollo acelerado de las tecnologías se está convirtiendo en un problema, no sólo por la contaminación (hoy se habla de desarrollo sostenible) sino también por las dificultades para su asimilación, cada vez se hace más difícil digerir los cambios que se están produciendo, llamados por algunos el shock del futuro. Y casi todos coinciden en que nos encontramos en la tercera era de la computación: la computación ubicua.

Mark Weiser el creador de la computación ubicua considera tres eras de la computación:
1. La de los Mainframes que eran grandes y caras computadoras que trabajaban en tiempo compartido (muchos usuarios para una máquina) y todo el personal informático estaba en función de la computadora.
2. Las computadoras de sobremesa, pequeñas y baratas computadoras de carácter personal (una computadora para cada usuario) y aunque desaparece gran parte de la dependencia y ya no es exclusividad de los informáticos, sigue existiendo cierta dependencia.
3. La que sé esta iniciando actualmente, computadoras ubicuas, increíblemente pequeñas y baratas que serán invisibles y estarán integradas al entorno (muchas computadoras para un usuario) desaparece la computadora como la conocemos hoy y estarán incluidas de forma natural en todas las máquinas, aparatos, vivienda, ropas, etc.

Todo esto requiere cambios en la forma de comunicarse con las máquinas y de la creación de nuevas interfaz humano-computadora donde se persigue
1. Inteligencia (que los objetos no sólo procesen información sino que también manipulen conocimientos y mejor aun que aprendan del entorno)
2. Movilidad (que puedan trasladarse por si mismo, robot, o que puedan ser trasladados, usarse desde cualquier lugar: teléfonos móviles)
3. Integrabilidad (que se integre al cuerpo humano, a los objetos, al entorno)
Comunicación (conexión entre los objetos y que sean capaces de interactuar entre ellos y con los humanos.
La computadora puede aislar aún más al individuo de sus semejantes.

Tanto la computación ubicua como la realidad ampliada son una reacción ante la ideología que se oculta detrás de la realidad virtual, en lugar de sumergir al hombre en un mundo virtual y que interaccione en el ciberespacio, lograr que el mundo real sea más cómodo, inteligente y agradable a través de la interacción con objetos tantos reales como virtuales.

En vez de sumergirse en un ciberespacio creado en la computadora, se busca ciberizar la realidad donde los objetos del mundo real adquieren atributos virtuales. Piensen en un televisor que en cuanto se levanta del asiento se apague solo y cuando regrese se encienda, que si usted se pone a conversar baje el volumen. Que nos avise cuando va a comenzar nuestro programa preferido… Se persigue dotar de inteligencia al mundo que nos rodea (objetos inteligentes), romper las barreras de las comunicaciones (globalización). Como una forma de llevar las computadoras al espacio humano, o como otros dicen: humanizar a las máquinas.

Tenemos que aceptar desde hoy, que la visión que teníamos del mundo ha ido cambiando en los últimos años de forma ascendente:
• De una ciencia, la Inteligencia Artificial, que aspiraba a lograr máquinas cada vez más inteligentes a los nuevos intentos de lograr que las máquinas inteligentes a través de su interacción con los humanos hagan que este sea cada vez más inteligente.
• De máquinas conectadas entre si a través de una red cerrada (local) a personas conectadas entre si a través de redes abiertas.
• En lugar de introducirse dentro de una computadora (realidad virtual) que las computadoras se inserten en la vida del hombre.

El hombre tiene la elección de alcanzar una vida mejor, sin formulas evasivas, con máquinas quizás no tan inteligentes, pero si cada vez más cercanas a nosotros y más acorde con nuestro mundo y sus conflictos tanto económicos, sociales (no se puede ignorar la pobreza extrema en que viven muchos países) o éticos

jueves, 31 de mayo de 2007

Fundamentos de la Inteligencia Artificial: La Cibernética

En nuestros días la Cibernética no debe verse ni como una ciencia, ni como una disciplina; sino como un movimiento de ideas, que trató de romper con la estrechez de conocimientos propios de cada disciplina. El movimiento cibernético permitió que científicos de ramas muy diferentes se agruparan en colectivos de investigación y por primera vez, matemáticos, fisiólogos y especialistas en electrónica se integraran en equipos multidisciplinarios. Su creador Norbert Wiener después de estar años trabajando en las teorías matemáticas y de agregar algunas fórmulas más al gran aparato matemático, comenzó a trabajar en cuestiones técnicas como el control de los disparos de la artillería antiaérea y la transmisión más eficiente de mensajes codificados a través de sistemas de comunicaciones. Escribió un libro sobre cibernética y el control en los animales y las máquinas que se convirtió en un éxito. Las condiciones estaban dadas para una nueva revolución dentro de la ciencia.

La cibernética se basa en el estudio de las máquinas (objetos artificiales) y su aplicación, lo que promovió una nueva revolución científica sobre la base de la interrelación de los humanos con las máquinas a un ritmo tecnológico de crecimiento jamás visto y de carácter impredecible. Este ritmo ya se hace sentir y podemos afirmar, por ejemplo, que un hombre del siglo XVI pudiese muy bien, haber vivido sin mucho sobresalto en el siglo XVII en cambio uno del siglo XIX tendría grandes problemas para adaptarse al XX y todo indica que esta aceleración seguirá aumentando, lo cual hará que una persona en su vejez tenga que vivir en un mundo totalmente diferente al de su infancia.

Con la cibernética el concepto de máquina ha ido cambiando a lo largo de los años. Luego de aquellas primeras máquinas mecánicas donde se pretendía reemplazar completa o parcialmente el trabajo físico del hombre y de los animales, han seguido otras, cuyo fin, es la mecanización del trabajo intelectual. Hoy las máquinas realizan funciones que antes se consideraban propias del intelecto humano. Pero quizás el aporte más importante de la cibernética fue fundamentarse sobre las analogías, de ahí su característica de ciencia exógena, la cual está dada por la interrelación con otras ramas del conocimiento y su asimilación interna, pero sobre todo por la propuesta de teorías generales que expliquen fenómenos propios de las otras ciencias. Por ejemplo, la cibernética ha preferido basarse en la teoría de los modelos, que hace más hincapié en la representación funcional de los organismos que en su estructura en el sentido vertical o jerárquico. Esto, unido a la búsqueda de analogías entre los fenómenos y no a la reducción de uno en otro la llevó a convertirse en una ideología científica para la comprensión del mundo.

Otro de los aportes de la cibernética, es la utilización del aparato matemático, que hasta ese momento era de uso casi exclusivo de la física y como la cibernética a su vez era una disciplina común a varios sectores de investigación, trajo como consecuencia que ramas como la psicología, la sociología y la biología, pudieran de alguna manera formalizar sus teorías, y aún fue más lejos, ya que les proporcionó métodos de experimentación mediante la creación de máquinas que permitieran estudiar conductas, reacciones, reflejos, aprendizaje, etc.

Cuando los cibernéticos intentaban modelar la estructura de un objeto, más que la estructura lo que tenían en cuenta era la reproducción de su funcionamiento sobre otra estructura y se aspiraba a que ese modelo u objeto artificial exhibiera una conducta similar a la del original. Digo similar porque en realidad la conducta mostrada por los modelos siempre ha estado supeditada a la interpretación del investigador. Estos intentos de modelación llevaron a los científicos a la construcción de máquinas con conducta como las tortugas de Grey Walter y los zorros de Albert Ducrocq, que no eran más que pequeñas máquinas dotadas de movimiento y que se orientaban por la luz, otras se orientaban por el sonido o poseían alguna forma de radar. Pero lo más interesante era la interpretación que se le daba al comportamiento de estos ciberanimalitos. Para Grey Walter las tortugas podían pasar de un comportamiento flemático a otro irascible. Para Ducrocq, sus zorros eran capaces de manifestar sentimientos de afecto entre si. Sé que esto a los racionalistas les puede parecer infantil, pero ¿no es interesante por no decir válido que el ser humano siga recurriendo a su fantasía para interpretar los fenómenos y que mantenga viva, en estos tiempos de determinismo científico, su capacidad de "sorprenderse"?.

Hoy nadie habla de las experiencias emocionales con tortugas, zorros, ratones... Las ideas eran demasiado simples: cualquier aparato podía mostrar alguna forma de conducta humana. Ese era el gran sueño de los cibernéticos: reproducir la vida en todas sus manifestaciones y no sólo la inteligencia, como pretende en estos tiempos la Inteligencia Artificial. Y es que la Cibernética no basó su investigación sobre la base de que la máquina sustituiría al hombre, ya que siempre vio a ambos como sistemas con analogías funcionales, que a la vez que tenían grandes diferencias por ser organismos con estructura y organización propias poseían a su vez, muchas similitudes; De a.C. que los cibernéticos le dieran, siempre, mayor importancia a la influencia de la estructura sobre la mente, pero ambos vistos como un sistema capaz de funcionar como un todo.

Vivimos en un mundo de crisis tanto social como espiritual, y el hombre desesperado vuelve sus ojos a la ciencia y espera de ella la solución a los grandes problemas que lo agobian y ve en la ideología cibernética un nuevo enfoque. Veamos algunos de los problemas que se están retomando: El sistema educativo, la salud (las prótesis), la muerte, la creatividad, la producción de bienes de consumo, el desarrollo, la comprensión de la mente humana, la felicidad, la evolución (convergencia hombres y máquinas), nuevas formas de organización social (posthumanidad), mejoramiento humano (conexión hombre máquinas)

Es por eso que la Cibernética al pasar de los años se ha ido transformando en una de las ideologías de la ciencias más influyentes, y al igual que la Física y la Biología, engendra grandes promesas y para muchos se convierte en la nueva salvadora del mundo, gracias a que ha aportado una de las metáforas más ricas y poderosas: la llamada metáfora computacional o cibernética, que ofrece una nueva óptica de la sociedad y abre las puertas hacia una nueva era post-industrial. Hoy en día son muchos los que piensan que la máquina sustituirá al hombre, o los que creen que la mente humana se puede simular a través de una computadora, o los que sueñan con crear una vida artificial.

viernes, 25 de mayo de 2007

Paradigmas de interacción

Estamos en el cambio hacia la tercera generación del ordenador personal o de tecnologías personales, donde la tecnología desaparecerá en la herramienta, aportando funcionalidades valiosas, pero quitándose de en medio, la generación donde el ordenador desaparece en herramientas específicas a tareas.
Alan Kay

Los paradigmas de interacción son los modelos de los que se derivan todos los sistemas de interacción. Actualmente existen 4 paradigmas de interacción hombre-computadora.
1. La computadora personal o de sobremesa
2. La realidad virtual
3. La computación ubicua
4. La realidad aumentada

1. La computadora personal.

Para Donald Norma, la computadora personal es probablemente la tecnología más frustrante jamás fabricada, a lo que agrega: es demasiado visible, demasiado exigente y controla nuestro destino. Su complejidad y sus frustraciones son debidas a la concentración de demasiadas funciones en una caja que está en nuestra sobremesa

2. La realidad virtual.

El termino de realidad virtual (RV) se suele aplicar a
• Interfaces en 3D con las que se puede interactuar y se actualizan en tiempo real
• Sistemas cuyo nivel de autonomía, interacción y sensación de presencia es casi igual al del mundo real

Donde las condiciones necesarias para hablar de un sistema de RV:
• Sensación de presencia física directa mediante indicaciones sensoriales (visuales, auditivas, hápticas) creadas por la tecnología
• Indicaciones sensoriales en tres dimensiones
• Interacción natural. Permiten manipular los objetos virtuales con los mismos gestos que los reales: coger, girar, etc.

3. La Computación Ubicua.

Trata de extender la capacidad computacional al entorno del usuario.

Permite que:
• La capacidad de información esté presente en todas partes en forma de pequeños dispositivos muy diversos que permiten interacciones de poca dificultad conectados en red a servidores de información
• El diseño y localización de los dispositivos son específicos de la tarea objeto de interacción
• La computadora queda relegada a un segundo plano, intentando que resulte “transparente” al usuario (ordenador invisible)
• La interacción se diluye en el entorno
- La capacidad informática está por todas partes
- Dispositivos grandes y pequeños
- Una infraestructura global de información
- Conectados entre ellos
- Actúan como detectores y controles
• Forma parte y mejora el mundo real

La computación ubicua tiene su origen en las ideas de Mark Weiser, Xerox PARC, 1991

Podemos decir que son entornos en los que los usuarios no interaccionan directamente con ordenadores, sino con dispositivos de diverso tipo y tamaño. Se considera los opuesto a la realidad virtual.

Realidad Virtual: el mundo en la computadora
Realidad ampliada: El mundo en las computadoras en el mundo

En la realidad ampliada existe una gran variedad de dispositivos:
• Insignias activas
• Marcas
• Tabletas
• Pizarras, etc.

Pero hasta el momento, los avances en hardware que se han producido no son suficientes para el cambio de paradigma.

4. La realidad aumentada

Son ambientes aumentados de la realidad o ambientes simplemente aumentados, en los que se trata de reducir las interacciones con el ordenador utilizando la información del entorno como una entrada implícita

La realidad aumentada integra el mundo real y el computacional:
• El mundo real aparece aumentado por información sintética
• Se consigue una disminución importante del coste interactivo

Y tiene entre sus objetivos
• Mejorar la interacción con el mundo real
• Integrar el uso del ordenador en actividades cotidianas
• Posibilitar el acceso a usuarios diversos y no especializados. Los objetos cotidianos se convierten en objetos interactivos
• Trasladar el foco de atención del ordenador al mundo real. La información se traslada al mundo real, en lugar de introducir el mundo real en el ordenador (realidad virtual)
• Cconstruir entornos interactivos que aumenten directamente los sentidos de un usuario con material generado por ordenador

Estas son las tecnologías en las que se esta trabajando

• Visualizadores personales: Dispositivos que permiten ver a través de un casco para aumentar los sentidos visuales y auditivos de un usuario
• Ordenadores corporales
• Entornos aumentados
• Interfaces de usuario tangibles
• Integración el mundo real y el computacional: (Wellner,1993)
• Método más común: Solapamiento entre la información digital y las imágenes del mundo real a través del uso de visualizadores en casco o proyecciones de vídeo
• Combinación del medio ambiente con objetos asibles
• Reconocimiento automático de la situación del usuario a través de diversas técnicas de reconocimiento: tiempo, posición, objetos, códigos de barra…


Líneas fundamentales de investigación

1. Aplicar la realidad virtual al mundo real
• Se aumenta o mejora la visión que el usuario tiene del mundo real con información adicional sintetizada
• La información se superpone mediante el uso de gafas especializadas

2. Usar dispositivos que aumentan la realidad e interaccionan directamente con ella
• El usuario interactúa con el mundo real, que está aumentado con información sintetizada
• No se trata de superponer la información real con la virtual, sino de hacer participar a objetos cotidianos como un lápiz o una mesa que interactúan con el sistema de forma automática

Entre las áreas aplicación se encuentran.

• Medicina
• Mantenimiento mecánico y reparación
• Diseño interior
• Cultura, ocio


Tiene como líneas principales de trabajo.

• Superficies interactivas: Transformación de la superficie dentro de un espacio arquitectónico (paredes, mesas, puertas, ventanas) en una superficie activa entre el mundo físico y el mundo real
• Acoplamiento de bits y átomos: Acoplamiento sin interrupciones entre los objetos de cada día que se pueden coger (tarjetas, libros, etc.) con la información digital que está relacionada con ellos
• Medio ambiente: Uso del medio ambiente como sonido, luz, corrientes de aire y movimiento de agua como interfaces de fondo

miércoles, 9 de mayo de 2007

Interfaces de interacción

Definición de interfaz:
Las interfaces básicas de usuario son aquellas donde se incluyen menús, ventanas, teclado, ratón, etc. En general, son todos aquellos canales por los cuales se permite la comunicación entre el hombre y la computadora.

Se considera a una interfaz multimodal cuando se usan múltiples canales de comunicación simultáneamente.

Canales de comunicación
- Teclado
- Mouse
- Display
- Micrófono
- Bocinas

Característica de la multimodalidad
- Eficiencia: Apuntar es más fácil que describir
- Redundancia: Dos fuentes de información son mejores que una
- Naturalidad: Imitar la interacción entre humanos
- Exactitud: Combinación de fuentes que dan más certidumbre

Otras modalidades alternativas

Otras modalidades alternativas

Los conversores texto a voz (text to speach – TTS), que surgieron hacia finales de los años 70. Eran máquinas capaces de convertir texto tecleado en voz (conversor texto-voz), que junto con los programas de reconocimiento óptico de caracteres (Optical Carácter Recognition en inglés) produjeron los primeros sistemas comerciales para leer libros en voz alta.

Ejemplo de programa que lee los textos por ti
TextAlaoud: http://www.nextup.com/

Interfaces adaptativas

Son aquellas que pueden cambiar de acuerdo al contexto y que son capaces de aprender de acuerdo al perfil de los usuarios.

Se esta produciendo un cambio en los dispositivos para interactuar.
• Varios tamaños de display.
• Alternativas como escritura a mano.
• Identificación del contexto.
• Contextos visibles
• Adaptable a dimensiones de pantalla.

Otras interfaces

Interfaces inteligentes: Esta relacionada con la interacción asistida y con el uso de los agentes inteligentes y con la interpretación semántica de los problemas.

Interfaces emotivas: tiene como objetivo desarrollar tareas que tienen que ver con el estado emotivo de la persona. Permite medir algunos tipos de emoción como: alegria, tristeza, sorpresa, cansancio, etc.

Interfaces táctiles: permite el acoplamiento entre el mundo sensible al tacto con nel mundo generado por la computadora. Tiene aplicación en personas con limitaciones físicas.

Se espera que las computadoras portátiles se integrarán a la vestimenta de las personas. Se prevén diferentes sistemas de ayuda personal y profesional (agendas, sistemas para navegación en carretera o en ciudad, ayuda para la realización de tareas, acceso a telefonía e Internet, etc.) en lo que ya se conoce como wearable computation. Independientemente de la función de este tipo de dispositivos, está claro que los ordenadores que «se llevan puestos», entre otras características propias, necesitan un sistema especial de interacción con el usuario.

jueves, 1 de marzo de 2007

Programación lógica

Introducción:
En los comienzos de los años 70 el francés Alain Colmenuer desarrolló el lenguaje PROLOG que también permite el desarrollo de aplicaciones en forma declarativa.

En general el PROLOG es un demostrador automático 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 obte­nidas son estrictamente lógicas (verdaderas o falsas), aunque puede parecer una limitación, esto no es totalmente justo, ya que PROLOG permite programar mecanismos inferenciales con lógica probabilisticas, dado que se trata de búsquedas en árboles con acumulación de evidencias.

El PROLOG como lenguaje surgido del cálculo de predicados, tomó las siguientes ideas de la lógica para su ejecución.
1) Un conjunto de axiomas o hechos.
2) Reglas de inferencias las cuales se resuelven por resolución y unificación.
3) El objetivo a demostrar, que serán las condiciones a unificar con las reglas.
También tomó del LISP el tratamiento de las listas para la repre­sentación de estructuras complejas.Aunque el PROLOG tuvo su ori­gen en la lógica matemática no fue una transposición exacta, y esta ligada a las discusiones que sostienen desde hace años los principales investigadores de la Inteligencia Artificial, los cuales están divididos en dos grandes grupos, de una parte Minsky quien propone estudiar los mecanismos del pensamiento humano y luego simularlo en la computadora.
Lo más importante para Minsky son los conceptos, o sea la inter­pretación que se le puede dar a cada palabra en dependencia de un contexto dado.

El otro grupo encabezado por Mac Carthy (autor del LISP), afirma que la lógica matemática es el elemento característico para la representación del razonamiento y su implantación en la computadora, este grupo centra su atención en la formalización y en la estructura de los conocimientos más que en el sentido de los mismos.

La lógica desde la antigüedad se concibió como el método de descubrir las leyes del pensamiento, pero estas leyes siempre han estado restringidas al pensamiento científico y muy especialmente el matemático, quedando fuera el sentido común. Esta deficiencia es admitida por los defensores de la lógica, pero ellos consideran que la lógica es la única senda posible para desarrollar programas capaces de mostrar inteligencia.
2.1.1. Programación declarativa

En la programación declarativa lo principal no son las instrucciones que se dan en forma secuencial (programación prescriptiva), en su lugar, el programador se dedica a describir el problema a través de reglas y hechos que funcionan de forma independiente y es a través de un mecanismo de inferencia que se ejecutan las reglas.

En la programación declarativa las reglas (base de conocimientos) esta separada del programa de control (maquina de inferencia).

Ejemplo de programación declarativa:
Si y/o y/o .... entonces y/o ....

Donde un hecho seria:
Juan es un estudiante
El perro es blanco
A María le gusta el cine.

El conocimiento operativo tiene carácter procedimental.
Si Premisas entonces Conclusión
(También hay quienes utilizan: Si Condiciones entonces Acciones)

Si P entonces C
Donde:P y C instrucciones estaríamos en presencia de una representación procedimental.
P y C hechos o aserciones estaríamos en presencia de una representación declarativa.

Ejemplo de representación procedimental
Si A1 = B1 y A2 > B2 entonces X := A1 + A2

Donde A1 = B1 y A2 > B2 son comparaciones que tomaran el valor de ¨verdadero¨ o ¨falso¨.


O sea que tendríamos:

Si P1 y P2 entonces C

donde P1 y P2 serian variables lógicas (darían verdadero o falso)

Ejemplo de representación declarativa
Si y entonces

Esto en cualquier lenguaje se haría de la siguiente forma:
X := “Juan es un estudiante”
Y := “Juan tiene 7 años”

if X = “Juan es un estudiante” and Y = “Juan tiene 7 años”
then Z := “Juan esta en la primaria”

Veamos ahora la forma de formalizar los hechos o aserciones
Ejemplo: Juan tiene 10 años de edad
1)
<10>
2) relacion (concepto, concepto,....) La que utiliza Prolog
edad(Juan, 10)
También se utiliza
3)


Nos concentraremos en las dos primera representaciones.

Ejemplo1: El león es un mamífero

es-un(leon, mamifero)

Ejemplo 2: A María le gusta el cine.
1)
2) gusta(maria, cine)

Veamos ahora algunos ejemplos donde se combinan los hechos en formas de reglas o cláusulas:

si y
entonces

Y ahora formalizando los hechos tendremos:


1) si y
entonces

O también (similar a Prolog)
2) vive(tiburon, en-agua) si vive(pez, en-agua) y es-un(pez, tiburon)

Observen que en prolog la conclusión se pone delante de las premisas

Representación en forma de reglas:
si Premisas entonces Conclusión
Lo que se interpretaría como:
si entonces
Donde la conclusión puede estar compuesta por varios hechos o aserciones.

Representación en prolog:
Conclusión si Premisas
Y se interpretaría como:
si
Donde la conclusión estará dada por un solo hecho o aserción.

Ejercicio 1:
1. A María le gusta el tenis.
2. A Tomas le gusta el béisbol.
3. A José le gustan los deportes que le gustan a Tomas.

1.
2. S
3. Si entonces

Similar a prolog:
1. gusta(maria, tenis)
2. gusta(tomas, beisbol)
3. gusta(Jose, X) Si gusta(tomas, X)

Ejercicio 2:

Sofía desea un hombre que no fume.

si y

Similar a prolog:
desea(sofia, X) si hombre(X) y no fuma(X)


Calculo proposicional y de predicados.

Introducción a la lógica de predicados.

Esquemas lógicos:

Habíamos definido que Prolog utiliza la representación:
Relación (concepto1, concepto2,....)

En lógica el nombre de la relación se denomina “predicados” y los conceptos “argumentos” y dicha estructura se denomina ‘proposición” las cuales toman el valor de verdadero o falso. Y se resuelven a través del calculo de predicados.

Predicado (Argumento1, Argumento2, .....)

Un argumento puede ser representado con una constante o con una variable.

Ejemplos:
Propietario(pedro, radio)
Estudia (maria, X-materia)
Posee (luis, X-cualidad)
Supervisa(pedro, juan)

Calculo de predicados: Dado una formula cualquiera determinar si es verdadera o falsa.



Modus ponens: A, A Þ B

B

Si A se cumple y A Þ B se cumple entonces también se cumple B

Si tenemos A1 Ù A2 Ù A3 Þ B donde si todas las A se cumplen entonces se cumple B. Pero, si alguna de las A da falso, en ese caso no se puede saber el valor de B, dado que B puede ser verdadera o falsa
Ya que la formula: (falso) Þ B es verdadera tanto para si B es verdadera o falsa.

Ejemplo:

Todos los hombres son mortales
Socrates es hombre

Socrates es mortal

Como ya sabemos esto se representaría de forma declarativa:

Si hombre. X entonces mortal. X
Hombre. Socrates

Mortal. Socrates

En calculo de predicados seria:

Hombre (X) Þ Mortal (X)
Hombre (Socrates)

Mortal (Socrates)

Lo cual es posible ya que si Hombre(X) es verdadero también Hombre(Socrates) es verdadero por interpretación de formulas.


Interpretación de formulas del calculo de predicados.

Veamos algunas definiciones:
U: Universo o dominio para la interpretación.
Predicado: “Relación entre elementos de U y las propiedades de los elementos.

Definición: Una formula A es verdadera en U. Si A evaluada para cualquier valor de X tomado de U da siempre verdadero.

O sea:

A es verdadero en U si "(X), X Î U y A(X) verdadero


Donde X es una variable libre (no instanciada)

Ejemplo de Universo:
U = {Socrates, Platon, Democrito}

Cuantificadores universales

": Para todo o para cada.
"(X):Todas las sustituciones de la variable X por elementos de algún dominio de aplicación, deben tomar el valor verdadero.

$: Existe.
$(X): Solamente alguna de las sustituciones necesita tomar dicho valor.

En Prolog los cuantificadores se dan de forma implícita. Hay que eliminar los cuantificadores y mantener la dependencia.

Si tenemos la siguiente expresión
" (X) $(Y) tal que X £ Y
Como Y depende de X , al eliminar los cuantificadores quedaría:
Y = f(X).

Ejemplo 1:
Sea el predicado Persona(X)
Sea U = { juan, maria, jose, ana}
El predicado persona seria cierto en U si se cumple:
"(X) tal que X Î {juan, maria, jose, ana}
O sea persona(X) se cumple para:
Persona(maria) ® verdadero
Persona (luis) ® falso

Ejemplo 2
Todas las personas tienen una madre.
Tendriamos la siguiente expresión:
"(X) $(Y) persona(X) Þ Madre(Y, X)

Veamos algunas propiedades
Ø(Ø A) = A
A Þ B = ØA Ú B
Ø(A Ù B) = ØA Ú ØB
Ø(A Ú B) = ØA Ù ØB
A Ù (B Ú C) = A Ù B Ú A Ù C
A Ú (B Ù C) = A Ú B Ù A Ú C


Conjuntos y relaciones

Pocos lenguajes pueden ser interpretados desde tres ángulos diferentes, como declarativos, como lógicos y como relacionales. Tal vez esta sea una de las mayores dificultades a la hora de comprender la esencia de Prolog, pero a su vez, en esa riqueza de interpretación radica, tanto su complejidad como su encanto.

Hemos estado afirmando que Prolog los hechos se representan como:
Relación(concepto1, concepto2,.......)

Ejemplo:
1. gusta(maria, juan)
2. gusta(maria, Y)
3. gusta(X, Juan)
4. gusta(X, Y)

Lo que se interpreta como:
1. A María le gusta Juan.
2. A María le gusta alguien
3. A alguien le gusta Juan
4. A alguien le gusta alguien

Repasemos algunos conceptos sobre RELACION

Producto cartesiano
A = {a,b,c} y B = {2,3}
Sea el par (x,y) con x Î A y y Î B
Se obtiene el conjunto
AxB = { (a,2), (a,3), (b,2), (b,3), (c,2), (c,3)}
Y se denota como
AxB = { (x,y) / x Î A y y Î B}

Relación entre conjuntos
Sea C = { (c,2), (c.3)}
Se tiene que C Ì AxB
Una relación entre dos conjuntos A y B es cualquier subconjunto del producto cartesiano AxB.
Por tanto C es una relación del conjunto ab
O lo que es lo mismo.
Si R Ì ab Þ R es una relación entre A y B

Aquí R fue seleccionada arbitrariamente. En la practica se establecen las condicione entre los componentes de los pares con el objeto de obtener una relación determinada, del tipo.
R = { (x,y) Î AxB / }

Ejemplo:
Sean los conjuntos A = { 1, 3 } y B = { 2, 4 }
Sea la relación R = { (x,y) Î AxB / x < y }
Tendremos R = { (1,2), (1,4), (3,4) }
Entrando en materia

Sean los conjuntos H = { juan, jose } y M = {maria, ana }
Sea la relación G (gusta) G = { (x,y) Î HxM / si x Î H y y Î M}
Tendremos G = { (juan, maria), (juan, ana), (jose, maria), (jose, ana) }

En Prolog seria:
Gusta (X,Y) si hombre(X) y mujer(Y)
Hombre(juan)
Hombre(jose)
Mujer(maria)
Mujer(ana)

Y el resultado seria: gusta(juan,maria), gusta(juan,ana), gusta(jose, maria) y gusta(jose, ana).

Ejemplo 1:
A José le gustan todas las mujeres bonitas.
Seria
Gusta (José, X) si mujer(X) y bonita(X)
Bonita(ana).

Observen que ahora estamos haciendo referencia al conjunto de las mujeres bonitas el cual es subconjunto de M= {maria, ana}

Ejemplo 2:
María odia a todos los hombres
Odia(maria, X) si hombre(X)

martes, 20 de febrero de 2007

Hacia un nuevo enfoque de la Inteligencia Artificial

A partir de la crisis en la IA han surgido nuevas áreas de investigación de la IA tales como:
‑ Redes Neuronales
‑ Algoritmos Genéticos
‑ Inteligencia Artificial Distribuída

Todas tienen en común un nuevo enfoque: la inteligencia es producto de la asociación, combinación o conexión de entidades independientes más simples (agentes, genes o neuronas), las cuales pueden tener alguna inteligencia o ninguna y producto de su interacción, el sistema presentaría un comportamiento inteligente. Lo cual nos lleva a un nuevo paradigma basado en la copia de los sistemas emergentes y evolutivos de la naturaleza, que de cierta manera es un retorno a la Cibernética, primera ciencia de carácter técnico inspirada en la naturaleza.

Las investigaciones en las RNA han estado inmersas en la creación de autómatas que aprendan a descubrir relaciones ocultas en los datos a la vez que puedan codificar y almacenar información en forma similar a como lo realiza el cerebro.

La neurocomputación utiliza como base la metáfora cerebral, pero no persigue como objetivo la construcción de máquinas absolutamente plausibles biológicamente, sino el desarrollo de máquinas útiles.

La capacidad intelectual depende de la acción colectiva de las neuronas, que realizan procesos en serie y en paralelo utilizando la retroalimentación y una organización molecular y laminar con alta capacidad de auto-organización y cooperatividad basado en una estructura jerárquica que permite el procesamiento local y centralizado en fases.

Vida artificial es el nombre dado a una nueva disciplina, nacida en los años 80, que estudia la vida natural mediante la recreación de fenómenos biológicos en la computadora y otros medios artificiales, con el fin no solamente de la comprensión teórica de los fenómenos bajo estudio, sino también de descubrir y realizar aplicaciones prácticas y útiles de los principios biológicos en la tecnología de la computación y en la ingeniería, como por ejemplo, en robots móviles, naves espaciales, medicina, nanotecnología, fabricación industrial y ensamblaje así como también en otros proyectos de ingeniería.

En la Naturaleza, la evolución, en particular la de los seres vivos, presenta algunas características que motivaron a John Holland a comenzar una línea de investigación en un área que eventualmente se transformó en lo que hoy se denomina Algoritmos Genéticos (AG). La habilidad de una población de cromosomas para explorar el espacio de búsqueda "en paralelo" y combinar lo mejor que ha sido encontrado en él por medio del mecanismo de sobrecruzamiento (crossover), es algo intrínseco a la evolución natural y trata de ser explotada por los AGs.

Desde el punto de vista biológico, el problema se centra en la imitación del mecanismo evolutivo de los seres vivos. De una población, tienen más posibilidades de sobrevivir y de tener descendencia aquellos organismos mejor adaptados al medio. De combinarse dos que tengan características deseables para aspectos distintos pueden surgir nuevos que hereden ambas peculiaridades.

La premisa de los AGs, trás la publicación del libro de Holland "Adaptation in Natural and Artificial Systems" y de los numerosos investigadores que los utilizan como metaheurística para optimización, es que se pueden encontrar soluciones aproximadas a problemas de gran complejidad computacional mediante un proceso de "evolución simulada", en particular como un algoritmo matemático implementado en un ordenador.

En la Inteligencia Artificial Distribuida (IAD) se estudia la solución cooperativa de problemas por un grupo de agentes distribuídos. Tal cooperación se basa en que ninguno posee la información (experticidad, recursos, etc) para resolver completamente el problema y donde un agente tiene como característica la de ser una entidad mas o menos autónoma, con conocimientos propios y de su entorno así como con la posibilidad de interactuar con dicho entorno y otros agentes.

A diferencia de los sistemas expertos, llamados por muchos "sistemas autistas" estas nuevas investigaciones se ocupan de que los mismos sean capaces de interactuar con el entorno o lo que es lo mismo que sean abiertos y flexibles.

Por otra parte, los agentes inteligentes se perfilan como una de las aplicaciones de la IA mas prometedoras debido a su estrecha relación con Internet (la tercera revolución de la informática). Sin crear falsas expectativas, debemos recordar los sistemas expertos y los agentes inteligentes dadas las ventajas que representan para el acceso a las redes. Ellos están llamados a cambiar nuestra forma de trabajo al permitir a los usuarios moverse en ambientes más cómodos y amistosos.


CONCLUSIONES

Hasta hoy, es posible desarrollar sistemas que se comportan ‘eficazmente’ en una materia específica, pero no que 'emulan' a la inteligencia humana. La lógica es sólo una arista de la misma: el sentido común, razonamiento no monótono, reconocimiento y otros procesos ‘inteligentes’ aún no están totalmente resueltos.

Los programas de ajedrez son una demostración palpable de lo que podría llamarse una inteligencia basada en la fuerza bruta, dado que su método consiste en la velocidad de cálculo, lo cual le permite buscar en grandes espacios y procesar una cantidad enorme de información, velocidad de procesamiento que supera ampliamente la del cerebro humano. Muchos creen que la rapidez creciente en el cálculo de las computadoras, que no parece tener limites, debe conducir al surgimiento de las llamadas máquinas inteligentes, afirmación sustentada en que las computadoras al poder valorar más variantes de un problema, ya sea el juego de ajedrez, un cálculo de ingeniería, un diseño industrial o un diagnóstico mecánico, será capaz de alcanzar soluciones más rápidas y eficientes, relegando la de los humanos a un segundo plano. Este argumento se fundamenta en el auge acelerado que se evidencia en el hardware de las computadoras, mientras subestima el desarrollo del software e ignora las posibilidades del cerebro.

Actualmente, la ciencia deja de encerrarse en si misma y se fija en lo que le rodea, comprende que la mejor manera de entender cómo funciona algo en un ser humano es entenderlo primero en los animales más simples. Es así que la ciencia descubre las propiedades emergentes de la inteligencia, como resultado de la interacción compleja de sencillos elementos y emula con los procesos genéticos evolutivos en la búsqueda de mejores soluciones a problemas realmente complejos.


La Inteligencia Artificial 'convencional' con sus intentos de modelar matemáticamente los procesos de razonamiento, no ha podido alcanzar el sueño de sus creadores, mucho menos los seguidores de la denominada IA 'fuerte', quienes han pretendido convencernos de que seremos sustituidos por máquinas pensantes. Comienza una nueva era dentro de la Inteligencia Artificial. El hecho de mirar hacia la naturaleza posibilitará al hombre un avance en el camino de lograr simular verdaderamente, la inteligencia humana.