Algoritmo AC-3
Idea esencial
AC-3 mantiene una cola de arcos pendientes. Revisa cada arco, elimina valores sin soporte y vuelve a revisar únicamente los arcos que podrían haberse vuelto inconsistentes a causa de esa eliminación.
Antes de continuar
Conviene dominar primero soporte, dirección y consistencia de un solo arco. AC-3 no introduce una definición nueva de soporte: organiza cuándo repetir esa revisión en toda la red.
¿Por qué no basta una sola pasada?
Supongamos que ya se revisó . Más tarde, otro arco elimina valores de . Algún valor de podría haber perdido precisamente su único soporte, así que el arco anterior debe reconsiderarse. La propagación continúa hasta alcanzar un punto fijo: una pasada completa ya no produciría cambios.
Estructuras que utiliza
- Dominios actuales: se reducen de manera monótona; los valores eliminados no regresan durante una ejecución.
- Cola : contiene arcos cuya consistencia debe comprobarse.
REVISAR(X_i,X_j): elimina de los valores que no tienen soporte en .
Una restricción binaria no dirigida produce dos arcos dirigidos. Inicialmente se insertan ambos en la cola.
Algoritmo paso a paso
- Introducir en todos los arcos dirigidos del CSP.
- Extraer un arco .
- Ejecutar
REVISAR(X_i,X_j). - Si quedó vacío, devolver fallo.
- Si cambió, reinsertar cada arco de los otros vecinos de .
- Repetir hasta vaciar la cola.
AC-3(csp):
Q ← todos los arcos dirigidos del csp
mientras Q no esté vacía:
(Xi, Xj) ← extraer(Q)
si REVISAR(Xi, Xj):
si D(Xi) = ∅:
devolver fallo
para cada Xk vecino de Xi, Xk ≠ Xj:
añadir (Xk, Xi) a Q
devolver dominios consistentes por arcosPor qué se reinsertan arcos hacia
REVISAR(X_i,X_j) solo puede reducir . Ese cambio no perjudica a : los valores eliminados de eran precisamente los que no encontraban apoyo en . En cambio, sí puede perjudicar a otro vecino , porque alguno de sus valores quizá dependía de un valor de recién eliminado. Por eso se reinsertan los arcos y no todos los arcos de la red.
Ejemplo mínimo
Con , y :
- La cola comienza con .
- Revisar conserva y elimina de .
- Revisar confirma que tiene soporte en .
- La cola queda vacía con y .
Visualización: después, la propagación
Después del ejemplo de dos variables, la visualización añade una tercera: y . Sigue cómo una reducción en obliga a reinsertar y cómo la información se propaga de derecha a izquierda hasta alcanzar dominios unitarios.
Qué observar
No memorices primero el orden exacto de la cola. Identifica la causa: si cambia el dominio situado en la cabeza de un arco ya revisado, algunos valores de su cola pueden haber perdido soporte y ese arco debe comprobarse otra vez.
Visualización aplicada: coloreo de un mapa
Una vez entendido el mecanismo con la cadena de tres variables, este segundo recorrido lo aplica a un subproblema de coloreo. Cada región es una variable, los colores son su dominio y cada arista impone que las dos regiones tengan colores distintos. El ejemplo comienza con SA = azul; al avanzar, AC-3 examina un arco dirigido, elimina colores sin soporte y actualiza la cola cuando una reducción puede afectar a otros vecinos.
Cómo leerla
- Usa Siguiente paso y localiza la flecha naranja: indica el arco que se está revisando.
- Mira primero el dominio de y pregunta qué valores de todavía tienen algún color compatible allí.
- Si desaparece un color de , comprueba qué arcos dirigidos hacia regresan a la cola.
El grafo contiene solo cuatro regiones y un conjunto reducido de adyacencias para aislar la mecánica de AC-3; no pretende reproducir todo el mapa australiano clásico.
Resultados posibles
| Resultado | Interpretación |
|---|---|
| Algún dominio queda vacío | La rama actual es inconsistente; debe fallar o retroceder. |
| Todos los dominios quedan unitarios | La propagación determinó una asignación completa. |
| La cola se vacía y quedan dominios múltiples | El CSP es consistente por arcos, pero todavía puede requerir búsqueda. |
AC-3 conserva el conjunto de soluciones: solo elimina valores que no podrían satisfacer alguna restricción binaria con el dominio actual.
Complejidad
Si es el número de arcos dirigidos y el tamaño máximo de un dominio, una cota clásica es
Cada revisión puede comparar hasta pares de valores y un arco puede volver a la cola un número acotado por las eliminaciones de dominio. Esta es una cota de peor caso; el ahorro real depende de cuánta búsqueda evite la propagación.
Cuándo se ejecuta
- Como preprocesamiento: antes de buscar, para comenzar con dominios reducidos.
- Durante la búsqueda: después de una asignación. En Maintaining Arc Consistency (MAC), se inicia la cola con los arcos que llegan a la variable recién asignada y se propaga desde ahí.
AC-3 suele podar más que forward checking, pero también realiza más trabajo por decisión.
Errores comunes
- Tratar una arista como un solo arco y olvidar revisar la dirección inversa.
- Eliminar un valor porque no coincide con todos los valores vecinos; basta con que tenga un soporte.
- No reinsertar arcos después de reducir un dominio.
- Concluir que «cola vacía» significa «solución encontrada».
- Confundir AC-3, que es un algoritmo, con la propiedad que intenta imponer.
Referencias
- Russell y Norvig, Artificial Intelligence: A Modern Approach, 4.ª ed., sección 5.2.2, pp. 170–171.
- UC Berkeley CS 188, «Filtering», sección 2.3.
- Alan K. Mackworth, «Consistency in Networks of Relations», Artificial Intelligence, 8(1), 1977, pp. 99–118. El artículo introduce AC-3 como la tercera variante de sus algoritmos de consistencia de arcos.
- Diapositivas: problemas de satisfacción de restricciones.