1) a) Consideramos uma tupla com dois elementos. O primeiro elemento representa o estado da jarra A e o segundo, o estado da jarra B. O estado inicial então será dado por: (0,0). Teste do objetivo: (?,2), ou seja, a jarra A pode conter qq coisa. A jarra B tem que conter 2 litros. encher_jarra(x): enche uma jarra x esvaziar_jarra(x): esvazia uma jarra x transferir(x,y): transfere o conteúdo da jarra x para a jarra y b) (0,0) Nivel 0 / \ / \ (3,0) (0,4) Nivel 1 / | \ / | \ (0,0) (3,4) (0,3) (0,0) (3,4) (4,0) Nivel 2 / \ / | / | \ / \ / | / | \ Nivel 3 Sucessores: Do nivel 0 para o 1: encher_jarra(A) ou encher_jarra(B) Do nivel 1 para o 2: esvaziar_jarra(A), encher_jarra(B), transferir(A,B) etc Do nivel 2 para o 3: essencialmente repetir os possíveis sucessores aplicando os operadores. Possivel solucao: (0,0) (3,0) (0,3) (3,3) (2,4) (2,0) (0,2) 2) a) 1, 2, 5, 6, 10, 11, 3, 7, 12, 13, 4, 8, 9 b) 1 1, 2, 3, 4 1, 2, 5, 6, 3, 7, 4, 8, 9 1, 2, 5, 6, 10, 11, 3, 7, 12, 13, 4, 8, 9 c) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 3)