Programação lógica: características e exemplos - Ciência - 2023


science
Programação lógica: características e exemplos - Ciência
Programação lógica: características e exemplos - Ciência

Contente

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 as regras são declarados.

Em vez de um fluxo de controle cuidadosamente estruturado que determina 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.

Esta 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 um corpo, como "E é verdade".


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

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. Dessa 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 para se 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 sentenças 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 em uma 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. Ele 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 na 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 que uma contém um X disjuntivo (um literal positivo) e a outra um ¬X disjuntivo (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 usada para fazer os computadores deduzirem, pois é útil para representar o conhecimento. A lógica é usada para representar o conhecimento e a 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 de 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: Rubí é 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 para uma 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).

- son_of (carlos, bobby).

- son_of (doris, alissa).

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

Este programa é difícil de ler, porque Prolog é visivelmente 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, portanto, 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.

Inquerir

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.

Nesse caso, um relacionamento está sendo passado onde um de seus valores é uma variável. O que Prolog fez foi aplicar objetos diferentes a esse relacionamento 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 é correta.

Outras investigações

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

-? - parent_of (pai, filho).

- Pai = bobby

- Criança = Carlos

- Pai = Carlos

- Criança = doris

Como foi visto, 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.