UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO” Campus de Sorocaba IAC ‐ Inteligência Artificial aplicada a Controle Prof. Dr. Alexandre da Silva Simões 1ª Lista de exercícios Introdução à I.A. 1. Escreva sua definição pessoal para os tópicos abaixo e justifique‐as (sinta‐se a vontade para se basear nas definições já existentes e argumentar sobre elas): a) Inteligência; b) Inteligência artificial; c) Agente. 2. Um certo agente é capaz de realizar ações muito complexas logicamente, tais como jogar xadrez. Um outro agente é capaz de fugir de predadores utilizando ações reflexas. Ambos podem ser considerados agentes inteligentes? Em quais definições de inteligência eles se encaixam? 3. Considere o artigo: Turing, A. Computing Machinery and Intelligence. Mind, Vol. 59, No. 236, pp. 433‐ 460, October, 1950. Depois de ler o famoso artigo de Alan Turing: a. Descreva sucintamente o que Turing chama de “jogo da imitação”, e que ficou conhecido como o “teste de Turing”. b. Quais eram as crenças de Turing sobre a questão “as máquinas podem pensar”? Como Turing esperava ver seu “jogo da imitação” sendo jogado nos dias de hoje? Você acha que os computadores atuais já dispõem de condições para satisfazer o teste de Turing? c. O próprio Turing apresenta uma série de objeções à IA de ordem religiosa, matemática e filosófica, entre outras. Comente de forma bastante sucinta aquelas que julgar mais interessantes. d. Turing apresenta um argumento que ficou conhecido como “máquinas nunca poderão fazer X”. Descreva sucintamente este argumento e teça considerações a respeito de possíveis X. ______ IAC – Inteligência Artificial aplicada a Controle 1 4. Considere o problema de tornar um computador apto a jogar o “jogo da velha”. Em seu livro “Inteligência artificial”, Elaine Rich e Kelvin Knight apresentam três algoritmos distintos para este propósito, que encontram‐se resumidamente apresentados a seguir. Avalie cuidadosamente esses três algoritmos, com atenção aos seguintes tópicos: i) Capacidade de resolução: todos os algoritmos encontram a solução do problema? ii) Generalidade da técnica: todos os algoritmos são bastante versáteis e podem ser rápida e facilmente alterados para aplicação em outros domínios (digamos um jogo de xadrez)? iii) Complexidade da técnica: todos os algoritmos podem ser aplicados em domínios muito mais complexos que o jogo da velha (digamos um jogo de xadrez)? iv) Clareza na representação do conhecimento: o conhecimento específico sobre “jogar jogo da velha” mistura‐se com a estratégia de solução? Argumente sobre eles e tente descrever as razões pelas quais apenas um desses algoritmos é considerado como uma “técnica de IA”. ______ IAC – Inteligência Artificial aplicada a Controle 2 ALGORITMO 1: ESTRUTURA DE DADOS: Tabuleiro: Um vetor de nove elementos que representam o tabuleiro, onde os elementos do vetor correspondem às posições mostradas ao lado. Um elemento contém: “0” se estiver em branco, “1” se preenchido com “X” e “2” se preenchido com “O”. Ex: [0,0,1,0,0,0,0,0,0] representa um “X” na posição 3. Tabela de Movimentos: Um grande vetor de 19.683 elementos (39), onde cada elemento é um vetor com nove elementos. Cada posição armazena uma possível jogada e as jogadas são escolhidas especificamente para permitir que o algoritmo funcione. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ternário 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 0 0 0 1 1 1 2 2 2 0 0 0 1 1 1 2 2 2 0 0 0 1 1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 Dec. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Conteúdo 0 0 2 0 1 0 2 0 Impossível 0 1 0 0 1 0 0 1 0 Impossível 0 2 0 Impossível 0 1 0 Impossível Impossível 0 2 0 0 1 0 0 2 0 0 1 0 0 1 0 0 1 0 Impossível 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 0 0 0 0 1 2 2 2 0 1 1 0 0 1 0 2 1 1 1 1 2 2 1 2 2 2 0 0 2 0 1 2 0 1 2 2 1 1 0 1 ALGORITMO: Para realizar um movimento, faça o seguinte: 1. Visualize o vetor‐tabuleiro como um número ternário (base 3). Converta‐o em decimal; 2. Use o número calculado na etapa 1 como índice da tabela de movimentações e acesse o vetor lá armazenado; 3. O vetor selecionado na etapa 2 representa o modo como o tabuleiro ficará depois de feita a movimentação. Iguale o tabuleiro àquele vetor. ______ IAC – Inteligência Artificial aplicada a Controle 3 ALGORITMO 2: ESTRUTURA DE DADOS: Tabuleiro: Similar ao exemplo anterior, porém no vetor de 9 posições cada posição é preenchida com os seguintes valores: “2” se a posição no tabuleiro estiver em branco; “3” se a posição no tabuleiro estiver preenchida com “X”; “5” se a posição no tabuleiro estiver preenchida com “O”; Jogada: Um número inteiro indicando que movimento do jogo está para ser feito. Ex: 1: primeiro movimento; 9: último movimento. ALGORITMO: Subrorotinas: Faz2 Ganha(p) Jogue(n) Retorna 5 se o quadrado central do quadro está em branco, isto é, se Quadro[5] = 2. Caso contrário esta função retorna qualquer quadrado que esteja em branco e que não seja de canto (2, 4, 6 ou 8) Retorna 0 se o jogador p não tiver condições de vencer na próxima movimentação. Caso contrário retorna o número do quadrado que constitui o movimento vitorioso. Faz um movimento no quadrado n. Este procedimento ajusta Tabuleiro[n] para 3 se Jogada for ímpar, ou em 5 se Jogada for par. Ele também incrementa Jogada em 1. Algoritmo principal: Jogada = 1 Jogada = 2 Jogada = 3 Jogada = 4 Jogada = 5 Jogada = 6 Jogada = 7 Jogada = 8 Jogada = 9 Jogue(1) (canto superior esquerdo) If Tabuleiro[5] estiver em branco, Jogue(5) else Jogue(1) If Tabuleiro[9] estiver em branco, Jogue(9) else Jogue(3) If Ganha(X) não for 0, Jogue(Ganha(X)) (bloqueia oponente) else Jogue(Faz2) If Ganha(X) não for 0 Jogue(Ganha(X)) (vença) else if Ganha(O) não for 0 Jogue(Ganha(O)) else if Tabuleiro(7) estiver em branco Jogue(7) else Jogue(3) If Ganha(O) não for 0 Jogue(Ganha(O)) else if Ganha(X) não for 0 Jogue(Ganha(X)) else Jogue(Faz2) If Ganha(X) não for 0, Jogue(Ganha(X)) else if Ganha(O) não for 0 Jogue(Ganha(O)) else jogue qualquer espaço em branco If Ganha(O) não for 0 Jogue(Ganha(O)) else if Ganha(X) não for 0 Jogue(Ganha(X)), else jogue qualquer espaço em branco Igual à jogada 7 ______ IAC – Inteligência Artificial aplicada a Controle 4 ALGORITMO 3: ESTRUTURA DE DADOS: Posição no tabuleiro: Estrutura contendo um vetor de nove elementos que representa o tabuleiro Lista1: uma lista das posições do tabuleiro que poderiam resultar do próximo movimento e um número representando uma estimativa da probabilidade que a posição do tabuleiro tem de levar a uma vitória por parte do jogador. ALGORITMO: 1. Analisar as posições do tabuleiro que resultam de cada jogada possível; 2. Escolher a melhor (*); 3. Fazer o movimento que leva àquela posição. (*) Para decidir qual é a melhor posição, faça: 1. Veja se é uma posição de vitória. Em caso positivo, dê a ela a mais alta classificação; 2. Caso contrário, considere todos os movimentos que o oponente possa fazer a seguir. Veja qual deles é o pior para você (chamando recursivamente este procedimento). Assuma que o oponente fará aquele movimento. Qualquer que seja a classificação do movimento atribua‐a ao nó que está sendo considerado. 3. O melhor nó é aquele com a classificação mais alta. ______ IAC – Inteligência Artificial aplicada a Controle 5