In
computer science
Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, a suffix array is a sorted
array of all
suffixes
In linguistics, a suffix is an affix which is placed after the stem of a word. Common examples are case endings, which indicate the grammatical case of nouns and adjectives, and verb endings, which form the conjugation of verbs. Suffixes can ca ...
of a
string
String or strings may refer to:
*String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects
Arts, entertainment, and media Films
* ''Strings'' (1991 film), a Canadian anim ...
. It is a data structure used in, among others, full-text indices, data-compression algorithms, and the field of
bibliometrics
Bibliometrics is the application of statistical methods to the study of bibliographic data, especially in scientific and library and information science contexts, and is closely associated with scientometrics (the analysis of scientific metri ...
.
Suffix arrays were introduced by as a simple, space efficient alternative to
suffix tree
In computer science, a suffix tree (also called PAT tree or, in an earlier form, position tree) is a compressed trie containing all the suffixes of the given text as their keys and positions in the text as their values. Suffix trees allow particu ...
s. They had independently been discovered by
Gaston Gonnet in 1987 under the name ''PAT array'' .
gave the first in-place
time suffix array construction algorithm that is optimal both in time and space, where ''in-place'' means that the algorithm only needs
additional space beyond the input string and the output suffix array.
Enhanced suffix arrays (ESAs) are suffix arrays with additional tables that reproduce the full functionality of suffix trees preserving the same time and memory complexity.
A sorted array of only some (rather than all) suffixes of a string is called a
sparse suffix array.
Definition
Let