Розглянемо наступну проблему.
Ця проблема проста: ми можемо використовувати двійковий пошук, щоб знайти аргмакс із запитами . тобто побудуйте повне двійкове дерево з листами, що відповідають індексам. Почніть з кореня і спустіться до листа так. На кожному вузлі запитуйте максимальне значення в правій та лівій підкреслях, а потім перейдіть до дитини з боку з більшою відповіддю. Дійшовши до листа, виведіть його індекс.n
У моєму дослідженні з’явилася наступна галаслива версія цієї проблеми.
Існує невідомих значень . До них можна отримати запити, в яких задається набір і повертається зразок з . Мета - визначити таким, що використовуючи якомога менше запитів. (Очікування закінчується вибором , що залежить як від монет алгоритму, так і від галасливих запитів.)v 1 , ⋯ , v n S ⊆ { 1 , ⋯ , n } N ( max i ∈ S v i , 1 ) i ∗ ∈ { 1 , ⋯ , n } E [ v i ∗ ] ≥ max i v i - 1 i ∗
Припустимо, ми намагаємося вирішити це, використовуючи ту ж саму стратегію пошуку, як і раніше (але з галасливими відповідями). Досить легко показати, що це досягає і що це в найгіршому випадку. Ми можемо зменшити помилку до потрібної , повторивши кожен запит разів та використовуючи середнє значення (яке зменшує дисперсію). Це дає алгоритм, що використовує запитів.1 O ( log 2 n ) O ( log 3 n )
Чи є кращий алгоритм? Я припускаю, що запитів достатньо. І я вважаю, що можу довести нижню межу . Крім того, проблема стає легкою - тобто запити за допомогою двійкового пошуку - під обіцянкою, що між найбільшим значенням та другим за величиною значенням існує розрив . Якщо це допомагає, ви можете припустити, що всі значення знаходяться між і .Ω ( log 2 n ) ˜ O (Ω ( 1 ) 0 O ( log n )