miércoles, 16 de mayo de 2012

Corrección Actividad Académica Dirigida Voluntaria sobre Grafos (Amplitud)

La actividad corregida ha sido la asignada en el Moodle.
Está bien hecha, y gracias a la tabla de búsqueda y los gráficos utilizados con colores distintivos se comprende bastante bien.

La actividad fue realizada por:
Antonio Manuel Durán Rosal
Emilio Diaz Ruiz
Manuel Miguel Espejo Pavón

Esta actividad ha sido corregida por:
Jesús Blanco Garrido
Julio Camacho Cañamón 
Jose Manuel Carretero Cuenca

........

lunes, 14 de mayo de 2012

viernes, 4 de mayo de 2012

Lectura bibliográfica: Aprendizaje Automático


Esta última lectura bibliográfica de la asignatura Sistemas Inteligentes enmarcada en el tema de Aprendizaje Automático versará sobre la Agenda Personalizada o Aprendiz del Calendario (Calendar Apprentice, CAP). 

Podemos situarnos en el contexto de un profesor de universidad implicado en diversos proyectos de investigación, asistencia frecuente a congresos nacionales e internacionales, comités y tribunales de proyectos fin de carrera, atender una visita inesperada de un antiguo alumno, atender el cumpleaños de su hijo, encargarse de la inspección técnica del coche, enviar un correo electrónico a sus alumnos para recordar un examen parcial, etc. 

Para organizar el tiempo y los diferentes eventos de este profesor se puede emplear un sistema aprendiz que puede agilizar la gestión de eventos, sugiriendo lugares y fechas de celebración de los mismos, valorando adecuadamente su urgencia relativa, el tipo de asistentes (alumnos de doctorado, profesores, personas ajenas a la universidad, etc), también puede gestionar la disponibilidad de una determinada sala de reuniones, el grado de ocupación asociado al período del año que se encuentra situado el evento, entre otras funciones. 
Dicho sistema también sería capaz de reorganizar las reuniones previstas en función de una situación inesperada, por ejemplo una situación familiar que requiera la asistencia urgente del interesado. A la vez, otra funcionalidad sería la de recordar automáticamente, a través de sms o correo electrónico, a los asistentes a una reunión próxima el lugar así como la fecha de celebración.
Este tipo de sistema se han construido incluendo técnicas de aprendizaje como la inducción de árboles de decisión que le permiten al sistema aprender a adaptarse a los gustos de su usuario, de tal manera que termina adquiriendo el conocimiento que subyace en las decisiones tomadas previamente por el individuo.

Para concluir cito un fragmento de los autores Mitchell et al., 1985:
Sistemas aprendices: "Consejeros interactivos basados en el conocimiento, que pueden extraer nuevo conocimiento a través de la observación directa el análisis de los pasos en la búsqueda de la solución proporcionados por el usuario a lo largo del funcionamiento regular del sistema."

viernes, 27 de abril de 2012

Lectura bibliográfica: Marcos

A continuación os dejo mi lectura bibliográfica sobre el tema de Marcos en la asignatura de Sistemas Inteligentes:


Mi lectura bibliográfica sobre el tema de Marcos, tratará a cerca de los diferentes lenguajes de marcos que podemos utilizar.
La idea de usar un sistema de marcos para representar conocimiento declarativo, se ha encapsulado en una serie de lenguajes de representación del conocimiento orientado en marcos, cuyas características han ido evolucionando a medida que ha aumentado la comprensión de la clase de representaciones de las que se ha estado hablando.

Algunos ejemplos de estos lenguajes son el KRL (Bobrow y Winograd, 1977), FRL (Roberts y Goldstein, 1977), RLL (Greiner y Lenat, 1980), KL-ONE (Brachman, 1979; Brachman y Schmolze, 1985), KRYPTON (Brachman et al., 1985), NIKL (Kaezmarek et al., 1986), CYCL (Lenat y Guha, 1990), grafos conceptuales (Sowa, 1984), THEO (Mitchell et al., 1989) y FRAMEKIT (Nyberg, 1988).

Aunque no todos estos sistemas soportan todas las capacidades de las que se han estado hablando, los más modernos permiten elaborar una representación eficiente de muchas clases de conocimiento. Sus métodos de razonamiento incluyen la mayoría de los que se han descrito aquí, además de otros muchos, incluyendo la verificación de la subsumición, la clasificación automática y otros métodos para mantener consistencia.

domingo, 22 de abril de 2012

Lectura bibliográfica: Redes asociativas

A continuación os dejo mi lectura bibliográfica sobre Redes asociativas, para la asignatura de Sistemas Inteligentes:

Me ha parecido interesante mencionar que gracias a la utilización de las redes bayesianas se puede filtrar el SPAM del correo electrónico con cierta seguridad, sería seguridad probabilística.
Actualmente se pueden usar listas negras para filtrar el correo, que evitan que lleguen a la bandeja de entrada correos que cumplan ciertas condiciones, como venir de un destinatario concreto, contener archivos adjuntos, ir destinados a un grupo de direcciónes, etc. Estas condiciones y los correos que las cumplen pasan a formar parte de la lista negra.
Por otra parte se podrían crear listas blancas, que solo permiten la entrada de correos que cumplan determinadas condiciones.
En cambio, el uso de redes bayesianas se basa en la probabilidad de que un correo que contiene una palabra sea SPAM. A esto va añadiendo probabilidades de que si contiene una palabra "A" también contenga una palabra "B" y sea SPAM.
También se analizan aspectos no textuales del correo, como puede ser que se haya enviado a altas horas de la noche (suele ser típico de spammer), o el porcentaje de carácteres alfanumérico, así como el número de receptores o bien el nombre del dominio de procedencia.
Existen técnicas basadas en redes bayesianas que aplican diferentes conceptos como pueden ser las de Sanami, que extraen las características típicas de un correo SPAM y las analizan. Existen otras técnicas como las de Pantel y Lin, que explicarlas se saldría de los conceptos que se quieren abarcar en la asignatura, y extendería demasiado esta lectura bibliográfica.

Lectura bibliográfica: Sistemas Expertos

A continuación os dejo mi lectura bibliográfica sobre sistemas expertos para la asignatura de Sistemas Inteligentes:


Me ha parecido interesante buscar a cerca de las primeras aplicaciones de sistemas expertos basados en reglas que se hubiesen utilizado en campos más allá de la informática.
Encontré información sobre el sistema Mycin, que basado en un motor de inferencia y cerca de unas 500 reglas sencillas y apoyandose en técnicas empíricas basadas en factores de certeza, era capaz de diagnosticar y recetar medicaciones personalizadas a pacientes con infecciones bacterianas.
El sistema llegó a tener una tasa de acierto del 65% la cual superaba la mayoría de los médicos no especializados. Siendo la tasa de los especialistas en el campo de infecciones bacterianas de un 80%.
Tal y como expuse en la primera lectura bibliográfica, este tipo de sistemas conllevan problemas éticos complejos, tales cómo la persona sobre la que recae la responsabilidad en caso de equivocación en el diagnóstico, el médico o el programador.
Por esto y sobre todo por el costoso y dificultoso mantenimiento del programa, y el tiempo dedicado a obtener información de los expertos en el campo, para generar el motor de inferencia, el sistema llegó a caer en desuso.

Lectura bibliográfica: Lógica de predicados

A continuación os dejo mi lectura bibliográfica sobre lógica de predicados para la asignatura Sistema Inteligentes:


Con las técnicas de representación del conocimiento que nos ofrece la lógica de predicados, no se garantiza el procedimiento de resolución, para cuando se intenta demostrar aquello que no es un teorema. La pregunta es ¿si existe una contradicción, parará y la encontrará nuestro método?. Lo aquí planteado es la completitud del procedimiento de resolución. Tal y como hemos visto el algoritmo en clase, la respuesta a esa pregunta sería "no". Para garantizar la completitud se deben hacer algunos cambios, estos no suelen realizarse en los sistemas de demostración de teoremas.
Desde el punto de vista computacional, la completitud no es la única cuestión importante.
Para encontrar una demostración en el tiempo limitado del que se dispone, se utilizan dos aproximaciones distintas. La primera consiste en encontrar heurísticas que sirvan de ayuda a los programas demostradores de teoremas, esta se continua investigando actualmente.
La segunda consiste en cambiar los datos que se le proporcionan al programa, en lugar de cambiar este. Así se muestra el hecho de que una base de conocimiento que se compone simplemente de una lista de asertos lógicos, carezca de estructura.
Si conseguimos organizar la estructura de forma que el propio orden de los hechos contuviese información, entonces esta información podría servir para guiar al programa que utilice su conocimiento. Quizás este programa no tenga apariencia de demostrador de teoremas, pero si que puede resolver los problema planteados basados en conocimiento.
Me parecía interesante también abarcar cuestiones de representación del conocimiento que aun no se han podido tratar satisfactoriamente. Esto es debido al empleo de bases de conocimiento incompletas, o la dificultad que tiene representar fenómenos continuos en sistemas discretos. Por ejemplo el predicado "hoy no hace mucho frío" la temperatura es difícilmente representable de forma relativa. O bien, "cualquier joven sabe leer, a menos que se demuestre evidencia de lo contrario", ¿es posible deducir un hecho por ausencia de otro?
A este tipo de problemas se podrán estudiar soluciones más adelante.

Lectura bibliográfica: introducción a los sistemas inteligente

A continuación os dejo mi lectura bibliográfica del tema 1 de sistemas inteligentes:


Debido a que el tema de lectura bibliográfica era de libre elección, yo me he decantado por la relación de la Inteligencia Artificial con la Ética, ya que me parece un aspecto a tener en cuenta y que no se evalúa ni se trata con tanta profundidad como otros.
Para empezar es importante conocer la definición de los términos que vamos a abordar, la Inteligencia Artificial estudia cómo lograr que los ordenadores, máquinas, realicen tareas que por el momento, son realizadas mejor por las persona. Por otra parte la ética se define comouna rama de la filosofía que abarca el estudio de la moral, la virtud, el deber, la felicidad y el buen vivir. Nosotros cuando hablemos de ética nos vamos a centrar fundamentalmente en el ámbito de la moral, de lo que está bien o está mal.
Gracias a la IA podemos obtener máquinas capaces de desarrollar el trabajo de personas cualificadas específicamente para ello, esto nos plantea la duda moral de ¿está la IA quitando puestos de trabajos humanos? A lo cual podemos plantearnos si normalmente nos hacemos esa misma pregunta cuando vemos a un obrero utilizando una excavadora, en lugar de haber una plantilla de cinco hombres excavando, o por otra parte cuando nos montamos en un avión que está guiado por un sistema de IA y supervisado por un piloto experto, en lugar de ser guiado por dicha persona. Habitualmente nos solemos plantear esa duda ética, cuando están en juego la integridad física y psicológica de al menos una persona.
Es normal alarmarse cuando recibimos la noticia de que una persona ha sido intervenida en un quirófano por una máquina en lugar de por una persona, pero en cambio, nuestra impresión cambia al saber que esa máquina está controlada por dicha persona. Es ahí donde radica la cuestión ética, en el control de dicha máquina, en la decisión final.
Las personas de manera innata tendemos a la violencia o a la agresividad, en cambio las máquinas no, a menos que se les programe para ello. Con esto intento llegar a la idea que no es la IA un problema ético en sí, sino la persona o el grupo de personas, y el fin que estos quieran darle a la IA.
Una máquina de diagnóstico médico no debe sustituir a un profesional de la medicina, pero si podría ayudarle, podría ofrecerle las distintas opciones óptimas de tratamiento, en caso de que hubiese varias, y que fuese el profesional humano quien decidiese que opción tomar. Sería una irresponsabilidad por parte del profesional dejar que la máquina decida por si misma y se tomase esa opción como única y verdadera.Es importante destacar que la máquina ha sido previamente programada, luego no tiene libertad de decisión, y ello implica que no es responsable legal ni moralmente de los efectos de sus acciones, siempre debe haber una persona especialista y experta en el ámbito de trabajo de la máquina para que pueda hacerse responsable de las opciones tomadas, y más aún cuando se trata de vidas humanas.
Como conclusión final y resumen de mis ideas obtenidas tras una lectura de diferentes fuentes de información, quiero exponer que “Una máquina nunca podrá responsabilizarse de las consecuencias de sus actos debido a la falta de libertad de la misma”, “Sería una irresponsabilidad tomar como buena la opción resultado que de la máquina” y si de una cosa estamos seguros es “Las máquinas son como sus 'dueños', pero aún así siempre máquinas”.

Borrado en árboles ABOE

Está entrada está dedicada al trabajo voluntario de la asignatura Estructura de Datos a cerca del borrado en una estructura de árbol binario ordenado equilibrado.

Actividad resuelta.

Resuelto por Julio Camacho Cañamón y Miguel Ángel Miraimen Leal

jueves, 29 de marzo de 2012

Implementación de la estructura lineal Pila, mediante celdas enlazadas

A continuación se muestra el código de los tres ficheros necesarios para implementar una estructura lineal de tipo pila empleando celdas enlazadas.

Ventajas e inconvenientes de las organizaciones clásicas de ficheros


En esta entrada se enumeran las ventajas e inconvenientes de las organizaciones clásicas de ficheros. En función de las necesidades pueden utilizarse un tipo u otro de organización.
A continuación se detallan las siguientes organizaciones:
    1. Apilada
    2. Secuencial
    3. Encadenada
    4. Secuencial Indexada
    5. Indexada
    6. Hashing

Apertura Oficial

Queda oficialmente inaugurado mi blog en el cual, de momento, añadiré trabajos y actividades relacionados con mi carrera, Grado en Ingeniería Informática, en la UCO.