← Últimos artículos
💻 computer science

Complexity Theory of Randomised Testing

Este artículo establece los primeros fundamentos de la teoría de la complejidad para las pruebas aleatorizadas al modelar los generadores como transductores de Turing para caracterizar los límites de la generación de entradas eficientes y con restricciones de espacio, revelando distinciones fundamentales entre la complejidad de generación y de decisión al demostrar que la generación eficiente requiere esquemas de certificados específicos y no puede derivarse composicionalmente de predicados lógicos generales.

Autores originales: Pingshi Yu, Chengsong Tan, Nicolas Wu, Alastair Donaldson

Publicado 2026-07-14
📖 6 min de lectura🧠 Análisis profundo

Autores originales: Pingshi Yu, Chengsong Tan, Nicolas Wu, Alastair Donaldson

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina que eres un desarrollador de videojuegos intentando probar un nuevo mundo masivo. Quieres asegurarte de que tu juego no se bloquee, así que necesitas un robot que pueda escupir millones de niveles, personajes y objetos aleatorios para ver si algo se rompe. Este robot se llama generador. Durante años, los desarrolladores han construido estos robots a mano, ajustándolos hasta que funcionan lo suficientemente bien. Pero nadie sabía realmente los límites teóricos de lo que estos robots podrían hacer en realidad. ¿Podrían generar cualquier nivel posible? ¿Podrían hacerlo lo suficientemente rápido como para ser útiles?

Un equipo de investigadores del Imperial College London y Kaihong decidió poner a estos robots bajo un microscopio usando la Teoría de la Complejidad —las matemáticas que estudian qué tan difíciles son los problemas de resolver—. No se limitaron a mirar el código; modelaron los robots como "máquinas de Turing" (las computadoras teóricas definitivas) que comen bits de datos aleatorios y escupen niveles de juego. Esto es lo que descubrieron.

La lista de "Lo que se puede fabricar"

Primero, se preguntaron: ¿Cuál es el límite absoluto de lo que un generador puede producir?

Descubrieron que, si le das a un generador tiempo y memoria ilimitados, puede producir exactamente el mismo conjunto de cosas que una computadora estándar puede reconocer. En el mundo de las matemáticas, esto se llama lenguajes Recursivamente Enumerables (RE).

  • La buena noticia: Si un conjunto de entradas (como "todos los programas C válidos") puede ser reconocido por una computadora, un generador puede producirlo teóricamente.
  • La mala noticia: Si un conjunto de entradas es demasiado extraño para ser reconocido por una computadora (como "todos los programas que nunca dejarán de ejecutarse"), ningún generador podrá jamás producirlos. No es un error en tu código; es una ley fundamental del universo. No puedes construir un robot que escupa cada bucle infinito, porque las matemáticas dicen que es imposible enumerarlos todos.

El problema del "Obstáculo de velocidad"

Luego, se preguntaron: ¿Qué pasa si necesitamos que el generador sea rápido? En el mundo real, no puedes esperar un millón de años por un caso de prueba. Necesitas resultados en segundos.

Los investigadores descubrieron un giro sorprendente: Ser capaz de verificar si algo es válido no es lo mismo que ser capaz de crear algo válido.

  • El ejemplo del SAT Solver: Imagina un rompecabezas donde tienes que encontrar una combinación específica de interruptores para encender una luz. Verificar si una combinación funciona es difícil (es "NP-completo"). Pero los investigadores demostraron que puedes construir un robot rápido que genere estas combinaciones que funcionan. Funciona "plantando un testigo": el robot elige secretamente una combinación ganadora primero, y luego construye el rompecabezas alrededor de ella.
  • La trampa de la colisión de Hash: Sin embargo, también demostraron que para algunos problemas, incluso si verificar la respuesta es fácil, crear la respuesta podría ser imposible de hacer rápidamente. Analizaron las "colisiones de hash" (encontrar dos entradas diferentes que produzcan la misma huella digital). Verificar si dos huellas digitales coinciden es súper rápido. Pero, ¿encontrar un par que coincida? Si pudieras construir un robot rápido para hacer esto, romperías la seguridad de casi toda la criptografía moderna.
    • El veredicto: A menos que el mundo de la criptografía se rompa, hay problemas donde verificar es fácil, pero generar es difícil. No puedes simplemente desear un generador rápido; a veces, las matemáticas simplemente no lo permitirán.

La restricción de "Memoria" (Fuzzing y Retroalimentación)

Muchas herramientas de prueba modernas, como los "fuzzers", no solo escupen datos aleatorios; recuerdan lo que intentaron antes. Si una prueba hace que el programa falle, el fuzzer lo recuerda e intenta retocar la entrada para hacerlo fallar de nuevo. Esto es como un detective que aprende de cada pista.

Los investigadores modelaron esto como un generador con una cantidad limitada de memoria (espacio). Descubrieron que incluso con esta "memoria" y un ciclo de retroalimentación, el generador sigue estando limitado.

  • El límite: Si el generador tiene una cantidad polinómica de memoria (que cubre casi todas las herramientas prácticas), solo puede generar cosas que pertenecen a una clase llamada PSPACE.
  • El choque de realidad: Esto significa que incluso las herramientas de fuzzing más inteligentes y con más memoria no pueden generar entradas para problemas que son "EXPTIME-complete" (problemas que requieren un tiempo exponencial para resolverse). Si un problema es demasiado complejo para ser resuelto por una máquina PSPACE, ninguna cantidad de retroalimentación o memoria ayudará a un generador a crear casos de prueba para él.

El mito de la "Componibilidad"

Finalmente, abordaron un sueño de los ingenieros de software: ¿Podemos construir un "set de Lego" de generadores?
Imagina tener una herramienta donde dices: "Quiero un generador para A Y B", o "Quiero un generador para NO A", y la herramienta combina automáticamente los elementos en un nuevo generador rápido.

El artículo lanza un NO rotundo a este sueño, bajo supuestos estándar.

  • La regla: No puedes combinar automáticamente los generadores usando "Y" (conjunción) o "NO" (negación) y garantizar que sigan siendo rápidos.
  • ¿Por qué? Si pudieras hacer esto, podrías resolver problemas que actualmente se cree que son imposibles de resolver rápidamente.
  • La excepción: Puedes hacer esto para tipos de lógica muy simples y restringidos (como "Datalog lineal" o "NL"), pero tan pronto como añades "Ys" o "NOs" complejos, la magia se rompe. Si quieres combinar reglas complejas, tienes que renunciar a las garantías de velocidad o aceptar que tu generador simplemente "intentará y fallará" (muestreo de rechazo) hasta que tenga suerte.

El panorama general

El artículo concluye que generar datos es un desafío distinto y a menudo más difícil que decidir si un dato es válido.

  • Lo que se demuestra: Demostraron que el conjunto de todas las cosas generables es exactamente el conjunto de las cosas recursivamente enumerables. Demostraron que existen generadores rápidos para ciertos problemas difíciles (como SAT) pero no para otros (como las colisiones de hash, asumiendo que la criptografía es segura). Demostraron que las herramientas impulsadas por retroalimentación están limitadas por PSPACE.
  • Lo que se descarta: Descartaron la posibilidad de una biblioteca universal, rápida y compositiva que pueda manejar cualquier combinación lógica de reglas. Descartaron la idea de que "fácil de verificar" siempre signifique "fácil de generar".

En resumen, si estás construyendo un robot de pruebas, no puedes simplemente desear que sea rápido e inteligente. Las matemáticas han trazado una línea en la arena: algunas cosas son imposibles de generar, algunas son imposibles de generar rápidamente, y algunas no puedes mezclarlas sin romper la velocidad. Pero ahora, finalmente sabemos exactamente dónde están esas líneas.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →