Inteligência Artificial Estratégias de Resolução de Problemas Considerando Adversários (Jogos) Parte Agenda Introdução à procura adversária Algoritmo Mini-Max Poda Alpha-Beta Parte 2 Decisões imperfeitas Jogos não Determinísticos
Motivação Os procedimentos de procura cega e procura heurística apenas resultam em problemas (eventualmente jogos) de um único agente, dado que: Não existe a noção de turno, se existir mais de um agente envolvido, estes actuam de forma cooperativa. Não se considera a possibilidade de jogadas do adversário. Utilidade dos jogos em Problemas Considerando Adversários Os jogos são ideais para estudar o uso de estratégias adversárias, dado que: São aplicações atractivas para métodos de IA: Formulação simples do problema (acções bem definidas); Ambiente acessível; Abstracção (representação simplificada de problemas reais); Sinónimo de inteligência; Têm uma boa medida para o desempenho: a vitória. 2
Utilidade dos jogos em Problemas Considerando Adversários Conduzem aos seguintes desafios: Tamanho + limitação de tempo (35 00 nós para xadrez); Incerteza devido ao outro jogador; Problema de contingência : o agente deve agir antes de completar a procura (busca). Características dos Jogos Ambientes competitivos, nos quais os agentes têm objectivos que estão em conflito. Os jogos são normalmente classificados como de habilidade, e/ou de sorte. 3
Tipos de Jogos Tipos de Jogos: Informação: Perfeita: Xadrez, Damas, Go, Othello Imperfeitas: Poker, Bridge, Bisca, Copas Sorte ou Determinísticos: Determinísticos: Xadrez, Damas, Go, Othello. Jogos de Sorte: Gamão, Monopólio, Poker Plano de Ataque : Algoritmo para o jogo perfeito Horizonte finito, avaliação aproximada Cortes na árvores para reduzir custos Jogos e IA Quando os computadores se tornaram programáveis, em 950, Claude Shannon e Alan Turing programaram o primeiro jogo de Xadrez. Prova que uma máquina pode, de facto, fazer algo que se pensava requerer inteligência. As regras são simples, mas o jogo é complexo. Mundo totalmente acessível ao agente. Factor de ramificação médio é de 35, partida com 50 jogadas => 35 00 folhas numa árvore de pesquisa (embora só existam 0 40 posições legais). Algumas das características que tornaram o xadrez atractivo computacionalmente são partilhadas por outros jogos. 4
Jogos e IA No xadrez, o jogo desenvolve-se entre dois agentes rivais. O jogo é completamente acessível para ambos os agentes. Isto faz com que seja possível pensar o desenvolvimento do jogo como uma procura num espaço formado pelas posições do mesmo, as quais são controladas alternativamente por cada um dos rivais. Jogos e IA Como dizíamos, o jogo desenvolve-se entre dois jogadores que são oponentes aquando os seus objectivos. Tradicionalmente, estes jogadores recebem os nomes de max e min por motivos que veremos a seguir. Max começa o jogo e a partir dali move em forma alternada até o fim do jogo. 5
Jogos e IA Um jogo pode definir-se formalmente como um problema de procura, com as seguintes características: Um estado inicial que inclui a posição do tabuleiro e a indicação de quem deve jogar. Um conjunto de operadores que definem os movimentos válidos á disposição dos jogadores. Um teste de terminação que estabelece quando o jogo está finalizado. Os estados onde o jogo acaba chamam-se finais. Uma função de utilidade que atribui um valor numérico ao estado final do jogo, que representa os pontos que max pode ganhar no jogo. Sendo que usualmente os valores são (ganha max), 0 (empate), (ganha min). Jogos e IA Num problema de procura, é suficiente que max, que começa o jogo, expandisse a árvore das jogadas e encontrasse o caminho até há meta, no qual seria um estado onde max ganhava. Porém, o jogador min também quer ganhar o jogo! Isto obriga a max a encontrar uma estratégia que lhe permita atingir o seu objectivo. 6
x x x x x x max x x x o x o x x o min o o x x x o x x max o x o o x x o x x x Terminais oo x x x o oo Utilidade para max 0 + Max e Min Vamos utilizar uma convenção para representar graficamente as situações do jogo em forma de árvore. O quadrado e o triângulo representam as jogadas do max e o círculo e o triângulo invertido as jogadas do min. e ou e max min max min 7
Max e Min max min max min Capa ou ply Max e Min max min max min Capa ou ply 8
O Algoritmo Minimax Este algoritmo está desenhado para determinar uma estratégia óptima para que max ganhe. Dessa forma pode decidir qual é a melhor escolha a cada turno onde tem que jogar. As suposições fundamentais são duas: max vá realizar sempre a sua melhor jogada. min vá realizar sempre a pior jogada para max. O Algoritmo Minimax. Gerar a árvore completa até aos estados terminais. 2. Aplicar a função utilidade a esses estados. 3. Propagar o valor da utilidade da seguinte forma: O melhor valor para Min (ou seja, o pior para Max). 4. Escolher o movimento com o valor mais elevado. 5. O valor no nó raiz é o valor máximo que max pode obter. O Minimax faz procura cega em profundidade. 9
Exemplo 3 0 4 0 2 5 7 Exemplo 3 4 2 7 3 0 4 0 2 5 7 0
Exemplo 3 2 3 4 2 7 3 0 4 0 2 5 7 Exemplo 3 3 2 3 4 2 7 3 0 4 0 2 5 7
Exemplo 2 Exemplo 2 2
Exemplo 2 Exemplo 2 3
Exemplo 2 Exemplo 2 4
Algoritmo Minimax function MINIMAX-DECISION(state) returns an action inputs: state, current state in game r MAX-VALUE(state) return the action in SUCESSORS(state) with value r function MAX-VALUE(state) returns a utility value if TERMINAL-TEST(state) then return UTILITY(state) v - for a, s in SUCESSORS(state) do v MAX(v,MIN_VALUE(s)) return v function MIN-VALUE(state) returns a utility value if TERMINAL-TEST(state) then return UTILITY(state) v for a, s in SUCESSORS(state) do v MIN(v,MAX_VALUE(s)) return v Propriedades do Minimax Completo? Sim, se a árvore for finita! Pode existir uma estratégia finita mesmo numa árvore infinita! Óptimo? Sim, contra um adversário óptimo! E se o adversário não for óptimo? O Max vai jogar ainda melhor! Complexidade no Tempo? O (b m ) Onde: b = factor de ramificação (movimentos válidos) m = profundidade Complexidade no Espaço? O (b m) (exploração primeiro em profundidade). Problema: Inviável para qualquer jogo minimamente complexo. 5
Exercício Dados 5 palitos cada jogador pode retirar, 2 ou 3 por turno. Perde o jogador que retira o último palito. Será que max pode ganhar o jogo? 5 4 3 2 3 2 2 0 0 2 0 0 0 0 6
5 4 3 2 3 2 2 0 0 2 0 0 0 0 5 4 3 2 3 2 2 0 0 2 0 0 0 0 7
5 4 3 2 3 2 2 0 0 2 0 0 0 0 O Max perde o jogo 5 X 4 3 2 Y 3 2 2 0 0 2 0 0 0 Pergunta: Preciso saber o valor de X Para calcular Y? 0 8
Poda Alpha-Beta O que é a poda (corte)? É o processo de eliminar uma ramificação da árvore de pesquisa de forma a que não seja examinada. Porquê podar? Para eliminar nós desnecessários à pesquisa. Para acelerar o processo de pesquisa. Poda Alpha-Beta A poda Alpha-Beta não afecta o resultado final. Boa ordenação melhora a eficiência dos cortes. Com ordenação perfeita: complexidade no tempo = O (b m/2 ) Duplica a profundidade de pesquisa Uma técnica particular para encontrar a solução óptima de acordo com a profundidade limite de pesquisa é usando funções de avaliação. 9
Poda Alpha-Beta Retorna as mesmas escolhas que o Minimax, mas examina menos nós. O nome deriva das duas variáveis que são passadas durante o percurso de pesquisa e que restringem o conjunto das soluções possíveis: Alpha representa o valor mais alto encontrado no caminho de Max. Beta representa o valor mais baixo encontrado no caminho de Min. Implementação Ajustar o alpha do nó da raiz á infinidade negativa e beta á infinidade positiva. Procurar a profundidade, propagando o alpha e beta para todos os nós visitados até alcançar a profundidade pretendida. Aplicar a função de avaliação para começar a utilidade desse nó. Se o pai desse nó for um nó Max, e a utilidade calculada for maior do que o valor actual do alpha pai, substitui esse valor do alpha com esta utilidade. 20
Implementação Se o pai deste nó é um nó MIN, e o valor de utilidade calculado é menor que o valor beta de seus pais, coloca em beta o valor de utilidade obtido. Com base nestes valores, compara os valores alpha e beta dos pais deste nó para determinar se deve olhar para as outras folhas ou então se deve retornar os valores conseguidos (backtrack up). Continua a pesquisa primeiro em profundidade desta forma, até que todos os passos com mais potência tenham sido avaliados. Poda Alpha-Beta. Exemplo 2
Poda Alpha-Beta. Exemplo - Poda Alpha-Beta. Exemplo - + 22
Poda Alpha-Beta. Exemplo - + - Poda Alpha-Beta. Exemplo - + - 23
Poda Alpha-Beta. Exemplo - + max(, - ) = Poda Alpha-Beta. Exemplo - + 24
Poda Alpha-Beta. Exemplo - + + Poda Alpha-Beta. Exemplo - + + 25
Poda Alpha-Beta. Exemplo - + min(, + ) = Poda Alpha-Beta. Exemplo - + 26
Poda Alpha-Beta. Exemplo - + Poda Alpha-Beta. Exemplo - + min(, ) = 27
Poda Alpha-Beta. Exemplo - + Poda Alpha-Beta. Exemplo - + 28
Poda Alpha-Beta. Exemplo - + max(, ) = Poda Alpha-Beta. Exemplo - + 29
Poda Alpha-Beta. Exemplo - min(, + ) = Poda Alpha-Beta. Exemplo - 30
Poda Alpha-Beta. Exemplo max(, - ) = Poda Alpha-Beta. Exemplo + 3
Poda Alpha-Beta. Exemplo + Poda Alpha-Beta. Exemplo 32
Poda Alpha-Beta. Exemplo Poda Alpha-Beta. Exemplo - 33
Poda Alpha-Beta. Exemplo - Poda Alpha-Beta. Exemplo max(, - ) = 34
Poda Alpha-Beta. Exemplo Poda Alpha-Beta. Exemplo 35
Poda Alpha-Beta. Exemplo Poda Alpha-Beta. Exemplo 36
Poda Alpha-Beta. Exemplo max(, ) = Poda Alpha-Beta. Exemplo 37
Poda Alpha-Beta. Exemplo Poda Alfa-Beta Nó max 38
Poda Alfa-Beta Nó min Poda Alfa-Beta Nó min 0.03-0. -0.05 39
0.03 Poda Alfa-Beta -0.05 Nó min O valor a propagar será sempre menor ou igual que 0.05-0. -0.05 Algoritmo Alpha-Beta function ALPHA-BETA-SEARCH(state) returns an action inputs: state, current state in game v MAX-VALUE(state, -, + ) return the action in SUCESSORS(state) with value v function MAX-VALUE(state, α, β ) returns a utility value inputs: state, current state in game α, the value of the best alternative for MAX along the path to state β, the value of the best alternative for MIN along the path to state if TERMINAL-TEST(state) then return UTILITY(state) v - for a, s in SUCESSORS(state) do v MAX(v, MIN-VALUE(s, α, β)) if v βthen return v α MAX(β,v) return v 40
Algoritmo Alpha-Beta (cont.) function MIN-VALUE(state, α, β ) returns a utility value inputs: state, current state in game α, the value of the best alternative for MAX along the path to state β, the value of the best alternative for MIN along the path to state if TERMINAL-TEST(state) then return UTILITY(state) v + for a, s in SUCESSORS(state) do v MIN(v, MAX-VALUE(s, α, β,)) if v αthen return v β MAX(β,v) return v Eficiência A eficiência depende da ordem como é feita a progressão da pesquisa. Se b é o factor de ramificação e m é a profundidade da procura, o melhor caso para alpha-beta é O (b m/2 ),isto é, a mesma quantidade que o Minimax numa árvore com metade da profundidade. Comparado com o melhor caso do Minimax que é de O (b m ), isto é, examina a mesma quantidade de estados, no pior dos casos. 4
Problemas Se só existe um movimento válido, este algoritmo continuará a gerar uma árvore inteira de pesquisa. Designado para identificar o melhor movimento e não para diferenciar entre outros movimentos. Menosprezam movimentos que penalizam algo no início para obter melhores posições mais tarde. Avaliação da utilidade usualmente não é exacta. Assume que o oponente escolherá sempre o melhor movimento possível. Resumindo Um Jogo é definido pelo seu estado inicial (disposição das peças no tabuleiro), o operador (que define os movimentos válidos), um teste terminal (que nos diz quando um jogo chega ao fim), e uma função de utilidade (que nos diz quem ganhou). Em jogos com informação perfeita entre dois jogadores, o algoritmo minimax pode determinar a melhor jogada (assumindo que o oponente joga sempre da melhor maneira), enumerando por completo toda a árvore de jogo. O algoritmo alpha-beta é mais eficiente que o minimax por causa dos cortes efectuados a árvore. 42
Fim Parte Introdução à Inteligência Artificial Estratégias de Resolução de Problemas Considerando Adversários (Jogos) 43
Parte Agenda Introdução à procura adversária Algoritmo Mini-Max Poda Alpha-Beta Parte 2 Decisões imperfeitas Jogos não Determinísticos Decisões Imperfeitas 44
Na maioria dos jogos O espaço de procura é muito grande. Existem restrições a nível de tempo. Por exemplo: o factor de ramificação do xadrez é35 Supondo que o nosso agente procura 000 estados por segundo E tem um tempo limite de 50 segundos Então pode procurar 50.000 posições por movimento Na maioria dos jogos Que equivale a olhar 3 ou 4 jogadas em frente porque 35 3 = 42.875 e 35 4 =.500.625 Um jogador que olha e frente com profundidade 4 não é um grande jogador! Profundidade 4 => Jogador Novato Profundidade 8 => PC, Jogador humano muito bom Profundidade 2 => Deep Blue, Kasparov 45
Críticas ao MiniMax Problemas O tempo gasto é totalmente impraticável, porém o algoritmo serve como base para outros métodos mais realísticos. Complexidade: O (b m ). Para melhorar Cortar a árvore onde a procura seria irrelevante: poda alfa-beta. Porém não é suficiente! Críticas ao MiniMax Para utilizar a função de avaliação preciso de nós terminais. Será que posso avaliar nós intermédios sem ter que chegar ao fim da árvore? 46
Solução Alterar o Minimax ou o Alpha Beta de dois modos: Substituindo a função de utilidade por uma função de avaliação heurística EVAL. Que dá uma estimativa da utilidade das posições. Substituindo o teste terminal por um teste de Cutoff. Que decide quando aplicar a função EVAL. Isto é, quando vou olhar para a frente. A função de avaliação Retorna uma estimativa do valor de utilidade esperado do jogo, de uma dada posição. retorna uma estimativa do valor do próximo movimento. O desempenho de um programa de jogo está dependente da qualidade das funções de avaliação. As diferentes funções de avaliação estão dependentes da natureza do jogo. Função de avaliação simples para o jogo de xadrez: é a soma dos valores das peças brancas em jogo menos a soma dos valores das peças negras em jogo. Como desenhar boas funções de avaliação? 47
Qualidade da função de avaliação As funções de avaliação devem estar de acordo com a função de utilidade, em relação aos estados terminais. Não deve demorar muito tempo (equilíbrio entre exactidão e o custo). Para estados não terminais, a função de avaliação deve estar fortemente relacionada com a actual hipótese de ganhar. Função de peso linear: Função linear EVAL(S)=w f (s)+w 2 f 2 (s)+ +w n f n (s) w i é um peso f i é uma característica da posição Por exemplo no xadrez: w i pode ser o valor de cada peça f i pode ser o número de peças de cada tipo no tabuleiro 48
Exemplo: Xadrez Valores: Peão=, Cavalo=3, castelo=5, rainha=9 Peças Pretas: 5 peões, cavalo, 2 castelos Pontuação = *(5)+3*()+5*(2) = 5+3+0 = 8 Peças Brancas: 5 peões, castelo Pontuação = *(5)+5*() = 5 + 5 = 0 Pontuação total, deste estado de jogo: pretas = 80 = 8 brancas = 08 = -8 Cutoff Deve usar uma procura heurística. Usa uma função de avaliação. Faz uma estimativa da pontuação que um estado de jogo garante. Desenha o espaço de pesquisa até uma certa profundidade. A profundidade é escolhida para limitar o tempo necessário. Coloca os valores estimados no fim dos caminhos. Propaga esses valores até ao topo. 49
Como determinar o Cutoff A profundidade é fixada de modo a não exceder os limites (de custo) impostos pelas regras do jogo. Utilizando um limite de custo por jogada e/ou participante pode utilizar-se um algoritmo similar a profundidade iterada. Como determinar o Cutoff Porém, este tipo de solução pode não ser adequada, já que uma jogada decisiva pode estar no nível seguinte aquele onde a procura fez o corte. Isto é o chamado efeito horizonte. 50
Melhorias no Cutoff Estabilidade (Quiescence) É uma propriedade da função de avaliação. Significa que a função de avaliação comporta-se de maneira estável, isto é, sem produzir grandes mudanças no seu valor. As funções de avaliação só devem ser aplicadas a posições estáveis. São posições em que é improvável haver grandes mudanças de valores no futuro próximo. Posições não estáveis devem ser expandidas até um nó estável ser atingido. Esta pesquisa extra é chamada de pesquisa quiescente. Disponibiliza mais informação sobre um determinado nó da arvore de pesquisa mas pode resultar em perda de informação sobre os outros nós. A esperança é que a função continue com uma variação leve, mantendo o seu comportamento além do horizonte. Melhorias no Cutoff Estabilidade (Quiescence) Zona de Mudanças Zona de Quietude 5
Jogos não Determinísticos Jogos que Incluem o Elemento Sorte Existem elementos externos que afectam o jogo, tais como o lançamento de um dado, o tirar de uma carta ao acaso, o lançar uma moeda, etc. Existem dois tipos de jogos de azar: Jogos de Azar com Informação Perfeita Ex.: Gamão... Jogos de Azar com Informação Imperfeita Ex.: Poker... Deixa de ser possível construir uma árvore de jogo standard tal como nos jogos deterministas. 52
Jogos de Azar com Informação Perfeita O factor sorte passa a ser uma parte integrante do jogo. Passamos então a ter que considerar dois factores em comum para definir um bom jogador: a perícia + factor sorte. Nós de Probabilidades () A árvore de um Jogo de Azar passa a incluir, conjuntamente com os nós MAX e Min, os nós de Probabilidades. Um nó de Probabilidade tem associado estados (ou nós) sucessores, nomeadamente Min ou Max. Cada estado sucessor de um nó de probabilidade tem associada uma probabilidade de ser pesquisado. Ex.: Um nó de probabilidade envolvendo um DADO terá 6 sucessores, cada um deles representando um estado após o lançamento, sendo todos pesquisáveis com a mesma probabilidade de /6. 53
Nós de Probabilidades (2) O Nó de Probabilidade vem mudar a forma como os algoritmos de pesquisa funcionavam anteriormente. Como continuar a tomar as decisões correctas? Não é possível obter o conjunto de todos os movimentos válidos que o adversário tem ao seu dispor, portanto não podemos ter a certeza de como evitar certas jogadas por parte do adversário. Deixámos então de calcular valores exactos para passarmos a calcular valores esperados baseados em probabilidades. Introdução de Nós de Probabilidades 54
Cálculo do Valor Esperado Põe-se então a questão de saber como continuar a escolher a melhor jogada que nos leve para a melhor posição possível? A solução passa por fazer uma generalização do algoritmo Minimax para jogos que incluam nós de probabilidades. Essa generalização, denominada de ExpectiMinimax, em que os Nós Terminais, os Nós Max e Min continuam a ser avaliados como anteriormente e os Nós de Probabilidades são avaliados com base na média de todas as suas posições possíveis. Algoritmo ExpectiMinimax 55
Árvore com nós de probabilidades MAX Prob. MIN Prob. MAX 3.56.6.4 3.0 4.4 3.6 3.0 5.8 4.4.6.4.6.4.6.4.6.4 4 3 3 3 5 7 6 2 2 43 2 3 2 35 2 7 5 6 2 Avaliação de posições em jogos com nós de probabilidades Para o Minimax, qualquer alteração no valor de avaliação nas folhas não afecta qualquer tomada de decisão. Para o ExpectiMinimax, devido á introdução de nós de probabilidades, apenas transformações lineares positivas vão manter a mesma tomada de decisão. 56
Complexidade do ExpectiMinimax Enquanto no Minimax tínhamos O(b m ), no ExpectiMinimax vamos ter O(b m n m ), onde n é o número de lançamentos efectuados. O Custo extra torna irrealista olhar muito á frente. A nossa habilidade de olhar mais á frente está dependente da quantidade de eventos aleatórios que possam ocorrer. Complexidade do ExpectiMinimax Em jogos de azar, não existe uma sequência exacta de movimentos, pois para que essa sequência exista é necessário em primeiro lugar, por exemplo, lançar um dado. Devido a não existirem sequências exactas de movimentos torna-se impossível aplicar os cortes Alfa-Beta a estes casos. Será então possível, com vista a reduzir esta complexidade, transportar a ideia dos cortes Alfa- Beta para jogos que incluam nós com probabilidades? Sim! 57
*-Minimax Bruce Ballard foi o primeiro a desenvolver esta técnica, chamada *-Minimax, para cortes nos nós de probabilidades. Ele propôs duas versões do seu algoritmo, chamadas de Star e Star2 (mais tarde refinada para Star2.5). Nos nós Min e Max vamos continuar a aplicar os cortes Alfa-Beta, visto que não foi alterada a definição dos nós Min e Max, apenas foi introduzido um novo tipo de nó. *-Minimax Suponhamos que nos encontrámos num nó de probabilidade. Será possível encontrar um limite que nos dê a variação de valores todos os sucessores deste nó, sem ser necessário examinar um por um? A primeira vista pode parecer impossível porque esse limite será a média de todos os nós sucessores. Antes de efectuarmos o lançamento do dado essa média poderá ser qualquer valor. A solução passa por impor limites aos valores atribuídos pela função de Utilidade. 58
*-Minimax: Algoritmo Star *-Minimax: Algoritmo Star A = 6 (-20) + 0 = -62 B= 6 (2+0) - 0 = 62 [-62,62] A = -62 + 0 +5 = -47 B= 62 0 + 5 = 57 A = -47 + 0 + 0 = -27 B = 57 0 + 0 = 57 A = -27 + 0-0 = 7 B = 57 0 0 = 47 A = 7 +0 = -8 B = 47 0 = 36 [-47,57] [-27,57] [7,47] [-8,36] [-2,2] Max Chance /6 /6 /6 /6 /6 /6 Limite inicial: A= N x (alfa - U) + U B = N x (beta - L) + L -5 0 0 0? Min Próximo limite: A i+= Ai + U - Vi B i+= Bi + L - Vi -5 5 0-9 0 5 3 0 5 0 59
Jogos de Azar com Informação Imperfeita Jogos com informação imperfeita Ex.: Jogos de cartas, onde inicialmente não são conhecidas as cartas do adversário. Tipicamente é possível calcular uma probabilidade para cada mão (de jogo) possível. Ideia: calcular o valor do Minimax para cada acção em cada mão, e depois escolher a acção com o maior valor esperado através das várias mãos. Caso especial: se uma acção é óptima para todas as mãos, então é a acção óptima! GIB, o melhor programa actual de bridge, faz a aproximação desta ideia: ) gerando 00 mãos consistentes 2) escolhendo a acção que em média, ganha mais partidas 60
Exemplo Mão de quatro cartas de bridge/copas, Max joga primeiro: Em análise * A intuição de que o valor de uma acção é a média dos valores de todos os estados actuais é ERRADA. Observando parcialmente, o valor de uma acção depende do estado de informação ou estado de crença no qual o agente está. Pode gerar e pesquisar uma árvore de estados de crença. Leva a comportamentos racionais, tais como: Agir de forma a obter informação Dar sinais ao parceiro Agir aleatoriamente de forma a minimizar informação que revela 6
Sumário Trabalhar com jogos é extremamente engraçado (e perigoso). Fácil testar novas ideias! Fácil comparar agentes com outros agentes e com humanos! Jogos ilustram diversos pontos interessantes de IA: Perfeição é inatingível => é necessário aproximar! É boa ideia pensar sobre o que pensar! A incerteza restringe a atribuição de valores aos estados! Jogos funcionam para a IA como a Fórmula para a construção de automóveis! Questões Pertinentes Q. Será a forma como os computadores jogam xadrez mais essencial do que a forma como as pessoas o jogam? Q2. Se os extraterrestres viessem á terra e nos desafiassem para um torneio de xadrez Quem enviaria: o Deep Blue ou o Kasparov? Drew McDermott: Dizer que o Deep Blue não pensa realmente sobre o xadrez é o mesmo que dizer que os aviões não voam, só porque não batem as asas. 62
Fontes Consultadas Russel, Norvig, Artificial Intelligence: A Modern Approach, Cap. 6. Acetatos Prof. Guillermo Simari. Universidad Nacional del Sur, Argentina Acetatos Alunos IIA semestre 2004/2005. Acetatos Prof. Geber Ramalho. CIN. Universidade Federal de Pernambuco, Brasil. Leituras LIVROS Russel, Norvig, Artificial Intelligence: A Modern Approach, Cap. 5. 63
FIM 64