Fonctionnalités et exemples de programmation logique

3894
David Holt
Fonctionnalités et exemples de programmation logique

La programmation logique est un paradigme de programmation qui utilise des circuits logiques plutôt que de simples fonctions mathématiques pour contrôler la façon dont les faits et les règles sont énoncés.

Au lieu d'un flux de contrôle soigneusement structuré qui dicte quand exécuter et comment évaluer les appels de fonction ou d'autres instructions, les règles logiques du programme sont écrites sous forme de clauses ou de prédicats logiques..

Exemples de programmation logique dans Prolog. Source: Par Kuldeepsheoran1 - capture d'écran, CC BY-SA 3.0, wikimedia commons

Cette approche, qui est souvent utilisée dans la programmation évolutive et génétique, indique généralement à un modèle quel objectif atteindre, plutôt que comment l'atteindre..

Chaque règle contient un en-tête et un corps avec une logique formalisée, plutôt qu'une fonction mathématique exécutable. Par exemple, «Et est vrai (en-tête): si C1, C2 et C3 sont vrais (corps)». Les faits ou les résultats sont exprimés sans corps, comme "Et c'est vrai".

Cependant, avec certains langages de programmation tels que Prolog, la programmation impérative peut également être incluse pour indiquer au modèle comment résoudre certains problèmes. Par exemple, "Pour résoudre Y, ajoutez C1, C2 et C3".

Index des articles

  • 1 Caractéristiques de la programmation logique
    • 1.1 Vérité et déduction logique
    • 1.2 Logique du premier ordre
    • 1.3 Forme clausale
    • 1.4 Intelligence artificielle
  • 2 Exemples de programmation logique
    • 2.1 Exemple 1
    • 2.2 Exemple 2
  • 3 Références

Caractéristiques de la programmation logique

La programmation logique est sensiblement différente des autres stratégies de programmation existantes. Au lieu de donner des instructions à un ordinateur avec le programme, des relations entre les objets sont établies. De cette manière, l'ordinateur peut raisonner ces relations et ainsi parvenir à des solutions logiques.

Dans un programme logique, il existe deux ensembles principaux de code: les faits et les règles. Des règles sont appliquées aux faits afin d'acquérir des connaissances sur l'environnement.

Vérité et déduction logique

Les programmes logiques peuvent être déchiffrés à travers deux concepts importants: la vérité et la déduction logique. La vérité sort si le calcul dans le programme est vrai ou non, sous la mise en œuvre des symboles du programme. La déduction logique détermine si une clause logique est une conséquence du programme.

Ces instructions seront toujours interprétées comme des instructions et des clauses logiques, le résultat de leur exécution étant une conséquence logique des calculs qu'elles contiennent..

Logique du premier ordre

C'est une ramification de la logique propositionnelle. Déterminez si les objets sont vrais ou faux dans une perspective partielle du monde, appelée domaine. La programmation logique est basée sur une généralisation de la logique du premier ordre.

Cette logique est composée de syntaxe et de sémantique. La syntaxe est le langage formel utilisé pour exprimer des concepts. D'autre part, la sémantique des formules logiques du premier ordre indique comment déterminer la vraie valeur de n'importe quelle formule.

Cette logique est basée sur un alphabet et un langage de premier ordre, ainsi que sur un ensemble d'axiomes et de règles d'inférence..

Forme Clausal

C'est un sous-ensemble de la logique du premier ordre. Il a une forme normalisée où une instruction est définie par un préfixe universel ou une chaîne de quantificateurs universels, et un ensemble libre de quantificateurs de la clause.

Lors d'une demande de requête au programme, le corps de la clause dont l'en-tête peut coïncider sera pris en compte. Cela revient à appliquer une règle d'inférence en logique.

Comme étape dans l'inférence, on choisit deux clauses qui ont comme propriété que l'une contient un X disjonctif (un littéral positif) et l'autre contient un ¬X disjonctif (un littéral négatif). Ces compromis sont appelés complémentaires.

A partir de ces deux clauses initiales, une nouvelle clause résolutive est construite en utilisant tous les littéraux, sauf les complémentaires..

Intelligence artificielle

La programmation logique est une méthodologie utilisée pour faire déduire les ordinateurs, car elle est utile pour représenter les connaissances. La logique est utilisée pour représenter la connaissance et l'inférence pour la gérer.

La logique utilisée pour représenter la connaissance est la forme clausale. Il est utilisé car la logique du premier ordre est bien comprise et capable de représenter tous les problèmes de calcul.

Prolog est un langage de programmation basé sur les idées de la programmation logique. L'idée de Prolog est de faire en sorte que la logique ressemble à un langage de programmation.

Exemples de programmation logique

Exemple 1

- Fait: Ruby est un chat.

- Règle: tous les chats ont des dents.

- Requête: Rubí a-t-il des dents?

- Conclusion: oui.

La règle «tous les chats ont des dents» peut être appliquée à Rubí, car il y a un fait qui dit que «Rubí est un chat». Cet exemple n'est pas écrit avec une vraie syntaxe de langage de programmation.

Exemple 2

Cet exemple peut être vu écrit en Prolog, car c'est l'un des langages de programmation logique les plus populaires:

- féminin (alissa).

- masculin (bobby).

- masculin (Carlos).

- féminin (doris).

- son_of (doris, carlos).

- fils_de (Carlos, Bobby).

- son_of (doris, alissa).

- père_de (F, P): - masculin (F), fils_de (P, F).

Ce programme devient difficile à lire, car Prolog est sensiblement différent des autres langages. Tout composant de code qui ressemble à «féminin (alissa)». c'est un fait.

Une règle est «père_de (F, P): - masculin (F), fils_de (P, F)». Le symbole ": -" peut être lu comme "est vrai si". Les lettres majuscules signifient que les variables peuvent être appliquées à n'importe quel objet, donc F pourrait représenter carlos, doris, alissa ou bobby. Ce code peut être traduit par:

- Alissa est une femme.

- Bobby est un homme.

- Carlos est un homme.

- Doris est une femme.

- Doris est la fille de Carlos.

- Carlos est le fils de Bobby.

- Doris est la fille d'Alissa.

- "F est le père de P" est vrai si F est un homme et si P est le fils de F.

Consultation

Supposons que vous souhaitiez consulter le programme pour plus d'informations. Vous pouvez rechercher en demandant à qui est le père de Bobby :? - Father_of (bobby, X). Le système indiquera la réponse suivante: X = Carlos.

Dans ce cas, une relation est transmise où l'une de ses valeurs est une variable. Ce que Prolog a fait, c'est appliquer différents objets à cette relation jusqu'à ce que l'un d'eux soit logiquement solide.

Le seul père de Carlos est Bobby et Bobby est un homme. Ceci satisfait à la règle "père_de (F, P): - masculin (F), fils_de (P, F).". Lorsque X est égal à "carlos", la logique est solide.

Autres demandes

D'autres requêtes plus générales peuvent être adressées à Prolog, ce qui amène le système à générer plusieurs résultats:

- ?- Father_of (Père, Enfant).

- Père = bobby

- Enfant = Carlos

- Père = Carlos

- Enfant = doris

Comme cela a été observé, la programmation logique ne nécessite pas d'avoir l'information selon laquelle alissa ou bobby sont des personnes pour obtenir des connaissances à leur sujet. En fait, il n'est pas nécessaire d'indiquer qu'il existe un concept appelé personne.

Dans la plupart des langages de programmation non logiques, vous devez d'abord définir ces concepts avant de pouvoir écrire des programmes qui traitent des informations sur les personnes..

Les références

  1. IA profonde (2020). Programmation logique. Tiré de: deepai.org.
  2. Wikiversité (2020). Théorie des langages de programmation / programmation logique. Tiré de: en.wikiversity.org.
  3. Imperial College de Londres (2006). Programmation logique. Tiré de: doc.ic.ac.uk.
  4. Jia-Huai You (2020). Introduction à la programmation logique. Université de l'Alberta. Tiré de: eng.ucy.ac.cy.
  5. C2 Wiki (2020). Programmation logique. Tiré de: wiki.c2.com.

Personne n'a encore commenté ce post.