За яких обставин алгоритми


16

Припустимо, що для кожного ϵ>0 існує машина Тюрінга Mϵ яка визначає мову L в часі O(na+ϵ) . Чи існує єдиний алгоритм, який вирішує L за часом O(na+o(1)) ? (Тут термін o(1) вимірюється у вигляді n , вхідної довжини.)

Чи має значення зміна, якщо алгоритми Mϵ обчислювані, або ефективно обчислювані з точки зору ϵ ?

Мотивація: у багатьох доказах простіше побудувати алгоритми часу ніж алгоритм обмеження O ( n a + o ( 1 ) ) . Зокрема, вам потрібно зв'язати постійний член в O ( n a + ϵ ), щоб перейти до межі O ( n a + o ( 1 ) ) . Було б добре, якщо є якийсь загальний результат, на який можна попросити перейти до межі безпосередньо.O(na+ϵ)O(na+o(1))O(na+ϵ)O(na+o(1))

Відповіді:


10

Питання подібне до питань про конструктивне існування межі послідовності (конструктивних) об'єктів. Зазвичай, якщо ви можете рівномірно побудувати ці об'єкти (тут ) досить ефективно, то ви можете конструктивно показати існування межі.Mϵ

Наприклад, припустимо, що у нас є TM який виконує M | k | - 1 на х і час його виконання дорівнює O ( n a + | k | - 1 ) + O ( | k | ) (тут межі також рівномірні, наприклад, щось на зразок O ( 2 k . N a + | k | - 1 )N(k,x)M|k|1xO(na+|k|1)+O(|k|)O(2k.na+|k|1)не працювало б). Тоді ми можемо поєднати цей рівномірний тренажер з функцією для отримання машини N ( x , x ), яка працює в часі O ( n a + o ( 1 ) ) .(k,x)xN(x,x)O(na+o(1))

PS: є дещо неоднозначним через вкладення асимптотичних позначень, я трактую це як n a + o ( 1 ) . Крім того, ми повинні бути не дуже маленьким, наприклад , щонайменше , 1 .O(na+o(1))na+o(1)a1


8

Можна використовувати універсальний алгоритм пошуку Левіна. Припустимо, що ви можете якось перерахувати послідовність алгоритмів вирішує L , кожен працює за часом C k n a + 1 / k . Алгоритм Левіна працює у часі T ( n ) D k n a + 1 / k для кожного k , де D k - константа залежно від C k . Отже для кожного k , τ ( n ) AkLCkna+1/kT(n)Dkna+1/kkDkCkk Даноϵ>0, виберітьk=2/ϵ, і нехайN=D 2 / ϵ k. Тоді дляnN,τ(n)ϵ. Томуτ(n)0, і отримуємо, що алгоритм Левіна працює в часіna+τ(n)=na+

τ(n)logT(n)lognalogDk+(a+1/k)lognlogna=logDklogn+1k.
ϵ>0k=2/ϵN=Dk2/ϵnNτ(n)ϵτ(n)0 .na+τ(n)=na+o(1)

If I understand Levin's algorithm, this only applies to search algorithms. This algorithm would work to invert a function f, where f can be computed in time O(no(a)).
David Harris

I'm not suggesting using Levin's algorithm itself, just the idea of running all the algorithms Ak in parallel using dovetailing, in such a way that each one is slowed down only by a multiplicative factor.
Yuval Filmus

@ Yuval, when you dovetail all the algorithms, then how do you decide which answer to accept? In a search problem, you can test each putative output, but in general this is not possible.
David Harris

I accept the first answer that appears. We are given that the algorithms Ak correctly decide L.
Yuval Filmus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.