ANÁLISIS Y DISEÑO DE ALGORITMOS II

Anuncio
ANÁLISIS Y DISEÑO DE ALGORITMOS II
PRÁCTICO Nº 4 – PROBLEMAS NP-COMPLETOS
1. Un coloreo de un grafo G=(V,A) es una transformación C: V → S donde S es un conjunto
finito de colores tal que si (v,w) pertenece a A, luego: C(v) != C(w). Es decir, vértices
adyacentes no pueden tener el mismo color. El número cromático de G (X(G)) es el número
más bajo de colores necesarios para colorear G. Escriba un algoritmo que encuentre X(G).
2. Dado un conjunto C ={1,2,...,n} de n objetos de tamaños s1,s2,...,sn y una mochila de capacidad
M donde s1, s2, ..., sn y M son enteros positivos, encontrar un subconjunto T perteneciente a C
tal que maximice la sumatoria Si sujeto al siguiente requerimiento: Si <= M. Escriba un
algoritmo que resuelva este problema.
3. Supongamos tener n tareas a ser ejecutadas una por vez. Cada tarea j i tiene un tiempo de
ejecución ti, un plazo de espera di medido desde el comienzo de la ejecución, una penalidad pi
por exceder el plazo de espera. Un orden específico de tareas es una permutación s de
{1,2,...,n} donde js1 es la primera tarea ejecutada, j s2 la siguiente, etc. La penalidad total para
un ordenamiento particular es:
n
P s =  [if (tjs1 + ....+ tjsi ) > djsi then pjsi else 0]
i=1
Se requiere encontrar un ordenamiento tal que minimice la penalidad total. Escriba un
algoritmo que resuelva este problema.
4. Un viajante de comercio debe visitar una serie de ciudades. Cada ciudad está conectada con las
restantes mediante rutas de longitud conocida. El problema consiste en hallar la ruta que deberá
tomar para visitar todas las ciudades retornando a la ciudad de partida. Escriba un algoritmo
por búsqueda local que resuelva este problema.
5. Un conjunto de programas deben ser agregados a un backup, los discos tienen todos la misma
capacidad (además están vacíos). El problema consiste en determinar la mínima cantidad de
diskettes necesarios para realizar los backups.
6. Problema de la suma de subconjuntos: Dado un conjunto de enteros positivos {x1, x2,... xn}, se
desea encontrar un subconjunto del mismo cuya suma sea un cierto t entero positivo. Resuelva
el problema con un esquema de aproximación.
7. Se tienen m procesadores idénticos y n tareas a ser ejecutadas en algún procesador. Se conoce
el tiempo de ejecución de cada tarea. Se requiere encontrar una asignación de tareas a
procesadores de manera de minimizar el tiempo de ejecución del total de tareas.
8. Supongamos tener M llaves y N cerraduras. Cada llave abre una o más cerraduras. Implemente
un algoritmo para encontrar un conjunto mínimo de llaves que abran todas las cerraduras.
9. El vertex-cover de un grafo no orientado G = (V, A) es un subconjunto V’  V tal que,
 (u, v)  A entonces u  V’ o v  V’ (o ambos). El tamaño del vertex-cover es el número
de vértices. Implemente un algoritmo para encontrar el vertex-cover de mínimo tamaño.
Descargar