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 : 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(n 2 ) 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(n 2 log n) - é conjectura Cristina Ribeiro Retrocesso - 1
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) x1 = 0 x5 = 8 x6 = 10 D= {1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7} 7 - maior valor em D -> x4 = 7 ou x2 = 3 x4 = 7 x2 = 3 distâncias x6-7 = 3 e x5-7 = 1 estão em D 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
x4 = 7 não conduziu a solução tenta-se agora x2 = 3 x1 = 0 x2 = 3 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 x5 = 8 x6 = 10 D= {1, 2, 3, 5, 5} x1 = 0 x2 = 3 x3 = 5 x4 = 6 x5 = 8 x6 = 10 D = { } x 1 =0, x 5 =10 x 5 =8 Árvore de decisão x ** 4 =7 x 2 =3 * * x 3 =6 x 2 =4 x 3 =4 x 4 =6 x 3 =5 Cristina Ribeiro Retrocesso - 3
Na ausência de retrocesso Análise D pode ser mantido como árvore de pequisa equilibrada O(n 2 ) operações em D remoção: D tem O(n 2 ) elementos, não há reinserções, total é O(n 2 ) pesquisa: 1 tentativa de colocação faz no máximo 2n, total é O(n 2 ) Tempo total é O(n 2 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? : 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
imax 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 X O X X O X X O X O X...... tabela de transposição Cristina Ribeiro Retrocesso - 5
Árvore do jogo Estrutura da pesquisa de posições (nós) e valores das avaliações 44 44 44 68 27 44 68 C 42 27 86 44 68 73 42 25 27 7 72 86 9 44 50 68 73 A Cortes α β 44 Estrutura da pesquisa de posições (nós) e valores das avaliações 40 40 D 40 27 73 40 27 B 73 23 30 40 19 27 Cristina Ribeiro Retrocesso - 6
Corte α 44 44 40 40 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 44 68 68 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