Sea sea una función. Queremos estimar el promedio de ; es decir: .f E [ f ( n ) ] = 2 - n ∑ x ∈ { 0 , 1 } n f ( x )
NOTE: In the OP, the range of f was [0,1]. I changed this a bit for technical reasons. (This should simplify the problem; if not, forget it!)
Sea el algoritmo estimador (aleatorio). Suponga que tiene acceso de caja negra a . Denotamos esto por .E
Hay dos condiciones:
1) Tiempo de ejecución del estimador: existe un único polinomio tal que para todos y todos , el tiempo de ejecución de E f ( 1 n ) está limitado por p ( n ) .
2) Precisión del estimador con confianza : existe un solo polinomio , de modo que para todos y todos , tenemos con probabilidad de al menos.
NOTE: The confidence δ was not in the OP. The parameter δ is in (0,1), and may depend on n. For instance, it may be 1-1/2^n.
¿Existen tales estimadores?
Antecedentes y Motivación
No mencioné mi motivación al principio, ya que requiere una gran cantidad de conocimientos previos. De todos modos, para los entusiastas, lo describo brevemente: la necesidad de tales estimadores surge en el contexto de "Pruebas de capacidad", tal como se define en el siguiente artículo:
Mihir Bellare, Oded Goldreich. Prueba de capacidad computacional , 1992. Manuscrito no publicado.
Específicamente, en la parte inferior de la página 5, los autores asumieron implícitamente la existencia de tales estimadores (no se menciona la precisión y el tiempo de ejecución no está definido con precisión; sin embargo, el contexto define claramente todo).
Mi primer intento fue leer " Una muestra de muestreadores --- Una perspectiva computacional sobre el muestreo ". Se trata de un problema muy similar, pero la probabilidad de error definida es aditiva, mientras que la nuestra es multiplicativa. (No leí completamente el periódico, tal vez menciona lo que necesito en alguna parte).
EDITAR (según la solicitud de Tsuyoshi): de hecho, la definición de "Pruebas de capacidad computacional" requiere la existencia de un "extractor de conocimiento" cuyo tiempo de ejecución (esperado) es . Como no conocemosE[f(n)], queremos estimarlo; sin embargo, esto no debe cambiar el tiempo de ejecución considerablemente: debería cambiarlo a un factor polinómico. La condición de precisión intenta capturar tal requisito.
fuente
Respuestas:
EDITAR: Esto resuelve la versión del problema donde f solo produce 0 o 1. Pero creo que la solución se puede adaptar para que funcione para el caso más general.
Tal vez no entendí bien la pregunta, pero esto no parece demasiado difícil.
En lugar de estimar el promedio, pensemos en estimar el número de 1s y llamar a ese número k. Deje . Entonces el promedio es k / N. Desea estimar esto dentro de un factor multiplicativo polinómico en el tiempo O (N polylog (N) / k).N=2n
Creo que esto también se puede hacer dentro de cualquier factor multiplicativo constante. Por ejemplo, supongamos que desea estimar esto dentro de un factor de 2. Por lo tanto, la salida del algoritmo estará entre k / 2 y 2k.k′
Dibujaré un algoritmo, que debería tener el tiempo de ejecución apropiado. Primero verifique si k está entre N / 2 y N. Esto es fácil, solo muestree algunos valores aleatorios y si obtiene más de la mitad 1, entonces está en este intervalo. Entonces tienes una aproximación de 2. De lo contrario, verifique si está entre N / 4 y N / 2. Y así. Cada vez que reduce el intervalo, es más costoso estimar si k se encuentra en ese rango. Pero el costo es inversamente proporcional a lo pequeño que es el intervalo.
Por ejemplo, si está verificando si k está entre y 2 N / 2 q , entonces necesita hacer consultas sobre O ( 2 q ) . De todos modos, después de repetir este procedimiento suficientes veces, debe obtener el intervalo en el que se encuentra k. Digamos que k se encuentra entre N / 2 q y 2 N / 2 q . Entonces k es aproximadamente N / 2 q . Entonces 2 qN/2q 2N/2q O(2q) N/2q 2N/2q N/2q 2q se trata de k / N. Entonces, en este paso, gastaríamos consultas O (k / N). Pero llegar a este paso requirió q otros pasos, pero eso es solo un factor polylog (N) adicional. Entonces, el tiempo de ejecución general es O (N polylog (N) / k), para una aproximación de 2.
(Uno realmente tendría que hacer una amplificación de error para obtener una precisión decente en cada paso. Pero eso es solo un factor adicional de polylog).
La razón por la que me gusta pensar en este proceso de varias etapas es que resalta el proceso como un proceso de conjetura y verificación. Si alguien le dijo que está entre N / 2 q y 2 n / 2 q , entonces podría estimarlo con mayor precisión sabiendo este hecho, en el tiempo prometido. Por lo tanto, debemos eliminar el paso de adivinar k . Esto se realiza mediante búsqueda binaria en todos los intervalos posibles de ese tipo.k N/2q 2n/2q k
Para que esto funcione para el caso de salidas no booleanas, en lugar de contar el número de 1s, solo suma los valores vistos. Trataré de encontrar una referencia para demostrar que esto funciona rigurosamente.
fuente
Supongamos que denotan los valores de f aplicados a una secuencia infinita de muestras aleatorias (con reemplazo) de { 0 , 1 } n . Deje que k sea el número entero positivo tal que menos Σ k i = 1 f i ≥ M para algún valor M , quizás M = p o l y l o g ( n ) . Supongo que el estimador M /f1,f2,… f {0,1}n k ∑ki=1fi≥M M M=polylog(n) debes lograr lo que quieres.M/k
Para el análisis, no puede aplicar los límites de Chernoff directamente a la variable aleatoria pero de todos modos hay un truco que le permite usar Chernoff. Supongamos que μ denota la expectativa desconocida E ( f ) . Encuentre las constantes k l o w y k h i g h (funciones de μ ) de modo que con probabilidad al menos 1 - δ tengamos ∑ k l o w i = 1 f i < M y ∑ k hk μ E(f) klow khigh μ 1−δ ∑klowi=1fi<M . Esas sumas defis pueden acotarse usando Chernoff. Se deduce queklow<k<khighcon una probabilidad de al menos1-δy, por lo tanto, el estimadorM/kestá bien concentrado.∑khighi=1fi>M fi klow<k<khigh 1−δ M/k
fuente