Коментар Еміля Джерабека - це приємне резюме, але я хотів зазначити, що є й інші класи з більш чіткими визначеннями, які фіксують більш-менш те саме поняття, та уточнити зв’язок між усіма цими речами.
[Попередження: хоча я вважаю, що я правильно визначив, деякі речі нижче відображають мої особисті переваги - я намагався зрозуміти, де це було.]
У детермінованому світі функціональний клас - це лише сукупність функцій (у звичайному, математичному сенсі слова "функція", тобто карта ). Інколи ми хочемо дозволити "часткові функції", вихід яких "визначений" для певних входів. (Рівнозначно, функції, визначені на підмножині а не на всіх.)Σ ∗Σ∗→Σ∗Σ∗
На жаль, є два різних визначення для плавають навколо, і наскільки я можу сказати, вони не є рівнозначними (хоча вони "морально" еквівалентні).FP
- F P F N P , T F N PFP (визначення 1) - це клас функцій, який можна обчислити в многочлени. Щоразу, коли ви бачите і його не в контексті, коли люди говорять про , це визначення я припускаю.FPFNP,TFNP
У недетермінованому світі речі стають трохи смішними. Там зручно допускати "часткові, багатозначні функції". Було б природним також називати таку річ бінарним відношенням , тобто підмножиною . Але з точки зору складності, часто філософсько та психічно корисно мислити ці речі як "недетерміновані функції". Я думаю, що багато з цих визначень пояснюються наступними класами (визначення яких повністю стандартизовані, якщо не дуже відомі):Σ∗×Σ∗
x x x { ( x , y ) : y виводиться деякою гілкою обчислення на вході x }NPMV : Клас "часткових, багатозначних функцій", обчислений недетермінованою машиною за багаточлен. Що це означає, що існує багаточасова недетермінована машина, і на вході , на кожній недетермінованій гілці вона може прийняти і зробити деякий вихід, або відхилити і не зробити вихід. Тоді "багатозначний" висновок на вході - це набір усіх виходів на всіх недетермінованих гілках, коли дано як вхід. Зауважте, що цей набір може бути порожнім, тому як "багатозначна функція" це може бути лише частковим. Якщо ми подумаємо про це з точки зору бінарних відношень, це відповідає співвідношенню .xxx{(x,y):y is output by some branch of the computation on input x}
N P M V xNPMVt : Всього "функцій" в , тобто на кожному вході принаймні одна гілка (і тому робить вихід за визначенням)NPMVx
N P M V Σ ∗NPSV : (потенційно часткові) функції в . Тут є деяка гнучкість у тому, що декілька гілок можуть приймати, але якщо будь-яка гілка приймає, то всі приймаючі гілки повинні бути гарантовані, щоб зробити однаковий результат (щоб він справді був однозначним). Однак, можливо, жодна гілка не приймає, тому функція є лише "частковою функцією" (тобто не визначена для всіх ).NPMVΣ∗
N P S V Σ ∗ → Σ ∗ N P S V t = F P N P ∩ c o N PNPSVt : загальні функції в . Це дійсно функції, у звичайному розумінні цього слова, . Це не надто важка вправа побачити, що (використовуючи Def 1 для FP вище).NPSVΣ∗→Σ∗NPSVt=FPNP∩coNP
Коли ми говоримо про потенційно багатозначні функції, говорити про стримування класів складності вже не є корисним: безумовно просто тому, що не містить будь-які багатозначні "функції", але робить. Натомість ми говоримо про "c-стримування", позначене . Функція (потенційно часткова, багатозначна) уточнює (потенційно часткову багатозначну) функцію якщо: (1) для кожного вводу для якого робить деякий вихід, так це , і (2) виходи завжди є підмножиною виходівN P S V N P M V ⊆ c f g x g f f g N P M V N P S V N P M V ⊆ c N P S VNPMV⊈NPSVNPSVNPMV⊆cfgxgffg . Відповідне питання полягає в тому, чи має кожна "функція" уточнення . Якщо так, ми пишемо .NPMVNPSVNPMV⊆cNPSV
- f : D → Σ ∗ D ⊆ Σ ∗ P F x ∈ D f ( x ) x ∉ DPF (трохи менший стандарт) - це клас (потенційно частковий) функцій, обчислюваний у полі-часі. Тобто, функція ( ) знаходиться в , якщо є полі-часу детермінованою машини таким чином , що на входах машина видає , а на входах машина не робить виводу (/ відхиляє / каже "ні" / проте ви хочете сформулювати це).f:D→Σ∗D⊆Σ∗PFx∈Df(x)x∉D
F N P R ⊆ Σ ∗ × Σ ∗ R f ( ∃ y ) [ R ( x , y ) ] f y f F N P R R ∈ P F N PFNP - це клас "функціональних проблем" (а не клас функцій). Я також би назвав "реляційним класом", але насправді будь-які слова, які ви використовуєте для його опису, вам потрібно потім уточнити, тому я не особливо частковий до цього визначення. До будь-якого бінарного відношення є пов'язана "проблема функції". Що таке функціональна проблема? У мене немає чіткого математичного визначення, як я це роблю для мови / функції / відношення; скоріше, це визначається тим, що є правильним рішенням: правильним рішенням проблеми функції, пов'язаної з є будь-яка (потенційно часткова) функція така, що якщоFNPR⊆Σ∗×Σ∗Rf(∃y)[R(x,y)]f виводить будь-який такий , інакше не робить виводу. - клас проблем функцій, пов'язаних з відношеннями таким, що (якщо розглядається як мова пар) і p-збалансований. Тож - це не клас функцій, не клас мов, а клас "проблемних функцій", де "проблема" тут визначається приблизно з точки зору того, що означає її вирішити.yfFNPRR∈PFNP
F N P R R x y R ( x , y )TFNP - це клас проблем функцій у - визначений співвідношенням як вище - такий є тотальним, в тому сенсі, що для кожного існує такий, що .FNPRRxyR(x,y)
Для того, щоб не потрібно писати речі типу "Якщо кожен (респ., ) проблема функції має рішення в (відповідно. відповідно до вище визначення), то ... "у цьому контексті використовується визначення 2 , яке:T F N P P F F P F PFNPTFNPPFFPFP
- F N P y 0 y x y 0 y R y y 0FP (визначення 2) - клас задач функцій в які мають багаточасова розв'язка. Можна припустити , що рішення (= функція) тут тотально, вибираючи спеціальну рядок , яке не є допустимим для будь-яких , і мають вихідний функції , коли не було б в іншому випадку бути не діє . (Якщо потрібно, ми можемо змінити відношення , попередньо додавши кожне до 1, а потім взяти як рядок 0; це не змінить складності будь-якого пов'язаного).FNPy0yxy0yRyy0
Ось, як ці різні визначення відносяться один до одного, (визначення 2, про що ви повинні припустити, оскільки воно знаходиться в контексті, де його порівнюють з ) еквівалентно до . (def 2) еквівалентно (def 1).F N P N P M V ⊆ c P F T F N P ⊆ F P N P M V t ⊆ c F PFNP⊆FPFNPNPMV⊆cPFTFNP⊆FPNPMVt⊆cFP