INTELIGÊNCIA ARTIFICIAL 2008/09 PROCURA 1) Considere o problema da torre de Hanoi com 3 discos. Neste problema, existem três pinos A, B e C e 3 discos de diâmetros diferentes, estando no início todos os discos colocados no pino A com os discos maiores em baixo dos mais pequenos. Este problema consiste em deslocar todos os discos para o pino C, um a um, do pino A para o pino C, de modo a que fiquem na mesma posição relativa nunca podendo, em momento algum, existir um disco em cima de outro de menor diâmetro. a) Formule o problema da Torre de Hanoi com 3 discos como um problema de procura. b) Qual o método de procura cega que escolheria para resolver o problema e porquê? 2) Considere o problema das vasilhas. Dispomos de duas vasilhas, com capacidades de 3 e 5 litros. Inicialmente as vasilhas estão vazias e pretendemos medir uma certa quantidade de água. As accções que podemos executar são: encher totalmente cada uma das vasilhas; verter o conteúdo de uma vasilha noutra, até a primeira ficar vazia ou a segunda cheia; deitar fora todo o conteúdo de uma vasilha. Para resolver este problema utilizando os algoritmos de procura estudados vamos usar a seguinte representação em Lisp para o estado do problema: (defstruct estado (v3 0) ; líquido existente na vasilha de 3 litros (v5 0)) ; líquido existente na vasilha de 5 litros As funções que implementam os operadores para este problema (encher-v3, encher-v5, v3->v5, v3<-v5, esvaziar-v3, esvaziar-v5) recebem uma estrutura do tipo estado e devolvem uma lista com o estado que resulta de 1 aplicar esse operador, ou então a lista vazia, se o operador não for aplicável. Por exemplo, para um estado em que a vasilha de três litros está vazia e a vasilha de cinco litros tem quatro litros, o operador esvaziar-v3 devolve nil e o operador v3<-v5 devolve uma lista com um estado em que a primeira tem três litros e a segunda um litro. 1. Defina as funções encher-v3, v3<-v5 e esvaziar-v5. 2. Defina a função sucessores que dado um estado devolve uma lista de estados cujos elementos são todos os sucessores desse estado. 3. Dada a seguinte definição de um problema: (defstruct problema estado-inicial fn-objectivo? ; predicado que identifica ; o estado solução fn-sucessores) Defina a função cria-problema que recebe dois números: a quantidade de água desejada para as vasilhas de três e cinco litros, respectivamente. A função deve devolver uma estrutura do tipo problema correctamente inicializada de modo a representar o problema cujo estado inicial tem as duas vasilhas vazias e cujo estado final tem as vasilhas com as quantidades indicadas nos argumentos da função. 3) Considere o espaço de estados definido pelo estado inicial, 1, e pela função que gera os sucessores de um estado, sucessores(n)={2n, 2n+1}. Considerando o estado objectivo 9, desenhe a árvore de procura indicando a ordem de geração e a ordem de expansão de cada nó para uma: a) Procura em largura primeiro; b) Procura em profundidade primeiro; c) Procura em profundidade limitada com limite de profundidade 4. d) Procura em profundidade iterativa; (Em caso de empate, explore os nós por ordem numérica crescente.) 4) Considere o seguinte espaço de estados contendo os estados A, B, C, D, E e F e pelas transições representadas (os números representam os custos das transições). Em caso de empate na colocação dos nós na fila de nós por expandir, utiliza-se a ordem alfabética dos estados para desempatar. E 3 8 7 B 2 1 3 A F C 4 1 D 2 Para resolver o problema de ligar o estado A ao nó F, admita que tem h(A)=5, h(B)=3, h(C)=1, h(D)=1, h(E)=1 e h(F)=0. Escreva a ordem pela qual os nós foram gerados e expandidos por cada uma das seguintes estratégias de procura: a) b) c) d) e) f) g) h) Procura em profundidade primeiro; Procura em largura primeiro; Procura de custo uniforme; Procura em profundidade iterativa; Procura gananciosa; Procura A*; Procura IDA*; Procura RBFS. A heurística é admissível? A heurística é consistente? Justifique. 5) Considere o seguinte espaço de estados definido pelos estados A, B, C, D e E e pelas transições representadas (os números representam os custos das transições). Em caso de empate na colocação dos nós na fila de nós por expandir, utiliza-se a ordem alfabética para desempatar. 3 C 2 7 B D 1 3 A 4 E Para resolver o problema de ligar o estado A ao estado E, admita que tem h(A)=5, h(B)=3, h(C)=1, h(D)=1 e h(E)=0. Escreva a ordem pela qual os nós foram gerados e expandidos por cada uma das seguintes estratégias de procura: a) b) c) d) e) f) Procura em profundidade primeiro; Procura em largura primeiro; Procura de custo uniforme; Procura em profundidade iterativa; Procura gananciosa; Procura A*. 3 6) As cidades A, B, C e D estão ligadas por uma rede de estradas representada pelo mapa que se segue. A 10 B 5 D 10 12 13 C Considerando que dispõe de uma função trocos, que recebe como argumentos dois símbolos representando duas cidades e retorna o número mínimo de troços de estrada entre as duas cidades; que o custo de ir para uma cidade para outra corresponde à distância percorrida; e que a estimativa de custo de ir de uma cidade para outra corresponde ao menor número de troços entre as duas cidades multiplicado pelo comprimento médio dos troços do mapa: a) Mostre a árvore de procura gerada na procura do caminho de C para A utilizando a procura gananciosa, indicando a ordem de geração e de expansão e assumindo que eventuais desempates são decididos por ordem alfabética. b) Mostre a árvore de procura gerada na procura do caminho de C para A utilizando a procura A*, indicando a ordem de geração e de expansão e assumindo que eventuais desempates são decididos por ordem alfabética. c) A heurística é admissível? A heurística é consistente? Justifique. 7) Considere o espaço de estados apresentado a seguir e que representa o mundo dos blocos com os blocos A, B e C: Suponha que quer passar do estado inicial, em que C está em cima de A e A e B estão em cima da mesa, para o estado final, em que A está em cima de B, B está em cima de C e C está em cima da mesa. Considere que o custo de cada transição é 1 e que a função heurística que vai utilizar devolve o número de blocos que não estão em cima das mesmas posições em que aparecem no estado final (por exemplo, a heurística aplicada ao estado inicial vale 3). 4 A B C A B C C A B A B C B A C B A C C B A B A C C A B A B C B C A C A B A C B a) A função heurística proposta é admissível? Justifique. b) Desenhe a árvore de procura gerada pela procura A*, indicando a ordem de geração e de expansão dos nós. 8) Considere um agente que vive numa “casa” com infinitos quartos, em que os quartos estão numerados. Os quartos normalmente têm três portas. Se o quarto for o quarto n, a porta esquerda que dá acesso ao quarto 2*n, a porta direita que dá acesso ao quarto 2*n+1 e a porta de trás que dá acesso ao quarto div(n,2) (divisão inteira de n por 2). O quarto 1 tem apenas a porta esquerda e direita. Estando no quarto n, as acções que é possível executar são: :atravessa-porta-esquerda, se quiser passar do quarto n para o quarto 2*n; :atravessa-porta-direita, se quiser passar do quarto n para o quarto 2*n+1; e :atravessa-porta-tras, se quiser passar do quarto n para o quarto div(n,2); :espera, se não quiser mudar de quarto. O problema da deslocação do agente do quarto n para o quarto m pode ser visto como um problema de procura em que os estados são representados pelo número do quarto, os operadores de transição correspondem às acções de atravessar a porta aplicáveis descritas no exercício anterior, e a função de custo de transição tem o valor 1. Vamos supor que queremos procurar o caminho desde o estado 10 até ao estado 3. Para calcular a função heurística aplicada ao estado n, vamos considerar a função DIST(n) que nos dá o número mínimo de portas que é necessário atravessar para ir do estado n ao estado 1 e que corresponde ao número de vezes que é possível dividir o valor do estado por 2 (divisão inteira) até se atingir o valor 1. A função heurística para estimar o custo de passar do estado n para o estado final m é 5 calculada através da fórmula h(n)=|DIST(n)-DIST(m)|. Por exemplo, para o problema que estamos a estudar (m é 3 e n é 10), uma vez que DIST(n)=3 e DIST(m)=1, tem-se h(3)=DIST(10)-DIST(3)=2. a) Considere que vai resolver este problema de procura utilizando a procura gananciosa (em caso de empate, seleccione o nó que minimiza o número de nós gerados). i) Qual o número de nós gerados? ii) Qual o número de nós expandidos? iii) Qual a ordem de geração do nó que tem 1 como estado? iv) Qual a ordem de expansão do nó que tem 1 como estado? b) Considere que vai resolver este problema de procura utilizando a procura A* (em caso de empate, seleccione o nó que minimiza o número de nós gerados). i) Qual o número de nós gerados? ii) Qual o número de nós expandidos? iii) Qual a ordem de geração do nó que tem 1 como estado? iv) Qual a ordem de expansão do nó que tem 1 como estado? 9) Considere o seguinte espaço de estados com os estados de A a P, representado na figura a seguir: A4 3 4 C2 B3 3 3 D3 1 1 F1 E3 3 3 3 3 H3 I3 J3 L0 G1 1 1 1 M3 N2 O1 1 P0 Os estados são representados por um círculo com o seu nome e um número, que corresponde à função de avaliação heurística do estado. Os números nos arcos que ligam dois estados representam os custos das transições entre os dois estados. O problema que estamos a considerar tem como estado inicial o estado A e estados objectivo os estados L e P. Considere que os sucessores de um nó são gerados pela ordem alfabética dos estados (por exemplo, o primeiro 6 sucessor de F é o nó M e não o nó N) e que em caso de empate na ordem de colocação de nós na fila de nós por tratar vigora a ordem alfabética. a) Considere a procura em largura primeiro e escolha a única opção correcta: i) Os nó com estado I é testado como solução antes do nó com estado G ambos os nós são testados antes de se encontrar a solução. ii) O nó com estado G é testado como solução antes do nó com estado N e ambos os nós são testados antes de se encontrar a solução. iii) O nó com estado E não é testado como solução. iv) O nó com estado D é testado como solução antes do nó com estado J ambos os nós são testados antes de se encontrar a solução. v) O nó com estado O é testado como solução. vi) O nó com estado I é testado como solução antes do nó com estado E e ambos os nós são testados antes de se encontrar a solução. b) Considere a procura em profundidade primeiro e escolha a única opção correcta: i) O nó com estado I é gerado antes do nó com estado G e ambos os nós são gerados. ii) O nó com estado G é gerado antes do nó com estado I e ambos os nós são gerados. iii) O nó com estado E não é gerado. iv) O nó com estado C é gerado antes do nó com estado J e ambos os nós são gerados. v) O nó com estado C é gerado antes do nó com estado G e ambos os nós são gerados. vi) O nó com estado I é gerado antes do nó E e ambos os nós são gerados. c) Considere a procura em profundidade limitada com limite 2 e escolha a única opção correcta: i) São testados como soluções exactamente 3 nós. ii) São testados como soluções exactamente 4 nós. iii) São testados como soluções exactamente 7 nós. iv) São testados como soluções exactamente 8 nós. v) São testados como soluções exactamente 11 nós. vi) São testados como soluções exactamente 15 nós. d) Considere a procura gananciosa e escolha a única opção correcta: i) O nó com estado I é testado como solução antes do nó com estado G e ambos os nós são testados como soluções. ii) O nó com estado G é testado como solução antes do nó com estado F e ambos os nós são testados como soluções. iii) O nó com estado M é testado como solução antes do nó com estado P e ambos os nós são testados como soluções. 7 iv) O nó com estado C é testado como solução ambos os nós são testados como soluções. v) O nó com estado B é testado como solução ambos os nós são testados como soluções. vi) O nó com estado F é testado como solução ambos os nós são testados como soluções. Obs: Considere que um nó é explorado quando tratar. antes do nó com estado G e antes do nó com estado G e antes do nó com estado O e é retirado da fila de nós por e) Considere a procura IDA* e escolha a única opção correcta: i) A solução é encontrada ao fim de 3 iterações. ii) Os sucessores de B são gerados duas vezes. iii) O nó com estado F é gerado duas vezes. iv) Os sucessores de D são gerados uma vez. v) O nó com estado M é testado como solução uma vez. vi) O nó com estado C é testado como solução uma vez. Obs: Considere que na primeira iteração o valor do limite é f(A). 10) Considere o seguinte espaço de estados com os estados de A a N, representado na figura a seguir: A4 4 3 C2 B3 3 D3 3 1 1 F1 E0 G1 3 3 3 1 1 H3 I3 J3 L2 M1 1 N0 Os estados são representados por um círculo com o seu nome e um número, que corresponde à função de avaliação heurística do estado. Os números nos arcos que ligam dois estados representam os custos das transições entre os dois estados. O problema que estamos a considerar tem como estado inicial o estado A e estados objectivo os estados E e N. Considere que os sucessores de um nó são gerados pela ordem alfabética dos estados (por exemplo, o primeiro sucessor de F é o nó J e não o 8 nó L) e que em caso de empate na ordem de colocação de nós na fila de nós por tratar vigora a ordem alfabética. a) Considere a procura em largura primeiro e escolha a única opção correcta: i) Quando é encontrada a solução, há exactamente 2 nós na fila de nós testar. ii) Quando é encontrada a solução, há exactamente 3 nós na fila de nós testar. iii) Quando é encontrada a solução, há exactamente 4 nós na fila de nós testar. iv) Quando é encontrada a solução, há exactamente 5 nós na fila de nós testar. v) Quando é encontrada a solução, há exactamente 6 nós na fila de nós testar. vi) Quando é encontrada a solução, há exactamente 7 nós na fila de nós testar. vii) Quando é encontrada a solução, há exactamente 8 nós na fila de nós testar. viii)Quando é encontrada a solução, há exactamente 9 nós na fila de nós testar. por por por por por por por por b) Considere a procura em profundidade primeiro e escolha a única opção correcta: i) A procura entra em ciclo. ii) O nó H é gerado antes do nó E. iii) Os nós F e G são gerados. iv) Os nós H e C são gerados. v) Os nós C e F são gerados. vi) Os nós C e J são gerados. vii) Os nós E e N são gerados. viii)Os nós B e G são gerados. c) Considere a procura em profundidade limitada com limite 2 e escolha a única opção correcta: i) Não são testados como soluções quaisquer nós. ii) É testado como solução exactamente 1 nó. iii) São testados como soluções exactamente 2 nós. iv) São testados como soluções exactamente 3 nós. v) São testados como soluções exactamente 4 nós. vi) São testados como soluções exactamente 5 nós. vii) São testados como soluções exactamente 6 nós. viii)São testados como soluções exactamente 7 nós. d) Considere a procura gananciosa e escolha a única opção correcta: i) O nó B é testado como solução e há mais 3 nós na fila de nós por testar. 9 ii) O nó C é testado como solução e há mais 3 nós na fila de nós por testar. iii) O nó F é testado como solução e há mais 3 nós na fila de nós por testar. iv) O nó G é testado como solução e há mais 3 nós na fila de nós por testar. v) O nó B é testado como solução e há mais 2 nós na fila de nós por testar. vi) O nó C é testado como solução e há mais 2 nós na fila de nós por testar. vii) O nó G é testado como solução e há mais 2 nós na fila de nós por testar. viii)O nó N é testado como solução e há mais 2 nós na fila de nós por testar. e) Considere a procura IDA* e escolha a única opção correcta: i) São feitos 6 testes para ver se um nó é solução. ii) São feitos 8 testes para ver se um nó é solução. iii) São feitos 10 testes para ver se um nó é solução. iv) São feitos 12 testes para ver se um nó é solução. v) São feitos 14 testes para ver se um nó é solução. vi) São feitos 15 testes para ver se um nó é solução. vii) São feitos 16 testes para ver se um nó é solução. viii)São feitos 17 testes para ver se um nó é solução. Obs: Considere que na primeira iteração o valor do limite é f(A). 1