Algoritmos de retrocesso Problema da portagem

Propaganda
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Algoritmos de retrocesso
• Algoritmos em que se geram escolhas que vão sendo testadas e eventualmente
refeitas
• Problemas para os quais não existem algoritmos eficientes: retrocesso é melhor
que pesquisa exaustiva
– solução é gerada e avaliada parcialmente
– quando uma solução parcial não satisfaz objectivos, retrocesso apenas desfaz última
escolha
– evita-se a pesquisa em ramos que garantidamente não levam a solução - poda da
árvore de pesquisa
• Exemplo: arranjo da mobília numa casa
– grande número de possibilidades
– cada peça de mobília é colocada, solução é arranjo satisfatório
– chegando a ponto onde qualquer arranjo é inconveniente, desfaz-se o último passo e
tenta-se alternativa
– muitos arranjos nunca são testados
Problema da portagem
• Dados: n pontos p1, p2, ..., pn situados no eixo dos xx
– xi é a coordenada x de pi
– x1= 0
– determinam n (n-1)/2 distâncias d1, d2, ..., dm da forma |xi - xj|
• Distâncias podem ser geradas em tempo O(n2)
• Problema inverso: coordenadas dos pontos a partir das distâncias: mais difícil
– Não há algoritmo garantido como polinomial para o problema
• D - conjunto das distâncias |D| = m = n (n-1) / 2
Algoritmo que se segue: O(n2 log n) - é conjectura
Cristina Ribeiro
Retrocesso - 1
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Exemplo
D= {1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8, 10}
|D| = 15 -> n = 6
x1 = 0, x6 = 10
x1 = 0
x6 = 10
D= {1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8}
maior distância: 8 então x2 = 2 ou x5 = 8 (escolha é indiferente)
x5 = 8
x1 = 0
x6 = 10
D= {1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7}
Exemplo
7 - maior valor em D -> x4 = 7 ou x2 = 3
x4 = 7
distâncias x6 - 7 = 3 e x5 - 7 = 1 estão em D
x2 = 3
distâncias 3-x1 = 3 e x5 - 3 = 5 estão em D
x1 = 0
x4 = 7
x5 = 8
x6 = 10
D= {2, 2, 3, 3, 4, 5, 5, 5, 6}
6 - maior valor em D -> x3 = 6 ou x2 = 4
x3 = 6
distância
x4 - x3 = 1 impossível, já não existe 1 em D
x2 = 4
distâncias x2-x1 = 4
e x5 - x2 = 4 impossível, só 1 vez 4 em D
É preciso retroceder!
Cristina Ribeiro
Retrocesso - 2
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Exemplo
x4 = 7
não conduziu a solução
tenta-se agora
x1 = 0
x2 = 3
x2 = 3
x5 = 8
x6 = 10
x5 = 8
x6 = 10
D= {1, 2, 2, 3, 3, 4, 5, 5, 6}
6 - maior valor em D -> x4 = 6 ou x3 = 4
x3 = 4
impossível, só 1 vez 4 em D
x1 = 0
x2 = 3
x4 = 6
D= {1, 2, 3, 5, 5}
Exemplo
x1 = 0
x2 = 3
x3 = 5
x4 = 6
x5 = 8
x6 = 10
D={}
x1=0, x5=10
Árvore de decisão
x5=8
x**
4=7
*
x3=6
x2=3
*
x2=4
x3=4
x4=6
x3=5
Cristina Ribeiro
Retrocesso - 3
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Análise
• Na ausência de retrocesso
– D pode ser mantido como árvore de pequisa equilibrada
• O(n2) operações em D
• remoção: D tem O(n2) elementos, não há reinserções, total é O(n2)
• pesquisa: 1 tentativa de colocação faz no máximo 2n, total é O(n2)
– Tempo total é O(n2 log n)
• Com retrocesso: perde-se eficiência
– não existe limite polinomial para o retrocesso requerido
– não estão identificados “exemplos patológicos”
– com pontos de coordenadas inteiras e distribuídas uniformemente, conjectura é que
retrocesso não ocorre mais que O(1)
Jogos
• Como jogar automaticamente um jogo estratégico?
• Exemplo: jogo do galo
– pode construir-se algoritmo que nunca perde e aproveita oportunidades para ganhar
– posições críticas armazenadas em tabela
– escolha de jogada baseada na posição corrente usando uma tabela
– ... todo a análise do jogo feita pelo programador
• Em geral, em jogos não triviais
– não é possível dispor de decisões para todos os caminhos a partir de uma posição
– é preciso recomputar a cada jogada
– é impraticável explorar todas as hipóteses
Cristina Ribeiro
Retrocesso - 4
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Minimax
• Estratégia minimax
– função de avaliação da “qualidade” de uma posição
• 1 se posição de vitória
• 0 se é empate
• -1 se é para perder
– se se pode fazer avaliação por inspecção do tabuleiro: posição terminal
– posição não terminal: valor é determinado assumindo recursivamente jogadas
óptimas de ambos os lados
Um jogador tenta minimizar e o outro maximizar o valor da posição
Para posição P:
• Se é a minha vez de jogar
– avalio recursivamente as posições sucessoras Ps, escolhendo o valor maior;
– ao avaliar Ps as suas sucessoras são avaliadas e o menor valor é escolhido (caso mais
favorável para o oponente)
Pesquisa com limite de profundidade
• Em jogos complexos: inviável pesquisar todos os nós terminais para avaliar a
posição
– parar a determinada profundidade
– nós onde pára a recursão tratados como nós terminais
– função de estimativa para avaliar nós terminais
• Ex: xadrez - avaliar peças e suas posições
• Para aumentar o factor de previsão - métodos que avaliam menos nós e não
perdem informação sobre posições já avaliadas
X
O
X
X O X
...
tabela de
transposição
X
Cristina Ribeiro
X O
X O X
...
Retrocesso - 5
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Árvore do jogo
• Estrutura da pesquisa de posições (nós) e valores das avaliações
44
44
Min
44
44
42
42
27
25
27
68
86
7
Max
68
27
72
44
86
9
C
68
44
Max
50
Max
73
68
73
Min
A
Cortes α−β
• Estrutura da pesquisa de posições (nós) e valores das avaliações
Max
44
40
40
D
40
73
Cristina Ribeiro
40
23
30
27
40
19
Max
Min
27
73
Min
B
Max
27
Retrocesso - 6
FEUP
Licenciatura em Engenharia Informática e Computação
Algoritmos e Estruturas de Dados II
1998/99
Corte α
≥44
Max
≤40
44
40
Min
D?
Valor em D não pode aumentar resultado na raiz: o seu nó pai é min e tem valor
garantidamente inferior ao conseguido na raiz até ao momento
Corte β
≤ 44
Min
≥68
44
68
Max
D?
Valor em C não pode aumentar resultado na raiz: nó pai é max e tem valor
garantidamente superior ao conseguido na raiz até ao momento
Cristina Ribeiro
Retrocesso - 7
Download