No se cree que la satisfacción general (con algunas excepciones, como las cláusulas Horn) tenga una solución algorítmica. Sin embargo, el siguiente algoritmo parece ser una solución para la satisfacción general. ¿Cuál es exactamente la falla con el siguiente algoritmo?
- Sea un conjunto vacío que contendrá todas las variables que necesariamente tienen que ser verdaderas o falsas.
- Sea el conjunto de cláusulas.
- Loop a través de .
- Cada vez que una variable no condicional † se encuentra, sacarlo de e insertarlo en .
- Si esto deja un vacío y la implicación ‡ , eliminar todas las variables en esa implicación vacío de y se insertan en .
- Si esto deja una implicación OR vacía ‡ , cree nuevas instancias del algoritmo, donde cada instancia trate con una variable en la implicación (es decir, si la implicación es: , cree una instancia donde se inserte en , uno donde se inserta en y uno donde e se insertan en ).
- Establezca todas las variables en en el valor que necesariamente tienen que ser.
- Vuelva a insertar las variables en en con sus valores modificados y compruebe si se cumplen todas las cláusulas.
- Si se cumple con la satisfacción, devuelva , de lo contrario devuelva "No satisfecho".
† Una variable no condicional se define como una variable que es necesaria verdadera o falsa, por ejemplo, o .
‡ Una implicación vacía se define como una implicación en la que un lado está vacío (por ejemplo, ) o el otro lado es necesariamente verdadero (por ejemplo, .
Para obtener una comprensión más intuitiva del algoritmo, considere el siguiente conjunto de cláusulas :
El algoritmo hará lo siguiente:
1) Puesto que , , son variables no condicionales, el algoritmo insertarlos en . .
2) Extracción de , y saldrán de las cláusulas vacíos: . Estos se añaden a . .
3) Reinsertar las variables en dará como resultado la violación de las primeras cláusulas: . Como es falso, es falso, lo que significa que se viola la cláusula (v). El algoritmo devolverá "No satisfecho"
Soy consciente de que el algoritmo parece confuso. Por favor, siéntase libre de pedir una aclaración.
De los comentarios ahora me doy cuenta de que no se conoce un algoritmo de satisfacción general eficiente eficiente . Todavía estoy interesado en comentarios sobre mi algoritmo. ¿Funciona? ¿Cómo se compara con los algoritmos comunes?