Qué es y qué problema resuelve
Un algoritmo aleatorizado no produce una salida: produce una distribución sobre salidas. Para razonar sobre él hace falta un lenguaje que diga qué distribución hay tras pasos, a dónde tiende y con qué probabilidad se equivoca. Ese lenguaje es el álgebra lineal: un vector de probabilidades, una matriz por paso y un producto de matrices para encadenar pasos. La computación cuántica conserva esta estructura y cambia los números permitidos (lección A2), así que conviene tenerla clara antes.
Esta lección responde a cuatro preguntas con cuentas: cómo se calcula la distribución tras pasos, cuándo y hacia qué distribución converge, cómo se analiza un algoritmo aleatorizado real (2-SAT) con una cadena, y qué significa que un problema esté en BPP y cómo se reduce su error.
Prerrequisitos: probabilidad básica y álgebra lineal real. Tipo de ventaja: no procede (son algoritmos clásicos; no hay comparación con un ordenador cuántico). Notación: vectores columna y matrices que actúan por la izquierda. Las fuentes más usadas aquí (Mitzenmacher–Upfal, Etessami) escriben vectores fila, ; la sección 1 traduce una convención a la otra y desde ahí no se mezclan.
Análogo clásico
El punto de partida es el caso sin azar. Un sistema determinista es un grafo dirigido en el que cada vértice tiene exactamente una flecha de salida, con canicas colocadas en los vértices. El estado es el vector columna con canicas en el vértice , y un paso mueve todas las canicas de al vértice al que apunta su flecha (Yanofsky–Mannucci, §3.1, pp. 74–78) [1]. La matriz del sistema tiene si y solo si hay una flecha de a , el estado tras un paso es , y las potencias cuentan caminos: si y solo si hay un camino de longitud de a (ec. 3.11, p. 78).
Por ejemplo, con tres vértices y flechas , y :
Este esquema (estados = vectores columna, dinámica = matrices, varios pasos = producto) es el que se generaliza a probabilidades en esta lección y a amplitudes en A2.
Cuándo usarlo y cuándo NO
Úsalo para modelar procesos con un número finito de estados en los que el siguiente estado dependa solo del actual (un paseo aleatorio, un canal con errores en ráfaga) y para analizar algunos algoritmos aleatorizados a través de una cadena auxiliar (sección 7). No lo uses cuando el futuro dependa de más historia que el estado actual (hay que ampliar el estado), ni para estados infinitos sin más cuidado: aquí todo es finito. Y no confundas la aleatoriedad con el poder de cómputo: la amplificación de la sección 8 reduce el error, no vuelve fácil un problema difícil.
Teoría
1. Vector de probabilidades y matriz estocástica
Un estado probabilístico es un vector con y . Un paso es una matriz estocástica (entradas y cada columna suma 1) y el nuevo estado es . La entrada es la probabilidad de pasar de a .
La convención de filas de Mitzenmacher–Upfal (cap. 7, pp. 169–170) [2] y de Etessami (p. 6) [3] escribe para ir de a (filas que suman 1) y . Las dos son la misma cuenta con y . Aquí se usan siempre columnas.
El producto de estocásticas es estocástica: si es el vector de unos, , es decir, las columnas de suman 1.
2. Cadenas de Markov
Una cadena de Markov es un proceso en el que : el futuro depende del presente y no de cómo se llegó a él. Esa es la propiedad sin memoria (M–U, Def. 7.1, p. 168), y la matriz define la cadena entera. La distribución tras pasos es , y la entrada es la probabilidad de ir de a en exactamente pasos, que es la suma, sobre todos los caminos de longitud , del producto de las probabilidades de sus aristas (pp. 169–170). La misma suma sobre caminos será la regla de A2, con amplitudes en lugar de probabilidades.
Un ejemplo con dos estados, «bit enviado bien» (0) y «bit corrompido» (1), usado para errores en ráfaga (M–U, Fig. 7.2, pp. 186–187): con probabilidad se pasa de 0 a 1 y con probabilidad de 1 a 0, es decir, .
3. Doblemente estocásticas
Una matriz es doblemente estocástica si sus filas también suman 1 (Yanofsky–Mannucci, §3.2, p. 80). La moneda justa lo es. Para ellas la distribución uniforme no cambia, porque .
4. Distribución estacionaria
Una distribución estacionaria es una distribución que un paso no cambia, (en filas, ; M–U, Def. 7.8, p. 182; Etessami, p. 13). Se calcula resolviendo el sistema lineal junto con . Toda cadena finita tiene al menos una (M–U, p. 185; se cita sin demostrar).
Para la cadena de dos estados, el equilibrio entre salir de 0 y entrar en 0 da y, con , . Con y sale : más del 95 % de los bits llegan bien (M–U, p. 187). Con cuatro estados, la matriz de M–U (p. 185), en columnas,
Se comprueba fila a fila: por ejemplo . El libro no da esta solución; está calculada y verificada aquí.
5. Convergencia
Que exista una estacionaria no dice que la cadena tienda a ella. Una cadena es irreducible si desde cada estado se puede llegar a cualquier otro (el grafo es fuertemente conexo; Etessami, p. 6) y aperiódica si ningún estado tiene periodo mayor que 1. El periodo de un estado es el mayor tal que solo se puede volver a él en un número de pasos múltiplo de (el máximo común divisor de las longitudes de sus ciclos; M–U, Def. 7.6, p. 180). En una cadena irreducible todos los estados tienen el mismo periodo, y basta un bucle () en un estado para que valga 1. Una cadena finita, irreducible y aperiódica es ergódica (M–U, Cor. 7.6, p. 181; Etessami, p. 13, las define así). Para una cadena finita irreducible la estacionaria ya es única (Etessami, p. 13; se cita sin demostrar); la aperiodicidad añade la convergencia.
Teorema (M–U, Teorema 7.7, p. 183, enunciado allí para cadenas ergódicas; citado, no demostrado aquí). Una cadena finita, irreducible y aperiódica tiene una única distribución estacionaria y para cualquier .
Las dos hipótesis hacen falta. La cadena periódica es irreducible, con periodo 2 (solo se vuelve a un estado en un número par de pasos); tiene estacionaria , pero desde alterna y no converge. En la reducible , los estados 1 y 2 son absorbentes (con un bucle, así que no son periódicos) y el 3 va a uno u otro con probabilidad : todas las son estacionarias (no hay una única) y el límite depende de cómo se empieza, desde y desde .
6. Sistemas independientes
Si dos variables independientes tienen distribuciones e , la distribución conjunta es el producto de Kronecker (Nannicini, ej. 1, p. 4) [4]. Con e (los valores de son 00, 01, 10 y 11) sale . No toda distribución conjunta es un producto: la que da a y a reúne dos variables correlacionadas, y no se puede escribir como : sus marginales son y el producto de las marginales daría en cada caso. (Dicho con matrices: un producto equivale a la matriz de entradas , que tiene rango 1, y la correlacionada tiene rango 2.) La lección A4 usa esta diferencia.
7. Un algoritmo aleatorizado como cadena: 2-SAT
Una fórmula 2-SAT es una conjunción de cláusulas con dos literales (un literal es una variable o su negación, por ejemplo ). El 2-SAT se resuelve en tiempo polinómico sin azar (M–U, p. 171): el ejemplo sirve para aprender a analizar un algoritmo aleatorizado con una cadena, no para mostrar una ventaja. El algoritmo (M–U, Algoritmo 7.1, p. 171) [2] parte de una asignación cualquiera y repite hasta veces: elegir una cláusula no satisfecha y cambiar al azar el valor de una de sus dos variables; si en algún momento todas las cláusulas se cumplen, devuelve la asignación; si no, responde «insatisfacible». Aquí es el número de variables y un parámetro.
Resultado (M–U, Lema 7.1 y Teorema 7.2, p. 174). Si la fórmula es insatisfacible, la respuesta siempre es correcta. Si es satisfacible, el algoritmo encuentra una asignación con probabilidad al menos . El error es de un solo lado: nunca devuelve una asignación falsa, porque la comprueba.
Demostración del resultado (con un paso citado)
Sea una asignación que satisface la fórmula y el número de variables que coinciden con tras pasos; se termina cuando . Como la cláusula elegida no se cumple con la asignación actual y sí con , al menos una de sus dos variables difiere de , así que sube con probabilidad al menos . no es una cadena de Markov: la probabilidad de subir depende de la cláusula elegida y, por tanto, de la historia (M–U, p. 172). Por eso se compara con la cadena pesimista , que sí lo es: sube y baja con probabilidad exactamente (y de 0 pasa a 1). Que tarde más que en llegar a lo da M–U por claro y lo remite a su cap. 12 (se cita aquí, sin demostrar).
Sea el número esperado de pasos de desde hasta : , y . Poniendo , la última ecuación da con , luego y (M–U, pp. 173–174). En particular, desde cualquier punto el número esperado de pasos es a lo sumo .
Sea el número de pasos hasta encontrar una solución; . Por la desigualdad de Markov, la probabilidad de necesitar más de pasos, , es a lo sumo . Dividiendo la ejecución en tramos de pasos, y dado que no se ha encontrado solución antes, la probabilidad de fallar en un tramo es siempre a lo sumo , luego la de fallar en los es a lo sumo .
Con variables, el número esperado de pasos es a lo sumo 100, y con el algoritmo hace pasos y falla con probabilidad a lo sumo .
8. BPP y amplificación
Un algoritmo probabilístico en tiempo polinómico tiene un número polinómico de pasos y usa monedas independientes. La clase BPP reúne los problemas de decisión para los que existe uno que acierta con probabilidad al menos para cada entrada, con constante (Kitaev–Shen–Vyalyi, Def. 4.1, p. 36) [5]; Aaronson usa (cap. 7, pp. 79–80) [6]. La probabilidad es sobre las monedas del algoritmo, y la entrada es siempre la peor posible: no se promedia sobre entradas (Aaronson, p. 75).
La constante no importa, por la amplificación: se ejecuta el algoritmo veces con monedas independientes y se responde lo que diga la mayoría.
Teorema (Kitaev–Shen–Vyalyi, pp. 36–37). El error de la mayoría de ejecuciones es a lo sumo (Kitaev–Shen–Vyalyi lo escriben con «<»), con . Por tanto, para error basta , y el algoritmo sigue siendo polinómico.
Demostración
La mayoría se equivoca cuando como mucho de las ejecuciones aciertan. Para un conjunto de ejecuciones acertadas con , la probabilidad es , porque y el exponente es no negativo. Hay a lo sumo conjuntos, así que el error es a lo sumo .
Con , y el error exacto de la mayoría baja así: , ; , ; , ; , . Hacen falta para bajar de . La cota es holgada, pero basta para ver la caída exponencial.
Hay dos clases vecinas. RP exige aceptar con probabilidad si la respuesta es sí y con probabilidad 0 si es no: error de un solo lado, como el 2-SAT. PP pide solo para «sí» y para «no», sin separación; un algoritmo puede aceptar con o con , y con , por ejemplo, distinguirlo exigiría muestrear más que la edad del universo («recuento de Florida», Aaronson, pp. 78–80). Por eso PP no se toma como modelo de lo que se resuelve con azar en la práctica; BPP es la idealización estándar (Aaronson, p. 80).
Ejemplo resuelto
Cadena de dos estados con y , es decir , que empieza en el estado 0, .
Dos pasos. y . Se obtiene lo mismo con la suma sobre caminos: de 0 a 0 en dos pasos hay dos caminos, () y (), con suma .
Estacionaria. El equilibrio da , es decir . Se comprueba: .
Convergencia. La cadena es irreducible y aperiódica (todas las entradas son positivas), así que por el teorema desde cualquier punto de partida. Las distribuciones se acercan: y , y la distancia a en el primer estado se reduce a la mitad en cada paso, porque el segundo valor propio de es .
Predice antes de simular
Antes de ejecutar el código de la sección siguiente (o de usar el widget que viene después), predice y apunta:
- Con la cadena periódica y , ¿cuál es ?
- Mayoría de 11 ejecuciones de un algoritmo que se equivoca con probabilidad : ¿el error exacto es menor, igual o mayor que ? ¿Aproximadamente cuánto?
- En la cadena de cuatro estados, desde el estado 1, ¿en qué paso baja por primera vez la distancia máxima a por debajo de : en el 3, en el 5 o en el 8?
Respuestas
- , así que : alterna y no converge. 2. Menor, unos (lo imprime el código). 3. En el 5: la distancia es en el paso 4 y en el 5 (el widget la muestra).
Código verificado
El código se ejecuta con NumPy 2.5.4 (Python 3.13.5) y su salida es la que se muestra. El script verify/01-computacion-probabilistica.py comprueba además todas las cifras de la lección y que el código y la salida mostrados coinciden.
import numpy as np
from math import comb
# Cadena de 4 estados (Mitzenmacher–Upfal, p. 185) escrita por columnas: S = P^T
P = np.array([[0, 1/4, 0, 3/4],
[1/2, 0, 1/3, 1/6],
[1/4, 1/4, 1/2, 0],
[0, 1/2, 1/4, 1/4]])
S = P.T
p = np.array([1.0, 0, 0, 0])
for _ in range(200):
p = S @ p
print("tras 200 pasos:", np.round(p, 6))
pi = np.array([50, 63, 74, 64]) / 251
print("π = (50,63,74,64)/251:", np.round(pi, 6), "S π = π:", np.allclose(S @ pi, pi))
# Mayoría de k ejecuciones de un algoritmo que falla con probabilidad 1/3
def error_mayoria(k, eps):
return sum(comb(k, i) * (1 - eps) ** i * eps ** (k - i) for i in range(k // 2 + 1))
for k in (1, 11, 51, 101):
print(f"k = {k:3d}: error {error_mayoria(k, 1/3):.2e}")
tras 200 pasos: [0.199203 0.250996 0.294821 0.25498 ]
π = (50,63,74,64)/251: [0.199203 0.250996 0.294821 0.25498 ] S π = π: True
k = 1: error 3.33e-01
k = 11: error 1.22e-01
k = 51: error 6.89e-03
k = 101: error 2.72e-04
Elige una de cuatro cadenas, un estado inicial y aplica pasos. El widget muestra la matriz (cada columna suma 1), la distribución con una barra por estado, la estacionaria si es única y la distancia máxima entre y . Las dos primeras cadenas son ergódicas (la de dos estados de la sección 2 y la de cuatro de la sección 4); la tercera es periódica y la cuarta, reducible. El widget solo repite las cuentas de esta lección, no participa en el Repaso y se maneja con el teclado (Tab para moverte entre controles; Intro o Espacio para pulsar). El valor numérico de cada estado está también en el párrafo «Paso t · distribución», que se anuncia al aplicar un paso; las barras son solo una ayuda visual. Sus resultados se han comprobado contra NumPy.
Alternativa en texto
Sin el widget, estos son los resultados (cifras redondeadas a cuatro decimales).
Dos estados (, ; ), desde el estado 1:
| Paso |
|
| 0 |
|
| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
Cuatro estados (), desde el estado 1:
| Paso |
|
Distancia máxima a |
| 0 |
|
0,8008 |
| 1 |
|
0,4950 |
| 2 |
|
0,1240 |
| 5 |
|
0,0066 |
| 10 |
|
0,0001 |
Periódica (): desde el estado 1, alterna y la distancia a vale siempre .
Reducible (estados 1 y 2 absorbentes): desde el estado 3, y se queda ahí; desde el estado 1, siempre. No hay una única estacionaria, y el widget no muestra distancia.
Errores frecuentes y límites
- «Todas las cadenas convergen.» No: hacen falta irreducibilidad y aperiodicidad. La periódica y la reducible de la sección 5 son los contraejemplos.
- Confundir estacionaria con límite. Que no implica .
- Mezclar filas y columnas. Con (filas) se escribe ; con (columnas), . Si se mezclan, las cuentas salen traspuestas.
- Promediar sobre entradas. El error de un algoritmo aleatorizado es sobre sus monedas, con la peor entrada. «Funciona en la mayoría de entradas» es otra cosa.
- Creer que pocas repeticiones bastan para un error astronómico. Con error , la mayoría de 301 ejecuciones deja un error exacto del orden de ; para hacen falta .
- Confundir BPP con PP. PP admite probabilidades de acierto de y no se toma como modelo de lo que se resuelve con azar en la práctica.
- Dar por hecho que el azar aporta potencia. La amplificación reduce el error; no vuelve fácil un problema difícil.
Límites. Cadenas finitas y en tiempo discreto. El Teorema 7.7 se cita sin demostrar, y la dominación de la cadena por la pesimista (2-SAT) también. No se trata la velocidad de convergencia más que en un ejemplo.
Ejercicios
Ejercicio 1. Sea . (a) Comprueba que es estocástica. (b) Calcula partiendo de . (c) Calcula la probabilidad de ir del estado 1 al 3 en exactamente dos pasos con la suma sobre caminos.
Solución y criterio de éxito
(a) Las columnas suman , y y todas las entradas son . (b) y . (c) Los caminos () y () y () dan , que es la tercera componente de .
Criterio de éxito: obtienes y entiendes que la entrada es la suma de los productos sobre los estados intermedios.
Ejercicio 2. Una cadena de dos estados tiene (de 0 a 1) y (de 1 a 0). Halla su estacionaria y la fracción de tiempo a largo plazo en el estado 1.
Solución y criterio de éxito
da y con resulta : el 40 % del tiempo en el estado 1. Se comprueba que .
Criterio de éxito: planteas el equilibrio entre salir y entrar en un estado y normalizas la solución.
Ejercicio 3. Para : (a) halla una estacionaria; (b) di qué ocurre con para ; (c) di qué hipótesis del teorema de convergencia falla.
Solución y criterio de éxito
(a) . (b) Alterna y no converge. (c) La aperiodicidad (la cadena es irreducible, pero tiene periodo 2: solo se vuelve a un estado en un número par de pasos).
Criterio de éxito: distingues que exista una estacionaria de que haya convergencia.
Ejercicio 4. Un algoritmo probabilístico se equivoca con probabilidad . Calcula el error exacto de la mayoría de y de ejecuciones, y da la cota para .
Solución y criterio de éxito
Con , falla si hay 2 o 3 errores: . Con , falla si hay 3, 4 o 5 errores: . La cota es y : se cumple, aunque es holgada.
Criterio de éxito: sumas las binomiales de los casos en que la mayoría falla y compruebas que el error exacto queda por debajo de .
Ejercicio 5 (avanzado). Demuestra que si es doblemente estocástica, la distribución uniforme es estacionaria, y da una cadena de dos estados estocástica cuya estacionaria no es uniforme.
Solución y criterio de éxito
Si las filas de suman 1, para todo , es decir , y dividiendo entre resulta para . Para una estocástica que no es doblemente estocástica sirve la del ejercicio 2, , cuya estacionaria es : sus filas suman y .
Criterio de éxito: usas la suma por filas para demostrar y relacionas que da una estacionaria no uniforme.
Fuentes
Nivel: introductorio. Volatilidad: baja (teoría; revisión anual). Última verificación: 2026-11-02. Mitzenmacher y Upfal (cap. 7: pp. 168–174, 180–187), Etessami (pp. 6, 13), Yanofsky y Mannucci (§3.1–3.2, pp. 74–88), Aaronson (Quantum Computing since Democritus, cap. 7, pp. 73–80), Kitaev–Shen–Vyalyi (§4.1, pp. 36–37) y Nannicini (ej. 1, p. 4). Las demostraciones de la sección 7 (salvo el paso citado) y de la amplificación están reescritas a partir de Mitzenmacher–Upfal (pp. 173–174) y Kitaev–Shen–Vyalyi (p. 37) y verificadas con verify/01-computacion-probabilistica.py; las de las secciones 1 y 3 son propias. El Teorema 7.7, la existencia de una estacionaria en toda cadena finita, la unicidad en las irreducibles y la dominación de por se citan sin demostrar.
- Yanofsky y Mannucci, Quantum Computing for Computer Scientists libro
yanofsky-mannucci · consultada el 2026-11-02
- Mitzenmacher y Upfal, Probability and Computing libro
mitzenmacher-upfal · consultada el 2026-11-02
- Etessami, Analysis of Probabilistic Processes and Automata Theory libro
etessami · consultada el 2026-11-02
- Nannicini, An Introduction to Quantum Computing, Without the Physics (se abre en una pestaña nueva) artículo
nannicini · consultada el 2026-11-02
- Kitaev, Shen y Vyalyi, Classical and Quantum Computation libro
kitaev-shen-vyalyi · consultada el 2026-11-02
- Aaronson, Quantum Computing since Democritus libro
aaronson-democritus · consultada el 2026-11-02