Question

En lisant sur programmation logique de contrainte , je ne peux que constater une relation apparente avec la programmation SQL. SQL est un exemple de « programmation logique contrainte » dans l'action?

Était-ce utile?

La solution

Ils sont très similaires d'un niveau élevé. Les deux sont déclarative ou un ensemble à base plutôt que itérative. (Ce qui signifie que vous demandez ce que vous voulez - vous faites pas de boucle et des éléments individuels de processus un par un)

CLP peut être modélisé dans SQL mais il est un cas de trouver une meilleure solution à un problème. SQL est bon pour trouver des réponses dans un ensemble de données qui est déjà explicitement défini. CLP est bon pour trouver des réponses dans des domaines qui sont vaguement ou parfois même pas encore complètement défini.

A titre d'exemple. Si je voulais retourner tous les nombres pairs entre 1 et 10 millions en utilisant SQL je besoin d'une table avec tous les numéros indiqués pour sélectionner (un ensemble de données existantes). En utilisant CLP je juste besoin d'une borne (10M), mais ne doivent explicitement créer tous les enregistrements.

Les moteurs internes CLP (problèmes CSP) peuvent également déduire les contraintes pour les rendre plus rapides. SQL que vous auriez à comprendre les règles et les explicitement. Par exemple, si votre SQL est où A = B et B = C, un moteur CLP peut comprendre que A = C et l'utiliser pour courir plus vite lorsque SQL ne serait pas. Ils peuvent de même déduire des domaines aussi bien pour optimiser le temps d'exécution (si je sais que les nombres pairs ne sont jamais retournés une CLP les jeter de l'examen - SQL toujours les considérer, mais pas revenir comme une « solution »).

Il faut espérer que cela aide - je peux obtenir plus technique si vous en avez besoin. Le point essentiel à retenir est que les deux sont semblables, mais que vous utilisez dépend du modèle de problème. Si vous pouvez dire « ce sont mes variables, et ce sont comment l'interrelation, donnez-moi une solution valable » alors CLP est un bon candidat. Si vous pouvez dire « il y a mes variables, et ce sont les détails, me rendre un sous-ensemble de mes données existantes qui correspond à » alors SQL est un meilleur candidat.

Autres conseils

Je n'ai pas de réponse complète, mais vous pourriez trouver intéressant de regarder et Datalog DLV. Ils sont peut-être le « chaînon manquant » entre la logique de programmation (mais pas CLP) et SQL qui vous aidera à comprendre les choses plus clairement.

Comme c'est plus sur LP que CLP j'ai manqué quelque chose -. Si oui, excusez-moi

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top