Está en la página 1de 12

Bsqueda Heurstica II

Pedro Meseguer IIIA-CSIC Bellaterra, Spain pedro@iiia.csic.es

Algoritmos
Algoritmo: procedimiento computacional que termina
si en algn caso no termina, hay que especificarlo Caractersticas: algoritmo A(x) y | fallo correcto: y es lo que A dice que es completo: satisfaccin: y es solucin optimizacin: y es la solucin ptima

Bsqueda Heurstica

Complejidad
Algoritmo A(x), | x | = n Coste en tiempo: pasos que da A en funcin de n, caso peor polinomio de n: n2 + 2n + 3 O(n2)
exponencial: 3n + nlog(n) O(3n)

Coste en espacio: memoria de A en funcin de n, caso peor polinomio de n: 2n 3 + 4n O(n3)


exponencial: 2n + nlog(n) O(2n)

nos quedamos con el trmino dominante


Bsqueda Heurstica 3

Complejidad caso peor / caso medio


Caso peor:
peor opcin en tiempo / memoria

Caso medio: coste medio en ejemplares reales Si caso peor no es frecuente:


complejidad caso peor no es una estimacin realista y... ... una complejidad alta no nos asusta

Si el caso peor cercano al caso medio:


la funcin de complejidad va a determinar la bondad del algoritmo
Bsqueda Heurstica 4

Bsqueda ciega
Bsqueda ciega (fuerza bruta): sin funcin heurstica Algoritmos:
Busqueda en anchura (BFS) Bsqueda en profundidad (DFS) Profundizacin iterativa (ID)

Evaluacin:
calidad solucin: ptimo? coste en tiempo: proporcional a los nodos generados coste en memoria: proporcional a los nodos almacenados
Bsqueda Heurstica 5

Nodo: operaciones
Generacin: cuando se crea Expansin: cuando se generan sus sucesores
generacin de sucesores
expansin

nodo

es solucin?

no
generacin

Bsqueda Heurstica

Bsqueda en rbol
rbol de bsqueda:
finito: profundidad d factor de ramificacin b (uniforme)
d
...

soluciones
Bsqueda Heurstica 7

Esquema de bsqueda ciega


1. L lista de nodos iniciales del problema. L contiene la lista de nodos no visitados. 2. Si L vaca, fallo, stop. Sino, n extrae un nodo de L (n se elimina de L) 3. Generar los sucesores de n. Si un sucesor es solucin, retornar el camino desde la raz, stop. 4. Sino, aadir a L los sucesores de n, etiquetando sus respectivos caminos desde la raz. Ir a 2. Opciones:
extrae un nodo de L aadir a L sucesores de n

al principio? al final ? al principio? al final ? todos? unos pocos?


Bsqueda Heurstica 8

Bsqueda en anchura
Algoritmo BFS (breadth-first search)
1. Lista L nodo raz 2. Si L vaca, fallo, stop. Sino, n extrae-primero(L). 3. Generar los sucesores de n. Si alguno es solucin, retornar el camino desde la raz, stop. 4. Sino, aadir al final de L todos los sucesores de n, etiquetando cada sucesor con su camino desde la raz. Ir a 2.
Bsqueda Heurstica 9

Bsqueda en anchura (II)


0 1 3 7 8 9 4 10 11 5 12 13 2 6 14

15 16

17 18

19 20

21 22

23 24

25 26

27 28

29 30

orden de generacin
Bsqueda Heurstica 10

Bsqueda en anchura (III)


Calidad: se visita por niveles encuentra la solucin
ms cercana a la raz Tiempo: proporcional a los nodos generados

nivel
0 1 2

nodos
1

1 + b + b2 + ... + bd =

bd+1 - 1 b-1

bd+1 b-1

b b2

Complejidad temporal: O(bd)

Espacio: nodos memorizados bd


d bd

Complejidad espacial: O(bd)


Bsqueda Heurstica 11

Bsqueda en anchura IV
1 2

d-1 d caso mejor b d-1 + b caso medio 1/2 b d


Bsqueda Heurstica

b d-1

caso peor bd

12

Complejidad espacial exponencial

!!

Velocidad generacin nodos: 107 por seg Memoria disponible: 2,5 x 108 nodos Si guardamos todos los nodos:
25 seg

Si guardamos solo el ltimo nivel:


en cuanto bd > 2,5 108 memory overflow en la prctica, cuestion de minutos
Bsqueda Heurstica 13

Bsqueda en profundidad
Algoritmo DFS (depth-first search):
1. Lista L nodo raz 2. Si L vaca, fallo, stop. Sino, n extrae-primero(L). 3. Generar los sucesores de n. Si alguno es solucin, retornar el camino deste la raz, stop. 4. Sino, aadir al principio de L todos los sucesores de n, etiquetando cada sucesor con su camino desde la raz. Ir a 2.
Bsqueda Heurstica 14

Bsqueda en profundidad (II)


0 1 3 5 6 11 4 12 19 17 20 25 2 18 26

10

13 14

15 16

21 22

23 24

27 28

29 30

orden de generacin
Bsqueda Heurstica 15

Bsqueda en profundidad (III)


Calidad:
soluciones zona visitada por DFS Supongamos que DFS no se pierde en ramas infinitas

rama infinita

DFS encuentra una solucin, pero no es la ms cercana a la raz

DFS no encuentra solucin


Bsqueda Heurstica 16

Bsqueda en profundidad (IV)


Espacio: en cada momento, 1 sola rama en memoria

d(b-1) + 1 Complejidad espacial: O(bd)

Tiempo: nodos generados igual que BFS


Complejidad temporal: O(bd)
Bsqueda Heurstica 17

Profundizacin iterativa
Algoritmo ID (iterative deepening):
1. Cota profundidad c 1 2. Lista L nodo raz. 3. Si L vacia, c c + 1, ir a 2. Sino, n extrae-primero(L). 4. Si profundidad(n) < c, generar los sucesores de n. Si alguno es solucin, retornar el camino desde la raz. Stop. 5. Sino, aadir al principio de L los sucesores de n, etiquetando cada sucesor con su camino desde la raz. En cualquier caso, ir a 3.
Bsqueda Heurstica 18

Profundizacin iterativa (II)


0

c=1

orden de generacin
Bsqueda Heurstica 19

Profundizacin iterativa (II)


0 1, 3 2, 4 6 7 8

c=2

orden de generacin
Bsqueda Heurstica 20

Profundizacin iterativa (II)


0 1, 3, 9 5, 11 13 14 15 6, 12 16 19 7, 17 20 21 2, 4, 10 8, 18 22

c=3

orden de generacin
Bsqueda Heurstica 21

Profundizacin iterativa (III)


Calidad: solucin ms cercana a la raz Espacio: es DFS, d(b-1)+1 Tiempo: d bsquedas DFS
bd b b b b + + ...+b + bd-1 b-1 b-1 b-1 b-1 b b-1
2

Complejidad espacial O(bd)

bd

Complejidad temporal O(bd)

Bsqueda Heurstica

22

Comparacin ID y DFS
Complejidad espacial igual Complejidad temporal:
asintticamente (d grande) igual: la mayor parte del trabajo se debe a la ltima iteracin, y el coste de las iteraciones anteriores es pequeo para b y d fijos ID = DFS

bd bd

b b-1 b b-1

b b-1

Bsqueda Heurstica

23

Resumen
BFS Espacio: exp Tiempo: exp Problema ramas infinitas no Solucin ms cercana s DFS lineal exp s no ID lineal exp no s

ID repite trabajo, pero el coste de las iteraciones anteriores es pequeo comparado con la iteracin que encuentra la solucin. Si sabemos la profundidad de la solucin: DFS.
Bsqueda Heurstica 24

También podría gustarte