Você está na página 1de 4

Algoritmo de Kruskal

Anderson Silva, Layo Cardoso, Murilo Ribeiro, Rafael Cristino Instituto de Informtica Universidade Federal de Mato Grosso (UFMT) Rodovia BR-070, Km 5. Barra do Garas - Mato Grosso - Brasil. CEP: 78600-000
{anderson_mt171, layocardoso,murilo_henr ,rafael_cristino }@hotmail.com

Abstract.With studies directed to greedy algorithms in the said area of Algorithm Analysis and Design, there was the purpose of the realization of this work in order to present some basic principles of the Kruskal algorithm, so it becomes clear their importance and how it is used. Resumo.Com os estudos direcionados para algoritmos gulosos na referida matria de Projeto e Anlise de Algoritmo, teve-se o intuito da realizaodeste presente trabalho como objetivo de apresentar alguns princpios bsicos do algoritmo de Kruskal, de modo que fique clara a sua importncia e a forma de como utilizado.

1. Introduo
Neste trabalho foi apresentado um estudo sobre o Algoritmo de Kruskal, destacando-se suas caractersticas principais, funcionamento, tempo de execuo e exemplos. Este algoritmo apareceu pela primeira vez na revista matemtica Proceedingsofthe American MathematicalSociety, publicada pela American MathematicalSociety em 1956, e foi escrito por Joseph Kruskal.

2. Desenvolvimento
O algoritmo de Kruskal um algoritmo relacionado a teoria dos grafos que busca uma rvore geradora mnima para um grafo conexo com pesos. Se o grafo no for conexo, ento ele encontra uma floresta geradora mnima (uma rvore geradora mnima para cada componente conexo do grafo).O problema consiste em achar um subconjunto T de E, tal que T forme uma rvore e a soma dos pesos o menor possvel. O seu funcionamento tem por base a ordenao das arestas por ordem crescente do seu valor. A partir da ordenao, o algoritmo comea a inserir arestas, uma a uma, na rvore de suporte mnima, por ordem crescente do seu valor, e sempre que detecta um ciclo rejeita essa aresta. Quando j no houver mais arestas para a rvore que o algoritmo est construdo, ento a rvore de suporte mnima esta construda.Neste passo encontrado um subconjunto de arestas que forma uma rvore que inclui todos os vrtices, onde o peso total, dado pela soma dos pesos das arestas da rvore, minimizado. O algoritmo de Kruskal guloso. Como o nome sugere, estratgia usada por esse algoritmo consiste na escolha da melhor soluo em determinados instantes. Isto , ele faz uma escolha tima localmente esperando que esta escolha leve a uma soluo tima global. Por vezes conduz a uma soluo tima, mas nem sempre isso ocorre.

2.1 Exemplo:
A
3 6

B
1 7

2 2

D
5

C F
1 2 3

G
9

Peso total das arestas: 48 Ordenaodas arestas do grafo por ordem crescente do seu valor numa pilha.
1

A G C B

C F

H D

D B D C H
6

G E F B G

Segue abai

a rvore geradora m ima aps a execuo do algoritmo:

A
3

E B
2 2

D C F
3 1 2

Sub-rvores: {A, B, C, D, E, F, G, H} Peso total das arestas: 14 2.2 Al i funo Kruskal G = ( ,A): grafo): conjunto de arestas rdenar A pelos valores de peso n := nmero de vrtices em , T := {} Iniciali ar o conjunto de componentes (cada vrtice de G um componente) Enquanto T contm menos de n-1 arestas e A no vazio (u,v) := aresta de menor peso de A A := A - (u,v) comp_u := find(u) comp_v := find(v) Se comp_u comp_v merge(comp_u,comp_v) T := T U {(u,v)} Retornar T

2.3 Anli

do al ori

tempo de execuo do algoritmo depende muito das chamadas das funes merge e find. Existe uma implementao que permite definir essas duas funes de tal maneira que elas sejam na ordem delog n. Supondo isso, podemos analisar o tempo da seguinte maneira:
y

O(a lg a) para ordenar as arestas. Isso equivalente a O(a lg n2), pois n -1 n(n-1)/2. Como lg n2 = 2 lg n, temos O(a log n). O(n) para inicializar o conjunto de componentes.

y y

No pior caso, o nmero de chamada funo find = 2 x nmero de arestas no grafo. Como cada chamada exige um tempo em O(log n), no total teremos um tempos em O((2a log n) Como a n-1, isso equivalente a O(a log n). O nmero de chamadas da funo merge exatamente n-1. Portanto o tempo total (n-1) log n. O(a) para o resto das operaes.

A partir dessa anlise, podemos concluir que o algoritmo em O(a lg n).

3. Concl

Com o desenvolvimento deste trabalho chegamos ao entendimento das caractersticas principais do algoritmo de Kruskal. O mesmo muito utilizado para a busca de uma rvore geradora mnima de um grafo com pesos.Ele se trata de um algoritmo classificado como guloso. Notamos que o tempo de execuo do algoritmo depende muito da implementao da estrutura de dados disjuntos. as em sua maioria com o uso M de uma estrutura de dados aceitvel, o algoritmo de Kruskal pode ser demonstrado que executa em tempo O (a log n), onde a o nmero de arestas e n o nmero de vrtices . Podetambm ocorrer algumas variaesno tempo de execuo, aomudar as funes de busca e ordenao. Contudo com o assunto abordado tornou possvel o melhor -se entendimento do funcionamento deste algoritmo.

4. Referncias
CORMEN, Thomas H. LEISERSON, Charles E. RIVEST, Ronald L., STEIN, Clifford. Traduo SOUSA, Vandenberg D. Algoritimos, Teoria e Pratica, 2 edio 6 tiragem, editor Campus e Elsevier, Rio de Janeiro RJ Brasil ano 2002. FEOFILOFF, Paulo, Algoritmos para Grafos, Algoritmo de Kruskal. Disponvel em: > Ultimo <http://www.ime.usp.br/~pf/algoritmos_para_grafos/aulas/kruskal.html acesso dia 18 de Junho de 2011. ALMEIDA, Charles O. ZIVIANI, Nivio. Algoritmos em Grafos, Ultima alterao 26 de Abril de 2004, Disponvel em: <http://pt.scribd.com/doc/54246313/46/Algoritmo -deKruskal-Implementacao> - Ultimo acesso dia 18 de Junho de 2011.

Você também pode gostar