4-SAT

El conocido problema 4-SAT consiste en lo siguiente: Tenemos m variables
booleanas (sólo pueden valer cierto o falso). Además, tenemos n
cláusulas, formadas cada una por cuatro variables, no necesariamente
diferentes. Veamos un ejemplo de clásula:

x₁ ∨ x₅ ∨ ¬x₃ ∨ x₄

El símbolo ∨ es la OR booleana, y el símbolo ¬ es la NOT booleana. Así
pues, la cláusula es falsa sólo si x₁, x₅ y x₄ son falsas, y x₃ es
cierta.

El problema 4-SAT original pide asignar valores a las variables de
manera que todas las cláusulas sean ciertas, o decir que no hay
solución. Como ese problema es demasiado difícil, os pedimos una versión
más sencilla: ¿Podéis encontrar una asignación tal que al menos el 90%
de las cláusulas sean ciertas?

Entrada

La entrada tiene diversos casos. Cada uno empieza con n y m, seguidas de
las n claúsulas, codificadas con cuatro enteros entre −m y m, sin ningún
cero. Una i positiva indica x_(i), y una i negativa indica ¬x_(i). Se
garantiza que la entrada se ha generado de forma aleatoria.

Salida

Escribid una línea para cada caso. Si no existe solución, escribid “WA”.
Si existe, escribid m caracteres indicando el valor de las variables en
orden: ‘0’ para falso y ‘1’ para cierto. Si hay más de una posible
asignación, cualquiera sirve.

Puntuación

- Test1:   Casos donde n ≤ 10, m ≤ 4 y se garantiza que existe solución.

- Test2:   Casos donde n ≤ 10⁵ y 100 ≤ m ≤ 10⁴.

Información del problema

Autoría: Alex Alvarez Ruiz

Generación: 2026-01-25T10:34:23.831Z

© Jutge.org, 2006–2026.
https://jutge.org
