1 / 20

Introdução à Linguagem Prolog

Introdução à Linguagem Prolog. Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada. Conteúdo do Curso. Introdução à Lógica e à Programação Lógica Introdução ao Prolog e ao SWI-Prolog Matching e Backtraking Múltiplas soluções Listas e predicados recursivos

emiko
Download Presentation

Introdução à Linguagem Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introdução à Linguagem Prolog Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada

  2. Conteúdo do Curso • Introdução à Lógica e à Programação Lógica • Introdução ao Prolog e ao SWI-Prolog • Matching e Backtraking • Múltiplas soluções • Listas e predicados recursivos • Grafos em Prolog

  3. Resolução de Problema como um Espaço de Estados • Uma possível estratégia para solução de problemas é listar todos os estados possíveis. • A solução do problema consiste em percorrer o espaço de estados a partir do estado inicial até o estado meta. • É necessário desenvolver um conjunto de operadores que modifique um estado para um outro estado.

  4. Definição do Problema como um Espaço de Estados (Cont.) • Conjunto de Estados possíveis. • Conjunto de operações possíveis que modifiquem um estado. • Especificação de um estado inicial(s). • Especificação de um estado meta(s).

  5. 4 lt 3 lt Exemplo: Problema dos Jarros de Água Sem limite de Água Objetivo: 2 litros no jarro 4 lt

  6. Espaço de Estados do Problema dos Jarros de Água O espaço de estados pode ser representado por dois inteiros x e y: x = litros no jarro de 4 litros y = litros no jarro de 3 litros Espaço de Estados = (x,y) tal que x  {0,1,2,3,4}, y  {0,1,2,3}

  7. Início dos Jarros de Água e Estados Meta • O Estado Inicial ocorre quando ambos os jarros estão vazios: (0,0) • O Estado Meta é qualquer estado que possua 2 litros de água no jarro de 4 litros: (2,n) para qualquer n

  8. Estado Inicial Estados do Jarros de Água Estados Meta (4,0) (0,0) (1,0) (2,0) (3,0) (4,1) (0,1) (1,1) (2,1) (3,1) (4,2) (0,2) (1,2) (2,2) (3,2) (4,3) (0,3) (1,3) (2,3) (3,3)

  9. Operações com Jarros de Água • Colocar 3 lt. no jarro 3 • Colocar 4 lt. no jarro 4 • Esvaziar jarro 3 • Esvaziar jarro 4 • Coloca o conteúdo do jarro 3 no jarro 4 • Outros ??? (x,y) -> (x,3) (x,y) -> (4,y) (x,y) -> (x,0) (x,y) -> (0,y) (0,y) -> (y,0)

  10. Restrições • Não é possível colocar água em um jarro cheio. • Restrições são associadas para que uma operação possa ser aplicada sobre um estado (x,y), x < 4 -> (x,0) (x,y), y < 3 -> (0,y) (x,y), x + y <= 4 -> (y,0)

  11. Regras de Produção • Uma operação e as condições que devem ser satisfeitas (restrições) antes da operação poder ser aplicada é chamada de regra. • Tipicamente é necessário mesclar regras gerais e regras específicas. • Informação prévia sobre a solução tende a produzir regras específicas e aumentar a velocidade da busca.

  12. Domínio de Regras Específicas • Para o problema dos Jarros de Água : (0,2) -> (2,0) (x,2) -> (0,2) • Utilizando estas regras soluções podem ser encontradas rapidamente!

  13. (0,0) (3,0) (1,3) (0,0) (0,0) (0,3) (4,3) (4,0) (4,3) Grafo dos Jarros de Água . . . . . . . . . . . . . . . . . . Uma solução possível: (4, 0) (1, 3) (1, 0) (0, 1) (4, 1) (2, 3)

  14. Busca em Profundidade • Algoritmo • Estabeleça alguma ordenação às regras; • Enquanto existem regras aplicáveis Aplique a próxima regra e gere um novo estado; Faça uma busca em profundidade (BP) no novo estado. • fim_enquanto

  15. a b c f d e g j h i k Características da Busca em Profundidade • Não necessita armazenar o caminho de uma grande lista de estados. • Pode encontrar uma solução muito rapidamente. • “Poda” é possível Exemplo: utilização de heurísticas • Pode facilmente encontrar problemas com ciclos (loops).

  16. Busca em Largura • A estratégia de árvore para o problema dos jarros de água é um exemplo de busca em largura. • Algoritmo geral para BL: • crie lista_nós e a inicialize com o estado inicial; • enquanto um estado meta não é encontrado oulista_nós != {}; • remova o primeiro elemento de lista_nós, primeiro_nó; • aplique todas as regras possíveis em primeiro_nó e adicione os estados resultantes em lista_nós; • fim_enquanto

  17. a b c f d e g j h i k Características da Busca em Largura • Se há uma solução, BL a encontrará. • Encontrará a solução mínima (o caminho mais curto até a solução). • Não terá problemas com ciclos. • Requer espaço disponível para armazenar lista_nós, que pode ser muito grande!!!

  18. Grafos em Prolog • São normalmente utilizados para representar espaços de busca • Exemplo: faz_divisa(sc, pr). % (1) faz_divisa(sc, rs). % (2) faz_divisa(pr, sp). % (3) faz_divisa(pr, ms). % (4) faz_divisa(sp, rj). % (5) faz_divisa(sp, mg). % (6) faz_divisa(sp, ms). % (7) faz_divisa(sp, pr). % (8) MG RJ MS 6 7 5 SP 4 SC 1 3 , 8 PR 2 RS

  19. Exercícios • 1) A partir do MAPA do Brasil: • A) Crie um grafo em Prolog para representar as fronteiras entre os estados; • B) Escreva um programa Prolog para colorir o MAPA de maneira que dois estados vizinhos não apresentem a mesma cor. Um número pequeno de cores deve ser utilizada (3 ou 4)

  20. Exercícios • 2) Implementar a resolução do problema dos jarros de água usando uma estratégia de busca em largura

More Related