Programação lógica: características e exemplos

Programação lógica: características e exemplos

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

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.

Essa abordagem, que é freqüentemente usada em programação genética e evolutiva, geralmente informa ao modelo qual objetivo atingir, e não como alcançá-lo.

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

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

Recursos de programação lógica

A programação lógica é substancialmente diferente de outras estratégias de programação existentes. Em vez de dar instruções a um computador com o programa, os relacionamentos são estabelecidos entre os objetos. Dessa maneira, o computador pode raciocinar esses relacionamentos e, assim, alcançar soluções lógicas.

Dentro de um programa lógico, existem dois conjuntos principais de códigos: fatos e regras. As regras são aplicadas aos fatos para 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 é verdadeira se o cálculo no programa for verdadeiro ou não, com 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.

Relacionado:  NTICX: definição e conteúdo

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

Lógica de primeira ordem

É uma ramificação da lógica proposicional. Considere se os objetos são verdadeiros ou falsos de uma perspectiva parcial do mundo, chamada 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. 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 verdadeiro valor de qualquer fórmula.

Essa lógica é baseada em um alfabeto e linguagem de primeira ordem, bem como em 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 instrução é definida por um prefixo ou sequência universal de quantificadores universais e um conjunto livre de quantificadores de cláusulas.

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

Como passo da inferência, duas cláusulas são escolhidas cuja propriedade é que uma contém um X disjuntivo (um literal positivo) e a outra contém um jX disjuntivo (um literal negativo). Esses disjuntivos são conhecidos como complementares.

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

Inteligência artificial

A programação lógica é uma metodologia usada para descobrir que os computadores deduzem, porque é útil representar conhecimento. A lógica é usada para representar conhecimento e inferência para gerenciá-lo.

Relacionado:  Tecnologia e ciência nos estilos de vida atuais

A lógica usada para representar o conhecimento é a forma clausal. É 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 idéia de 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” se aplica a Ruby, porque existe um fato que diz “Ruby é um gato”. Este exemplo não está escrito com nenhuma sintaxe de uma linguagem de programação real.

Exemplo 2

Este exemplo pode ser visto escrito no Prolog, pois é uma das linguagens de programação mais conhecidas:

– feminino (alissa).

– macho (bobby).

– masculino (carlos).

– fêmea (doris).

– filho de (Doris, Carlos).

– filho_do (carlos, bobby).

– filho de (Doris, Alissa).

– pai de (F, P): – homem (F), filho de (P, F).

É difícil ler este programa, porque o Prolog é notavelmente diferente de outros idiomas. Qualquer componente do código que se assemelhe a “feminino (alissa)”. é um fato.

Uma regra é “pai_de (F, P): – homem (F), filho_de (P, F)”. O símbolo «: -» pode ser lido como «é verdadeiro se». Letras maiúsculas significam que variáveis ​​podem ser aplicadas a qualquer objeto; portanto, F pode significar carlos, doris, alissa ou bobby. Este código pode ser traduzido como:

– Alissa é uma mulher.

Bobby é um homem.

Carlos é homem.

– Doris é uma mulher.

– Doris é filha de Carlos.

Carlos é filho de Bobby.

Relacionado:  Automação industrial: história, características e tipos

– Doris é filha de Alissa.

– «F é o pai de P» é verdade se F é homem e se P é filho de F.

Inquerir

Suponha que você queira consultar o programa para obter mais informações. Você pode procurar pedir para descobrir com quem o pai está Bobby 😕 – padre_de (bobby, X). O sistema indicará a seguinte resposta: X = carlos.

Nesse caso, está sendo passada uma relação em que um de seus valores é uma variável. Prolog o que ele fez foi aplicar objetos diferentes a esse relacionamento até que um deles fosse logicamente sólido.

O único pai de Carlos é Bobby, e Bobby é um homem. Isso satisfez a regra “pai_de (F, P): – homem (F), filho_de (P, F)”. Quando X é igual a “Carlos”, a lógica é correta.

Outras consultas

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

-? – padre_de (pai, filho).

– Pai = bobby

– Garoto = Carlos

– Pai = Carlos

– Garoto = doris

Como foi observado, a programação lógica não exige que as pessoas Alissa ou Bobby sejam pessoas para obter conhecimento sobre elas. De fato, não é necessário indicar que existe um conceito chamado pessoa.

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

Referências

  1. AI profunda (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 Lógica. Universidade de Alberta. Retirado de: eng.ucy.ac.cy.
  5. C2 Wiki (2020). Programação Lógica. Retirado de: wiki.c2.com.

Deixe um comentário

Este site usa cookies para lhe proporcionar a melhor experiência de usuário. política de cookies, clique no link para obter mais informações.

ACEPTAR
Aviso de cookies