1. Resoluci´on de Problemas mediante B´usqueda
Tema 3
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 1
Esquema
♦ Introducci´on
♦ Agentes para la resoluci´on de problemas
♦ Formulaci´on de problemas
♦ Problemas ejemplo
♦ B´usqueda de soluciones
♦ Estrategias b´asicas de b´usqueda
- b´usqueda primero en anchura
- b´usqueda de coste uniforme
- b´usqueda primero en profundidad
- b´usqueda limitada en profundidad
- b´usqueda por profundizaci´on iterativa
- b´usqueda bidireccional
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 2
2. Introducci´on
Los agentes reflejos simples tienen muchas limitaciones
Vamos a ver un tipo de agente basado en objetivos: agentes para la
resoluci´on de problemas
Los agentes para la resoluci´on de problemas funcionan buscando secuencias
de acciones que conduzcan a estados deseados
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 3
Agentes para la resoluci´on de problemas
Los agentes inteligentes deben actuar de forma que se maximice su medida
del desempe˜no ; introducci´on de objetivos
Los objetivos ayudan a dirigir el comportamiento del agente limitando las
acciones que intenta realizar
Las etapas de la resoluci´on de problemas con objetivos:
1. Formulaci´on de objetivos: a partir de la situaci´on actual, definir los estados
objetivo y los factores que pueden influir en el grado de satisfacci´on
de las distintas maneras de conseguirlo
2. Formulaci´on del problema: decidir qu´e acciones y estados considerar
3. B´usqueda: decidir qu´e hacer examinando diferentes secuencias de acciones
que llevan a estados objetivo y escogiendo la mejor
4. Ejecuci´on: ejecutar las acciones recomendadas
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 4
3. ejemplo: hallar rutas en Ruman´ıa
Estamos de vacaciones en Ruman´ıa, concretamente en Arad
Nuestro vuelo sale ma˜nana de Bucharest
Formulaci´on de objetivos:
estar en Bucharest
Formulaci´on del problema:
estados: distintas ciudades
acciones: conducir entre ciudades
Encontrar soluci´on:
secuencia de ciudades, p.e. Arad, Sibiu, Fagaras, Bucharest
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 5
ejemplo: hallar rutas en Ruman´ıa (cont.)
Giurgiu
Urziceni
Hirsova
Eforie
Neamt
Oradea
Zerind
Arad
Timisoara
Lugoj
Mehadia
Dobreta
Craiova
Sibiu Fagaras
Pitesti
Vaslui
Iasi
Rimnicu Vilcea
Bucharest
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 6
4. La estructura de un agente simple para la resoluci´on de problemas:
function SIMPLE-PROBLEM-SOLVING-AGENT(p) returns an action
inputs: p, a percept
static: s, an action sequence, initially empty
state, some description of the current world state
g, a goal, initially null
problem, a problem formulation
state
UPDATE-STATE(state,p)
if s is empty then
g
FORMULATE-GOAL(state)
problem
FORMULATE-PROBLEM(state,g)
s
SEARCH( problem)
action
RECOMMENDATION(s,state)
s
REMAINDER(s,state)
return action
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 7
Formulaci´on de problemas
Distintos tipos de problemas determinados por el conocimiento que el agente
tiene de los efectos de sus acciones y del estado en que se encuentra
Ejemplo : “mundo del aspirador”
el mundo tiene dos posiciones.
en las posiciones del mundo puede haber o no
suciedad.
el agente est´a en una u otra posici´on.
las acciones que puede realizar el agente son:
Left (izquierda), Right (derecha) y Suck
(aspirar).
el objetivo es limpiar toda la suciedad, que
equivale al conjunto de estados {7, 8}.
1 2
3 4
5 6
7 8
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 8
5. Tipos de problemas seg´un el conocimiento del agente:
1. Si conoce sus acciones y el estado actual (entorno determinista y accesible)
; problema de un solo estado (single-state problem)
2. Si conoce sus acciones pero no el estado actual (entorno determinista e
inaccesible) ; problema de conjuntos de estados (multiple-state problem)
3. Si su conocimiento sobre acciones y estado actual es incompleto (entorno
no determinista e inaccesible) ; problema de contingencia:
utilizar la percepci´on durante la ejecuci´on
calcular un ´arbol de acciones cuyas ramas tratan distintos casos
4. Si desconoce completamente sus acciones (espacio de estados descono-
cido) ; problema de exploraci´on:
experimentar y descubrir informaci´on sobre acciones y estados
Los problemas de un solo estado y de conjuntos de estados se pueden resolver
mediante las estrategias de b´usqueda de este tema
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 9
ejemplo: “mundo del aspirador”
1. Un solo estado: a partir de 5, Soluci´on??
2. Conjuntos de estados:
a partir de {1, 2, 3, 4, 5, 6, 7, 8} y usando p.e.
Right resulta en {2, 4, 6, 8}, Soluci´on??
3. Contingencia, a partir de 5 y con:
Ley de Murphy: Suck puede ensuciar
Sensor de posici´on y sensor local de suciedad
Soluci´on??
1 2
3 4
5 6
7 8
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 10
6. Formulaci´on de problemas de un solo estado
Un problema es el conjunto de informaci´on que el agente usa como entrada
a su proceso de decisi´on, e incluye:
• estado inicial
• operadores: descripci´on de las acciones que puede realizar el agente
en t´erminos de c´omo modifican el estado (otra descripci´on posible es una
funci´on sucesor S(x))
→ ambos definen el espacio de estados, o conjunto de estados a los que
se puede llegar desde el estado inicial a trav´es de cualquier secuencia de
operadores. Un camino en dicho espacio ser´a una secuencia de operadores.
• test de objetivo: descripci´on de los estados objetivo, expl´ıcita o no
• coste del camino: funci´on equivalente a la suma del coste de las acciones
del camino (se suele denotar g(x))
Una soluci´on es un camino que conduce del estado inicial a un estado que
satisface el test de objetivo
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 11
ejemplo: hallar rutas en Ruman´ıa
El problema puede estar definido por:
• estado inicial, p.e. “en Arad”
• operadores, operadores que lleven de una ciudad a otra seg´un el mapa,
p.e. Arad → Zerind, Arad → Sibiu, etc
• test de objetivo, expl´ıcito, p.e. x = “en Bucharest”
• coste del camino, n´umero de etapas del viaje
Una soluci´on ser´ıa una ruta que lleve de Arad a Bucharest, p.e.
Arad → Sibiu → Rimnicu Vilcea → Pitesti → Bucharest
La formulaci´on de problemas de conjuntos de estados se realiza de manera
similar
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 12
7. La elecci´on del espacio de estados (conjunto de estados y operadores) es
fundamental para la resoluci´on de problemas
El mundo real es muy complejo ; es necesario realizar una abstracci´on
para omitir los detalles irrelevantes
Mediante la abstracci´on del espacio de estados:
estado = conjunto de estados reales
operador = combinaci´on de acciones reales, p.e. Arad → Zerind
representa una combinaci´on compleja de carreteras alternativas,
desv´ıos, paradas, etc
soluci´on =
conjunto de caminos reales que son soluciones en el mundo real
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 13
Problemas ejemplo
Los problemas reales pueden formularse como hemos visto despu´es de una
etapa de an´alisis
ejemplo: el puzzle de las 8 piezas
Start State Goal State
2
45
6
7
8
1 2 3
4
67
81
23
45
6
7
81
23
45
6
7
8
5
estados??: posiciones de las piezas y del hueco
operadores??: llevar el hueco a iquierda, derecha, arriba o abajo
test de objetivo??: = goal state, el estado objetivo predefinido
coste del camino??: 1 por movimiento
Nota: la familia de problemas de los “puzzles de las n piezas” es NP-completa
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 14
8. ejemplo: espacio de estados del “mundo del aspirador”
R
L
S S
S S
R
L
R
L
R
L
S
SS
S
L
L
LL R
R
R
R
estados??: posiciones de la suciedad y del robot
operadores??: Left, Right, Suck
test de objetivo??: NoDirt(x)
coste del camino??: 1 por operador
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 15
ejemplo: espacio de estados del “mundo del aspirador” (cont.)
L
R
L R
S
L R
S S
S S
R
L
S S
L
R
R
L
R
L
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 16
9. ejemplo: ensamblado con robots
R
RR
P
R R
estados??:
coordenadas reales de los ´angulos de las articulaciones del robot
piezas del objeto a ensamblar
operadores??: movimientos continuos de las articulaciones del robot
test de objetivo??: ensamblado completo
coste del camino??: tiempo de ejecuci´on
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 17
B´usqueda de soluciones
La idea b´asica es explorar el espacio de estados a partir del estado inicial, a
trav´es de secuencias parciales de soluciones:
si el estado actual no es objetivo, consideraremos otros estados
sucesores (expansi´on del estado), y as´ı sucesivamente
Para decidir qu´e estado expandir y cu´ales dejar para su estudio posterior:
estrategia de b´usqueda
El proceso de b´usqueda la construcci´on de un ´arbol de b´usqueda:
function GENERAL-SEARCH( problem,strategy) returns a solution, or failure
initialize the search tree using the initial state of problem
loop do
if there are no candidates for expansion then return failure
choose a leaf node for expansion according to strategy
if the node contains a goal state then return the corresponding solution
else expand the node and add the resulting nodes to the search tree
end
notar que espacio de estados = ´arbol de b´usqueda
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 18
10. ejemplo de b´usqueda general
Sibiu Bucharest
Arad Oradea
Rimnicu
VilceaFagaras
Zerind Sibiu Timisoara
Arad
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 19
La estructura de datos para los nodos del ´arbol de b´usqueda incluir´a:
• estado del espacio de estados con el que se corresponde
• nodo padre cuya expansi´on gener´o el nodo
• operador que fu´e aplicado en la expansi´on
• profundidad del nodo desde la ra´ız
• coste del camino desde la ra´ız hasta el nodo
notar que estado = nodo del ´arbol de b´usqueda:
1
23
45
6
7
81
23
45
6
7
8
State Node
parent
depth = 6
g = 6
children
state
La estructura de datos para el conjunto de nodos pendientes de expansi´on
ser´a una cola
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 20
11. El algoritmo de b´usqueda general:
function GENERAL-SEARCH( problem,QUEUING-FN) returns a solution, or failure
nodes
MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))
loop do
if nodes is empty then return failure
node
REMOVE-FRONT(nodes)
if GOAL-TEST[problem] applied to STATE(node) succeeds then return node
nodes
QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))
end
donde Expand crea nuevos nodos y asigna valores a sus campos, utilizando
los operadores o la funci´on sucesor para generar los estados correspondientes
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 21
Estrategias b´asicas de b´usqueda
Una estrategia queda definida por el orden en que se expanden los nodos
Vamos a evaluar las estrategias seg´un cuatro aspectos:
Completitud—¿garantiza encontrar una soluci´on si existe una?
Complejidad temporal—¿cu´antos nodos deben expandirse?
Complejidad espacial—¿cu´antos nodos deben almacenarse en
memoria?
Optimalidad—¿garantiza encontrar la mejor soluci´on (la de menor
coste) si existen varias?
Las complejidades temporal y espacial se miden en t´erminos de
b—m´aximo factor de ramificaci´on del ´arbol de b´usqueda
d—profundidad de la soluci´on de menor coste
m—profundidad m´axima del espacio de estados (puede ser ∞)
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 22
12. Vamos a ver estrategias que se denominan de b´usqueda no informada
(uninformed search) o de b´usqueda ciega porque s´olo usan la informaci´on
de la definici´on del problema:
- b´usqueda primero en anchura
- b´usqueda de coste uniforme
- b´usqueda primero en profundidad
- b´usqueda limitada en profundidad
- b´usqueda por profundizaci´on iterativa
- b´usqueda bidireccional
Contrastan con las estrategias de b´usqueda informada (informed search)
o de b´usqueda heur´ıstica que utilizan informaci´on del coste del estado actual
al objetivo
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 23
B´usqueda primero en anchura
Expande primero los nodos no expandidos menos profundos
Implementaci´on:
QueueingFn = a˜nadir al final de la cola, Enqueue-At-End
Arad Oradea
Rimnicu
VilceaFagaras Arad LugojArad Oradea
Zerind Sibiu Timisoara
Arad
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 24
13. Propiedades de la b´usqueda primero en anchura:
Completa?? S´ı, si b es finito
Tiempo?? 1 + b + b2
+ b3
+ . . . + bd
= O(bd
), o sea, exponencial con d
Espacio?? O(bd
) (se deben almacenar todos los nodos en memoria)
Optima?? S´ı, si el coste por operador es 1; no es ´optima en general
El coste espacial es el mayor problema:
Depth Nodes Time Memory
0 1 1 millisecond 100 bytes
2 111 .1 seconds 11 kilobytes
4 11,111 11 seconds 1 megabyte
6 106
18 minutes 111 megabytes
8 108
31 hours 11 gigabytes
10 1010
128 days 1 terabyte
12 1012
35 years 111 terabytes
14 1014
3500 years 11,111 terabytes
Nota: se ha supuesto b=10, 1000 nodos/seg y 100 bytes/nodo.
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 25
ejemplo: mapa de Ruman´ıa con costes de operador en km
Bucharest
Giurgiu
Urziceni
Hirsova
Eforie
Neamt
Oradea
Zerind
Arad
Timisoara
Lugoj
Mehadia
Dobreta
Craiova
Sibiu
Fagaras
Pitesti
Rimnicu Vilcea
Vaslui
Iasi
Straight−line distance
to Bucharest
0
160
242
161
77
151
241
366
193
178
253
329
80
199
244
380
226
234
374
98
Giurgiu
Urziceni
Hirsova
Eforie
Neamt
Oradea
Zerind
Arad
Timisoara
Lugoj
Mehadia
Dobreta
Craiova
Sibiu Fagaras
Pitesti
Vaslui
Iasi
Rimnicu Vilcea
Bucharest
71
75
118
111
70
75
120
151
140
99
80
97
101
211
138
146 85
90
98
142
92
87
86
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 26
14. B´usqueda de coste uniforme
Expande primero los nodos no expandidos con menor coste de camino
Implementaci´on:
QueueingFn = insertar en la cola en orden de coste creciente
Arad Lugoj
118 111
Arad Oradea
75 71
Zerind Sibiu Timisoara
75 140 118
Arad
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 27
Propiedades de la b´usqueda de coste uniforme:
Completa?? S´ı
Tiempo?? num. de nodos con g(n) ≤ coste de la soluci´on ´optima
Espacio?? num. de nodos con g(n) ≤ coste de la soluci´on ´optima
Optima?? S´ı, si se cumple que g(Sucesor(n)) ≥ g(n)
La b´usqueda primero en anchura es una b´usqueda de coste uniforme en la
que g(n) = Profundidad(n)
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 28
15. B´usqueda primero en profundidad
Expande primero los nodos no expandidos mas profundos
Implementaci´on:
QueueingFn = a˜nadir al principio de la cola, Enqueue-At-Front
Zerind Sibiu Timisoara
Arad Oradea
Zerind Sibiu Timisoara
Arad
notar que la b´usqueda puede caer en caminos c´ıclicos infinitos ; necesita
espacios de b´usqueda finitos, sin bucles (o evitar espacios repetidos)
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 29
Propiedades de la b´usqueda primero en profundidad:
Completa?? No: falla en espacios de profundidad ∞, con bucles ; evitar
espacios repetidos a lo largo de un camino:
completa en espacios finitos
Tiempo?? O(bm
):
terrible si m es mucho mayor que d
si hay muchas soluciones puede ser mucho mas r´apida que la b´usqueda
primero en anchura
Espacio?? O(bm), o sea, ¡lineal!
Optima?? No
Esta estrategia debe evitarse cuando el espacio de b´usqueda tiene una
profundidad muy grande o incluso ∞
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 30
16. B´usqueda limitada en profundidad
= b´usqueda primero en profundidad con l´ımite de profundidad l
Implementaci´on:
como la b´usqueda primero en profundidad, excepto que los nodos de profun-
didad l no tiene sucesores
Propiedades de la b´usqueda limitada en profundidad:
Completa?? S´ı, si se cumple que l ≥ d
Tiempo?? O(bl
)
Espacio?? O(bl)
Optima?? No
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 31
B´usqueda por profundizaci´on iterativa
Resuelve el problema de la elecci´on del l´ımite de profundidad l
Implementaci´on:
function ITERATIVE-DEEPENING-SEARCH( problem) returns a solution sequence
inputs: problem, a problem
for depth
0 to
¡
do
if DEPTH-LIMITED-SEARCH(problem,depth) succeeds then return its result
end
return failure
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 32
17. B´usqueda por profundizaci´on iterativa l = 0
Arad
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 33
B´usqueda por profundizaci´on iterativa l = 1
Zerind Sibiu Timisoara
Arad
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 34
18. B´usqueda por profundizaci´on iterativa l = 2
Arad LugojArad Oradea
Rimnicu
VilceaFagarasArad Oradea
Zerind Sibiu Timisoara
Arad
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 35
La b´usqueda por profundizaci´on iterativa combina ventajas:
como la b´usqueda primero en anchura, es completa y ´optima
como la b´usqueda primero en profundidad, requiere poca memoria
expande los nodos como la b´usqueda primero en anchura, aunque
algunos varias veces
Sus propiedades:
Completa?? S´ı
Tiempo?? (d + 1)b0
+ db1
+ (d − 1)b2
+ . . . + bd
= O(bd
)
Espacio?? O(bd)
Optima?? S´ı, si el coste por operador es 1
Esta estrategia debe aplicarse a cuando el espacio de b´usqueda es
grande y se desconoce la profundidad de la soluci´on
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 36
19. B´usqueda bidireccional
= b´usqueda simult´anea que avanza desde el estado inicial y retrocede desde
el objetivo
GoalStart
Implementaci´on: ¡complicada! Ser´a necesario:
definir sucesores y tambi´en predecesores
decidir c´omo enfocar las descripciones no expl´ıcitas de objetivos
decidir qu´e tipo de b´usqueda realizar en cada direcci´on
contar con un procedimiento eficiente para comprobar la existencia
de nodos en la otra direcci´on de la b´usqueda
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 37
Propiedades de la b´usqueda bidireccional:
Completa?? S´ı
Tiempo?? O(2bd/2
) = O(bd/2
)
Espacio?? O(2bd/2
) = O(bd/2
)
Optima?? S´ı
Comparaci´on de las estrategias b´asicas de b´usqueda
Criterion
Breadth- Uniform- Depth- Depth- Iterative Bidirectional
First Cost First Limited Deepening (if applicable)
Time bd
bd
bm
bl
bd
bd/2
Space bd
bd
bm bl bd bd/2
Optimal? Yes Yes No No Yes Yes
Complete? Yes Yes No Yes, if l
d Yes Yes
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 38
20. Implementaci´on: c´omo evitar estados repetidos
En algunos problemas existe la posibilidad de expandir estados que ya han
sido expandidos, son problemas con
operadores “reversibles”
´arboles de b´usqueda infinitos
Evitar la repetici´on de estados puede mejorar mucho la eficiencia, sea el ´arbol
de b´usqueda infinito o no
Existen tres formas de tratar los estados repetidos:
para no deshacer la ´ultima operaci´on, modificar Expand para que
no genere un sucesor con un estado igual al del padre
para no obtener caminos con bucles, modificar Expand para que no
genere un sucesor con un estado igual al de cualquiera de los
ancestros
modificar Expand para que no genere un sucesor con un estado ya
explorado
Transparencias IA (F29) – M.Marcos, 1999 (a partir de AIMA Slides c S.Russell & P.Norvig, 1998) Tema 3 39