Pregunta

He escrito un programa de solución para el problema de SAT-2 satisfacibilidad, alguien por favor me proporcione un caso de prueba con decir 10000 literales que sólo tiene una asignación satisfiable es decir sólo una solución

The format can be:(for 3 literals)
2            // No of clauses and then each clause
2 3
1 -2
corresponding to
(b+c).(a+!b)
¿Fue útil?

Solución

Cobertura de la prueba suele ser difícil, la mayoría de las veces, simplemente se olvidan de un factor u otro.

Por lo general se desarrolla en dos pasos:

  1. Asegúrese de que los que resuelve un problema trivial (o algunos)
  2. Edge casos de prueba / condiciones de contorno: 0 cláusula por ejemplo,
  3. Casos Error de Prueba: entrada con formato incorrecto, problemas que no tienen solución
  4. Performance Test / Inyección de masas (ver si el programa no se bloquea bajo carga, no se escapa, ...)

2) y 3) son más o menos intercambiables, 4) y no entrarán si tiene maneras de investigar este tipo de información (evaluación comparativa, la detección de fugas de memoria ...).

Un punto importante es que no se debe aplicar ingeniería inversa a su código para escribir las pruebas, ya que terminaría probar su código, pero no prueba que obedece a las especificaciones.

Si se trata de un proyecto en el hogar, las especificaciones son generalmente informal, pero todavía existen (en su cabeza) y esto es después de ellos que se debe producir los casos de prueba.

Otros consejos

¿Funciona este enfoque?

 (a + b ).(a + !b) 

Esto sólo puede ser satisfechos si a es cierto.

 (a + !b).(!a + !b)

sólo pueden cumplirse si b es falsa. Por lo tanto

  (a + b ).(a + !b).(a + !b).(!a + !b)

especifica completamente los valores de a y b. Ahora podemos extender esto para cualquier número de literales.

Para probar su aplicación también puede ser que especifique requriements contradictorias, por lo tanto, algo que no tiene solución.

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