• Nenhum resultado encontrado

Análise de Algoritmos

N/A
N/A
Protected

Academic year: 2022

Share "Análise de Algoritmos"

Copied!
39
0
0

Texto

(1)

Análise de Algoritmos

(2)

Minimum Spanning Tree (MST)

Árvore geradora mínima

Árvore espalhada mínima

Árvore de espalhamento mínima

www.nakamura.eti.br/eduardo Análise de Algoritmos 2

(3)

• Dado um grafo G=(V,E) não orientado conectado

Uma árvore geradora deste grafo é uma árvore que conecta todos os vértices em V

Um único grafo pode ter diferentes árvores geradoras

• Árvore geradora mínima

Uma árvore geradora com peso menor ou igual a cada uma das outras árvores geradoras possíveis

www.nakamura.eti.br/eduardo Análise de Algoritmos 3

(4)

www.nakamura.eti.br/eduardo Análise de Algoritmos 4

A B

C D

E

5

4 1 2

1

2 7

(5)

www.nakamura.eti.br/eduardo Análise de Algoritmos 5

A B

C D

E

5

4 1 2

1

2 7

(6)

GENERIC-MST(G,w) 1: A  ;

2: while A não conecta todos os vértices do 3: encontrar uma aresta (u,v) segura

4: A  A  {(u,v)};

5: end while 6: return A;

www.nakamura.eti.br/eduardo Análise de Algoritmos 6

Uma aresta tal que A  {(u,v)} também é um subconjunto de uma árvore geradora mínima

(7)

• O algoritmo genérico é um algoritmo guloso

Faz a escolha que é a melhor individualmente (em muitos problemas nem sempre será a melhor escolha global)

• Dois algoritmos importantes derivam do genérico

Kruskal

Prim

www.nakamura.eti.br/eduardo Análise de Algoritmos 7

(8)

• Deriva diretamente do algoritmo genérico

Cria uma floresta (várias árvores)

Acrescenta uma aresta segura que conecta duas árvores com o peso mínimo

www.nakamura.eti.br/eduardo Análise de Algoritmos 8

(9)

MST-KRUSKAL(G,w)

1: Crie uma floresta F onde cada vértice de G é uma árvore 2: Crie um conjunto S contendo todas as arestas do grafo 3: while S   do

4: Remova uma aresta (u,v) com peso mínimo de S;

5: if (u,v) não cria ciclo then 6: Adicione (u,v) à floresta;

7: end if 8: end while 9: return F;

www.nakamura.eti.br/eduardo Análise de Algoritmos 9

(10)

www.nakamura.eti.br/eduardo Análise de Algoritmos 10

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(11)

www.nakamura.eti.br/eduardo Análise de Algoritmos 11

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(12)

www.nakamura.eti.br/eduardo Análise de Algoritmos 12

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(13)

www.nakamura.eti.br/eduardo Análise de Algoritmos 13

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(14)

www.nakamura.eti.br/eduardo Análise de Algoritmos 14

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(15)

www.nakamura.eti.br/eduardo Análise de Algoritmos 15

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(16)

www.nakamura.eti.br/eduardo Análise de Algoritmos 16

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(17)

www.nakamura.eti.br/eduardo Análise de Algoritmos 17

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(18)

www.nakamura.eti.br/eduardo Análise de Algoritmos 18

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(19)

www.nakamura.eti.br/eduardo Análise de Algoritmos 19

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(20)

www.nakamura.eti.br/eduardo Análise de Algoritmos 20

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(21)

www.nakamura.eti.br/eduardo Análise de Algoritmos 21

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(22)

www.nakamura.eti.br/eduardo Análise de Algoritmos 22

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(23)

www.nakamura.eti.br/eduardo Análise de Algoritmos 23

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(24)

www.nakamura.eti.br/eduardo Análise de Algoritmos 24

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(25)

www.nakamura.eti.br/eduardo Análise de Algoritmos 25

A

B C D

E

F G

H

I 4

8

2

1 2

4 7

9

(26)

• O algoritmo de Prim também é um caso especial do algoritmo genérico para árvore geradora mínima

• Diferente de Kruskal

Prim mantém sempre uma única árvore

A árvore começa de qualquer vértice como raíz

Novas arestas são acrescidas até conectar todos os vértices

www.nakamura.eti.br/eduardo Análise de Algoritmos 26

(27)

MST-PRIM(G,w,r)

1: // Crie um grafo G’=(V’,S) com a raiz apenas;

2: V’  {r};

3: S  ;

4: while V’ < V do

5: Selecione a menor aresta (u,v) tal que u  V’ e v  (V-V’) 6: V’  V’  {v};

7: S  S  {(u,v)};

8: end while 9: return G’;

www.nakamura.eti.br/eduardo Análise de Algoritmos 27

(28)

www.nakamura.eti.br/eduardo Análise de Algoritmos 28

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(29)

www.nakamura.eti.br/eduardo Análise de Algoritmos 29

A

B C D

E

F G

H

I 4

11

8

8

2

6 7

1 2

4 7

14

9

10

(30)

www.nakamura.eti.br/eduardo Análise de Algoritmos 30

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(31)

www.nakamura.eti.br/eduardo Análise de Algoritmos 31

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(32)

www.nakamura.eti.br/eduardo Análise de Algoritmos 32

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(33)

www.nakamura.eti.br/eduardo Análise de Algoritmos 33

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(34)

www.nakamura.eti.br/eduardo Análise de Algoritmos 34

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(35)

www.nakamura.eti.br/eduardo Análise de Algoritmos 35

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(36)

www.nakamura.eti.br/eduardo Análise de Algoritmos 36

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(37)

www.nakamura.eti.br/eduardo Análise de Algoritmos 37

A 4

11

8

8

2

6 7

1 2

4 7

14

9

10

B C D

E

F G

H

I

(38)

www.nakamura.eti.br/eduardo Análise de Algoritmos 38

A 4

8

2

1 2

4 7

9

B C D

E

F G

H

I

(39)

Suponha que todas as arestas de um grafo G=(V,E) não orientado possuam o mesmo peso. Quantas possibilidades de árvores geradoras mínimas existem?

Faça a análise de complexidade dos algoritmos de Kruskal e Prim.

Dado o problema oposto da árvore geradora mínima

(encontrar uma árvore geradora máxima), como você pode usar os algoritmos de Kruskal e Prim (sem alterá-los) para obter uma árvore?

Supondo que todas as arestas de um grafo G=(V,E) tenham o mesmo peso, escreva um algoritmo que encontre uma

árvore geradora mínima diferente de Kruskal e Prim. Qual sua complexidade?

www.nakamura.eti.br/eduardo Análise de Algoritmos 39

Referências

Documentos relacionados

Nota 1.14 Pela sua rela¸ c˜ ao com o tema desta sec¸ c˜ ao, referimos aqui o conhecido “problema do Caixeiro-Viajante” que pode ser descrito como o problema de determinar, dado

No algoritmo de Boruvka-Kruskal, a partir de um v´ ertice inicial arbitr´ ario, escolhe-se em cada passo uma aresta de peso o menor poss´ıvel que n˜ ao forme um ciclo com outras

Para grafos não direcionados, também distinguimos entre as arestas da árvore:.. – Arestas de árvore: a aresta (u,v) é uma aresta de árvore se v foi descoberto pela primeira vez ao

O sistema brasileiro de educação superior inclui instituições públicas e privadas. Há um conceito legislativo que acompanha o pleno funcionamento das IES públicas. No entanto,

Entretanto, tendo em vista que o sistema escolar tem por função oferecer um ensino que abarque as múltiplas dimensões da aprendizagem (cognitiva, social e cultural),

Após elaborar o texto, em resposta à atividade proposta, verifique se ele contém os seguintes aspectos: a relação entre fixos e fluxos, que elementos você considerou

A leitura é uma atividade que pode ser explicada por diferentes perspectivas teóricas. Nesta aula aprendemos que diferentes perspectivas teóricas explicam o processo de leitura:

Os documentos legais de cobrança deverão conter as especificações e as quantidades dos itens fornecidos, de acordo com a solicitação do BRDE formalizada através