One-pass algorithm
In computing, a one-pass algorithm or single-pass algorithm is a streaming algorithm which reads its input exactly once. It does so by processing items in order, without unbounded buffering; it reads a block into an input buffer, processes it, and moves the result into an output buffer for each step in the process. A one-pass algorithm generally requires O time and less than O storage, where n is the size of the input. An example of a one-pass algorithm is the Sondik partially observable Markov decision process.
Example problems solvable by one-pass algorithms
Given any list as an input:- Count the number of elements.
- Find the k largest or smallest elements, k given in advance.
- Find the sum, mean, variance and standard deviation of the elements of the list. See also Algorithms for calculating variance.
- Count the number of times each symbol appears in the input.
- Find the most or least frequent elements.
- Sort the list according to some order on the symbols.
- Find the maximum gap between two appearances of a given symbol.
Example problems not solvable by one-pass algorithms
- Find the nth element from the end.
- Find the middle element of the list. However, this is solvable with two passes: Pass 1 counts the elements and pass 2 picks out the middle one.
- Find the median.
- Find the modes.
- Sort the list.
- Count the number of items greater than or less than the mean. However, this can be done in constant memory with two passes: Pass 1 finds the average and pass 2 does the counting.