algoritmos voraces

12
Trabajo N° 5 Algoritmos Voraces Los algoritmos voraces, ávidos o de avance rápido se utilizan normalmente en problemas de optimización. 1. Maricielo Nestares Flores 2. Luis Enrique Sigueñas Arango 29/09/2013

Upload: un-tal-luis-enrique-s-a

Post on 06-Nov-2015

6 views

Category:

Documents


0 download

DESCRIPTION

algoritmos

TRANSCRIPT

Trabajo N 5

Trabajo N 5Algoritmos Voraces

Los algoritmos voraces, vidos o de avance rpido se utilizan normalmente en problemas de optimizacin.

Maricielo Nestares FloresLuis Enrique Sigueas Arango29/09/2013

Algoritmo De Kruskal(rbol de expansin mnima)

El algoritmode kruskal es un algoritmo de recubrimiento minimo conexo ponderado, o sea que va unir todos los nodos formando un rbol, tomando la aristas que tengan un peso que siempre sea menor. Este rbol de un grafo es un subgrafo que contiene todos sus vrtices o nodos. Un grafo puede tener mltiples rboles. Por ejemplo, un grafo completo de cuatro nodos (todos relacionadoscon todos) tendra16 rboles.El algoritmo se basa en una propiedad clave de los rboles que permite estar seguros de si un arcodebe pertenecer al rbol o no, y usar esta propiedad paraseleccionar cada arco. Ntese en el algoritmo,que siempre que se aade un arco (u,v), ste ser siempre la conexin ms corta (menor coste)alcanzable desde el nodo u al resto del grafo G. As que por definicin ste deber ser parte del rbol. Este algoritmo es de tipo voraz (tambinllamado greedy)ya que a cada paso, ste selecciona el arco ms barato y lo aade al subgrafo. Este tipo de algoritmos pueden no funcionar para resolver otro tipo de problemas, por ejemplo para encontrar la ruta ms corta entre los nodos a y b.CARACTERSTICAS Algoritmo basado en las aristas Agregar las aristas , uno a la vez, en orden de peso creciente El algoritmo mantiene A un bosque de rboles. Una arista es aceptada si se conecta vrtices de distintos rboles Necesitamos una estructura de datos que mantiene una particin, es decir ,a coleccin de conjuntos disjuntos

CODIGO

#include #include #include #include #include#include#define ii pair

using namespace std;vector pset;vectorgrafo;

void initSet(int size){ int i; pset.resize(size); for(i=0;i