2.1 Uma medida de desempenho é usada por um observador externo para avaliar o comportamento do agente de acordo com seus objetivos (pode ser medida de eficiência, p.e. tempo, medida de qualidade etc). Uma função utilidade é utilizada pelo próprio agente para avaliar seu comportamento a cada passo.
3.3 Possíveis soluções (bem abstratas...):
3.5 Busca com custos negativos e ciclos são fontes de problemas para todo algoritmo de otimização. Na prática, indicam uma falha na modelagem do domínio do problema.
3.6
a)
function GENERAL_SEARCH2(problem, QUEUEING_FN) retorna solucao ou falha nodes <- MAKE_QUEUE(MAKE_NODE(INITIAL_STATE[problem])) loop do if nodes is empty then return falha node <- REMOVE_FRONT(nodes) new_nodes <- EXPAND(node,OPERATORS[problem]) if GOAL_TEST[problem] aplicado ao estado de qq no de new_nodes suceder then return no nodes <- QUEUEING_FN(nodes,new_nodes) end
b) Solução possível: adicionar o GOAL_TEST à função QUEUEING_FN. Se o teste suceder, a função enfileira aquele nó no início da fila. Caso contrário, é adicionado a sua posição normal. NB: não necessariamente este teste garante que a solução ótima vá ser encontrada.
4.3
4.5 Um exemplo é tentar ir de Rimnicu Vilcea para Lugoj. O caminho mais curto vai pela parte sul do mapa passando por Mehadia, Dobreta e Craiova. Uma busca gulosa usando como heurística a distância em linha reta entre cidades, começando em Rimnicu Vilcea não encontraria a melhor solução. Começando em Lugoj, a heurística vai levar diretamente para Mehadia. Uma busca gulosa retornaria a Lugoj e entraria num ciclo entre estas duas cidades.
4.10 Solução: fazer a busca "forward" com uma heurística que estima a distância ao objetivo, e a busca "backward" com um heurística que estima a distância ao nó inicial. Problema: não há garantia de encontrar a solução ótima.
6.1 Dada uma sentença S, construir uma tabela verdade com uma linha para cada possível combinação de valores verdade para as proposições em S, tal que a última coluna da tabela seja S. Se esta última coluna tem todos os valores verdadeiros, S é uma tautologia. Se todos os valores forem falsos, S é insatisfatÃvel.
6.3
6.4 a sentença é equivalente à sentença 2+2=4, logo está falando de alguma expressão aritmética. No entanto, se considerarmos que 2+2=4 é sempre verdadeiro no sistema decimal, a sentença é uma tautologia, e portanto não está falando sobre nenhum dos dois, ou está falando sobre os dois.
6.5 Sentenças:
Mythical => Immortal not Mythical => not Immortal ^ Mammal Immortal V Mammal => Horned Horned => Magical
Não podemos provar que é Mythical. Podemos provar que é Magical and Horned.
Para provar Horned:
Para Horned ser verdadeiro, ou Immortal ou Mammal tem que ser verdadeiro. Para a primeira sentença ser verdadeira, com Mythical verdadeiro, Immortal tem que ser verdadeiro. Por outro lado, pela segunda sentença, se Mythical for falso, not Immortal E Mammal têm que ser verdadeiros. Como Mythical nãoo pode ser falso e verdadeiro ao mesmo tempo, ou Mammal é verdadeiro ou Immortal é verdadeiro. Portanto, Horned tem que ser verdadeiro. Se Horned é verdadeiro, concluímos trivialmente que Magical também é verdadeiro.
6.7
6.8 Um conectivo binário é definido por uma tabela verdade com 4 linhas (correspondentes às combinações possíveis de F e V para os dois literais envolvidos). Cada uma das 4 linhas da tabela verdade pode produzir um resultado F ou V. Portanto, podemos ter tabelas possíveis, e, portanto, 16 conectivos possíveis (isto é, cada saída diferente da tabela, um conjunto das 4 linhas, vai corresponder a um conectivo diferente). Seis deles correspondem a T, F, P, Q, not P e not Q. 4 deles são , V, =>, <=>. Os seis restantes são a implicação inversa (<=) e as negações de (nand), V (nor), =>, <=>, e <=.
6.9 Não faz muita diferença em relação ao conhecimento já armazenado e à nível de lógica, porque as respostas deveriam ser as mesmas, ou seja, as conseqüências lógicas continuam as mesmas. Do ponto de vista de implementação existe uma grande diferença, principalmente em termos de eficiência (tempo e espaço).
6.10 É viável, porém continuamos tendo que codificar 64 regras para WumpusAhead.
6.12 Assumindo as seguintes proposições: JP: Jones is a programmer, JK: Jones is an engineer, JM: Jones is a manager...
Each person has one job... JP V JK V JM SP V SK V SM CP V CK V CM Each job has one person JP V SP V CP JK V SK V CK JM V SM V CM Jones owes the programmer \$ 10 (portanto ele não é o programmer) not JP not JM not SM
Solução: JK SP CM
7.2 Assuma o seguinte vocabulário:
7.6 NB: Pode ser que vocês utilizem uma abordagem diferente com nomes de predicados diferentes...Atenção para a definição recursiva utilizada para NthCousin na última sentença.
7.7 Estes axiomas definem bem pertinência de conjuntos, porém não dizem nada sobre se um elemento não está no conjunto. Num sistema Prolog, que usa negação por falha e não negação lógica, funciona bem, porém em lógica pura podemos não conseguir provar se um elemento não pertence a um conjunto.
7.11
7.14 Como discutido em aula, é possível construir uma solução para o mundo do wumpus utilizando qualquer linguagem de programação. Porém, existem algumas vantagens de se utilizar uma representação lógica: não é necessário implementar os mecanismos de inferência que provavelmente seriam necessários na sua implementação em linguagem não lógica; é mais fácil representar situações, por exemplo, em que o agente pode ir para varias possíveis localizações no tabuleiro utilizando o conectivo lógico OU (ou seja, é mais fácil representar ambiguidades).
9.1
9.4
9.5
9.8
11.1 Operadores estão na página 346. Adicionamos:
Op(ACTION: Hat, EFFECT: HatOn) Op(ACTION: Coat, EFFECT: CoatOn)
Plano parcial:
Start / | | \ / | | \ Hat Left Right Coat | Sock Sock | | | | | | Left Right | | Shoe Shoe | | | | | \ | | / \ | | / Finish
Há 6 planos de ordem total para o problema das meias/sapatos. Cada um destes planos tem 4 passos (portanto, 5 setas). O próximo passo, Hat, pode ocorrer em qq posição entre os 4 passos. Isto nos dá um total de 6x5=30 planos de ordem total (com 6 setas cada um). O outro passo, Coat pode entrar em qq uma das posições entre as 6 setas. Neste caso, teremos 30x6=180 planos de ordem total diferentes.