Sunteți pe pagina 1din 6

Aproximaciones y Restricciones

Problemas de Satisfacción de Restricciones

En muchas ocasiones la resolución de problemas está sujeta a que las diversas componentes
en las que se pueden descomponer verifiquen ciertos conjuntos de restricciones. Problemas
tan cotidianos como fijar una cita con unos amigos, comprar un coche o preparar una receta
culinaria pueden depender de muchos aspectos interdependientes, e incluso conflictivos,
sujetos a un conjunto de restricciones que deben ser verificadas para poder encontrar una
solución al problema planteado.

Históricamente, la resolución de problemas de satisfacción de restricciones (PSR, por sus


siglas en español) ha generado una gran expectación entre expertos de muchas áreas debido
a su potencial para la resolución de grandes problemas reales que caen, en muchas ocasiones,
dentro de lo que se conocen como problemas NP (aquellos que presentan una complejidad
computacional superior para su resolución). Los primeros trabajos relacionados con la
programación de restricciones datan de los años 60 y 70 en el campo de la Inteligencia
Artificial.

La idea de las técnicas de PSR es resolver problemas mediante la declaración de restricciones


sobre el área del problema (el espacio de posibles soluciones) y consecuentemente encontrar
soluciones que satisfagan todas las restricciones. A veces, se buscan soluciones que, además,
optimicen algunos criterios determinados.
La resolución de problemas con restricciones puede dividirse en dos ramas claramente
diferenciadas: la satisfacción de restricciones y la resolución de restricciones. Ambas
comparten la misma terminología pero sus orígenes y técnicas de resolución son diferentes:
la satisfacción de restricciones trata con problemas con dominios finitos, mientras que la
resolución de restricciones está orientada principalmente a problemas sobre dominios
infinitos o dominios más complejos.

Aquí nos centraremos principalmente en los problemas de satisfacción de restricciones, que


básicamente consisten en un conjunto finito de variables, un dominio de valores finito para
cada variable y un conjunto de restricciones que acotan las posibles combinaciones de valores
que estas variables pueden tomar en su dominio.

Ejemplo. El problema de coloración de mapas es un problema clásico que se puede


formular como un PSR. En este problema hay un conjunto de colores y un mapa dividido en
regiones. El objetivo es colorear cada región del mapa de manera que regiones adyacentes
tengan distintos colores. Una forma de modelar este problema dentro del PSR sería asociando
una variable por cada región del mapa (el dominio de cada variable es el conjunto de posibles
colores disponibles), y para cada par de regiones contiguas añadir una restricción sobre los
valores de las variables correspondientes que impida asignarles el mismo valor (color). Como
suele ser habitual, este mapa puede ser representado mediante un grafo donde los nodos
representan las diversas regiones del mapa y cada par de regiones adyacentes están unidas
por una arista. Veremos que esta representación en forma de grafo, que en este problema es
natural, será usada como metodología general para dar una estructura a las restricciones de
cualquier problema PSR.
Resolución del PSR

La resolución de un PSR consta de dos fases, que son:

1. Modelar el problema como un problema de satisfacción de restricciones. Para


ello, y siguiendo una metodología similar al ejemplo anterior, el problema se expresa
mediante un conjunto de variables, dominios en los que toman los posibles valores, y
restricciones sobre estas variables.
2. Procesar las restricciones. Una vez formulado el problema como un PSR, hay dos
maneras de procesar las restricciones:
o Técnicas de consistencia: basadas en la eliminación de valores inconsistentes
de los dominios de las variables (es decir, que no verifican las restricciones
impuestas). A veces se pueden aplicar aquí técnicas derivadas de la Lógica
Proposicional (o de primer orden).
o Algoritmos de búsqueda: se basan en la exploración sistemática del espacio
de soluciones hasta encontrar una solución (o probar que no existe tal solución
en caso contrario) que verifica todas las restricciones del problema.

Lo más normal es que se combinen ambas aproximaciones, ya que las técnicas de


consistencia permiten deducir información del problema, y reducen el espacio de soluciones
que podemos explorar usando algoritmos de búsqueda más o menos tradicionales.

Modelización del PSR

Como hemos señalado anteriormente, una parte muy importante para la resolución de
problemas por medio de las técnicas que aquí vamos a ver es el modelado del problema en
términos de variables, dominios y restricciones.

Como intentar dar una formalización completa de este proceso puede ser un poco engorroso,
y sin embargo es bastante natural el proceso que se lleva a cabo, vamos a presentar esta etapa
de modelado por medio de un ejemplo en el que se mostrarán diversas modelizaciones de un
mismo problema y se pondrán de manifiesto las ventajas de una modelización adecuada para
resolverlo.
Consideremos el conocido problema criptoaritmético ’send+more=money’ utilizado en
[21]. Este problema puede ser declarado como: asignar a cada letra {s,e,n,d,m,o,r,y}

un dígito diferente del conjunto {0,...,9} de forma que se satisfaga la expresión


send+more=money.

La manera más directa de modelar este problema es asignando una variable a cada una de las
letras (que vendrán representadas por las mismas letras), todas ellas tomando valores en el
dominio {0,...,9}

y con las restricciones de:

1. Todas las variables toman valores distintos, y


2. Se satisface send+more=money

De esta forma, podemos escribir las restricciones como:

103(s+m)+102(e+o)+10(n+r)+d+e=104m+103o+102n+10e+y

s≠e, s≠n, ..., r≠y

Esta representación del problema es correcta, pero no es muy útil, ya que la primera de las
restricciones exige manipular todas las variables simultáneamente y no facilita recorrer el
espacio combinatorio de valores de una forma cómoda (ten en cuenta siempre que,
finalmente, vamos a recorrer este espacio de combinaciones de valores como un espacio de
estados). Por lo que, al no disponer de restricciones locales entre las variables, no podemos
podar el espacio de búsqueda para agilizar la búsqueda de soluciones.

Vamos a dar otro modelado similar pero más eficiente para resolver el problema, que consiste
en descomponer esta restricción global en restricciones más pequeñas haciendo uso de las
relaciones que se producen entre los dígitos que ocupan la misma posición en una suma. Para
ello, introducimos los dígitos de acarreo para descomponer la ecuación anterior en una
colección de pequeñas restricciones.

Tal y como está planteado el problema, m debe de tomar el valor 1 (ya que es el acarreo de 2
cifras que como mucho pueden sumar 18, más un posible acarreo previo de una unidad, lo
que limita el resultado a 19) y por lo tanto s solamente puede tomar valores de {1,...,9} (si
s=0 entonces no podría haber acarreo). Además de las variables del modelo anterior, el nuevo
modelo incluye tres variables adicionales, c1, c2, c3 que sirven como dígitos de acarreo.
Aunque introducimos nuevas variables, por lo que el espacio de búsqueda se amplia, éstas
nos permitirán simplificar las restricciones y facilitar su exploración de forma considerable.
En consecuencia, el dominio de s es {1,...,9}, el dominio de m es {1}, el dominio de los
dígitos de acarreo es {0,1}, y el dominio del resto de variables es {0,...,9}.

Con la ayuda de los dígitos de acarreo la restricción de la ecuación anterior puede


descomponerse en varias restricciones más pequeñas (junto con las restricciones que indican
que todas las variables originales son distintas entre sí):

e+d=y+10c1
c1+n+r=e+10c2
c2+e+o=n+10c3
c3+s+m=10m+o

Esta nueva representación presenta la ventaja de que las restricciones más pequeñas pueden
comprobarse durante la búsqueda de una forma más sencilla y local, permitiendo podar más
inconsistencias y consecuentemente reduciendo el tamaño del espacio de búsqueda efectivo.

S-ar putea să vă placă și