Resolução de
Problemas
1. O que é um problema
-
A IA serve para resolver problemas, imitando,
de certa forma a inteligência dos seres -vivos.
-
O desejo de construir máquinas
‘resolvedoras’ de problemas impõe a compreensão da
natureza
íntima dos mesmos.
-
Antes de solucionar um problema:
-
Quais são os dados?
-
Quais são as soluções
possíveis?
-
O que caracteriza uma solução
satisfatória?
-
Definição:
Um problema é um objeto
matemático
P={D,R,q},
consistindo de dois conjuntos não vazios,
D os dados, e R
os
resultados possíveis e de uma relação
binária
q(D
X
R);
condição que caracteriza uma solução
satisfatória,
associando a cada elemento do conjunto de dados a solução
única desejada.
-
Exemplos
-
Diagnóstico Médico: dados
disponíveis, tal como exames.
-
Conjunto de doenças possíveis
-
A condição que caracteriza
uma solução satisfatória consiste em encontrar o
par
(dados, doença) do diagnóstico desejado.
-
Achar a solução do problema
da busca das raízes de um polinômio com coeficientes reais.
-
Um problema pode ser representado
matematicamente
por uma função. Resolver o problema será
então
encontrar um modo de implementar esta função ou de
aproximá-la
com o conhecimento que se dispõe.
1.1. Modos de Definir uma
Função
-
Por enumeração exaustiva
-
Fornece-se todos os conjuntos de pares,
dado, resultado.
-
Só se aplica no caso em que o
conjunto
de dados é finito.
-
De forma declarativa
-
Dar propriedades que devem ser satisfeitas
pela solução do problema.
-
Da mesma forma que um conjunto pode ser
definido por uma propriedade, uma função pode ser
definida
da mesma maneira.
-
Por um programa
-
Um programa de computador define a
correspondência
entre dados e resultados, podendo ser considerado como um modo de
definir
um problema.
-
Um problema definido por um programa
poderá
ou não chegar à solução.
-
Por exemplos
-
Conhece-se apenas a definição
do problema para um subconjunto dos dados possíveis e este
conhecimento
pode ser de qualquer uma das formas anteriores.
-
Deseja-se conhecer os elementos do conjunto
de respostas admissíveis mesmo para dados que não
estão
incluídos na definição da função.
1.2. Características
-
Não existe um único
método
de resolução para todos os problemas.
-
São conhecidos os passos para achar
a solução?
O problema é suficientemente
bem definido?
-
Jogo do 8
-
Identificação de assinaturas
-
O problema é decomponível?
A solução para o problema
inicial pode ser obtida pela composição da
solução
de alguns problemas mais elementares.
-
Os passos para as soluções
podem ser desfeitos?
Na solução de um problema,
retroceder é voltar a trajetória no espaço de
soluções
(backtracking). É um dos mecanismos básicos
utilizados
pelo PROLOG.
-
O Universo é previsível?
-
É possível planejar uma
seqüência de passos e o estado resultante será sempre
o mesmo.
-
Existem problemas onde um fator de chance
está envolvido, como por exemplo, no jogo de cartas.
-
Uma boa solução é
relativa ou absoluta?
Para afirmar que uma boa
solução
encontrada é absoluta, deve-se estar certo que, se as
condições
iniciais forem diferentes, será obtida a mesma
solução.
-
O conhecimento disponível é
consistente?
Uma base de conhecimento é
dita consistente se não existe incompatibilidade entre as
peças
elementares de conhecimento dentro dela.
-
O estado A é verdadeiro.
-
O estado C é verdadeiro.
-
Se C, então D. Se D, então
A ou-exclusivo C.
1.3. Estratégias
-
Duas Abordagens
-
Se a solução do problema
for uma função, se for possível implementar esta
função,
tem-se a solução do problema. Este fato leva, na
abordagem
simbólica à PROGRAMAÇÃO FUNCIONAL
(estática).
-
A pesquisa da solução pode
ser vista como uma pesquisa dentro do espaço de possíveis
soluções (generate and test) (dinâmica).
-
Utilizando um método para aproximar
a função, solução do problema.
-
Utilizar um método de busca em
que por passos sucessivos se aproxima da solução, usando,
algumas vezes passos sem grande justificativa teórica.
1.4. Problemas clássicos
-
Missionários e Canibais
-
Torres de Hanói
-
O Problema do Caixeiro Viajante
-
Jogo de xadrez
-
Jogo do 8
2. Estudo do conhecimento
-
Uma teoria em IA consiste na
especificação
do conhecimento necessário a uma capacidade cognitiva.
-
Capacidade cognitiva: solução
de problemas, uso de linguagem, tomada de decisões,
percepção,
etc. Se o conhecimento é central para a cognição,
então a inferência é o principal mecanismo e a
capacidade
cognitiva deve ter:
-
uma base de conhecimento
-
um motor de inferência
-
Motor de Inferência: Mecanismo que
gera novos conhecimentos
-
Base de Conhecimento: Contém a
informação específica sobre o domínio e
será
tão complexa quanto a capacidade cognitiva a ser simulada.
-
Conceitualização: tarefa
do projetista do sistema que consiste em escolher uma estrutura
matemática,
formada por objetos, funções e relações,
que
descreva o estado das coisas no mundo Esta posição ignora
a profunda questão filosófica envolvida no entendimento
de
um conceito (lembre-se da Sala Chinesa).
-
Os seres humanos, desde o nascimento
vão
acumulando conhecimentos que lhes permitirão agir de modo a
mostrar
que são seres inteligentes.
-
Este processo pode ser descrito como
compreendendo
os seguintes passos:
-
P1 - ocorre o estímulo sensorial.
-
P2 - ocorre a retenção do
estímulo por pouco tempo.
-
P3 - a informação é
trabalhada pela memória de trabalho.
-
P4 - ocorre a resposta.
-
P5 - a informação é
registrada ou não na memória de longa
duração.
-
As pessoas não captam todo o
conhecimento
que a realidade do mundo lhe proporciona.
-
Pessoas diferentes, perante a mesma realidade
captam e entendem coisas diferentes.
-
A manipulação do conhecimento
exige, antes, formas de representação.
2.1. CAPACIDADES COGNITIVAS
-
Capacidade de Inferência: a capacidade,
mais óbvia que pode ser baseada em uma estrutura adequada de
conceitos.
A estrutura deve ser suficientemente rica para evitar falhas evidentes
de entendimento.
Gato -> ser vivo + mamífero
+ raças + etc | rato + cão + leão + etc
-
Percepção: a capacidade
de perceber e identificar objetos no mundo real é
decorrência
do fato de o agente que realiza a percepção possuir
conceitos
relacionados com estes objetos.
-
Crescimento do Conhecimento: como o
conhecimento
é representado através da forma de conceitos, ele pode
ser
pensado como uma teoria e, neste caso, o aprendizado é
simplesmente
um avanço conceitual desta teoria.
-
Degeneração do Conhecimento:
pode ser explicado pelo aparecimento de defeitos na estrutura
conceitual
do agente.
-
Exemplo: Para interpretar um texto, é
necessário:
-
Extrair conceitos: objetos, pessoas,
imagens.
-
Relacionar estes conceitos:
ação-agente,
causa-efeito.
-
Fazer inferências,
deduções
e induções.
-
Para um computador isto é muito
difícil devido ao vasto número de conceitos,
relações,
regras, necessários à interpretação de
textos
genéricos.
-
A restrição do domínio
reduz a complexidade do problema.
O conhecimento pode ser definido como
a informação armazenada, ou os modelos usados por pessoas
ou máquinas para interpretar, predizer e responder
apropriadamente
ao mundo exterior.
É importante distinguir entre
forma e conteúdo do conhecimento
-
Exemplo: Um texto que usa a linguagem
natural como recurso de representação pode ter,
também
seu conteúdo sintetizado através de outros recursos, como
por exemplo, a lógica de predicados.
-
O conteúdo é o mesmo. As
formas de representação diferentes facilitam a
manipulação
por
diferentes agentes (computador, ser humano).
3. Representação do conhecimento
3.1. Conceitos Básicos
-
Base de Conhecimento: o repositório de procedimentos,
heurísticas,
dados, que compõe o conhecimento. Assemelha-se a um banco de
dados
no sentido de que exige manutenção
(atualizações,
inserções, deleção), mas o acesso a uma
informação
é mais elaborado.
-
Engenheiro do Conhecimento: o profissional de ciência da
computação
responsável pela implantação da base de
conhecimento.
É um profissional com sólidos conhecimentos em
técnicas
de IA.
-
Especialista do Domínio: é um profissional altamente
capacitado
no domínio para o qual estamos desenvolvendo a
aplicação.
Supre o engenheiro do conhecimento com os procedimentos (formais e
heurísticas)
necessários à construção da base de
conhecimento.
-
Inferência: processo pelo qual deduzimos novas
informações
a partir das existentes na base de conhecimento. Se a
informação
não estiver explicitamente na base, a inferência é
necessária. Existe um compromisso entre a quantidade de
conhecimento
armazenada explicitamente na base de conhecimento e a atividade de
inferência.
-
Inferência Dedutiva: a partir de elementos de
conhecimento
representados em forma lógica, utiliza-se uma regra de
inferência
válida para inferir um novo elemento. Algumas regras de
inferência
utilizadas em lógica são: Modus Ponens, Modus Tollens,
Silogismo
Hipotético, Especialização,
Generalização
e Resolução.
-
Inferência Abdutiva: a partir de um
conhecimento geral da
forma "x P(x) ®
Q(x) e tendo por objetivo provar Q(a), toma-se por hipótese que
a razão pela qual Q(a) se verifica é a validade de P(a).
-
Inferência Indutiva: a partir de fatos
experimentais que comprovam
que a cada vez que a validade de P(a) é verificada, verifica-se
a validade de Q(a) (mas não o contrário), para diferentes
elementos a, pode-se inferir por indução que é
válido.
-
Máquina de Inferência: parte da base de
conhecimento
que abriga os mecanismos (algoritmos e heurísticas) que
processam
a inferência. Via de regra, tais mecanismos são
independentes
do domínio (o que não ocorre com o restante da base de
conhecimento).
-
Tomando-se como referência os métodos fracos, temos:
-
a base de conhecimento armazena o estado inicial, o estado final, um
procedimento
de teste para determinar se um estado é final, e uma
seqüência
de transformações de estado (árvore de busca);
-
a máquina de inferência é um método fraco
(por
exemplo A*) que utiliza e atualiza a base de conhecimento.
-
Inferência Orientada por Dados: é um
processo em que
a informação contida na base de conhecimento é
combinada
com o intuito de se gerar novas informações.
-
Inferência Orientada por Objetivos: testa-se a
veracidade
de uma hipótese.
-
Inferência Sob Incerteza
3.2. Características de representações
profícuas
(Winston)
-
Boas representações explicitam as coisas importantes.
-
Revelam restrições naturais, facilitando algumas classes
de computações.
-
São completas, podendo dizer tudo o que devem ser capazes de
dizer.
-
São concisas, necessitando apenas de recursos mínimos e
sendo
ao mesmo tempo ainda eficientes quando efetuam inferências.
-
Podem ser rapidamente recuperadas e armazenadas.
-
Informações raramente usadas são abordadas e
recuperadas
apenas quando necessárias.
-
Permitem uma aquisição fácil e são
legíveis
pelo especialista, quando for o caso.
-
Permitem a aplicação dos mecanismos de inferência
necessários.
-
Consistência: Não armazena
informações
conflitantes.
-
Completude: Não apresenta lacunas no
conhecimento armazenado.
Todo o conhecimento necessário para a resolução do
problema está explicitamente armazenado ou pode ser determinado
via inferência.
-
Coerência: Não existem ilhas isoladas de
conhecimento;
não se relacionam com o restante do conhecimento armazenado.
-
Redundância: A mesma unidade de conhecimento
é armazenada
de forma duplicada.
3.3. Formas de representação do conhecimento
3.3.1.1. Sistemas ou Regras de Produção
-
Concebidas por Emil Post (1943) quando demonstrou que um procedimento
computável
pode ser modelado como um sistema de produção.
-
Muito utilizada nas décadas de 50 e 60. É o formalismo
mais
difundido de representação de conhecimento.
-
Consiste em transformar o problema em um grafo de estados. Este grafo
deve
possuir um estado inicial e deve-se ter uma forma de identificar um
estado
final quando algum for atingido.
-
Um Sistema de Produção é definido como uma tupla
SP
= <R, E, e0, F>, onde R é um conjunto de
regras, E
é um conjunto de estados, e0 é o estado
inicial
e F é o conjunto de estados finais.
-
As regras são constituídas de um lado esquerdo (um
padrão),
que determina a que estados a regra pode ser aplicada, e um lado
direito,
que descreve a transformação a ser aplicada aos estados
que
se encaixam no padrão, originando novos estados.
-
O padrão p consiste de um predicado que mapeia o conjunto de
estados
do problema em valores booleanos (verdadeiro ou falso). O padrão
define como verdadeiros os estados aos quais a regra é
aplicável.
A aplicação da regra consiste em aplicar a
operação
p a um destes estados, gerado um novo estado.
-
São estruturas do tipo SE
<condição> ENTÃO <ação>
onde:
-
<condição>
estabelece um teste cujo resultado depende do estado atual da base de
conhecimento.
Tipicamente o teste verifica a presença ou não de certas
informações na base.
-
<ação>
altera o estado atual da base de conhecimento, adicionando, modificando
ou removendo unidades de conhecimento presentes na base. Pode acarretar
também em efeitos externos à base, como por exemplo, a
escrita
de uma mensagem no vídeo.
-
Exemplo1: Problema dos dois baldes
de água.
-
Enunciado do problema: Você recebe
dois baldes de água, um de quatro litros e outro de três
litros.
Nenhum deles possui qualquer marcação de medida.
Há
uma torneira que pode ser utilizada para encher os baldes de
água.
Como colocar exatamente dois litros d'água dentro do balde de
quatro
litros? [RIC 94]
-
O espaço de estados para este
problema
pode ser modelado como o conjunto de pares ordenados de números
naturais (x,y) tal que x = 0, 1, 2, 3 ou 4 e y = 0, 1, 2 ou 3, onde x
representa
a quantidade de água no balde de 4 litros, e y representa a
quantidade
de água no balde de 3 litros.
-
O estado inicial do problema é
o estado no qual ambos os baldes estão vazios: (0,0), e o
conjunto
de estados finais é constituído por todos os estados onde
a quantidade de água no primeiro balde é 2, ou seja:
(2,n),
onde n = 0, 1, 2 ou 3.
-
Possível conjunto de regras de
produção para o problema:
r1 |
(x,y|x<4)®(4,y) |
Encher o balde
de 4 litros |
|
r2 |
(x,y|y<3)®(x,3) |
Encher o balde
de 3 litros |
|
r3 |
(x,y|x>0)®(0,y) |
Esvaziar o
balde de 4 litros no chão |
|
r4 |
(x,y|y>0)®(x,0) |
Esvaziar o
balde de 3 litros no chão |
|
r5 |
(x,y|x+y>4)®(4,y-(4-x)) |
Despejar
água
do balde de 3 litros dentro do balde de 4 litros até que este
esteja
cheio |
|
|
r6 |
(x,y|x+y>3)®(x-(3-
y),3) |
Despejar
água
do balde de 4 litros dentro do balde de 3 litros até que este
esteja
cheio |
|
|
r7 |
(x,y|x+y£4
e y>0)®
(x+y,0) |
Despejar toda
a água do balde de 3 litros dentro do balde de 4 litros |
|
|
r8 |
(x,y|x+y£3
e x>0)®
(0,x+y) |
Despejar toda
a água do balde de 4 litros dentro do balde de três litros |
-
EXEMPLO2: Problema dos Canibais
e Missionários
-
Enunciado do problema: Três canibais
e três missionários estão viajando juntos e eles
precisam
atravessar um rio. Todos os seis devem passar para o outro lado.
Entretanto,
o único meio de atravessar o rio é uma canoa que
só
comporta, no máximo, duas pessoas. Aí está outra
dificuldade:
em nenhum momento, em nenhuma das margens o número de canibais
pode
ser maior do que o número de missionários, porque isso
poderia
ser perigoso para os missionários. Como eles podem fazer para
atravessar
o rio? [CHA 77]
-
O estado inicial é (3,3,0,0,0)
e o único estado final é (0,0,3,3,1).
-
As regras são todas de
movimentação
de no máximo duas pessoas de uma margem à outra do rio.
Assim,
pode-se movimentar dois canibais, dois missionários, um canibal
e um missionário, apenas um canibal ou apenas um
missionário,
tanto da margem original para a margem oposta quanto vice-versa.
Tem-se,
assim, 10 regras possíveis, das quais uma é mostrada a
seguir.
-
Para transportar dois missionários
da margem original para a margem oposta:
r1®
MM = (m1, c1, m2,
c2, 0 | (m1 ³
2) e (m1 – 2 ³
c1 ou m1 – 2 = 0) e (m2 + 2 ³
c2)) ®
(m1 – 2, c1, m2 + 2, c2)
-
As restrições do problema
estão expressas nas condições das regras: m1
³2
exige que existam pelo menos dois missionários na margem
original
para que possam ser transportados. (m1 – 2 ³
c1 ou m1- 2 = 0)
exige que o númerode missionários que permanecerão
na margem original após o transporte seja maior ou igual
ao número de canibais na mesma margem ou igual a zero.
Finalmente,
(m2 + 2 ³
c2) exige que o número
de missionários na margem oposta após a travessia seja
maior
ou igual ao número de canibais nesta margem.
-
As soluções apresentadas
não são as únicas possíveis. Além
disso,
não foi mostrado como a solução foi encontrada.
Este
é exatamente o ponto onde entram os algoritmos de busca no
espaço
de estados. A modelagem de um problema como um sistema de
produção
consiste apenas em definir o espaço de estados e as regras.
-
VANTAGENS
-
MODULARIDADE: podem ser consideradas como
peças independentes. Novas regras podem ser acrescentadas ao
conjunto
já existente sem maiores preocupações.
-
NATURALIDADE: pode ser considerada uma
forma natural de pensar a solução de problemas.
-
UNIFORMIDADE: todas as regras são
escritas seguindo oo mesmo padrão. Permite que pessoas
não
familiarizadas com o sistema possam também analisar o seu
conteúdo.
-
DESVANTAGENS
-
OPACIDADE: é difícil
verificar
a completeza destes sistemas, bem como verificar os possíveis
fluxos
de processamento.
-
INEFICIÊNCIA: resulta particularmente
do número de regras a combinar e também do esforço
de matching necessário ao suporte de execução das
regras. "Matching" entende-se como a verificação das
regras
que se aplicam ao estado do problema, bem como a
verificação
de que regras antecedem ou sucedem outras regras. Pode-se contornar
este
problema investindo na ordenação apropriada das regras e
formas de selecioná-las.
-
Não raciocinam em vários
níveis.
-
Não olham os problemas a partir
de perspectivas diferentes.
-
Não sabem como e quando violam
suas próprias regras.
-
Não tem acesso ao raciocínio
que está por trás das regras.
-
DOMÍNIOS DE APLICAÇÃO
-
Domínios em que o conhecimento
é difuso, consistido em muitos fatos, caso da medicina, em
oposição
aos domínios onde ele é uma teoria concisa e unificada,
por
exemplo, na física.
-
Domínios nos quais processos podem
ser representados como um conjunto de ações
independentes,
em oposição a domínios com subprocessos
dependentes.
-
Domínios em que o espaço
de estados é facilmente obtido, como por exemplo em taxonomia .
3.3.1.2. Redes Semânticas
-
É o nome utilizado para definir
um conjunto heterogêneo de sistemas.
-
Consiste em um conjunto de nodos conectados
por um conjunto de arcos.
-
Os nodos , em geral, representam objetos.
- Os arcos representam
relações
binárias entre os objetos.
-
Originalmente foram usadas para suporte
a linguagem natural. Em 1968 Ross Quillian as usou para representar
modelos
psicológicos de memórias humana chamado memórias
semânticas.
-
Conceitos são representados por
nodos e relações entre conceitos por arcos.
- Explica diversos resultados experimentais.
3.3.1.3. Redes Semânticas
Elementares
-
Usam-se nodos para representar substantivos,
adjetivos, pronomes e nomes próprios.
-
Os arcos são reservados basicamente
para representar verbos transitivos e preposições.
-
Exemplo: "O cão corre atrás
do gato"
-
cão1 e gato1 são ambos
instâncias
de classes genéricas.
-
pode-se generalizar também a
relação
entre eles, representando os indivíduos específicos com
nodos
anônimos e indicando a inclusão destes indivíduos
em
sua respectiva classe, através da relação é
- um.
-
relações de inclusão
entre classes são representadas por relações
subclasse
- de.
-
Os nodos rotulados representam classes
genéricas, enquanto que os nodos anônimos representam
indivíduos
específicos.
-
Nem sempre é assim, pois, se
conhecermos,
por exemplo, o nome do gato, podemos rotular o nodo que o representa
com
este nome.
-
Para saber se um nodo representa uma
instância,
é só observar se ele está na origem de algum arco
do tipo "é- um".
3.3.1.4. Redes Semânticas
Generalizadas
-
Procura resolver limitações
das redes semânticas elementares ao representar verbos.
-
Exemplo: "O Pluto correu atrás
do Félix e o Félix correu atrás do Mickey ."
-
devemos distinguir atos particulares de
"correr atrás" de "correr atrás em geral".
-
As redes semânticas generalizadas
se diferenciam das elementares por representarem os verbos
através
de nodos e não mais de arcos
3.3.1.5. Redes Semânticas
com Valores de Verdade
-
Pode ser necessário representar
fatos dos quais não se conhece o valor de verdade, ou mesmo,
fatos
que sabemos serem falsos. Uma maneira de fazê-lo é
rotulando
cada nodo- predicado com um valor VERDADEIRO, FALSO ou DESCONHECIDO.
-
"Armirio Fraga disse que não vazou
informações privilegiadas ."
3.3.1.6. Redes Semânticas
Particionadas
-
Muitas vezes é necessário
representar relações quantificadas em redes .
-
"Todos os homens são mortais."
3.3.2. Quadros e Roteiros
-
Os Quadros ou Cenários ("Frames
"), e sua variação, os roteiros ("Scripts"), foram
introduzidos
para permitir a expressão das estruturas internas dos objetos,
mantendo
a possibilidade de representar herança de propriedades.
-
As pessoas, ao enfrentarem uma nova
situação,
guardam o repertório do comportamento para
situações
similares. Alguém que já assistiu alguma vez a um juri
popular
sabe que tipo de "quadro" irá encontrar se for a outro. (juiz,
auxiliar
de justiça, réu, advogado de defesa, promotor, etc.)
-
Idéias fundamentais introduzidas
por Marvin Minksy em 1975 ("A framework to represent knowledge").
-
Está na origem das idéias
que levaram às linguagens de programação
orientadas
a objetos.
-
Um quadro consiste em um conjunto de
atributos
("slots") que através de seus valores, descrevem as
características
do objeto representado pelo quadro.
-
Os valores atribuídos aos atributos
podem ser, além dos valores do objeto em particular, valores
default,
ponteiros para outros quadros, e conjuntos de regras de procedimento
que
podem ser implementados.
-
Se os valores dos atributos forem apontadores
para outros quadros, cria-se uma rede de dependências entre os
quadros.
-
Os conjuntos de procedimentos indicam
que procedimento deve ser executado quando certas
condições
forem satisfeitas, por exemplo: ao ser criado o atributo, ao ser lido o
valor do atributo, ao ser modificado o valor do atributo, ou ao ser
destruído
o valor do atributo.
tipo |
o tipo de
valor que o slot comporta: número real, inteiro, símbolo,
lista, etc.; |
intervalo |
o intervalo
que os valores podem assumir no caso de números, ou uma lista
contendo
todos os valores possíveis; |
cardinalidade |
o número
máximo de valores permitidos para o slot; |
default |
o valor
do slot a ser assumido caso não especificado no próprio
slot; |
FACETAS |
se-lido |
o nome de
uma função a ser executada no momento que o valor do slot
é acessado; |
se-escrito |
o nome de
uma função a ser executada quando o slot é
preenchido
ou alterado; |
se-necessário |
o nome de
uma função a ser executada quando um slot de valor
indefinido
é acessado |
-
Os quadros também são
organizados
em uma hierarquia de especialização, criando outra
dimensão
de dependência entre eles (herança).
-
Permite a especificação
de propriedades de uma classe de objetos através da
declaração
de que esta classe é uma subclasse de outra que goza da
propriedade
em questão.
Exemplos
Quadro |
Cadeira |
Slot |
número
de pernas: inteiro (default: 4) |
Slot |
tipo-de-encosto:
curvo, reto, não-tem (default: curvo) Slot: tipo -de-assento -
redondo,
anatômico, reto (default: anatômico) |
Slot |
número-de-braços:
2,1,0 (default: 0) |
Slot |
cor: preta,
branca, incolor, azul (default: incolor) |
Quadro |
Cadeira-
do-Renato |
|
Quadro:
É-UM
Cadeira |
Slot |
número
de pernas: 4 |
Slot |
tipo-de-assento:
redondo |
Slot |
número-de-braços:
0 |
Slot |
cor: (default:
incolor) |
|
Valores
inexistentes em um Slot assumem os valores equivalentes do quadro pai,
dentro da hierarquia. |
Quadro |
Cômodo |
|
Quadro:
É-UM
lugar coberto |
Slot |
número
de paredes: 4,3,2,1,0 (default: 4) |
Slot |
formato:
retangular,
triangular, redondo (default: retangular) |
Slot |
altura:
(default:
3) |
Slot |
área:
? |
Slot |
volume: se
necessário (área * altura) |
Quadros
-
O processo de herança e
instanciação
favorece a reutilização de código evitando
definições
repetitivas e aproveitando funções de acesso definidas
para
as facetas se-lido, se-escrito, se- necessário, etc.
-
Deve-se notar que as estruturas de quadros
são ativas, pois sua manipulação causa o disparo
automático
das facetas.
-
São úteis para domínio
de problemas onde as formas e o conteúdo do dado desempenha um
papel
importante na solução do problema.
Roteiros
-
São estruturas semelhantes aos
quadros que descrevem seqüências estereotipadas de eventos
em
contextos particulares.
-
A principal diferença que se pode
estabelecer em relação aos quadros fica a nível
das
estruturas adotadas.
-
Os eventos descritos formam uma cadeia
causal.
-
O início da cadeia é o conjunto
de condições de entrada que permite a possibilidade de
ocorrência
do primeiro evento do roteiro.
-
O fim da cadeia é o conjunto de
resultados que permitirá a ocorrência de eventos
posteriores.
-
O raciocínio com roteiros serve
especialmente para verificar se determinado evento ocorreu e
também
para verificar a relação entre os eventos, o que pode ser
conseguido pelo exame da cadeia causal.
Exemplo
Roteiro |
comer-em-restaurante |
Apoio |
restaurante,
dinheiro, alimento, menu, mesas, cadeiras |
Funções |
pessoas
com
fome, encontro de pessoas |
Ponto-
de-
vista |
pessoas
com
fome |
Tempo-de-ocorrência |
tempo-de-operação
do restaurante |
Lugar-de-ocorrência |
localização
do restaurante |
Seqüência-de-eventos |
primeiro
:
Inicie o roteiro entrada-no-restaurante
então: Se (há-convite-
para-sentar ou reservas)
então:
siga roteiro orientação-do-graçom
então:
siga roteiro aguarde-sentado
então:
siga roteiro solicite-comida
então:
siga roteiro comer,
a menos que haja uma longa espera, caso em que seguirá o roteiro
sai-do-restaurante-furioso
então:
Se (qualidade-da-comida
estava melhor do que a esperada)
então
siga o roteiro cumprimentando
o "chefe"
então:
siga o roteiro page-a-conta
finalmente: siga o roteiro sai-do-restaurante
|
[Voltar]
|