Professional Documents
Culture Documents
[PRCTICAS DE METOLOGA]
En este documento se presentarn las soluciones a los problemas de prcticas de la asignatura de Metodologa de la Programacin, de 2 Curso del Grado de Informtica, en la UCLM.
Metodologa de la Programacin
ndice
A. a) b) c) B. a) b) C. a) b) D. Algoritmos Voraces ............................................................................................................... 2 Descripcin de los algoritmos voraces .............................................................................. 2 Elementos caractersticos ................................................................................................. 2 Esbozo del coste computacional de un algoritmo voraz genrico .................................... 3 Descripcin del problema voraz: Planificacin de Rutas ...................................................... 4 Identificando los elementos caractersticos...................................................................... 4 Justificando por qu el problema es resoluble mediante Dijkstra.................................... 4 Definir un esbozo del algoritmo en pseudocdigo, indicando su orden de complejidad..... 5 Esbozo del algoritmo en pseudocdigo ............................................................................ 5 Coste computacional ......................................................................................................... 5 Bibliografa ............................................................................................................................ 6
~1~
Metodologa de la Programacin
A. Algoritmos Voraces
a) Descripcin de los algoritmos voraces
Los algoritmos voraces son aquellos que tratan de resolver un problema eligiendo ciertos elementos de una lista de candidatos que cumplan las restricciones dadas por dicho problema. A este subconjunto de elementos se le llama solucin factible. Esta metodologa de resolucin de problemas suele pretender maximizar o minimizar cierta funcin que resuelve el problema unvocamente. Estos algoritmos suelen utilizarse para resolver problemas de optimizacin que no requieran conocer las circunstancias del programa en el futuro para resolverlo. Adems, la metodologa de estos algoritmos es clara: Recorre la lista de elementos segn una ordenacin determinada y decide si ese elemento es vlido para la solucin del problema o no. Despus de tomar esa decisin, el algoritmo nunca va a volver a preguntarse por ese elemento, de ah que se defina como algoritmo voraz, ya que nunca se pregunta por el estado del programa en un futuro, toma su decisin con los datos que tiene hasta ese momento determinado y esa decisin es definitiva. Existe un tipo de algoritmo que podramos denominar pseudovoraz, denominado algoritmo semivoraz, que consiste en la misma metodologa que un algoritmo propiamente voraz, salvo en un aspecto: El programa decide si un elemento en cuestin es vlido o no, y si as lo fuera, es posible que, tras continuar con el anlisis del resto de elementos, decida que un elemento que en un principio decidi que era vlido, en estas nuevas condiciones s lo sea, y lo descarte de la solucin. Sin embargo, si un elemento lo descarta, es descartado definitivamente, al igual que ocurre en un algoritmo voraz. De esta manera, un problema solo podr ser resuelto por voraz si el mtodo escogido para resolverlo no necesita saber el estado del programa en el futuro, para decidir correctamente si el elemento que est siendo discutido en ese momento forma parte de la solucin final o no.
b) Elementos caractersticos
Los algoritmos voraces constan de cinco elementos clave que deben determinarse correctamente para resolver con xito el problema planteado: I. II. Conjunto de elementos candidatos: Son los elementos del problema sobre los que se puede decidir si forman parte de la solucin o no. Ordenacin: Es el orden de partida de los elementos candidatos. Las distintas ordenaciones pueden suponer que el algoritmo pueda o no resolverse de manera voraz.
~2~
Metodologa de la Programacin
III.
IV.
V.
Seleccin: Este elemento indica cmo deben ordenarse los elementos despus de cada decisin sobre un elemento cualquiera. Es un elemento opcional, que no es necesario implementar para la totalidad de los algoritmos voraces. Funcin de factibilidad: Es la secuencia de acciones que debe seguir el algoritmo para resolver los distintos casos que se pueden presentar al analizar cualquier elemento de los candidatos. Debe barajar y solucionar correctamente todas las opciones posibles y es el elemento que decide qu candidato formara parte de la solucin y cual no. Adems, debe actualizar los campos necesarios antes de realizar la siguiente extraccin de un candidato, pudindose valer para ello de la seleccin. La funcin de factibilidad puede contener la solucin, que se comenta a continuacin. Solucin: Es el ltimo elemento y el que indica en qu momento ha terminado de ejecutarse el algoritmo, bien porque ya no quedan ms elementos que analizar, o bien porque se ha llegado a una situacin en la que no es necesario analizar ninguno ms, ya que se ha conseguido llegar a la solucin final.
~3~
Metodologa de la Programacin
C1 C2 C3 C4
III. IV. V.
~4~
Metodologa de la Programacin
b) Coste computacional
Se supone que las operaciones sobre matrices estn implementadas en tiempo constante, excepto la creacin (p.ej., mediante un vector de 0s) Inicializacin: i. creacin de la matriz y ejecucin n veces de diversas operaciones constantes: (n)
Mientras: ii. iii. las instrucciones del interior del bucle son (1) n de ejecuciones del bucle: i. 1 vuelta: se consultan n-1 vrtices, ii. 2 vuelta: n-2, etc. iii. N DE EJECUCIONES TOTAL: n(n-1)/2-1 (n2)
~5~
Metodologa de la Programacin
D. Bibliografa
Abad Soriano, M. T. (2007/2008). Algoritmos Voraces. Campos, J. Esquemas algortmicos - Algoritmos Voraces. Ponce Galindo, J. (s.f.). Caminos ms cortos a partir de mltiples fuentes en un grafo. Valderruten, A. (s.f.). Algoritmos: Algoritmos Voraces. A Corua.
~6~