Matemática Discreta Práctica 5 de laboratorio noviembre de 2010 1. Algortimo de Dijkstra Se pide programar, tanto en C como en Haskell, el algoritmo del camino más corto sobre grafos dirigidos Se cuenta con el material disponible en la página del curso. También estarán disponibles archivos para el programa C, los cuales ejemplifican el formato de la entrada que debe aceptar el programa y la salida que debe producir. 2. Árboles recubridores minimales Al igual que para el algoritmo de Dijkstra, el material necesario para resolver estos problemas estarán disponible en el sitio del curso. Para el algortimo de Prim, se pide implementar la solución tanto en C como en Haskell. 3. Formato de entrada y salida para C Junto a los programas fuente, se encuentran dos ejemplos de la entrada que debe aceptar el programa y la salida que debe producir para esa entrada. En esta sección se describe brevemente qué representan los datos que éstos archivos contienen. Los programas deben aceptar datos de entrada estándar y escribir los resultados en la salida estándar. 3.1. Algortimo de Dijkstra Los datos de entrada son: Un número n que representa la cantidad de vértices en el grafo n lı́neas con n enteros cada una, que representan la matriz de adyacencia del grafo, donde la entrada i, j de la matriz indica el peso de la arista (i, j). Si una arista no pertenece al grafo, su peso es 0. Puede asumirse que la matriz tiene diagonal nula. Un número entero m, que indica la cantidad de casos con los que se probará el programa 1 m lı́neas con una par de números a, z, tales que 1 ≤ a, z ≤ n. Para cada uno de los m casos de prueba, debe calcularse el costo del camino más corto de a a z, y el camino que debe recorrerse para obtener dicho costo. 3.2. Algoritmo de Prim La entrada se compone de: Dos números enteros n y m, que indican la cantidad de vértices y aristas del grafo. m lı́neas con tres números u, v, p cada una, tales que 1 ≤ u, v ≤ n. Esta terna de números indica que el grafo tiene una arista (no dirigida) de u a v con peso p. La salida debe mostrar el peso del árbol mı́nimo, y cada una de las aristas que forman parte de él.