The space complexity of an
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algo ...
or a
data structure
In computer science, a data structure is a data organization and storage format that is usually chosen for Efficiency, efficient Data access, access to data. More precisely, a data structure is a collection of data values, the relationships amo ...
is the amount of memory space required to solve an instance of the
computational problem
In theoretical computer science, a computational problem is one that asks for a solution in terms of an algorithm. For example, the problem of factoring
:"Given a positive integer ''n'', find a nontrivial prime factor of ''n''."
is a computati ...
as a function of characteristics of the input. It is the memory required by an algorithm until it executes completely. This includes the memory space used by its inputs, called input space, and any other (auxiliary) memory it uses during execution, which is called auxiliary space.
Similar to
time complexity
In theoretical computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations ...
, space complexity is often expressed asymptotically in
big ''O'' notation, such as
etc., where is a characteristic of the input influencing space complexity.
Space complexity classes
Analogously to time complexity classes
DTIME(f(n)) and
NTIME(f(n)), the complexity classes
DSPACE(f(n)) and
NSPACE(f(n)) are the sets of languages that are decidable by deterministic (respectively, non-deterministic)
Turing machine
A Turing machine is a mathematical model of computation describing an abstract machine that manipulates symbols on a strip of tape according to a table of rules. Despite the model's simplicity, it is capable of implementing any computer algori ...
s that use
space. The complexity classes
PSPACE and
NPSPACE allow
to be any polynomial, analogously to
P and
NP. That is,
and
Relationships between classes
The
space hierarchy theorem states that, for all
space-constructible functions
there exists a problem that can be solved by a machine with
memory space, but cannot be solved by a machine with asymptotically less than
space.
The following containments between complexity classes hold.
Furthermore,
Savitch's theorem gives the reverse containment that if
As a direct corollary,
This result is surprising because it suggests that non-determinism can reduce the space necessary to solve a problem only by a small amount. In contrast, the
exponential time hypothesis conjectures that for time complexity, there can be an exponential gap between deterministic and non-deterministic complexity.
The
Immerman–Szelepcsényi theorem states that, again for
is closed under complementation. This shows another qualitative difference between time and space complexity classes, as nondeterministic time complexity classes are not believed to be closed under complementation; for instance, it is conjectured that NP ≠
co-NP.
LOGSPACE
L or LOGSPACE is the set of problems that can be solved by a deterministic Turing machine using only
memory space with regards to input size. Even a single counter that can index the entire
-bit input requires
space, so LOGSPACE algorithms can maintain only a constant number of counters or other variables of similar bit complexity.
LOGSPACE and other sub-linear space complexity is useful when processing large data that cannot fit into a computer's
RAM. They are related to
Streaming algorithm
In computer science, streaming algorithms are algorithms for processing data streams in which the input is presented as a sequence of items and can be examined in only a few passes, typically one-pass algorithm, just one. These algorithms are desi ...
s, but only restrict how much memory can be used, while streaming algorithms have further constraints on how the input is fed into the algorithm.
This class also sees use in the field of
pseudorandomness and
derandomization, where researchers consider the open problem of whether
L =
RL.
The corresponding nondeterministic space complexity class is
NL.
Auxiliary space complexity
The term refers to space other than that consumed by the input.
Auxiliary space complexity could be formally defined in terms of a
Turing machine
A Turing machine is a mathematical model of computation describing an abstract machine that manipulates symbols on a strip of tape according to a table of rules. Despite the model's simplicity, it is capable of implementing any computer algori ...
with a separate ''input tape'' which cannot be written to, only read, and a conventional working tape which can be written to.
The auxiliary space complexity is then defined (and analyzed) via the working tape.
For example, consider the
depth-first search of a
balanced binary tree with
nodes: its auxiliary space complexity is
See also
*
*
*
References
{{reflist
Computational complexity theory
Computational resources