Клас складності, що відповідає сортуванню


14

Дві частини TCS - це алгоритми та складність. Я спрощено скажу, що алгоритми - це вивчення верхніх меж, що показує, що ви можете щось зробити (із заданими обмеженими ресурсами), а складність полягає в тому, щоб показати, що ви не можете обійтися без мінімальних ресурсів.

Тож часто алгоритмічна проблема заявляється в моделі рішення з метою її розміщення в класі складності.

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

Який найкращий / найвідповідніший / найкорисніший клас складності, у якому порівнюється сортування порівняння?

Відповіді:


17

Проблема сортування насправді є повною для (під -редукцією). Стандартним джерелом для цього є розділ 1.4.3 книги Волмера .TC0AC0

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

Враховуючи послідовність чисел та два числа , ми хочемо вирішити, чи знаходиться у положенні у послідовності, яку ми отримуємо, сортуючи у не зменшуваному порядку. Зауважте, що для уникнення неоднозначності, коли , ми хочемо, щоб передував якщо . k , p [ n ] a k p a 1 , , a n a i = a j a i a j i < ja1,,ank,p[n]akpa1,,anai=ajaiaji<j


Відмінно ... вказано як яка формальна проблема рішення?
Мітч

1
Було б подвійно чудовим, щоб у відповідь включити посилання.
Олександр Бондаренко

@Mitch та @Okeksandr: Дякуємо за ваші коментарі! Я щойно продовжив свою відповідь, щоб уточнити ці моменти.
Dai Le

Це звучить як проблема вирішення статистики замовлень. Чи є пов’язана з цим проблема, де все у своєму правильному місці? Щось на зразок заданої послідовності та перестановки на , вирішує, чи . Це так само важко, як і ваше; це складніше або повноцінніше для включного класу? a1...anσ[1..n]1k<jn,aσk<aσj
Мітч

2
@Mitch: Я вважаю, що перевірити, чи все в потрібному місці, насправді простіше, ніж сортувати. Інтуїція полягає в тому, що ви можете перевірити, що для всієї можливої ​​пари з паралельно, що, на мою думку, можна зробити в . Для вищезазначеної проблеми з сортуванням вам потрібно вміти «рахувати», щоб визначити правильну позицію числа в лінійному упорядкуванні. aσk<aσj(aσk,aσj)k<jAC0
Dai Le

0

Я вважаю, що FP - це те, що ви шукаєте.


Ну, я швидше шукаю відповідний клас складності рішення, а не функціональний, але навіть так, я досить впевнений, що порівняння порівняння не там, де поруч P-повне (або FP-повне), тому я очікую менший клас, для якого, як очікується, буде / в повному складі.
Мітч

Я не усвідомлював, що повнота є однією з вимог у вашому питанні. Як проблема прийняття рішення (якщо ви нехтуєте обмеженням повноти), чому P не буде прийнятним як відповідь? Враховуючи DTM, ви можете як виготовити, так і підтвердити сертифікат у поліноміальний час.
Ніколас Манкузо

Враховуючи загальну проблему, я зазвичай хочу знати, що це не просто поліноміальний час, а найменший клас, у якому він міг би бути. Я хотів би знати, чи є він у LOGCFL, NL, L, AC_0 тощо. Повнота це один із способів, який ви не можете зробити краще. Тож ніт - це не вимога мого питання, але ймовірна річ, яка повинна відповісти.
Мітч
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.