GUIA Nº6 GRAFOS Y ALGORITMOS ALEATORIOS

Anuncio
Universidad del Bío-Bío
Análisis y Diseño de Algoritmos
Profesor: Claudio Gutiérrez-Soto
GUIA GRAFOS Y ALGORITMOS ALEATORIOS
1.- Dado un dígrafo G=(V,E). Diseñe un algoritmo de que determine si existe un camino
entre u,v, donde u,v ∈ V. Suponga que no existen ciclos. Calcule el orden de su
algoritmo.
2.- Realice el ejercicio anterior, considerando que existen ciclos.
3.- Dados dos grafos dirigidos G=(V,E) y G’=(V’,E’). Dichos grafos están
implementados por una lista de adyacencia. Diseñe un algoritmo que determine si
ambos grafos son iguales, los vértices no están etiquetados. Determine el orden de su
algoritmo. ¿Es posible hacerlo mas eficiente?.
4.-El transpuesto de un dígrafo G=(V,E) es una dígrafo GT=(V,ET), donde ET={(u,v) ∈
VxV/ (v,u) ∈ E}. Es decir, GT es G con todos los arcos invertidos. Describa y analice
algoritmos para transponer un grafo usando matriz de adyacencia y lista de adyacencia.
5.- Un grafo G es euleriano si hay un camino cerrado que pasa exactamente una vez por
cada arista. Si el grafo G contiene un vértice con grado impar, G no puede ser euleriano.
Si todo vértice tiene grado par y G es conexo, entonces G es euleriano. Diseñe un
algoritmo para determinar si un grafo G no dirigido es euleriano.
6.-El diámetro de un grafo esta dado por el camino mas largo entre 2 nodos. Diseñe un
algoritmo para encontrar el diámetro del árbol. Indique su orden.
7.- Sea G=(V,E) un grafo donde los nodos son computadores y las aristas conexiones.
Cada conexión tiene capacidad (ancho de banda), indicando el número de bits por
segundo que pueden transmitir. Si se establece una conexión de un nodo a otro para
enviar video, el ancho de banda total será el de la conexión más lenta del camino.
Diseñe un algoritmo eficiente (polinomial) que encuentre la conexión + rápida entre dos
nodos u,v.
8.- Se tienen dos matrices A, B de NxN. Se desea chequear si A*B=C.
Deterministicamente esto toma tiempo O(n3) usando un algoritmo estándar. Cree un
algoritmo aleatorio que permita reducir el tiempo de ejecución. Su algoritmo es tipo las
Vegas o Montecarlo.
9.- Se sabe que el orden del peor caso del algoritmo Quicksort es O(n2). Cree un
algoritmo probabilístico que evitar el peor caso. Según lo visto en clase, ¿de qué tipo de
algoritmo se trata?. ¿Hablamos ahora de tiempo promedio?.
10.- Considere el siguiente algoritmo.
Misterio(A,n) // A es un arreglo de n enteros
{ i=random(1..n);
x=A[i]; k=0;
for(i=1;i<=n;i++) if(A[i]==x) k++;
return(k>n/2);
Universidad del Bío-Bío
Análisis y Diseño de Algoritmos
Profesor: Claudio Gutiérrez-Soto
}
(a)¿Qué hace este algoritmo?¿Este algoritmo es de tipo las Vegas o Montecarlo?
(b)¿La respuesta es siempre correcta?. Si no lo es indique una cota superior de la
probabilidad de una respuesta incorrecta.
(c) Usando este algoritmo, escriba un algoritmo que siempre de una respuesta correcta
con alta probabilidad (1- ∈) cuando termina.
11.- Suponga que tiene una algoritmo aleatorio A que tarda siempre un tiempo 4T(n) y
da una respuesta incorrecta con probabilidad 1/8; y un algoritmo aleatorio B que toma
tiempo promedio T(n), pero en el peor caso no tiene tiempo acotado, pero siempre da
una respuesta correcta.
Use B para encontrar un algoritmo más rápido que A en el peor caso, con la misma o
mejor probabilidad de fracaso.
Descargar