| Notebook | Colab |
|---|---|
| Notebook 02 — Búsqueda informada (Greedy, Dijkstra, A*) |
Heurísticas $h(n)$: guiar la búsqueda con conocimiento
“A heuristic is a technique that seeks good enough solutions at the cost of completeness, accuracy, or precision.”
Dijkstra y A* pueden guiar la búsqueda hacia la meta si tienen una estimación de cuánto falta. Esa estimación es la función heurística $h(n)$. Este capítulo define qué es, qué propiedades debe cumplir, y qué ocurre cuando esas propiedades se violan.
1. ¿Qué es $h(n)$?
$$h(n) = \text{estimación del costo mínimo desde el nodo } n \text{ hasta la meta más cercana}$$
$h(n)$ es conocimiento del dominio, no algo que calcule automáticamente el algoritmo. El diseñador del algoritmo decide cómo calcularla. Esto es lo que hace a la búsqueda “informada”: el algoritmo sabe algo sobre la estructura del problema.
Ejemplos concretos:
| Problema | $h(n)$ | Intuición |
|---|---|---|
| Navegación en cuadrícula 4-conexa | Distancia Manhattan $= |r_n - r_G| + |c_n - c_G|$ | Nunca podemos hacer menos pasos que la distancia “de taxi” |
| Navegación en mapa de carreteras | Distancia en línea recta (Euclidiana) | Nunca podemos ir más rápido que en línea recta |
| Puzzle de 8 piezas | Número de fichas fuera de su lugar | Cada ficha descolocada necesita al menos un movimiento |
| Sin información | $h(n) = 0$ para todo $n$ | No sabemos nada → el algoritmo se comporta como Dijkstra |
2. Admisibilidad: nunca sobreestimar
La propiedad más importante que debe cumplir $h(n)$:
$$\boxed{h(n) \leq h^{∗}(n) \quad \forall n}$$
donde $h^{∗}(n)$ es el costo real óptimo desde $n$ hasta la meta.
Una heurística admisible nunca exagera lo que falta. Es optimista — puede subestimar, pero no sobreestimar.
¿Por qué importa esto? Si $h$ sobreestima, A* podría “penalizar” injustamente nodos que son parte del camino óptimo, y saltarse la solución óptima por buscar una que parece más barata según $h$.
En una cuadrícula 4-conexa con paredes, el camino real desde $(r_n, c_n)$ hasta $(r_G, c_G)$ nunca puede ser más corto que la distancia Manhattan $|r_n - r_G| + |c_n - c_G|$, porque:
- Cada movimiento solo cambia una coordenada en ±1.
- Las paredes solo pueden forzar rodeos (caminos más largos, nunca más cortos).
Por tanto: $h_{\text{Manhattan}}(n) \leq h^{∗}(n)$ siempre → admisible.
Supón que usamos $h(n) = \text{Manhattan}(n, \text{meta}) \times 2$. Esta heurística sobreestima.
Consecuencia: A* puede rechazar el camino óptimo porque $f = g + h$ parece demasiado alto, y devolver un camino subóptimo. El algoritmo termina rápido pero la solución es incorrecta.
Moraleja: con heurística inadmisible pierdes la garantía de optimalidad.
3. Consistencia (monotonicidad): la propiedad más fuerte
La consistencia (también llamada monotonicidad) es más restrictiva que la admisibilidad:
$$\boxed{h(n) \leq \text{costo}(n, n’) + h(n’) \quad \forall \text{ arista } (n, n’)}$$
Esto es la desigualdad triangular: la estimación desde $n$ no puede superar el costo de ir a $n’$ más la estimación desde $n’$.
n
/ \
c h(n) ≤?
/
n'
\
h(n')
Consistencia exige: h(n) ≤ c(n,n') + h(n')
Intuición: los valores de $h$ no pueden dar saltos bruscos. Si estoy en $n$ y doy un paso a $n’$, mi estimación del costo restante debería cambiar suavemente — no puede caer de golpe más de lo que costó el paso. Formalmente: $h(n) - h(n’) \leq \text{costo}(n, n’)$.
Otra forma de verlo: si la estimación desde $n$ pudiera ser mucho mayor que el costo del paso más la estimación desde $n’$, significaría que $h$ “inventa” dificultad donde no la hay — y A* podría confundirse pensando que $n$ es un nodo muy difícil de continuar, cuando en realidad llegar a $n’$ es barato.
Relación entre consistencia y admisibilidad:
Consistencia $\Rightarrow$ Admisibilidad (pero no al revés)
Una heurística consistente es siempre admisible. Pero una heurística admisible puede no ser consistente: puede subestimar correctamente el costo total desde cada nodo, pero hacerlo de forma “irregular” — subiendo y bajando entre nodos adyacentes de manera inconsistente con los costos de las aristas.
¿Por qué importa la consistencia? Con una heurística consistente, los valores $f(n) = g(n) + h(n)$ son monótonamente no decrecientes a lo largo de cualquier camino. Esto significa que la primera vez que A* expande un nodo, ha encontrado el camino óptimo hasta él — nunca necesitamos reabrir un nodo del conjunto explorado.
Sin consistencia (solo admisibilidad), A* todavía encuentra la solución óptima, pero podría necesitar reabrir nodos ya explorados al descubrir caminos más baratos. La implementación se complica: en lugar de un conjunto explorado definitivo, habría que comparar costos al reinsertar.
Para la distancia Manhattan en cuadrícula 4-conexa:
- Cada movimiento cambia exactamente una coordenada en ±1.
- Si nos movemos de $n = (r, c)$ a $n’ = (r+1, c)$ (un paso abajo), entonces:
- $\text{costo}(n, n’) = 1$
- $h(n’) = |r+1 - r_G| + |c - c_G|$
- $h(n) = |r - r_G| + |c - c_G|$
- La diferencia $h(n) - h(n’) \leq 1 = \text{costo}(n, n’)$ por la desigualdad triangular de valores absolutos.
Por tanto Manhattan es consistente (y por tanto admisible).
Construimos una heurística admisible que viola la consistencia en un grafo de 3 nodos:
Grafo:
S ──1── A ──1── Meta
h* (costo real óptimo):
h*(S) = 2, h*(A) = 1, h*(Meta) = 0
Heurística h (admisible: h ≤ h* en todo nodo):
h(S) = 2, h(A) = 0, h(Meta) = 0
¿Es admisible? Sí: $h(S)=2 \leq h^{∗}(S)=2$, $h(A)=0 \leq h^{∗}(A)=1$, $h(\text{Meta})=0$. Nunca sobreestima.
¿Es consistente? Comprobamos la arista $S \to A$:
$$h(S) \leq \text{costo}(S, A) + h(A) \quad \Rightarrow \quad 2 \leq 1 + 0 = 1 \quad \text{¡FALSO!}$$
La consistencia falla porque $h$ cae bruscamente de 2 a 0 al pasar de $S$ a $A$, pero el paso solo cuesta 1. Es como si la heurística dijera «desde $S$ hay mucho que caminar, pero desde $A$ ya estás prácticamente ahí» — cuando en realidad solo se dio un paso de costo 1.
Consecuencia práctica: A* con esta $h$ podría expandir $A$ con $f(A) = g(A) + h(A) = 1 + 0 = 1$ y marcarlo como explorado. Pero luego, al llegar a Meta desde $A$ con $g(\text{Meta})=2$, el valor $f=2$ es mayor que $f(A)=1$ previo. Los valores de $f$ no son monótonos → el conjunto explorado no es fiable sin reapertura.
4. El espectro de calidad de $h$
La calidad de la heurística determina directamente cuántos nodos expande A*:
Calidad de h(n) Comportamiento de A*
─────────────────────────────────────────────────────────────────
h(n) = 0 para todo n → Dijkstra puro: expande en todas
direcciones, O(b^d) nodos
h(n) = buena estimación → A* enfocado: mucho menos que O(b^d),
admisible y consistente solo las "zonas prometedoras"
h(n) = h*(n) exacta → A* perfecto: expande solo los nodos
(imposible en práctica) del camino óptimo, O(d) nodos
h(n) > h*(n) en algún n → A* inadmisible: rápido pero puede
(sobreestima) devolver solución subóptima

El problema: S y G están en la misma columna con una pared horizontal entre ellos. $h_{\text{Manhattan}}(S, G) = 17$, pero el camino real requiere rodear la pared: $h^{∗}(S) = 35$ (más del doble). Cuatro heurísticas, misma solución óptima:
| Heurística | Nodos expandidos | Forma visible |
|---|---|---|
| $h = 0$ (Dijkstra) | 452 | Inundación rectangular — sin dirección |
| $h = \frac{h_M}{2}$ (débil) | 435 | Cruz ancha — ligero sesgo hacia abajo |
| $h = h_M$ (Manhattan) | 284 | Columna hacia abajo + cruz en la pared |
| $h = h^{∗}$ (exacta) | 171 | Corredor en L — izquierda, abajo, derecha |
La clave: Manhattan dice «baja recto 17 pasos» pero la pared lo obliga a desviarse. A* con Manhattan sigue esa intuición equivocada hasta chocar. A* con $h^{∗}$ sabe desde el primer paso que debe ir izquierda.
5. Tres heurísticas concretas para estudiar
Distancia Manhattan (cuadrícula 4-conexa)
$$h(n) = |r_n - r_G| + |c_n - c_G|$$
- Admisible: cada paso cambia una coordenada en ±1, así que el número mínimo de pasos es la suma de diferencias absolutas.
- Consistente: la desigualdad triangular se cumple por la propiedad de los valores absolutos.
- Uso: laberintos, mapas de cuadrícula, puzzles de deslizamiento.
Distancia Euclidiana (mapa 2D)
$$h(n) = \sqrt{(x_n - x_G)^2 + (y_n - y_G)^2}$$
- Admisible: la línea recta es siempre el camino más corto posible.
- Consistente: se hereda de la desigualdad triangular geométrica.
- Uso: navegación en mapas, robótica, GPS.
Fichas fuera de lugar (puzzle de 8 piezas)
$$h(n) = \text{número de fichas que no están en su posición final}$$
- Admisible: cada ficha descolocada requiere al menos un movimiento.
- Consistente: mover una ficha cambia el recuento en a lo sumo ±1 = costo del movimiento.
- Uso: benchmark clásico de A*. Dominada por Manhattan (ver capítulo 06).
6. Recordatorio: la notación de complejidad
Como en el módulo anterior, usamos:
| Símbolo | Significado | Nota |
|---|---|---|
| $b$ | Factor de ramificación máximo | Peor caso; en grafos uniformes = promedio |
| $d$ | Profundidad de la solución óptima | Número de aristas en el camino mínimo |
| $m$ | Profundidad máxima del grafo | Puede ser $\gg d$ |
Para A* añadimos:
- $b^{∗}$ — factor de ramificación efectivo: si A* expande $N$ nodos encontrando solución a profundidad $d$, entonces $b^{∗} \approx N^{1/d}$. Un buen indicador de la calidad de $h$: $b^{∗} = 1$ es perfecto, $b^{∗} = b$ es Dijkstra.
Siguiente: Greedy best-first →