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.