You are on page 1of 9

Ingeniera Tecnica en

Informatica de Gestion
Inteligencia Artificial
Septiembre 2008. Examen de teora
Departamento de Informatica
Universidad Carlos III de Madrid

Normas generales del examen


El tiempo para realizar el examen es de 3.30 horas
Solo se responderan dudas durante los primeros 30 minutos
Si se sale del aula, no se podra volver a entrar durante el examen
No se puede presentar el examen escrito a lapiz

Problema 1. (5 puntos)
Una empresa desea disenar un sistema de razonamiento automatico para tomar decisiones sobre la canalizacion
de las aguas a traves de su red de distribucion. En concreto, su red de distribucion esta constituida por una cantidad
arbitraria de depositos (denominados genericamente con las letras a, b, . . . ) de los que salen canales que discurren
en paralelo hasta un numero igual de destinos identificados con los numeros 1, 2 . . . Entre los canales, puede
haber tuberas que desvan 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 distribucion de aguas entre tres depositos y destinos

Por ejemplo, la figura 1 muestra el caso de tres canales entre tres depositos (a, b y c), hasta tres destinos
diferentes (1, 2 y 3), entre los que se han dispuesto hasta tres tuberas entre canales adyacentes. Se debe asumir
que las tuberas siempre estan abiertas y que, por ello, conduciran todo el caudal de agua que les
llegue desde un canal hasta otro. Asimismo, solo esta abierto un unico deposito al mismo tiempo. Por lo tanto,
si se abriera el deposito de a, todo el agua se conducira hasta el destino marcado con el numero 2, pasando primero
por la tubera que va de a a b, desde donde llegara a c por la segunda tubera y volvera, nuevamente, a b por la
ultima tubera; o si nada mas que se abrieran las llaves de paso del deposito c, entonces el agua llegara unicamente
hasta el destino 3; por ultimo, el agua desde b llegara hasta 1.
Se pide:

1. (1 punto) Modelizar la red de canales y tuberas de la figura 1 con el uso de la logica proposicional,
detallando los literales y reglas necesarios para ello
2. (1 punto) Es posible deducir automaticamente hasta que destino llegara el agua desde el deposito b con
la modelizacion del apartado anterior? Si es as, como?, y si no es as, por que?
3. (0,5 puntos) Es razonable el uso de la logica proposicional para la modelizacion de redes de distribucion
arbitrariamente grandes? Si o no, y por que
4. (1 punto) Modelizar la red de canales y tuberas de la figura 1 con el uso de la logica de predicados,
detallando los predicados y reglas necesarios para ello

5. (1,5 puntos) Demostrar el uso de la deduccion hacia detras para determinar el deposito del que ha salido
el agua que llega hasta el destino 3, empleando para ello, la modelizacion del apartado 4. Usar directamente
las reglas que son necesarias para resolver la deduccion.

Problema 2. (5 puntos)
El objetivo de los sistemas inteligentes de ensenanza por Web es proponer a cada estudiante una lista de
actividades de aprendizaje personalizadas para completar un curso. Cuando un alumno accede a uno de estos
sistemas, por medio de cuestionarios se obtienen las caractersticas de aprendizaje de dicho alumno y se calcula
un valor numerico para cada posible actividad de aprendizaje almacenada para dicho curso que representa la
utilidad que le podra reportar al estudiante realizar dicha actividad. La utilidad se normaliza para que tenga
valores comprendidos entre 0 y 1. Ademas, cada una de estas actividades de aprendizaje estan caracterizadas por un
tiempo medio (en minutos) con la estimacion del tiempo que al alumno le podra llevar completarla. Tpicamente,
para que un alumno complete un curso debe realizar un conjunto de tareas de aprendizaje, por ejemplo, leer la
introduccion al curso, leer el tema 1, hacer un ejercicio sobre el tema 1, hacer un programa . . . . Es
para la realizacion de cada una de estas tareas para las que se tendran las distintas actividades de aprendizaje
caracterizadas por la utilidad y el tiempo. Por ejemplo, para completar la tarea leer el tema 1 podra haber
cuatro actividades: leer un artculo sobre el tema 1, leer una pagina web relacionada con el tema 1,
ver una presentacion sobre el tema 1 y leer un captulo de un libro sobre el tema 1.
Se pretende disenar un modulo de Inteligencia Artificial que por medio de tecnicas de busqueda sea capaz de
automatizar la seleccion de las actividades de aprendizaje que mayor utilidad le reporten al alumno para poder
completar un curso determinado en un lmite de tiempo fijo. En principio, con realizar una actividad de aprendizaje
por cada tarea sera suficiente (y necesario) para completar el curso pero, si todava dispone de tiempo, el sistema
debe proponer las maximas actividades posibles que reporten al alumno la mayor utilidad para que tenga mas
posibilidades de superar el curso satisfactoriamente. En caso de que en el tiempo fijado no se pueda realizar al
menos una actividad de cada tarea que componen el curso, el sistema debe devolver un aviso de tiempo insuficiente
para completar el curso.
Se pide:

1. (2 punto) Definir el espacio de problemas utilizando marcos y reglas.


2. (0,5 puntos) Se podra utilizar el algoritmo de Ramificacion y acotacion en profundidad para resolver el
problema? En caso afirmativo, garantizara completitud y optimalidad?. Razona la respuesta.

3. (0,75 punto) Se podra utilizar el algoritmo en Escalada? En caso afirmativo, que funcion de evaluacion
utilizaras?, garantizara completitud y optimalidad?. Razona la respuesta.

4. (0,75 punto) Se podra utilizar el algoritmo Dijkstra? En caso afirmativo, que funcion de evaluacion
utilizaras? Que ventajas y desventajas tendra frente al algoritmo en Escalada?. Razona la respuesta.

5. (0,5 punto) Se podra utilizar el algoritmo A* o IDA*?. En caso afirmativo, que funcion de evaluacion
utilizaras?. Razona la respuesta.

6. (0,5 punto) Suponiendo que para disenar un curso se tienen t tareas y por cada tarea se definen n actividades
de aprendizaje como maximo. Hacer un estudio de la complejidad espacial y temporal si se eligiese el algoritmo
de busqueda en Escalada para resolver el problema.
Soluciones del examen de Inteligencia Artificial.
Septiembre 2008

Solucion al problema 1
1. La modelizacion de la red de distribucion se hace modelando, por separado, sus tres componentes: los
depositos, tuberas y destinos. Por otra parte, los canales no tienen por que modelizarse realmente y basta
con describir secuencialmente los elementos que contienen. Puesto que el agua siempre circula en la misma
direccion, puede asumirse que los canales estan divididos en pasos o etapas como muestra la figura 2,
numerados ascendentemente desde los depositos hasta los destinos.
A B C
1
2
3
4
1 2 3
Figura 2: Los canales se modelizan en pasos o etapas

En concreto, los canales se han dividido en cuatro pasos diferentes. Los tres primeros sirven para identificar
la posicion en la que se han dispuesto tuberas entre canales. El ultimo tiene un proposito diferente y sirve
para determinar el punto de cada canal en el que no hay mas tuberas y, por lo tanto, estan directamente
conectados con los destinos o salidas. Su proposito se entendera mejor al presentar las reglas que rigen el
movimiento del agua en la red de la figura 1
Por lo tanto, los literales necesarios para modelizar la red son:

Depositos Los depositos se identificaran con el literal dX donde X representa el nombre de un deposito. En
concreto, en la figura 1 hay hasta tres depositos: dA , dB y dC .
Destinos Analogamente, cada destino se modelara con literales sY . En el caso de la figura 1 habra hasta
tres: s1 , s2 y s3 .
Tuberas Las tuberas sirven para conducir el agua y, por lo tanto, su comportamiento se modelara con el
uso de reglas. Cada tubera desde un canal i hasta otro canal adyacente, j, en el paso k, se transcribe
como: pik pj(k+1) . El hecho de que el consecuente de cada regla incremente el valor del paso sirve,
precisamente, para indicar que el agua progresa en el siguiente canal. Ademas, puesto que el agua puede
transcurrir en cada tubera en cualquier sentido (segun venga por el primer o segundo canal), la misma
tubera generara, ademas, otra regla del modo pjk pi(k+1)
En concreto, las tres tuberas de la figura 1 se representan en logica proposicional con las seis reglas
siguientes:

pA1 pB2
pB1 pA2
pB2 pC3
pC2 pB3
pB3 pC4
pC3 pB4

Sin embargo, esta modelizacion no es suficiente ni para mostrar como llega el agua hasta la red de distribucion,
ni como sale de ella. En realidad, hacen falta reglas adicionales para iniciar el movimiento del agua cuando
se abre una llave en uno de los depositos (y solo uno!), y para indicar como el caudal se acumula en uno de
los destinos o salidas:

Entrada La entrada del agua se hace, simplemente, con reglas que indican que cuando se usa un determinado
deposito (identificado con un literal de la forma dX ), el agua llega necesariamente al primer paso en el
que haya una tubera de ese mismo canal1 .
1 En particular, notese que la entrada de agua desde el deposito c se puede hacer directamente hasta el segundo paso, puesto que

antes no hay ninguna tubera que desve el movimiento del agua


As, las reglas que rigen la entrada de agua en la figura 1 son:

dA pA1
dB pB1
dC pC2

Salida La salida se rige, igualmente, por reglas que determinan el punto por el que saldra el agua. Sin
embargo, aqu hay un pequeno detalle que debe resolverse: si nada mas se numeran los puntos en los
que hay tuberas, cuando el agua llega a la ultima tubera no sera posible saber si es que cambiara de
canal o, por el contrario, progresara por el mismo canal hacia su salida. Es precisamente por este motivo
por el que, como se anticipaba antes, 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, el agua cambia de canal y en el cuatro se
dirige hacia la salida.
Las reglas para la descripcion de la salida del agua son analogas a las de la entrada y resultan ser2 :

pA2 s1
pB4 s2
pC4 s3

2. Por supuesto que se puede. Para ello, basta con usar repetidamente el modus ponens. En concreto, si se
abre la llave de paso en el deposito b, entonces dB es cierto.
Usando la regla del modus ponens sobre la regla dB pB1 , que rige la entrada de agua en todo el sistema,
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 . A continuacion, la regla pB1 pA2 que modeliza la primera
tubera con la que se encuentra el agua en el canal b, sirve para deducir, automaticamente (nuevamente
en virtud del modus ponens), pA2 o, lo que es lo mismo, que el agua transcurre ahora por el segundo
paso del canal a. Por ultimo, la regla de salida pA2 s1 , servira para concluir de la misma manera s1 o,
equivalentemente, que todo el agua llega hasta el primer destino.
3. No lo es en absoluto. Mientras que la ventaja de la logica proposicional es que es decidible, lo cierto es que
adolece de capacidad de generalizacion. En concreto, todas las afirmaciones sobre grandes colecciones de
individuos resultan en la definicion de muchos literales y reglas esencialmente repetitivos.
Este problema se resolvera, precisamente, con el uso de la logica de predicados en el siguiente apartado.
4. Naturalmente, para la modelizacion con logica de predicados, deben tenerse en cuenta los mismos elementos
y comportamientos identificados en el apartado 1. Sin embargo, en vez de usar literales, ahora es preciso
distinguir predicados (que describiran el que) y sus relaciones o el como, con el uso de reglas.
En realidad, ahora el esfuerzo de modelizacion es un poco mayor porque es preciso hacer una descripcion
general de cualquier red de distribucion. En concreto:

Depositos Los depositos se identificaran con el predicado Deposito(x) donde x representa el nombre de un
deposito. En concreto, en la figura 1 hay hasta tres depositos: Deposito(A), Deposito(B) y Deposito(C).
Destinos Analogamente, cada destino se modelara con predicados de la forma Destino(y). En el caso de la
figura 1 habra hasta tres: Destino(1), Destino(2) y Destino(3)
Tuberas Como ocurriera en el caso de la logica proposicional, las tuberas se describiran con reglas que
determinaran el flujo del agua. En concreto, una tubera que progresa desde un canal i hasta otro canal
j, en el paso k, se modelizara como: [Agua(i, k) Tuberia(i, j, k) Succ(k, k ) Agua(j, k )], donde
Agua(i, k) representa la observacion de que el agua ha llegado hasta el paso k del canal i, y Tuberia(i, j, k)
representa que hay una tubera que vincula los canales i y j precisamente en el paso k. Asimismo, es
preciso observar que la logica de predicados no tiene una representacion aritmetica implcita. Por lo
tanto, es preciso modelar la relacion de sucesion entre los numeros naturales (que representan las fases
o etapas por las que progresa el agua) con un predicado dedicado, Succ(k , k ), que representa el hecho
de que k es el sucesor de k.
Ahora bien, en logica de predicados es posible utilizar variables para generalizar la representacion del
conocimiento. Por lo tanto, en vez de tener tantas reglas como tuberas, basta con una:3
2 Como ocurriera con las entradas, notese ahora que la salida a 1 se puede modelizar en el canal a desde el paso 2 y es que a partir

de el ya no hay tuberas que desven el curso de su caudal


3 En lo sucesivo, se asume que nuestro sistema computacional esta debidamente poblado de tantos predicados Succ(1, 2), Succ(2, 3), . . .

como haga falta


R1 : i, j, k, k [Agua(i, k) Tuberia(i, j, k) Succ(k, k ) Agua(j, k )]

que, sin embargo, no es suficiente para representar los dos sentidos de circulacion del agua. Por ello, es
preciso anadir una segunda regla:

R2 : i, j, k, k [Agua(j, k) Tuberia(i, j, k) Succ(k, k ) Agua(i, k )]

Canales A diferencia del caso de la logica proposicional, aqu es necesario describir explcitamente tambien
los puntos en los que no hay tuberas para modificar el flujo de circulacion del agua, esto es, en aquellos
casos en los que agua continua transcurriendo por el mismo canal. El motivo es que mientras en el primer
apartado era posible especializar cada regla para cada caso (como, por ejemplo, el hecho de que el agua
desde c llega hasta el segundo paso inmediatamente), porque de hecho haba que describir una regla por
tubera, ahora debe hacerse una descripcion generalizada.
Por supuesto, podra simplemente usarse la expresion Tuberia(i, j, k), para indicar que el agua no
cambia desde el canal i hasta el canal j, pero en este caso, no sera posible resolver el siguiente apartado
con el uso de la deduccion hacia detras puesto que es imperativo que todos los literales esten afirmados.
Por lo tanto, se usara un predicado P rogreso(i, k) que indica simplemente que el agua continuara en el
canal i, cuando se encuentre en el paso k.
Las reglas que describen el paso del agua es, en este caso:

R3 : i, k, k [Agua(i, k) Progreso(i, k) Succ(k, k ) Agua(i, k )]

Por ultimo, es preciso tambien crear reglas especiales para describir la entrada y salida del agua en la red de
distribucion:

Entrada Si el predicado Deposito(x) sirve para identificar que se abre la llave de paso del deposito especificado,
entonces la siguiente regla describe la entrada de agua desde cualquier punto:

R4 : x [Deposito(x) Agua(x, 1)]

Salida Analogamente, si el predicado Destino(y) representa, tambien, el hecho de que se recibe agua en y,
entonces todas las salidas se describen simplemente como:

R5 : x [Agua(x, 4) Destino(x)]

donde el numero 4 sirve simplemente para identificar el ultimo paso de la figura 1

5. Antes de iniciar el proceso de deduccion automatica hacia detras, es necesario determinar los contenidos
iniciales de la base de hechos con todas las observaciones iniciales. En concreto, para el caso de la figura 1,
son instancias en el sistema las siguientes:4

H0 : Tuberia(A, B, 1) (primera tubera)


H1 : Tuberia(B, C, 2) (segunda tubera)
H2 : Tuberia(B, C, 3) (tercera tubera)
H3 : Progreso(C, 1) (porque no hay tubera en (C,1))
H4 : Progreso(A, 2) (porque no hay tubera en (A,2))
H5 : Progreso(A, 3) (porque no hay tubera en (A,3))

En la demostracion que sigue, se utilizaran (tal y como adverta el enunciado) directamente las reglas que
sirven para probar el objetivo solicitado, y no se intentara nunca la unificacion con reglas que no conducen
a la solucion:

a) Para probar que el destino que recibe el agua es el tercero, esto es, que es el de C o, equivalentemente, el
predicado Destino(C) puede usarse la regla R5 que produce precisamente este literal con la unificacion
1 = {x = C}
4 Junto con las de Succ(1, 2), Succ(2, 3), . . . como se indico anteriormente
b) Por lo tanto, seran objetivos del modelo de inferencia ahora, las premisas o clausulas del antecedente de
la regla escogida en el paso anterior: Agua(C, 4) que debe leerse como que el agua llegue hasta el 4 paso
del deposito C que es el que se corresponde con el destino 3.
Para probarlo, puede usarse la regla R1 con la unificacion 2 = {i = B, j = C, k = 3, k = 4}, que es
precisamente la que modela el movimiento del agua en la ultima tubera que hay entre los depositos B y
C. Gracias a esta regla, la conclusion que quiere probarse sera cierta, si lo es el antecedente de la regla
escogida una vez que se ha practicado la unificacion indicada: Agua(B, 3), Tuberia(B, C, 3) y Succ(3, 4).
El segundo predicado aparece, de hecho, en nuestra base de hechos original (H2 ), y el tercero tambien
(ver nota a pie de pagina 4). Por lo tanto, queda por probar Agua(B, 3).
c) Para probar que el agua llega, efectivamente, hasta el tercer paso del deposito B, es preciso que el agua
fluya por la tubera que hay en el segundo paso desde C hasta B. Sera precisamente la regla R2 la que
nos ayude a hacerlo. Para ello, se empleara la unificacion 3 = {i = B, j = C, k = 2, k = 3}, gracias a
la cual puede concluirse que Agua(B, 3) sera necesariamente cierto si puede probarse simultaneamente:
Agua(C, 2), Tuberia(B, C, 2) y Succ(2, 3).
El segundo predicado aparece en la base de hechos inicial (H1 ) y el tercero es conocido tambien. Por lo
tanto, ahora debe probarse Agua(C, 2).
d ) En la figura 2 resulta facil observar que el agua llegara al segundo paso del deposito C cayendo
precisamente en vertical. Este movimiento esta modelado precisamente por la regla R3 que se empleara con
la unificacion 4 = {i = C, k = 1, k = 2}. De este modo, la conclusion (Agua(C, 2)) sera cierta si son
ciertas las premisas: Agua(C, 1), Progreso(C, 1) y Succ(1, 2). Mientras que los dos ultimos predicados son
conocidos (hecho H3 ) y relacion de sucesion, respectivamente, el primero debe probarse explcitamente.
e) Precisamente, la aparicion del agua en el primer paso se modela explcitamente con la regla R4 que
establece que el agua llegara hasta el primer paso del canal C si se abre precisamente el deposito C, si
dicha regla se lee con la unificacion 5 = {x = C}.

En conclusion, si se abre el deposito C, el agua llegara hasta la tercera salida. Mas aun, al contrario que
como sucediera con la deduccion hacia delante, la deduccion hacia detras proporciona una explicacion
pormenorizada del motivo por el que esto es cierto. Esto es, una explicacion completa que puede leerse
siguiendo ahora los pasos anteriores al reves: el agua sale del deposito C, llega hasta el segundo paso del
tercer canal, desde donde fluye por la tubera que le une con B y vuelve de nuevo al canal C a lo largo de
una segunda tubera desde la que cae hasta la salida del tercer deposito.
Solucion al problema 2
1. Para definir correctamente el espacio de problemas hay que definir el conjunto de estados, el conjunto de
operadores, el estado inicial y las metas. Para este problema vendran definidos de la siguiente forma:

Conjunto de estados: Para representar cada estado, se podran utilizar los siguientes marcos:

Control
es-un:
Atributo Posibles valores/Valor
tmax entero/TiempoMaximo
tiempo entero/0
actividades Actividad/Nil

Este marco sirve para controlar la busqueda. El atributo tmax tendra el tiempo maximo del que dispone
el estudiante para hacer el curso. tiempo contendra la suma del tiempo total de las actividades anadidas
a la solucion hasta el momento y actividades sera la lista de las actividades anadidas. Al final de la
busqueda, contendra la solucion del problema.

Actividad
es-un:
Atributo Posibles valores/Valor
nombre smbolo/Id actividad
tarea smbolo/Id tarea
utilidad real/Utilidad
tiempo entero/Tiempo

Con este marco se representaran las diferentes actividades de aprendizaje disponibles. El atributo nombre
es el identificador o nombre de la actividad, tarea referencia la tarea a la que pertenece, podra ser la
instancia de la tarea o simplemente el nombre de la tarea , utilidad tendra un valor numerico entre
0 y 1 con la utilidad normalizada que dicha actividad le reporta al estudiante, tiempo es el tiempo en
segundos que tardara el estudiante en completar la actividad.

Tarea
es-un:
Atributo Posibles valores/Valor
nombre smbolo/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. Para facilitar este computo tambien se podra anadir en el marco
Control un atributo, tarea que contenga la lista de tareas que componen el curso.
Estado inicial: en el estado inicial habra tantas instancias del marco Tarea como tareas hubiese en el
curso, una instancia del marco Actividad por cada actividad de aprendizaje y una instancia de Control
con tiempo=0, actividades=Nil y tmax=tiempo maximo fijado para cada problema particular.
Estado meta: El estado meta se definira de forma explcita 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.
Conjunto de operadores: Bastara con definir el siguiente operador

add-actividad (a):
SI c Control, c.tiempo=t, c.tmax=tmax, c.actividades=acts Y
a Actividad, a.tiempo=ta Y
a/ acts Y
t + ta <= tmax
EN T ON CES add(acts, a)
dar-valor(c,tiempo,t + ta)
2. El problema exige encontrar la solucion que mayor utilidad reporte al alumno, y cada actividad tiene un
utilidad distinta, por tanto, solo se podran utilizar algoritmos que traten con costes no uniformes. El unico
operador que hay es anadir una actividad a la lista de actividades del alumno. El primer algoritmo que se
podra pensar en usar es el de Ramificacion y acotacion en profundidad utilizando como coste el valor de
la utilidad. Empezara eligiendo un conjunto de actividades segun el orden en que se definan hasta agotar
el tiempo, si es una solucion (hay una actividad por tarea) almacenara la utilidad total y empezara una
nueva busqueda teniendo ese valor como umbral. Si no es una solucion, retrocedera hasta encontrar una.
El problema que podra tener este algoritmo es de tiempo y memoria ya que tendra que explorar todas las
posibilidades, pero si el no de actividades es suficientemente pequeno las soluciones proporcionadas seran
optimas ademas de garantizar completitud.

3. El algoritmo de busqueda en Escalada es un algoritmo local que solo se fija en sus sucesores inmediatos por
lo que ni es completo ni es admisible debido a que pueden existir maximos (o mnimos) locales. Sin embargo,
para este problema, eligiendo una adecuada funcion de evaluacion que vaya seleccionando las actividades de
mayor utilidad y ademas, elija primero una actividad por cada tarea, podra proporcionar algunas soluciones
aceptables bastante rapidamente. Aunque, seguira sin garantizar completitud ni optimalidad.
La funcion de evaluacion sirve para etiquetar los nodos de busqueda de forma que el algoritmo elija el mas
prometedor. Normalmente para ello se define una funcion heurstica que hace una estimacion del coste desde
el nodo a la solucion. En este problema, hacer esa estimacion es tan difcil como resolver el problema. Sin
embargo, lo que s se puede usar es una funcion que nos permita guiar la busqueda. El objetivo del problema
es elegir la actividad que mayor utilidad reporte al estudiante, por tanto como funcion de evaluacion se podra
usar simplemente la utilidad de la accion a anadir y cambiar el algoritmo para que intente maximizarla. Sin
embargo, debido a la condicion de que para completar el curso el estudiante debe realizar una actividad de
cada tarea, se podra sumar un valor mayor que la maxima utilidad, por ejemplo 2, en caso de que la actividad
a anadir pertenezca a una tarea de la que todava no hay seleccionada ninguna actividad en la solucion. De
esta forma nos aseguramos que el sistema seleccionara primero una actividad por tarea. Es decir, una funcion
de evaluacion para este problema podra ser:

fn = a.utilidad + X
X = 0, si a.tarea ya esta en alguna actividad de la solucion
X = 2, en caso contrario
a es la ultima actividad anadida a la solucion
El algoritmo habra que configurarlo para que elija el nodo de mayor valor de fn .
Este algoritmo con esta fn no es ni admisible ni optimo. Podra ocurrir que exista una solucion pero el
algoritmo no la encuentre. Por ejemplo, si hay un curso con dos tareas, la primera con tres actividades:
a11 .tiempo=60 y a11 .utilidad=0.8, a12 .tiempo=30 y a11 .utilidad=0.5 y a13 .tiempo=20 y a11 .utilidad=0.7
y la segunda tarea con una actividad:
a21 .tiempo=120 y a21 .utilidad=0.5
Si se fija como tiempo maximo 150 el algoritmo no encontrara solucion ya que elegira a11 porque tiene mayor
utilidad y descartara las otras actividades que podran proporcionar soluciones validas. Tampoco garantiza
optimalidad. Aunque se fijara el tiempo en 180 el algoritmo elegira a11 pero reportara mayor utilidad y menos
tiempos elegir las otras dos actividades en vez de esta.

4. El algoritmo Dijkstra es una tecnica de mejor primero donde la funcion de evaluacion es igual al coste,
f (n) = g(n). En este problema se quiere maximizar la utilidad por lo que se podra usar como funcion
de coste pero al tener la restriccion del tiempo hay que estudiar si proporcionara soluciones optimas y si
puede garantizar completitud. 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. En
caso de no encontrar una solucion pueden retroceder a otro nodo de Abierta para seguir la busqueda. Por
tanto, en este problema nos asegurara completitud. Para buscar soluciones optimas, cada vez que se anade
un nodo se comprueba si hay una solucion mejor (de menor/mayor coste) en cuyo caso se re-direccionan
los punteros de los nodos en Abierta y Cerrada. Sin embargo, en este problema, como en cada iteracion se
anade un nodo mas que siempre sumara algo la utilidad sin tener en cuenta el tiempo, nunca se obtendran
soluciones mejores y no se cambiaran los punteros. Es decir, no garantizara optimalidad. Por tanto, la ventaja
con el algoritmo en Escalada es que Dijkstra s garantiza completitud en este caso, pero no optimalidad. La
desventaja sera la memoria ya que tendra que almacenar todos los nodos en la lista Abierta y para cursos
con muchas actividades podra agotar la memoria disponible. Ademas, al no computar la funcion h no se
podra acelerar la busqueda de la solucion usando una funcion similar a la funcion de evaluacion usada en el
apartado anterior.

5. Para poder utilizar A* y IDA* habra que definir una funcion heurstica que estimara el coste desde el nodo
en el que se esta hasta la solucion y ademas, si dicha funcion nunca sobrestima dicho coste (es admisible) y
los costes son siempre positivos estos algoritmos aseguran completitud y optimalidad. Para nuestro problema,
habra que cambiar el algoritmo para que maximizara el coste y el concepto de admisibilidad se invertira. Si
embargo, igual que pasaba en el apartado anterior, debido a la restriccion del tiempo no es facil buscar una
funcion heurstica y menos aun que sea admisible. Lo que s se podra hacer es algo similar a la funcion de
evaluacion usada en el algoritmo de escalada para intentar llegar antes a la solucion. Es decir, se podra usar:
fn =gn + hn , donde gn sera utilidad y hn es 2 si la actividad a anadir pertenece a una tarea que aun no se
ha incluido en la solucion y 0 en caso contrario. Esta heurstica no es admisible (se podran incluir mas de
una actividad para la misma tarea si hubiese mas tiempo) y por tanto no garantiza optimalidad pero hara
que el algoritmo convergiera mas rapidamente.

6. Para estudiar la complejidad del algoritmo hay que hacer una estimacion de los nodos generados hasta
encontrar la solucion. Suponiendo que la solucion esta a profundidad p, el numero de nodos generados en
el nivel 1 sera el numero total de actividades, es decir, t n, en el nivel 2, habra (t n 1) nodos, en el 3
(tn2) . . . y a nivel p se generaran (tnp+1) nodo. El algoritmo en Escalada es un metodo avaricioso que
solo guarda el nodo que expande, por tanto la complejidad espacial sera t n. Para estudiar la complejidad
temporal
Pp habra que sumar todos los nodos generados hasta encontrar la solucion en la profundidad p, es
decir, p=1 (a p + 1).

You might also like