Está en la página 1de 9

Desarrollo

El trmino voraz se deriva de la forma en que los datos de entrada se van tratando, realizando la eleccin de desechar o seleccionar un determinado elemento una sola vez. Al contrario que con otros mtodos algortmicos, no siempre es posible dar una solucin a un problema empleando un algoritmo voraz. No todos los problemas son resolubles con algoritmos voraces, en estos casos se determina que el problema a solucionar, est fuera del alcance del algoritmo y se tendrn que emplear otros mtodos.

Los algoritmos voraces se aplican normalmente a problemas de optimizacin, en la bsqueda del valor ptimo (mximo o mnimo) de una cierta funcin, la cual es el objetivo a conseguir.

En estos algoritmos las soluciones se pueden representar como una secuencia de decisiones, las cuales se realizarn de forma irreversible. Con respecto al alcance de este tipo de algoritmos, una aproximacin voraz consiste en que cada elemento a considerar se evala una nica vez, siendo descartado o seleccionado, de tal forma que si es seleccionado forma parte de la solucin, y si es descartado, no forma parte de la solucin ni volver a ser considerado para la misma.

Joseph B. Kruskal investigador del Math Center(Bell-Labs), que en 1956 descubri su algoritmo para la resolucin del problema del rbol de coste total mnimo (minimum spanning tree - MST) Tambin llamado rbol recubridor eucldeo mnimo. Este problema es un problema tpico de optimizacin combinatoria, que fue considerado originalmente por Otakar Boruvka (1926) mientras estudiaba la necesidad de electrificacin rural en el sur de Moravia en Checoslovaquia. El objetivo del algoritmo de Kruskal es construir un rbol formado por arcos sucesivamente seleccionados de mnimo peso a partir de un grafo con pesos en los arcos. Un rbol de un grafo es un subgrafo que contiene todos sus vrtices o nodos. Un grafo puede tener mltiples rboles.

Durante su carrera en los laboratorios Bell, Robert Prim junto a su compaero Joseph Kruskal desarroll dos algoritmos diferentes para encontrar los rboles abarcadores mnimos en un grafo ponderado. El algoritmo que lleva su nombre fue originalmente descubierto por el matemtico Vojtech Jarnik y ms tarde e independientemente por Prim en 1957. Dos aos ms tarde fue redescubierto por Edsger Dijkstra. La idea bsica consiste en elegir sucesivamente las aristas de mnimo peso sin formar ciclos. Por ej: * Se elige la arista de mnimo peso e y se considera S={e}. * . Sea e la arista de mnimo peso tal que eS y S+e' es un grafo acclico. Se hace S=S+e'. * Si S tiene n-1 aristas, el algoritmo termina. En caso contrario se vuelve al paso anterior.

Demostracin de la validez del algoritmo En primer lugar se observa que el algoritmo construye un rbol generador. Sea T el rbol construido por el algoritmo de Kruskal y supongamos que no es de peso mnimo. Sea S un rbol generador mnimo que contenga el mayor segmento inicial de la lista de aristas elegidas para T. Llamamos e a la primera arista elegida para T que no est en S. Aadiendo la arista e a S se crea un ciclo C. Este ciclo debe contener una arista e* que no es de T, pues T no contiene ningn ciclo. Consideramos el grafo S* = S + e - e*. Este grafo es un rbol generador. Adems cuando el algoritmo elige la arista e, tanto e como e* estn disponibles luego w(e) w(e*). Por tanto S* es un rbol generador con w(S*) w(S), es decir, es un rbol generador mnimo y contiene una arista ms de T que el rbol S (la arista e), en contradiccin con la eleccin de S.

Anlisis de la complejidad El coste del primer paso, ordenacin de las aristas segn su peso, es O(qlogq), es decir, O(qlogn). En el segundo paso se debe detectar si la arista elegida forma un ciclo con las

previamente elegidas. Cmo? Basta tener marcada la componente conexa a que pertenece cada vrtice (inicialmente habr n componentes, una por vrtice). Si se elige una arista con extremos de la misma etiqueta se est formando un ciclo y si tienen distinta etiqueta no hay ciclo y la eleccin es correcta. En este caso se deben actualizar las etiquetas para mantener siempre una por cada componente conexa. El coste total de este paso es O(q) por la comprobacin de la correccin ms O(n2) por las actualizaciones, pues en el peor caso en cada uno de los n pasos se deben actualizar las etiquetas de los n vrtices. La complejidad total del algoritmo de Kruskal es por tanto O(n2+qlogn)

Funcionamiento:

Se parte colocando todos los vrtices del grafo separados, y se decide partir por un vrtice de "Inicio".

Dado el vrtice actual (en el comienzo es el de inicio), armamos una lista de todas las aristas que posee, ordenadas en forma decreciente segn su ponderacin (costo de la arista).

Tomamos la de menor coste, retiramos de la lista de candidatos a la arista utilizada y agregamos las nuevas aristas que nos proporciona el nuevo vrtice.

As sucesivamente, generando subgrafos conexos hasta llegar a conectar todos los subgrafos conexos formando un rbol de cubrimiento de costo mnimo.

Diagrama

Este es el grafo original. Los nmeros de las aristas indican su peso. Ninguna de las aristas est resaltada.

AD y CE son las aristas ms cortas, con peso 5, y AD se ha elegido arbitrariamente, por tanto se resalta.

Sin embargo, ahora es CE la arista ms pequea que no forma ciclos, con peso 5, por lo que se resalta como segunda arista.

La siguiente arista, DF con peso 6, ha sido resaltada utilizando el mismo mtodo.

La siguientes aristas ms pequeas son AB y BE, ambas con peso 7. AB se elige arbitrariamente, y se resalta. La arista BD se resalta en rojo, porque formara un ciclo ABD si se hubiera elegido.

El proceso contina marcando las aristas, BE con peso 7. Muchas otras aristas se marcan en rojo en este paso: BC (formara el ciclo BCE), DE (formara el ciclo DEBA), y FE (formara el ciclo FEBAD).

Finalmente, el proceso termina con la arista EG de peso 9, y se ha encontrado el rbol expandido mnimo.

Ejemplo 2:

Observar que en el penltimo paso se analiza una arista con peso 2 que une dos nodos del mismo subrbol, y por tanto no se utiliza para formar el rbol abarcador mnimo final.

Existen diferentes formas de implementar este pseudocdigo, cada una de ellas con distintos rendimientos, que principalmente dependen de cmo se realice el manejo de los subrboles (paso 3) y de la bsqueda de la arista de menor peso an no procesada (paso 2). En esta prctica resolveremos el primero de estos puntos usando el TAD conjunto disjunto desarrollado, y para el segundo el TAD cola de prioridad ya implementado en los ficheros cp.c y cp.h.

Manejo de los subrboles (paso 3) : conjunto disjunto


o

Crear un conjunto disjunto del tamao del nmero de nodos del grafo (paso 1).

Ir realizando las uniones entre conjuntos cuando se quiere unir dos subrboles del grafo (paso 3).

Tened en cuenta que el conjunto disjunto no representa el rbol abarcador mnimo que se est construyendo, sino slo la forma en la que estn distribuidos los nodos en subrboles.

Bsqueda de la arista de menor peso an no utilizada (paso 2): cola de prioridad

o o

Introducir todas las aristas junto con sus pesos al inicio del algoritmo. Obtener la arista de menor peso --> extraer un elemento de la cola de prioridad.

estadsticas Ejemplo: Curva crecimiento bacteriano en funcin de absorbancia vs. Horas

Estadsticas 2

Las caractersticas de la poblacin estudiada se presentan en la tabla 1. Los valores medios de PCR en mujeres (0,24 0,36 mg/dl) fueron ms elevados que los observados en los varones (0,12 0,18 mg/ dl), pero sin significacin estadstica (p > 0,05) debido a la variabilidad de los valores. El anlisis de cuantificacin PCR en el suero, cuando se lo estratific por las diferentes presentaciones clnicas de la EC, mostr que los grupos de CG y CNC tienen valores significativamente ms altos de PCR que otros grupos (p < 0,05). A partir de este dato, fue posible verificar la tendencia al aumento de PCR a medida que la EC empeora, y en las dos cardiopatas ms intensas (CG y CNC) el PCR alcanz cifras ms altas que en los grupos CT, IND y CL (fig. 1). Se obtuvieron estos mismos resultados tambin al estratificar el grupo por sexos (prueba de Mann-Whitney).

Fig. 1. Anlisis cuantitativo de PCR (media y desviacin estndar), estratificado por sexo y patrn clnico de enfermedad de Chagas. Se registraron valores medios de PCR superiores (prueba de Kruskal-Wallis, p < 0,001) en los grupos de CG y CNC que en los grupos CT, IND y CL. CG: cardiopata grave; CL: cardiopata leve; CNC: cardiopata no chagsica; CT: control; IND: indeterminado; PCR: protena C reactiva. La PCR present valores promedio superiores (prueba de Kruskal-Wallis, p < 0,001) entre los grupos CG y CNC en comparacin con los grupos CT, IND y CL, incluso estratificando la muestra por edades (< 40 y 40 aos). El coeficiente de correlacin de Spearman no demostr correlacin de la PCR con los distintos grupos de la EC cardiaca. El anlisis de covarianza (ANCOVA) se llev a cabo comparando las variables en grupos ajustados por sexo y edad (variables categricas), y los valores de PCR fueron ms altos entre los grupos de CG y CNC que en los de CT, IND y CL (p < 0,001). No hubo diferencias en los valores de PCR entre los pacientes con CNC y con CG (tabla 2).

OBJETIVO GENERAL Dar a conocer el funcionamiento del algoritmo de Kruskal.

Objetivos especficos Mencionar puntos relevantes de la historia del algoritmo de Kruskal.

También podría gustarte