20
´ Arvores Abrangentes de Custo M´ ınimo Em inglˆ es, Minimum Spanning Trees (MST) Fernando Lobo Algoritmos e Estrutura de Dados 1 / 39 Minimum Spanning Tree Input: grafo G =(V , E ) n˜ ao orientado, conexo. Cada aresta (u , v ) E tem um peso associado w (u , v ). Output: Um conjunto de arestas A E tal que: 1 A ´ e uma ´ arvore que conecta todos os n´ os do grafo (A ´ e uma spanning tree), e 2 w (A)= (u,v )A w (u , v ) ´ eom´ ınimo poss´ ıvel. Problema tem muitas aplica¸c˜ oes pr´ aticas. Por exemplo, na constru¸c˜ ao de uma rede de comunica¸c˜ oes. 2 / 39

Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Arvores Abrangentes de Custo MınimoEm ingles, Minimum Spanning Trees (MST)

Fernando Lobo

Algoritmos e Estrutura de Dados

1 / 39

Minimum Spanning Tree

Input: grafo G = (V ,E ) nao orientado, conexo. Cada aresta(u, v) ∈ E tem um peso associado → w(u, v).

Output: Um conjunto de arestas A ⊆ E tal que:

1 A e uma arvore que conecta todos os nos do grafo (A e uma spanningtree), e

2 w(A) =∑

(u,v)∈A w(u, v) e o mınimo possıvel.

Problema tem muitas aplicacoes praticas. Por exemplo, na construcaode uma rede de comunicacoes.

2 / 39

Page 2: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Exemplo de uma MST

Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53

3 / 39

Propriedades de uma MST

Tem |V | − 1 arestas.

Nao tem ciclos.

Pode nao ser unica.

4 / 39

Page 3: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Algoritmo generico para obter uma MST

Manter um conjunto A de arestas que e sempre um subconjunto dealguma MST.

Inicialmente A = ∅

A cada iteracao acrescentamos uma aresta a A mantendo o invarianteque A continue a ser um subconjunto de uma MST.

5 / 39

Dois algoritmos classicos: Prim e Kruskal

Algoritmo de Prim: Comeca com um no s qualquer e cresce umaarvore A a partir de s. Em cada iteracao, acrescenta o aresta (u, v)de custo mınimo em que um dos extremos pertence a A.

Algoritmo de Kruskal: Comeca com A = ∅. Ordena os arestas dografo por ordem crescente de peso. A cada iteracao acrescenta aaresta (u, v) a A desde que isso nao de origem a um ciclo.

6 / 39

Page 4: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Algoritmo de Prim

Tem semelhancas com BFS e com o algoritmo de Dijkstra.

Inicialmente A = ∅

Mantemos V − A numa fila com prioridade Q.

A chave de cada no na fila indica o custo mınimo de juntar esse no aum qualquer no de A.

Quando o algoritmo termina, a fila Q esta vazia. A MST A e dadapor:

A = {(v , v .π) : v ∈ V − {s}}

7 / 39

Pseudocodigo

MST-Prim(G ,w , s)

for each u ∈ G .Vu.key = ∞u.π = nil

s.key = 0Q = G .Vwhile Q 6= ∅

u = Extract-Min(Q)for each v ∈ G .Adj [u]

if v ∈ Q and w(u, v) < v .keyv .π = uv .key = w(u, v)

8 / 39

Page 5: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Exemplo

9 / 39

Inicializacao

10 / 39

Page 6: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

1a iteracao do ciclo while

11 / 39

2a iteracao do ciclo while

12 / 39

Page 7: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

3a iteracao do ciclo while

13 / 39

4a iteracao do ciclo while

14 / 39

Page 8: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

5a iteracao do ciclo while

15 / 39

6a iteracao do ciclo while

16 / 39

Page 9: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

7a iteracao do ciclo while

17 / 39

Complexidade do Algoritmo de Prim

Depende da implementacao da fila com prioridade.

Se implementarmos com um heap binario:

I Inicializacao → Build-Heap → O(V )

I Ciclo while e executado |V | vezes.

I |V | Extract-Mins → O(V lgV )

I No maximo, |E | Decrease-Keys → O(E lgV )

I Total = O(V lgV + E lgV ) = O(E lgV )

A verificacao if v ∈ Q pode ser obtida em tempo constante semantivermos um bit vector com indicacao dos nos que estao em Q.

18 / 39

Page 10: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Algoritmo de Kruskal

Inicialmente A = ∅. No final A sera uma MST.

Ordenamos as arestas do grafo por ordem crescente de peso.

Percorre-se a lista ordenada das arestas, uma a uma, e adicionamos aaresta a A desde que nao produza ciclo.

Ao contrario do algoritmo de Prim, o algoritmo de Kruskal mantemums floresta. Inicialmente a floresta tem |V | arvores, uma para cadano. No final, a floresta so tem uma arvore que e uma MinimumSpanning Tree.

19 / 39

Exemplo: Inicializacao

20 / 39

Page 11: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 1

21 / 39

Iteracao 2

22 / 39

Page 12: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 3

23 / 39

Iteracao 4

24 / 39

Page 13: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 5

25 / 39

Iteracao 6

26 / 39

Page 14: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 7, 8, 9, 10

27 / 39

Evolucao da floresta de arvores

Inicializacao

28 / 39

Page 15: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 1

29 / 39

Iteracao 2

30 / 39

Page 16: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 3

31 / 39

Iteracao 4

32 / 39

Page 17: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 5

33 / 39

Iteracao 6

34 / 39

Page 18: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Iteracao 7, 8, 9, 10

35 / 39

Implementacao do Algoritmo de Kruskal

Necessitamos de uma estrutura de dados que permita manterdinamicamente uma floresta de arvores.

Inicialmente temos |V | arvores.

A cada passo do algoritmo juntamos duas arvores e ficamos commenos uma arvore na floresta.

Na realidade, nao e necessario manter explicitamente as arvores.

I Basta manter os nos que cada arvore contem.

I Nota: As arvores sao disjuntas. Um no e elemento de uma e uma soarvore.

36 / 39

Page 19: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Implementacao do Algoritmo de Kruskal

O que necessitamos e de uma estrutura de dados para manter umacolecao S de conjuntos disjuntos.

Essa estrutura de dados tem o nome UNION-FIND (vamos estuda-lana proxima aula).

Suporta estas operacoes: Make-Set(x), Find-Set(x) eUnion(x , y)

I Make-Set(x): cria {x} e acrescenta-o a S .

I Find-Set(x): retorna um identificador do conjunto que contem x .

I Union(x , y): faz a uniao do conjunto que contem x com o conjuntoque contem y e acrescenta-o a S , eliminado os conjuntos originais quecontinham x e y .

37 / 39

Pseudocodigo

MST-Kruskal(G ,w)

A = ∅for each v ∈ G .V

Make-Set(v)sort G .E in ascending order of weight wfor each (u, v) ∈ G .E , taken in ascending order of weight

if Find-Set(u) 6= Find-Set(v)A = A ∪ {(u, v)}Union(u, v)

return A

38 / 39

Page 20: Em ingl^es, Minimum Spanning Trees (MST) Minimum Spanning … · Exemplo de uma MST Custo: 6 + 5 + 9 + 7 + 15 + 8 + 3 = 53 3/39 Propriedades de uma MST Tem jV j 1 arestas. N~ao tem

Complexidade do Algoritmo de Kruskal

Primeiro ciclo for: O(V ) Make-Sets

Ordenar E : O(E lg E )

Segundo ciclo for: O(E ) Find-Sets e UnionsNa realidade so fazemos O(V ) Unions. Porque?

A complexidade vai depender da forma como se implementa aestrutura de dados UNON-FIND.

Mas e possıvel obter uma complexidade de O(E lgV ).Veremos como na proxima aula.

39 / 39