Ingenierı́a Técnica en

Informática de Gestión
Inteligencia Artificial
Septiembre 2008. Examen de teorı́a
Departamento de Informática
Universidad Carlos III de Madrid

Normas generales del examen
• El tiempo para realizar el examen es de 3.30 horas
• Sólo se responderán dudas durante los primeros 30 minutos
• Si se sale del aula, no se podrá volver a entrar durante el examen
• No se puede presentar el examen escrito a lápiz

Problema 1. (5 puntos)
Una empresa desea diseñar un sistema de razonamiento automático para tomar decisiones sobre la canalización
de las aguas a través de su red de distribución. En concreto, su red de distribución está constituida por una cantidad
arbitraria de depósitos (denominados genéricamente con las letras a, b, . . . ) de los que salen canales que discurren
en paralelo hasta un número igual de destinos —identificados con los números 1, 2 . . . Entre los canales, puede
haber tuberı́as que desvı́an todo el agua que llega de un canal hasta otro inmediatamente adyacente, en cualquier
sentido.
A B C

1 2 3
Figura 1: Modelo de distribución de aguas entre tres depósitos y destinos

Por ejemplo, la figura 1 muestra el caso de tres canales entre tres depósitos (a, b y c), hasta tres destinos
diferentes (1, 2 y 3), entre los que se han dispuesto hasta tres tuberı́as entre canales adyacentes. Se debe asumir
que las tuberı́as siempre están abiertas y que, por ello, conducirán todo el caudal de agua que les
llegue desde un canal hasta otro. Asimismo, sólo está abierto un único depósito al mismo tiempo. Por lo tanto,
si se abriera el depósito de a, todo el agua se conducirı́a hasta el destino marcado con el número 2, pasando primero
por la tuberı́a que va de a a b, desde donde llegarı́a a c por la segunda tuberı́a y volverı́a, nuevamente, a b por la
última tuberı́a; o si nada más que se abrieran las llaves de paso del depósito c, entonces el agua llegarı́a únicamente
hasta el destino 3; por último, el agua desde b llegarı́a hasta 1.
Se pide:

1. (1 punto) Modelizar la red de canales y tuberı́as de la figura 1 con el uso de la lógica proposicional,
detallando los literales y reglas necesarios para ello
2. (1 punto) ¿Es posible deducir automáticamente hasta qué destino llegarı́a el agua desde el depósito b con
la modelización del apartado anterior? Si es ası́, ¿cómo?, y si no es ası́, ¿por qué?
3. (0,5 puntos) ¿Es razonable el uso de la lógica proposicional para la modelización de redes de distribución
arbitrariamente grandes? Si o no, y por qué

(1. Usar directamente las reglas que son necesarias para resolver la deducción. . Razona la respuesta. leer el tema 1. 4. ¿qué función de evaluación utilizarı́as?.75 punto) ¿Se podrı́a utilizar el algoritmo Dijkstra? En caso afirmativo. 3. Razona la respuesta. ¿qué función de evaluación utilizarı́as? ¿Qué ventajas y desventajas tendrı́a frente al algoritmo en Escalada?. detallando los predicados y reglas necesarios para ello 5. la modelización del apartado 4. por ejemplo. La utilidad se normaliza para que tenga valores comprendidos entre 0 y 1.5 puntos) ¿Se podrı́a utilizar el algoritmo de Ramificación y acotación en profundidad para resolver el problema? En caso afirmativo. ver una presentación sobre el tema 1 y leer un capı́tulo de un libro sobre el tema 1. (0. .75 punto) ¿Se podrı́a utilizar el algoritmo en Escalada? En caso afirmativo. 2.5 puntos) Demostrar el uso de la deducción hacia detrás para determinar el depósito del que ha salido el agua que llega hasta el destino 3. Tı́picamente. 4. . ¿garantizarı́a completitud y optimalidad?. (0. ¿qué función de evaluación utilizarı́as?. leer una página web relacionada con el tema 1. leer la introducción al curso. Hacer un estudio de la complejidad espacial y temporal si se eligiese el algoritmo de búsqueda en Escalada para resolver el problema. empleando para ello. Por ejemplo. para que un alumno complete un curso debe realizar un conjunto de tareas de aprendizaje. En principio. 5. el sistema debe proponer las máximas actividades posibles que reporten al alumno la mayor utilidad para que tenga más posibilidades de superar el curso satisfactoriamente. ¿garantizarı́a completitud y optimalidad?. (0. (2 punto) Definir el espacio de problemas utilizando marcos y reglas. si todavı́a dispone de tiempo. En caso afirmativo. el sistema debe devolver un aviso de tiempo insuficiente para completar el curso. Cuando un alumno accede a uno de estos sistemas. En caso de que en el tiempo fijado no se pueda realizar al menos una actividad de cada tarea que componen el curso. por medio de cuestionarios se obtienen las caracterı́sticas de aprendizaje de dicho alumno y se calcula un valor numérico para cada posible actividad de aprendizaje almacenada para dicho curso que representa la utilidad que le podrı́a reportar al estudiante realizar dicha actividad. (0. hacer un ejercicio sobre el tema 1. para completar la tarea leer el tema 1 podrı́a haber cuatro actividades: leer un artı́culo sobre el tema 1.5 punto) ¿Se podrı́a utilizar el algoritmo A* o IDA*?. cada una de estas actividades de aprendizaje están caracterizadas por un tiempo medio (en minutos) con la estimación del tiempo que al alumno le podrı́a llevar completarla. Además. (1 punto) Modelizar la red de canales y tuberı́as de la figura 1 con el uso de la lógica de predicados. hacer un programa . Problema 2. Se pide: 1.5 punto) Suponiendo que para diseñar un curso se tienen t tareas y por cada tarea se definen n actividades de aprendizaje como máximo. con realizar una actividad de aprendizaje por cada tarea serı́a suficiente (y necesario) para completar el curso pero. Se pretende diseñar un módulo de Inteligencia Artificial que por medio de técnicas de búsqueda sea capaz de automatizar la selección de las actividades de aprendizaje que mayor utilidad le reporten al alumno para poder completar un curso determinado en un lı́mite de tiempo fijo. Razona la respuesta. Es para la realización de cada una de estas tareas para las que se tendrán las distintas actividades de aprendizaje caracterizadas por la utilidad y el tiempo. . Razona la respuesta. 6. (5 puntos) El objetivo de los sistemas inteligentes de enseñanza por Web es proponer a cada estudiante una lista de actividades de aprendizaje personalizadas para completar un curso. (0.

en la figura 1 hay hasta tres depósitos: dA . con reglas que indican que cuando se usa un determinado depósito (identificado con un literal de la forma dX ). Tuberı́as Las tuberı́as sirven para conducir el agua y. la misma tuberı́a generará. por lo tanto. Destinos Análogamente. 1 En particular. La modelización de la red de distribución se hace modelando. Puesto que el agua siempre circula en la misma dirección. los literales necesarios para modelizar la red son: Depósitos Los depósitos se identificarán con el literal dX donde X representa el nombre de un depósito. precisamente. Soluciones del examen de Inteligencia Artificial. s2 y s3 . A B C 1 2 3 4 1 2 3 Figura 2: Los canales se modelizan en pasos o etapas En concreto. tuberı́as y destinos. Septiembre 2008 Solución al problema 1 1. las tres tuberı́as de la figura 1 se representan en lógica proposicional con las seis reglas siguientes: pA1 →pB2 pB1 →pA2 pB2 →pC3 pC2 →pB3 pB3 →pC4 pC3 →pB4 Sin embargo. Cada tuberı́a desde un canal i hasta otro canal adyacente. y para indicar cómo el caudal se acumula en uno de los destinos o salidas: Entrada La entrada del agua se hace. El hecho de que el consecuente de cada regla incremente el valor del paso sirve. Además. Por otra parte. sus tres componentes: los depósitos. Los tres primeros sirven para identificar la posición en la que se han dispuesto tuberı́as entre canales. para indicar que el agua progresa en el siguiente canal. por lo tanto. puede asumirse que los canales están divididos en pasos o etapas como muestra la figura 2. los canales se han dividido en cuatro pasos diferentes. simplemente. puesto que antes no hay ninguna tuberı́a que desvı́e el movimiento del agua . están directamente conectados con los destinos o salidas. puesto que el agua puede transcurrir en cada tuberı́a en cualquier sentido (según venga por el primer o segundo canal). nótese que la entrada de agua desde el depósito c se puede hacer directamente hasta el segundo paso. hacen falta reglas adicionales para iniciar el movimiento del agua cuando se abre una llave en uno de los depósitos (¡y sólo uno!). en el paso k. dB y dC . esta modelización no es suficiente ni para mostrar cómo llega el agua hasta la red de distribución. Su propósito se entenderá mejor al presentar las reglas que rigen el movimiento del agua en la red de la figura 1 Por lo tanto. se transcribe como: pik → pj(k+1) . numerados ascendentemente desde los depósitos hasta los destinos. ni cómo sale de ella. En concreto. su comportamiento se modelará con el uso de reglas. En realidad. En el caso de la figura 1 habrá hasta tres: s1 . El último tiene un propósito diferente y sirve para determinar el punto de cada canal en el que no hay más tuberı́as y. por separado. el agua llega necesariamente al primer paso en el que haya una tuberı́a de ese mismo canal1 . otra regla del modo pjk → pi(k+1) En concreto. los canales no tienen por qué modelizarse realmente y basta con describir secuencialmente los elementos que contienen. además. cada destino se modelará con literales sY . j.

con el uso de la lógica de predicados en el siguiente apartado. en el paso k. . se modelizará como: [Agua(i. en vez de usar literales. que rige la entrada de agua en todo el sistema. y Tuberia(i. como se anticipaba antes. se asume que nuestro sistema computacional está debidamente poblado de tantos predicados Succ(1. por reglas que determinan el punto por el que saldrá el agua. Destino(2) y Destino(3) Tuberı́as Como ocurriera en el caso de la lógica proposicional. k) representa que hay una tuberı́a que vincula los canales i y j precisamente en el paso k. basta con una:3 2 Como ocurriera con las entradas. equivalentemente. la regla de salida pA2 → s1 . j. en la figura 1 hay hasta tres depósitos: Deposito(A). k ′ )]. Ası́. Succ(k . entonces dB es cierto. En concreto. una tuberı́a que progresa desde un canal i hasta otro canal j. A continuación. Este problema se resolverá. ahora el esfuerzo de modelización es un poco mayor porque es preciso hacer una descripción general de cualquier red de distribución. en vez de tener tantas reglas como tuberı́as. basta con usar repetidamente el modus ponens. Succ(2. es preciso disponer de un paso adicional (el cuarto en el caso de la figura 2) para distinguir un caso del otro: en el paso tres. Las reglas para la descripción de la salida del agua son análogas a las de la entrada y resultan ser2 : pA2 →s1 pB4 →s2 pC4 →s3 2. es preciso modelar la relación de sucesión entre los números naturales (que representan las fases o etapas por las que progresa el agua) con un predicado dedicado. Ahora bien. Por último. 4. En concreto. . k) ∧ Tuberia(i. en lógica de predicados es posible utilizar variables para generalizar la representación del conocimiento. No lo es en absoluto. es preciso observar que la lógica de predicados no tiene una representación aritmética implı́cita. donde Agua(i. En concreto. Sin embargo. que representa el hecho de que k ′ es el sucesor de k. para la modelización con lógica de predicados. k ′ ). con el uso de reglas. cuando el agua llega a la última tuberı́a no serı́a posible saber si es que cambiará de canal o. que todo el agua llega hasta el primer destino. lo que es lo mismo. por el contrario. Mientras que la ventaja de la lógica proposicional es que es decidible. Asimismo. se concluye necesariamente que el agua llega hasta el primer paso del canal b —que es precisamente lo que indica el consecuente de la regla usada: pB1 . que el agua transcurre ahora por el segundo paso del canal a. automáticamente (nuevamente en virtud del modus ponens). Para ello. k) ∧ Succ(k. 2). Sin embargo. Por supuesto que se puede. lo cierto es que adolece de capacidad de generalización. Deposito(B) y Deposito(C). ahora es preciso distinguir predicados (que describirán el qué) y sus relaciones o el cómo. igualmente. precisamente. Naturalmente. las tuberı́as se describirán con reglas que determinarán el flujo del agua. cada destino se modelará con predicados de la forma Destino(y). En el caso de la figura 1 habrá hasta tres: Destino(1). En realidad. Es precisamente por este motivo por el que. k) representa la observación de que el agua ha llegado hasta el paso k del canal i. el agua cambia de canal y en el cuatro se dirige hacia la salida. si se abre la llave de paso en el depósito b. Por lo tanto. . servirá para concluir de la misma manera s1 o. la regla pB1 → pA2 que modeliza la primera tuberı́a con la que se encuentra el agua en el canal b. En concreto: Depósitos Los depósitos se identificarán con el predicado Deposito(x) donde x representa el nombre de un depósito. pA2 o. Usando la regla del modus ponens sobre la regla dB → pB1 . j. aquı́ hay un pequeño detalle que debe resolverse: si nada más se numeran los puntos en los que hay tuberı́as. Destinos Análogamente. todas las afirmaciones sobre grandes colecciones de individuos resultan en la definición de muchos literales y reglas esencialmente repetitivos. deben tenerse en cuenta los mismos elementos y comportamientos identificados en el apartado 1. 3). En concreto. como haga falta . 3. sirve para deducir. nótese ahora que la salida a 1 se puede modelizar en el canal a desde el paso 2 y es que a partir de él ya no hay tuberı́as que desvı́en el curso de su caudal 3 En lo sucesivo. las reglas que rigen la entrada de agua en la figura 1 son: dA →pA1 dB →pB1 dC →pC2 Salida La salida se rige. k ′ ) → Agua(j. Por lo tanto. progresará por el mismo canal hacia su salida.

j. 2). En concreto. también. 3) (porque no hay tuberı́a en (A. es preciso también crear reglas especiales para describir la entrada y salida del agua en la red de distribución: Entrada Si el predicado Deposito(x) sirve para identificar que se abre la llave de paso del depósito especificado. 2) (porque no hay tuberı́a en (A. ahora debe hacerse una descripción generalizada. que es el de C o. k ′ )] que. k ′ ) → Agua(j. se usará un predicado P rogreso(i. k) ∧ Tuberia(i. entonces la siguiente regla describe la entrada de agua desde cualquier punto: R4 : ∀x [Deposito(x) → Agua(x. k) que indica simplemente que el agua continuará en el canal i. 3) (tercera tuberı́a) H3 : Progreso(C. C. k. k′ [Agua(i. k ′ )] Por último. Por supuesto. se utilizarán (tal y como advertı́a el enunciado) directamente las reglas que sirven para probar el objetivo solicitado. no es suficiente para representar los dos sentidos de circulación del agua. esto es. k) ∧ Succ(k. Succ(2. si el predicado Destino(y) representa. j. C.1)) H4 : Progreso(A. k. es preciso añadir una segunda regla: R2 : ∀i. k) ∧ Succ(k. son instancias en el sistema las siguientes:4 H0 : Tuberia(A. El motivo es que mientras en el primer apartado era posible especializar cada regla para cada caso (como. k′ [Agua(i. k ′ ) → Agua(i. entonces todas las salidas se describen simplemente como: R5 : ∀x [Agua(x. B. el predicado Destino(C) puede usarse la regla R5 que produce precisamente este literal con la unificación σ1 = {x = C} 4 Junto con las de Succ(1. . Por ello. aquı́ es necesario describir explı́citamente también los puntos en los que no hay tuberı́as para modificar el flujo de circulación del agua. Por lo tanto. esto es. por ejemplo. para el caso de la figura 1. cuando se encuentre en el paso k. el hecho de que el agua desde c llega hasta el segundo paso inmediatamente). 1) (porque no hay tuberı́a en (C. para indicar que el agua no cambia desde el canal i hasta el canal j.3)) En la demostración que sigue. k. pero en este caso. en aquellos casos en los que agua continua transcurriendo por el mismo canal. R1 : ∀i. en este caso: R3 : ∀i. k′ [Agua(j. Antes de iniciar el proceso de deducción automática hacia detrás. 4) → Destino(x)] donde el número 4 sirve simplemente para identificar el último paso de la figura 1 5. y no se intentará nunca la unificación con reglas que no conducen a la solución: a) Para probar que el destino que recibe el agua es el tercero. k ′ )] Canales A diferencia del caso de la lógica proposicional. k) ∧ Succ(k. es necesario determinar los contenidos iniciales de la base de hechos con todas las observaciones iniciales. j. podrı́a simplemente usarse la expresión ≃ Tuberia(i. k) ∧ Progreso(i. el hecho de que se recibe agua en y. 1) (primera tuberı́a) H1 : Tuberia(B. 2) (segunda tuberı́a) H2 : Tuberia(B. no serı́a posible resolver el siguiente apartado con el uso de la deducción hacia detrás puesto que es imperativo que todos los literales estén afirmados. k) ∧ Tuberia(i. k). j.2)) H5 : Progreso(A. como se indicó anteriormente . 1)] Salida Análogamente. k ′ ) → Agua(i. 3). Las reglas que describen el paso del agua es. . j. sin embargo. . porque de hecho habı́a que describir una regla por tuberı́a. equivalentemente.

Tuberia(B. 3) será necesariamente cierto si puede probarse simultáneamente: Agua(C. puede usarse la regla R1 con la unificación σ2 = {i = B. 1) y Succ(1. si lo es el antecedente de la regla escogida una vez que se ha practicado la unificación indicada: Agua(B. C. 4) que debe leerse como que el agua llegue hasta el 4 paso del depósito C —que es el que se corresponde con el destino 3. la conclusión (Agua(C. Será precisamente la regla R2 la que nos ayude a hacerlo. k = 1. efectivamente. Para ello. 1). de hecho. la conclusión que quiere probarse será cierta. 4). . k ′ = 2}. 3) y Succ(3. 2). hasta el tercer paso del depósito B. Por lo tanto. Más aún. Este movimiento está modelado precisamente por la regla R3 que se empleará con la unificación σ4 = {i = C. C. Mientras que los dos últimos predicados son conocidos (hecho H3 ) y relación de sucesión. gracias a la cual puede concluirse que Agua(B. ahora debe probarse Agua(C. El segundo predicado aparece en la base de hechos inicial (H1 ) y el tercero es conocido también. en nuestra base de hechos original (H2 ). si dicha regla se lee con la unificación σ5 = {x = C}. al contrario que como sucediera con la deducción hacia delante. la deducción hacia detrás proporciona una explicación pormenorizada del motivo por el que esto es cierto. El segundo predicado aparece. c) Para probar que el agua llega. e) Precisamente. k = 2. 2)) será cierta si son ciertas las premisas: Agua(C. Por lo tanto. respectivamente. b) Por lo tanto. Para probarlo. k ′ = 4}. 3). queda por probar Agua(B. desde donde fluye por la tuberı́a que le une con B y vuelve de nuevo al canal C a lo largo de una segunda tuberı́a desde la que cae hasta la salida del tercer depósito. Tuberia(B. llega hasta el segundo paso del tercer canal. j = C. 3). la aparición del agua en el primer paso se modela explı́citamente con la regla R4 que establece que el agua llegará hasta el primer paso del canal C si se abre precisamente el depósito C. Esto es. una explicación completa que puede leerse siguiendo ahora los pasos anteriores al revés: el agua sale del depósito C. En conclusión. Gracias a esta regla. 2). 2). k = 3. 2) y Succ(2. es preciso que el agua fluya por la tuberı́a que hay en el segundo paso desde C hasta B. j = C. que es precisamente la que modela el movimiento del agua en la última tuberı́a que hay entre los depósitos B y C. el primero debe probarse explı́citamente. si se abre el depósito C. d ) En la figura 2 resulta fácil observar que el agua llegará al segundo paso del depósito C cayendo precisamente en vertical. y el tercero también (ver nota a pie de página 4). Progreso(C. k ′ = 3}. las premisas o clausulas del antecedente de la regla escogida en el paso anterior: Agua(C. De este modo. serán objetivos del modelo de inferencia ahora. se empleará la unificación σ3 = {i = B. el agua llegará hasta la tercera salida. 3).

el estado inicial y las metas.Solución al problema 2 1. el conjunto de operadores. podrı́a ser la instancia de la tarea o simplemente el nombre de la tarea . tarea que contenga la lista de tareas que componen el curso. tiempo contendrá la suma del tiempo total de las actividades añadidas a la solución hasta el momento y actividades será la lista de las actividades añadidas. Para facilitar este cómputo también se podrı́a añadir en el marco Control un atributo. a. contendrá la solución del problema. Tarea es-un: Atributo Posibles valores/Valor nombre sı́mbolo/’Id tarea’ Este marco es necesario para poder comprobar que en la lista de actividades propuesta por el sistema haya al menos una de cada tarea. El atributo nombre es el identificador o nombre de la actividad. Para definir correctamente el espacio de problemas hay que definir el conjunto de estados. Estado meta: El estado meta se definirá de forma explı́cita cuando en la instancia de Control se verifique que tiempo>=tmax y que en actividades haya al menos una actividad por cada tarea del curso.actividades=acts Y ∃a ∈ Actividad. tarea referencia la tarea a la que pertenece. se podrı́an utilizar los siguientes marcos: Control es-un: Atributo Posibles valores/Valor tmax entero/TiempoMáximo tiempo entero/0 actividades Actividad/Nil Este marco sirve para controlar la búsqueda.t + ta) .tiempo. tiempo es el tiempo en segundos que tardará el estudiante en completar la actividad. Actividad es-un: Atributo Posibles valores/Valor nombre sı́mbolo/’Id actividad’ tarea sı́mbolo/’Id tarea’ utilidad real/Utilidad tiempo entero/Tiempo Con este marco se representarán las diferentes actividades de aprendizaje disponibles. una instancia del marco Actividad por cada actividad de aprendizaje y una instancia de Control con tiempo=0. utilidad tendrá un valor numérico entre 0 y 1 con la utilidad normalizada que dicha actividad le reporta al estudiante.tiempo=t. a) dar-valor(c. actividades=Nil y tmax=tiempo máximo fijado para cada problema particular.tmax=tmax. El atributo tmax tendrá el tiempo máximo del que dispone el estudiante para hacer el curso.tiempo=ta Y a∈/ acts Y t + ta <= tmax EN T ON CES add(acts. Estado inicial: en el estado inicial habrá tantas instancias del marco Tarea como tareas hubiese en el curso. Conjunto de operadores: Bastarı́a con definir el siguiente operador add-actividad (a): SI ∃c ∈ Control. c. Al final de la búsqueda. c. Para este problema vendrán definidos de la siguiente forma: Conjunto de estados: Para representar cada estado. c.

El algoritmo de búsqueda en Escalada es un algoritmo local que sólo se fija en sus sucesores inmediatos por lo que ni es completo ni es admisible debido a que pueden existir máximos (o mı́nimos) locales.5 Si se fija como tiempo máximo 150 el algoritmo no encontrarı́a solución ya que elegirı́a a11 porque tiene mayor utilidad y descartarı́a las otras actividades que podrı́an proporcionar soluciones válidas. al no computar la función h no se . De esta forma nos aseguramos que el sistema seleccionará primero una actividad por tarea. Es decir. a12 . El motivo por lo que los algoritmos de mejor primero aseguran completitud y optimalidad es porque utilizan la lista de Abierta y Cerrada para ir almacenando todos los nodos.utilidad + X X = 0. Este algoritmo con esta fn no es ni admisible ni óptimo.tiempo=120 y a21 . f (n) = g(n). elija primero una actividad por cada tarea. retrocederı́a hasta encontrar una. En este problema.utilidad=0.8.7 y la segunda tarea con una actividad: a21 . para este problema. La desventaja serı́a la memoria ya que tendrı́a que almacenar todos los nodos en la lista Abierta y para cursos con muchas actividades podrı́a agotar la memoria disponible. por tanto como función de evaluación se podrı́a usar simplemente la utilidad de la acción a añadir y cambiar el algoritmo para que intente maximizarla.5 y a13 . Sin embargo. una función de evaluación para este problema podrı́a ser: fn = a. por ejemplo 2. Sin embargo. en caso de que la actividad a añadir pertenezca a una tarea de la que todavı́a no hay seleccionada ninguna actividad en la solución. El primer algoritmo que se podrı́a pensar en usar es el de Ramificación y acotación en profundidad utilizando como coste el valor de la utilidad.tiempo=20 y a11 . si hay un curso con dos tareas. El único operador que hay es añadir una actividad a la lista de actividades del alumno. pero no optimalidad. en este problema nos asegurarı́a completitud. nunca se obtendrán soluciones mejores y no se cambiarán los punteros. Empezarı́a eligiendo un conjunto de actividades según el orden en que se definan hasta agotar el tiempo. Sin embargo. Para buscar soluciones óptimas. por tanto.utilidad=0.tarea ya está en alguna actividad de la solución X = 2. El objetivo del problema es elegir la actividad que mayor utilidad reporte al estudiante. como en cada iteración se añade un nodo más que siempre sumará algo la utilidad sin tener en cuenta el tiempo. en este problema. y cada actividad tiene un utilidad distinta. si es una solución (hay una actividad por tarea) almacenarı́a la utilidad total y empezarı́a una nueva búsqueda teniendo ese valor como umbral. sólo se podrán utilizar algoritmos que traten con costes no uniformes. si a. la ventaja con el algoritmo en Escalada es que Dijkstra sı́ garantiza completitud en este caso. debido a la condición de que para completar el curso el estudiante debe realizar una actividad de cada tarea. El problema que podrı́a tener este algoritmo es de tiempo y memoria ya que tendrı́a que explorar todas las posibilidades. hacer esa estimación es tan difı́cil como resolver el problema. Podrı́a ocurrir que exista una solución pero el algoritmo no la encuentre. Aunque se fijara el tiempo en 180 el algoritmo elegirı́a a11 pero reportarı́a mayor utilidad y menos tiempos elegir las otras dos actividades en vez de ésta.tiempo=60 y a11 . Es decir.tiempo=30 y a11 . Si no es una solución. 3. eligiendo una adecuada función de evaluación que vaya seleccionando las actividades de mayor utilidad y además. Sin embargo. en caso contrario a es la última actividad añadida a la solución El algoritmo habrı́a que configurarlo para que elija el nodo de mayor valor de fn . Además. Por ejemplo. 4. podrı́a proporcionar algunas soluciones aceptables bastante rápidamente. El algoritmo Dijkstra es una técnica de mejor primero donde la función de evaluación es igual al coste. La función de evaluación sirve para etiquetar los nodos de búsqueda de forma que el algoritmo elija el más prometedor. no garantizará optimalidad. lo que sı́ se puede usar es una función que nos permita guiar la búsqueda. Por tanto. En este problema se quiere maximizar la utilidad por lo que se podrı́a usar como función de coste pero al tener la restricción del tiempo hay que estudiar si proporcionará soluciones óptimas y si puede garantizar completitud. En caso de no encontrar una solución pueden retroceder a otro nodo de Abierta para seguir la búsqueda. Tampoco garantiza optimalidad. seguirı́a sin garantizar completitud ni optimalidad. cada vez que se añade un nodo se comprueba si hay una solución mejor (de menor/mayor coste) en cuyo caso se re-direccionan los punteros de los nodos en Abierta y Cerrada. Por tanto. pero si el no de actividades es suficientemente pequeño las soluciones proporcionadas serı́an óptimas además de garantizar completitud. se podrı́a sumar un valor mayor que la máxima utilidad.2.utilidad=0. Normalmente para ello se define una función heurı́stica que hace una estimación del coste desde el nodo a la solución. El problema exige encontrar la solución que mayor utilidad reporte al alumno. la primera con tres actividades: a11 . Aunque.utilidad=0.

si dicha función nunca sobrestima dicho coste (es admisible) y los costes son siempre positivos estos algoritmos aseguran completitud y optimalidad. 5. donde gn serı́a utilidad y hn es 2 si la actividad a añadir pertenece a una tarea que aún no se ha incluido en la solución y 0 en caso contrario. Para poder utilizar A* y IDA* habrı́a que definir una función heurı́stica que estimara el coste desde el nodo en el que se está hasta la solución y además. Lo que sı́ se podrı́a hacer es algo similar a la función de evaluación usada en el algoritmo de escalada para intentar llegar antes a la solución. debido a la restricción del tiempo no es fácil buscar una función heurı́stica y menos aún que sea admisible. El algoritmo en Escalada es un método avaricioso que sólo guarda el nodo que expande. Para estudiar la complejidad del algoritmo hay que hacer una estimación de los nodos generados hasta encontrar la solución. Si embargo. es decir. t ∗ n. en el 3 (t∗n−2) . p=1 (a − p + 1). Es decir. habrá (t ∗ n − 1) nodos. Para estudiar la complejidad temporal Pp habrá que sumar todos los nodos generados hasta encontrar la solución en la profundidad p. . el número de nodos generados en el nivel 1 será el número total de actividades. habrı́a que cambiar el algoritmo para que maximizara el coste y el concepto de admisibilidad se invertirı́a. . por tanto la complejidad espacial será t ∗ n. y a nivel p se generarán (t∗n−p+1) nodo. Para nuestro problema. se podrı́a usar: fn =gn + hn . . Suponiendo que la solución está a profundidad p. 6. podrı́a acelerar la búsqueda de la solución usando una función similar a la función de evaluación usada en el apartado anterior. Esta heurı́stica no es admisible (se podrı́an incluir más de una actividad para la misma tarea si hubiese más tiempo) y por tanto no garantiza optimalidad pero harı́a que el algoritmo convergiera más rápidamente. es decir. igual que pasaba en el apartado anterior. en el nivel 2.