Чи з'являються функції з повільнішим зростанням, ніж обернена Акерманна, в межах часу виконання?


20

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

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


2
алгоритми часу? Ви запитуєте про відому проблему, найвідомішим алгоритмом якої є ω ( 1 ) і o ( α ( n ) ) ? Спочатку потрібно знайти функцію, що росте «в принципі швидше», ніж A ( n ) , як TREE ( n ) , а потім взяти її зворотну, а потім знайти проблему, яка їй підходить! О(1)ω(1)о(α(н))А(н)(н)
Pål GD

1
є довільно налаштовані алгоритми, побудовані за
часовою

2
@vzn: Будь-який не може бути сконструйований часом (що включає α ( n ) ). Тож теорему про ієрархію часу тут не можна використовувати. f(n)=o(n)α(n)
mdxn

@mdx радий, що хтось на це вказав, просто випробовуючи. да в останнім часом було мислення могло бути узагальненням часу THM ієрархії для суб функцій. але все-таки o ( n ) межа полягає в тому, що TM, який може бути сконструйований за часом, повинен прочитати всі вхідні дані, але чи ми говоримо про ці інші алгоритми, наприклад, при зворотній складності Ackermann часу? не вдається уявити це! відчуваю, що питання більше стосується існування суб- о ( н ) мов .... чи може десь бути якесь опитування чи опис ....о(н)о(н)о(н)
vzn

1
@vzn: ОП дійсно потребує уточнення, яку модель обчислень вони мають на увазі. та LH потрібно визначати на ТМ із випадковим доступом (або їх еквіваленти). Вказуючи нашу механіку, ми можемо ненароком додати занадто багато енергії. Це може бути навіть у тій мірі, коли поняття обчислювальної складності не є результативним. На найосновніші терміни, нам довелося б змінити наше уявлення про складність часу (що і робить амортизований час виконання) з ризиком, що таке визначення може стати дуже надуманим (те саме стосується і моделі обчислення). ДЛОГТИМЛГ
mdxn

Відповіді:


8

Сет Петті придумав алгоритм для обчислення чутливості мінімального прольотного дерева в часі , вдосконалюючи алгоритм Тарджана, який обчислює те саме в часі O ( m α ( m , n) ) ) . (Порівняйте це з алгоритмом O ( m α ( m , n ) ) Chazelle для обчислення дерева мінімального розміруО(мжурналα(м,н))О(мα(м,н))О(мα(м,н)) сама проблема.) Проблема чутливості просить обчислити для даного графіка та заданого дерева мінімального розміру, на скільки може змінитися вага кожного краю, не змінюючи мінімального дерева, що охоплює.

(Дякую Цві Копеловіцу за це посилання.)


1
Я не знаю, чи зворотний журнал Ackermann "принципово повільніший", ніж зворотний Ackermann, але я вважав, що цей час роботи не дивно.
Yuval Filmus


-1

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

Зараз я не думаю, що існує практична проблема, яка відповідає вашому питанню, але, можливо, ми можемо її побудувати. Нам потрібно обмежити вхід. Оскільки ми не можемо використовувати O (n), ми не можемо перевірити весь вхід. Насправді ми навіть не можемо перевірити довжину введення, як це було б O (log n). Отже, нам потрібно в якості першого параметра представити довжину решти вводу, наприклад c таке, що Ackermann (c) - довжина вводу. Оскільки це також не підходить, ми вимагаємо в якості першого значення вводити параметр c таким чином, що bb (c) є приблизно довжиною входу, де bb - функція зайнятого бобра. Ця функція є непорушною, але bb (c), безумовно, існує. Потім алгоритм виглядає так:

for (int i=0; i<c; i++) {
    if (input[i] == null) {
        return false;
    }
}
return true;

Метою алгоритму є перевірка того, що якщо c - зворотний bb, якщо тоді вхідна довжина більша bb (c).

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


Однозначно існують функції, які зростають швидше, ніж функція Ackermann, як зазначено в коментарях (TREE (n)). Складна частина питання полягає у побудові алгоритму із обмеженим часом зворотної функції. У такої машини не вистачає часу для обчислення зворотної функції в першу чергу, тому конструкція ТМ, яка досягає цього, не є прямою.
mdxn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.