análise projeto de algoritmos loana tito nogueira 21 de...

62
Análise e Projeto de Algoritmos Loana Tito Nogueira Análise Projeto de Algoritmos Loana Tito Nogueira 21 de maio de 2012

Upload: others

Post on 15-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Análise Projeto de Algoritmos

Loana Tito Nogueira 21 de maio de 2012

Page 2: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Gulosp

Uma das técnicas de construção de algoritmos heurísticos mais explorada é tentar obter uma boa solução (eventualmenete ótima), considerando a casa iteração a melhor decisão um passo à frente ou seja utilizando um critério de otimização meramente local.

Heurísticas deste tipo são chamadas Míopes ou Gulosas

Page 3: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Algoritmo Guloso

•  Questão Importante: Discutir em quais casos, ou para quais classes de problemas, uma heurística do tipo míope garante a obtenção da solução ótima para qualquer instância do problema.

Loana Tito Nogueira

Page 4: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Algoritmo Guloso - Características

•  Resolve problemas de otimização •  Dados um conjunto finito E={1, 2,..., n}, uma coleção

de subconjuntos F ⊈ 2E e uma função c: 2E → R, determinar o conjunto S*∈ F, satisfazendo a

•  c(S*) ≥ c(S), ∀S ∈ F, é um Problema de Otimização combinatória.

•  Problema Geral: dado um conjunto C, determinar se

um subconjunto S⊈ C tal que: •  S satisfaz uma dada propriedade P, e •  S é mínimo (ou máximo) em relação a algum critério

Loana Tito Nogueira

Page 5: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Algoritmo Guloso - Características

•  Não necessitar usar procedimentos sofisticados para desfazer decisões tomadas previamente;

•  O algoritmo guloso para resolver o problema geral consiste em um processo iterativo em que S é construído adicionando-se ao mesmo elementos de C um a um.

Loana Tito Nogueira

Page 6: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Algoritmo Guloso - Exemplo de Aplicaçao

•  Vamos utilizar um algoritmo guloso para resolver o problema da árvore geradora mínima.

Loana Tito Nogueira

Page 7: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Um grafo G é um par (V,E), onde V é um conjunto de pontos, também chamados de vértices e E é um conjunto de linhas ligando esses pontos, chamados arestas.

Definições Básicas

Loana Tito Nogueira

Page 8: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Um grafo G é um par (V,E), onde V é um conjunto de pontos, também chamados de vértices e E é um conjunto de linhas ligando esses pontos, chamados arestas.

Definições Básicas

Loana Tito Nogueira

1 2 3 4

5 6 7 8

G

Page 9: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Dizemos que um grafo G’ é um subgrafo de um grafo G se: -  V(G’) ⊆ V(G) e -  E(G’) ⊆ E(G).

G

1 2 3 4 G’

Definições Básicas

Loana Tito Nogueira

1 2 3 4

5 6 7 8

Page 10: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Em particular, um grafo G’ é um subgrafo gerador de um grafo G se G’ ⊆ G e além disso, V(G’) = V(G).

G G’ 1 2 3 4

5 6 7 8

1 2 3 4

5 6 7 8

Definições Básicas

Loana Tito Nogueira

Page 11: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Um grafo G é conexo se para todo par de vértices distintos v e w de G, existe um caminho de v a w.

Definições Básicas

Loana Tito Nogueira

1 2 3 4

5 6 7 8

G

Page 12: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Um grafo G é acíclico se G não contém um ciclo como subgrafo.

Definições Básicas

Loana Tito Nogueira

Page 13: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Um grafo G é acíclico se G não contém um ciclo como subgrafo.

Definições Básicas

Loana Tito Nogueira

1 2 3 4

5 6 7 8

G

G não é acíclico

Page 14: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Um grafo G é acíclico se G não contém um ciclo como subgrafo.

Definições Básicas

Loana Tito Nogueira

G é acíclico

1 2 3 4

5 6 7 8

G

Page 15: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Uma floresta F é um grafo acíclico.

1 2 3 4

5 6 7 8

Definições Básicas

Loana Tito Nogueira

G

Page 16: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Uma árvore T é um grafo acíclico e conexo.

1 2 3 4

5 6 7 8

Definições Básicas

Loana Tito Nogueira

G

Page 17: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Uma árvore geradora T de um grafo G é um árvore tal que V(G)=V(T) e E(T) ⊆ E(G).

Definições Básicas

Loana Tito Nogueira

Uma árvore geradora T é um subgrafo gerador de G que é acíclico e conexo.

Page 18: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Exemplo: Árvore Geradora

Loana Tito Nogueira

1 2 3 4

5 6 7 8

1 2 3 4

5 6 7 8

G T

Page 19: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

" Dados: G = (V,E) grafo não-orientado, com |V|=n e |E|=m

peso w(e), ∀e ∈ E(G)

"   Problema Obter F ⊆ E tal que: "   o grafo G’=(V,F) é acíclico e conexo (G’ é gerador de G) "   w(F) = Σe∈E c(e) é mínimo

Árvore Geradora Mínima

Loana Tito Nogueira

Page 20: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

A B

E C

D

wAB

wBC wBE

wDE

wCE

wCD

wAE wAD

Árvore Geradora Mínima

Loana Tito Nogueira

Page 21: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Exemplo:

9 D

A

E

B

C

F3

4

8 4

7

2

2

5 9

árvore geradora peso = 15

D

A B

C

E F

árvore geradora peso = 24

D

A

E

B

C

F

3

4

8 4 5

3

4

4

2

2

Loana Tito Nogueira

Árvore Geradora Mínima

Page 22: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

"   A árvore geradora mínima não é única

Loana Tito Nogueira

Árvore Geradora Mínima

Page 23: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Exemplo:

2 D

A

E

B

C

F3

4

8 4

7

2

2

5 9

D

A B

C

E F

"   A árvore geradora mínima não é única

Loana Tito Nogueira

Árvore Geradora Mínima

Page 24: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Exemplo:

2 D

A

E

B

C

F3

4

8 4

7

2

2

5 9

D

A B

C

E F

D

A

E

B

C

F

"   A árvore geradora mínima não é única

Loana Tito Nogueira

Árvore Geradora Mínima

Page 25: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

A

Exemplo:

2 D

A

E

B

C

F3

4

8 4

7

2

2

5 9

D

A B

C

E F

D

A

E

B

C

F

"   A árvore geradora mínima não é única

D

E

B

C

F3

4

4

2

2

AGM de peso = 15 Loana Tito Nogueira

Árvore Geradora Mínima

Page 26: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

A

Exemplo:

2 D

A

E

B

C

F3

4

8 4

7

2

2

5 9

D

A B

C

E F

D

A

E

B

C

F

"   A árvore geradora mínima não é única

D

E

B

C

F3

4

4

2

2

AGM de peso = 15 Loana Tito Nogueira

Árvore Geradora Mínima

Page 27: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

A

Exemplo:

2 D

A

E

B

C

F3

4

8 4

7

2

2

5 9

D

A B

C

E F

D

A

E

B

C

F

"   A árvore geradora mínima não é única

D

E

B

C

F3

4

4

2

2

2

3

4

4

2

D

A

E

B

C

F

AGM de peso 15 Loana Tito Nogueira

Árvore Geradora Mínima

AGM de peso = 15

Page 28: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Idéia do Algoritmo

Ø Em cada passo adiciona uma aresta de peso mínimo de maneira a não formar ciclo;

Loana Tito Nogueira

Algoritmo de Kruskal

Page 29: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Idéia do Algoritmo

Ø Em cada passo adiciona uma aresta de peso mínimo de maneira a não formar ciclo;

A

H

B

I

G

C

F

E

D 4

4

8

8 11

7

7 9

10

14

2

2

1

6

Loana Tito Nogueira

Algoritmo de Kruskal

Page 30: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

A ← ∅ For cada vértice v ∈ V(G) do L(v) ← ∅; End-for Ordenar as arestas em ordem não decrescente pelos pesos. For cada aresta (u,v) ∈ E(G), tomadas pela ordem não-decrescente de pesos do If L(u)≠ L(v) then A ← A ∪ {(u,v)}; Faça L(u) ∪ L(v) ; end-if end-for Return A

Loana Tito Nogueira

Algoritmo de Kruskal

Page 31: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

c(A) = 4 c(A) = 7 c(A) = 11 c(A) = 15

Exemplo:

8 3

9 D

A

E

B

C

F

4

4

7

2 2

5 9 e c(e)

(C,F) 2

(E,F) 2

(A,D) 3

(C,E) 3

(A,B) 4

(A,E) 4

(B,F) 5

(D,F) 7

(B,C) 8

(B,E) 9

(C,D) 9

Lista L

Subárvores

{ A } { B }

{ C }

{ D }

{ E }

{ F } { A } { B }

{ C, F }

{ D }

{ E }

c(A) = 2

{ A } { B }

{ C, E, F }

{ D }

{ A, D }

{ B }

{ C, E, F }

{ A, B, D } { C, E, F }

{ A, B, C, D, E, F }

3

X

Loana Tito Nogueira

Algoritmo de Kruskal

Page 32: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 1: Seja G=(V,E) um grafo conexo. Seja T=(V,ET) o subgrafo obtido pela aplicação do algoritmo de Kruskal. Então T é uma árvore geradora de G.

Loana Tito Nogueira

Algoritmo de Kruskal

Page 33: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 1: Seja G=(V,E) um grafo conexo. Seja T=(V,ET) o subgrafo obtido pela aplicação do algoritmo de Kruskal. Então T é uma árvore geradora de G.

Prova: - T é um subgrafo gerador acíclico.

Loana Tito Nogueira

Algoritmo de Kruskal

Page 34: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Prova: - T é um subgrafo gerador acíclico. -  Resta mostrar que T é conexo. -  Suponha, por contradição, que T é desconexo. -  Sejam T’ e T” duas árvores distintas da floresta T. -  A primeira aresta (v,w) da sequência ordenada de arestas

tal que v está em T’ e w em T”, quando adicionada a T não pode produzir ciclo.

Consequentemente, (v,w) não pode ser rejeitada pelo

algoritmo guloso. -  Logo, G é desconexo. -  Contradicão!!!

Loana Tito Nogueira

Algoritmo de Kruskal

Page 35: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 2: Seja G um grafo conexo e T a árvore geradora obtida pela aplicação do algoritmo de Kruskal. Então T possui peso mínimo.

Loana Tito Nogueira

Algoritmo de Kruskal

Page 36: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 2: Seja G um grafo conexo e T a árvore geradora obtida pela aplicação do algoritmo de Kruskal. Então T possui peso mínimo.

Prova: ü  Suponha, por contradição, que a árvore geradora T

encontrada pelo algoritmo de Kruskal não é mínima.

Loana Tito Nogueira

Algoritmo de Kruskal

Page 37: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 2: Seja G um grafo conexo e T a árvore geradora obtida pela aplicação do algoritmo de Kruskal. Então T possui peso mínimo.

Prova: ü  Suponha, por contradição, que a árvore geradora T

encontrada pelo algoritmo de Kruskal não é mínima.

ü  Sejam e1, e2,…,em as arestas de T ordenadas não-descrescentes, isto é, w(e1)≤w(e2)≤ … ≤ w(em).

Loana Tito Nogueira

Algoritmo de Kruskal

Page 38: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 2: Seja G um grafo conexo e T a árvore geradora obtida pela aplicação do algoritmo de Kruskal. Então T possui peso mínimo.

Prova: ü  Suponha, por contradição, que a árvore geradora T

encontrada pelo algoritmo de Kruskal não é mínima.

ü  Sejam e1, e2,…,em as arestas de T ordenadas não-descrescentes, isto é, w(e1)≤w(e2)≤ … ≤ w(em).

ü  Seja T’ a árvore geradora mínima.

Loana Tito Nogueira

Algoritmo de Kruskal

Page 39: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

Teorema 2: Seja G um grafo conexo e T a árvore geradora obtida pela aplicação do algoritmo de Kruskal. Então T possui peso mínimo.

Prova: ü  Suponha, por contradição, que a árvore geradora T

encontrada pelo algoritmo de Kruskal não é mínima.

ü  Sejam e1, e2,…,em as arestas de T ordenadas não-descrescentes, isto é, w(e1)≤w(e2)≤ … ≤ w(em).

ü  Seja T’ a árvore geradora mínima. ü  Sejam e’1, e’2,…,e’m as arestas de T’ ordenadas não-

descrescentes, isto é, w(e’1)≤w(e’2)≤ … ≤ w(e’m).

Loana Tito Nogueira

Algoritmo de Kruskal

Page 40: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

ü  Seja j o maior índice tal que: e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1

Loana Tito Nogueira

Algoritmo de Kruskal

Page 41: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

ü  Seja j o maior índice tal que: e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1

Loana Tito Nogueira

Algoritmo de Kruskal

T T’ e1 e2

ej

ej+1

e’1 e’2

e’j e’j+1

Page 42: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

ü  Seja j o maior índice tal que: e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1

Loana Tito Nogueira

Algoritmo de Kruskal

T T’ e1 e2

ej

ej+1

e’1 e’2

e’j e’j+1

Page 43: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1

ü  O ciclo que se forma está contido necessariamente em algum ex tal que x>j+1

Loana Tito Nogueira

Algoritmo de Kruskal

T T’ e1 e2

ej

ej+1

e’1 e’2

e’j e’j+1

ü  Seja j o maior índice tal que:

Page 44: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

ü  Suponha que: e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1 ü  O ciclo que se forma está contido necessariamente

em algum ex tal que x>j+1 ü  Além disso, w(ex)≥w(ej+1)

T T’ e1 e2

ej

ej+1

e’1 e’2

e’j e’j+1

ex

Loana Tito Nogueira

Algoritmo de Kruskal

Page 45: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

ü  Suponha que: e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1 ü  O ciclo que se forma está contido necessariamente

em algum ex tal que x>j+1 ü  Além disso, w(ex)≥w(ej+1)

ü  w(ex)>w(ej+1). Absurdo!

T T’ e1 e2

ej

ej+1

e’1 e’2

e’j e’j+1

ex

Loana Tito Nogueira

Algoritmo de Kruskal

Page 46: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos

ü  Suponha que: e1=e’1

e2=e’2 . . .

ej=e’j ________________

ej+1≠e’j+1 ü  O ciclo que se forma está contido necessariamente

em algum ex tal que x>j+1 ü  Além disso, w(ex)≥w(ej+1)

ü  w(ex)>w(ej+1). Absurdo! ü  w(ex)=w(ej+1). Absurdo!

T T’ e1 e2

ej

ej+1

e’1 e’2

e’j e’j+1

ex

Loana Tito Nogueira

Algoritmo de Kruskal

Page 47: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso

Quando aplica a problemas de otimização combinatória sempre funciona, isto é, retorna a solução ótima?

Page 48: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso

Quando aplica a problemas de otimização combinatória sempre funciona, isto é, retorna a solução ótima?

NÃO

Page 49: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Page 50: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Consider a seguinte situação em que é necessário carregar uma mochila com capacidade limitada, com um conjunto objetos de pesos e valores diferentes.

Page 51: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Consider a seguinte situação em que é necessário carregar uma mochila com capacidade limitada, com um conjunto objetos de pesos e valores diferentes. Objetivo: ocupar a mochila com o maior valor possível, não ultrapassando o seu peso máximo.

Page 52: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Consider a seguinte situação em que é necessário carregar uma mochila com capacidade limitada, com um conjunto objetos de pesos e valores diferentes. Objetivo: ocupar a mochila com o maior valor possível, não ultrapassando o seu peso máximo. Solução: subconjunto de objetos cujo peso não ultrapasse o limite da mochila e ao mesmo tempo maximizando o seu valor total.

Page 53: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Formulação Matemática:

(KP): maximizar ∑ vj . xj

Sujeito a: ∑ wj . xj ≤ c, j = 1,2, …, n

xj ∈{0,1}

Page 54: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Objetos e respectivos pesos:

20 Kg

20 Kg

R$ 2.000

50 Kg

R$ 5.000

20 gramas

R$ 10.000

Capacidade da Mochila: 50 Kg

Page 55: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Objetos e respectivos pesos:

20 Kg

20 Kg

R$ 2.000

50 Kg

R$ 5.000

20 gramas

R$ 10.000

Capacidade da Mochila: 50 Kg

Solução Gulosa:{geladeira}

5.000,00

Page 56: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Problema da Mochila:

Objetos e respectivos pesos:

20 Kg

20 Kg

R$ 2.000

50 Kg

R$ 5.000

20 gramas

R$ 10.000

Capacidade da Mochila: 50 Kg

Solução ótima:{TV1, TV2, Anel}

14.000,00

Page 57: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Torna-se interessante saber quando utilizar o algoritmo guloso com garatia de obtenção da solução ótima

Page 58: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Algoritmo Guloso – mais um exemplo

Torna-se interessante saber quando utilizar o algoritmo guloso com garatia de obtenção da solução ótima

MATRÓIDES

Page 59: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Matróides

Seja E um conjunto finito e não vazio e F uma coleção não vazia de subconjuntos de E, fechado por inclusão.

I1⊆ I2, I2 ∈ F ➞ I1 ∈ F

Page 60: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Matróides

Seja E um conjunto finito e não vazio e F uma coleção não vazia de subconjuntos de E, fechado por inclusão.

I1⊆ I2, I2 ∈ F ➞ I1 ∈ F

(E,F) é denominado Sistema de Independência (ou de subconjuntos) e os elementos de F são chamados Independentes.

Page 61: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Matróides

Um sistema de subconjuntos é um Matróide quando o algoritmo Guloso resolver otimamente o problema de otimização combinatória associado

Page 62: Análise Projeto de Algoritmos Loana Tito Nogueira 21 de ...loana/teaching/analise-e-projeto-de-algori/guloso.pdf · Algoritmo Gulosp Uma das técnicas de construção de algoritmos

Análise e Projeto de Algoritmos Loana Tito Nogueira

Matróides

Caracterização: Um sistema de subconjuntos M=(E,F). As seguintes afirmações são equivalentes: (i)M é matróide (ii) Sejam I1 e I2 dois independentes de F tal que |I1|=|I2|+1 então existe e ∈ I1\I2 tal que I1∪e ∈ F (iii) Seja A ⊆ E e I1 e I2 independentes maximais de A, então |I1|=|I2|