En la teoría de complejidad computacional, un protocolo Arthur–Merlin es un sistema de prueba interactivo en el que los lanzamientos de monedas del verificador están obligados a ser públicos (es decir, también conocidos por el probador). Esta noción fue introducida por Babai (1985).Goldwasser y Sipser (1986) demostraron que todos los lenguajes formales con pruebas interactivas de longitud arbitraria con monedas privadas también tienen pruebas interactivas con monedas públicas.
Dados dos participantes en el protocolo llamado Arthur y Merlin respectivamente, la suposición básica es que Arthur es una computadora estándar (o verificador) equipada con un dispositivo generador de números aleatorios, mientras que Merlin es efectivamente un oráculo con un poder computacional infinito (también conocido como prover); pero Merlin no es necesariamente honesto, por lo que Arthur debe analizar la información proporcionada por Merlin en respuesta a las preguntas de Arthur y decidir el problema en sí. Un problema se considera que es solucionable mediante este protocolo si cada vez que la respuesta es "sí", Merlin tiene alguna serie de respuestas que hará que Arthur para aceptar al menos 2/3 de las veces y si cada vez que la respuesta es "no", Arthur nunca aceptará más de 1/3 del tiempo. Por lo tanto, Arthur actúa como un verificador probabilístico de tiempo polinómico, suponiendo que se le asigna tiempo polinómico para tomar sus decisiones y consultas.
El protocolo más simple es el protocolo de 1 mensaje donde Merlin le envía a Arthur un mensaje y luego Arthur decide si acepta o no ejecutando un cálculo de tiempo polinomial probabilístico. (Esto es similar a la definición de NP basada en verificador, la única diferencia es que a Arthur se le permite usar aleatoriedad aquí.) Merlín no tiene acceso a los lanzamientos de monedas de Arthur en este protocolo, ya que es un protocolo de mensaje único y Arthur lanza sus monedas solo después de recibir el mensaje de Merlin. Este protocolo se llama MA. Informalmente, un lenguaje L está en MA si para todas las cadenas en el idioma, hay una prueba de tamaño polinómico de que Merlín puede enviar a Arthur para convencerlo de este hecho con alta probabilidad, y para todas las cadenas que no están en el idioma no hay prueba de que convence a Arthur con alta probabilidad.
Formalmente, la clase de complejidad MA es el conjunto de problemas de decisión que se pueden decidir en tiempo polinómico mediante un protocolo Arthur-Merlin donde el único movimiento de Merlin precede a cualquier cálculo por parte de Arthur. En otras palabras, un lenguaje L está en MA si existe una máquina de Turing determinista de tiempo polinómico M y polinomios p, q tal que para cada cadena de entrada x de longitud n = | x |,
La segunda condición se puede escribir alternativamente como
Para comparar esto con la definición informal anterior, z es la supuesta prueba de Merlín (cuyo tamaño está delimitado por un polinomio) e y es la cadena aleatoria que usa Arthur, que también está polinomialmente delimitada.
La clase de complejidad AM (o AM[2]) es el conjunto de problemas de decisión que se pueden decidir en tiempo polinómico mediante un protocolo Arthur – Merlin con dos mensajes. Solo hay un par de consulta/respuesta: Arthur lanza algunas monedas al azar y envía el resultado de todos sus lanzamientos de monedas a Merlin, Merlin responde con una supuesta prueba, y Arthur verifica determinísticamente la prueba. En este protocolo, a Arthur solo se le permite enviar resultados de lanzamiento de monedas a Merlin, y en la etapa final Arthur debe decidir si acepta o rechaza utilizando solo sus lanzamientos aleatorios de monedas generados previamente y el mensaje de Merlin.
En otras palabras, un lenguaje L está en AM si existe una máquina de Turing determinista de tiempo polinomial M y polinomios p, q tal que para cada cadena de entrada x de longitud n = | x |,
La segunda condición aquí puede reescribirse como
Como se indicó anteriormente, z es la supuesta prueba de Merlín (cuyo tamaño está limitado por un polinomio) e y es la cadena aleatoria que usa Arthur, que también está limitada polinomialmente.
La clase de complejidad AM[k] es el conjunto de problemas que se pueden decidir en tiempo polinómico, con k consultas y respuestas. AM como se definió anteriormente es AM [2]. AM [3] comenzaría con un mensaje de Merlin a Arthur, luego un mensaje de Arthur a Merlin y finalmente un mensaje de Merlin a Arthur. El último mensaje siempre debe ser de Merlín a Arthur, ya que nunca ayuda a Arthur enviarle un mensaje a Merlín después de decidir su respuesta.