Planejamento Baseado em Casos



Documentos relacionados
Planejamento Baseado em Casos

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

NOÇÕES DE COQUETELARIA INTERNACIONAL. 1 Categorias

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

Extração de Requisitos

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Módulo 15 Resumo. Módulo I Cultura da Informação

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

Dadas a base e a altura de um triangulo, determinar sua área.

ISO/IEC 12207: Gerência de Configuração

Guia de Especificação de Caso de Uso Metodologia CELEPAR

Requisitos de Software

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Manual SAGe Versão 1.2 (a partir da versão )

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Seção 2/E Monitoramento, Avaliação e Aprendizagem

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Capacitação para Garçom. Ficha Técnica de Coquetéis

Feature-Driven Development

Microsoft Access XP Módulo Um

Programação para Computação

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Boas Práticas em Gerenciamento de Projetos Material utilizado nas aulas de Pós-graduação do Centro de Informática

Gerenciamento de Problemas

PROFESSOR: CRISTIANO MARIOTTI

CHECK - LIST - ISO 9001:2000

FLUXOGRAMA DA PESQUISA

Desenho de Software. Desenho de Software 1

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Disciplina: Unidade III: Prof.: Período:

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

Engenharia de Software III

4 Segmentação Algoritmo proposto

TÉCNICAS DE PROGRAMAÇÃO

Núcleo de Informática Aplicada à Educação Universidade Estadual de Campinas

Metodologia de Gerenciamento de Projetos da Justiça Federal

PR 2 PROCEDIMENTO. Auditoria Interna. Revisão - 2 Página: 1 de 9

Prof. Marcelo Machado Cunha

PLANOS DE CONTINGÊNCIAS

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Algoritmos e Programação Parte Teórica

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

2 Diagrama de Caso de Uso

Engenharia de Requisitos

Universidade de Brasília Faculdade de Economia, Administração, Contabilidade e Ciência da Informação e Documentação Departamento de Ciência da

Entendendo como funciona o NAT

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

SUGESTÕES PARA ARTICULAÇÃO ENTRE O MESTRADO EM DIREITO E A GRADUAÇÃO

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Notas de Aula 04: Casos de uso de um sistema

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

15 Computador, projeto e manufatura

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro

Processos de Desenvolvimento de Software

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

FAZEMOS MONOGRAFIA PARA TODO BRASIL, QUALQUER TEMA! ENTRE EM CONTATO CONOSCO!

Modelo Cascata ou Clássico

ORGANIZAÇÃO DO ENSINO DE DISCIPLINA / CRÉDITO RESUMO INTRODUTÓRIO

Faculdade Alagoana de Administração FAA Ciência da Computação. (Resolução de Problemas em) Espaço de Estados

Lógica de Programação

F.1 Gerenciamento da integração do projeto

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

Programação WEB I Estruturas de controle e repetição

Guião para a Organização de Projetos de Melhoria Contínua da Qualidade dos Cuidados de Enfermagem

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Engenharia de Software II

PLANEJAMENTO DA MANUFATURA

Profissionalização em GP GPA010 - Gerenciamento do Escopo. Introdução: Proposta do Treinamento: Atividades: Temos nesse Módulo 4 Unidades de Ensino:

Resolução de problemas e desenvolvimento de algoritmos

GESTÃO DO CONHECIMENTO NA INDÚSTRIA QUÍMICA

Solução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

GESTÃO DAS INFORMAÇÕES DAS ORGANIZAÇÕES MÓDULO 11

Curso de Graduação em Administração. Administração da Produção e Operações I

Modelo de Contrato de Prestação de Serviços de Consultoria

NetBeans. Conhecendo um pouco da IDE

o(a) engenheiro(a) Projeto é a essência da engenharia 07/02/ v8 dá vazão

Universidade de Brasília Faculdade de Ciência da Informação Profa. Lillian Alvares

Prof. Dr. Guanis de Barros Vilela Junior

Análise e projeto de sistemas PROF. REGILAN SILVA

Modelo para Documento de. Especificação de Requisitos de Software

Como Processos Criam Valor?

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

PLANEJAMENTO OPERACIONAL - MARKETING E PRODUÇÃO MÓDULO 5 CONCEITOS DO PLANEJAMENTO OPERACIONAL

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

O modelo do computador

Conceitos de Banco de Dados

)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR

Transcrição:

Planejamento Baseado em Casos I. Introdução PCS 5740 - Projeto de curso Júlio Monteiro e Luis Alves Ferreira a realidade toma forma apenas na memória, Marcel Proust, Na busca do tempo perdido. A capacidade de planejamento é um comportamento característico do ser inteligente, permitindo prever situações e gerar ações correspondentes no mundo real com base em seu conhecimento atual. Esta atividade requer uma série de funções complexas, que vão desde representar o conhecimento de maneira eficiente até a capacidade de localizar os motivos de uma falha. Das várias abordagens de planejamento em IA, o planejamento baseado em casos, obtém uma grande eficiência lidando com um grau elevado de complexidade. Um paradigma de raciocínio alternativo aos sistemas especialistas (ou sistemas baseado em conhecimento) e, portanto, um novo método computacional para a solução de problemas tem, cada vez mais, chamado a atenção. CBR (case-based reasoning) resolve novos problemas adaptando soluções bem--sucedidas de problemas semelhantes. O CBR é uma evolução em relação aos sistemas especialistas, pois: não requer um modelo explícito de domínio, mas sim a coleta de casos a implementação está na identificação de características relevantes que descrevem um caso usa técnicas de bando de dados o sistema aprende pelo conhecimento adquirido com novos casos Este trabalho apresenta uma visão do planejamento baseado em casos formada durante a pesquisa para o desenvolvimento de um planejador de receitas de bebidas em Prolog. A primeira parte situa o planejamento dentro da inteligência artificial, fazendo uma apresentação didática de conceitos. Em seguida é apresentado o trabalho realizado em Prolog, os resultados alcançados e as dificuldades na implementação. II. Planning Planning é o termo utilizado em IA para designar mecanismos que traçam caminhos para algum objetivo. Na busca de um solucionador genérico de problemas, foram feitas algumas formulaçõs na tentativa de alcançar este objetivo: Planejamento lógico Planejamento baseado em operadores Planejamento baseado em tempo Planejamento baseado em casos Planejamento baseado em restrições Planejamento distribuído Página 1 de 12

Planejamento reativo A. Planejamento lógico O acúmulo de experiências utilizado na formulação de planos de ação em situações onde as informações são incompletas [Genesereth 86]. σ Γ ρ i Planejador (planner) γ Executor Ω g Considerando σ como um estado inicial ρ como objetivos (goals) Γ como ações (conjunto de operadores da conceituação) Ω como o conjunto de sentenças sobre o estado inicial O planejador vai tentar gerar um plano γ que, quando executado a partir de estado satisfazendo a descrição do estado inicial, vai levar a um estado satisfazendo a descrição do estado objetivo. A apresentação do contexto leva a diferentes tipos de problemas de planejamento: 1. Problema de cenário (Frame Problem) Após dirigir seu carro quatro portas do ponto A para o ponto B Qual é a cor do carro? Quantas portas ele têm? etc. 2. Problema de qualificação Se girar a chave na ignição de seu carro o motor vai pegar... a menos que a bateria não esteja descarregada... ou a gasolina não tiver acabado... ou não tenha uma batata no escapamento... etc. 3. Problema de ramificação Se dirigir seu carro do ponto A para o B, então como resultado o carro agora está em B... assim como seu motor... seus pneus... Página 2 de 12

etc. B. Planejamento baseado em operador es As açõs são representadas por operadores, também chamada de abordagem STRIPS, utiliza vários esquemas de operadores e representações de planos. O problema de cenário (frame problem) pode ser esolvido utilizando-se a abordagem STRIPS. Os pontos principais a serem considerados são: 1. Esquema de operadores Listas de adição e deleção, representações procedurais vs. declarativas Página 3 de 12

2. Representações dos planos Planos lineares, planos não lineares, planos hierárquicos, planos parcialmente ordenados, planos condicionais 3. Algoritmos de planejamento Planejamento como busca, world-space vs. plan-space, planejamento do orden parcial, planejamtento de ordem total, progressão, regressão do objetivo A complexidade computacional do planejamento. 4. Crítica de planos Reformulação de planos, conserto, ordem total O STRIPS é um exemplo de planejamento que combina a busca heurística no espaço de busca e resolução. C. Algoritmos de planejamento É o planejamento como busca. Existem duas abordagens: Busca no world-space cada nó do grafo representa um estado no mundo. Arcos do grafo correspondem à execução de uma ação específica. O problema de planejamento é achar um caminho do estado inicial para o estdo objetivo. Existem dois algoritmos: Progressão: um algoritmo que busca pelo estado objetivo através dos estados gerados pelas ações que podem ser realizadas em um dado estado, iniciando pelo estado inicial. Regressão: um algoritmo que busca a partir do estado objetivo identificando aquelas ações cujo efeito satisfazem um ou mais objetivos atingidos, e assumindo as condições para tais ações como objetivos (regressão de objetivos). Ambos algoritmos são corretos (sound se um plano é produzido, ele funciona) e completos (se um plano existir, o algoritmo será capaz de achá-lo). Na maioria das situações a regressão se mostra a melhor estratégia. Busca no espaço de planos (plan space) cada nó do grafo representa planos parciais. Arcos representam operações de refinamento no plano. A busca por um plano pode ser feita com uma sequência ordenada de ações (total order planning), ou um plano com um conjunto parcial de ações ordenadas (partial order planning, POP) a) Partial order planning, POP Um plano parcialmente ordenado tem três componentes:. Um conjunto de ações, por exemplo: {tomar-café-da-manhã, tomar-banho, acordar, ir-para-o-trabalho}. Um conjunto de restrições de ordenamento, por exemplo: {acordar antes de tomar-café-da-manhã, acordar antes de tomar-banho, Página 4 de 12

acordar antes de ir-para-o-trabalho, tomar-banho antes de ir-para-o-trabalho}. Um conjunto de vínculos causais, por exemplo: acordar -- acordado --> tomar-café-da-manhã é um vínculo entre as duas atividades. Quando a atividade acordar é adicionada ao plano, o vínculo causal é gravado juntamente com as restrições de ordenamento. Vínculos causais ajudam na identificação de inconsistências sempre que um plano parcial é definido. D. Planejamento baseado em casos Dados um novo problema, um objetivo, uma descrição do estdo inicial, procurar na biblioteca de casos por problemas semelhantes, com estados inicial e objetivo semelhantes. Modificar o plano recuperado para adequá-lo ao novo problema. O sucesso depende da identificaçãos de boas métricas de similaridade. E. Repr esentação de casos Como já foi mencionado, o primeiro sistema que passou a ser chamado de planejador baseado em casos foi o sistema CYRUS, de Kolodner, utilizou o modelo de memória dinâmica de Schank. Neste modelo a memória de casos é uma estrutura hierárquica do que se chama E-MOPS episodic memory organization packets. A idéia básica é organizar casos especifícos que compartilhem propriedades semelhantes em uma estrutura mais geral um episódio genérico (EG). Um episódio genérico contém três tipos de objetos: Nomras, casos e índices. Normas são características comuns a todos casos indexados sobre um EG. Índices são características que diferenciam os casos entre diferentes EGs. Página 5 de 12

Um índice pode apontar para um EG mais específico, ou diretamente para um caso. Um índice é composto por dois termos: um nome e um valor. III. Planejador de Receitas de Bebidas O modelo utilizado na implementação de um planner em PROLOG foi o seguinte, onde, O usuário elicita características de uma bebida (problema); Página 6 de 12

O recuperador identifica o sub conjunto próprio de planos passados que têm semelhança com o novo caso e escolhe um que julgar o mais semelhante; O novo caso e o mais semelhante encontrado na memória de casos são entregueas ao modificador para a geração de um plano (solução). O novo plano é entregue ao avaliador para testar se cumpre os objetivos propostos. Caso o plano atinja os objetivos ele é guardado como um caso passado. O caso do plano ruim não foi tratado. A complexidade de identificar o por que de um plano falhar foi deixada para uma possível continuidade deste trabalho, a elaboração do reparador de planos (repairer). A. Uma pr oposta de bartender O planejamento baseado em casos é um abordagem de inteligência artificial que interpreta o planejamento como uma função da memória, ou seja, através de uma memória de casos. A forma como esta memória é indexada define como vai funcionar o algoritmo do recuperador de planos, e como faz para localizar os melhores planos de ação. O primeiro passo é separar, dentre o universo de casos passados, aqueles cuja solicitação inicial têm semelhanças com a nova solicitação. O plano que atingir o maior número de objetivos é, então, escolhido como sendo a melhor aproximação de solução encontrada. A forma como se seleciona um plano está ligada aos objetivos que satisfaz, buscando o que apresentar o de melhor índice de objetivos solucionados. O próximo passo do planejador é modificar o plano de forma a resolver totalmente a situação atual. Uma vez que este novo plano seja gerado e executado, ele é inserido novamente na memória de casos. Porém, nas situações onde o novo plano não funcionar como previsto, o planejador deveria ser capaz de avaliar o plano de forma a encontrar os motivos da falha do plano e então consertá-lo, ou mesmo elaborar uma nova visão do mundo com base nos novos dados. B. O Pr ograma Como aplicação exemplo desta teoria implementou-se um planejador baseado em casos, utilizando a linguagem PROLOG, que pretendeu modelar um bartender automático, que propõe receitas de bebidas de acordo com receitas previamente conhecidas, e que pode desenvolver novas receitas para atender os pedidos que recebe. 1. Objetivos do Projeto Em princípio, este planejador não deve ser capaz de consertar planos falhos, mas irá reformular sua visão do mundo com base em experiências erradas. 2. Metodologia Página 7 de 12

Vamos criar um planejador baseado em casos composto dos seguintes módulos: 1. retriever recupera um plano não ruim, dentre os armazenados, que satisfaça o maior número de objetivos. 2. modifier no caso de o plano recuperado pelo retriever não atender a todos objetivos, este módulo altera o plano de forma a cobrir os objetivos faltantes. A seguir, vai compará-lo com os planos na memória para saber se o plano é ruim. Sendo ruim, descarta a modificação e utiliza outra regra. Se acabarem as regras desiste. 3. evaluator executa o plano passo-a-passo para verificar se os objetivos são atingidos. No caso de identificar alguma restrição durante a execução, marca o plano como ruim armazenando-o na memória de planos. No caso de não haver restrições armazena o plano e entrega-o como solução. descrição Retriever ❶ Plano ❷ Consulta após modificação ❸ Plano modificado ❹ Armazena plano avaliado (bom/ruim) Modifier Evaluator Memória de Casos solução 3. Conceituação A fim de descrever logicamente nosso universo de discursso, entrevistamos um bartender, que nos indicou uma lista inicial de elementos que compõe o universo de um bar, e o conjunto mínimo de ferramentas utilizadas na preparação de bebidas. Identifica-se oito grupos de ingredientes, descritos a seguir com exemplos e comentários. Os comentários ajudam na definição de parâmetros de predicados de ingredientes e bebidas. Aguardentes Bourbon, Brandy, Gin, Rum, Scoth, Tequila, Vodka, Whiskey, Whisky Bebida destilada a partir de líquido fementado e que tem alto teor alcoólico. Essências Benedictine, Campari, Chartreuse, Cointreau, Creme de Cacao, Grand Marnier, Marschino, Orange Curaçao, Pernod, Triple Sec Página 8 de 12

Licores e revigorantes doces e de cores fortes, consumidos puros após refeições, também utilizado como especiaria mem coquetéis. São feitos adicionando-se essências a bebidas alcoólicas como o Brandy e Whiskey, ou alcoólico neutro como a Vodka. Vinhos Vinho Branco, Champagne, Vermouth Doce, Lillet, Porto, Sherry, Vinhot Tinto, Vermouth Seco De modo geral não devem ser misturados a outras bebidas alvcoólicas. Especiarias Angostura Bitters, Horseradish, Orange Bitters, Peach Bitters, Pepper, Peychaud Bitters, Sal, Tabasco, Worcestershire Tudo que não se enquadra em outras categorias entra aqui como especiaria. Sucos Suco de Morango, Suco de Limão, Suco de Laranja Muitos coquetéis incluem algum tipo de suco de frutas. O mais comum é o limão, mas muitos são necessários par aum bar decente. Mixers Club Soda, Cola, Ginger Ale, Soda, Água Tônica Bebidas gaseificadas (carbonadas) que compõe o drink. Xaropes Groselha, Falerno, Orchata Concentrados com alto teor de açucar, que podem ser considerados revigorantes não alcoólicos. Guarnições Azeitona, Rodela de Limão, Casca de Limão, Cereja, Cebola Picada, Fatia de Laranja A confecção adequada da maioria das bebidas inclui alguma guarnição que finaliza o drink. Pode ser puramente decorativo(como a rodela de limão), ou para ser apreciado enquanto se toma a bebida (como a azeitona). Página 9 de 12

Ferramentas básicas para se ter em um bar Com uma colher (para pegar uma azeitona no vidro, dosar o uísque no café) e as ferramentas acima compõe o conjunto mínimo de artefatos de um bar. Além dos copos de servir, palitos para mexer e gelo. Receitas clássicas Caipirinha, Cuba Libre, Manhatan, Martini foram as receitas escolhidas. Completa a coca com gelo e limão. a) Ingredientes escolhidos Partindo das receitas escolhidas, os ingredientes utilizados em seu preparo são os seguintes: refrigerantes (cola), aguardentes (rum, gim, whiskey e cachaça), vinhos (vermout doce), sucos (limão), especiarias (angostura), guarnições (azeitona e casca de limão). b) Restrições Não misturar vinhos com aguradentes. c) Regras de mudança na preparação de bebidas Incluir ingrediente que proporciona uma, ou mais, das características desejadas. 4. Interpretação Convertendo o problema no domínio selecionado em sentenças lógicas, foi possível escrever um programa na linguagem PROLOG capaz de: a) Recuperar planos indexados na memória de casos b) Propor uma solução baseado no plano encontrado pela busca c) Verificar a validade do plano criado considerando sua visão de mundo d) Indexar o novo plano, marcando-o como inválido, se este for o caso Para consultar a listagem da implementação em prolog, consulte o apêndice. Página 10 de 12

IV. Resultados alcançados Observou-se que, se a memória de planos contiver todas as receitas conhecidas por uma barman convencional, a grande maioria dos novos problemas vão se encaixar nos casos anteriores [Hammond 89]. Desta forma o planejamento se torna eficiente, pois uma busca indexada na memória de casos vai retornar uma solução adequada. Caso haja necessidade de alterar um plano o procedimento é mais trabalhoso. Isto se deve ao fato de que se deve testar o plano alterado para verificar se funciona. É importante ressaltar que, no caso de o plano ser falho, vai ser entregue ao usuário da mesma forma. Porém, é armazenado na memória como um plano ruim, evitando que o erro se repita. A. Utilização do pr ograma em Pr olog As perguntas feitas na forma: order(carac1, carac2, caracn, X). Têm como resposta um nome de bebida, que pode ser uma bebida pré-existente, ou uma bebida modificada de acordo com os objetivos que deve alcançar. Assim, a pergunta acima pode gerar uma resposta na seguinte forma: X = caipirinha. Se caipirinha atinje todos os objetivos colocados pelo usuário. Ou, então, X = caipirinha1 se a resposta foi alcançada alterando-se a receita de uma bebida existente. V. Problemas na implementação Encontramos dificuldade de ao tentar uma implementação genérica em PROLOG. Por exemplo, a definição de um predicado para a cópia de um átomo não é possível em lógica de primeira ordem, pois trata-se de metalógica. Assim, deve-se recorrer a predicados disponíveis no sistema. O problema está justamente ai: ao se recorrer a predicados de sistema perde-se a portabilidade da implementação entre os diversos interpretadores PROLOG existentes. A utilização da ferramenta demonstrou que melhorias podem ser feitas em seus recursos de depuração de código (principalmente quanto a depuração de código recursivo). Um outro problema vivenciado, este mais sútil, foi a dificuldade de racicionar em lógica. Quando se está acostumado a pensar de modo algoritimico (procedimentos) é preciso alterar o paradigma de programação antes de se usar um sistema como, por exemplo, o PROLOG. VI. Bibliografia [Genesereth 86] Michael R. Genesereth e Nils J. Nilsson, Logical Foundations of Artificial Intelligence, Stanford University, Morgan Kaufmann Publishers, 1986 [Hammond 89] Kristian J. Hammond, Case-Based Planning: Viewing Planning as a Memory Task, Perspectives in Artificial Intelligence, Vol. 1, Prentice Hall, 1989. Página 11 de 12

[Bratko 90] Ivan Bratko, PROLOG Programming For Artificial Intelligence, second edition, 1990 [Schank 82] Robert Schank, Dynamic Memory: a Theory of Remiding and Learning in Computers and People, Cambridge University Press, 1982. [Kolodner 83a] Janet Kolodner, Maintaining Organization in a Dynamic Longterm Memory, Cognitive Science, vol. 7, pgs. 243-280, 1983. [Kolodner 83b] Janet Kolodner, Reconstructive Memory, a computer model, Cognitive Science, vol. 7, pgs. 281-328, 1983. [Porter 86] Bruce Porter e R. Bareiss, PROTOS: An Experiment in Knowlodge Acquisition for Heuristic classification tasks, Proceeding of the First International Meeting on Advances in Learning (IMAL), Les Arcs, France, pgs. 159-174, 1986. Página 12 de 12