Вы находитесь на странице: 1из 7

Agenda

•• Conceitos
Conceitos Básicos
Básicos
•• O
O Problema
Problema das
das Rainhas
Rainhas
Análise e Técnicas de Algoritmos •• TemplateGenérico
Template Genérico
•• Mochila
Mochila Binária
Binária
Jorge Figueiredo

Backtracking
Backtracking and
and Branch-and-Bound
Branch-and-Bound

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Jogo da Troca de Bolas Jogo da Troca de Bolas

•• nn bolas
bolas vermelhas
vermelhas ee nn bolas
bolas pretas
pretas
•• Tabuleiro
Tabuleiro (uma
(uma linha)
linha) com
com 2n2n ++ 11 posições
posições
•• Bolas
Bolas com
com aamesma
mesma corcor em
em extremidades
extremidades diferentes,
diferentes,ee umum
espaço
espaço vazio
vazio separando
separando oo conjunto
conjunto de
de bolas
bolas diferentes.
diferentes.
•• Movimentos
Movimentos possíveis:
possíveis:
–– Bola
Bola vermelha
vermelha para
para aa esquerda
esquerda ee preta
preta para
para aa direita
direita
–– Mover
Mover umum espaço
espaço sese oo espaço
espaço está
estávazio
vazio
–– Pular
Pular sobre
sobre exatamente
exatamente uma uma bola
bola de
de cor
cor diferente,
diferente, se
seoo
espaço
espaço logo
logo após
após aa bola
bola estiver
estiver vazio
vazio

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Problema do Labirinto Problema do Labirinto

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

1
Jogo do “Resta Um” O Que Estes Problemas Têm em Comum?

•• Tomar
Tomar uma
uma série
série dede decisões
decisões entre
entre várias
várias opções.
opções.
•• Cada
Cada decisão
decisão leva
leva aa um
um novo
novo conjunto
conjunto dede decisões.
decisões.
•• Alguma(s)
Alguma(s) seqüência(s)
seqüência(s) de de decisões
decisões pode(m)
pode(m) conduzir
conduzir aa
solução
solução do
do problema.
problema.
•• Encontrar
Encontrar solução:
solução:
1.
1. Fazer
Fazer uma
uma lista
listacom
com todos
todos os
os candidatos
candidatos possíveis.
possíveis.
2.
2. Examinar
Examinar todas
todas asas respostas
respostas ouou alguma
alguma delas.
delas.
3.
3. Retornar
Retornar aa solução.
solução.
•• Problemas
Problemas dede otimização
otimização

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Como Resolver? Backtracking

•• Estratégia
Estratégia para
para sistematicamente
sistematicamente aa lista
lista de
de possíveis
possíveis
soluções,
soluções, eliminando
eliminando (explicitamente)
(explicitamente) aa verificação
verificação de
de uma
uma
boa
boa parte
parte dos
dos possíveis
possíveis candidatos.
candidatos.
•• Pode
Pode ser
ser considerado
considerado como
como uma
uma variação
variação dede DFS.
DFS.
•• Usa
Usa uma
uma árvore
árvore implícita.
implícita.

Candidatos Restrições

Força bruta: na
Força bruta: na prática
prática esta
estaabordagem
abordagem não não éé muito
muito eficiente
eficiente
porque
porque aa lista
lista de
de candidatos
candidatos éé grande.
grande.
Lixo
Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Idéia Geral: Usando o Espaço de Solução Restrições

•• Soluções
Soluções representadas
representadas por por n-tuplas
n-tuplas ou ou vetores
vetores de
de solução:
solução: •• Restrições Explícitas: correspondem
Restrições Explícitas: correspondem às às regras
regras que que
–– <v <v11,, vv22,, ...,
..., vvnn>> restringem
restringem cada
cada vvi i em
em tomar
tomar valores
valores de
de um
um determinado
determinado
–– Cada conjunto.
conjunto. Está
Estárelacionado
relacionado com com aa representação
representação do do problema
problema
Cada vvi i éé escolhido
escolhido aa partir
partir de
de um
um conjunto
conjunto finito
finito de
de opções
opções ee as
SSi.i. as escolhas
escolhas possíveis.
possíveis.
•• Inicia •• Restrições Implícitas: determinam
Restrições Implícitas: determinam como
como os os vvi’s se relacionam
i’s se relacionam
Inicia com com um um vetorvetor vazio.
vazio. entre
•• Em entre si.
si.
Emcadacada etapaetapa oo vetor vetor éé extendido
extendido com com um
um novo
novo valor.
valor.
•• OO novo
novo vetorvetor éé então então avaliado.
avaliado. Se Se não
não for
for solução
solução parcial,
parcial, oo
último
último valorvalor do do vetor
vetor éé eliminado
eliminado ee outro
outro candidato
candidato éé
considerado.
considerado.

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

2
O Problema das 8 Rainhas Soma de Subconjuntos

•• Colocar
Colocar 88 rainhas
rainhas emem um
um tabuleiro
tabuleiro de de xadrez
xadrez dede modomodo que
que •• Sejam
Sejam nn números
númerospositivos (Wi,i, 11≤≤ ii≤≤ n)
positivos (W n) ee um
um valor
valor positivo
positivo
nenhuma
nenhuma rainha
rainha ataque
ataque umauma outra.
outra. M,
M, achar
achar todos
todos os
ossubconjuntos
subconjuntos de de WWi icuja
cujasoma
soma éé M.
M.
•• Solução:
Solução: uma
uma 8-tupla
8-tupla <v
<v11,, vv22,, …,
…, vv88>>em
em que
que vvi i indica
indica aa coluna
coluna •• Solução:
Solução: uma
uma k-tupla
k-tupla com
com ososíndices
índices dos dos números
números escolhidos.
escolhidos.
da
darainha
rainhai.i.
•• Restrições Explícitas: SSi i=={1,
Restrições Explícitas: {1, 2,
2,3,3,…, 8},11≤≤ ii≤≤ n.
…, 8}, n. •• Restrições inteiro, 11 ≤≤ jj ≤≤n}.
Explícitas: vvi i == {j{j || jj éé inteiro,
Restrições Explícitas: n}.
•• Restrições
Restrições implícitas:
implícitas: •• Restrições
Restrições Implícitas:
Implícitas:
Nenhum vvi i pode
–– Nenhum pode ser
ser igual
igual ao ao outro.
outro. –– vvi i ≠≠ vvj,j, ii≠≠ j.j.
–– Duas
Duas rainhas
rainhas nãonão podem
podem estar estar nana mesma
mesma diagonal.
diagonal. –– ΣΣ ==M. M.
•• Tamanho
Tamanho do do espaço
espaço solução:
solução: –– vvi i << vvi+1 , 1 ≤ i < n.
i+1, 1 ≤ i < n.
–– Força
Força Bruta:
Bruta: 4.426.165.368
4.426.165.368
–– Com
Com R.E.:
R.E.:888..
8

–– Com
Com R.I.:
R.I.: 8!.
8!.
Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Geração da Árvore Exemplo: Problema das 4 rainhas

Para
Para criar
criar aa árvore
árvore que que representa
representa oo espaço
espaço solução
solução fazemos:
fazemos:
1.
1. Começar
Começar da da raiz
raiz ee gerar
gerar outros
outros nós.
nós.
2.
2. UmUm nó nó que
que foi
foi gerado
gerado ee que
que não
não foi
foi totalmente
totalmente explorado
explorado
éé dito
dito nó
nó vivo.
vivo.
3.
3. UmUm nó nó cujos
cujos filhos
filhosestão
estão sendo
sendo gerados
gerados éé dito
dito em
em
expansão.
expansão.
4.
4. Usar
Usar função
função de de poda
poda para detonar aa geração
para detonar geração dede alguns
alguns
filhos,
filhos,sese for
for oocaso.
caso.
5.
5. UmUm nó nó morto
morto éé aquele
aquele que
que foi
foi podado
podado ou ou todos
todos osos filhos
filhos já

foram
foram gerados.
gerados.

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Algoritmo Genérico Mochila Binária

•• Considerar
Considerar nn tipos tipos de
de objetos
objetos (um (um número
número adequado
adequado de
de cada
cada
objeto)
objeto)
Backtrack(v[1..k]) •• Cada
Cada objetoobjeto ii tem:
tem:valor
valor(v
(vi)i) ee peso
peso (w
(wi)i)
► v é um vetor promissor de tamanho k •• Mochila
Mochila com com capacidade
capacidade W W
if v é solução then
•• Para
Para concretizar:
concretizar:
escreva v
for cada vetor promissor w de tamanho k+1 –– WW ==88
em que w[1..k] = v[1..k] do –– oo11:: (w=2,
(w=2, v=3)
v=3)
Backtrack(w[1..k+1]) –– oo22:: (3,
(3, 5)
5)
–– oo33:: (4,
(4, 6)
6)
–– oo44:: (5,
(5, 10)
10)

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

3
Mochila Binária: Algoritmo Mochila Binária (Variação)

•• Um
Um objeto
objeto de
de cada
cada tipo.
tipo.
Backpack(i, r) •• Usar
Usar uma
uma função
função extra
extra que
que limita
limita poda:
poda:
► maior lucro usando objetos de tipos i até n e que não –– Usar
Usar aa estratégia
estratégia gulosa
gulosa para
para mochila
mochila fracionária
fracionária para
para
exceda r computar
computar um um limite
limite superior
superior de de lucro.
lucro.
b←0 –– Ordenar
Ordenar os os objetos
objetos porpor valor/peso.
valor/peso.
for k ← i to n do •• Duas
Duas possibilidades
possibilidades de de backtracking:
backtracking:
if w[k] ≤ r then
–– Limite
Limite de
de peso.
peso.
b ← max(b, v[k]+ Backpack(k, r – w[k]))
return b –– Se
Se não
não existe
existe possibilidade
possibilidade da da melhor
melhor estimativa
estimativa de
de lucro
lucro
ser
ser maior
maior do
do que
que oo melhor
melhor lucro
lucro já
já encontrado.
encontrado.

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Mochila Binária (Variação) Mochila Binária (Variação)

•• Considere
Considere W=
W=16
16 ee os
osseguintes
seguintes 44 objetos:
objetos:

Valor = R$0
ii vvi i wwi i vvi/w
i/wi i
Peso = 0
E.L = R$ 115
11 R$45
R$45 33 R$15
R$15
22 R$30
R$30 55 R$
R$ 66
33 R$45
R$45 99 R$
R$ 55 Valor = R$45 Valor = R$0
Peso = 3 Peso = 0
44 R$10
R$10 55 R$
R$ 22 E.L = R$ 115 E.L = R$ 79

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Mochila Binária (Variação) Branch-and-Bound

R$0
•• Variação
Variação de
de backtracking.
backtracking.
0
R$ 115 •• Necessidade
Necessidade dede função
função de
de poda.
poda.
R$45
3
R$0
0 •• Em
Em alguns
alguns problemas,
problemas, poda
poda pode
pode ser
ser realizada
realizada mais
mais cedo
cedo se
se
R$ 115 R$ 79
usarmos
usarmos BFS
BFS em
emvezvez de
de DFS.
DFS.
R$75
8
R$45
3
X •• BnB
BnB == Backtracking
Backtracking ++ Função
Função de
de poda
poda –– DFS
DFS ++ BFS
BFS++PQPQ
R$ 115 R$ 96

R$120
17
R$75
8
max R$90
12
R$45
R$0
3 0
R$ 96 R$R$
55115
R$ 85

X X
R$85 R$75 R$90
R$100
13 8 12
17
R$ 85 R$ 75 R$ 90

X X X X

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

4
Mochila Binária (Variação) Mochila Binária (BnB)

•• Considere
Considere W=
W=16
16 ee os
osseguintes
seguintes 44 objetos:
objetos: R$0
0
R$ 115

R$45 R$0
ii vvi i wwi i vvi/w
i/wi i
3 0
R$ 115 R$ 79

11 R$45
R$45 33 R$15
R$15
22 R$30 55 R$
R$75 R$45
X
R$30 R$ 66 8
R$ 115
3
R$ 96

33 R$45
R$45 99 R$
R$ 55
44 R$10 55 R$ max R$90 R$45
R$0

R$ 22
R$120 R$75
R$10 17 8
R$ 85
12
R$ 96
3 0
R$R$
55115

X X X
R$90
R$100
12
17
R$ 90

X X

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Problema de Atribuição de Tarefas Problema de Atribuição de Tarefas

•n
•n agentes
agentes para
para nn tarefas.
tarefas. •• Usar
Usar BnB.
BnB.
•Cada
•Cada agente
agente deve
deve executar
executar exatamente
exatamente uma uma única
única tarefa.
tarefa. •• Identificar
Identificarfunção
função de
de poda.
poda.
•Se
•Se ao
ao agente
agente ii éé atribuída
atribuída aa tarefa
tarefa j,j, um
um custo
custo CCi,ji,jéé •• Guiar
Guiar BFS
BFS (Best-first
(Best-firstSearch)
Search)
identificado.
identificado.
•Problema
•Problema éé atribuir
atribuir tarefas
tarefas aos
aos agentes
agentes parapara minimizar
minimizar oo custo
custo
total
total de
de executar
executar as as nntarefas.
tarefas. 1 2 3 4 87
A 11 12 18 40
1 2 3 4 B 14 15 13 22 58
A 11 12 18 40 C 11 17 19 23
B 14 15 13 22 D 17 14 20 28
C 11 17 19 23 73 [58..73]
D 17 14 20 28
Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Problema de Atribuição de Tarefas Problema de Atribuição de Tarefas

1 2 3 4 1 2 3 4
A 11 12 18 40
[58..73] A 11 12 18 40
[58..73]
B 14 15 13 22 B 14 15 13 22
C 11 17 19 23 C 11 17 19 23
D 17 14 20 28 D 17 14 20 28

A → 1 60 A → 1 60

A → 2 58 A → 2 58

A → 3 65 A → 3 65

A → 4 78 A → 4 78

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

5
Problema de Atribuição de Tarefas Problema de Atribuição de Tarefas

1 2 3 4 1 2 3 4
A 11 12 18 40
[58..73] A 11 12 18 40
[58..73]
B 14 15 13 22 B 14 15 13 22
C 11 17 19 23 C 11 17 19 23
D 17 14 20 28 D 17 14 20 28

A → 1 60 A → 2; B → 1 68 A → 1 60 A → 2; B → 1 68

58 58
A→2 A → 2; B → 3 59 A→2 A → 2; B → 3 59

A → 3 65 A → 2; B → 4 64 A → 3 65 A → 2; B → 4 64

A → 4 78 A → 4 78

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Problema de Atribuição de Tarefas Problema de Atribuição de Tarefas

1 2 3 4 1 2 3 4
A 11 12 18 40
[58..73] A 11 12 18 40
[58..64]
B 14 15 13 22 B 14 15 13 22
C 11 17 19 23 C 11 17 19 23
D 17 14 20 28 D 17 14 20 28

A → 1 60 A → 2; B → 1 68 A → 2; B → 3; c → 1; d → 4 A → 1 60 A → 2; B → 1 68 A → 2; B → 3; c → 1; d → 4

58 64 58 64
A→2 A → 2; B → 3 59 A→2 A → 2; B → 3 59

A → 3 65 A → 2; B → 4 64 A → 2; B → 3; c → 4; d → 1 A → 3 65 A → 2; B → 4 64 A → 2; B → 3; c → 4; d → 1

65 65
A → 4 78 A → 4 78

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Eficiência de Backtracking e BnB Exercício: O Problema do Caixeiro Viajante

•• Fatores
Fatores que
que afetam
afetam aa eficiência:
eficiência:
–– tempo
tempo para
para gerar
gerar oo próximo
próximo vvkk;;
–– Cardinalidade
Cardinalidade de de SSkksatisfazendo
satisfazendo as as restrições;
restrições;
–– tempo
tempo dede execução
execução da da função
função de de poda;
poda;
–– Cardinalidade
Cardinalidade de de SSkksatisfazendo
satisfazendo aa função
função dede poda.
poda.
•• Uma
Uma boa
boa função
função dede poda
poda reduz
reduz substancialmente
substancialmente oo número
número
de
de nodos
nodos considerados.
considerados.
•• Existe
Existe um tradeoff: uma
um tradeoff: uma boaboa função
função de de poda
poda versus
versus oo tempo
tempo
de
de avaliá-la.
avaliá-la.
•• Para
Para estimar
estimar oo número
número de de nodos
nodos gerados,
gerados, podemos
podemos usar
usar
Análise Monte-Carlo (simulação
Análise Monte-Carlo (simulação estatística).
estatística).

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

6
Exercício: O Problema do Caixeiro Viajante

Análise e Técnicas de Algoritmos – 2005.1 © Jorge Figueiredo, DSC/UFCG

Вам также может понравиться