Linguagens de programação lógica

916 visualizações

Publicada em

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
916
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
21
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Linguagens de programação lógica

  1. 1. Equipe: André PitombeiraFernando HeltonFrancisco HumbertoNiltemberg CarvalhoRainara Maia
  2. 2. • Expressar programas na forma de lógicasimbólica e usar processo de inferêncialógica para produzir resultados.• Os programas lógicos são declarativos, nãosão baseados em procedimentos.• A sintaxe das linguagens de programaçãológica é diferente da sintaxe das linguagensimperativas e das funcionais.• A semântica, por sua vez, tem poucasemelhança com a dos programas emlinguagem imperativa.
  3. 3. • Antes de discutir a programação lógica, precisamosinvestigar sua base: a lógica formal.• Uma proposição é uma declaração que pode ou nãoser verdadeira. A lógica formal foi desenvolvida parafornecer um método de descrever proposições, com oobjetivo de permitir que estas sejam verificadasquanto a sua validade.• A lógica simbólica pode ser usada para trêsnecessidades básicas da lógica formal: expressar asproposições, as relações entre estas e descrevercomo novas proposições podem ser inferidas deoutras que se presumem verdadeiras.
  4. 4. • Existe uma estreita relação entre a lógicaformal e a matemática, os axiomas dateoria dos números e dos conjuntos são oconjunto inicial de proposições presumidascomo verdadeiras.• A forma particular de lógica simbólicausada para programação lógica é o cálculode predicados.
  5. 5. • ProposiçõesConsiste em objetos e nas relações de objetos entre si, essesobjetos são representados por termos simples, constantes ouvariáveis. Uma constante é um símbolo que representa umobjeto. Uma variável é um símbolo que pode representardiferentes objetos. As proposições mais simples, chamadasproposições atômicas, consistem em termos compostos, que éformado por duas partes: um functor, o símbolo de função quenomeia a relação e uma lista ordenada de parâmetros. Porexemplo:homem(jake)gosta(bob, bife)
  6. 6. • ProposiçõesAs proposições compostas têm duas oumais proposições atômicas, ligadas porconectores lógicos ou operadores:Nome Símbolo Exemplo SignificadoNegação ¬ ¬a Não aConjunção ∩ a∩b a e bDisjunção U aUb a ou bEquivalência ≡ a b≡ a é equivalente a bImplicação ⊃ a b⊃ a implica b
  7. 7. • Variáveis podem aparecer em proposições,mas somente quando introduzidas porquantificadores. O cálculo de predicadosinclui dois quantificadores:• Exemplo: X. (mulher(x))∀ ⊃ humano(x))• ∃ X.(mãe(mary, X) ∩ homem(X))Nome Exemplo SignificadoUniversal ∀ XP Para todo X, P é verdadeiroExistencial ∃ X.PExiste um valor de X tal que Pseja verdadeiro
  8. 8. • Forma Clausal• Um problema é que há muitas maneiras diferentes dedeclarar proposições com o mesmo significado, ou seja,há muita redudância. Para simplificar as coisas umaforma padrão de proposições é desejável. A clausal,uma forma relativamente simples de proposições, é umadessas formas. Uma proposição nessa forma tem aseguinte sintaxe:B1 U B2 U … U Bn C A2 ∩ A2 ∩ … ∩ Naonde A e B são termos, o significado é se todos os As foremverdadeiros, pelo menos um B será verdadeiro.
  9. 9. • O lado direito de uma proposição na formaclausal é chamado antecedente. Oesquerdo, consequente; isso porque é aconsequência da verdade de seuantecedente. Exemplo:pai(louis, beto) U pai(louis, nara) C pai(beto,bob) ∩ mãe (nara, bob) ∩ avô(louis, bob)
  10. 10.  É um método para expressar coleções deproposições. Estas coleções são usadas paradeterminar se fatos interessantes ou úteispodem ser inferidos a partir da mesma.
  11. 11. • Resolução é uma regra de inferênciaque permite a computação dasproposições inferidas a partir dasproposições dadas.• Este método é muito utilizado nademonstração de teoremas.
  12. 12.  Suponhamos duas proposições:P1 c P2Q1 c Q2
  13. 13. Se P1 é igual a Q2, poderíamos reescreversubstituindo P1 e Q2 por T:T c P2Q1 c T
  14. 14.  Tendo que:T c P2Q1 c T Poderíamos dizer que:Q1 c P2
  15. 15. • Este processo de a partir das proposiçõesdadas:• P1 c P2• Q1 c Q2• Inferir que:• Q1 c P2• É chamado resolução.
  16. 16. • Outro exemplo, a partir de:mais velho(Joane, Jake) c mãe(Joane,Jake)mais sábio(Joane, Jake) c maisvelho(Joane, Jake)• Inferirmos que:mais sábio(Joane, Jake) c mãe(Joane,Jake)
  17. 17. • A mecânica dessa construção deresolução é simples: os termos queaparecem do lado esquerdo são unidospor um E para formar o lado esquerdo danova proposição. Então, a mesma coisa éfeita para obter o lado direito dela. Emseguida, o termo que aparece em ambosos lados é removido.
  18. 18.  Porém a resolução é mais complexa do que osexemplos mostram. Em particular, a presençade variáveis em proposições exige que aresolução encontre valores para essasvariáveis permitindo que o processo decomparação seja bem-sucedido. Esteprocesso de determinação dos valores échamado de unificação. A atribuiçãotemporária de valores a variáveis para permitira unificação é chamada instanciação.
  19. 19.  Uma propriedade importante da resoluçãoé a capacidade de detectar qualquerinconsistência em um conjunto deproposições. Essa propriedade permiteque a resolução seja usada parademostrar teoremas. Esta prova é feitapor contradição, as proposiçõesoriginais são chamadas de hipóteses, ea negação do teorema é chamada demeta.
  20. 20. • Um problema do processo de resolução éo tempo necessário para tal. O temponecessário para encontrar umainconsistência pode ser enorme.
  21. 21. • A demonstração de teoremas é a base daprogramação lógica. Grande parte do queé computado pode ser expresso na formade uma lista de fatos dados e de relaçõescomo hipóteses, e uma meta a serinferida a partir das hipóteses, usandoresolução.
  22. 22. • As cláusulas de Horn, simplificamainda mais o processo de resolução. Elaspodem estar somente em duas formas:com uma única proposição atômica nolado esquerdo, ou com o lado esquerdovazio.
  23. 23. • O lado esquerdo de uma fórmula clausal pode serchamado de cabeça, e as cláusulas de Horn quepossuem lado esquerdo pode ser chamada decláusula de Horn encabeçada.gosta(bob, truta) c gosta(bob, peixe) ^peixe(truta)• As cláusulas de Horn com o lado esquerdo vaziosão ditas sem-cabeça.pai(bob, Jake)
  24. 24. • Termos;• Instruções Relativas a Fatos;• Instruções Relativas a Regras;• Instruções Relativas a Metas;• Processo de Inferência do Prolog;• Aritmética Simples;• Estruturas de Listas.
  25. 25. • Como em outra linguagens de Programação o Prologconsiste em um conjunto de instruções , que podem ser emalguns casos muito complexas. Todas são construídas apartir de termos.• Termo: Em Prolog é uma constante, uma variável ou umaestrutura.• Constante: É um átomo ou um número inteiro.• Átomo: É uma cadeia de letras, de dígitos e de grifos quese inicia com uma letra minúscula ou uma cadeia dequaisquer caracteres ASCII imprimíveis delimitados porapóstrofos.
  26. 26. • Variável: É qualquer cadeia de letras, de dígitos e de grifos quese inicia com uma letra maiúscula. As variáveis não sãovinculadas a tipos por declarações, são por instanciação, queocorre somente no processo de resolução. As instanciaçõesduram somente o tempo necessário para a prova ou refutaçãode uma proposição.• Estrutura: Representam as proposições atômicas do cálculode predicados, e sua forma geral é a mesma: functor(lista deparâmetros).
  27. 27. • O Prolog tem duas formas de instrução básicas quecorrespondem as Cláusulas de Horn sem e com cabeça decálculo de predicados.• A forma mais simples de cláusulas de Horn sem cabeça noProlog é uma estrutura simples, interpretada como umaasserção incondicional ou como um fato.• Logicamente, fatos são simplesmente proposiçõesconsideradas verdadeiras.
  28. 28. • Exemplo:mulher(rainara).homem(fernando).mulher(adriana).homem(andre).pai(fernando, andre).pai(fernando, rainara).mae(adriana, andre).mae(adriana, rainara).
  29. 29. • A outra forma básica de instrução Prolog para construir o bancode dados é a cláusula de Horn com cabeça. Forma relacionadaa um teorema da matemática conhecido, a partir do qual sepode tirar uma conclusão sobre se o conjunto de determinadascondições é satisfeito. O lado direito é o antecedente, ou a partese (if), e o lado esquerdo é o conseqüente, ou a parte então(then).• Conjunções: Contém termos múltiplos separados por operaçõesAND lógica, que é implícita. A vírgula pode ser considerada oAND:mulher(rainara), filho (rainara).
  30. 30. • Forma geral de construção de cláusula de Horn com cabeça:• Conseqüência_1 :- expressão_antecedente• Leia-se: a “ conseqüência_1 poderá ser concluída se a expressãoantecedente for verdadeira ou puder torna-se verdadeira por meio dealguma instanciação de suas variáveis”.• antepassado(adriana, rainara) :- mãe(adriana, rainara).• Obs: As cláusula de Horn são chamadas regras porque declaramregras de implicação entre proposições.
  31. 31. • Utilizadas para provar Teoremas, que queremos que o sistemaprove ou desaprove. Essas proposições são chamadas metas ouconsultas. A sintaxe é idêntica as cláusulas de Horn sem cabeça.homem(fred).• O sistema poderá responder com yes ou no.pai (x, mike).• O sistema tentará, pela unificação, encontrar uma instanciaçãode x que resulta em um valor verdadeiro para a meta.
  32. 32. • As consultas são chamadas metas. Quando uma meta éuma proposição composta, cada um dos fatos (estruturas)é chamado submeta. Para provar que ela é verdadeira, oprocesso de inferência deve encontrar um encadeamentode regras de inferência e/ou de fatos no banco de dadosque ligam a meta a um ou mais fatos no banco de dados.• O processo de provar uma submeta é feito por um processode comparação de proposições, às vezes é chamado decasamento.
  33. 33. • Encadeamento Progressivo: Inicia com a meta e tenta encontra umaseqüência de proposições coincidentes que levam a algum conjunto defatos originais no banco de dados.• Encadeamento Retrogrado: Funciona bem quando há um conjuntorazoavelmente pequeno de respostas candidatas. As implementações emProlog usam o encadeamento retrogrado para resolução de problemas,porque seus projetistas achavam que ele era melhor para uma classe maiorde problemas.• Primeiramente pela profundidade: Localiza uma seqüência completade proposições – uma prova – referente à primeira submeta antes detrabalhar nas outras.• Primeiramente pela largura: Trabalha em todas as submetas dedetermina meta de maneira paralela.• Backtracking: Uma nova solução é encontrada ao iniciar a procura onde abusca anterior dessa submeta interrompeu-se.
  34. 34. • O Prolog suporta variáveis de números inteiros e seusrespectivos cálculos.+(7, x)• O Prolog permite uma sintaxe mais abreviada para cálculosaritméticos com o operador is. Este toma uma expressãoaritmética como seu operando direito e variável como seuoperando esquerdo.A is B / 17 + C.
  35. 35. • Exemplo simples do uso de computações numéricas em Prolog:• Suponhamos conhecer as velocidades médias de diversos automóveis emuma pista de corrida particular e a quantidade de tempo que elespermanecem na pista. Essa informação básica pode ser codificada comofatos, e a relação entre velocidade, tempo e distancia pode ser escrita comouma regra.• velocidade(ford, 100).• velocidade(chevy, 105).• velocidade(dodge, 95).• velocidade(volvo, 80).• tempo(ford, 20).• tempo(chevy, 21).• tempo(dodge, 24).• tempo(volvo, 24).• Distancia(x, y) :- velocidade(x, Velocidade), tempo(x, Tempo), y is Velocidade * tempo.• Consulta: distancia(chevy, Distancia_do_Chevy).
  36. 36. • Estrutura de dados básica é a lista. Elas são sequências dequalquer numero de elementos, em que estes podem serátomos ou quaisquer outros termos, inclusive outras listas. OProlog usa uma sintaxe convencional para especificar listas. Oselementos delas são separados por vírgulas, e a lista inteira édelimitada por colchetes, como em:[maçã, ameixa seca, uvas, kumquat]Uma lista pode ser criada como uma estrutura simples, comoem:nova_lista([maçã, ameixa seca, uvas, kumquat]).
  37. 37. • Algumas operações são necessárias para lidar com lista.Um exemplo é a operação append. Os dois parâmetros paraa operação append no código são as duas listas a seremanexadas e o terceiro parâmetro é a lista resultante:append([Cabeça|Lista_1], Lista_2, [Cabeça,Lista_3]) append(Lista_1, Lista_2, Lista_3).• A função append cria uma nova lista na terceira listapassada como parâmetro, concatenando as duas primeiraslistas passadas como parâmetros.
  38. 38. 38• Controle de Ordem de ResoluçãoDependendo do problema, a intervenção doprogramador é muito importante para o programa ficarmais eficiente devido ao modo de inferência.A ordem como as cláusulas são escritas podemlevar a laços infinitos.Ex: f(X, Y) :- f(Z, Y), g(X, Z)./* Semelhante ao problema que um analisadordescendente recursivo tem com regras gramaticaisrecursivas à esquerda */
  39. 39. 39• Controle de Ordem de ResoluçãoUso do comando cut, especificado por ‘!’ para limitar obacktracking, em prol da eficiênciaEx1.: a, b, !, c, d./* Se a e b forem ‘true’ e c falhar, então ameta inteira falhará */Ex2.: membro(Elemento, [Elemento | _ ] ) :- !.membro(Elemento, [ _ | Lista]) :-membro(Elemento, Lista).% ‘_’ indica variável livre ou anônima
  40. 40. 40• Pressuposição de Mundo FechadoO Prolog é na verdade um sistema true / fail e não umsistema true / falsePois, quando não consegue provar que uma meta éverdadeira ele pressupõe que a meta deve ser falsa.
  41. 41. • O Problema da NegaçãoAs cláusulas de Horn evitam conclusões negativasB ← A1 ∧ A2 ∧ ... ∧ AnSe todas as proposições A forem verdadeiras, Btambém é, porém independente da verocidade oufalsidade de qualquer um ou de todos os As, não sepode concluir que B é falso.
  42. 42. 42• Limitações IntrínsecasIneficiente para resolução de problemas decaracterísticas iterativas ou procedimentais
  43. 43. 43• Sistemas de Gerenciamento de Bancode Dados RelacionaisPrincipal vantagem: Capacidade Dedutiva• Sistemas EspecialistasDiminuir incosistencias e falta de completude• Processamento de Linguagem Natural• EducaçãoEm particular crianças até 07 anos de idadeÉ mais fácil ensina-lás do que um programadorexperiente em linguagem imperativa
  44. 44. 44Demonstração prática das seguintesaplicações:• Problema da Torre de Hanói• Problema das Rainhas• APES (Sistema Especialista para construçãode outros sistemas especialistas)• Uso do Delphi 5.0 com Visual Prolog 5.2
  45. 45. 45• Programas em Prolog são conjuntos deinstruções basicamente escritos em formade Cláusulas de Horn• Paradigma Declarativo• Baseado na Lógica FormalMenos erros e menos manutenção• Programas ConcisosTempo de desenvolvimento reduzidoBoa ferramenta para prototipação• Forma alternativa para solução deproblemas

×