Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCCIÓN
La noción de la NP-completitud está basada en la teoría que identifica problemas que
no tienen algoritmos polinomiales. Existen técnicas para solucionar problemas NP-completos
que se comprometen a que la solución sea óptima, robusta, eficiente y completa, además de
intentar resolver el problema de forma que el tiempo de ejecución resulte ser polinómico en
promedio (no considerando esta situación para la "peor solución").
Los algoritmos branch & bound y los algoritmos backtracking difieren en el orden en
que se exploran los nodos del árbol para encontrar la solución del problema. Ambos métodos
consideran funciones de acotación que permiten realizar una "poda" evitando la generación
innecesaria de nodos.
Las técnicas Branch & bound (ramificación y acotación) son técnicas para enumerar
las posibles soluciones factibles de un problema. Como su propio nombre indica la utilización
de estos métodos consiste en dos procedimientos fundamentales: ramificación y acotación.
La raíz del árbol corresponde al estado inicial del problema, cada rama corresponde a
la decisión concerniente a cada parámetro. Se determinan los colores a utilizar. Inicialmente
se eligen dos vértices adyacentes y se colorean. A partir de ahí se colorean con los diferentes
colores validos, no importando el color que se elige. El color de los dos primeros vértices
corresponde al estado inicial del problema, asociado a la raíz. Se va construyendo el árbol.
Para cada nodo del árbol, se selecciona el próximo vértice a colorear y se añaden uno, dos o
tres hijos de acuerdo con el número de colores que se puedan usar para ese vértice. Cada vez
que se van colorando hay menos flexibilidad con el resto de los vértices. Si siguiendo este
proceso se consigue tener coloreado todo el grafo, se acaba con éxito. Si por el contrario, se
llega a un vértice del grafo que no se puede colorear, se aplica el retroceso sobre el árbol y,
para un nodo se continua explorando los restantes hijos.
Type
Vertice-> 'A'..'Z'
Este método es una variante de las técnicas de retroceso para problemas donde se trata
de encontrar un mínimo (o máximo) de un función objetivo. Para el ejemplo del coloreado
del grafo, seria encontrar el número mínimo de colores requerido para colorear el grafo sin la
restricción de tres colores.
Esta técnica consiste en recorrer el árbol y si se alcanza una hoja que tiene solución
con k colores y al seguir avanzando (mediante la aplicación de varios pasos de retroceso) se
alcanza un nodo que requiere k+1 colores, se puede retroceder y no avanzar por esa rama
pues ya tenemos una solución mejor. Así k sirve de cota inferior de retroceso. Este mismo
proceso se repite en el resto de los nodos del árbol, evitando la exploración de gran parte de
la estructura. Es importante tener un buen método de recorrido para encontrar soluciones
aceptables rápidamente.
ALGORITMOS DE APROXIMACIÓN
Son algoritmos que a pesar de no proporcionan una solución óptima, nos garantizan
una cota en el margen de imprecisión. Sea un problema de optimización F consistente en un
conjunto de instancias y un conjunto de soluciones. Cada instancia I es asociada a un
conjunto F(I) o soluciones factibles, y cada solución s tiene un valor c(s). Se asume que todas
la soluciones son siempre enteros positivos. Para cada I, opt(I) es el óptimo (mínimo o
máximo), valor de s sobre todo s Î F(I). Un algoritmo A es un algoritmo de aproximación de
F si para cada I dada, A devuelve alguna solución factible s Î F(I). Se define
A( I ) c( s)
donde s es la solución devuelta por A con una entrada I. Una forma de medir lo bueno de la
solución es por el ratio de este valor al valor óptimo. Definimos
A( I )
RA( I )
OPT ( I )
OPT ( I )
RA( I )
A( I )
RA( I ) r
Este problema trata de encontrar un conjunto con el número mínimo de vértices tal
que toda arista sea incidente por lo menos a uno de los vértices. Se podrá resolver a través de
otro "aproximado" como es el ajuste maximal del grafo. Consiste en calcular un subconjunto
A de aristas de forma que dos aristas cualesquiera de ese subconjunto no tengan ningún
vértice común y todas las aristas de A-A' compartan algún vértice con alguna arista de A'. El
procedimiento consistirá en ir tomando aristas del grafo, de una en una en cualquier orden, e
ir eliminando las incidentes al conjunto que se está construyendo hasta recubrir todo el grafo.
Para poder aplicar el nuevo problema "aproximado", seria necesario demostrar que el
conjunto de todos los vértices incidentes a las aristas de un ajuste maximal M para un grafo G
es un recubrimiento con no más de dos veces el número de vértices del recubrimiento de
tamaño mínimo. Esto es evidente, ya que por la definición de ajuste maximal, los vértices
inciden a las aristas de M son un recubrimiento de G. También por la propia definición,
ningún vértice perteneciente a M puede recubrir a más de una arista en M. En consecuencia,
por lo menos la mitad de los vértices de M debe pertenecer a un recubrimiento. Como
ejemplo, el grafo de la figura puede servir para mostrar gráficamente la relación entre el
recubrimiento mínimo y el ajuste maximal de un grafo G.
El problema bin packing trata de empaquetar diferentes objetos con tamaño único
usando el mínimo numero de bins posibles. Por ejemplo, nosotros queremos mover el
contenido de una casa usando el mínimo numero de coches y colocando paquetes en el coche
tan densamente como sea posible (o los mismos coches en poco tiempo). Este es un problema
de tres dimensiones, pero nosotros utilizaremos una sola dimensión. Además por simplicidad
el tamaño de los bins tendrá tamaño 1.
Una heurística para este problema es poner x1 en el primer bin, y para cada i, poner xi
en el primer lugar que tiene para ello, o comenzar un nuevo bin si no hay sitio en los bins
usados. Este algoritmo es llamado "first fit". Este algoritmo no es demasiado malo.
El algoritmo first fit requiere al menos 2 OPT bins, donde OPT es el mínimo número
de bins.
First fit no puede dejar dos bins a no ser que no esté medio lleno; por otro lado; el
item en el segundo bin podría ser colocado en el primer bin. Sin embargo, el número de bins
usados no es mas que la suma del tamaño de todos los items (redondeando).El teorema
siguiente da por hecho que el número de bins en la mejor solución no puede ser menos que la
suma de todo el tamaño (en cuyo caso todos los items son perfectamente empacados).
El first fit puede ser mejorado con una simple modificación. El peor caso se produce
cuando aparecen al principio todos los números pequeños entonces, en vez de colocar los
números en los bins en el orden que aparecen, nosotros los ordenamos en orden decreciente,
y entonces usamos first fit. Esta modificación del algoritmo es llamada decreasing first fit.
El algoritmo decreasing first fit requiere al menos 11/9 OPT + 4 bins, donde OPT es
el mínimo número de bins.
Esta constante es también tigh. First fit y decreasing first fit son ambos heurísticas.
Hay otros métodos que nos proporcionan mejores constantes. En muchos casos, el análisis es
complicado.
El algoritmo comienza calculando el mínimo coste de exploración del árbol (el coste
equivale a la distancia), lo que es mas fácil. Para nosotros el coste de el árbol no es mas que
la longitud de el mejor TSP tour. Esto es porque el TSP tour es un ciclo que contiene todos los
vértices; por lo tanto, eliminando cualquier arista del TSP tour hace ello un árbol expandido,
cuyo coste es al menos el mínimo coste de expansión del árbol.
COMPLEJIDAD
a) b)
Figura 5.1: (a) Árbol de expansión. (b) El TSP tour obtenido a partir del árbol comenzando en
el punto central, y yendo primero a la derecha.
Figura 5.2: El camino Euclídeo mínimo y su correspondiente TSP tour. (a) El árbol de
expansión mas el matching. (b) La ruta obtenida a partir del camino Euclídeo.