Documente Academic
Documente Profesional
Documente Cultură
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.
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}
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}
103(s+m)+102(e+o)+10(n+r)+d+e=104m+103o+102n+10e+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}.
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.