Stack search (also known as Stack decoding algorithm) is a search algorithm similar to
beam search. It can be used to explore tree-structured search spaces and is often employed in
Natural language processing
Natural language processing (NLP) is an interdisciplinary subfield of linguistics, computer science, and artificial intelligence concerned with the interactions between computers and human language, in particular how to program computers to pro ...
applications, such as parsing of natural languages, or for decoding of
error correcting codes where the technique goes under the name of
sequential decoding Recognised by John Wozencraft, sequential decoding is a limited memory technique for decoding tree codes. Sequential decoding is mainly used as an approximate decoding algorithm for long constraint-length convolutional codes. This approach may n ...
.
Stack search keeps a list of the best ''n'' candidates seen so far. These candidates are incomplete solutions to the search problems, e.g. partial parse trees. It then iteratively expands the best partial solution, putting all resulting partial solutions onto the stack and then trimming the resulting list of partial solutions to the top ''n'' candidates, until a real solution (i.e. complete parse tree) has been found.
Stack search is not guaranteed to find the optimal solution to the search problem. The quality of the result depends on the quality of the search heuristic.
References
Example applications of the stack search algorithm can be found in the literature:
* Frederick Jelinek
Fast sequential decoding algorithm using a stack IBM Journal of Research and Development, pp. 675-685, 1969.
* Ye-Yi Wang and Alex Waibel
Decoding algorithm in statistical machine translation Proceedings of the 8th conference on European chapter of the Association for Computational Linguistics, pp. 366-372. Madrid, Spain, 1997.
{{computer-stub
Search algorithms