Pregunta

limitación lógica de programación , no puedo dejar de notar una relación aparente con la programación SQL. SQL es un ejemplo de "programación lógica limitación" en acción?

¿Fue útil?

Solución

Son muy similares a un alto nivel. Ambos son declarativa o conjunto basado en lugar de iterativo (es decir, de pedir lo que quiere - no lo hace a través del bucle y procesar los elementos individuales, uno por uno).

CLP puede ser modelado en SQL pero es un caso de encontrar una mejor solución a un problema. SQL es bueno para la búsqueda de respuestas en un conjunto de datos dado que ya está definido de forma explícita. CLP es bueno para la búsqueda de respuestas en dominios que están vagamente o incluso a veces ni siquiera completamente definidas.

A modo de ejemplo. Si quería devolver todo los números pares entre 1 y 10 millones mediante SQL que necesitaría una tabla con todos los números de la lista para seleccionar de (un conjunto de datos existente). El uso de CLP que sólo se necesita una cota (10M), pero no tendría que explícita crear todos los registros.

motores Internamente CLP (problemas CSP) también pueden inferir restricciones para hacerlos más rápido. SQL que tendría que averiguar las reglas e indicar de forma explícita. Por ejemplo, si su SQL es donde A = B y B = C, un motor de CLP podrían darse cuenta de que A = C y el uso que se ejecuten más rápido en SQL no lo haría. Pueden manera similar inferir dominios así a tiempo a optimizar el funcionamiento (si sé que no se devuelven los números pares CLP será echarlos de la consideración - SQL todavía va a considerar, pero no volver como una "solución").

Con suerte eso ayuda - puedo conseguir más técnico si lo necesita. El punto clave a recordar es que los dos son similares pero que se utiliza depende del modelo del problema. Si se puede decir "estos son mis variables y cómo estos son el interrelacionan, dame cualquier solución válida" después de CLP es un candidato bueno. Si se puede decir "no son mi variables, y estos son los detalles, Devuélveme un subconjunto de mis datos existentes que encaja" a continuación, SQL es un mejor candidato.

Otros consejos

i no tienen una respuesta completa, pero puede que le resulte interesante para ver el registro de datos y DLV. Son quizás el "eslabón perdido" entre la programación lógica (pero no CLP) y SQL que le ayudará a entender las cosas con más claridad.

Dado que se trata más sobre LP de CLP que puede haber perdido algo -. Si es así, lo siento

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top