Клас складності NP

Матеріал з testwiki
Версія від 19:12, 19 січня 2025, створена imported>Merlin.anthwares (Додано шаблон Математична логіка)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Клас складності NP (Шаблон:Lang-en) — клас складності, до якого належать задачі, що можна розв'язати недетермінованими алгоритмами за поліноміальний час; тобто, недетермінованими алгоритмами в яких завжди існує шлях успішного обчислення за поліноміальний час відносно довжини вхідного рядка; очевидно, що 𝒫𝒩𝒫.[1]

Формальне визначення

Мова L належить до класу NP (недетермінованих поліноміальних) якщо вона розпізнається недетермінованою машиною Тюрінга M з поліноміальною часовою складністю T(n).[2]

Властивості

Оскільки кожна детермінована машина Тюринга може розглядатись як недетермінована, але без вибору варіантів кроків, то клас 𝒫 є підмножиною 𝒩𝒫. Однак до класу складності NP належить багато інших задач, належність яких до класу P не доведена.[2]

Однією з найгостріших задач математики є з'ясування вірності тотожності 𝒫=𝒩𝒫. Тобто, пошуку відповіді на питання, чи є правильним твердження, що будь-що, що виконує недетермінована машина Тюринга за поліноміальний час можна виконати на детермінованій машині за, можливо більший, поліноміальний час.

Приклад задач

До задач класу складності NP належать:[3]

  • Розв'язність логічного виразу.
  • Триколірне розфарбування графу.
  • Побудова кліки з k вершин на неорієнтованому графі.
  • Покриття множин: нехай задане сімейство F підмножин Ei деякої множини E; необхідно знайти підсемейство G із F, так, що:
    FEi=GEi
  • Розбиття множин: за попередніх умов, але, крім того, вимагається, щоб EiEj= (для довільних Ei,Ej з G).
  • Існування гамільтонового циклу на неорієнтованому графі.
  • Задача пакування рюкзака: для змінних xi, що приймають значення 0 та 1 розв'язати рівняння:
    ajxj=b де aj та b — наперед задані цілі числа.
    для загального випадку, ця задача є розв'язанням діофантового рівняння.
  • Розбиття на дві частини: нехай дано n чисел yi з 𝒩, необхідно розбити на дві множини I1 та I2 що не перетинаються, так, щоб:
    iI1yi=iI2yi.
  • Задача комівояжера[4].

Див. також

Шаблон:Портал

Примітки

Шаблон:Reflist

Джерела

Шаблон:NP-повні задачі Шаблон:Класи складності Шаблон:Математична логіка