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