Sei sulla pagina 1di 105

UNIVERSIDADE DO ESTADO DO AMAZONAS

ESCOLA SUPERIOR DE TECNOLOGIA


NCLEO DE COMPUTAO - NUCOMP

Projeto e Anlise de Algoritmos


Fora bruta - Busca exaustiva
Prof. Flvio Jos Mendes Coelho
fcoelho@uea.edu.br

Nesta aula...
Busca exaustiva
Busca em profundida em grafos (DFS)
Busca em largura em grafos (BFS)

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca exaustiva

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca exaustiva
Muitos problemas importantes pedem a
descoberta de um elemento com uma
propriedade especial dentro de um espao
de busca que cresce exponencialmente ou
pior com o tamanho da instncia.
Em geral, tais elementos so objetos
combinatrios tais como permutaes,
combinaes e subconjuntos de um
conjunto.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca exaustiva
Muitos deste problemas so problemas de
otimizao combinatria: descobrir um
elemento que maximiza ou minimiza
alguma caracterstica desejvel.
Definio. Busca exaustiva (enumerao
explcita) a aplicao da abordagem de
fora bruta para problemas de otimizao
combinatria.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca exaustiva
A estratgia de busca exaustiva simples:
1. Construa todos os objetos combinatrios do
espao de busca E para a instncia I do
problema P.
2. Escolha o elemento timo de E para I.
Como E cresce exponencialmente com o
tamanho de P, empregar esta estratgia
para instncias no moderadas de P
computacionalmente invivel.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca exaustiva
Alguns problemas importantes de otimizao
combinatria:
PCV Problema do Caixeiro Viajante
(Traveling Salesman Problema TSP)
Problema da Mochila (Knapsack Problem)
Problema da alocao
(Assignment Problem)

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

PCV
Definio. Dadas n cidades com distncias
conhecidas entre cada par de cidades,
encontrar o tour mais curto que passe por
todas as cidades exatamente uma vez
antes de retornar a cidade de origem.
Definio alternativa. Encontrar o circuito
Hamiltoniano mais curto em um grafo
conectado e ponderado.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

PCV
2
b

a
5
8

4
3
c

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

PCV
Soluo exaustiva
1. Construa o conjunto de todas as
permutaes (tours) das n1 cidades.
2. Encontre neste conjunto uma permutao
com o custo mnimo.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

10

PCV
2

5
8

4
c

3
7

Tour

Custo

a b c d a

2 + 3 + 7 + 5 = 17

T(n) = (n1)!

a b d c a
a c b d a
a c d b a

2 + 4 + 7 + 8 = 21
8 + 3 + 4 + 5 = 20
8 + 7 + 4 + 2 = 21

T(n)(n!)

a d b c a
a d c b a

5 + 4 + 3 + 8 = 20
5 + 7 + 3 + 2 = 17

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

11

Problema da mochila
Definio. Dados n objetos, seus pesos w1,
w2, , wn, seus valores v1, v2, , vn e uma
mochila (knapsack) de capacidade W,
encontrar o subconjunto mais valioso de
objetos que caibam na mochila.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

12

Problema da mochila

W = 10

mochila

w=7
v = R$42

w=3
v = R$12

w=4
v = R$40

w=5
v = R$25

objeto 1

objeto 2

objeto 3

objeto 4

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

13

Problema da mochila
Soluo exaustiva
1. Construa todos os subconjuntos do
conjunto de n objetos dados, calculando o
peso total de cada subconjunto.
2. Encontre um subconjunto vivel com o
valor mais elevado entre eles.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

14

Problema da mochila
#

Subconjunto

Peso Total

Valor Total

R$0

{1}

R$42

{2}

R$12

{3}

R$40

{4}

R$25

{1, 2}

10

R$36

{1, 3}

11

invivel

{1, 4}

12

invivel

{2, 3}

R$52

10

{2, 4}

R$37

11

{3, 4}

R$65

12

{1, 2, 3}

14

invivel

13

{1, 2, 4}

15

invivel

14

{1, 3, 4}

16

invivel

15

{2, 3, 4}

12

invivel

16

{1, 2, 3, 4}

19

invivel

W = 10
w=5
v = R$25
objeto 4
w=4
v = R$40
objeto 3

mochila

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

15

Problema da mochila
Como o nmero de subconjuntos de um
conjunto de n elementos 2n, a busca
exaustiva leva a um algoritmo (2n).
Tanto para o PCV quanto para a mochila, a
busca exaustiva leva a algoritmos
extremamente ineficientes.
Estes problemas so chamados de problemas
NPdifcil.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

16

Problema da alocao
Definio. Dados m pessoas e n tarefas, cada
pessoa executando uma tarefa a um custo
cij (1 i m, 1 j n). Determinar a
alocao de pessoas a tarefas de custo
mnimo.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

17

Problema da alocao
Tarefa 1

Tarefa 2

Tarefa 3

Tarefa 4

Pessoa 1

Pessoa 2

Pessoa 3

Pessoa 4

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

18

Problema da alocao
Soluo exaustiva
1. Construa o conjunto de todas as
permutaes de pessoas onde a i-sima
pessoa executa a i-sima tarefa, calculando
o custo total de cada permutao.
2. Encontre a permutao de custo mnimo.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

19

Busca em profundidade e busca


em largura em grafos
Os algoritmos de caminhamento em grafos
busca em profundidade (depth-first search DFS) e busca em largura (breadth-first search
- BFS) podem ser admitidos como algoritmos
de busca exaustiva.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

20

Busca em profundidade
Ideia: o algoritmo caminha no grafo buscando
alcanar o seu vrtice mais distante
(profundo), sempre que possvel. Quando
alcana, volta para o vrtice anteriormente
visitado e segue outro caminho, da mesma
maneira.
Descobre no grafo uma rvore de busca em
profundidade (rvore geradora).
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

21

Busca em profundidade
Cada vrtice inicia branco.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

22

Busca em profundidade
Cada vrtice visitado (descoberto) fica cinza.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

23

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

24

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

25

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

26

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

27

Busca em profundidade
Vrtice com adjacentes j visitados fica preto.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

28

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

29

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

30

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

31

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

32

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

33

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

34

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

35

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

36

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

37

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

38

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

39

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

40

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

41

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

42

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

43

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

44

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

45

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

46

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

47

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

48

Busca em profundidade

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

49

Busca em profundidade
rvore de busca em profundidade.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

50

Busca em profundidade
Elementos do algoritmo
Cada vrtice:
1. Inicia BRANCO.
2. Muda para CINZA quando descoberto.
3. Muda para PRETO quando todos seus
vrtices adjacentes j foram visitados.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

51

Busca em profundidade
Elementos do algoritmo
A rvore de busca em profundidade dada
por:
G = (V, E ), onde
E = {(v., v)| : v V e v. NULO} e
v. armazena o vrtice predecessor de v.
u.d : guarda o tempo em que u
descoberto.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

52

DFS( G )
para cada vrtice u G.V
u.cor = BRANCO
u. = NULO
tempo = 0
para cada vrtice u G.V
se u.cor == BRANCO
DFS-VISITA(G, u)

DFS-VISITA(G, u)
tempo = tempo + 1 // descobre vrtice branco
u.d = tempo
u.cor = CINZA
para cada vrtice v G.adj[u] // explora aresta uv
se v.cor == BRANCO
u. = v
DFS-VISITA(G, v)
u.cor = PRETO // pinta u de preto; u est concludo
tempo = tempo + 1
u.f = tempo
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

53

DFS( G )
1 para cada vrtice u G.V
2 u.cor = BRANCO
3 u. = NULO
4 tempo = 0
5 para cada vrtice u G.V
6 se u.cor == BRANCO
7 DFS-VISITA(G, u)

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

54

DFS-VISITA(G, u)
1 tempo = tempo + 1 // descobre vrtice branco
2 u.d = tempo
3 u.cor = CINZA
4 para cada vrtice v G.adj[u] // explora aresta uv
5 se v.cor == BRANCO
6 u. = v
7 DFS-VISITA(G, v)
8 u.cor = PRETO // pinta u de preto
// u est concludo
9 tempo = tempo + 1
10 u.f = tempo

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

55

Busca em profundidade
Eficincia de tempo
Matriz de adjacncia: (|V|2).
Lista de adjacncia: (|V| + |E|).

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

56

Busca em profundidade
Propriedades da DFS:
Todos os vrtices so explorados.
Descobre uma floresta de rvores geradoras
(G). (rvores de busca em profundidade)

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

57

Busca em profundidade
Aplicaes da DFS
Contar componentes conexas de um grafo.
Verificar se o grafo acclico.
Descobrir a sada de labirintos.
Verificar estruturas de parnteses (d e f).
Utilizada em ordenao topolgica.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

58

Busca em largura
Ideia em grafos
1.Partindo de um vrtice-origem s do grafo, o
algoritmo visita (descobre) todos os vrtices
a uma distncia k = 1 do vrtice s.
2.Depois, visita os vrtices a uma distncia k
+ 1 de s, e assim por diante, at os vrtices
mais distantes de s.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Escolha um vrtice s de origem.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Visite todos os seus adjacentes.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Visite todos os seus adjacentes.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Visite todos os seus adjacentes.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Visite todos os seus adjacentes.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Visite todos os seus adjacentes.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Pinte s de preto aps visitar seus adjacentes.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

1
4

2
3

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
2
1
3
s

7
5

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Descobre uma rvore de busca em largura.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Elementos do algoritmo
Cada vrtice:
1. Inicia BRANCO.
2. Muda para CINZA quando descoberto.
3. Muda para PRETO quando todos seus
vrtices adjacentes j foram visitados.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Elementos do algoritmo
A rvore de busca dada por:
G = (V, E ), onde
E = {(v., v)| : v V e v. NULO} e
v. armazena o vrtice predecessor de v.
u.d : acumula a distncia da origem s at u.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

BFS(G, s)
1 para cada vrtice u G.V {s}
2 u.cor = BRANCO
3 u.d =
4 u. = NULO
5 s.cor = CINZA
6 s.d = 0
7 s. = NULO
8 Q =
9 ENFILEIRA(Q, s)
10 enquanto Q faa
11 u = DESENFILEIRA (Q)
12 para cada vrtice v G.adj[u]
13 se v.cor == BRANCO
14 v.cor = CINZA
15 v.d = u.d + 1
16 v. = u
17 ENFILEIRA(Q, v)
18 u.cor = PRETO
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

BFS(G, s)
1 para cada vrtice u G.V {s}
2 u.cor = BRANCO
3 u.d =
inicializao
4 u. = NULO
5 s.cor = CINZA
6 s.d = 0
7 s. = NULO

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

BFS(G, s)
. . .
principal
8 Q =
9 ENFILEIRA(Q, s)
10 enquanto Q
11 u = DESENFILEIRA(Q)
12 para cada vrtice v G.adj[u]
13 se v.cor == BRANCO
14 v.cor = CINZA
15 v.d = u.d + 1
16 v.p = u
17 ENFILEIRA(Q, v)
18 u.cor = PRETO
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Eficincia de tempo
Matriz de adjacncia: (|V|2).
Lista de adjacncia: (|V| + |E|).

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Propriedades da BFS:
Todos os vrtices so explorados.
A busca em largura obtm o caminho mnimo
de um vrtice origem s at outro vrtice
qualquer v.
Procedimento BFS constri uma rvore de
busca em largura armazenada em G.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Busca em largura
Aplicaes da BFS:
Modelo para o algoritmo de Dijkstra para
caminho mnimo de origem nica e o algoritmo
de Prim para rvore geradora mnima.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

Concluses
Fora bruta simples, mas ineficiente para
instncias de tamanho significativo.
Busca exaustiva uma estratgia fora bruta
para problemas de otimizao combinatria
(ou caminhamento em certas estruturas).
Estratgia de busca exaustiva: gere todos os
objetos combinatrios do problema e
selecione um que satisfaa as restries do
problema.
UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

104

Bibliografia
A. Levitin. Introduction to the Design and
Analysis of Algorithms. 3rd edition. AddisonWesley, 2007.
T. H. Cormen, C.E. Leiserson, R.L. Rivest, C.
Stein, Introduction to Algorithms, 3rd
edition, MIT Press, 2009.

UEA/EST/NUCOMP Projeto e Anlise de Algoritmos Prof. Flvio Jos M. Coelho

105

Potrebbero piacerti anche