Você está na página 1de 9

16/05/2014

Projeto de algoritmos
Fora bruta (tentativa e erro)
Emerson Henrique da Silva
Curso de Cincia da computao
Anlise e projeto de algoritmos

Contextualizao
Mtodo de busca exaustiva, tambm conhecido como gerar e
testar.
Resoluo de problemas por mtodo trivial.
Enumera todas as possveis solues e verifica cada candidata.
Exemplo: encontrar todos os divisores de um nmero natural.

Aplicvel em problemas quando o tamanho do


problema limitado ou ainda quando h heursticas
que restrinjam o nmero de solues candidatas.
Mtodo que aplica a fora do computador ao invs
da criatividade do programador.
A resoluo feita a partir do prprio enunciado.
Apenas faa.
2

16/05/2014

Contextualizao
A tcnica, no entanto, tem sua relevncia no projeto de
algoritmos.
Em dados casos no preciso explorar algoritmos mais
eficientes, pois o ganho mnimo.
Ex: somar n nmeros.

E para alguns problemas, gera algoritmos razoveis,


sem limitaes no tamanho da instncia:
Multiplicao de matrizes
Localizao de cadeias de caracteres numa string.

A palavra-chave : Velocidade aceitvel!


3

Busca sequencial
Qual a forma mais simples de encontrar um valor numa lista?
Busca sequencial
Busca sequencial(A[0..n],K)
// K = Chave de busca
// A = Lista de tamanho n
A[n] := K;
i := 0;
Enquanto A[i] K faa
i := i + 1;
Se i < n
retornar i
seno
retornar -1.

16/05/2014

Busca de padro
Outro exemplo a busca de padres. Dado um
texto de tamanho n, verifica-se uma cadeia de
tamanho m, com m < n:
BuscaPadrao(texto[0 ... n-1], padrao[0 ... m-1])
Para i 0 at n m faa
j 0;
Enquanto j < m e padrao[j] = texto[i + j] faa
j j + 1;
Se j = m ento
Retornar i
Retornar -1

Definio
Na localizao de uma cadeia de tamanho m sobre
um texto de tamanho n, tem um custo, no pior caso
de O(m + n) e consumo constante de memria.
Razovel para:
Entradas pequenas;
Alguns problemas importantes (Selection sort, bubble
sort).

16/05/2014

Exerccios
Dados n pontos no plano, de coordenadas P(x,y),
calcular quais deles esto mais prximos. A
distncia entre dois pontos Pi(xi,yi) e Pj(xj,yj)
definida pela distncia euclidiana:
, =

( ) +( )

Elabore um algoritmo de fora bruta para o problema.


Calcule sua complexidade e analise se h melhorias que
podem ser feitas na reduo do custo computacional
7

Exerccios
Problema da mochila:
Dados n itens com:
Pesos: w1, w2, ..., wn
Valores: v1, v2, ..., vn
E uma mochila com capacidade W

Ache um subconjunto de itens mais valiosos que caibam na mochila.


Use o mtodo de busca exaustiva para resoluo, com W=16:
Item

Peso

Valor

20

30

10

50

10
8

16/05/2014

Backtracking
Essa uma tcnica que minimiza os efeitos da fora
bruta pela eliminao de mltiplas solues que
podem ser descartadas sem serem examinadas.
Um exemplo disso a busca em profundidade:
Um rvore percorrida de cima para baixo e da
esquerda para direita.
Quando a pesquisa falha, ou encontrado uma folha,
entra em funcionamento o backtracking, que faz com
que o sistema retorne pelo mesmo caminho para buscar
outras alternativas.

Backtracking

Backtracking sem salto

Backtracking com salto

10

16/05/2014

Backtracking
Problema das 8-rainhas
Tentativa(inteiro i)
{iniciar seleo de posio para a selecionar o i-sima rainha;
Faa
{ Fazer prxima seleo;
Se (rainha est salva)
{ posicionar rainha;
Se (i < n)
{ Tentativa(i+1);
Se (insucesso)
remover rainha;
}
}
} Enquanto (sem sucesso E h mais posies);
}

11

Backtracking
i

Cada insero de
rainha no tabuleiro, a
posio X[i]
armazenada.
Uma nova chamada
recursiva efetuada
Tentativa (i + 1),
iniciando um novo
ciclo:

12

16/05/2014

Backtracking
Se h cruzamento de
rainhas, ento muda a
nova rainha para a
coluna direita:
E assim se repete at
no haver mais
conflitos. Quando isso
ocorre, uma nota
Tentativa(i+1)
levantada:

13

Backtracking
Na terceira linha,
encontra-se mais um
conflito, ento abre-se
nova tentativa.

O conflito ainda
persiste, ento abre-se
nova tentativa.
i

14

16/05/2014

Backtracking
Continua em conflito.
i

E segue at s ltima
possibilidade. Ao
detectar a exausto, o
backtracking retoma a
recurso para Tentativa
(i 1)

15

Backtracking
Ao voltar do nvel 3 para
o 2, retomando o estado
anterior:

E continua avanando a
rainha direta.
Encerrando, abre nova
Tentativa (i+1),
reiniciando o processo
at a soluo.

16

16/05/2014

Backtracking
Ao voltar do nvel 3
para o 2, retomando o
estado anterior:

E continua avanando a
rainha direta:

17

Exerccio
1.

Como possvel reduzir o espao de busca do problema das 8rainhas usando o backtracking?

2.

Considere a funcionalidade de Rotas do Google Maps, justifique:


um mtodo de tentativa-erro?
Utiliza backtracking?

3)

Realize uma pesquisa sobre os mtodos de poda de busca exaustiva,


pelos mtodos de:
Poda heurstica.
Memorizao.
Poda alfa-beta.

Visite http://www.turbulence.org/spotlight/thinking/chess.html
18

Você também pode gostar