Recursos e exemplos de programação lógica

2650
Abraham McLaughlin
Recursos e exemplos de programação lógica

O programação lógica é um paradigma de programação que usa circuitos lógicos em vez de apenas funções matemáticas para controlar como os fatos e regras são declarados.

Em vez de um fluxo de controle cuidadosamente estruturado que dita quando executar e como avaliar chamadas de função ou outras instruções, as regras lógicas do programa são escritas como cláusulas ou predicados lógicos..

Exemplos de programação lógica em Prolog. Fonte: Por Kuldeepsheoran1 - captura de tela, CC BY-SA 3.0, wikimedia commons

Essa abordagem, que é freqüentemente usada na programação evolutiva e genética, geralmente diz a um modelo qual objetivo atingir, ao invés de como alcançá-lo..

Cada regra contém um cabeçalho e um corpo com uma lógica formalizada, em vez de uma função matemática executável. Por exemplo, "E é verdadeiro (cabeçalho): se C1, C2 e C3 forem verdadeiros (corpo)." Os fatos ou resultados são expressos sem corpo, como "E é verdade".

No entanto, com algumas linguagens de programação como Prolog, a programação imperativa também pode ser incluída para dizer ao modelo como resolver certos problemas. Por exemplo, "Para resolver Y, adicione C1, C2 e C3".

Índice do artigo

  • 1 Características da programação lógica
    • 1.1 Verdade e dedução lógica
    • 1.2 Lógica de primeira ordem
    • 1.3 Forma de cláusula
    • 1.4 Inteligência Artificial
  • 2 Exemplos de programação lógica
    • 2.1 Exemplo 1
    • 2.2 Exemplo 2
  • 3 referências

Características da programação lógica

A programação lógica é substancialmente diferente das outras estratégias de programação existentes. Em vez de dar instruções a um computador com o programa, são estabelecidas relações entre objetos. Desta forma, o computador pode raciocinar essas relações e, assim, chegar a soluções lógicas.

Dentro de um programa lógico, existem dois conjuntos principais de código: fatos e regras. As regras são aplicadas aos fatos, a fim de obter conhecimento sobre o meio ambiente.

Verdade e dedução lógica

Os programas lógicos podem ser decifrados por meio de dois conceitos importantes: verdade e dedução lógica. A verdade sai se o cálculo no programa é verdadeiro ou não, sob a implementação dos símbolos do programa. A dedução lógica determina se uma cláusula lógica é uma consequência do programa.

Essas instruções serão sempre interpretadas como declarações e cláusulas lógicas, sendo o resultado de sua execução uma consequência lógica dos cálculos que contém..

Lógica de primeira ordem

É um ramo da lógica proposicional. Considere se os objetos são verdadeiros ou falsos de uma perspectiva parcial do mundo, chamada de domínio. A programação lógica é baseada na generalização da lógica de primeira ordem.

Essa lógica é composta de sintaxe e semântica. A sintaxe é a linguagem formal usada para expressar conceitos. Por outro lado, a semântica das fórmulas lógicas de primeira ordem indica como determinar o valor verdadeiro de qualquer fórmula.

Essa lógica é baseada em um alfabeto e uma linguagem de primeira ordem, bem como um conjunto de axiomas e regras de inferência..

Forma clausal

É um subconjunto da lógica de primeira ordem. Tem uma forma normalizada em que uma declaração é definida por um prefixo universal ou cadeia de quantificadores universais e um conjunto livre de quantificadores da cláusula.

Ao solicitar uma consulta ao programa, será considerado o corpo da cláusula cujo cabeçalho pode coincidir. Isso é o mesmo que aplicar uma regra de inferência na lógica.

Como etapa da inferência, são escolhidas duas cláusulas que têm como propriedade uma conter um X disjuntivo (um literal positivo) e a outra um disjuntivo ¬X (um literal negativo). Essas compensações são conhecidas como complementares.

A partir dessas duas cláusulas iniciais, uma nova cláusula resolutiva é construída usando todos os literais, exceto os complementares..

Inteligência artificial

A programação em lógica é uma metodologia que serve para fazer os computadores deduzirem, pois é útil para representar o conhecimento. A lógica é usada para representar o conhecimento e inferência para lidar com isso.

A lógica usada para representar o conhecimento é a forma oracional. É usado porque a lógica de primeira ordem é bem compreendida e capaz de representar todos os problemas computacionais.

Prolog é uma linguagem de programação baseada nas idéias da programação lógica. A ideia do Prolog é fazer a lógica parecer uma linguagem de programação.

Exemplos de programação lógica

Exemplo 1

- Fato: Ruby é um gato.

- Regra: todos os gatos têm dentes.

- Consulta: Rubí tem dentes?

- Conclusão: sim.

A regra “todos os gatos têm dentes” pode ser aplicada a Rubí, pois há um fato que diz “Rubí é um gato”. Este exemplo não foi escrito com nenhuma sintaxe de linguagem de programação real.

Exemplo 2

Este exemplo pode ser visto escrito em Prolog, pois é uma das linguagens de programação lógica mais populares:

- feminino (alissa).

- masculino (bobby).

- masculino (Carlos).

- feminino (doris).

- son_of (doris, carlos).

- filho_de (Carlos, Bobby).

- son_of (doris, alissa).

- pai_de (F, P): - masculino (F), filho_de (P, F).

Este programa se torna difícil de ler, porque Prolog é notavelmente diferente de outras linguagens. Qualquer componente de código que se pareça com "feminino (alissa)." é um fato.

Uma regra é “pai_de (F, P): - masculino (F), filho_de (P, F)”. O símbolo ": -" pode ser lido como "é verdadeiro se". Letras maiúsculas significam que as variáveis ​​podem ser aplicadas a qualquer objeto, então F pode representar carlos, doris, alissa ou bobby. Este código pode ser traduzido como:

- Alissa é uma mulher.

- Bobby é um homem.

- Carlos é um homem.

- Doris é uma mulher.

- Doris é filha de Carlos.

- Carlos é filho de Bobby.

- Doris é filha de Alissa.

- "F é o pai de P" é verdadeiro se F for homem e se P for filho de F.

Consulta

Suponha que você queira consultar o programa para obter mais informações. Você pode pesquisar perguntando para descobrir de quem é o pai de Bobby :? - father_of (bobby, X). O sistema indicará a seguinte resposta: X = Carlos.

Neste caso, um relacionamento está sendo passado onde um de seus valores é uma variável. O que Prolog fez foi aplicar diferentes objetos a esta relação até que um deles fosse logicamente sólido.

O único pai de Carlos é Bobby, e Bobby é homem. Isso satisfez a regra "pai_de (F, P): - masculino (F), filho_de (P, F).". Quando X é igual a "carlos", a lógica é sólida.

Outras investigações

Outras consultas mais gerais podem ser feitas ao Prolog, o que faz com que o sistema gere vários resultados:

- ?- pai_de (pai, filho).

- Pai = bobby

- Criança = Carlos

- Pai = Carlos

- Criança = doris

Como foi observado, a programação lógica não requer ter a informação de que alissa ou bobby são pessoas para obter conhecimento sobre elas. Na verdade, não é necessário indicar que existe um conceito denominado pessoa.

Na maioria das linguagens de programação não lógicas, você teria que definir esses conceitos primeiro antes de escrever programas que processam informações sobre pessoas..

Referências

  1. Deep AI (2020). Programação lógica. Retirado de: deepai.org.
  2. Wikiversidade (2020). Teoria das Linguagens de Programação / Programação Lógica. Retirado de: en.wikiversity.org.
  3. Imperial College London (2006). Programação lógica. Retirado de: doc.ic.ac.uk.
  4. Jia-Huai You (2020). Introdução à programação em lógica. University of Alberta. Retirado de: eng.ucy.ac.cy.
  5. C2 Wiki (2020). Programação lógica. Retirado de: wiki.c2.com.

Ainda sem comentários