One-pass algorithm
Appearance
An editor has nominated this article for deletion. You are welcome to participate in the deletion discussion, which will decide whether or not to retain it. |
This article needs additional citations for verification. (April 2021) |
In computing, a one-pass algorithm or single-pass algorithm is a streaming algorithm which reads its input exactly once.[1] 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.[2] A one-pass algorithm generally requires O(n) (see 'big O' notation) time and less than O(n) storage (typically O(1)), where n is the size of the input.[3]
Example problems solvable by one-pass algorithms
Given any list as an input:
- Count the number of elements.
Given a list of numbers:
- 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.
Given a list of symbols from an alphabet of k symbols, given in advance.
- 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 (possible since the number of symbols is limited).
- Find the maximum gap between two appearances of a given symbol.
Example problems not solvable by one-pass algorithms
Given any list as an input:
- Find the nth element from the end (or report that the list has fewer than n elements).
- 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.
Given a list of numbers:
- Find the median.
- Find the modes (This is not the same as finding the most frequent symbol from a limited alphabet).
- 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.
The two-pass algorithms above are still streaming algorithms but not one-pass algorithms.
References
- ^ http://www.tks.informatik.uni-frankfurt.de/schweika/downloads/EncycDBS_OnePassAlgos.pdf
- ^ http://www.cs.sjsu.edu/faculty/pollett/157b.12.05s/Lec14032005.pdf
- ^ Schweikardt, Nicole (2009), LIU, LING; ÖZSU, M. TAMER (eds.), "One-Pass Algorithm", Encyclopedia of Database Systems, Boston, MA: Springer US, pp. 1948–1949, doi:10.1007/978-0-387-39940-9_253, ISBN 978-0-387-39940-9, retrieved 2021-04-13