Оцінювання середнього в поліномічному часі


20

Нехай f:{0,1}n(2n,1] . Ми хочемо оцінити середнє значення f ; тобто: E[f(n)]=2nx{0,1}nf(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!)

Нехай E - (рандомізований) алгоритм оцінки. Припустимо, що E має доступ до чорної скриньки до f . Позначимо це через Ef .

Є дві умови:

1) Час роботи оцінювача: Існує один поліном такий, що для всіх n і всіх f час роботи E f ( 1 n ) обмежений p ( n )p()nfEf(1n) .p(n)E[f(n)]

2) Точність оцінювача з упевненістю :δ Існує єдиний многочлен , такий, що для всіх n і всіх f ми маємо 1q()nfз вірогідністю принаймніδ.1q(n)<Ef(1n)E[f(n)]<q(n)δ

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.

Чи існують такі оцінки?

Передумови та мотивація

Я не говорив про свою мотивацію на початку, оскільки вона потребує значних знань. У будь-якому випадку, для ентузіастів я коротко описую це: потреба в таких оцінювачах виникає в контексті "доказів здатності", визначених у наступній статті:

Міхір Белларе, Од Голдрайх. Доведення обчислювальної здатності , 1992. Неопублікований рукопис.

Зокрема, внизу сторінки 5 автори неявно припускали існування таких оцінювачів (про точність не згадується, а час роботи точно не визначений; проте контекст все чітко визначає).

Моєю першою спробою було прочитати " Зразок пробовідбірників - обчислювальна перспектива на вибірку ". Це стосується дуже подібної проблеми, але визначена ймовірність помилок є адитивною, тоді як наша мультиплікативна. (Я не повністю прочитав папір, можливо, там згадується, що мені десь потрібно.)

EDIT (відповідно до запиту Цуйосі): Насправді, визначення "Доказ обчислювальної здатності" вимагає існування "витягувача знань", очікуваний час роботи якого . Оскільки ми не знаємоE[f(n)], ми хочемо його оцінити; але це не повинно суттєво змінити час роботи: він повинен змінити його до поліномного коефіцієнта. Умова точності намагається охопити таку вимогу.p(n)E[f(n)]E[f(n)]


Я не можу зрозуміти умову точності. Що заважає алгоритму Е завжди виводити 1? Ви мали на увазі 1 / q (n) <(Істинне значення) / (Орієнтовне значення) <q (n)?
Tsuyoshi Ito

Здається, що p (n) = q (n) = O (1) і тривіальний алгоритм що виводить "1", повинні працювати. Час роботи O (1), який обмежений p ( n )Ef(1n) . І його точність <= 1, що менше q (n). p(n)E[f(n)]
Робін Котарі

@Tsuyoshi & Робін: Вибачте, друзі, я пропустив одну умову в точності. Перевірте це зараз!
МС Дусті

Також я здогадуюсь, що оцінювач рандомізований (просто тому, що це виглядає неможливо інакше). Це так? Крім того, якщо це так, то що саме вимагають умови часу роботи та умови точності?
Цуйосі Іто

1
Я думаю, що я чітко не розумію питання. Чому наївний пробовідбірник з прив’язкою до чорнофта не є хорошим оцінником?
Sylvain Peyronnet

Відповіді:


15

EDIT: Це вирішує версію проблеми, де f виводить лише 0 або 1. Але я думаю, що рішення можна адаптувати так, щоб воно працювало для більш загального випадку.

Можливо, я неправильно зрозумів питання, але це виглядає не надто важко.

Замість того, щоб оцінювати середнє, давайте подумаємо про оцінку числа 1s і назвемо це число k. Нехай . Отже середнє значення - k / N. Ви хочете оцінити це в поліноміальному мультиплікативному коефіцієнті за час O (N полілог (N) / k).N=2n

Я думаю, що це можна зробити і в межах будь-якого постійного мультиплікативного чинника. Наприклад, скажімо, ви хочете оцінити це в коефіцієнті 2. Отже, вихід алгоритму буде знаходитись в межах k / 2 та 2k.k

Я начеркну алгоритм, який повинен мати відповідний час роботи. Спочатку перевірте, чи k знаходиться між N / 2 і N. Це легко, просто виберіть кілька випадкових значень і якщо ви отримаєте більше половини 1s, то це в цьому інтервалі. Отже, у вас є 2-наближення. Якщо ні, то перевірте, чи він знаходиться між N / 4 та N / 2. І так далі. Кожен раз, коли ви зменшуєте інтервал, дорожче оцінювати, чи лежить k у цьому діапазоні. Але вартість обернено пропорційна тому, наскільки невеликий інтервал.

Наприклад, якщо ви перевіряєте, чи k знаходиться між та 2 N / 2 q , вам потрібно зробити запити O ( 2 q ) . У будь-якому випадку, повторивши цю процедуру достатньо разів, ви повинні отримати інтервал, в якому лежить k. Скажімо, k лежить між N / 2 q і 2 N / 2 q . Тоді k - приблизно N / 2 q . Так 2 qN/2q2N/2qO(2q)N/2q2N/2qN/2q2qстановить близько k / N. Отже, на цьому кроці ми витратили б O (k / N) запити. Але для досягнення цього кроку потрібні й інші кроки, але це лише додатковий полілогічний (N) фактор. Таким чином, загальний час роботи становить O (N полілог (N) / k), для 2-наближення.

(Насправді потрібно було б зробити посилення помилок, щоб отримати гідну точність на кожному кроці. Але це лише додатковий полілогічний фактор.)


Причина, яку мені подобається думати про це в цьому етапі, полягає в тому, що він виділяє процес як здогад і перевірку пріоритету. Якщо хтось сказав вам, знаходиться між N / 2 q та 2 n / 2 qkN/2q2n/2q , то ви могли б оцінити це з кращою точністю, знаючи цей факт, в обіцяний час. Отже, нам потрібно усунути крок, коли дається здогад для . Це робиться шляхом двійкового пошуку через усі можливі інтервали цього типу.k

Щоб зробити цю роботу у випадку не булевих виходів, замість того, щоб рахувати кількість 1s, просто підсумовуйте бачені значення. Я спробую знайти посилання, щоб показати, що це працює суворо.


(1) Оскільки функція f може приймати неінтегральні значення, ви, ймовірно, хочете використовувати суму значень замість числа 1s. (2) Чи потрібно оцінювати поетапно? Я здогадуюсь, що ми можемо це зробити на одному етапі, просто повторюючи, поки сума не перевищить фіксованого многочлена. Дивіться також мій коментар до питання.
Tsuyoshi Ito

О, я не помітив діапазону [0,1]. Я подумав, що це {0,1}. Але я здогадуюсь, що працює та сама процедура. Можливо, ми можемо зменшити одну проблему до іншої, оскільки можемо з достатньою точністю «підрахувати» число 1 у певному положенні двійкового подання виводу. Щодо (2), я думаю, що ваша процедура рівнозначна. Я думаю про це таким чином, оскільки це відчувається як процес відгадки і перевірки, тобто, з огляду на хитру оцінку k, отримайте кращу. Я додам це до своєї відповіді.
Робін Котарі

Я згоден, що два алгоритми по суті однакові. Також, що стосується [0,1] та {0,1}, ваш алгоритм, ймовірно, працює так, як зазначено після заміни кожної оцінки неінтегрального значення f (x) на монету (1 wp f (x) та 0 wp 1 − f (x)).
Цуйоші Іто

@Robin: Дякую за відповідь. Щось також для мене незрозуміло: Ви сказали: "Просто виберіть кілька випадкових значень, і якщо ви отримаєте більше половини 1s, то це в цьому інтервалі". Я вважаю, що це необхідно кількісно визначити: скільки зразків призводить до якої точності? (Я змінив ОП, щоб врахувати таку впевненість. Інакше було б неможливо розробити необхідний пробовідбірник!)
MS Dousti

@Sadeq: це чорнофф. якщо ви очікуєте, що k буде n / 2 (наприклад, справедлива монета), тоді ви можете швидко записати межу хвоста, щоб побачити більше n (1 + eps) / 2 і аналогічно для нижньої межі.
Суреш Венкат

3

f1,f2,f{0,1}nki=1kfiMMM=polylog(n)M/k має досягти того, що ти хочеш.

kμE(f)klowkhighμ1δi=1klowfi<Mi=1khighfi>Mfiklow<k<khigh1δM/k

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.