Просторова складність алгоритму чи комп'ютерної програми — обсяг пам'яті, необхідний для розв'язання екземпляра обчислювальної задачі як функція характеристик вхідних даних. Це пам'ять, необхідна алгоритму, поки він не завершиться повністю[1].
Подібно до часової складності, просторова складність часто виражається асимптотично у O-нотації, наприклад: тощо, де n є характеристикою вхідних даних, що впливають на просторову складність.
Класи просторової складності
Аналогічно класам часової складності DTIME(f(n)) та NTIME(f(n)), класи просторової складності DSPACE(f(n)) та NSPACE(f(n)) — це набори мов, які можна визначити детермінованими (відповідно, недетермінованими) машинами Тьюрінга, які використовують простір. Класи складності PSPACE і NPSPACE дозволяють бути будь-яким многочленом, аналогічно P і NP. Тобто,
і
Відношення між класами
Теорема про просторову ієрархію стверджує, що для всіх просторово сконструйованих[en] функцій , існує задача, яку можна розв'зати машиною з простором пам'яті, але яка не може бути розв'язана машиною з асимптотично меншим за простором.
Мають місце наведені нижче обмеження між класами складності.[2]
Крім того, теорема Савича дає зворотне обмеження, що якщо ,
Як прямий наслідок: . Цей результат дивує, оскільки свідчить про те, що недетермінованість може зменшити простір, необхідний для розв'язання задачи, лише на невеликий об'єм пам'яті. На відміну від цього, гіпотеза експоненціального часу припускає, що для часової складності може існувати експоненціальний розрив між детермінованою та недетермінованою складністю.
Теорема Іммермана — Селепчєнні стверджує, що знову для , закрито на доповнення. Це свідчить про ще одну якісну різницю між класами часової і просторової складності, оскільки недетерміновані класи часової складності, як вважають, не закриваються від доповнення; наприклад, передбачається, що NP ≠ co-NP.[3][4]