Dictionary of Algorithms and Data Structures

This is a dictionary of algorithms, algorithmic techniques, data structures, archetypical problems, and related definitions. Algorithms include common functions, such as Ackermann's function. Problems include traveling salesman and Byzantine generals. Some entries have links to implementations and more information. Index pages list entries by area, for instance, sorting, searching, or graphs, and by type, for example, algorithms or data structures. The two-level index has a total download 1/20 as big as this page.

Don't use this site to cheat. Teachers, contact me if I can help.

To define or correct terms, please contact Paul E. Black. We need help in automata theory, combinatorics, parallel or randomized algorithms, heuristics, and quantum computing. We do not include algorithms particular to business data processing, communications, operating systems or distributed algorithms, programming languages, AI, graphics, or numerical analysis: it is tough enough covering "general" algorithms and data structures. However, if you want to tackle one of these areas, we'll consider including them.

Some terms with a leading variable, such as n-way, m-dimensional, or p-branching, are under k-. You may find terms dealing with hardware, the computer industry, slang, etc., in the Free On-Line Dictionary Of Computing or in A Glossary of Computer Oriented Abbreviations and Acronyms.

To look up words or phrases, enter them in the box, then click the button. To look up algorithms by example, use AlgoVista.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ρ-approximation algorithm

A

absolute performance guarantee
abstract data type
(a,b)-tree
accepting state
Ackermann's function
active data structure
acyclic directed graph
acyclic graph
adaptive heap sort
adaptive Huffman encoding
adaptive k-d tree
adaptive sort
address-calculation sort
adjacency-list representation
adjacency-matrix representation
adjacent
admissible vertex
ADT
adversary
algorithm
algorithm B
algorithm BSTW
algorithm FGK
algorithmically solvable
algorithm V
all pairs shortest path
alphabet
Alpha Skip Search algorithm
alternating path
alternating Turing machine
alternation
American flag sort
amortized cost
ancestor
and
ANSI
antichain
antisymmetric
AP
Apostolico-Crochemore
Apostolico-Giancarlo algorithm
approximate string matching
approximation algorithm
arborescence
arc
arithmetic coding
array
array index
array merging
array search
articulation vertex
assignment problem
association list
associative
associative array
asymptotically tight bound
asymptotic bound
asymptotic equipartition property
asymptotic lower bound
asymptotic space complexity
asymptotic time complexity
asymptotic upper bound
augmenting path
automaton
average case
average-case cost
AVL tree

B

backtracking
bag
balance
balanced binary search tree
balanced binary tree
balanced k-way merge sort
balanced merge sort
balanced multiway merge
balanced multiway tree
balanced quicksort
balanced tree
balanced two-way merge sort
BANG file
Batcher sort
Baum Welch algorithm
BB alpha tree
BDD
BD-tree
Bellman-Ford algorithm
Benford's law
best case
best-case cost
best-first search
biconnected component
biconnected graph
bidirectional bubble sort
big-O notation
binary function
binary GCD algorithm
binary heap
binary insertion sort
binary knapsack problem
binary priority queue
binary relation
binary search
binary search tree
binary tree
binary tree representation of trees
bingo sort
binomial heap
binomial tree
bin packing problem
bin sort
bintree
bipartite graph
bipartite matching
bisector
bitonic sort
bit vector
Bk tree
block
block addressing index
blocking flow
block search
Bloom filter
blossom
bogosort
boolean
boolean expression
boolean function
border
bottleneck traveling salesman
bottom-up tree automaton
boundary-based representation
bounded error probability in polynomial time
bounded queue
bounded stack
Boyer-Moore
Boyer-Moore-Horspool
bozo sort
B+-tree
BPP
Bradford's law
branch and bound
branching
breadth-first search
Bresenham's algorithm
brick sort
bridge
British Museum algorithm
brute force
brute force string search
brute force string search with mismatches
B-spline
BSP-tree
B*-tree
B-tree
bubble sort
bucket
bucket array
bucketing method
bucket sort
bucket trie
buddy system
buddy tree
build-heap
busy beaver
BV-tree
Byzantine generals

C

cactus stack
Calculus of Communicating Systems
calendar queue
candidate consistency testing
candidate verification
canonical complexity class
capacitated facility location
capacity
capacity constraint
cartesian tree
cascade merge sort
Cayley-Purser
CCS
C curve
cell probe model
cell tree
cellular automaton
centroid
certificate
chain
chaining
child
Chinese postman problem
Chinese remainder theorem
Christofides algorithm
Christofides heuristic
chromatic index
chromatic number
Church-Turing thesis
circuit
circuit complexity
circuit value problem
circular list
circular queue
clique
clique problem
clustering
clustering free
coalesced hashing
coarsening
cocktail shaker sort
codeword
coding tree
collective recursion
collision
collision resolution scheme
Colussi
combination
comb sort
Communicating Sequential Processes
commutative
compact DAWG
comparison sort
competitive analysis
competitive ratio
complement
complete binary tree
complete graph
completely connected graph
complete tree
complexity
complexity class
computable
concave function
concurrent flow
concurrent read, concurrent write
concurrent read, exclusive write
configuration
confluently persistent data structure
conjunction
connected components
connected graph
coNP
constant function
container
continuous knapsack problem
Cook reduction
Cook's theorem
counting sort
covering
CRC
CRCW
CREW
critical path problem
CSP
CTL
cuckoo hashing
cut
cutting plane
cutting stock problem
cutting theorem
cut vertex
cycle
cyclic redundancy check

D

D-adjacent
DAG
DAG shortest paths
database
data structure
DAWG
decidable
decidable language
decimation
decision problem
decision tree
decomposable searching problem
degree
dense graph
depoissonization
depth
depth-first search
deque
derangement
descendant
deterministic
deterministic algorithm
deterministic finite automata string search
deterministic finite automaton
deterministic finite state machine
deterministic finite tree automaton
deterministic pushdown automaton
deterministic tree automaton
Deutsch-Jozsa algorithm
DFA
DFS
DFS forest
DFTA
diagonalization
diameter
dichotomic search
dictionary
diet
difference
digital search tree
digital tree
digraph
Dijkstra's algorithm
diminishing increment sort
dining philosophers
direct chaining hashing
directed acyclic graph
directed acyclic word graph
directed graph
directory
discrete interval encoding tree
discrete p-center
disjoint set
disjunction
distributional complexity
distribution sort
divide and conquer
divide and marriage before conquest
division method
domain
don't care
Doomsday rule
double-direction bubble sort
double-ended priority queue
double hashing
double left rotation
double metaphone
double right rotation
doubly-ended queue
doubly linked list
DPDA
Dragon curve
dual
dual linear program
Dutch national flag
dynamic
dynamic array
dynamic hashing
dynamic programming
dynamization transformation

E

edge
edge coloring
edge connectivity
edge crossing
edit distance
edit operation
edit script
efficiency
8 queens
element uniqueness
end-of-string
enfilade
ERCW
EREW
Euclidean algorithm
Euclidean distance
Euclidean Steiner tree
Euclidean traveling salesman problem
Euclid's algorithm
Euler cycle
Eulerian graph
Eulerian path
exact string matching
EXCELL
exchange sort
exclusive or
exclusive read, concurrent write
exclusive read, exclusive write
exhaustive search
existential state
expandable hashing
expander graph
exponential
extended binary tree
extended Euclid's algorithm
extended k-d tree
extendible hashing
external index
external memory algorithm
external memory data structure
external merge
external merge sort
external node
external quicksort
external radix sort
external sort
extrapolation search
extremal
extreme point

F

facility location
factor
factorial
fast fourier transform
fathoming
feasible region
feasible solution
feedback edge
Ferguson-Forcade algorithm
FFT
Fibonacci number
Fibonacci search
Fibonacci tree
Fibonnaci heap
FIFO
Find
find kth least element
finitary tree
finite Fourier transform
finite state automaton
finite state machine
finite state machine minimization
finite state transducer
first-come, first-served
first-in, first-out
fixed-grid method
flash sort
flow
flow conservation
flow function
flow network
Floyd-Warshall algorithm
Ford-Bellman
Ford-Fulkerson method
forest
forest editing problem
formal language
formal methods
formal verification
forward index
fractal
fractional knapsack problem
fractional solution
free edge
free list
free tree
free vertex
frequency count heuristic
full array
full binary tree
full inverted index
fully dynamic graph problem
fully persistent data structure
fully polynomial approximation scheme
function
functional data structure

G

Galil-Giancarlo
Galil-Seiferas
gamma function
GBD-tree
GCD
geometric optimization problem
global optimum
graph
graph coloring
graph concentration
graph drawing
graph isomorphism
graph partition
Gray code
greatest common divisor
greedy algorithm
greedy heuristic
grid drawing
grid file
Grover's algorithm

H

halting problem
Hamiltonian cycle
Hamming distance
hash function
hash heap
hash table
hash table delete
Hausdorff distance
hB-tree
head
heap
heapify
heap property
heapsort
heaviest common subsequence
height
height-balanced binary search tree
height-balanced tree
Herter-Heighway Dragon
heuristic
hidden Markov model
Hilbert curve
histogram sort
HMM
homeomorphic
horizontal visibility map
Horner's rule
Horspool
Huffman encoding
hybrid algorithm
hyperedge
hypergraph

I

ID
ideal merge
implication
implies
in-branching
inclusion-exclusion principle
inclusive or
incompressible string
in-degree
independent set
index file
information theoretic bound
in-order traversal
in-place sort
insertion sort
instantaneous description
integer linear program
integer multi-commodity flow
integer polyhedron
interactive proof system
interior-based representation
internal node
internal sort
interpolation search
interpolation-sequential search
interpolation sort
intersection
interval tree
intractable
introsort
introspective sort
inverse Ackermann function
inverted file index
inverted index
irreflexive
isomorphic
iteration

J

Jaro-Winkler
Johnson's algorithm
Johnson-Trotter
j sort
jump search

K

Karmarkar's algorithm
Karnaugh map
Karp-Rabin
Karp reduction
k-ary heap
k-ary Huffman encoding
k-ary tree
k-clustering
k-coloring
k-connected graph
k-d-B-tree
k-dimensional
K-dominant match
k-d tree
key
KMP
KmpSkip Search
knapsack problem
knight's tour
Knuth-Morris-Pratt algorithm
Königsberg bridges problem
Kolmogorov complexity
Kraft's inequality
Kripke structure
Kruskal's algorithm
kth order Fibonacci numbers
kth shortest path
kth smallest element
KV diagram
k-way merge
k-way merge sort
k-way tree

L

labeled graph
language
last-in, first-out
Las Vegas algorithm
lattice
layered graph
LCM
LCS
leaf
least common multiple
leftist tree
left rotation
Lempel-Ziv-Welch
level-order traversal
Levenshtein distance
lexicographical order
LIFO
linear
linear congruential generator
linear hash
linear insertion sort
linear order
linear probing
linear probing sort
linear product
linear program
linear quadtree
linear search
link
linked list
list
list contraction
little-o notation
Lm distance
load factor
local alignment
local optimum
locator
logarithmic
longest common subsequence
longest common substring
Lotka's law
lower bound
lower triangular matrix
lowest common ancestor
l-reduction
lucky sort
LZW compression

M

Malhotra-Kumar-Maheshwari blocking flow
Manhattan distance
many-one reduction
Markov chain
Marlena
Master theorem
matched edge
matched vertex
matching
matrix
matrix-chain multiplication problem
max
max-heap property
maximal independent set
maximally connected component
Maximal Shift
maximum bipartite matching
maximum-flow problem
MAX-SNP
MBB
Mealy machine
mean
median
meld
memoization
merge
merge sort
meromorphic function
metaheuristic
metaphone
midrange
Miller-Rabin
min
min-heap property
minimal antichain decomposition
minimal perfect hashing
minimum bounding box
minimum cut
minimum path cover
minimum spanning tree
minimum vertex cut
mixed integer linear program
mode
model checking
model of computation
moderately exponential
MODIFIND
monotone priority queue
monotonically decreasing
monotonically increasing
Monte Carlo algorithm
Moore machine
Morris-Pratt
move
move-to-front heuristic
move-to-root heuristic
MST
multi-commodity flow
multigraph
multilayer grid file
multiplication method
multiprefix
multiprocessor model
multi-set
multi suffix tree
multiway decision
multiway merge
multiway search tree
multiway tree

N

naive string search
nand
n-ary function
NC
NC many-one reducibility
nearest neighbor
negation
network flow
network flow problem
next state
NFA
NFTA
NIST
node
nonbalanced merge
nonbalanced merge sort
nondeterministic
nondeterministic algorithm
nondeterministic finite automaton
nondeterministic finite state machine
nondeterministic finite tree automaton
nondeterministic polynomial time
nondeterministic tree automaton
nondeterministic Turing machine
nonterminal node
nor
not
Not So Naive
NP
NP-complete
NP-complete language
NP-hard
n queens
nullary function
null tree
NYSIIS

O

O
OBDD
objective function
occurrence
octree
off-line algorithm
offset
omega
omicron
one-dimensional
on-line algorithm
open addressing
optimal
optimal cost
optimal hashing
optimal merge
optimal mismatch
optimal polygon triangulation problem
optimal polyphase merge
optimal polyphase merge sort
optimal solution
optimal triangulation problem
optimal value
optimization problem
or
oracle set
oracle tape
oracle Turing machine
order
ordered array
ordered binary decision diagram
ordered linked list
ordered tree
order preserving minimal perfect hashing
oriented acyclic graph
oriented graph
oriented tree
orthogonal drawing
orthogonal lists
orthogonally convex rectilinear polygon
oscillating merge sort
out-branching
out-degree
overlapping subproblems

P

P
packing
padding argument
pagoda
pairing heap
PAM
parallel computation thesis
parallel prefix computation
parallel random-access machine
parametric searching
parent
partial function
partially decidable problem
partially dynamic graph problem
partially ordered set
partially persistent data structure
partial order
partial recursive function
partition
passive data structure
path
path cover
path system problem
Patricia tree
pattern
pattern element
P-complete
PCP
PDA
Peano curve
Pearson's hash
perfect binary tree
perfect hashing
perfect k-ary tree
perfect matching
perfect shuffle
performance guarantee
performance ratio
permutation
persistent data structure
pile
pipelined divide and conquer
planar graph
planarization
planar straight-line graph
PLOP-hashing
point access method
pointer jumping
pointer machine
poissonization
polychotomy
polyhedron
polylogarithmic
polynomial
polynomial approximation scheme
polynomial hierarchy
polynomial time
polynomial-time Church-Turing thesis
polynomial-time reduction
polyphase merge
polyphase merge sort
polytope
poset
postfix traversal
Post machine
postman's sort
postorder traversal
Post's correspondence problem
potential function
PRAM
predicate
prefix
prefix code
prefix computation
prefix sums
prefix traversal
preorder traversal
primary clustering
primitive recursive
Prim's algorithm
principle of optimality
priority queue
prisoner's dilemma
PRNG
probabilistic algorithm
probabilistically checkable proof
probabilistic Turing machine
probe sequence
procedure
process algebra
proper
proper binary tree
proper coloring
proper subset
property list
prune and search
pseudo-random number generator
PTAS
pth order Fibonacci numbers
P-tree
purely functional language
pushdown automaton
pushdown transducer
p-way merge sort

Q

qm sort
q sort
quadratic probing
quadtree
quadtree complexity theorem
quad trie
quantum computation
queue
quick search
quicksort

R

Rabin-Karp
radix quicksort
radix sort
ragged matrix
Raita
random access machine
randomization
randomized algorithm
randomized binary search tree
randomized complexity
randomized polynomial time
randomized rounding
randomized search tree
Randomized-Select
random number generator
random sampling
range
range sort
rank
Ratcliff/Obershelp pattern recognition
RBST
reachable
rebalance
recognizer
rectangular matrix
rectilinear
rectilinear Steiner tree
recurrence equations
recurrence relation
recursion
recursion termination
recursion tree
recursive
recursive data structure
recursive doubling
recursive language
recursively enumerable language
recursively solvable
red-black tree
reduced basis
reduced digraph
reduced ordered binary decision diagram
reduction
reflexive
regular decomposition
rehashing
relation
relational structure
relative performance guarantee
relaxation
relaxed balance
rescalable
restricted universe sort
result cache
Reverse Colussi
Reverse Factor
R-file
Rice's method
right rotation
right-threaded tree
RNG
ROBDD
root
root balance
rooted tree
rotate left
rotate right
rotation
rough graph
RP
R+-tree
R*-tree
R-tree
run time

S

saguaro stack
SAM
saturated edge
SBB tree
scan
scapegoat tree
search
search tree
search tree property
secant search
secondary clustering
segment
Select
select and partition
selection problem
selection sort
select kth element
select mode
self-loop
self-organizing heuristic
self-organizing list
self-organizing sequential search
semidefinite programming
separate chaining hashing
separation theorem
sequential search
set
set cover
set packing
shadow heap
shadow merge
shadow merge insert
shaker sort
Shannon-Fano coding
shared memory
Shell sort
Shift-Or
Shor's algorithm
shortcutting
shortest common supersequence
shortest path
shortest spanning tree
shuffle
sibling
Sierpinski curve
Sierpinski triangle
sieve of Eratosthenes
sift up
signature
Simon's algorithm
simple merge
simple path
simple uniform hashing
simplex
simulated annealing
simulation theorem
single-destination shortest-path problem
single-pair shortest-path problem
single program multiple data
single-source shortest-path problem
singly linked list
singularity analysis
sink
sinking sort
skd-tree
skew symmetry
skip list
Skip Search
slope selection
Smith algorithm
Smith-Waterman algorithm
smoothsort
solvable
sort
sorted array
sorted list
sort in place
sort merge
soundex
source
space-constructible function
spaghetti stack
spanning tree
sparse graph
sparse matrix
sparsification
sparsity
spatial access method
spectral test
splay tree
SPMD
square matrix
square root
SST
stable
stack
stack tree
star-shaped polygon
start state
state
state machine
state transition
static
static Huffman encoding
s-t cut
st-digraph
Steiner minimum tree
Steiner point
Steiner ratio
Steiner tree
Steiner vertex
Steinhaus-Johnson-Trotter
Stirling's approximation
Stirling's formula
stooge sort
straight-line drawing
strictly decreasing
strictly increasing
strictly lower triangular matrix
strictly upper triangular matrix
string
string editing problem
string matching
string matching on ordered alphabets
string matching with errors
string matching with mismatches
string searching
string similarity search
strip packing
strongly connected component
strongly connected graph
strongly NP-hard
subadditive ergodic theorem
subgraph
subgraph isomorphism
subsequence
subset
substring
subtree
suffix
suffix array
suffix automaton
suffix tree
superimposed code
superset
supersink
supersource
symmetric
symmetrically linked list
symmetric binary B-tree
symmetric set difference
symmetry breaking

T

tail
tail recursion
target
temporal logic
terminal
terminal node
ternary search tree
text
text searching
theta
threaded binary tree
threaded tree
three-dimensional
three-way merge sort
three-way radix quicksort
time-constructible function
time/space complexity
top-down radix sort
top-down tree automaton
topological order
topological sort
topology tree
total function
totally decidable language
totally decidable problem
totally undecidable problem
total order
tour
tournament
towers of Hanoi
tractable
transducer
transition
transition function
transitive
transitive closure
transitive reduction
transpose sequential search
traveling salesman
treap
tree
tree automaton
tree contraction
tree editing problem
tree sort
tree traversal
triangle inequality
triconnected graph
trie
trinary function
tripartition
TSP
TST
Turbo-BM
Turbo Reverse Factor
Turing machine
Turing reduction
Turing transducer
twin grid file
two-dimensional
two-level grid file
2-3-4 tree
2-3 tree
Two Way algorithm
two-way linked list
two-way merge sort

U

UKP
unary function
unbounded knapsack problem
uncomputable function
uncomputable problem
undecidable
undecidable language
undecidable problem
undirected graph
uniform circuit complexity
uniform circuit family
uniform hashing
uniform matrix
union
union of automata
universal hashing
universal state
universal Turing machine
universe
UnShuffle sort
unsolvable problem
unsorted list
upper triangular matrix

V

Van Emde-Boas priority queue
vehicle routing problem
Veitch diagram
Venn diagram
vertex
vertex coloring
vertex connectivity
vertex cover
vertex set
vertical visibility map
vertices
virtual hashing
visibility map
visible
Viterbi algorithm
VRP

W

walk
weak-heap
weak-heap sort
weight-balanced tree
weighted, directed graph
weighted graph
window
witness
work
work-depth model
work-efficient
work-preserving
worst case
worst-case cost
worst-case minimum access

X

xor

Y

Yule distribution

Z

Zeller's congruence
0-ary function
0-1 knapsack problem
Zhu-Takaoka
Zipfian distribution
Zipf's law
ZPP

We thank those who contributed definitions as well as many others who offered suggestions and corrections.

Here are some references on algorithms and data structures.

[CLR90] Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, MIT Press, 1990.

[HS83] Fundamentals of Data Structures, Ellis Horowitz and Sartaj Sahni, Computer Science Press, 1983.

Algorithms in C, Robert Sedgewick, Addison-Wesley, 1997.

Handbook of Algorithms and Data Structures -- in Pascal and C, G. Gonnet and R. Baeza-Yates, Addison-Wesley, 1991.

The Stony Brook Algorithm Repository, which has algorithms organized by type, succinct, illustrated definitions, and ratings of sites with implementations.

Data Structures and Algorithms is a wonderful site with illustrations, explanations, analysis, and code taking the student from arrays and lists through trees, graphs, and intractable problems.

Bibliography

[AS98] Pankaj K. Agarwal and Micha Sharir, Efficient Algorithms for Geometric Optimization, ACM Computing Surveys, 30(4):412-458, December 1998.

[ATCH99] Algorithms and Theory of Computation Handbook, Mikhail J. Atallah, ed., CRC Press LLC, 1999.

[GCG92] P. Gupta, P. P. Chakrabarti, and S. Ghose, The Towers of Hanoi: Generalizations, Specializations, and Algorithms, Intern. J. Computer Math., 46:149-161, Gordon and Breach Science Publishers S.A., 1992.

[GG98] Volker Gaede and Oliver Günther, Multidimensional Access Methods, ACM Computing Surveys, 30(2):170-231, June 1998.

[Hirv01] Mika Hirvensalo, Quantum Computing, Springer-Verlag, 2001.

[Knuth98] Donald E. Knuth, The Art of Computer Programming, Addison-Wesley, volumes 1, 2, and 3, 3rd edition, 1998.

[Leda98] LEDA (accessed 4 December 2002).

[Stand98] Thomas Standish, Data Structures in Java, Addison-Wesley, 1998.

[Sund98] Daniel M. Sunday, A Very Fast Substring Search Algorithm, Communications of the ACM, 33(8):132-142, August 1998.

[Vitt01] Jeffrey Scott Vitter, External Memory Algorithms and Data Structures: Dealing with Massive Data, ACM Computing Surveys, 33(2):209-271, June 2001.

[Wier98] Roel Wieringa, A Survey of Structured and Object-Oriented Software Specification Methods and Techniques, ACM Computing Surveys, 30(4):459-527, December 1998.

The FOLDOC style guide.

This dictionary is an example for Problem Set 4 of Software Engineering of Innovative Web Services.

Robots, please index all term pages, including spelling variants.

Viewable With Any Browser

With JavaScript, below is a link to machine translation. We provide the link because it may be of interest in some cases. NIST does not necessarily endorse the results and has not checked the translation for accuracy. Further, NIST does not endorse commercial products advertised or available on this site.

Created Fri Sep 4 16:39:23 1998
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Fri Apr 25 15:08:23 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/

Hosted in part by the Software Quality group of the Software Diagnostics and Conformance Testing Division in the Information Technology Laboratory.
NIST is an agency of the U.S. Commerce Department's Technology Administration


DADS Index

Dictionary of Algorithms and Data Structures

This introduction is brief on purpose. Here is more explanation and a NEW search form.

  • α - amortized cost
  • ancestor - balanced binary tree
  • balanced k-way merge sort - bintree
  • bipartite graph - brute force string search with mismatches
  • B-spline - Chinese postman problem
  • Chinese remainder theorem - complexity class
  • computable - decidable
  • decidable language - direct chaining hashing
  • directed acyclic graph - edit distance
  • edit operation - external quicksort
  • external radix sort - Ford-Fulkerson method
  • forest - greedy heuristic
  • grid drawing - implies
  • in-branching - Karmarkar's algorithm
  • Karnaugh map - LCS
  • leaf - lucky sort
  • LZW compression - minimum cut
  • minimum path cover - network flow
  • network flow problem - on-line algorithm
  • open addressing - PAM
  • parallel computation thesis - planar straight-line graph
  • PLOP-hashing - PRNG
  • probabilistic algorithm - randomized binary search tree
  • randomized complexity - relational structure
  • relative performance guarantee - Select
  • select and partition - simple path
  • simple uniform hashing - SPMD
  • square matrix - strongly connected component
  • strongly connected graph - time/space complexity
  • top-down radix sort - Turing machine
  • Turing reduction - vertex coloring
  • vertex connectivity - ZPP

This page's URL is http://www.nist.gov/dads/terms2.html

To the National Institute of Standards and Technology home page.


Terms and Definitions Index by Area

Index by Area

of

Algorithms and Data Structures

This is the web page of terms with definitions organized by area. That is, whether the term deals with graphs, trees, sorting, etc. We also list all entries with links to implementations and entries by type, for instance, whether it is an algorithm, a definition, a problem, or a data structure.

We need people to contribute. If terms are missing or you can add or correct definitions, please contact me by email (paul.black@nist.gov) or by other means.

Run on Wed Jun 11 14:27:39 2003

Areas

  • Automata and State Machines
  • Basic
  • Combinatorics
  • Cryptography and Compression
  • External Memory Algorithms and Data Structures
  • Computational Geometry
  • Graphs
  • Numeric Computation
  • Parallel
  • Quantum Computation
  • Searching
  • Sorting
  • Theory
  • Trees
  • Verification and Formal Methods
  • Entries with No Area

Automata and State Machines

  • accepting state [D]
  • alphabet [D]
  • alternating Turing machine [D]
  • automaton [D]
  • bottom-up tree automaton [D]
  • busy beaver [P]
  • cellular automaton [D]
  • configuration [D]
  • deterministic finite automaton [D]
  • deterministic finite state machine [D]
  • deterministic finite tree automaton [D]
  • deterministic pushdown automaton [D]
  • deterministic tree automaton [D]
  • DFA [D]
  • DFTA [D]
  • DPDA [D]
  • existential state [D]
  • finite state automaton [D]
  • finite state machine [D]
  • finite state machine minimization [P]
  • finite state transducer [D]
  • ID [D]
  • instantaneous description [D]
  • Kripke structure [D]
  • Mealy machine [D]
  • Moore machine [D]
  • move [D]
  • next state [D]
  • NFA [D]
  • NFTA [D]
  • nondeterministic finite automaton [D]
  • nondeterministic finite state machine [D]
  • nondeterministic finite tree automaton [D]
  • nondeterministic tree automaton [D]
  • nondeterministic Turing machine [D]
  • oracle set [D]
  • oracle tape [D]
  • oracle Turing machine [D]
  • PDA [D]
  • probabilistic Turing machine [D]
  • pushdown automaton [D]
  • recognizer [D]
  • start state [D]
  • state [D]
  • state machine [D]
  • state transition [D]
  • suffix automaton [D]
  • top-down tree automaton [D]
  • transducer [D]
  • transition [D]
  • transition function [D]
  • tree automaton [D]
  • Turing machine [D]
  • union of automata [A]
  • universal state [D]
  • universal Turing machine [D]

Basic

  • alpha [A]
  • omega [D]
  • upper-case Omega [D]
  • similar to [D]
  • upper-case Theta [D]
  • abstract data type [D]
  • Ackermann's function [A]
  • active data structure [S]
  • ADT [D]
  • algorithm [D]
  • and [D]
  • ANSI [D]
  • antichain [D]
  • antisymmetric [D]
  • array [S]
  • array index [D]
  • array merging [A]
  • associative [D]
  • associative array [S]
  • average case [D]
  • backtracking [T]
  • bag [D]
  • best case [D]
  • big-O notation [D]
  • binary function [D]
  • binary relation [D]
  • bit vector [S]
  • boolean [D]
  • boolean expression [D]
  • boolean function [D]
  • bounded queue [S]
  • bounded stack [S]
  • Bradford's law [D]
  • brute force [T]
  • bucket [D]
  • buddy system [A]
  • Byzantine generals [P]
  • chain [D]
  • circuit [D]
  • circuit complexity [D]
  • circuit value problem [D]
  • circular list [S]
  • circular queue [S]
  • collective recursion [T]
  • commutative [D]
  • complement [D]
  • confluently persistent data structure [D]
  • conjunction [D]
  • constant function [D]
  • data structure [S]
  • deque [S]
  • deterministic algorithm [T]
  • difference [D]
  • disjoint set [D]
  • disjunction [D]
  • divide and conquer [T]
  • divide and marriage before conquest [T]
  • domain [D]
  • Doomsday rule [A]
  • double metaphone [A]
  • doubly-ended queue [S]
  • doubly linked list [S]
  • dynamic array [S]
  • dynamization transformation [T]
  • efficiency [D]
  • end-of-string [D]
  • exclusive or [D]
  • FIFO [S]
  • first-come, first-served [D]
  • first-in, first-out [D]
  • full array [D]
  • fully persistent data structure [D]
  • function [D]
  • functional data structure [S]
  • head [D]
  • heuristic [T]
  • hybrid algorithm [D]
  • implication [D]
  • implies [D]
  • inclusion-exclusion principle [D]
  • inclusive or [D]
  • intersection [D]
  • inverse Ackermann function [A]
  • irreflexive [D]
  • iteration [T]
  • Karnaugh map [A]
  • k-dimensional [D]
  • key [D]
  • KV diagram [A]
  • last-in, first-out [D]
  • lattice [D]
  • LIFO [S]
  • linear order [D]
  • linear product [D]
  • link [D]
  • linked list [S]
  • list [S]
  • little-o notation [D]
  • Lotka's law [D]
  • lower triangular matrix [S]
  • Marlena [D]
  • matrix [S]
  • max [D]
  • memoization [T]
  • min [D]
  • monotonically decreasing [D]
  • monotonically increasing [D]
  • multi-set [D]
  • multiway decision [D]
  • nand [D]
  • n-ary function [D]
  • negation [D]
  • NIST [D]
  • node [D]
  • nondeterministic algorithm [T]
  • nor [D]
  • not [D]
  • nullary function [D]
  • O [D]
  • omega [D]
  • omicron [D]
  • one-dimensional [D]
  • optimal [D]
  • or [D]
  • order [D]
  • ordered linked list [S]
  • partially ordered set [D]
  • partially persistent data structure [D]
  • partial order [D]
  • passive data structure [S]
  • persistent data structure [D]
  • polytope [D]
  • poset [D]
  • predicate [D]
  • priority queue [S]
  • probabilistic algorithm [D]
  • procedure [D]
  • proper [D]
  • proper subset [D]
  • queue [S]
  • ragged matrix [S]
  • randomization [T]
  • randomized algorithm [D]
  • range [D]
  • rectangular matrix [S]
  • recursion [T]
  • recursion termination [D]
  • recursive [S]
  • recursive data structure [D]
  • reduced basis [D]
  • reflexive [D]
  • relation [D]
  • set [D]
  • signature [D]
  • singly linked list [S]
  • sparse matrix [S]
  • square matrix [S]
  • stable [D]
  • stack [S]
  • stack tree [D]
  • strictly decreasing [D]
  • strictly increasing [D]
  • strictly lower triangular matrix [S]
  • strictly upper triangular matrix [S]
  • string [S]
  • subset [D]
  • superset [D]
  • symmetric [D]
  • symmetrically linked list [S]
  • symmetric set difference [D]
  • tail [D]
  • tail recursion [T]
  • text [D]
  • theta [D]
  • three-dimensional [D]
  • topological order [D]
  • total order [D]
  • transitive [D]
  • trinary function [D]
  • two-dimensional [D]
  • two-way linked list [S]
  • unary function [D]
  • undecidable [D]
  • uniform matrix [S]
  • union [D]
  • universe [D]
  • upper triangular matrix [S]
  • Veitch diagram [A]
  • xor [D]
  • Zeller's congruence [A]
  • 0-ary function [D]

Combinatorics

  • binary knapsack problem [P]
  • bin packing problem [P]
  • combination [A]
  • continuous knapsack problem [P]
  • covering [D]
  • cutting stock problem [P]
  • dual linear program [D]
  • dynamic [D]
  • dynamic programming [T]
  • edit distance [D]
  • edit operation [D]
  • edit script [D]
  • 8 queens [P]
  • forest editing problem [D]
  • fractional knapsack problem [P]
  • global optimum [D]
  • greedy algorithm [T]
  • greedy heuristic [T]
  • integer linear program [D]
  • Johnson-Trotter [A]
  • K-dominant match [D]
  • knapsack problem [P]
  • knight's tour [P]
  • Las Vegas algorithm [D]
  • Levenshtein distance [D]
  • linear program [D]
  • local optimum [D]
  • Master theorem [D]
  • matrix-chain multiplication problem [P]
  • mixed integer linear program [D]
  • Monte Carlo algorithm [D]
  • n queens [P]
  • packing [D]
  • partition [D]
  • perfect shuffle [A]
  • permutation [A]
  • principle of optimality [D]
  • semidefinite programming [D]
  • set cover [P]
  • set packing [P]
  • shortest common supersequence [D]
  • shuffle [A]
  • static [D]
  • Steinhaus-Johnson-Trotter [A]
  • string editing problem [D]
  • strip packing [P]
  • towers of Hanoi [P]
  • transitive closure [D]
  • tree editing problem [D]
  • tripartition [A]
  • UKP [P]
  • unbounded knapsack problem [P]
  • witness [D]
  • 0-1 knapsack problem [P]

Cryptography and Compression

  • adaptive Huffman encoding [A]
  • algorithm BSTW [A]
  • algorithm FGK [A]
  • algorithm V [A]
  • arithmetic coding [A]
  • Cayley-Purser [A]
  • codeword [D]
  • CRC [A]
  • cyclic redundancy check [A]
  • Gray code [D]
  • Hamming distance [D]
  • Huffman encoding [A]
  • k-ary Huffman encoding [A]
  • Lempel-Ziv-Welch [A]
  • LZW compression [A]
  • prefix code [D]
  • PRNG [A]
  • pseudo-random number generator [A]
  • Shannon-Fano coding [A]
  • static Huffman encoding [A]
  • superimposed code [D]
  • Yule distribution [D]
  • Zipfian distribution [D]
  • Zipf's law [D]

External Memory Algorithms and Data Structures

  • external memory algorithm [A]
  • external memory data structure [S]

Computational Geometry

  • bintree [S]
  • bisector [D]
  • boundary-based representation [D]
  • Bresenham's algorithm [A]
  • B-spline [A]
  • bucketing method [D]
  • capacitated facility location [P]
  • concave function [D]
  • cutting plane [D]
  • cutting theorem [D]
  • decimation [T]
  • decomposable searching problem [D]
  • discrete p-center [P]
  • Euclidean distance [D]
  • expander graph [D]
  • extreme point [D]
  • facility location [P]
  • fixed-grid method [D]
  • geometric optimization problem [D]
  • Hausdorff distance [D]
  • horizontal visibility map [D]
  • integer polyhedron [D]
  • interior-based representation [D]
  • Lm distance [D]
  • Manhattan distance [D]
  • nearest neighbor [P]
  • optimal polygon triangulation problem [P]
  • optimal triangulation problem [P]
  • orthogonally convex rectilinear polygon [D]
  • parametric searching [T]
  • polyhedron [D]
  • prune and search [T]
  • quadtree complexity theorem [D]
  • regular decomposition [D]
  • Sierpinski triangle [D]
  • slope selection [P]
  • star-shaped polygon [D]
  • vertical visibility map [D]
  • visibility map [D]
  • visible [D]

Graphs

  • acyclic directed graph [D]
  • acyclic graph [D]
  • adjacency-list representation [S]
  • adjacency-matrix representation [S]
  • adjacent [D]
  • admissible vertex [D]
  • all pairs shortest path [P]
  • alternating path [D]
  • arc [D]
  • articulation vertex [D]
  • assignment problem [P]
  • augmenting path [D]
  • Baum Welch algorithm [A]
  • Bellman-Ford algorithm [A]
  • best-first search [A]
  • biconnected component [D]
  • biconnected graph [D]
  • bipartite graph [D]
  • bipartite matching [D]
  • blocking flow [D]
  • blossom [D]
  • bottleneck traveling salesman [P]
  • branching [D]
  • breadth-first search [A]
  • bridge [D]
  • capacity [D]
  • capacity constraint [D]
  • certificate [D]
  • Chinese postman problem [P]
  • Christofides algorithm [A]
  • Christofides heuristic [A]
  • chromatic index [D]
  • chromatic number [D]
  • clique [D]
  • clique problem [P]
  • complete graph [D]
  • completely connected graph [D]
  • concurrent flow [D]
  • connected components [D]
  • connected graph [D]
  • critical path problem [P]
  • cut [D]
  • cut vertex [D]
  • cycle [D]
  • DAG [D]
  • DAG shortest paths [A]
  • degree [D]
  • dense graph [D]
  • depth-first search [A]
  • DFS [A]
  • DFS forest [D]
  • diameter [D]
  • digraph [S]
  • Dijkstra's algorithm [A]
  • directed acyclic graph [D]
  • directed graph [S]
  • dual [D]
  • edge [D]
  • edge coloring [D]
  • edge connectivity [D]
  • edge crossing [D]
  • Euclidean Steiner tree [D]
  • Euler cycle [D]
  • Eulerian graph [D]
  • Eulerian path [D]
  • feedback edge [D]
  • flow [D]
  • flow conservation [D]
  • flow function [D]
  • flow network [D]
  • Floyd-Warshall algorithm [A]
  • Ford-Bellman [A]
  • Ford-Fulkerson method [A]
  • free edge [D]
  • free vertex [D]
  • fully dynamic graph problem [D]
  • graph [S]
  • graph coloring [D]
  • graph drawing [P]
  • graph isomorphism [P]
  • graph partition [D]
  • grid drawing [D]
  • Hamiltonian cycle [D]
  • hidden Markov model [S]
  • HMM [S]
  • homeomorphic [D]
  • hyperedge [D]
  • hypergraph [S]
  • in-branching [D]
  • in-degree [D]
  • independent set [D]
  • integer multi-commodity flow [D]
  • isomorphic [D]
  • Johnson's algorithm [A]
  • k-coloring [D]
  • k-connected graph [D]
  • Königsberg bridges problem [D]
  • Kruskal's algorithm [A]
  • kth shortest path [P]
  • labeled graph [D]
  • layered graph [D]
  • Malhotra-Kumar-Maheshwari blocking flow [A]
  • Markov chain [S]
  • matched edge [D]
  • matched vertex [D]
  • matching [D]
  • maximal independent set [P]
  • maximally connected component [D]
  • maximum bipartite matching [D]
  • maximum-flow problem [P]
  • minimum cut [D]
  • minimum spanning tree [D]
  • minimum vertex cut [D]
  • MST [D]
  • multi-commodity flow [D]
  • multigraph [S]
  • network flow [D]
  • network flow problem [P]
  • oriented acyclic graph [D]
  • oriented graph [S]
  • orthogonal drawing [D]
  • out-branching [D]
  • out-degree [D]
  • partially dynamic graph problem [D]
  • path [D]
  • perfect matching [D]
  • planar graph [D]
  • planarization [D]
  • planar straight-line graph [D]
  • Prim's algorithm [A]
  • proper coloring [D]
  • reachable [D]
  • rectilinear [D]
  • rectilinear Steiner tree [D]
  • reduced digraph [D]
  • rough graph [D]
  • saturated edge [D]
  • self-loop [D]
  • shortest path [P]
  • shortest spanning tree [D]
  • simple path [D]
  • single-destination shortest-path problem [P]
  • single-pair shortest-path problem [P]
  • single-source shortest-path problem [P]
  • sink [D]
  • skew symmetry [D]
  • source [D]
  • sparse graph [D]
  • sparsification [T]
  • SST [D]
  • s-t cut [D]
  • st-digraph [S]
  • Steiner minimum tree [D]
  • Steiner point [D]
  • Steiner ratio [D]
  • Steiner tree [D]
  • Steiner vertex [D]
  • straight-line drawing [D]
  • strongly connected component [D]
  • strongly connected graph [D]
  • subgraph [D]
  • subgraph isomorphism [P]
  • supersink [D]
  • supersource [D]
  • target [D]
  • terminal [D]
  • tour [D]
  • transitive reduction [D]
  • traveling salesman [P]
  • triangle inequality [D]
  • triconnected graph [D]
  • TSP [P]
  • undirected graph [S]
  • vehicle routing problem [P]
  • vertex [D]
  • vertex coloring [D]
  • vertex connectivity [D]
  • vertex cover [P]
  • vertex set [D]
  • vertices [D]
  • Viterbi algorithm [A]
  • VRP [P]
  • walk [D]
  • weighted, directed graph [D]
  • weighted graph [D]

Numeric Computation

  • algorithm B [A]
  • Benford's law [D]
  • binary GCD algorithm [A]
  • centroid [D]
  • Chinese remainder theorem [A]
  • Euclidean algorithm [A]
  • Euclid's algorithm [A]
  • extended Euclid's algorithm [A]
  • factorial [D]
  • fast fourier transform [A]
  • Ferguson-Forcade algorithm [A]
  • FFT [A]
  • Fibonacci number [D]
  • finite Fourier transform [A]
  • gamma function [D]
  • GCD [A]
  • greatest common divisor [A]
  • Horner's rule [A]
  • kth order Fibonacci numbers [D]
  • LCM [D]
  • least common multiple [D]
  • linear congruential generator [A]
  • mean [D]
  • median [D]
  • midrange [D]
  • Miller-Rabin [A]
  • mode [D]
  • pth order Fibonacci numbers [D]
  • random number generator [A]
  • RNG [A]
  • sieve of Eratosthenes [A]
  • square root [A]
  • Stirling's approximation [D]
  • Stirling's formula [D]

Parallel

  • Batcher sort [A]
  • bitonic sort [A]
  • concurrent read, concurrent write [D]
  • concurrent read, exclusive write [D]
  • CRCW [D]
  • CREW [D]
  • ERCW [D]
  • EREW [D]
  • exclusive read, concurrent write [D]
  • exclusive read, exclusive write [D]
  • graph concentration [D]
  • list contraction [D]
  • multiprefix [A]
  • multiprocessor model [D]
  • parallel computation thesis [D]
  • parallel prefix computation [A]
  • parallel random-access machine [D]
  • path system problem [P]
  • pipelined divide and conquer [T]
  • pointer jumping [D]
  • PRAM [D]
  • prefix sums [A]
  • random sampling [T]
  • recursive doubling [D]
  • scan [A]
  • shortcutting [D]
  • single program multiple data [D]
  • SPMD [D]
  • symmetry breaking [T]
  • tournament [A]
  • tree contraction [D]
  • work [D]
  • work-depth model [D]
  • work-efficient [D]
  • work-preserving [D]

Quantum Computation

  • Deutsch-Jozsa algorithm [A]
  • Grover's algorithm [A]
  • quantum computation [D]
  • Shor's algorithm [A]

Searching

  • adaptive k-d tree [S]
  • Alpha Skip Search algorithm [A]
  • Apostolico-Crochemore [A]
  • Apostolico-Giancarlo algorithm [A]
  • approximate string matching [A]
  • array search [P]
  • association list [S]
  • BANG file [S]
  • BD-tree [S]
  • binary search [A]
  • block [D]
  • block addressing index [S]
  • block search [A]
  • Bloom filter [A]
  • border [D]
  • Boyer-Moore [A]
  • Boyer-Moore-Horspool [A]
  • branch and bound [A]
  • brute force string search [A]
  • brute force string search with mismatches [A]
  • BSP-tree [S]
  • bucket array [S]
  • buddy tree [S]
  • BV-tree [S]
  • calendar queue [S]
  • candidate consistency testing [D]
  • candidate verification [D]
  • cell tree [S]
  • chaining [S]
  • clustering [D]
  • clustering free [D]
  • coalesced hashing [S]
  • collision [D]
  • collision resolution scheme [A]
  • Colussi [A]
  • container [S]
  • cuckoo hashing [A]
  • D-adjacent [D]
  • database [S]
  • deterministic finite automata string search [A]
  • dichotomic search [D]
  • dictionary [S]
  • direct chaining hashing [S]
  • directory [S]
  • don't care [D]
  • double hashing [A]
  • dynamic hashing [S]
  • exact string matching [P]
  • EXCELL [S]
  • exhaustive search [T]
  • extended k-d tree [S]
  • extendible hashing [S]
  • external index [S]
  • extrapolation search [A]
  • extremal [D]
  • factor [D]
  • fathoming [T]
  • Fibonacci search [A]
  • Find [A]
  • find kth least element [P]
  • forward index [S]
  • frequency count heuristic [A]
  • full inverted index [S]
  • Galil-Giancarlo [A]
  • Galil-Seiferas [A]
  • grid file [S]
  • hash function [A]
  • hash heap [S]
  • hash table [S]
  • hash table delete [A]
  • hB-tree [S]
  • heaviest common subsequence [P]
  • Horspool [A]
  • index file [S]
  • interpolation search [A]
  • interpolation-sequential search [A]
  • inverted file index [S]
  • inverted index [S]
  • Jaro-Winkler [A]
  • jump search [A]
  • Karp-Rabin [A]
  • k-d-B-tree [S]
  • k-d tree [S]
  • KMP [A]
  • KmpSkip Search [A]
  • Knuth-Morris-Pratt algorithm [A]
  • kth smallest element [P]
  • LCS [P]
  • lexicographical order [D]
  • linear hash [A]
  • linear probing [S]
  • linear quadtree [S]
  • linear search [A]
  • load factor [D]
  • local alignment [D]
  • locator [D]
  • longest common subsequence [P]
  • longest common substring [P]
  • Maximal Shift [A]
  • metaheuristic [T]
  • metaphone [A]
  • minimal perfect hashing [A]
  • MODIFIND [A]
  • Morris-Pratt [A]
  • move-to-front heuristic [A]
  • move-to-root heuristic [A]
  • multilayer grid file [S]
  • multiplication method [A]
  • multiway search tree [S]
  • naive string search [A]
  • Not So Naive [A]
  • NYSIIS [A]
  • occurrence [D]
  • octree [S]
  • offset [D]
  • open addressing [A]
  • optimal hashing [A]
  • optimal mismatch [A]
  • ordered array [S]
  • order preserving minimal perfect hashing [A]
  • PAM [D]
  • pattern [D]
  • pattern element [D]
  • Pearson's hash [A]
  • perfect hashing [A]
  • PLOP-hashing [S]
  • point access method [D]
  • polychotomy [D]
  • prefix [D]
  • primary clustering [D]
  • probe sequence [D]
  • property list [S]
  • quadratic probing [A]
  • quadtree [S]
  • quick search [A]
  • Rabin-Karp [A]
  • Raita [A]
  • rank [D]
  • Ratcliff/Obershelp pattern recognition [A]
  • rehashing [A]
  • Reverse Colussi [A]
  • Reverse Factor [A]
  • R-file [S]
  • R+-tree [S]
  • SAM [D]
  • search [A]
  • secant search [A]
  • secondary clustering [D]
  • segment [D]
  • Select [A]
  • select and partition [P]
  • selection problem [P]
  • select kth element [P]
  • select mode [A]
  • self-organizing heuristic [T]
  • self-organizing list [S]
  • self-organizing sequential search [A]
  • separate chaining hashing [S]
  • sequential search [A]
  • Shift-Or [A]
  • Simon's algorithm [A]
  • simple uniform hashing [D]
  • simplex [A]
  • simulated annealing [A]
  • skip list [S]
  • Skip Search [A]
  • Smith algorithm [A]
  • Smith-Waterman algorithm [A]
  • sorted array [S]
  • sorted list [S]
  • soundex [A]
  • sparsity [D]
  • spatial access method [D]
  • string matching [P]
  • string matching on ordered alphabets [A]
  • string matching with errors [A]
  • string matching with mismatches [A]
  • string searching [P]
  • subsequence [D]
  • substring [D]
  • suffix [D]
  • suffix array [S]
  • ternary search tree [S]
  • text searching [P]
  • transpose sequential search [A]
  • TST [S]
  • Turbo-BM [A]
  • Turbo Reverse Factor [A]
  • twin grid file [S]
  • two-level grid file [S]
  • Two Way algorithm [A]
  • uniform hashing [A]
  • universal hashing [D]
  • weak-heap [S]
  • window [D]
  • worst-case minimum access [D]
  • Zhu-Takaoka [A]

Sorting

  • adaptive heap sort [A]
  • adaptive sort [D]
  • address-calculation sort [A]
  • American flag sort [A]
  • balanced k-way merge sort [A]
  • balanced merge sort [A]
  • balanced multiway merge [A]
  • balanced quicksort [A]
  • balanced two-way merge sort [A]
  • bidirectional bubble sort [A]
  • binary insertion sort [A]
  • bingo sort [A]
  • bin sort [A]
  • bogosort [A]
  • bozo sort [A]
  • brick sort [A]
  • bubble sort [A]
  • bucket sort [A]
  • cocktail shaker sort [A]
  • comb sort [A]
  • comparison sort [D]
  • counting sort [A]
  • derangement [A]
  • diminishing increment sort [A]
  • distribution sort [A]
  • double-direction bubble sort [A]
  • Dutch national flag [A]
  • exchange sort [A]
  • external merge [A]
  • external merge sort [A]
  • external quicksort [A]
  • external radix sort [A]
  • external sort [D]
  • flash sort [A]
  • heapsort [A]
  • histogram sort [A]
  • ideal merge [A]
  • in-place sort [A]
  • insertion sort [A]
  • internal sort [D]
  • interpolation sort [A]
  • introsort [A]
  • introspective sort [A]
  • j sort [A]
  • k-way merge [D]
  • k-way merge sort [A]
  • linear insertion sort [A]
  • linear probing sort [A]
  • lucky sort [A]
  • merge [D]
  • merge sort [A]
  • multiway merge [D]
  • nonbalanced merge [A]
  • nonbalanced merge sort [A]
  • optimal merge [A]
  • optimal polyphase merge [A]
  • optimal polyphase merge sort [A]
  • oscillating merge sort [A]
  • pile [S]
  • polyphase merge [A]
  • polyphase merge sort [A]
  • postman's sort [A]
  • p-way merge sort [A]
  • qm sort [A]
  • q sort [A]
  • quicksort [A]
  • radix sort [A]
  • range sort [A]
  • restricted universe sort [D]
  • selection sort [A]
  • shaker sort [A]
  • Shell sort [A]
  • simple merge [A]
  • sinking sort [A]
  • smoothsort [A]
  • sort [A]
  • sort in place [A]
  • sort merge [A]
  • stooge sort [A]
  • three-way merge sort [A]
  • top-down radix sort [A]
  • topological sort [D]
  • tree sort [A]
  • two-way merge sort [A]
  • UnShuffle sort [A]
  • unsorted list [D]
  • weak-heap sort [A]

Theory

  • rho -approximation algorithm [T]
  • absolute performance guarantee [D]
  • adversary [D]
  • algorithmically solvable [D]
  • alternation [D]
  • amortized cost [D]
  • AP
  • approximation algorithm [T]
  • asymptotically tight bound [D]
  • asymptotic bound [D]
  • asymptotic equipartition property [D]
  • asymptotic lower bound [D]
  • asymptotic space complexity [D]
  • asymptotic time complexity [D]
  • asymptotic upper bound [D]
  • average-case cost [D]
  • best-case cost [D]
  • bounded error probability in polynomial time [D]
  • BPP [D]
  • British Museum algorithm [T]
  • Calculus of Communicating Systems [D]
  • canonical complexity class [D]
  • CCS [D]
  • cell probe model [D]
  • Church-Turing thesis [D]
  • coarsening [D]
  • Communicating Sequential Processes [D]
  • competitive analysis [D]
  • competitive ratio [D]
  • complexity [D]
  • complexity class [D]
  • computable [D]
  • coNP [D]
  • Cook reduction [D]
  • Cook's theorem [D]
  • CSP [D]
  • decidable [D]
  • decidable language [D]
  • decision problem [D]
  • depoissonization [D]
  • deterministic [D]
  • diagonalization [D]
  • dining philosophers [P]
  • distributional complexity [D]
  • element uniqueness [P]
  • Euclidean traveling salesman problem [P]
  • exponential [D]
  • feasible region [D]
  • feasible solution [D]
  • formal language [D]
  • fractional solution [D]
  • fully polynomial approximation scheme [T]
  • halting problem [P]
  • incompressible string [D]
  • information theoretic bound [D]
  • interactive proof system [D]
  • intractable [D]
  • Karp reduction [D]
  • Kolmogorov complexity [D]
  • Kraft's inequality [D]
  • language [D]
  • linear [D]
  • logarithmic [D]
  • lower bound [D]
  • l-reduction [D]
  • many-one reduction [D]
  • MAX-SNP [D]
  • MBB [D]
  • meromorphic function [D]
  • minimal antichain decomposition [D]
  • minimum bounding box [D]
  • model checking [A]
  • model of computation [D]
  • moderately exponential [D]
  • NC [D]
  • NC many-one reducibility [D]
  • nondeterministic [D]
  • nondeterministic polynomial time [D]
  • NP [D]
  • NP-complete [D]
  • NP-complete language [D]
  • NP-hard [D]
  • objective function [D]
  • off-line algorithm [D]
  • on-line algorithm [D]
  • optimal cost [D]
  • optimal solution [D]
  • optimal value [D]
  • optimization problem [D]
  • P [D]
  • padding argument [D]
  • partial function [D]
  • partially decidable problem [D]
  • partial recursive function [D]
  • P-complete [D]
  • PCP [P]
  • performance guarantee [D]
  • performance ratio [D]
  • pointer machine [D]
  • poissonization [D]
  • polylogarithmic [D]
  • polynomial [D]
  • polynomial approximation scheme [T]
  • polynomial hierarchy [D]
  • polynomial time [D]
  • polynomial-time Church-Turing thesis [D]
  • polynomial-time reduction [D]
  • Post's correspondence problem [P]
  • potential function [D]
  • primitive recursive [D]
  • prisoner's dilemma [P]
  • probabilistically checkable proof [D]
  • process algebra [D]
  • PTAS [T]
  • purely functional language [D]
  • pushdown transducer [D]
  • random access machine [D]
  • randomized complexity [D]
  • randomized polynomial time [D]
  • randomized rounding [A]
  • recurrence equations [D]
  • recurrence relation [D]
  • recursion tree [D]
  • recursive language [D]
  • recursively enumerable language [D]
  • recursively solvable [D]
  • reduction [D]
  • relational structure [S]
  • relative performance guarantee [D]
  • relaxation [D]
  • rescalable [D]
  • Rice's method [D]
  • RP [D]
  • run time [D]
  • separation theorem [D]
  • shared memory [D]
  • simulation theorem [D]
  • singularity analysis [D]
  • solvable [D]
  • space-constructible function [D]
  • strongly NP-hard [D]
  • subadditive ergodic theorem [D]
  • temporal logic [D]
  • time-constructible function [D]
  • time/space complexity [D]
  • total function [D]
  • totally decidable language [D]
  • totally decidable problem [D]
  • totally undecidable problem [D]
  • tractable [D]
  • Turing reduction [D]
  • Turing transducer [D]
  • uncomputable function [D]
  • uncomputable problem [D]
  • undecidable language [D]
  • undecidable problem [D]
  • uniform circuit complexity [D]
  • uniform circuit family [D]
  • unsolvable problem [D]
  • Venn diagram [D]
  • worst case [D]
  • worst-case cost [D]
  • ZPP [D]

Trees

  • (a,b)-tree [S]
  • ancestor [D]
  • arborescence [D]
  • AVL tree [S]
  • balance [D]
  • balanced binary search tree [S]
  • balanced binary tree [S]
  • balanced multiway tree [S]
  • balanced tree [D]
  • BB alpha tree [D]
  • BDD [S]
  • binary heap [S]
  • binary priority queue [S]
  • binary search tree [S]
  • binary tree [D]
  • binary tree representation of trees [S]
  • binomial heap [S]
  • binomial tree [S]
  • Bk tree [S]
  • B+-tree [S]
  • B*-tree [S]
  • B-tree [S]
  • build-heap [A]
  • cactus stack [S]
  • cartesian tree [S]
  • child [D]
  • compact DAWG [S]
  • complete binary tree [D]
  • complete tree [D]
  • DAWG [S]
  • depth [D]
  • descendant [D]
  • diet [S]
  • digital search tree [S]
  • digital tree [S]
  • directed acyclic word graph [S]
  • discrete interval encoding tree [S]
  • double-ended priority queue [S]
  • enfilade [S]
  • extended binary tree [S]
  • external node [D]
  • Fibonacci tree [S]
  • Fibonnaci heap [S]
  • finitary tree [S]
  • forest [D]
  • free tree [D]
  • full binary tree [D]
  • GBD-tree [S]
  • heap [S]
  • heapify [A]
  • heap property [D]
  • height [D]
  • height-balanced binary search tree [S]
  • height-balanced tree [S]
  • in-order traversal [A]
  • internal node [D]
  • k-ary heap [S]
  • k-ary tree [D]
  • k-way tree [D]
  • leaf [D]
  • leftist tree [S]
  • left rotation [A]
  • level-order traversal [A]
  • lowest common ancestor [D]
  • max-heap property [D]
  • meld [D]
  • min-heap property [D]
  • monotone priority queue [S]
  • multi suffix tree [S]
  • multiway tree [D]
  • nonterminal node [D]
  • null tree [D]
  • ordered tree [S]
  • oriented tree [D]
  • pagoda [S]
  • parent [D]
  • Patricia tree [S]
  • perfect binary tree [D]
  • perfect k-ary tree [D]
  • postfix traversal [A]
  • postorder traversal [A]
  • prefix traversal [A]
  • preorder traversal [A]
  • proper binary tree [D]
  • P-tree [S]
  • quad trie [S]
  • randomized binary search tree [S]
  • randomized search tree [S]
  • RBST [S]
  • rebalance [A]
  • red-black tree [S]
  • reduced ordered binary decision diagram [S]
  • relaxed balance [D]
  • right rotation [A]
  • right-threaded tree [S]
  • ROBDD [S]
  • root [D]
  • root balance [D]
  • rooted tree [D]
  • rotate left [A]
  • rotate right [A]
  • rotation [D]
  • R*-tree [S]
  • R-tree [S]
  • saguaro stack [S]
  • SBB tree [S]
  • scapegoat tree [A]
  • search tree [S]
  • search tree property [D]
  • shadow heap [S]
  • shadow merge [A]
  • shadow merge insert [A]
  • sibling [D]
  • sift up [A]
  • skd-tree [S]
  • spaghetti stack [S]
  • spanning tree [D]
  • splay tree [S]
  • subtree [D]
  • suffix tree [S]
  • symmetric binary B-tree [S]
  • terminal node [D]
  • threaded binary tree [S]
  • threaded tree [S]
  • topology tree [D]
  • treap [S]
  • tree [S]
  • tree traversal [D]
  • trie [S]
  • 2-3-4 tree [S]
  • 2-3 tree [S]
  • Van Emde-Boas priority queue [S]
  • weight-balanced tree [S]

Verification and Formal Methods

  • CTL [D]
  • formal methods [D]
  • formal verification [D]

Entries with No Area

  • bucket trie
  • cascade merge sort
  • C curve
  • coding tree
  • decision tree
  • division method
  • double left rotation
  • double right rotation
  • Dragon curve
  • expandable hashing
  • fractal
  • free list
  • Herter-Heighway Dragon
  • Hilbert curve
  • interval tree
  • Karmarkar's algorithm
  • k-clustering
  • minimum path cover
  • OBDD
  • ordered binary decision diagram
  • orthogonal lists
  • overlapping subproblems
  • pairing heap
  • path cover
  • Peano curve
  • Post machine
  • prefix computation
  • radix quicksort
  • Randomized-Select
  • result cache
  • Sierpinski curve
  • spectral test
  • string similarity search
  • three-way radix quicksort
  • virtual hashing
Created Tue Nov 17 13:41:10 1998
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Tue Apr 1 08:48:37 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/termsArea.html

to NIST home page NIST Centennial 1901-2001


Terms and Definitions with Implementation Links

Algorithms and Data Structures

which have

Links to Implementations

This is the web page of terms with definitions that have links to implementations with source code. The language is in parentheses. We also list all entries by type, for instance, whether it is an algorithm, a definition, a problem, or a data structure, and entries by area, for instance, graphs, trees, sorting, etc.

Don't use this site to cheat. Teachers, contact me if I can help.

We need people to contribute. If terms are missing or you can add or correct definitions, please contact me by email (paul.black@nist.gov) or by other means.

By selecting almost any of these links, you will be leaving NIST webspace. We provided these links because they may have information of interest to you. No inferences should be drawn because some sites are referenced, or not, from this page. There may be other web sites that are more appropriate for your purpose. NIST does not necessarily endorse the views expressed, or concur with the facts presented on these sites. Further, NIST does not endorse any commercial products that may be mentioned on these sites. Please address comments about this page to paul.black@nist.gov.

A great source of implementations, organized by area and reviewed for quality, is the Stony Brook Algorithm Repository. A great source of implementations of mathematical functions is the NIST Guide to Available Mathematical Software or GAMS.

Java is a trademark of Sun Microsystems, Inc.

Run on Wed Jun 11 14:27:39 2003

  • Ackermann's function: History of the function and (Modula-2) code, (Lisp), (Pascal), (Miranda).
  • adaptive Huffman encoding: (C)
  • Alpha Skip Search algorithm: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • American flag sort: (C). It is program C (C) in the paper.
  • Apostolico-Crochemore: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • Apostolico-Giancarlo algorithm: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • approximate string matching: See implementations at string matching. (C and Pascal)
  • arithmetic coding: Theory development and implementation (C).
  • array: (C), Read and write different arrays (Fortran, C++)
  • association list: (C++, Pascal, and Fortran), Kazlib (C)
  • AVL tree: Ben Pfaff's explanations and code (C), (Java) needs insert, delete, search, etc. from the functions directory, Worst-case behavior of traversal, annotated for real time (WOOP/ADA).
  • balanced binary tree: red-black tree analysis, explanation, examples, and code (C), Ben Pfaff's AVL tree explanation (C)
  • balanced merge sort: (C) using an auxiliary function to select next file (C), (Java)
  • balanced multiway tree: data structure definition (C and Pascal), insert (C and Pascal) using auxiliary functions (C and Pascal), search (C and Pascal), (Pick Basic?).
  • Batcher sort: explanation, analysis, bibliography, etc. (Java), explanation and animation (C), reference source code (C)
  • BB alpha tree: Worst-case behavior of traversal, annotated for real time (WOOP/ADA), including bibliography.
  • Bellman-Ford algorithm: explanation and example (C-like pseudocode)
  • bidirectional bubble sort: animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
  • binary insertion sort: (C)
  • binary knapsack problem: (Fortran and Pascal)
  • binary priority queue: insert (C and Pascal) and delete (C and Pascal)
  • binary search: recursive and iterative code (C); search (C), (Scheme), Worst-case behavior annotated for real time (WOOP/ADA), including bibliography.
  • binary search tree: insert, search, remove max, number of leaves, etc. (C++); Ben Pfaff's insert, delete, search, copy, etc. (literate C); insert, search, and maximum (Pascal); insert (C), insert (Lisp), insert (C and Pascal), search (C and Pascal), and insert, search, delete, and various traversals (Modula-2).
  • binary tree: examples, analysis, and C code, Worst-case behavior of traversal, annotated for real time (WOOP/ADA).
  • bin packing problem: (C++)
  • bin sort: analysis, explanation, and code (C), and (C).
  • bitonic sort: explanation, analysis, bibliography, etc. (Java), explanation and animation (C), reference source code (C)
  • Boyer-Moore: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C) which uses Boyer-Moore preprocessing (C)
  • Boyer-Moore-Horspool: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C) entry for Horspool, (C) or (Pascal)
  • bozo sort: demonstration and source code (Java).
  • B+-tree: A B+-tree package, b+tree_mjr (C) , with patches b+tree, was posted on comp.sources.misc, volume 10. There is also the bplus (C) package.
  • branch and bound: A page of branch and bound implementations (C, C++, Matlab, Fortran, executables, etc.).
  • breadth-first search: (Lisp), (Prolog), (Java) which extends SearchApplet (Java)
  • brick sort: Sedgewick's Analysis of Shellsort and Related Algorithms (C)
  • brute force string search: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal)
  • brute force string search with mismatches: (C and Pascal)
  • B*-tree: data structure definition (C and Pascal), B-tree insert (C and Pascal) using auxiliary functions (C and Pascal), B-tree search (C and Pascal).
  • B-tree: data structure definition (C and Pascal), insert (C and Pascal) using auxiliary functions (C and Pascal), search (C and Pascal), (Pick Basic?).
  • bubble sort: animation and code (Java); sinking sort explanation and animation (Java); demonstration and source code (Java) - but code might not render properly; explanation (C); (Java).
  • bucket sort: analysis, explanation, and code (C), and (C).
  • calendar queue: In a simulation tool package (C)
  • cartesian tree: Oleg Kiselyov's (Scheme)
  • Cayley-Purser: explanation, proofs, comparison with RSA, how it can be broken, and code (Mathematica)
  • chaining: (C)
  • Chinese postman problem: (Mathematica and Fortran)
  • clique problem: (Fortran, C, and Mathematica)
  • coalesced hashing: insert (C), search (C).
  • cocktail shaker sort: animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
  • Colussi: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • combination: The Combinatorial Object Server's information on Combinations (Pascal and C); Michael Gilleland's CombinationGenerator class (Java).
  • comb sort: comb sort parallel (Java).
  • connected components: (C++, C, Pascal, Mathematica, and Fortran)
  • cutting stock problem: linear and nonlinear programming and algebra packages (C and Fortran)
  • cycle: graph cycle detector (C)
  • database: (C++, Pascal, and Fortran), Kazlib (C)
  • depth-first search: (Lisp), (Prolog)
  • deterministic finite automata string search: description and animation (C), (C) which uses a finite automaton structure (C) and builds a recognizer (C)
  • DFS: (Lisp), (Prolog)
  • dictionary: (C++, Pascal, and Fortran), Kazlib (C)
  • diet: insert, delete, and member (ML), insert, delete, and member (Haskell)
  • digraph: build, traverse, top sort, etc. weighted, directed graph (Java)
  • Dijkstra's algorithm: An analysis with code (C)
  • diminishing increment sort: comb sort parallel (Java).
  • dining philosophers: code Shared Memory and Semaphores (C and C++), (Java), (Siefast)
  • direct chaining hashing: insert (C), search (C).
  • directed graph: build, traverse, top sort, etc. weighted, directed graph (Java)
  • directory: (C++, Pascal, and Fortran), Kazlib (C)
  • discrete interval encoding tree: insert, delete, and member (ML), insert, delete, and member (Haskell)
  • divide and conquer: how many odd numbers in an array? (C)
  • double-direction bubble sort: animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
  • double hashing: insert (C and Pascal), search (C and Pascal)
  • double metaphone: Metaphone and double metaphone (Basic, C, Perl, and C++), zip'd (C++)
  • doubly linked list: Illustrations, too (C++)
  • Dutch national flag: explanation and development (C)
  • dynamic programming: Oleg Kiselyov's program to optimally lay out a page (C++) using dynamic programming.
  • edge coloring: (C++, Mathematica, and C)
  • edge connectivity: (Mathematica, C, and Pascal)
  • edit distance: Levenshtein distance (Java, C++, Visual Basic)
  • enfilade: Green (C)
  • Euclidean algorithm: Worst-case behavior annotated for real time (WOOP/ADA), (Scheme).
  • Euclidean Steiner tree: GeoSteiner (C) - software for computing steiner trees.
  • Euclid's algorithm: Worst-case behavior annotated for real time (WOOP/ADA), (Scheme).
  • Euler cycle: (Mathematica and Fortran)
  • Eulerian path: (Mathematica and Fortran)
  • exact string matching: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
  • exchange sort: animation and code (Java); sinking sort explanation and animation (Java); demonstration and source code (Java) - but code might not render properly; explanation (C); (Java).
  • extendible hashing: A description including a hash function (COBOL).
  • external quicksort: (C)
  • extrapolation search: Worst-case behavior annotated for real time (WOOP/ADA), including bibliography, (Pascal)
  • factorial: (Scheme)
  • fast fourier transform: Worst-case behavior annotated for real time (WOOP/ADA).
  • feedback edge: (C)
  • FFT: Worst-case behavior annotated for real time (WOOP/ADA).
  • Fibonacci number: Worst-case behavior to generate nth number, annotated for real time (WOOP/ADA), (Scheme).
  • Fibonacci search: Worst-case behavior annotated for real time (WOOP/ADA), including bibliography.
  • FIFO: (Java). Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java)
  • Find: analysis and comparison (Rexx)
  • finite state automaton: Oleg Kiselyov's program to minimize a finite state machine (Prolog)
  • finite state machine: Oleg Kiselyov's program to minimize a finite state machine (Prolog)
  • finite state machine minimization: (C++ and Pascal)
  • Ford-Bellman: explanation and example (C-like pseudocode)
  • frequency count heuristic: Discussion and code (C)
  • Galil-Giancarlo: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • Galil-Seiferas: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • GCD: (Scheme)
  • graph: GraphEd -- Graph Editor and Layout Program (C), graph manipulation (C++, C, Mathematica, and Pascal), build, traverse, top sort, etc. weighted, directed graphs (Java), graph generating (C, Mathematica, Pascal, C++, and Fortran)
  • graph drawing: Links to graph drawing packages (Java, C, etc.), draw a graph nicely (C and Mathematica), draw a graph in the plane such that no edges cross (C, C++, and Mathematica), GraphEd: Graph Editor and Layout Program (C).
  • graph isomorphism: (C and Mathematica)
  • graph partition: (C++)
  • Gray code: Glenn Rhoads' Snippets (c). binary-to-Gray and Gray-to-binary conversion (C) with history, references, and application to genetic algorithms. convert between binary and Gray (C): a PDF document of section 20.2 of Numerical recipes in C, binary-to-Gray, code generation, and plotting (Maple) with applications and references.
  • greatest common divisor: (Scheme)
  • Grover's algorithm: (C-like)
  • Hamiltonian cycle: (Fortran, C, Mathematica, and C++)
  • hash function: See the implementations at minimal perfect hashing (C++ and C) and Pearson's hash (C). A review and comparison of many integer hash functions (C). Overview of different kinds of hash functions. Hash functions for strings (C), strings (C and Perl), Kazlib (C)
  • hash table: chaining: (C), linear probing hashing: insert (C), look up (C), Kazlib (C), chaining: explanations, diagrams, and code (Visual Basic)
  • heap: delete (C) and insert (C and Pascal) both of which use the auxiliary function siftup (C and Pascal), explanation, examples, and C code, (Fortran)
  • heapsort: (Java), (Java), Worst-case behavior annotated for real time (WOOP/ADA), including bibliography.
  • heaviest common subsequence: (C and Mathematica)
  • height: For binary trees (C).
  • histogram sort: Marion McCoskey's Single Buffered Count Sort in (C++).
  • Horspool: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C) entry for Horspool, (C) or (Pascal)
  • Huffman encoding: build tree in array (C) -- also computes entropy and efficiency.
  • independent set: (Fortran and C)
  • insertion sort: (Java). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting; (Scheme); explanation (C); (Fortran).
  • internal sort: (Fortran)
  • interpolation search: Worst-case behavior annotated for real time (WOOP/ADA), including bibliography, (Pascal)
  • interpolation-sequential search: (Pascal) or (Pascal)
  • interpolation sort: (C and Pascal)
  • isomorphic: (C and Mathematica)
  • Johnson-Trotter: Information on Permutations (Pascal and C)
  • j sort: demonstration and source code (Java).
  • Karmarkar's algorithm: Article with details of implementation and comparisons (Algol-like pseudo-code)
  • Karnaugh map: (Java)
  • Karp-Rabin: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), description and animation (C), (C and Pascal), (Pascal)
  • k-ary Huffman encoding: animation which counts characters, finds the code, encodes, and decodes (Java),
  • k-d tree: C, Pascal, or FORTRAN, insert (C), range search (C), and search (C). (C, Pascal, and Fortran)
  • KMP: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal) which uses Boyer-Moore preprocessing (C)
  • KmpSkip Search: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • knapsack problem: (Fortran and Pascal)
  • knight's tour: Oleg Kiselyov's derivation (Prolog)
  • Knuth-Morris-Pratt algorithm: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal) which uses Boyer-Moore preprocessing (C)
  • Königsberg bridges problem: (Mathematica and Fortran)
  • Kruskal's algorithm: analysis and code (C), (pseudocode)
  • kth shortest path: Víctor Jiménez and Andrés Marzal keep links to algorithms and code (C).
  • KV diagram: (Java)
  • LCS: (C and Mathematica)
  • leftist tree: merge and delete (C and Pascal) which use distance (C and Pascal), insert (C and Pascal)
  • left rotation: (Pascal), (C)
  • Lempel-Ziv-Welch: explanation (C)
  • Levenshtein distance: Levenshtein distance (Java, C++, Visual Basic)
  • LIFO: Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java), (Scheme)
  • linear insertion sort: (Java). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting; (Scheme); explanation (C); (Fortran).
  • linear probing: insert (C), search (C).
  • linear probing sort: (C and Pascal)
  • linear quadtree: Spatial Linear Quadtree with Constant Time Node Traversal (C++) including man pages, examples, etc.
  • linear search: C
  • linked list: explanations, examples, iterators, sorting lists, etc. (C++), Kazlib (C), (C++)
  • list: Jonathan G. Campbell's List Class (C++)
  • longest common subsequence: (C and Mathematica)
  • longest common substring: (C and Mathematica)
  • lower triangular matrix: (Fortran)
  • LZW compression: explanation (C)
  • Markov chain: Use Markov chains to generate random text (clisp) and in (C).
  • matching: (Fortran, C, C++, and Pascal)
  • matrix: (Fortran), (C++)
  • Maximal Shift: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • maximum-flow problem: description and links to implementations (C, Fortran, C++, Pascal, and Mathematica)
  • median: find median (Pascal and C++)
  • merge: (Scheme)
  • merge sort: demonstration (Java); recurrence relation analysis and demonstration (Java); explanation (C); (C) which needs list merge (C) or array merge (C), (Pascal)which needs list merge (Pascal) or array merge (Pascal); (Java); Demo and code of in-place and double merge sort (Java); Worst-case behavior annotated for real time (WOOP/ADA), including bibliography. Sohail Somani's (C++), (Scheme). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting.
  • metaphone: Metaphone and double metaphone (Basic, C, Perl, and C++), double metaphone, zip'd (C++), (C, Basic), (Java), (Java).
  • Miller-Rabin: Frederic Raynal's Miller-Rabin Primality test (pseudo-code) pages, with mathematical background, implementation, demonstration, etc. Explanation and code (C) in Pete Emerson's thesis.
  • minimal perfect hashing: Description and code for minimal perfect hashing (C), mph: minimal perfect hash function generator (C), gperf: near minimal perfect hashing (C++),
  • minimum spanning tree: (C++, Pascal, Fortran, C, and Mathematica)
  • model checking: The SMV model checker.
  • MODIFIND: analysis and comparison (Rexx)
  • Morris-Pratt: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • move-to-front heuristic: Discussion and code (C)
  • MST: (C++, Pascal, Fortran, C, and Mathematica)
  • naive string search: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal)
  • nearest neighbor: (C, C++, and Pascal)
  • network flow problem: description and links to implementations (C, Fortran, C++, Pascal, and Mathematica)
  • Not So Naive: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • NP-complete: Stas Busygin's NP-Completeness Page with QUALEX and SAT01 (C++).
  • NYSIIS: SAMHSA's code (SAS) -- click on nysiis.sas.
  • optimal hashing: See the implementations at minimal perfect hashing (C++, C), insert (C), search (C).
  • optimal mismatch: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • optimization problem: linear and nonlinear programming and algebra packages (C and Fortran) from the Optimization Technology Center.
  • oriented graph: build, traverse, top sort, etc. weighted, directed graph (Java)
  • oscillating merge sort: (Pascal)
  • pagoda: delete (C and Pascal), insert (C and Pascal), and merge (C and Pascal)
  • partition: generating partitions (Fortran, Mathematica, Pascal, and C), (Scheme)
  • Patricia tree: insert (C), search (C).
  • Peano curve: (Maple)
  • Pearson's hash: (C)
  • perfect hashing: See the implementations at minimal perfect hashing (C++, C), insert (C), search (C).
  • perfect shuffle: Discussion and explanation of what makes a shuffle perfect and two implementations (Haskell).
  • permutation: The (Combinatorial) Object Server's information on Permutations (Pascal and C); Michael Gilleland's PermutationGenerator class (Java); Glenn Rhoads' Snippets (c); (Pascal, Fortran, Mathematica, and C); (Fortran). Perfect shuffle (Haskell).
  • planar graph: draw a planar graph such that no edges cross (C, C++, and Mathematica)
  • polyphase merge sort: (C) using an auxiliary function to select next file (C)
  • postman's sort: 16- and 32-bit binaries for DOS, OS/2, and Windows
  • Prim's algorithm: explanation and implementation (pseudocode and Java bytecode)
  • priority queue: Implemented as a heap: insert, delete, etc. (Modula-2?) (C++, Pascal, and Fortran)
  • PRNG: (C++, C, and Fortran), Glenn Rhoads' Snippets (C), (C)
  • property list: (C++, Pascal, and Fortran), Kazlib (C)
  • pseudo-random number generator: (C++, C, and Fortran), Glenn Rhoads' Snippets (C), (C)
  • P-tree: Implementations of P-tree (1) insert (C and Pascal), delete max (C and Pascal), and head (C and Pascal)
  • qm sort: demonstration and source code (Java).
  • q sort: demonstration and source code (Java).
  • quadratic probing: insert (C and Pascal)
  • quadtree: Spatial Linear Quadtree with Constant Time Node Traversal (C++) including man pages, examples, etc., insert (C), search (C), bitmap utilities (C).
  • quad trie: insert (C), search (C)
  • queue: (Java). Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java)
  • quick search: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • quicksort: Robert Sedgewick's talk showing that with Bentley-McIlroy 3-way partitioning Quicksort Is Optimal (C) (pdf format) with discussion and proof. animation and code (Java); demos and code for enhanced, fast, quicksort, and quicksort with bubble sort (Java); explanation (C); (Java), (Scheme).
  • Rabin-Karp: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), description and animation (C), (C and Pascal), (Pascal)
  • radix quicksort: papers, demos, and code (C)
  • radix sort: Explanation and code (Pascal); (C and Pascal); analysis, explanation, and code (C); tutorial with examples and code (C++).
  • Raita: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • randomized binary search tree: Oleg Kiselyov's (Scheme)
  • Ratcliff/Obershelp pattern recognition: (C)
  • RBST: Oleg Kiselyov's (Scheme)
  • rebalance: (Pascal)
  • rectangular matrix: (Fortran)
  • rectilinear Steiner tree: GeoSteiner (C) - software for computing steiner trees.
  • red-black tree: analysis, explanation, examples, and code (C), Ben Pfaff's libavl (C) including pointers to other implementations, Kazlib (C).
  • rehashing: insert (C and Pascal), search (C and Pascal)
  • Reverse Colussi: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • Reverse Factor: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • right rotation: (C and Pascal)
  • right-threaded tree: Ben Pfaff's explanations and code (C)
  • rotate left: (Pascal), (C)
  • rotate right: (C and Pascal)
  • R*-tree: In the Spatial Index Library (C++)
  • R-tree: (Java), (C++)
  • select and partition: analysis and comparison (Rexx), (Scheme)
  • selection sort: animation and code (Java); explanation (C); (Scheme).
  • select mode: (Pascal)
  • self-organizing list: Discussion of several techniques with code (C)
  • self-organizing sequential search: Discussion and code (C); (C)
  • separate chaining hashing: insert (C), search (C).
  • sequential search: C
  • set: (C++ and Pascal)
  • set cover: (Pascal)
  • set packing: (Pascal)
  • shaker sort: animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
  • Shell sort: demonstration (Java); Sedgewick's Analysis of Shellsort and Related Algorithms (C); Worst-case behavior annotated for real time (WOOP/ADA), including bibliography; demonstration and source code (Java); explanation (C); (Pascal), (Scheme), (VBScript), (Fortran), (Passport for Windows PFW), (Forth), (Basic).
  • Shift-Or: explanation and code (C)
  • shortest common supersequence: (C)
  • shortest path: (C, C++, Pascal, Fortran, and Mathematica)
  • shortest spanning tree: (C++, Pascal, Fortran, C, and Mathematica)
  • shuffle: The (Combinatorial) Object Server's information on Permutations (Pascal and C); Michael Gilleland's PermutationGenerator class (Java); Glenn Rhoads' Snippets (c); (Pascal, Fortran, Mathematica, and C); (Fortran). Perfect shuffle (Haskell).
  • sieve of Eratosthenes: various implementations (C, Perl, and Java), (Perl), (java), (F), (CafeOBJ), Stockton's Pascal Maths Page gives links to three implementations: bit array (Pascal), bit array for odd numbers (Pascal), packed bit array for odd numbers (Pascal)
  • Simon's algorithm: In Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms preprocessing phase (C)
  • single-destination shortest-path problem: See implementations at graph.
  • single-pair shortest-path problem: (C, C++, Pascal, Fortran, and Mathematica)
  • single-source shortest-path problem: See implementations at graph.
  • singly linked list: explanations, examples, iterators, sorting lists, etc. (C++), Kazlib (C), (C++)
  • sinking sort: animation and code (Java); sinking sort explanation and animation (Java); demonstration and source code (Java) - but code might not render properly; explanation (C); (Java).
  • skip list: (C)
  • Skip Search: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • Smith algorithm: visualization and code (C)
  • smoothsort: Smoothsort, an alternative for sorting in situ typescript (guarded command language)
  • sort: Specific implementations can be found under the specific sort routines or at (Pascal, C++, Fortran, and Mathematica); Explanation, demo and code (Java).
  • sorted array: Insert (C).
  • sorted list: insert (C and Pascal)
  • sort merge: demonstration (Java); recurrence relation analysis and demonstration (Java); explanation (C); (C) which needs list merge (C) or array merge (C), (Pascal)which needs list merge (Pascal) or array merge (Pascal); (Java); Demo and code of in-place and double merge sort (Java); Worst-case behavior annotated for real time (WOOP/ADA), including bibliography. Sohail Somani's (C++), (Scheme). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting.
  • soundex: (C), embedded in page source (JavaScript)
  • sparse matrix: Input/output for sparse matrices stored in Harwell-Boeing Format (C)
  • splay tree: (C)
  • square root: GAMS Class C2 has many implementations of powers, roots, and reciprocals (C and Fortran). Many variations (C and Assembler) for caching, pipelined processing, etc.
  • SST: (C++, Pascal, Fortran, C, and Mathematica)
  • stack: Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java), (Scheme)
  • static Huffman encoding: build tree in array (C) -- also computes entropy and efficiency.
  • Steiner tree: (C and Pascal), GeoSteiner (C) - software for computing steiner trees.
  • Steinhaus-Johnson-Trotter: Information on Permutations (Pascal and C)
  • stooge sort: demonstration and source code (Java).
  • string matching: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
  • string matching on ordered alphabets: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • string matching with errors: See implementations at string matching. (C and Pascal)
  • string searching: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
  • strongly connected component: (C++, C, Pascal, Mathematica, and Fortran)
  • strongly connected graph: (C++, C, Pascal, Mathematica, and Fortran)
  • subset: The Combinatorial Object Server's information on subsets (Pascal and C); generating subsets (Fortran, Mathematica, and Pascal)
  • suffix tree: Strmat - a variety of string matching and pattern discovery algorithms (C) (C++ and Pascal), generate random text (clisp) and in (C).
  • symmetrically linked list: Illustrations, too (C++)
  • symmetric binary B-tree: analysis, explanation, examples, and code (C), Ben Pfaff's libavl (C) including pointers to other implementations, Kazlib (C).
  • temporal logic: The SMV model checker.
  • ternary search tree: papers, demos, and code (C), (C).
  • text searching: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
  • threaded binary tree: Ben Pfaff's explanations and code (C)
  • threaded tree: Ben Pfaff's explanations and code (C)
  • three-way radix quicksort: papers, demos, and code (C)
  • top-down radix sort: (C and Pascal)
  • topological sort: (C++, Mathematica, C, and Pascal), build, traverse, top sort, etc. weighted, directed graphs (Java)
  • tour: (Fortran, C, Mathematica, and C++)
  • tournament: Forbes D. Lewis' essay on Order Statistics and Tournaments (C).
  • towers of Hanoi: (JavaScript)
  • transitive closure: on a graph (C++ and Mathematica)
  • transitive reduction: on a graph (C++ and Mathematica)
  • transpose sequential search: Discussion and code (C); (C)
  • traveling salesman: Links to software as well as papers, preprints, reports, etc., on-line on this and related problems, solver packages (C) in addition to a pictorial history, papers, and an annotated bibliography, (C, Fortran, Pascal, Mathematica, and C++).
  • treap: Oleg Kiselyov's (Scheme)
  • tree automaton: (ELAN)
  • tree sort: (C)
  • trie: insert (C), search (C)
  • TSP: Links to software as well as papers, preprints, reports, etc., on-line on this and related problems, solver packages (C) in addition to a pictorial history, papers, and an annotated bibliography, (C, Fortran, Pascal, Mathematica, and C++).
  • TST: papers, demos, and code (C), (C).
  • Turbo-BM: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • Turbo Reverse Factor: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • Two Way algorithm: Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
  • two-way linked list: Illustrations, too (C++)
  • union of automata: (C)
  • upper triangular matrix: (Fortran)
  • Van Emde-Boas priority queue: insert (Pascal)
  • vehicle routing problem: Jano Simicka's Vehicle Routing Problem page has links to papers, sample problems, implementations, etc.
  • Veitch diagram: (Java)
  • vertex coloring: (Fortran, C, Pascal, C++, and Mathematica)
  • vertex connectivity: (Mathematica, C, and Pascal)
  • vertex cover: (C, Fortran, and Mathematica)
  • vertex set: (C)
  • VRP: Jano Simicka's Vehicle Routing Problem page has links to papers, sample problems, implementations, etc.
  • weak-heap sort: (C)
  • weight-balanced tree: insert (C and Pascal) and delete (C and Pascal) that use check root (C and Pascal) (or this one or this one?), left rotation (C and Pascal), and right rotation (C and Pascal).
  • weighted, directed graph: build, traverse, top sort, etc. weighted, directed graph (Java)
  • Zeller's congruence: Dr J R Stockton's The Calendar Week (Pascal). View Page Source and search for text/javascript for JavaScript code. Comp.lang.c FAQ question 17.28 (C).
  • 0-1 knapsack problem: (Fortran and Pascal)
  • Zhu-Takaoka: explanation, animation, and example (C)
Created Tue Nov 17 13:41:10 1998
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Tue Apr 1 08:48:21 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/termsImpl.html


Terms and Definitions Index by Type

Index by Type

of

Algorithms and Data Structures

This is the web page of terms with definitions organized by type. That is, whether the term is an algorithm, a definition, a problem, or data structure. We also list all entries with links to implementations and entries by area, for instance, graphs, trees, sorting, etc.

We need people to contribute. If terms are missing or you can add or correct definitions, please contact me by email (paul.black@nist.gov) or by other means.

Run on Wed Jun 11 14:27:39 2003

Types

  • Classic Problems
  • Algorithms
  • Data Structures
  • Definitions
  • Algorithmic Techniques
  • Entries with No Type

Classic Problems

  • all pairs shortest path
  • array search
  • assignment problem
  • binary knapsack problem
  • bin packing problem
  • bottleneck traveling salesman
  • busy beaver
  • Byzantine generals
  • capacitated facility location
  • Chinese postman problem
  • clique problem
  • continuous knapsack problem
  • critical path problem
  • cutting stock problem
  • dining philosophers
  • discrete p-center
  • 8 queens
  • element uniqueness
  • Euclidean traveling salesman problem
  • exact string matching
  • facility location
  • find kth least element
  • finite state machine minimization
  • fractional knapsack problem
  • graph drawing
  • graph isomorphism
  • halting problem
  • heaviest common subsequence
  • knapsack problem
  • knight's tour
  • kth shortest path
  • kth smallest element
  • LCS
  • longest common subsequence
  • longest common substring
  • matrix-chain multiplication problem
  • maximal independent set
  • maximum-flow problem
  • nearest neighbor
  • network flow problem
  • n queens
  • optimal polygon triangulation problem
  • optimal triangulation problem
  • path system problem
  • PCP
  • Post's correspondence problem
  • prisoner's dilemma
  • select and partition
  • selection problem
  • select kth element
  • set cover
  • set packing
  • shortest path
  • single-destination shortest-path problem
  • single-pair shortest-path problem
  • single-source shortest-path problem
  • slope selection
  • string matching
  • string searching
  • strip packing
  • subgraph isomorphism
  • text searching
  • towers of Hanoi
  • traveling salesman
  • TSP
  • UKP
  • unbounded knapsack problem
  • vehicle routing problem
  • vertex cover
  • VRP
  • 0-1 knapsack problem

Algorithms

  • Ackermann's function
  • adaptive heap sort
  • adaptive Huffman encoding
  • address-calculation sort
  • algorithm B
  • algorithm BSTW
  • algorithm FGK
  • algorithm V
  • Alpha Skip Search algorithm
  • American flag sort
  • Apostolico-Crochemore
  • Apostolico-Giancarlo algorithm
  • approximate string matching
  • arithmetic coding
  • array merging
  • balanced k-way merge sort
  • balanced merge sort
  • balanced multiway merge
  • balanced quicksort
  • balanced two-way merge sort
  • Batcher sort
  • Baum Welch algorithm
  • Bellman-Ford algorithm
  • best-first search
  • bidirectional bubble sort
  • binary GCD algorithm
  • binary insertion sort
  • binary search
  • bingo sort
  • bin sort
  • bitonic sort
  • block search
  • Bloom filter
  • bogosort
  • Boyer-Moore
  • Boyer-Moore-Horspool
  • bozo sort
  • branch and bound
  • breadth-first search
  • Bresenham's algorithm
  • brick sort
  • brute force string search
  • brute force string search with mismatches
  • B-spline
  • bubble sort
  • bucket sort
  • buddy system
  • build-heap
  • Cayley-Purser
  • Chinese remainder theorem
  • Christofides algorithm
  • Christofides heuristic
  • cocktail shaker sort
  • collision resolution scheme
  • Colussi
  • combination
  • comb sort
  • counting sort
  • CRC
  • cuckoo hashing
  • cyclic redundancy check
  • DAG shortest paths
  • depth-first search
  • derangement
  • deterministic finite automata string search
  • Deutsch-Jozsa algorithm
  • DFS
  • Dijkstra's algorithm
  • diminishing increment sort
  • distribution sort
  • Doomsday rule
  • double-direction bubble sort
  • double hashing
  • double metaphone
  • Dutch national flag
  • Euclidean algorithm
  • Euclid's algorithm
  • exchange sort
  • extended Euclid's algorithm
  • external memory algorithm
  • external merge
  • external merge sort
  • external quicksort
  • external radix sort
  • extrapolation search
  • fast fourier transform
  • Ferguson-Forcade algorithm
  • FFT
  • Fibonacci search
  • Find
  • finite Fourier transform
  • flash sort
  • Floyd-Warshall algorithm
  • Ford-Bellman
  • Ford-Fulkerson method
  • frequency count heuristic
  • Galil-Giancarlo
  • Galil-Seiferas
  • GCD
  • greatest common divisor
  • Grover's algorithm
  • hash function
  • hash table delete
  • heapify
  • heapsort
  • histogram sort
  • Horner's rule
  • Horspool
  • Huffman encoding
  • ideal merge
  • in-order traversal
  • in-place sort
  • insertion sort
  • interpolation search
  • interpolation-sequential search
  • interpolation sort
  • introsort
  • introspective sort
  • inverse Ackermann function
  • Jaro-Winkler
  • Johnson's algorithm
  • Johnson-Trotter
  • j sort
  • jump search
  • Karnaugh map
  • Karp-Rabin
  • k-ary Huffman encoding
  • KMP
  • KmpSkip Search
  • Knuth-Morris-Pratt algorithm
  • Kruskal's algorithm
  • KV diagram
  • k-way merge sort
  • left rotation
  • Lempel-Ziv-Welch
  • level-order traversal
  • linear congruential generator
  • linear hash
  • linear insertion sort
  • linear probing sort
  • linear search
  • lucky sort
  • LZW compression
  • Malhotra-Kumar-Maheshwari blocking flow
  • Maximal Shift
  • merge sort
  • metaphone
  • Miller-Rabin
  • minimal perfect hashing
  • model checking
  • MODIFIND
  • Morris-Pratt
  • move-to-front heuristic
  • move-to-root heuristic
  • multiplication method
  • multiprefix
  • naive string search
  • nonbalanced merge
  • nonbalanced merge sort
  • Not So Naive
  • NYSIIS
  • open addressing
  • optimal hashing
  • optimal merge
  • optimal mismatch
  • optimal polyphase merge
  • optimal polyphase merge sort
  • order preserving minimal perfect hashing
  • oscillating merge sort
  • parallel prefix computation
  • Pearson's hash
  • perfect hashing
  • perfect shuffle
  • permutation
  • polyphase merge
  • polyphase merge sort
  • postfix traversal
  • postman's sort
  • postorder traversal
  • prefix sums
  • prefix traversal
  • preorder traversal
  • Prim's algorithm
  • PRNG
  • pseudo-random number generator
  • p-way merge sort
  • qm sort
  • q sort
  • quadratic probing
  • quick search
  • quicksort
  • Rabin-Karp
  • radix sort
  • Raita
  • randomized rounding
  • random number generator
  • range sort
  • Ratcliff/Obershelp pattern recognition
  • rebalance
  • rehashing
  • Reverse Colussi
  • Reverse Factor
  • right rotation
  • RNG
  • rotate left
  • rotate right
  • scan
  • scapegoat tree
  • search
  • secant search
  • Select
  • selection sort
  • select mode
  • self-organizing sequential search
  • sequential search
  • shadow merge
  • shadow merge insert
  • shaker sort
  • Shannon-Fano coding
  • Shell sort
  • Shift-Or
  • Shor's algorithm
  • shuffle
  • sieve of Eratosthenes
  • sift up
  • Simon's algorithm
  • simple merge
  • simplex
  • simulated annealing
  • sinking sort
  • Skip Search
  • Smith algorithm
  • Smith-Waterman algorithm
  • smoothsort
  • sort
  • sort in place
  • sort merge
  • soundex
  • square root
  • static Huffman encoding
  • Steinhaus-Johnson-Trotter
  • stooge sort
  • string matching on ordered alphabets
  • string matching with errors
  • string matching with mismatches
  • three-way merge sort
  • top-down radix sort
  • tournament
  • transpose sequential search
  • tree sort
  • tripartition
  • Turbo-BM
  • Turbo Reverse Factor
  • Two Way algorithm
  • two-way merge sort
  • uniform hashing
  • union of automata
  • UnShuffle sort
  • Veitch diagram
  • Viterbi algorithm
  • weak-heap sort
  • Zeller's congruence
  • Zhu-Takaoka

Data Structures

  • (a,b)-tree
  • active data structure
  • adaptive k-d tree
  • adjacency-list representation
  • adjacency-matrix representation
  • array
  • association list
  • associative array
  • AVL tree
  • balanced binary search tree
  • balanced binary tree
  • balanced multiway tree
  • BANG file
  • BDD
  • BD-tree
  • binary heap
  • binary priority queue
  • binary search tree
  • binary tree representation of trees
  • binomial heap
  • binomial tree
  • bintree
  • bit vector
  • Bk tree
  • block addressing index
  • bounded queue
  • bounded stack
  • B+-tree
  • BSP-tree
  • B*-tree
  • B-tree
  • bucket array
  • buddy tree
  • BV-tree
  • cactus stack
  • calendar queue
  • cartesian tree
  • cell tree
  • chaining
  • circular list
  • circular queue
  • coalesced hashing
  • compact DAWG
  • container
  • database
  • data structure
  • DAWG
  • deque
  • dictionary
  • diet
  • digital search tree
  • digital tree
  • digraph
  • direct chaining hashing
  • directed acyclic word graph
  • directed graph
  • directory
  • discrete interval encoding tree
  • double-ended priority queue
  • doubly-ended queue
  • doubly linked list
  • dynamic array
  • dynamic hashing
  • enfilade
  • EXCELL
  • extended binary tree
  • extended k-d tree
  • extendible hashing
  • external index
  • external memory data structure
  • Fibonacci tree
  • Fibonnaci heap
  • FIFO
  • finitary tree
  • forward index
  • full inverted index
  • functional data structure
  • GBD-tree
  • graph
  • grid file
  • hash heap
  • hash table
  • hB-tree
  • heap
  • height-balanced binary search tree
  • height-balanced tree
  • hidden Markov model
  • HMM
  • hypergraph
  • index file
  • inverted file index
  • inverted index
  • k-ary heap
  • k-d-B-tree
  • k-d tree
  • leftist tree
  • LIFO
  • linear probing
  • linear quadtree
  • linked list
  • list
  • lower triangular matrix
  • Markov chain
  • matrix
  • monotone priority queue
  • multigraph
  • multilayer grid file
  • multi suffix tree
  • multiway search tree
  • octree
  • ordered array
  • ordered linked list
  • ordered tree
  • oriented graph
  • pagoda
  • passive data structure
  • Patricia tree
  • pile
  • PLOP-hashing
  • priority queue
  • property list
  • P-tree
  • quadtree
  • quad trie
  • queue
  • ragged matrix
  • randomized binary search tree
  • randomized search tree
  • RBST
  • rectangular matrix
  • recursive
  • red-black tree
  • reduced ordered binary decision diagram
  • relational structure
  • R-file
  • right-threaded tree
  • ROBDD
  • R+-tree
  • R*-tree
  • R-tree
  • saguaro stack
  • SBB tree
  • search tree
  • self-organizing list
  • separate chaining hashing
  • shadow heap
  • singly linked list
  • skd-tree
  • skip list
  • sorted array
  • sorted list
  • spaghetti stack
  • sparse matrix
  • splay tree
  • square matrix
  • stack
  • st-digraph
  • strictly lower triangular matrix
  • strictly upper triangular matrix
  • string
  • suffix array
  • suffix tree
  • symmetrically linked list
  • symmetric binary B-tree
  • ternary search tree
  • threaded binary tree
  • threaded tree
  • treap
  • tree
  • trie
  • TST
  • twin grid file
  • two-level grid file
  • 2-3-4 tree
  • 2-3 tree
  • two-way linked list
  • undirected graph
  • uniform matrix
  • upper triangular matrix
  • Van Emde-Boas priority queue
  • weak-heap
  • weight-balanced tree

Definitions

  • absolute performance guarantee
  • abstract data type
  • accepting state
  • acyclic directed graph
  • acyclic graph
  • adaptive sort
  • adjacent
  • admissible vertex
  • ADT
  • adversary
  • algorithm
  • algorithmically solvable
  • alphabet
  • alternating path
  • alternating Turing machine
  • alternation
  • amortized cost
  • ancestor
  • and
  • ANSI
  • antichain
  • antisymmetric
  • arborescence
  • arc
  • array index
  • articulation vertex
  • associative
  • asymptotically tight bound
  • asymptotic bound
  • asymptotic equipartition property
  • asymptotic lower bound
  • asymptotic space complexity
  • asymptotic time complexity
  • asymptotic upper bound
  • augmenting path
  • automaton
  • average case
  • average-case cost
  • bag
  • balance
  • balanced tree
  • BB alpha tree
  • Benford's law
  • best case
  • best-case cost
  • biconnected component
  • biconnected graph
  • big-O notation
  • binary function
  • binary relation
  • binary tree
  • bipartite graph
  • bipartite matching
  • bisector
  • block
  • blocking flow
  • blossom
  • boolean
  • boolean expression
  • boolean function
  • border
  • bottom-up tree automaton
  • boundary-based representation
  • bounded error probability in polynomial time
  • BPP
  • Bradford's law
  • branching
  • bridge
  • bucket
  • bucketing method
  • Calculus of Communicating Systems
  • candidate consistency testing
  • candidate verification
  • canonical complexity class
  • capacity
  • capacity constraint
  • CCS
  • cell probe model
  • cellular automaton
  • centroid
  • certificate
  • chain
  • child
  • chromatic index
  • chromatic number
  • Church-Turing thesis
  • circuit
  • circuit complexity
  • circuit value problem
  • clique
  • clustering
  • clustering free
  • coarsening
  • codeword
  • collision
  • Communicating Sequential Processes
  • commutative
  • comparison sort
  • competitive analysis
  • competitive ratio
  • complement
  • complete binary tree
  • complete graph
  • completely connected graph
  • complete tree
  • complexity
  • complexity class
  • computable
  • concave function
  • concurrent flow
  • concurrent read, concurrent write
  • concurrent read, exclusive write
  • configuration
  • confluently persistent data structure
  • conjunction
  • connected components
  • connected graph
  • coNP
  • constant function
  • Cook reduction
  • Cook's theorem
  • covering
  • CRCW
  • CREW
  • CSP
  • CTL
  • cut
  • cutting plane
  • cutting theorem
  • cut vertex
  • cycle
  • D-adjacent
  • DAG
  • decidable
  • decidable language
  • decision problem
  • decomposable searching problem
  • degree
  • dense graph
  • depoissonization
  • depth
  • descendant
  • deterministic
  • deterministic finite automaton
  • deterministic finite state machine
  • deterministic finite tree automaton
  • deterministic pushdown automaton
  • deterministic tree automaton
  • DFA
  • DFS forest
  • DFTA
  • diagonalization
  • diameter
  • dichotomic search
  • difference
  • directed acyclic graph
  • disjoint set
  • disjunction
  • distributional complexity
  • domain
  • don't care
  • DPDA
  • dual
  • dual linear program
  • dynamic
  • edge
  • edge coloring
  • edge connectivity
  • edge crossing
  • edit distance
  • edit operation
  • edit script
  • efficiency
  • end-of-string
  • ERCW
  • EREW
  • Euclidean distance
  • Euclidean Steiner tree
  • Euler cycle
  • Eulerian graph
  • Eulerian path
  • exclusive or
  • exclusive read, concurrent write
  • exclusive read, exclusive write
  • existential state
  • expander graph
  • exponential
  • external node
  • external sort
  • extremal
  • extreme point
  • factor
  • factorial
  • feasible region
  • feasible solution
  • feedback edge
  • Fibonacci number
  • finite state automaton
  • finite state machine
  • finite state transducer
  • first-come, first-served
  • first-in, first-out
  • fixed-grid method
  • flow
  • flow conservation
  • flow function
  • flow network
  • forest
  • forest editing problem
  • formal language
  • formal methods
  • formal verification
  • fractional solution
  • free edge
  • free tree
  • free vertex
  • full array
  • full binary tree
  • fully dynamic graph problem
  • fully persistent data structure
  • function
  • gamma function
  • geometric optimization problem
  • global optimum
  • graph coloring
  • graph concentration
  • graph partition
  • Gray code
  • grid drawing
  • Hamiltonian cycle
  • Hamming distance
  • Hausdorff distance
  • head
  • heap property
  • height
  • homeomorphic
  • horizontal visibility map
  • hybrid algorithm
  • hyperedge
  • ID
  • implication
  • implies
  • in-branching
  • inclusion-exclusion principle
  • inclusive or
  • incompressible string
  • in-degree
  • independent set
  • information theoretic bound
  • instantaneous description
  • integer linear program
  • integer multi-commodity flow
  • integer polyhedron
  • interactive proof system
  • interior-based representation
  • internal node
  • internal sort
  • intersection
  • intractable
  • irreflexive
  • isomorphic
  • Karp reduction
  • k-ary tree
  • k-coloring
  • k-connected graph
  • k-dimensional
  • K-dominant match
  • key
  • Königsberg bridges problem
  • Kolmogorov complexity
  • Kraft's inequality
  • Kripke structure
  • kth order Fibonacci numbers
  • k-way merge
  • k-way tree
  • labeled graph
  • language
  • last-in, first-out
  • Las Vegas algorithm
  • lattice
  • layered graph
  • LCM
  • leaf
  • least common multiple
  • Levenshtein distance
  • lexicographical order
  • linear
  • linear order
  • linear product
  • linear program
  • link
  • list contraction
  • little-o notation
  • Lm distance
  • load factor
  • local alignment
  • local optimum
  • locator
  • logarithmic
  • Lotka's law
  • lower bound
  • lowest common ancestor
  • l-reduction
  • Manhattan distance
  • many-one reduction
  • Marlena
  • Master theorem
  • matched edge
  • matched vertex
  • matching
  • max
  • max-heap property
  • maximally connected component
  • maximum bipartite matching
  • MAX-SNP
  • MBB
  • Mealy machine
  • mean
  • median
  • meld
  • merge
  • meromorphic function
  • midrange
  • min
  • min-heap property
  • minimal antichain decomposition
  • minimum bounding box
  • minimum cut
  • minimum spanning tree
  • minimum vertex cut
  • mixed integer linear program
  • mode
  • model of computation
  • moderately exponential
  • monotonically decreasing
  • monotonically increasing
  • Monte Carlo algorithm
  • Moore machine
  • move
  • MST
  • multi-commodity flow
  • multiprocessor model
  • multi-set
  • multiway decision
  • multiway merge
  • multiway tree
  • nand
  • n-ary function
  • NC
  • NC many-one reducibility
  • negation
  • network flow
  • next state
  • NFA
  • NFTA
  • NIST
  • node
  • nondeterministic
  • nondeterministic finite automaton
  • nondeterministic finite state machine
  • nondeterministic finite tree automaton
  • nondeterministic polynomial time
  • nondeterministic tree automaton
  • nondeterministic Turing machine
  • nonterminal node
  • nor
  • not
  • NP
  • NP-complete
  • NP-complete language
  • NP-hard
  • nullary function
  • null tree
  • O
  • objective function
  • occurrence
  • off-line algorithm
  • offset
  • omega
  • omicron
  • one-dimensional
  • on-line algorithm
  • optimal
  • optimal cost
  • optimal solution
  • optimal value
  • optimization problem
  • or
  • oracle set
  • oracle tape
  • oracle Turing machine
  • order
  • oriented acyclic graph
  • oriented tree
  • orthogonal drawing
  • orthogonally convex rectilinear polygon
  • out-branching
  • out-degree
  • P
  • packing
  • padding argument
  • PAM
  • parallel computation thesis
  • parallel random-access machine
  • parent
  • partial function
  • partially decidable problem
  • partially dynamic graph problem
  • partially ordered set
  • partially persistent data structure
  • partial order
  • partial recursive function
  • partition
  • path
  • pattern
  • pattern element
  • P-complete
  • PDA
  • perfect binary tree
  • perfect k-ary tree
  • perfect matching
  • performance guarantee
  • performance ratio
  • persistent data structure
  • planar graph
  • planarization
  • planar straight-line graph
  • point access method
  • pointer jumping
  • pointer machine
  • poissonization
  • polychotomy
  • polyhedron
  • polylogarithmic
  • polynomial
  • polynomial hierarchy
  • polynomial time
  • polynomial-time Church-Turing thesis
  • polynomial-time reduction
  • polytope
  • poset
  • potential function
  • PRAM
  • predicate
  • prefix
  • prefix code
  • primary clustering
  • primitive recursive
  • principle of optimality
  • probabilistic algorithm
  • probabilistically checkable proof
  • probabilistic Turing machine
  • probe sequence
  • procedure
  • process algebra
  • proper
  • proper binary tree
  • proper coloring
  • proper subset
  • pth order Fibonacci numbers
  • purely functional language
  • pushdown automaton
  • pushdown transducer
  • quadtree complexity theorem
  • quantum computation
  • random access machine
  • randomized algorithm
  • randomized complexity
  • randomized polynomial time
  • range
  • rank
  • reachable
  • recognizer
  • rectilinear
  • rectilinear Steiner tree
  • recurrence equations
  • recurrence relation
  • recursion termination
  • recursion tree
  • recursive data structure
  • recursive doubling
  • recursive language
  • recursively enumerable language
  • recursively solvable
  • reduced basis
  • reduced digraph
  • reduction
  • reflexive
  • regular decomposition
  • relation
  • relative performance guarantee
  • relaxation
  • relaxed balance
  • rescalable
  • restricted universe sort
  • Rice's method
  • root
  • root balance
  • rooted tree
  • rotation
  • rough graph
  • RP
  • run time
  • SAM
  • saturated edge
  • search tree property
  • secondary clustering
  • segment
  • self-loop
  • semidefinite programming
  • separation theorem
  • set
  • shared memory
  • shortcutting
  • shortest common supersequence
  • shortest spanning tree
  • sibling
  • Sierpinski triangle
  • signature
  • simple path
  • simple uniform hashing
  • simulation theorem
  • single program multiple data
  • singularity analysis
  • sink
  • skew symmetry
  • solvable
  • source
  • space-constructible function
  • spanning tree
  • sparse graph
  • sparsity
  • spatial access method
  • SPMD
  • SST
  • stable
  • stack tree
  • star-shaped polygon
  • start state
  • state
  • state machine
  • state transition
  • static
  • s-t cut
  • Steiner minimum tree
  • Steiner point
  • Steiner ratio
  • Steiner tree
  • Steiner vertex
  • Stirling's approximation
  • Stirling's formula
  • straight-line drawing
  • strictly decreasing
  • strictly increasing
  • string editing problem
  • strongly connected component
  • strongly connected graph
  • strongly NP-hard
  • subadditive ergodic theorem
  • subgraph
  • subsequence
  • subset
  • substring
  • subtree
  • suffix
  • suffix automaton
  • superimposed code
  • superset
  • supersink
  • supersource
  • symmetric
  • symmetric set difference
  • tail
  • target
  • temporal logic
  • terminal
  • terminal node
  • text
  • theta
  • three-dimensional
  • time-constructible function
  • time/space complexity
  • top-down tree automaton
  • topological order
  • topological sort
  • topology tree
  • total function
  • totally decidable language
  • totally decidable problem
  • totally undecidable problem
  • total order
  • tour
  • tractable
  • transducer
  • transition
  • transition function
  • transitive
  • transitive closure
  • transitive reduction
  • tree automaton
  • tree contraction
  • tree editing problem
  • tree traversal
  • triangle inequality
  • triconnected graph
  • trinary function
  • Turing machine
  • Turing reduction
  • Turing transducer
  • two-dimensional
  • unary function
  • uncomputable function
  • uncomputable problem
  • undecidable
  • undecidable language
  • undecidable problem
  • uniform circuit complexity
  • uniform circuit family
  • union
  • universal hashing
  • universal state
  • universal Turing machine
  • universe
  • unsolvable problem
  • unsorted list
  • Venn diagram
  • vertex
  • vertex coloring
  • vertex connectivity
  • vertex set
  • vertical visibility map
  • vertices
  • visibility map
  • visible
  • walk
  • weighted, directed graph
  • weighted graph
  • window
  • witness
  • work
  • work-depth model
  • work-efficient
  • work-preserving
  • worst case
  • worst-case cost
  • worst-case minimum access
  • xor
  • Yule distribution
  • 0-ary function
  • Zipfian distribution
  • Zipf's law
  • ZPP

Algorithmic Techniques

  • rho -approximation algorithm
  • approximation algorithm
  • backtracking
  • British Museum algorithm
  • brute force
  • collective recursion
  • decimation
  • deterministic algorithm
  • divide and conquer
  • divide and marriage before conquest
  • dynamic programming
  • dynamization transformation
  • exhaustive search
  • fathoming
  • fully polynomial approximation scheme
  • greedy algorithm
  • greedy heuristic
  • heuristic
  • iteration
  • memoization
  • metaheuristic
  • nondeterministic algorithm
  • parametric searching
  • pipelined divide and conquer
  • polynomial approximation scheme
  • prune and search
  • PTAS
  • randomization
  • random sampling
  • recursion
  • self-organizing heuristic
  • sparsification
  • symmetry breaking
  • tail recursion

Entries with No Type

  • AP
  • bucket trie
  • cascade merge sort
  • C curve
  • coding tree
  • decision tree
  • division method
  • double left rotation
  • double right rotation
  • Dragon curve
  • expandable hashing
  • fractal
  • free list
  • Herter-Heighway Dragon
  • Hilbert curve
  • interval tree
  • Karmarkar's algorithm
  • k-clustering
  • minimum path cover
  • OBDD
  • ordered binary decision diagram
  • orthogonal lists
  • overlapping subproblems
  • pairing heap
  • path cover
  • Peano curve
  • Post machine
  • prefix computation
  • radix quicksort
  • Randomized-Select
  • result cache
  • Sierpinski curve
  • spectral test
  • string similarity search
  • three-way radix quicksort
  • virtual hashing
Created Tue Nov 17 13:41:10 1998
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Tue Apr 1 08:48:04 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/termsType.html


Explanation

of the

Two-Level Index

of the

Dictionary of Algorithms and Data Structures

This site is a dictionary of algorithms, algorithmic techniques, data structures, archetypical problems, and related definitions. The main page includes a description of what subjects are and are not included, entries for about 1400 terms, and lists of references. However it is a lot to download if you have a slow connection or just want to look up one term. The two-column layout of the index takes a noticeable amount of time to render, too.

The two-level index is very brief. The first index has links to secondary index pages, and those link to the entries. This two-level approach trades a little less convenience (two clicks) for a download of about 1/20th the size.

There are additional index pages which list entries by area, for instance, sorting, searching, or graphs, and by type, for example, algorithms or data structures. A page also lists all implementations. We thank those who contributed definitions as well as many others who offered suggestions and corrections.

To define or correct terms, please contact Paul E. Black. We need help in automata theory, combinatorics, parallel or randomized algorithms, heuristics, and quantum computing. We do not include algorithms particular to business data processing, communications, operating systems or distributed algorithms, programming languages, AI, graphics, or numerical analysis: it is tough enough covering "general" algorithms and data structures. However, if you want to tackle one of these areas, we'll consider including them.

If you don't find a term with a leading variable, such as n-way, m-dimensional, or p-branching, look under k-.

To look up words or phrases, enter them in the box, then click the button. To look up algorithms by example, use AlgoVista.

Viewable With Any Browser

Created Thu Oct 26 12:03:12 2000
by Paul E. Black (paul.black@nist.gov)
Updated Tue Apr 1 08:47:30 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/twolevelExplain.html

NIST is an agency of the U.S. Commerce Department's Technology Administration


DADS Unified Index

Unified Index

of the

Dictionary of Algorithms and Data Structures

This is a unified index of all terms in the Dictionary, including many created only for web searches. For instance, TSP is listed under "traveling salesman" (one "l" in "traveling"), the American spelling, and "travelling salesman" (two l's), the British spelling. Other variants are "quick sort" and "quicksort", "sort" and "sorting algorithm", and "doubly linked list" and "two-way list".

Doubly linked list and synonyms actually appears four times: under doubly linked list, symmetrically linked list, two-way linked list, and two-way list. The last two would occur close to each other in the main index, so "two-way list" is only in this index for robots to find and index.

This page was never intended for human use. If you find a use for this page and have a suggestion to make it more usable, please let me (paul.black@nist.gov) know.

Run on Wed Jun 11 14:27:39 2003

  • rho -approximation algorithm
  • absolute performance guarantee
  • abstract data type
  • (a,b)-tree
  • accepting state
  • Ackermann's function
  • Ackerman's function
  • active data structure
  • acyclic digraph
  • acyclic directed graph
  • acyclic graph
  • adaptive heapsort
  • adaptive heap sort
  • adaptive Huffman encoding
  • adaptive k-d tree
  • adaptive sort
  • address-calculation sort
  • adjacency list
  • adjacency-list representation
  • adjacency matrix
  • adjacency-matrix representation
  • adjacent
  • admissible vertex
  • ADT
  • adversary
  • aglorithm
  • algarhythm
  • algarithm
  • algolrythm
  • algorhythm
  • algoritham
  • algorithim
  • algorithm
  • algorithm B
  • algorithm BSTW
  • algorithm FGK
  • algorithmically solvable
  • algorithms
  • algorithm V
  • algorithum
  • algorythm
  • all pairs shortest path
  • alphabet
  • Alpha Skip Search algorithm
  • alternating path
  • alternating Turing machine
  • alternation
  • American flag sort
  • amortized cost
  • amortized worst case
  • ancestor
  • and
  • ANSI
  • antichain
  • antisymmetric
  • AP
  • Apostolico-Crochemore
  • Apostolico-Giancarlo algorithm
  • approximate string matching
  • approximation algorithm
  • arborescence
  • arc
  • arithmetic coding
  • arithmetic encoding
  • array
  • array index
  • array merging
  • array search
  • articulation point
  • articulation vertex
  • assignment problem
  • association list
  • associative
  • associative array
  • assoc list
  • asymptotically equal to
  • asymptotically tight bound
  • asymptotic bound
  • asymptotic equipartition property
  • asymptotic lower bound
  • asymptotic space complexity
  • asymptotic time complexity
  • asymptotic upper bound
  • augmenting path
  • automaton
  • average case
  • average-case cost
  • AVL tree
  • backtracking
  • bag
  • balance
  • balanced binary search tree
  • balanced binary tree
  • balanced k-way merge sort
  • balanced merge sort
  • balanced multiway merge
  • balanced multiway tree
  • balanced quicksort
  • balanced tree
  • balanced two-way merge sort
  • BANG file
  • Batcher sort
  • Baum Welch algorithm
  • Bayer tree
  • BB alpha tree
  • BDD
  • BD-tree
  • Bellman-Ford algorithm
  • Benford's law
  • best case
  • best-case cost
  • best-first search
  • biconnected component
  • biconnected graph
  • bidirectional bubble sort
  • big-O notation
  • binary decision diagram
  • binary function
  • binary GCD algorithm
  • binary heap
  • binary insertion sort
  • binary knapsack problem
  • binary priority queue
  • binary relation
  • binary search
  • binary search tree
  • binary tree
  • binary tree representation of trees
  • bingo sort
  • binomial heap
  • binomial queue
  • binomial tree
  • bin packing problem
  • bin sort
  • bintree
  • bipartite graph
  • bipartite matching
  • bisector
  • bitonic sort
  • bit vector
  • BKP
  • Bk tree
  • block
  • block addressing index
  • blocking flow
  • block search
  • block searching
  • Bloom filter
  • blossom
  • bogo-sort
  • bogosort
  • bogus sort
  • boolean
  • boolean expression
  • boolean function
  • border
  • bottleneck traveling salesman
  • bottom-up tree automaton
  • boundary-based representation
  • bounded error probability in polynomial time
  • bounded queue
  • bounded stack
  • Boyer-Moore
  • Boyer-Moore-Horspool
  • bozo sort
  • BP
  • B+-tree
  • BPP
  • Bradford's law
  • branch and bound
  • branching
  • branching programs
  • breadth-first search
  • Bresenham's algorithm
  • brick sort
  • bridge
  • British Museum algorithm
  • brute force
  • brute force string search
  • brute force string search with mismatches
  • bsearch
  • B-spline
  • BSP-tree
  • B*-tree
  • B-tree
  • bubble sort
  • bucket
  • bucket array
  • bucketing method
  • bucket sort
  • bucket trie
  • buddy system
  • buddy tree
  • build-heap
  • busy beaver
  • BV-tree
  • Byzantine Agreement Problem
  • Byzantine generals
  • Byzantine generals problem
  • cactus stack
  • Calculus of Communicating Systems
  • calendar queue
  • candidate consistency testing
  • candidate verification
  • canonical complexity class
  • capacitated facility location
  • capacity
  • capacity constraint
  • cartesian tree
  • cascade merge sort
  • Cayley-Purser
  • CBT
  • CCS
  • C curve
  • cell probe model
  • cell tree
  • cellular automaton
  • centroid
  • certificate
  • chain
  • chaining
  • child
  • Chinese postman problem
  • Chinese remainder theorem
  • Christofides algorithm
  • Christofides heuristic
  • chromatic index
  • chromatic number
  • Church-Turing thesis
  • circuit
  • circuit complexity
  • circuit value problem
  • circular list
  • circular queue
  • clique
  • clique problem
  • clustering
  • clustering free
  • coalesced chaining
  • coalesced hashing
  • coarsening
  • cocktail shaker sort
  • codeword
  • coding tree
  • collective recursion
  • collision
  • collision resolution scheme
  • Colussi
  • combination
  • comb sort
  • Communicating Sequential Processes
  • commutative
  • compact DAWG
  • comparison sort
  • competitive analysis
  • competitive ratio
  • complement
  • complete binary tree
  • complete graph
  • complete k-ary tree
  • completely connected graph
  • complete tree
  • complexity
  • complexity class
  • compliment
  • computable
  • computable function
  • concave function
  • concurrent flow
  • concurrent read, concurrent write
  • concurrent read, exclusive write
  • configuration
  • confluently persistent data structure
  • conjunction
  • connected components
  • connected graph
  • coNP
  • constant function
  • container
  • continuous knapsack problem
  • Cook reduction
  • Cook's theorem
  • counting sort
  • covering
  • CP algorithm
  • CRC
  • CRCW
  • CREW
  • critical path problem
  • CSP
  • CTL
  • cuckoo hashing
  • cut
  • cutting plane
  • cutting stock problem
  • cutting theorem
  • cut vertex
  • cycle
  • cyclic redundancy check
  • D-adjacent
  • DAG
  • DAG shortest paths
  • database
  • data structure
  • data structure persistance
  • data structure persistence
  • DAWG
  • decidable
  • decidable language
  • decimation
  • decision problem
  • decision tree
  • decomposable searching problem
  • degree
  • dense graph
  • depoissonization
  • depth
  • depth-first search
  • deque
  • derangement
  • descendant
  • deterministic
  • deterministic algorithm
  • deterministic finite automata string search
  • deterministic finite automaton
  • deterministic finite state automaton
  • deterministic finite state machine
  • deterministic finite tree automaton
  • deterministic pushdown automaton
  • deterministic tree automaton
  • Deutsch-Jozsa algorithm
  • DFA
  • DFS
  • DFS forest
  • DFTA
  • diagonalization
  • diameter
  • dichotomic search
  • dictionary
  • diet
  • difference
  • digital search tree
  • digital tree
  • digraph
  • Dijkstra's algorithm
  • diminishing increment sort
  • dining philosophers
  • direct chaining hashing
  • directed acyclic graph
  • directed acyclic word graph
  • directed graph
  • directory
  • discrete interval encoding tree
  • discrete p-center
  • disjoint set
  • disjunction
  • distributional complexity
  • distribution sort
  • divide and conquer
  • divide and marriage before conquest
  • division method
  • domain
  • don't care
  • doomsday algorithm
  • Doomsday rule
  • double-direction bubble sort
  • double-ended priority queue
  • double hashing
  • double left rotation
  • double metaphone
  • double right rotation
  • doubly-ended queue
  • doubly linked list
  • DPDA
  • Dragon curve
  • dual
  • dual linear program
  • Dutch national flag
  • dynamic
  • dynamic array
  • dynamic hashing
  • dynamic programming
  • dynamization transformation
  • edge
  • edge coloring
  • edge connectivity
  • edge crossing
  • edit distance
  • edit operation
  • edit script
  • efficiency
  • eight queens
  • 8 queens
  • element uniqueness
  • EM data structure
  • end-of-string
  • enfilade
  • ERCW
  • EREW
  • Euclidean algorithm
  • Euclidean distance
  • Euclidean Steiner tree
  • Euclidean traveling salesman problem
  • Euclid's algorithm
  • Euler cycle
  • Eulerian graph
  • Eulerian path
  • Euler tour
  • exact string matching
  • EXCELL
  • exchange sort
  • exclusive or
  • exclusive read, concurrent write
  • exclusive read, exclusive write
  • exhaustive search
  • existential state
  • expandable hashing
  • expander graph
  • exponential
  • extended binary tree
  • extended Euclid's algorithm
  • extended k-d tree
  • extendible hashing
  • external index
  • external memory algorithm
  • external memory data structure
  • external merge
  • external merge sort
  • external node
  • external quicksort
  • external radix sort
  • external sort
  • extrapolation search
  • extremal
  • extreme point
  • facility location
  • factor
  • factorial
  • fast fourier transform
  • fathoming
  • feasible region
  • feasible solution
  • feedback edge
  • Ferguson-Forcade algorithm
  • FFT
  • Fibonacci number
  • Fibonacci numbers
  • Fibonacci search
  • Fibonacci tree
  • Fibonnaci heap
  • FIFO
  • Find
  • find kth least element
  • finitary tree
  • finite automaton
  • finite Fourier transform
  • finite state automaton
  • finite state machine
  • finite state machine minimization
  • finite state transducer
  • first-come, first-served
  • first-in, first-out
  • fixed-grid method
  • flash sort
  • flow
  • flow conservation
  • flow function
  • flow network
  • Floyd-Warshall algorithm
  • Ford-Bellman
  • Ford-Fulkerson method
  • forest
  • forest editing problem
  • formal language
  • formal methods
  • formal verification
  • forward index
  • fractal
  • fractional knapsack problem
  • fractional solution
  • free edge
  • free list
  • free tree
  • free vertex
  • frequency count heuristic
  • full array
  • full binary tree
  • full inverted index
  • fully dynamic graph problem
  • fully inverted index
  • fully persistent data structure
  • fully polynomial approximation scheme
  • function
  • functional data structure
  • Galil-Giancarlo
  • Galil-Seiferas
  • gamma function
  • GBD-tree
  • GCD
  • geometric optimization problem
  • globally optimal
  • global optimum
  • graph
  • graph coloring
  • graph concentration
  • graph drawing
  • graph isomorphism
  • graph partition
  • Gray code
  • greatest common denominator
  • greatest common divisor
  • greedy algorithm
  • greedy heuristic
  • grey code
  • grid drawing
  • grid file
  • Grover's algorithm
  • halting problem
  • Hamiltonian cycle
  • Hamming distance
  • hash
  • hash function
  • hash heap
  • hash table
  • hash table delete
  • Hausdorff distance
  • hB-tree
  • head
  • heap
  • heap condition
  • heapify
  • heap ordered
  • heap property
  • heap sort
  • heapsort
  • heaviest common subsequence
  • height
  • height-balanced binary search tree
  • height-balanced tree
  • Herter-Heighway Dragon
  • heuristic
  • hidden Markov model
  • Hilbert curve
  • histogram sort
  • HMM
  • homeomorphic
  • horizontal visibility map
  • Horner's rule
  • Horspool
  • hueristic
  • Huffman coding
  • Huffman encoding
  • Huffmann coding
  • Hufman encoding
  • hybrid algorithm
  • hyperedge
  • hypergraph
  • ID
  • ideal merge
  • implication
  • implies
  • in-branching
  • inclusion-exclusion principle
  • inclusive or
  • incompressible string
  • in-degree
  • independent set
  • index file
  • information theoretic bound
  • inorder traversal
  • in-order traversal
  • in-place sort
  • insertion sort
  • instantaneous description
  • integer linear program
  • integer multi-commodity flow
  • integer polyhedron
  • interactive proof system
  • interior-based representation
  • interior node
  • internal node
  • internal sort
  • interpolation search
  • interpolation-sequential search
  • interpolation sort
  • intersection
  • interval tree
  • intractable
  • introsort
  • intro sort
  • introspection sort
  • introspective sort
  • inverse Ackermann function
  • inverse Ackerman's function
  • inverted file
  • inverted file index
  • inverted index
  • irreflexive
  • isomorphic
  • iteration
  • Jaro-Winkler
  • Johnson's algorithm
  • Johnson-Trotter
  • jsort
  • j sort
  • jump search
  • Karmarkar's algorithm
  • Karnaugh map
  • Karp-Rabin
  • Karp reduction
  • k-ary heap
  • k-ary Huffman encoding
  • k-ary tree
  • k-clustering
  • k-coloring
  • k-connected graph
  • k-d-B-tree
  • k-dimensional
  • K-dominant match
  • k-d tree
  • key
  • KMP
  • KmpSkip Search
  • knapsack problem
  • knight's tour
  • Knuth-Morris-Pratt algorithm
  • Königsberg bridges problem
  • Koenigsberg bridges problem
  • Kolmogorov complexity
  • Kraft's inequality
  • Kripke structure
  • Kruskal's algorithm
  • kth order Fibonacci numbers
  • kth shortest path
  • kth shortest path
  • kth smallest element
  • KV diagram
  • k-way merge
  • k-way merge sort
  • k-way tree
  • labeled graph
  • language
  • last-in, first-out
  • Las Vegas algorithm
  • lattice
  • layered digraph
  • layered graph
  • LCM
  • LCS
  • leaf
  • least common multiple
  • leftist tree
  • left rotation
  • left single rotation
  • Lempel-Ziv
  • Lempel-Ziv-Welch
  • Lempel-Ziv-Welch data compression
  • level-order traversal
  • Levenshtein distance
  • lexicographical order
  • LIFO
  • linear
  • linear congruential generator
  • linear hash
  • linear insertion sort
  • linear order
  • linear probing
  • linear probing sort
  • linear product
  • linear program
  • linear quadtree
  • linear search
  • link
  • linked list
  • list
  • list contraction
  • little-o notation
  • Lm distance
  • load factor
  • local alignment
  • locally optimal
  • local optimum
  • locator
  • logarithmic
  • longest common subsequence
  • longest common substring
  • Lotka's law
  • lower bound
  • lower triangular matrix
  • lowest common ancestor
  • l-reduction
  • lucksort
  • luckysort
  • lucky sort
  • LZW compression
  • Malhotra-Kumar-Maheshwari blocking flow
  • Manhattan distance
  • many-one reduction
  • Markov chain
  • Marlena
  • Master theorem
  • matched edge
  • matched vertex
  • matching
  • matrix
  • matrix-chain multiplication problem
  • max
  • max-heap property
  • maximal independent set
  • maximally connected component
  • Maximal Shift
  • maximum bipartite matching
  • maximum-flow problem
  • MAX-SNP
  • MBB
  • Mealy machine
  • mean
  • median
  • meld
  • memoization
  • memoize
  • merge
  • mergesort
  • merge sort
  • meromorphic function
  • metaheuristic
  • metaphone
  • midrange
  • Miller-Rabin
  • Miller-Rabin probabilistic primality test
  • min
  • min-heap property
  • minimal antichain decomposition
  • minimal perfect hashing
  • minimum bounding box
  • minimum code spanning tree
  • minimum cost spanning tree
  • minimum cut
  • minimum path cover
  • minimum spanning tree
  • minimum vertex cut
  • mixed integer linear program
  • mode
  • model checking
  • model of computation
  • moderately exponential
  • MODIFIND
  • monotone priority queue
  • monotonically decreasing
  • monotonically increasing
  • Monte Carlo algorithm
  • Moore machine
  • Morris-Pratt
  • move
  • move-to-front heuristic
  • move-to-root heuristic
  • MST
  • multi-commodity flow
  • multigraph
  • multilayer grid file
  • multiplication method
  • multiplicative hashing
  • multiprefix
  • multiprocessor model
  • multi-set
  • multiset
  • multi suffix tree
  • multiway decision
  • multiway merge
  • multiway search tree
  • multiway tree
  • naive string search
  • nand
  • n-ary function
  • NC
  • NC many-one reducibility
  • nearest neighbor
  • negation
  • network flow
  • network flow problem
  • next state
  • NFA
  • NFTA
  • NIST
  • node
  • nonbalanced merge
  • nonbalanced merge sort
  • nondeterministic
  • nondeterministic algorithm
  • nondeterministic finite automaton
  • nondeterministic finite state machine
  • nondeterministic finite tree automaton
  • nondeterministic polynomial time
  • nondeterministic tree automaton
  • nondeterministic Turing machine
  • nonterminal node
  • nor
  • not
  • Not So Naive
  • NP
  • NPC
  • NP-complete
  • NP-complete language
  • NP-hard
  • n queens
  • nullary function
  • null tree
  • NYSIIS
  • O
  • OBDD
  • objective function
  • oblivious binary decision diagram
  • occurrence
  • octree
  • octtree
  • odd shaped array
  • off-line algorithm
  • offset
  • omega
  • omicron
  • one-dimensional
  • on-line algorithm
  • O notation
  • o notation
  • open addressing
  • optimal
  • optimal cost
  • optimal hashing
  • optimal merge
  • optimal mismatch
  • optimal polygon triangulation problem
  • optimal polyphase merge
  • optimal polyphase merge sort
  • optimal solution
  • optimal triangulation problem
  • optimal value
  • optimization problem
  • or
  • oracle set
  • oracle tape
  • oracle Turing machine
  • order
  • ordered array
  • ordered binary decision diagram
  • ordered linked list
  • ordered tree
  • order preserving minimal perfect hashing
  • oriented acyclic graph
  • oriented graph
  • oriented tree
  • orthogonal drawing
  • orthogonal lists
  • orthogonally convex rectilinear polygon
  • oscillating merge sort
  • out-branching
  • out-degree
  • overlapping subproblems
  • P
  • packing
  • padding argument
  • pagoda
  • pairing heap
  • PAM
  • parallel computation thesis
  • parallel prefix computation
  • parallel random-access machine
  • parametric searching
  • parent
  • partial function
  • partially decidable problem
  • partially dynamic graph problem
  • partially ordered set
  • partially persistent data structure
  • partial order
  • partial recursive function
  • partition
  • passive data structure
  • path
  • path cover
  • path system problem
  • Patricia tree
  • pattern
  • pattern element
  • P-complete
  • PCP
  • PD
  • PDA
  • Peano curve
  • Pearson's hash
  • perfect binary tree
  • perfect hashing
  • perfect k-ary tree
  • perfect match
  • perfect matching
  • perfect shuffle
  • performance guarantee
  • performance ratio
  • permutation
  • permute
  • persistant data structure
  • persistent data structure
  • persistent data structure with confluence
  • pile
  • pipelined divide and conquer
  • planar graph
  • planarity
  • planarization
  • planar straight-line graph
  • PLOP-hashing
  • point access method
  • pointer jumping
  • pointer machine
  • poissonization
  • polychotomy
  • polyhedron
  • polylogarithmic
  • polynomial
  • polynomial approximation scheme
  • polynomial hierarchy
  • polynomial time
  • polynomial-time algorithm
  • polynomial-time approximation scheme
  • polynomial-time Church-Turing thesis
  • polynomial-time reduction
  • polyphase merge
  • polyphase merge sort
  • polytope
  • poset
  • postfix traversal
  • Post machine
  • postman's sort
  • postorder traversal
  • Post's correspondence problem
  • potential function
  • PRAM
  • predicate
  • prefix
  • prefix code
  • prefix computation
  • prefix sums
  • prefix traversal
  • preorder traversal
  • primary clustering
  • primitive recursive
  • Prim's algorithm
  • principle of optimality
  • priority queue
  • prisoner's dilemma
  • PRNG
  • probabilistic algorithm
  • probabilistically checkable proof
  • probabilistic Turing machine
  • probe sequence
  • procedure
  • process algebra
  • proper
  • proper binary tree
  • proper coloring
  • proper subset
  • property list
  • prop list
  • prune and search
  • pseudorandom number
  • pseudo-random number generator
  • PTAS
  • pth order Fibonacci numbers
  • P-tree
  • purely functional language
  • pushdown
  • pushdown automaton
  • pushdown transducer
  • p-way merge sort
  • qmsort
  • qm sort
  • qsort
  • q sort
  • quadratic hashing
  • quadratic probing
  • quadtree
  • quadtree complexity theorem
  • quad trie
  • quantum computation
  • queue
  • quick search
  • quickselect
  • quick select
  • quick sort
  • quicksort
  • Rabin-Karp
  • radix quicksort
  • radix sort
  • ragged matrix
  • Raita
  • random access machine
  • randomization
  • randomized algorithm
  • randomized binary search tree
  • randomized complexity
  • randomized polynomial time
  • randomized rounding
  • randomized search tree
  • Randomized-Select
  • random number generator
  • random sampling
  • range
  • range sort
  • rank
  • Ratcliff/Obershelp pattern recognition
  • RBST
  • reachable
  • rebalance
  • recognizer
  • rectangular matrix
  • rectilinear
  • rectilinear distance
  • rectilinear Steiner tree
  • recurrence equations
  • recurrence relation
  • recurrences
  • recursion
  • recursion termination
  • recursion tree
  • recursive
  • recursive data structure
  • recursive doubling
  • recursive language
  • recursively enumerable language
  • recursively solvable
  • red-black tree
  • reduced basis
  • reduced digraph
  • reduced ordered binary decision diagram
  • reduction
  • reflexive
  • regular decomposition
  • rehashing
  • r.e. language
  • relation
  • relational structure
  • relative performance guarantee
  • relaxation
  • relaxed balance
  • rescalable
  • restricted universe sort
  • result cache
  • Reverse Colussi
  • Reverse Factor
  • R-file
  • rho-approximation algorithm
  • Rice's method
  • right rotation
  • right single rotation
  • right-threaded tree
  • RNG
  • ROBDD
  • root
  • root balance
  • rooted tree
  • rotate left
  • rotate right
  • rotation
  • rough graph
  • RP
  • R+-tree
  • R*-tree
  • R-tree
  • run time
  • saguaro stack
  • SAM
  • saturated edge
  • SBB tree
  • scan
  • scapegoat tree
  • search
  • search tree
  • search tree property
  • secant search
  • secondary clustering
  • segment
  • Select
  • select and partition
  • selection problem
  • selection sort
  • select kth element
  • select mode
  • self-loop
  • self-organizing heuristic
  • self-organizing list
  • self-organizing sequential search
  • self-organizing strategy
  • semidefinite programming
  • separate chaining hashing
  • separation theorem
  • sequential search
  • set
  • set complement
  • set cover
  • set covering problem
  • set difference
  • set intersection
  • set packing
  • set union
  • shadow heap
  • shadow merge
  • shadow merge insert
  • shaker sort
  • Shannon-Fano coding
  • shared memory
  • Shell-Metzner sort
  • shell sort
  • Shell sort
  • Shift-Or
  • Shor's algorithm
  • shortcutting
  • short cutting
  • shortest common supersequence
  • shortest common superstring
  • shortest path
  • shortest spanning tree
  • shuffle
  • sibling
  • Sierpinski curve
  • Sierpinski triangle
  • sieve of Eratosthenes
  • sift up
  • signature
  • Simon algorithm
  • Simon's algorithm
  • simple merge
  • simple path
  • simple uniform hashing
  • simplex
  • simulated annealing
  • simulation theorem
  • single-destination shortest-path problem
  • single-pair shortest-path problem
  • single program multiple data
  • single-source shortest-path problem
  • singly linked list
  • singularity analysis
  • sink
  • sinking sort
  • sink sort
  • skd-tree
  • skew symmetry
  • skiplist
  • skip list
  • Skip Search
  • slope selection
  • Smith algorithm
  • Smith-Waterman algorithm
  • smoothsort
  • solvable
  • sort
  • sorted array
  • sorted list
  • sorting algorithm
  • sort in place
  • sort in-place
  • sort merge
  • soundex
  • source
  • source-target directed acyclic graph
  • space-constructible function
  • spaghetti stack
  • spanning tree
  • sparse array
  • sparse graph
  • sparse matrix
  • sparsification
  • sparsity
  • spatial access method
  • spectral test
  • splaying
  • splay tree
  • SPMD
  • square matrix
  • square root
  • SST
  • stable
  • stack
  • stack tree
  • star-shaped polygon
  • start state
  • state
  • state machine
  • state transition
  • static
  • static Huffman encoding
  • s-t cut
  • st-digraph
  • Steiner minimum tree
  • Steiner point
  • Steiner ratio
  • Steiner tree
  • Steiner vertex
  • Steinhaus-Johnson-Trotter
  • Stirling's approximation
  • Stirling's formula
  • stooge sort
  • straight-line drawing
  • strictly decreasing
  • strictly increasing
  • strictly lower triangular matrix
  • strictly upper triangular matrix
  • string
  • string editing problem
  • string matching
  • string matching on ordered alphabets
  • string matching with errors
  • string matching with mismatches
  • string search
  • string searching
  • string similarity search
  • strip packing
  • strongly connected component
  • strongly connected graph
  • strongly NP-hard
  • stupid sort
  • subadditive ergodic theorem
  • subgraph
  • subgraph isomorphism
  • subsequence
  • subset
  • substring
  • subtree
  • subword
  • suffix
  • suffix array
  • suffix automaton
  • suffix tree
  • superimposed code
  • superset
  • supersink
  • supersource
  • symmetric
  • symmetrically linked list
  • symmetric binary B-tree
  • symmetric set difference
  • symmetry breaking
  • tail
  • tail recursion
  • target
  • taxi cab metric
  • temporal logic
  • terminal
  • terminal node
  • ternary search tree
  • text
  • text match
  • text searching
  • theta
  • threaded binary tree
  • threaded tree
  • three-dimensional
  • three-way merge sort
  • three-way radix quicksort
  • time-constructible function
  • time/space complexity
  • top-down radix sort
  • top-down tree automaton
  • topological order
  • topological sort
  • topology tree
  • top sort
  • total function
  • totally decidable language
  • totally decidable problem
  • totally undecidable problem
  • total order
  • tour
  • tournament
  • towers of Hanoi
  • tractable
  • transducer
  • transition
  • transition function
  • transitive
  • transitive closure
  • transitive reduction
  • transpose sequential search
  • traveling salesman
  • traveling salesman problem
  • travelling salesman problem
  • treap
  • tree
  • tree automaton
  • tree contraction
  • tree editing problem
  • tree sort
  • tree traversal
  • triangle inequality
  • triconnected graph
  • trie
  • trinary function
  • tripartition
  • TSP
  • TST
  • Turbo-BM
  • Turbo Reverse Factor
  • Turing machine
  • Turing reduction
  • Turing transducer
  • twin grid file
  • two-dimensional
  • two-level grid file
  • two-terminal dag
  • 2-3-4 tree
  • 2-3 tree
  • Two Way algorithm
  • two-way linked list
  • two-way list
  • two-way merge sort
  • UB
  • UKP
  • unary function
  • unbounded knapsack problem
  • uncomputable function
  • uncomputable problem
  • undecidable
  • undecidable language
  • undecidable problem
  • undirected graph
  • uniform circuit complexity
  • uniform circuit family
  • uniform hashing
  • uniform matrix
  • union
  • union of automata
  • universal hashing
  • universal state
  • universal Turing machine
  • universe
  • UnShuffle sort
  • unsolvable problem
  • unsorted list
  • upper triangular matrix
  • Van Emde-Boas priority queue
  • vehicle routing problem
  • Veitch diagram
  • Venn diagram
  • vertex
  • vertex coloring
  • vertex connectivity
  • vertex cover
  • vertex covering problem
  • vertexes
  • vertex set
  • vertical visibility map
  • vertices
  • virtual hashing
  • visibility map
  • visible
  • Viterbi algorithm
  • Viterbi search
  • VRP
  • walk
  • weak-heap
  • weak-heap sort
  • weight-balanced tree
  • weighted digraph
  • weighted, directed graph
  • weighted graph
  • window
  • witness
  • work
  • work-depth model
  • work-efficient
  • work-preserving
  • worst case
  • worst-case cost
  • worst-case minimum access
  • xor
  • Yule distribution
  • Zeller's algorithm
  • Zeller's congruence
  • 0-ary function
  • zero error probability in polynomial time
  • 0-1 knapsack problem
  • Zhu-Takaoka
  • Zipfian distribution
  • Zipf's law
  • ZPP
Go to the Dictionary of Algorithms and Data Structures home page.
Created Thu Jan 17 10:55:24 2002
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Tue Apr 1 08:46:56 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/ui.html

to NIST home page


0-1 knapsack problem

(classic problem)

Definition: See knapsack problem.

Author: PEB

Implementation

(Fortran and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 12:55:51 2002.
HTML page formatted Thu Apr 17 10:51:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/01KnapsackProblem.html


absolute performance guarantee

(definition)

Definition: An approximation algorithm will return a solution at most a bounded amount more (or less, as appropriate) than the optimum.

See also relative performance guarantee.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:49:36 2000.
HTML page formatted Mon May 12 10:30:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/absolute.html


abstract data type

(definition)

Definition: A set of data values and associated operations that are precisely specified independent of any particular implementation.

Also known as ADT.

See also dictionary, stack, queue, set, data structure.

Note: Since the data values and operations are defined with mathematical precision, rather than as an implementation in a computer language, we may reason about effects of the operations, relations to other abstract data types, whether a program implements the data type, etc.

One of the simplest abstract data types is the stack. The operations new(), push(v, S), top(S), and popOff(S) may be defined as following.

  1. new() returns a stack
  2. popOff(push(v, S)) = S
  3. top(push(v, S)) = v
where S is a stack and v is a value. (The usual pop operation is a combination of top, to return the top value, and popOff, to remove the top value.) Contrast this with the axiomatic definition of a set, a dictionary, or a queue.

From these axioms, one may define equality between stacks, define a pop function which returns the top value in a non-empty stack, etc. For instance, the predicate isEmpty(S) may be added and defined with the following additional axioms.

  4. isEmpty(new()) = true
  5. isEmpty(push(v, S)) = false

After Nell Dale <ndale@cs.utexas.edu> May 2001.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 10 10:01:22 2003.
HTML page formatted Thu Apr 17 10:48:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/abstractDataType.html


(a,b)-tree

(data structure)

Definition: A search tree with the restrictions that all leaves are at the same depth and all internal nodes have between a and b children. More formally a and b are integers such that 2 less than or equal to a less than or equal to (b+1)/2. If µ is an internal node with d children, the root has d greater than or equal to 2, otherwise a less than or equal to d less than or equal to b.

See also B-tree.

Note: From Algorithms and Theory of Computation Handbook, page 4-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:48:31 2000.
HTML page formatted Mon May 12 10:30:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/abtree.html


accepting state

(definition)

Definition: If a finite state machine finishes an input string and is in an accepting state, the string is accepted or considered to be valid.

See also recognizer.

Note: A machine may enter an accepting state, then leave it. Acceptance depends on whether the machine finishes in an accepting state.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 09:15:20 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/acceptingstt.html


Ackermann's function

(algorithm)

Definition: A function of two parameters whose value grows very fast.

Formal Definition:

  • A(1, j)=2j for j greater than or equal to 1
  • A(i, 1)=A(i-1, 2) for i greater than or equal to 2
  • A(i, j)=A(i-1, A(i, j-1)) for i, j greater than or equal to 2

See also inverse Ackermann function.

Note: In 1928, Wilhelm Ackermann (1896 - 1962) observed that A(x,y,z), the z-fold iterated exponentiation of x with y, is an example of a recursive function which is not primitive recursive. A(x,y,z) was simplified to a function of 2 variables by Rosza Peter whose initial condition was simplified by Raphael Robinson. Ackermann was a student of David Hilbert.

After [CLR90, page 451].

Author: PEB

Implementation

History of the function and (Modula-2) code, (Lisp), (Pascal), (Miranda).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 10:59:15 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/ackermann.html


Ackerman's function

(algorithm)

Definition: See Ackermann's function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 10:59:15 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/AckermansFunction.html


active data structure

(data structure)

Definition: A data structure with an associated thread or process that performs internal operations to give the external behavior of another, usually more general, data structure.

Also known as functional data structure.

See also passive data structure.

Note: For example, a queue is usually considered to be unbounded. However, actual queues provided by the hardware or operating system may be significantly limited. Changing the writing and reading processes to use a bounded queue makes those applications more complicated. However, an active queue can accept input from the writer through a system queue, and save items in memory or on disk if the other system queue for the reader is full. When the reader's queue has space, items can be retrieved and put back in the queue. Although there are now three components, rather than just the writer and reader, the high level abstraction is very simple and clear.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 18 14:16:24 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/activeDataStruc.html


acyclic digraph

(definition)

Definition: See directed acyclic graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:34:39 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/acyclicDigraph.html


acyclic directed graph

(definition)

Definition: See directed acyclic graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:34:39 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/acyclicDirectedGraph.html


acyclic graph

(definition)

Definition: A graph with no path which starts and ends at the same vertex and repeats no other vertex.

See also cycle, directed acyclic graph, simple path.

Note: An acyclic undirected graphic is like a tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:17:01 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/acyclicgraph.html


adaptive heap sort

(algorithm)

Definition: A variant of heapsort that uses a randomized binary search tree (RBST) to structure the input according to any preexisting order. The RBST is used to select candidates that are put into the heap so the heap doesn't need to keep track of all elements.

See also adaptive sort.

Author: IR

More information

C. Levcopoulos and O. Petersson, Adaptive Heapsort, J. of Algorithms 14:395-413, 1993.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 16:25:25 2002.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/adaptiveHeapSort.html


adaptive Huffman encoding

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Huffman encoding.

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 27 12:48:21 2000.
HTML page formatted Thu Apr 17 10:48:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/adaptiveHuffman.html


adaptive sort

(definition)

Definition: A sorting algorithm that can take advantage of existing order in the input, reducing its requirements for computational resources as a function of the disorder in the input.

See also adaptive heap sort.

Note: From Algorithms and Theory of Computation Handbook, page 3-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 16:25:17 2002.
HTML page formatted Mon May 12 10:30:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/adaptivesort.html


adaptive k-d tree

(data structure)

Definition: A tree for multidimensional points where successive levels may be split along different dimensions.

See also k-d tree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:39:05 2001.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/adaptkdtree.html


address-calculation sort

(algorithm)

Definition: A sort algorithm which uses knowledge of the domain of the items to calculate the position of each item in the sorted array.

See also radix sort, bucket sort.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 10:23:52 1999.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/addresscalc.html


adjacency list

(data structure)

Definition: See adjacency-list representation.

Authors: BB,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:46:03 2002.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/adjacencyList.html


adjacency-list representation

(data structure)

Definition: A representation of a directed graph with n vertices using an array of n lists of vertices. List i contains vertex j if there is an edge from vertex i to vertex j. A weighted graph may be represented with a list of vertex/weight pairs. An undirected graph may be represented by having vertex j in the list for vertex i and vertex i in the list for vertex j.

See also adjacency-matrix representation, sparse graph.

Note: Suppose we have a directed graph with four vertices. Here are adjacency-matrix and adjacency-list representations. The arrow (->) means a link in a list.

    1 2 3 4
 1  1 1 1 1
 2  1 0 0 0
 3  0 1 0 1
 4  0 1 1 0

 1  -> 1 -> 2 -> 3 -> 4
 2  -> 1
 3  -> 2 -> 4
 4  -> 2 -> 3

One variant is to have an array of columns, rather than rows, with the list going "down". The adjacency-list representation is more compact for a sparse matrix.

Authors: BB,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:46:03 2002.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/adjacencyListRep.html


adjacency matrix

(data structure)

Definition: See adjacency-matrix representation.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:41:33 2002.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/adjacencyMatrix.html


adjacency-matrix representation

(data structure)

Definition: A representation of a directed graph with n vertices using an n × n matrix, where the entry at (i,j) is 1 if there is an edge from vertex i to vertex j; otherwise the entry is 0. A weighted graph may be represented using the weight as the entry. An undirected graph may be represented using the same entry in both (i,j) and (j,i) or using an upper triangular matrix.

See also adjacency-list representation, dense graph.

Note: Suppose we have a directed graph with four vertices. Here are adjacency-matrix and adjacency-list representations. The arrow (->) means a link in a list.

    1 2 3 4
 1  1 1 1 1
 2  1 0 0 0
 3  0 1 0 1
 4  0 1 1 0

 1  -> 1 -> 2 -> 3 -> 4
 2  -> 1
 3  -> 2 -> 4
 4  -> 2 -> 3

The adjacency-list representation is more compact for a sparse matrix.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:41:33 2002.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/adjacencyMatrixRep.html


adjacent

(definition)

Definition: Two vertices of a graph are adjacent if there is an edge between them. Two edges of a graph are adjacent if they connect the same vertex.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:12:19 2000.
HTML page formatted Thu Apr 17 10:48:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/adjacent.html


admissible vertex

(definition)

Definition: See the explanation at path system problem.

Note: From Algorithms and Theory of Computation Handbook, page 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:48:23 2000.
HTML page formatted Mon May 12 10:30:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/admissible.html


ADT

(definition)

Definition: See abstract data type.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 10 10:01:22 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/adt.html


adversary

(definition)

Definition: A theoretical agent that uses information about the past moves of an on-line algorithm to choose inputs that force the worst-case cost of the algorithm.

See also best-case cost.

Note: From Algorithms and Theory of Computation Handbook, page 10-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:03:54 2002.
HTML page formatted Mon May 12 10:30:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/adversary.html


aglorithm

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/aglorithm.html


algarhythm

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/algarhythm.html


algarithm

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/algarithm.html


algolrythm

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/algolrythm.html


algorhythm

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorhythm.html


algoritham

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/algoritham.html


algorithim

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithim.html


algorithm

(definition)

Definition: A computable set of steps to achieve a desired result.

See also probabilistic algorithm, randomized algorithm, deterministic algorithm, nondeterministic algorithm, on-line algorithm, off-line algorithm, external memory algorithm.

Note: The word comes from the Persian author Abu Ja'far Mohammed ibn Mûsâ al-Khowârizmî who wrote a book with arithmetic rules dating from about 825 A.D.

Author: PEB

More information

The Analysis of Algorithms web site.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithm.html


algorithm B

(algorithm)

Definition: See binary GCD algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 19 16:35:10 2002.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithmB.html


algorithm BSTW

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Lempel-Ziv-Welch.

More information

survey of data compression

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 12:47:34 2001.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithmBSTW.html


algorithm FGK

(algorithm)

Definition: (no definition here, yet, but you can help.)

More information

survey of data compression

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Sep 27 08:52:35 1999.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithmFGK.html


algorithmically solvable

(definition)

Definition: See decidable.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:22:08 2002.
HTML page formatted Mon May 12 10:30:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithmicallySolvable.html


algorithms

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithms.html


algorithm V

(algorithm)

Definition: (no definition here, yet, but you can help.)

More information

survey of data compression

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Sep 27 08:53:04 1999.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithmV.html


algorithum

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorithum.html


algorythm

(definition)

Definition: See algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:39:17 2003.
HTML page formatted Thu Apr 17 10:48:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/algorythm.html


all pairs shortest path

(classic problem)

Definition: Find the weight (or length) of the shortest paths between all pairs of vertices in a weighted, directed graph.

See also Floyd-Warshall algorithm, Johnson's algorithm Dijkstra's algorithm, Bellman-Ford algorithm, similar problems: minimum spanning tree, traveling salesman.

Note: The problem is to find the weights of the shortest paths between all pairs of vertices. For a map, it is to produce the (shortest) road distances between all cities, not which roads to take to get from one city to another.

A modification to most algorithms finds the shortest path, too. In predecessor[i][j] save the immediate predecessor of the shortest path from i to j. Suppose predecessor[i][j] is k; then the shortest path ends with ... -> k -> j. If predecessor[i][k] is p, the shortest path ends with ... -> p -> k -> j. Continue working backwards until you reach i.

After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 22 11:55:46 2002.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/allpairsshrt.html


alpha

(algorithm)

Definition: See inverse Ackermann function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:27:17 2002.
HTML page formatted Thu Apr 17 10:48:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/alpha.html


alphabet

(definition)

Definition: The set of all possible symbols in an application. For instance, input characters used by a finite state machine, letters making up strings in a language, or symbols in a pattern element. In some cases, an alphabet may be infinite.

See also don't care.

Note: An alphabet may be as simple as the booleans 1 and 0, or as rich as the key words and token types in a programming language.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 09:56:45 2000.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/alphabet.html


Alpha Skip Search algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:10:28 2003.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/alphaskipsr.html


alternation

(definition)

Definition: A model of computation proposed by A. K. Chandra, L. Stockmeyere, and D. Kozen, which has two kinds of states, AND and OR. The definition of accepting computation is adjusted accordingly.

See also time/space complexity, Turing machine.

Note: First proposed as a model for parallel computation, it has been widely used to prove complexity bounds on problems.

Author: SKS

More information

A. K. Chandra and L. J. Stockmeyer, Alternation, pp 98-108, and D. Kozen, On Parallelism in Turing Machines, pp 89-97, both in Proc. Seventeenth Annual IEEE Symposium on Foundations of Computer Science, 1976.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 5 10:59:21 2001.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/alternation.html


alternating Turing machine

(definition)

Definition: A nondeterministic Turing machine having universal states, from which the machine accepts only if all possible moves out of that state lead to acceptance.

See also model of computation, nondeterministic Turing machine, oracle Turing machine, probabilistic Turing machine, universal Turing machine.

Note: From Algorithms and Theory of Computation Handbook, page 24-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:48:14 2000.
HTML page formatted Mon May 12 10:30:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/alternatngTr.html


alternating path

(definition)

Definition: A path with alternating free and matched edges.

See also augmenting path.

Note: From Algorithms and Theory of Computation Handbook, page 7-3, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:48:08 2000.
HTML page formatted Mon May 12 10:30:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/alterntngpth.html


American flag sort

(algorithm)

Definition: An efficient, in-place variant of radix sort that distributes items into hundreds of buckets. The first step counts the number of items in each bucket, and the second step computes where each bucket will start in the array. The last step cyclically permutes items to their proper bucket. Since the buckets are in order in the array, there is no collection step. The name comes by analogy with the Dutch national flag problem in the last step: efficiently partition the array into many "stripes". Using some efficiency techniques, it is twice as fast as quicksort for large sets of strings.

See also histogram sort.

Note: This works especially well when sorting a byte at a time, using 256 buckets.

Author: PEB

Implementation

(C). It is program C (C) in the paper.

More information

The flag of the United States of America and links and more images.

Peter M. McIlroy, Keith Bostic, and M. Douglas McIlroy, Engineering Radix Sort, Computing Systems, 6(1):5-27, 1993.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 16:23:53 2003.
HTML page formatted Tue May 13 16:25:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/americanFlagSort.html


amortized cost

(definition)

Definition: The theoretical speed of a given set of operations. It is O(f(n)) when the execution time of the worst case of all sequences of n operations never exceeds O(n*f(n)).

See also potential function, best-case cost, average-case cost, worst-case cost.

Note: The term "amortized worst case" is sometimes used to emphasize that the worst case of a set of operations is averaged.

Author: CLK

More information

R. E. Tarjan, Amortized computational complexity, SIAM Journal on Algebraic and Discrete Methods, 6(2):306-318, 1985.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:12:22 2002.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/amortizdcost.html


amortized worst case

(definition)

Definition: See amortized cost.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:12:22 2002.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/amortizedWorstCase.html


ancestor

(definition)

Definition: A parent of a node in a tree, the parent of the parent, etc.

See also descendant.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 31 13:21:47 1999.
HTML page formatted Thu Apr 17 10:48:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/ancestor.html


and

(definition)

Definition: Conjunction: 0 AND 0 = 0, 0 AND 1 = 0, 1 AND 0 = 0, 1 AND 1 = 1.

See also xor, nand, or, not, implies.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 14:55:53 1999.
HTML page formatted Thu Apr 17 10:48:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/and.html


ANSI

(definition)

Definition: American National Standards Institute.

See also NIST.

Note: From Algorithms and Theory of Computation Handbook, pages 20-14 and 20-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:48:02 2000.
HTML page formatted Mon May 12 10:30:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/ansi.html


antichain

(definition)

Definition: A subset of mutually incomparable elements in a poset.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:47:58 2000.
HTML page formatted Mon May 12 10:30:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/antichain.html


antisymmetric

(definition)

Definition: A binary relation R for which a R b and b R a implies a = b.

See also symmetric, irreflexive, partial order.

Note: The relation "less than or equal to" is antisymmetric: if a less than or equal to b and b less than or equal to a, then a=b. The relation "is married to" is symmetric, but not antisymmetric: if Paul is married to Marlena, then Marlena is married to Paul (symmetric), but Paul and Marlena are not the same person.

Equals (=) is antisymmetric because a = b and b = a implies a = b. Less than (<) is also antisymmetric because a < b and b < a is always false, and false implies anything.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 21 10:03:39 2003.
HTML page formatted Thu Apr 17 10:48:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/antisymmetric.html


AP

Definition: (no definition here, yet, but you can help.)

Note: Approximable in Polynomial Time

More information

Average Case Complexity Forum

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:45:55 2002.
HTML page formatted Thu Apr 17 10:48:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/ap.html


Apostolico-Crochemore

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:10:23 2003.
HTML page formatted Thu Apr 17 10:48:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/apostolicocr.html


Apostolico-Giancarlo algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:10:18 2003.
HTML page formatted Thu Apr 17 10:48:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/apostolicogi.html


approximate string matching

(algorithm)

Definition: See string matching with errors.

Author: CRC-A

Implementation

See implementations at string matching. (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 19 09:03:51 2002.
HTML page formatted Mon May 12 10:30:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/approximateStringMatching.html


approximation algorithm

(algorithmic technique)

Definition: An algorithm to solve an optimization problem that runs in polynomial time in the length of the input and outputs a solution that is guaranteed to be close to the optimal solution. "Close" has some well-defined sense called the performance guarantee.

See also rho -approximation algorithm, absolute performance guarantee.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:47:54 2000.
HTML page formatted Mon May 12 10:30:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/approximatin.html


arborescence

(definition)

Definition: Informally, a directed tree.

See also minimum spanning tree.

Note: Arborescence

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:50:12 2003.
HTML page formatted Fri May 23 12:54:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/arborescence.html


arc

(definition)

Definition: See edge.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:33:40 2002.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/arc.html


arithmetic coding

(algorithm)

Definition: A minimal variable-length message encoding based on the frequency of each character. The message is represented by a fraction which is the repeated offset-plus-product reduction of the range (offset) and probability (product) of each character.

See also Huffman encoding, Shannon-Fano coding.

Note: Shannon-Fano is a minimal prefix code. Huffman is optimal for character encoding (one character-one code word) and simple to program. Arithmetic coding is better still, since it can allocate fractional bits, but more complicated.

Author: PEB

Implementation

Theory development and implementation (C).

More information

survey on data compression

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 10:50:32 2002.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/arithmeticCoding.html


arithmetic encoding

(algorithm)

Definition: See arithmetic coding.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 10:50:32 2002.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/arithmeticEncoding.html


array

(data structure)

Definition: A set of items which are randomly accessible by numeric index.

See also associative array, dynamic array, array index.

Note: An unordered array must be searched with a linear search. Average search time may be improved using a move-to-front heuristic in some cases. An external index, such as a hash table or inverted index may help make an array search quicker and speed overall processing if the array is not changed often. If the array is kept sorted, a binary search or interpolation search is faster.

Author: PEB

Implementation

(C), Read and write different arrays (Fortran, C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:46:30 2002.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/array.html


array index

(definition)

Definition: The location of an item in an array.

Note: In most programming languages, the first array index is 0 or 1, and indexes continue through the natural numbers. The upper bound of an array is generally language and possibly system specific.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:33:38 2002.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/arrayindex.html


array merging

(algorithm)

Definition: Joining two arrays into one.

See also merge.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:19:29 2000.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/arraymerg.html


array search

(classic problem)

Definition: Find an element in an array. Various algorithms exist which require more or less structure in the array elements or implementation.

See also linear search, binary search, interpolation search, string matching.

Note: An external index, such as a hash table or inverted index may help make the search quicker and speed overall processing if the array is not changed often.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 11:20:52 2000.
HTML page formatted Thu Apr 17 10:48:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/arraysearch.html


articulation point

(definition)

Definition: See cut vertex.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 3 11:56:40 2002.
HTML page formatted Mon May 12 10:30:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/articulationPoint.html


articulation vertex

(definition)

Definition: See cut vertex.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 3 11:56:40 2002.
HTML page formatted Mon May 12 10:30:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/articulationVertex.html


assignment problem

(classic problem)

Definition: The problem of finding a maximum (or minimum) weight matching in a weighted, bipartite graph.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

OR-Notes on network flow, including assignment problem.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:47:21 2000.
HTML page formatted Mon May 12 10:30:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/assignment.html


associative array

(data structure)

Definition: A collection of items that are randomly accessible by a key, often a string.

See also array.

Note: Implementation: the access method must essentially search for a match. The simplest, but slowest, implementation is to do a linear search over the array for a match.

If that is too slow, and you access the array by number, too, you must create and maintain an index into the array. The index is a dictionary, organized by the content, of indexes into the array.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:46:08 2002.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/assocarray.html


association list

(data structure)

Definition: See dictionary.

Author: PEB

Implementation

(C++, Pascal, and Fortran), Kazlib (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/associationList.html


associative

(definition)

Definition: A function where f(A, f(B, C)) = f(f(A, B), C).

See also commutative.

Note: Multiplication is associative, e.g., 2 × (3 × 4) = (2 × 3) × 4, and commutative, e.g., 2 × 3 = 3 × 2. Subtraction is neither associative, e.g., 2 - (3 - 4) not equal to (2 - 3) - 4, nor commutative, e.g., 2 - 3 not equal to 3 - 2. Because of rounding floating point addition on a computer is not associative, e.g., (1000000 + .00001) + .00001 not equal to 1000000 + (.00001 + .00001) (actual values depend on the details of the computer addition), but is commutative, e.g., 1000000 + .00001 = .00001 + 1000000.
Cartesian product is associative, e.g., {1, 2} × ({a, b} × {X, Y}) = ({1, 2} × {a, b}) × {X, Y}, but is not commutative, e.g., {1, 2} × {a, b} not equal to {a, b} × {1, 2}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 29 12:19:12 1999.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/associative.html


assoc list

(data structure)

Definition: See dictionary.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/assocList.html


asymptotically equal to

(definition)

Definition: See similar to .

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Sep 17 10:36:10 2001.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticallyEqualTo.html


asymptotically tight bound

(definition)

Definition: When the asymptotic complexity of an algorithm exactly matches the theoretically proven asymptotic complexity of the corresponding problem. Informally, when an algorithm solves a problem at the theoretical minimum.

See also upper-case Theta , asymptotic upper bound, asymptotic lower bound.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:33:06 2002.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticallyTightBound.html


asymptotic bound

(definition)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 14:01:52 1999.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticBound.html


asymptotic equipartition property

(definition)

Definition: A set of all strings of a given length can be partitioned into a set of "bad states" of low probability and a set of "good states" such that every string in the latter set has approximately the same probability.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 3 16:37:10 2001.
HTML page formatted Mon May 12 10:30:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticEquiProp.html


asymptotic lower bound

(definition)

Definition: An asymptotic bound, as function of the size of the input, on the best (fastest, least amount of space used, etc.) an algorithm can possibly achieve to solve a problem. That is, no algorithm can use fewer resources than the bound.

See also upper-case Omega , asymptotic upper bound, asymptotically tight bound.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:32:57 2002.
HTML page formatted Thu Apr 17 10:48:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticLowerBound.html


asymptotic space complexity

(definition)

Definition: The limiting behavior of the use of memory space of an algorithm when the size of the problem goes to infinity. This is usually denoted in big-O notation.

See also asymptotic time complexity.

Note: From Algorithms and Theory of Computation Handbook, page 19-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:46:59 2000.
HTML page formatted Mon May 12 10:30:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticSpaceComplexity.html


asymptotic time complexity

(definition)

Definition: The limiting behavior of the execution time of an algorithm when the size of the problem goes to infinity. This is usually denoted in big-O notation.

See also asymptotic space complexity.

Note: From Algorithms and Theory of Computation Handbook, page 19-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:46:55 2000.
HTML page formatted Mon May 12 10:30:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticTimeComplexity.html


asymptotic upper bound

(definition)

Definition: An asymptotic bound, as function of the size of the input, on the worst (slowest, most amount of space used, etc.) an algorithm will do to solve a problem. That is, no input will cause the algorithm to use more resources than the bound.

See also big-O notation, asymptotic lower bound, asymptotically tight bound.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:32:31 2002.
HTML page formatted Thu Apr 17 10:48:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/asymptoticUpperBound.html


augmenting path

(definition)

Definition: A path with alternating free and matched edges which begins and ends with free vertices. Used to augment (improve or increase) a matching or flow.

See also alternating path.

Note: From Algorithms and Theory of Computation Handbook, page 7-3, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:46:52 2000.
HTML page formatted Mon May 12 10:30:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/augmentngpth.html


automaton

(definition)

Definition: See finite state machine or cellular automaton.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:02:24 2002.
HTML page formatted Thu Apr 17 10:48:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/automaton.html


average case

(definition)

Definition: Having to do with the mathematical average of all cases.

See also best case, worst case, mean, mode, median.

Note: Deciding whether the average is mean, median, or mode, and what are all expected or reasonable cases can be difficult.

Author: PEB

More information

Average Case Complexity Forum

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:09:06 2002.
HTML page formatted Thu Apr 17 10:48:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/averagecase.html


average-case cost

(definition)

Definition: The sum of costs of an algorithm over all possible inputs divided by the number of possible inputs.

See also worst-case cost, amortized cost, average case, best-case cost.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

Average Case Complexity Forum

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:08:53 2002.
HTML page formatted Mon May 12 10:30:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/averagecscst.html


AVL tree

(data structure)

Definition: A balanced binary search tree where the height of the two subtrees (children) of a node differs by at most one. Look-up, insertion, and deletion are O( log n), where n is the number of nodes in the tree.

See also left rotation, right rotation, red-black tree, height-balanced tree, B-tree, threaded tree, Fibonacci tree.

Note: If necessary, the tree is rebalanced after insertions or deletions using rotations.

The structure is named for the inventors, Adelson-Velskii and Landis (1962).

After Gary Grubb <ggrubb@sr.hp.com>.

Author: PEB

Implementation

Ben Pfaff's explanations and code (C), (Java) needs insert, delete, search, etc. from the functions directory, Worst-case behavior of traversal, annotated for real time (WOOP/ADA).

More information

examples of various insertions and deletion; explanation and example.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:27:28 2003.
HTML page formatted Wed Jun 11 14:27:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/avltree.html


backtracking

(algorithmic technique)

Definition: An algorithmic technique to find solutions by trying one of several choices. If the choice proves incorrect, computation backtracks or restarts at the point of choice and tries another choice. It is often convenient to maintain choice points and alternate choices using recursion.

Note: Conceptually, a backtracking algorithm does a depth-first search of a tree of possible (partial) solutions. Each choice is a node in the tree.

Author: PEB

More information

Explanation with the 8-queens problems and solving a maze; maze solving Java applet; FOLDOC's entry.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 09:04:19 2003.
HTML page formatted Thu Apr 17 10:48:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/backtrack.html


bag

(definition)

Definition: An unordered collection of values that may have duplicates.

Also known as multi-set.

See also set, list.

Note: A bag, or multi-set, is a set where values may be repeated. Inserting 2, 1, 2 into an empty set gives the set {1, 2}. Inserting those values into an empty bag gives {1, 2, 2}. From another point of view, a set is unordered, too, but has each value at most once.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 6 09:43:53 2002.
HTML page formatted Thu Apr 17 10:48:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/bag.html


balanced two-way merge sort

(algorithm)

Definition: A balanced k-way merge sort that sorts a data stream using repeated merges. It distributes the input into two streams by repeatedly reading a block of input that fits in memory, a run, sorting it, then writing it to the next stream. It then repeatedly merges the two streams and puts each merged run into one of two output streams until there is a single sorted output.

See also merge sort, simple merge, balanced merge sort, nonbalanced merge sort, two-way merge sort.

Note: This is an external sort.

Author: ASK

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 15:58:05 2003.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/balanc2wayms.html


balance

(definition)

Definition: The (weight) balance of a tree is the number of leaves of the left subtree of a tree, denoted |Tl|, divided by the total number of leaves of the tree. Formally, rho (T) = |Tl|/|T|.

Also known as root balance.

See also weight-balanced tree, height-balanced tree, right rotation, left rotation, relaxed balance.

Note: The balance of a node is the balance of the (sub)tree rooted at that node. After Johann Blieberger <blieb@auto.tuwien.ac.at>, Discrete Loops and Worst Case Performance, page 22.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:29:12 2002.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balance.html


balanced binary search tree

(data structure)

Definition: A binary search tree in which at most one node has one child. All other nodes have two or zero children.

See also balanced binary tree.

Author: CLK

More information

M. R. Brown and R. E. Tarjan, A Fast Merging Algorithm, Journal of the ACM, 26(2):211-226, 1979.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 16:18:05 2002.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancedbist.html


balanced binary tree

(data structure)

Definition: A binary tree where no leaf is more than a certain amount farther from the root than any other. After inserting or deleting a node, the tree may rebalanced with "rotations."

See also AVL tree, red-black tree, height-balanced tree, weight-balanced tree, left rotation, right rotation, B-tree.

Author: PEB

Implementation

red-black tree analysis, explanation, examples, and code (C), Ben Pfaff's AVL tree explanation (C)

More information

AVL tree explanation and example

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:27:07 2003.
HTML page formatted Wed Jun 11 14:27:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancedbitr.html


balanced multiway merge

(algorithm)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 22 09:52:26 1999.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancedMultiwayMerge.html


balanced multiway tree

(data structure)

Definition: See B-tree.

Author: PEB

Implementation

data structure definition (C and Pascal), insert (C and Pascal) using auxiliary functions (C and Pascal), search (C and Pascal), (Pick Basic?).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 27 11:30:24 2003.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancedMultiwayTree.html


balanced quicksort

(algorithm)

Definition: A variant of quicksort which attempts to choose a pivot likely to represent the middle of the values to be sorted.

See also median.

Note: This is one of several attempts to prevent bad worst cases in quicksort by choosing the initial pivot.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:14:59 2002.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancedqsrt.html


balanced tree

(definition)

Definition: A tree where no leaf is much farther away from the root than any other leaf. Different balancing schemes allow different definitions of "much farther" and different amounts of work to keep them balanced.

See also balance, weight-balanced tree, height-balanced tree, B-tree, AVL tree, full binary tree, red-black tree, relaxed balance.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 27 08:44:22 2000.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancedtree.html


balanced k-way merge sort

(algorithm)

Definition: A merge sort that sorts a data stream using repeated merges. It distributes the input into k streams by repeatedly reading a block of input that fits in memory, called a run, sorting it, then writing it to the next stream. It then repeatedly merges the k streams and puts each merged run into one of j output streams until there is a single sorted output.

See also simple merge, balanced merge sort, nonbalanced merge sort.

Note: This is an external sort.

Author: ASK

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 15:56:50 2003.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balanckwayms.html


balanced merge sort

(algorithm)

Definition: A k-way merge sort in which the number of input and output data streams is the same. See balanced k-way merge sort.

See also merge sort, simple merge, nonbalanced merge sort.

Note: This is an external sort.

Author: ASK

Implementation

(C) using an auxiliary function to select next file (C), (Java)

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 15:54:04 2003.
HTML page formatted Thu Apr 17 10:48:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/balancmrgsrt.html


BANG file

(data structure)

Definition: A balanced and nested grid (BANG) file is a point access method which divides space into a nonperiodic grid. Each spatial dimension is divided by a linear hash. Cells may intersect, and points may be distributed between them.

See also twin grid file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:39:00 2001.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/bangfile.html


Batcher sort

(algorithm)

Definition: See bitonic sort.

Author: PEB

Implementation

explanation, analysis, bibliography, etc. (Java), explanation and animation (C), reference source code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 4 13:22:59 2003.
HTML page formatted Wed Jun 4 13:25:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/BatcherSort.html


Baum Welch algorithm

(algorithm)

Definition: An algorithm to find hidden Markov model parameters A, B, and upper-case Pi with the maximum likelihood of generating the given symbol sequence in the observation vector.

See also Viterbi algorithm.

Note: Contributed by Arvind <uk_arvind@mail.utexas.edu> May 2002.

Author: PEB

More information

See this lesson on Hidden Markov Models for more explanation.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:21:30 2002.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/baumWelch.html


Bayer tree

(data structure)

Definition: See B-tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 27 11:30:24 2003.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/BayerTree.html


BB alpha tree

(definition)

Definition: A binary tree where the balance of every subtree, rho (T'), is bounded by alpha less than or equal to rho (T') less than or equal to 1- alpha.

See also weight-balanced tree .

Note: After Johann Blieberger <blieb@auto.tuwien.ac.at>, Discrete Loops and Worst Case Performance, page 22.

Author: PEB

Implementation

Worst-case behavior of traversal, annotated for real time (WOOP/ADA), including bibliography.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 8 10:41:12 2001.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/bbalphatree.html


BDD

(data structure)

Definition: (no definition here, yet, but you can help.)

See also OBDD, reduced ordered binary decision diagram.

Note: A short bibliography of Binary Decision Diagrams. Randy Bryant's homepage

A BDD is a full binary tree.

More information

Randy E. Bryant, Graph-Based Algorithms for Boolean Function Manipulation, IEEE Transactions on Computers, C-35(8):677-691, August, 1986.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:33:20 2002.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/bdd.html


BD-tree

(data structure)

Definition: A binary tree which organizes multidimensional points by splitting off regular subintervals.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:55 2001.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/bdtree.html


Bellman-Ford algorithm

(algorithm)

Definition: An efficient algorithm to find the shortest paths from a single source vertex to all other vertices in a weighted, directed graph. Weights may be negative. The algorithm initializes the distance to the source vertex to 0 and all other vertices to infinity. It then does V-1 passes (V is the number of vertices) over all edges relaxing, or updating, the distance to the destination of each edge. Finally it checks each edge again to detect negative weight cycles, in which case it returns false. The time complexity is O(VE), where E is the number of edges.

Also known as Ford-Bellman.

See also Dijkstra's algorithm, Johnson's algorithm, all pairs shortest path.

Note: This is used as one step in Johnson's algorithm.

After [CLR90, page 532]

Author: PEB

Implementation

explanation and example (C-like pseudocode)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 9 10:11:57 2003.
HTML page formatted Fri May 9 10:15:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/bellmanford.html


Benford's law

(definition)

Definition: On a wide variety of statistical data, the first digit is d with the probability log10 ( 1 + 1/d ).

See also Zipf's law, Lotka's law.

Note: This is also referred to as "the first-digit phenomenon." The general significant-digit law is that the first significant digits ddd ... d occur with the probability log10 ( 1 + 1/ddd ... d ). This law was first published by Simon Newcomb in 1881. It went unnoticed until Frank Benford, apparently unaware of Newcomb's paper, concluded the same law and published it in 1938, supported by huge amounts of data.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 4 08:40:22 2002.
HTML page formatted Thu Apr 17 10:48:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/benfordslaw.html


best case

(definition)

Definition: (1) The situation or input for which an algorithm or data structure takes the least time or resources. (2) Having to do with this situation or input.

See also average case, worst case, best-case cost.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:07:25 2002.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/bestcase.html


best-case cost

(definition)

Definition: The minimum cost to process an input sequence.

Also known as optimal cost.

See also worst-case cost, average-case cost, amortized cost, adversary, off-line algorithm, on-line algorithm.

Note: From Algorithms and Theory of Computation Handbook, page 10-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:08:18 2002.
HTML page formatted Mon May 12 10:30:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/bestcasecost.html


best-first search

(algorithm)

Definition: A search algorithm that considers the estimated best partial solution next. This is typically implemented with a priority queue.

See also breadth-first search.

Note: This can be seen as an improved breadth-first search.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 6 10:12:11 2003.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/bestfirst.html


biconnected component

(definition)

Definition: A maximal subset of edges of a connected graph such that the corresponding induced subgraph cannot be disconnected by deleting any vertex.

See also connected components, biconnected graph.

Note: That is, the subgraph is biconnected or has no cut vertex. From Algorithms and Theory of Computation Handbook, page 6-6, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 3 11:48:43 2002.
HTML page formatted Mon May 12 10:30:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/biconnectedComponent.html


biconnected graph

(definition)

Definition: A connected graph that is not broken into disconnected pieces by deleting any single vertex (and incident edges).

See also cut vertex, biconnected component, triconnected graph, k-connected graph.

Note: Informally, there are at least two independent paths from any vertex to any other vertex.

After Algorithms and Theory of Computation Handbook, page 6-6, Copyright © 1999 by CRC Press LLC.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 09:54:56 2003.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/biconnectedGraph.html


bidirectional bubble sort

(algorithm)

Definition: A variant of bubble sort which compares each adjacent pairs of items in a list in turn, swapping them if necessary, and alternately passes through the list from the beginning to the end then from the end to the beginning until no swaps are done.

Also known as cocktail shaker sort, shaker sort, double-direction bubble sort.

See also sort.

Note: Complexity is O(n2) for arbitrary data, but approaches O(n) if the list is nearly in order at the beginning. Bidirectional bubble sort usually does better than bubble sort since at least one item is moved forward or backward to its place in the list with each pass. Bubble sort moves items forward into place, but can only move items backward one location each pass.

Authors: PEB,BB

Implementation

animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:51 2003.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/bidirectbubl.html


big-O notation

(definition)

Definition: A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items. Informally, saying some equation f(n) = O(g(n)) means it is less than some constant multiple of g(n). The notation is read, "f of n is big oh of g of n".

Formal Definition: f(n) = O(g(n)) means there are positive constants c and k, such that 0 less than or equal to f(n) less than or equal to cg(n) for all n greater than or equal to k. The values of c and k must be fixed for the function f and must not depend on n.

Also known as O.

See also upper-case Omega (n), omega (n), upper-case Theta (n), similar to , little-o notation, asymptotic upper bound, asymptotically tight bound, NP, complexity, model of computation.

Note: As an example, n2 + 3n + 4 is O(n2), since n2 + 3n + 4 < 2n2 for all n > 10. Strictly speaking, 3n + 4 is O(n2), too, but big-O notation is often misused to mean equal to rather than less than. The notion of "equal to" is expressed by upper-case Theta (n).

The importance of this measure can be seen in trying to decide whether an algorithm is adequate, but may just need a better implementation, or the algorithm will always be too slow on a big enough input. For instance, quicksort, which is O(n log n) on average, running on a small desktop computer can beat bubble sort, which is O(n2), running on a supercomputer if there are a lot of numbers to sort. To sort 1,000,000 numbers, the quicksort takes 20,000,000 steps on average, while the bubble sort takes 1,000,000,000,000 steps!

Any measure of execution must implicitly or explicitly refer to some computation model. Usually this is some notion of the limiting factor. For one problem or machine, the number of floating point multiplications may be the limiting factor, while for another, it may be the number of messages passed across a network. Other measures which may be important are compares, item moves, disk accesses, memory used, or elapsed ("wall clock") time.

Strictly, the character is the upper-case Greek letter Omicron, not the letter O, but who can tell the difference?

Author: PEB

More information

A rough guide to big-oh notation by Mark Dunlop. Tutorial on complexity classes illustrated with several sort algorithms.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:08:16 2003.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/bigOnotation.html


binary decision diagram

(data structure)

Definition: See BDD.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:33:20 2002.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryDecisionDiagram.html


binary function

(definition)

Definition: A function with two arguments.

See also constant function, unary function, n-ary function, predicate.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:50:30 2002.
HTML page formatted Thu Apr 17 10:48:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryfunc.html


binary GCD algorithm

(algorithm)

Definition: Compute the greatest common divisor of two integers expressed in binary. The run time complexity is O(( log2 uv)2) bit operations.

Also known as algorithm B.

See also Euclid's algorithm.

Note: Discovered by J. Stein in 1967. Another source says discovered by R. Silver and J. Tersian in 1962 and published by G. Stein in 1967.

The algorithm uses the following observations.

  • If u and v are both even, gcd(u,v) = 2 gcd(u/2, v/2).
  • If u is even and v is odd, gcd(u,v) = gcd(u/2, v).
  • Otherwise both are odd, and gcd(u,v) = gcd(|u-v|/2, v). (Euclid's algorithm with a division by 2 since the difference of two odd numbers is even.)

Here is the algorithm. It is especially efficient for operations on binary representations.

  1. g = 1
  2. while u is even and v is even
    • u = u/2 (right shift)
    • v = v/2
    • g = 2*g (left shift)
    now u or v (or both) are odd
  3. while u > 0
    • if u is even, u = u/2
    • else if v is even, v = v/2
    • else
      • t = |u-v|/2
      • if u < v, then v = t else u = t
  4. return g*v

Called Algorithm B in [Knuth98, vol. 2, Sect. 4.5.2].

Author: PEB

More information

Binary Euclid's Algorithm including examples and references. Shallit's slides giving explanation and proofs.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 19 16:35:10 2002.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryGCD.html


binary heap

(data structure)

Definition: A complete binary tree where every node has a key more extreme (greater or less) than or equal to the key of its parent.

See also heapify, k-ary heap, heap, binomial heap.

Note: An array implementation stores the keys in an array. The parent of a node is the node's index in the array, divided by two, rounded down.

Merging two binary heaps is O(n): the best you can do is just concatenate two heap arrays and make a heap of the result. Two binomial heaps can be merged in O(ln n).

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Aug 25 13:04:07 1999.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryheap.html


binary insertion sort

(algorithm)

Definition: Insertion sort in which the proper location for the next item is found with a binary search.

Author: PEB

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 21 13:35:43 2002.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryinsort.html


binary knapsack problem

(classic problem)

Definition: See knapsack problem.

Author: PEB

Implementation

(Fortran and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 12:55:51 2002.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryKnapsackProblem.html


binary priority queue

(data structure)

Definition: (no definition here, yet, but you can help.)

Implementation

insert (C and Pascal) and delete (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:42:40 2001.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binarypriorq.html


binary relation

(definition)

Definition: A relation between exactly two items at a time, such as "greater than" (>), "not equal to" ( not equal to), "proper subset of" ( is a proper subset of), or "is connected to" (has an edge to) for vertices of a graph.

See also binary function, reflexive, symmetric, transitive, antisymmetric, irreflexive.

Note: One may think of a binary relation as a binary function whose range is {true, false}. For example since 3 > 2, GreaterThan(3, 2) = true.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 14 13:49:47 2002.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryrelatn.html


binary search

(algorithm)

Definition: Search a sorted array by repeatedly dividing the search interval in half. Begin with an interval covering the whole array. If the value of the search key is less than the item in the middle of the interval, narrow the interval to the lower half. Otherwise narrow it to the upper half. Repeatedly check until the value is found or the interval is empty.

See also interpolation search, Fibonacci search.

Note: Run time is O(ln n).

Author: PEB

Implementation

recursive and iterative code (C); search (C), (Scheme), Worst-case behavior annotated for real time (WOOP/ADA), including bibliography.

More information

demonstration. explanation

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:42:00 2003.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binarySearch.html


binary search tree

(data structure)

Definition: A binary tree where every node's left subtree has values less than the node's value, and every right subtree has values greater. A new node is added as a leaf.

See also AVL tree, splay tree, threaded tree, relaxed balance, randomized binary search tree, ternary search tree, move-to-root heuristic.

Note: A binary search tree is almost always implemented with pointers, but may have a variety of constraints on how it is composed.

Author: PEB

Implementation

insert, search, remove max, number of leaves, etc. (C++); Ben Pfaff's insert, delete, search, copy, etc. (literate C); insert, search, and maximum (Pascal); insert (C), insert (Lisp), insert (C and Pascal), search (C and Pascal), and insert, search, delete, and various traversals (Modula-2).

More information

lecture notes, two different deletion algorithms, and more lecture notes. A demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:26:38 2003.
HTML page formatted Wed Jun 11 14:27:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/binarySearchTree.html


binary tree

(definition)

Definition: A tree with at most two children for each node.

Formal Definition: A binary tree is either

  • empty (no nodes), or
  • has a root node, a left binary tree, and a right binary tree.

See also complete binary tree, full binary tree, multiway tree, k-ary tree, threaded tree, Fibonacci tree, extended binary tree.

Note: A binary tree is a k-ary tree with k=2.

Formal definition after [CLR90, page 94].

Author: PEB

Implementation

examples, analysis, and C code, Worst-case behavior of traversal, annotated for real time (WOOP/ADA).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 24 09:46:45 2002.
HTML page formatted Thu Apr 17 10:48:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/binarytree.html


binary tree representation of trees

(data structure)

Definition: A way to represent a multiway tree as a binary tree. The leftmost child, c, of a node, n, in the multiway tree is the left child, c', of the corresponding node, n', in the binary tree. The immediately right sibling of c is the right child of c'.

Formal Definition: A multiway tree T can be represented by a corresponding binary tree B. Let {n1, ..., nk} be nodes of the multiway tree, T. Let {n'1, ..., n'k} be nodes of the corresponding binary tree B. Node nk corresponds to n'k. In particular, nodes nk and n'k have the same labels and if nk is the root of T, n'k is the root of B. Connections correspond as follows:

  • If nl is the leftmost child of nk, n'l is the left child of n'k. (If nk has no children, n'k has no left child.)
  • If ns is the next (immediately right) sibling of nk, n's is the right child of n'k.

Note: See [Knuth98, 1:333, Sect. 2.3.2].

The binary tree representation of a multiway tree is based on first child-next sibling representation of the tree. In this representation every node is linked with its leftmost child and its next (right nearest) sibling.

Let us see one example. Consider the following multiway tree

                    1
                   /|\
                  / | \
                 /  |  \
                2   3   4
               / \      |
              5   6     7
                       / \
                      8   9
This tree can be represented in first child-next-sibling manner as follows
                    1
                   /
                  /
                 /
                2---3---4
               /       /
              5---6   7
                     /
                    8---9
Now, if we look at the first child-next sibling representation of the tree closely, we will see that it forms a binary tree. To see this better, we can rotate every next-sibling edge 45 degrees clockwise. After that we get the following binary tree:
                  1
                 /
                2
               / \
              5   3
               \   \
                6   4
                   /
                  7
                 /
                8
                 \
                  9
This is binary tree representation of the given (multiway) tree.

Authors: AL,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:29:13 2002.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/binaryTreeRepofTree.html


bingo sort

(algorithm)

Definition: A variant of selection sort that orders items by repeatedly looking through remaining items to find the greatest value and moving all items with that value to their final location. This is more efficient if there are many duplicate values.

See also counting sort.

Note: To see why it is more efficient, consider one value. Selection sort does one pass through remaining items for each item moved. Bingo sort does two passes for each value (not item): one pass to find the next biggest value, and one pass to move every item with that value to its final location. Thus if on average there are more than two items with each value, bingo sort may be faster.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:55:25 2003.
HTML page formatted Tue May 13 16:21:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/bingosort.html


binomial heap

(data structure)

Definition: A priority queue made of a forest of binomial trees with the heap property numbered k=0, 1, 2, ..., n, each containing either 0 or 2k nodes. Each tree is formed by linking two of its predecessors, by joining one at the root of the other. The operations of insert a value, decrease a value, delete a value, and merge or join (meld) two queues take O( log n) time. The find minimum operation is a constant upper-case Theta (1).

See also Fibonnaci heap.

Note: Binomial heaps are so called because the number of nodes at each level of each subtree is a binomial coefficient. Sometimes called a binomial queue. After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 24 14:53:07 2003.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/binomialheap.html


binomial queue

(data structure)

Definition: See binomial heap.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 24 14:53:07 2003.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/binomialQueue.html


binomial tree

(data structure)

Definition: An ordered tree of order k greater than or equal to 0, that is Bk, has a root with k children where the ith child is binomial tree of order k-i.

See also binomial heap.

Note: A Bk tree has 2k nodes, the height is k, and there are k choose i nodes at depth i.

Adapted from [CLR90, page 401].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:09:50 2001.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/binomialtree.html


bin packing problem

(classic problem)

Definition: Determine how to put the most objects in the least number of fixed space bins. More formally, find a partition and assignment of a set of objects such that a constraint is satisfied or an objective function is minimized (or maximized). There are many variants, such as, 3D, 2D, linear, pack by volume, pack by weight, minimize volume, maximize value, fixed shape objects, etc.

See also knapsack problem, cutting stock problem, optimization problem, strip packing, set packing.

Note: A common form of the problem is, what is the least number of bins (containers of fixed volume) needed to hold a set of objects. This problem often appears in manufacturing. For instance, suppose we need a number of pipes of different, specific lengths to plumb a house and we can buy pipe stock in 5 meter lengths. How can we cut the 5 meter pipes to waste as little as possible (minimize the cost of pipe)?

Thanks to Frank A. Adrian <fadrian@symantec.com>, 28 January 2000.

Author: PEB

Implementation

(C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 13:04:41 2002.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/binpacking.html


bin sort

(algorithm)

Definition: See bucket sort.

Author: PEB

Implementation

analysis, explanation, and code (C), and (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:45:53 2002.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/binSort.html


bintree

(data structure)

Definition: A regular decomposition k-d tree for region data.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:45:17 2000.
HTML page formatted Mon May 12 10:30:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/bintree.html


bipartite graph

(definition)

Definition: An undirected graph where vertices can be divided into two sets such that no edge connects vertices in the same set.

See also layered graph.

Note: A bipartite graph is a layered graph with two layers.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Aug 16 16:34:56 2000.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/bipartgraph.html


bipartite matching

(definition)

Definition: (1) A perfect matching between vertices of a bipartite graph, that is, a subgraph which pairs every vertex with exactly one other vertex. (2) The problem of finding such a matching.

Also known as maximum bipartite matching.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:55:31 2002.
HTML page formatted Thu Apr 17 10:48:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/bipartmatch.html


bisector

(definition)

Definition: For two elements ei and ej, the locus of points equidistant from ei and ej. That is {p|d(p,ei)=d(p(ej)}, where d is some distance metric.

Note: For instance, if ei and ej are two points in the plane and we use Euclidean distance, the bisector is the perpendicular bisector of the line segment ei,ej.

From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 21 14:01:12 2002.
HTML page formatted Mon May 12 10:30:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/bisector.html


bitonic sort

(algorithm)

Definition: Compare, and swap if necessary, pairs of elements in parallel. Subsets are sorted then merged, similar to a merge sort.

Also known as Batcher sort.

Note: This takes O((log n)2/2) stages (or steps) with n/2 comparators at each stage.

definitions and analysis

Author: PEB

Implementation

explanation, analysis, bibliography, etc. (Java), explanation and animation (C), reference source code (C)

More information

K. E. Batcher, Sorting Networks and their Applications, Proc. AFIPS Spring Joint Computer Conference, 32:307-314, 1968.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 4 13:22:59 2003.
HTML page formatted Wed Jun 4 13:25:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/bitonicSort.html


bit vector

(data structure)

Definition: An array of bits.

Note: A bit vector can often be handled very efficiently since a computer word is an array of bits.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 10:27:22 2000.
HTML page formatted Thu Apr 17 10:48:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/bitVector.html


BKP

(classic problem)

Definition: See knapsack problem.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 12:55:51 2002.
HTML page formatted Thu Apr 17 10:48:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/bkp.html


Bk tree

(data structure)

Definition: A binomial tree of order (height) k.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jul 15 15:56:45 1999.
HTML page formatted Thu Apr 17 10:48:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/bktree.html


block

(definition)

Definition: (1) A number of items which are handled together for efficiency. (2) A sequence of don't care symbols.

Note: (2) From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Authors: PEB,CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 11:28:33 2000.
HTML page formatted Mon May 12 10:30:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/block.html


block addressing index

(data structure)

Definition: An inverted index which includes the block, or general location, within texts, in addition to the text in which the word appears.

See also full inverted index, inverted file index.

Note: See the example at inverted index.

Author: PEB

More information

Nivio Ziviani, Edleno Silva de Moura, Gonzalo Navarro, Ricardo Baeza-Yates, Compression: A Key for Next-Generation Text Retrieval Systems, IEEE Computer, 33(11):37-44, November 2000, (page 42).

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 23 10:42:59 2001.
HTML page formatted Thu Apr 17 10:48:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/blockAddressingIndex.html


blocking flow

(definition)

Definition: A flow function in which any directed path from the source to the sink contains a saturated edge.

See also flow network.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:44:53 2000.
HTML page formatted Mon May 12 10:30:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/blockingflow.html


block search

(algorithm)

Definition: See jump search.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 11:50:47 2001.
HTML page formatted Thu Apr 17 10:48:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/blockSearch.html


block searching

(algorithm)

Definition: See jump search.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 11:50:47 2001.
HTML page formatted Thu Apr 17 10:48:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/blockSearching.html


Bloom filter

(algorithm)

Definition: A probabilistic algorithm to quickly test membership in a large set using multiple hash functions into a single array of bits.

Note: This involves a particular data structure, the bit array, too.

Author: PEB

More information

tradeoffs and engineering techniques, the math.

Burton Bloom, Space/time trade-offs in hash coding with allowable errors, CACM, 13(7):422-426, July 1970.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:33:50 2003.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/bloomfilt.html


blossom

(definition)

Definition: An odd length cycle which appears during a matching algorithm on general graphs.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:44:48 2000.
HTML page formatted Mon May 12 10:30:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/blossom.html


bogosort

(algorithm)

Definition: A terribly inefficient sort algorithm that repeatedly generates a random permutation of the items until the items are in order.

See also bozo sort, stooge sort, lucky sort.

Note: From the slang "bogus" meaning "bad" as in "I can't believe anybody would be so thoughtless to write/do/say/believe that, and I just can't let it pass without objecting." See the FOLDOC entry for bogo-sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:24:39 2003.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/bogosort.html


bogo-sort

(algorithm)

Definition: See bogosort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:24:39 2003.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/bogosortI.html


bogus sort

(algorithm)

Definition: See bogosort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:24:39 2003.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/bogusSort.html


boolean

(definition)

Definition: (1) In computer science, entities having just two values: 1 or 0, true or false, on or off, etc. along with the operations and, or, and not. (2) In mathematics, entities from an algebra equivalent to intersection, union, and complement over subsets of a given set.

See also boolean expression, boolean function.

Note: A mathematical boolean algebra based on a set of size n has 2n values. The operations, intersection and union (or and and or), are commutative and associative, and each distributes over the other. Each operation has an identity, and complement produces the inverse. Binary logic is the boolean algebra which two values.

Author: PEB

More information

A fuller explanation of mathematical boolean algebra.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 29 09:32:31 2000.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/boolean.html


boolean expression

(definition)

Definition: An expression consisting solely of boolean variables and values and boolean operations, such as and, or, not, implies, etc.

See also predicate.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:12:57 2002.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/booleanexpr.html


boolean function

(definition)

Definition: A function whose range is {0, 1}. It can be understood to evaluate the truth or falsity of each element of its domain.

See also binary function, predicate, boolean, boolean expression.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 29 09:22:44 2000.
HTML page formatted Thu Apr 17 10:48:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/booleanfnctn.html


border

(definition)

Definition: A string v which is both a prefix and a suffix of another string u. String v is the border of u if it is the longest proper border of u.

Note: From Algorithms and Theory of Computation Handbook, page 11-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:44:41 2000.
HTML page formatted Mon May 12 10:30:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/border.html


bottleneck traveling salesman

(classic problem)

Definition: Find a tour where no edge is more costly than some (bottleneck) amount.

See also traveling salesman.

Note: Defined in comp.theory by Hai Zhou (haizhou@cs.utexas.edu) November 1998. See [CLR90, page 974].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:09:37 2001.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/bottleneckTravelingSales.html


bottom-up tree automaton

(definition)

Definition: (no definition here, yet, but you can help.)

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 23 09:25:21 1999.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/bottmptrtmtn.html


boundary-based representation

(definition)

Definition: A representation of a region that is based on its boundary.

See also interior-based representation.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:44:33 2000.
HTML page formatted Mon May 12 10:30:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/boundarybasd.html


bounded error probability in polynomial time

(definition)

Definition: See BPP.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:49:17 2002.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/boundedErrorProbabilityInPolynomialTime.html


bounded queue

(data structure)

Definition: A queue limited to a fixed number of items.

See also circular queue, bounded stack.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 1 10:30:22 2002.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/boundedqueue.html


bounded stack

(data structure)

Definition: A stack limited to a fixed number of items.

See also bounded queue.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 1 10:30:11 2002.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/boundedstack.html


Boyer-Moore

(algorithm)

Definition: A string matching algorithm that compares characters from the end of the search string to its beginning. When characters don't match, searching jumps to the next possible match.

Note: After [Sund98].

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C) which uses Boyer-Moore preprocessing (C)

More information

A comparison of Naive, Knuth-Morris-Pratt, and Boyer-Moore string searches

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:18:40 2003.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/boyermoore.html


Boyer-Moore-Horspool

(algorithm)

Definition: (no definition here, yet, but you can help.)

Also known as Horspool.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C) entry for Horspool, (C) or (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:10:08 2003.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/boyerMooreHorspool.html


bozo sort

(algorithm)

Definition: A terribly inefficient sort algorithm that randomly swaps items until they are in order.

See also bogosort, stooge sort, lucky sort.

Author: PEB

Implementation

demonstration and source code (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:13:07 2003.
HTML page formatted Thu Apr 17 10:48:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/bozoSort.html


BP

(data structure)

Definition: See BDD.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:33:20 2002.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/bp.html


B+-tree

(data structure)

Definition: A B-tree in which keys are stored in the leaves.

Author: PEB

Implementation

A B+-tree package, b+tree_mjr (C) , with patches b+tree, was posted on comp.sources.misc, volume 10. There is also the bplus (C) package.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 12:14:03 2003.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/bplustree.html


BPP

(definition)

Definition: The class of languages for which a membership computation by a probabilistic Turing machine halts in polynomial time with the right answer (accept or reject) at least 2/3 of the time. "BPP" means "Bounded error Probability in Polynomial" time.

Also known as bounded error probability in polynomial time.

See also ZPP, RP, NP, complexity class.

Note: By repeating the run, the chance of error may be arbitrarily reduced.

After [Hirv01, page 19].

Author: PEB

More information

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:49:17 2002.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/bpp.html


Bradford's law

(definition)

Definition: Journals in a field can be divided into three parts, each with about one-third of all articles: 1) a core of a few journals, 2) a second zone, with more journals, and 3) a third zone, with the bulk of journals. The number of journals is 1:n:n2.

See also Lotka's law.

Note: Bradford formulated his law after studying a bibliography of geophysics, covering 326 journals in the field. He discovered that 9 journals contained 429 articles, 59 contained 499 articles, and 258 contained 404 articles. Although Bradford's Law is not statistically accurate, librarians commonly use it as a guideline.

Contributed by Arvind <uk_arvind@mail.utexas.edu> May 2002.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:29:52 2002.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/bradfordsLaw.html


branching

(definition)

Definition: A rooted spanning tree in a directed graph, such that there is a path from each vertex to the root.

Also known as in-branching.

See also out-branching.

Note: From Algorithms and Theory of Computation Handbook, pages 6-21 and 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 17:02:11 2002.
HTML page formatted Mon May 12 10:30:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/branching.html


branching programs

(data structure)

Definition: See BDD.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:33:20 2002.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/branchingPrograms.html


branch and bound

(algorithm)

Definition: An algorithm which finds the optimal solution by keeping the best solution found so far. If a partial solution cannot do better than the best, work on it is abandoned.

See also depth-first search.

Note: For instance, suppose we want to find the shortest route from Zarahemla to Manti, and at some time the shortest route found until that time is 387 kilometers. Suppose we are to next consider routes through Cumeni. If the shortest distance from Zarahemla to Cumeni is 350 km and Cumeni is 46 km from Manti in a straight line, there is no reason to explore possible roads from Cumeni: they will be at least 396 km (350 + 46), which is worse than the shortest known route. So we need not explore paths from Cumeni.

This may be implemented as a backtracking algorithm, which is a modified depth-first search, or using a priority queue ordering partial solutions by lower bounds (current + least possible completion), which is a best-first search.

Author: PEB

Implementation

A page of branch and bound implementations (C, C++, Matlab, Fortran, executables, etc.).

More information

A more formal and complete explanation and a diagram of execution.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:04:50 2000.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/branchNbound.html


breadth-first search

(algorithm)

Definition: A search algorithm which considers neighbors of a vertex, that is, outgoing edges of the vertex's predecessor in the search, before any outgoing edges of the vertex. Extremes are searched last. This is typically implemented with a queue.

See also depth-first search, best-first search.

Note: In a tree, called a level-order traversal.

Author: PEB

Implementation

(Lisp), (Prolog), (Java) which extends SearchApplet (Java)

More information

Laboratory Resources on Search and Game Playing, Lecture notes on Uninformed Search, Lecture notes from Design and Analysis of Algorithms on Breadth-first search and depth-first search. A demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 9 16:58:13 2002.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/breadthfirst.html


Bresenham's algorithm

(algorithm)

Definition: An efficient algorithm to render a line with pixels. The long dimension is incremented for each pixel, and the fractional slope is accumulated.

Note: In November 2001 Jack E. Bresenham wrote, "I was working in the computation lab at IBM's San Jose development lab. A Calcomp plotter had been attached to an IBM 1401 via the 1407 typewriter console. [The algorithm] was in production use by summer 1962, possibly a month or so earlier. Programs in those days were freely exchanged among corporations so Calcomp (Jim Newland and Calvin Hefte) had copies. When I returned to Stanford in Fall 1962, I put a copy in the Stanford comp center library.

A description of the line drawing routine was accepted for presentation at the 1963 ACM national convention in Denver, Colorado. It was a year in which no proceedings were published, only the agenda of speakers and topics in an issue of Communications of the ACM. A person from the IBM Systems Journal asked me after I made my presentation if they could publish the paper. I happily agreed, and they printed it in 1965."

Author: PEB

More information

Jack E. Bresenham is a professor at Winthrop University. An explanation. A java applet showing which points are selected. Dragging the end point shows how the selection of points changes.

Jack E. Bresenham, Algorithm for Computer Control of a Digital Plotter, IBM Systems Journal, 4(1):25-30, 1965.
Reprinted in Interactive Computer Graphics, Herbert Freeman ed., IEEE catalog no. EHO 156-0, Library of Congress no. 79-91237, 1980, and Seminal Graphics: Pioneering Efforts That Shaped The Field, Rosalee Wolfe ed., ACM SIGGRAPH, ACM order no. 435985, ISBN 1-58113-052-X, 1998.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 15:04:59 2001.
HTML page formatted Thu Apr 17 10:48:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/bresenham.html


brick sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Sedgewick's Analysis of Shellsort and Related Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 6 13:16:57 2000.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/brickSort.html


bridge

(definition)

Definition: An edge of a connected graph whose removal would make the graph unconnected.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 14:45:27 1999.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/bridge.html


British Museum algorithm

(algorithmic technique)

Definition: A general approach to find a solution by checking all possibilities one by one, beginning with the smallest. The term refers to a conceptual, not a practical, technique where the number of possibilities are enormous.

See also breadth-first search, brute force, exhaustive search.

Note: For instance, one may, in theory, find the smallest program that solves a particular problem in the following way: Generate all possible source codes of length one character. Check each one to see if it solves the problems. (Note: the halting problem makes this check troublesome.) If not, generate and check all programs of two characters, three characters, etc. Conceptually this finds the smallest program, but in practice it takes far more time than the age of the universe.

Similar arguments can be made to show that optimizations, theorem proving, language recognition, etc. is possible or impossible.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 6 10:10:34 2003.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/britishmusm.html


brute force

(algorithmic technique)

Definition: An algorithm that inefficiently solves a problem, often by trying every one of a wide range of possible solutions.

See also exhaustive search, brute force string search.

Note: After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 13 16:55:22 2002.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/bruteforce.html


brute force string search

(algorithm)

Definition: An algorithm to find a string within another string or body of text by trying each position one at a time. There are many far faster string matching algorithms.

Also known as naive string search.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal)

More information

A comparison of Naive, Knuth-Morris-Pratt, and Boyer-Moore string searches.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:09:05 2003.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/bruteForceStringSearch.html


brute force string search with mismatches

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

(C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:09:04 2001.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/brutefrmismt.html


bsearch

(algorithm)

Definition: See binary search.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:42:00 2003.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/bsearch.html


B-spline

(algorithm)

Definition: This and other curve fitting algorithms are defined in the area of computer graphics.

More information

Computer Graphics Area Dictionary. See also Spline curves (in 3D) and here.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 24 09:25:41 1999.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/bspline.html


BSP-tree

(data structure)

Definition: A binary space partitioning (BSP) tree is a binary tree for multidimensional points where successive levels are split by arbitrary hyperplanes.

See also point access method, quadtree, octree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 13 12:22:17 2003.
HTML page formatted Thu Apr 17 10:48:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/bsptree.html


B*-tree

(data structure)

Definition: A B-tree in which nodes are kept 2/3 full by redistributing keys to fill two child nodes, then splitting them into three nodes.

Author: PEB

Implementation

data structure definition (C and Pascal), B-tree insert (C and Pascal) using auxiliary functions (C and Pascal), B-tree search (C and Pascal).

More information

See links at B-tree.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 12 12:59:09 2002.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/bstartree.html


B-tree

(data structure)

Definition: A balanced search tree in which every node has between ceiling( m/2 ) and m children, where m>1 is a fixed integer. The root may as few as 2 children. This is a good structure if much of the tree is in slow memory (disk), since the height, and hence the number of accesses, can be kept small, say one or two, by picking a large m.

Also known as balanced multiway tree.

See also 2-3-4 tree, B*-tree, B+-tree, 2-3 tree, multiway tree, external memory data structure.

Note: Named for Rudolf Bayer. After [HS83, page 499].

Author: PEB

Implementation

data structure definition (C and Pascal), insert (C and Pascal) using auxiliary functions (C and Pascal), search (C and Pascal), (Pick Basic?).

More information

A tutorial on the basics, and variants.

Rudolf Bayer and Edward M. McCreight, Organization and Maintenance of Large Ordered Indices, Acta Informatica, 1:173-189, 1972.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 27 11:30:24 2003.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/btree.html


bubble sort

(algorithm)

Definition: Sort by comparing each adjacent pair of items in a list in turn, swapping the items if necessary, and repeating the pass through the list until no swaps are done.

Also known as sinking sort, exchange sort.

See also bidirectional bubble sort, sort.

Note: Complexity is O(n2) for arbitrary data, but approaches upper-case Theta (n) if the list is nearly in order at the beginning. Bidirectional bubble sort usually does better than bubble sort since at least one item is moved forward or backward to its place in the list with each pass. Bubble sort moves items forward into place, but can only move items backward one location each pass.

Since at least one item is moved into its final place for each pass, an improvement is to decrement the last position checked on each pass.

The name "sinking sort" comes from elements sinking down to their proper position. Contributed by Ken Tata (Ken.Tata@onsemi.com) 22 December 2000. After LK.

Author: PEB

Implementation

animation and code (Java); sinking sort explanation and animation (Java); demonstration and source code (Java) - but code might not render properly; explanation (C); (Java).

More information

animation of many sorting algorithms; demonstration.

Marvin V. Zelkowitz, Principles of Software Engineering and Design, Prentice-Hall, page 107, 1979.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:19:11 2003.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/bubblesort.html


bucket

(definition)

Definition: An area of storage where items with a common property are stored. Typically tree data structures and sort algorithms use many buckets, one for each group of items. Usually buckets are kept on disk.

See also radix sort, bucket sort, hash heap, bucket trie, extendible hashing.

Note: A bucket is used when a number of items need to be kept together, but the order among them is not important. Conceptually it is a bag (rather than a set).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Nov 14 10:12:37 2000.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/bucket.html


bucket array

(data structure)

Definition: Implementation of a dictionary by an array indexed by the keys of the items in the dictionary.

Note: From Algorithms and Theory of Computation Handbook, page 4-28, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:44:14 2000.
HTML page formatted Mon May 12 10:30:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/bucketarray.html


bucketing method

(definition)

Definition: Data organization methods that decompose the space from which spatial data is drawn into regions called buckets. Some conditions for the choice of region boundaries include the number of objects that they contain or on their spatial layout (e.g. minimizing overlap or coverage).

See also fixed-grid method, regular decomposition.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:44:09 2000.
HTML page formatted Mon May 12 10:30:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/bucketmeth.html


bucket sort

(algorithm)

Definition: A distribution sort where input elements are initially distributed to several buckets based on an interpolation of the element's key. Each bucket is sorted if necessary, and the buckets' contents are concatenated.

Also known as bin sort.

See also histogram sort, range sort, radix sort, counting sort, hash heap.

Note: The space required is one bucket for every few possible key value, but is O(n log log n) taking into account a distribution of keys. That is, some buckets will have a lot of keys.

Bucket sorts work well for data sets where the possible key values are known and relatively small and there are on average just a few elements per bucket. This means the cost of sorting the contents of each bucket can be reduced toward zero. The ideal result is if the order in each bucket is uninteresting or trivial, for instance, when each bucket holds a single key. The buckets may be arranged so the concatenation phase is not needed, for instance, the buckets are contiguous parts of an array.

Bucket sorts can be stable.

Author: PEB

Implementation

analysis, explanation, and code (C), and (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:45:53 2002.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/bucketsort.html


bucket trie

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/buckettrie.html


buddy system

(algorithm)

Definition: A memory allocation strategy which recursively divides allocatable blocks of memory into pairs of adjacent equal-sized blocks called "buddies."

Note: This is included to minimize confusion with a buddy tree. After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 11:29:44 2000.
HTML page formatted Thu Apr 17 10:48:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/buddysystem.html


buddy tree

(data structure)

Definition: A point access method which splits multidimensional space in different dimensions at each level. It also keeps a minimum bounding box of points accessible by each node.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:40 2001.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/buddytree.html


build-heap

(algorithm)

Definition: Convert an array into a heap by executing heapify progressively closer to the root. For an array of n nodes, this takes O(n) time under the comparison model.

Note: After [CLR90, page 145].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:09:32 2001.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/buildHeap.html


busy beaver

(classic problem)

Definition: (1) A Turing machine with a small number of states which halts when started with a blank tape, but which writes a huge number of non-blanks or takes a huge number of steps. (2) The problem of finding the maximum number of non-blanks written or steps taken for any Turing machines with a given number of states and symbols.

Note: The problem is well-defined but rapidly becomes uncomputable for even a small number of states and symbols.

Author: PEB

More information

History, explanation, and links about the Busy Beaver Turing Machine. Heiner Marxen's currently known busy beaver results page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 6 12:40:33 2001.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/busyBeaver.html


BV-tree

(data structure)

Definition: A conceptual idea which generalizes B-trees to multiple dimensions. BV-trees are not balanced, and searching may require backtracking.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:30 2001.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/bvtree.html


Byzantine generals

(classic problem)

Definition: The problem of reaching a consensus among distributed units if some of them give misleading answers. The original problem concerns generals plotting a coup. Some generals lie about whether they will support a particular plan and what other generals told them. What percentage of liars can a decision making algorithm tolerate and still correctly determine a consensus?

Note: One variant is: suppose two separated generals will win if both attack at the same time and lose if either attacks alone, but messengers may be captured. If one decides to attack, how can that general be sure that the message has reached the other general and the other general will attack, too?

Author: PEB

More information

Summary of article by Lamport, Shostak, and Pease.

Leslie Lamport, Robert Shostak and Marshall Pease, The Byzantine Generals Problem, ACM Transactions on Programming Languages and Systems, 4(3):382-401, July 1982.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 30 14:14:12 2002.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/byzantine.html


Byzantine Agreement Problem

(classic problem)

Definition: See Byzantine generals.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 30 14:14:12 2002.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/ByzantineAgreementProblem.html


Byzantine generals problem

(classic problem)

Definition: See Byzantine generals.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 30 14:14:12 2002.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/ByzantineGeneralsProblem.html


cactus stack

(data structure)

Definition: A variant of stack in which one other cactus stack may be attached to the top. An attached stack is called a "branch." When a branch becomes empty, it is removed. Pop is not allowed if there is a branch. A branch is only accessible through the original reference; it is not accessible through the stack.

Formal Definition: The operations new to this variant of stack, branch(v, u) and notch(v), may be defined with the following.
top(branch(v, u)) = top(v)
not notch(new)
not notch(push(v, S))
notch(branch(v, u))

Also known as spaghetti stack, saguaro stack.

Note: A saguaro is a kind of branching cactus.

Author: PEB

More information

Pictures and a description.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:16:22 2002.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/cactusstack.html


Calculus of Communicating Systems

(definition)

Definition: Robin Milner's algebraic theory to formalize the notion of concurrent computation. Commonly known as CCS.

See also CSP.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 16:35:02 1999.
HTML page formatted Thu Apr 17 10:48:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/calcucommsys.html


calendar queue

(data structure)

Definition: A fast priority queue implementation having N buckets each with width w, or covering w time. An item with priority p more than current goes in bucket (p/w)%N. Choose N and w to have few items in each bucket. Keep items sorted within buckets. Double or halve N and change w if the number of items grows or shrinks a lot.

See also bucket sort.

Author: PEB

Implementation

In a simulation tool package (C)

More information

Dynamic Calendar Queue.

Randy Brown, Calendar Queues: A Fast 0(1) Priority Queue Implementation for the Simulation Event Set Problem, CACM, 31(10):1220-1227, October 1988.

R. Jain, The Art of Computer Systems Performance Analysis, John Wiley and Sons, Inc., 1996, page 410.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 09:17:45 2002.
HTML page formatted Thu Apr 17 10:48:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/calendarQueue.html


candidate consistency testing

(definition)

Definition: The stage of two-dimensional matching where a candidate occurrence of the pattern is checked against the "witness" table.

See also candidate verification.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:43:41 2000.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/candidate.html


candidate verification

(definition)

Definition: The stage of two-dimensional matching where candidate occurrences of the pattern are actually tested.

See also candidate consistency testing.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:43:36 2000.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/candidateVerification.html


canonical complexity class

(definition)

Definition: One of the classes defined by logarithmic, polynomial, and exponential bounds on time and space, for deterministic and nondeterministic machines. These classify most of the important computational problems.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:39:54 2002.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/canonical.html


capacitated facility location

(classic problem)

Definition: Given a set of demand points, a distance function, and a parameter p, find a set of p supply object (points, lines, segments, etc.) which minimizes some distance objective function and no supply supports too many demand points.

See also facility location.

Note: Adapted from [AS98, page 428].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:12:04 2001.
HTML page formatted Thu Apr 17 10:48:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/capacifacloc.html


capacity

(definition)

Definition: The maximum flow that may be sent through an edge or a vertex.

See also saturated edge, flow network.

Note: Formally the capacity is just a weight, but because it is used with networks and flows, it is helpful to think of it as analogous to a physical capacity.

From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:43:28 2000.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/capacity.html


capacity constraint

(definition)

Definition: The property that the flow on every edge of a flow network is no more than the edge's capacity. More formally, for all edges e, f(e) less than or equal to u(e), where f(e) is the flow on e and u(e) is its capacity.

See also flow network.

Note: From Algorithms and Theory of Computation Handbook, page 7-10, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:43:24 2000.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/capacitycstr.html


cartesian tree

(data structure)

Definition: See randomized binary search tree.

Author: CM

Implementation

Oleg Kiselyov's (Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:01:52 2002.
HTML page formatted Thu Apr 17 10:48:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/cartesianTree.html


cascade merge sort

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:48:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/cascademerg.html


Cayley-Purser

(algorithm)

Definition: (no definition here, yet, but you can help.)

Note: Developed by Sarah Flannery, a 16-year old Irish girl. "... it has what is probably a devastating and unfixable security flaw." (Dr. Dobb's Journal, June 2002, page 80)

Implementation

explanation, proofs, comparison with RSA, how it can be broken, and code (Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 13:48:32 2002.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/cayleypurser.html


CBT

(definition)

Definition: See complete binary tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 10:41:16 2002.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/cbt.html


CCS

(definition)

Definition: Robin Milner's algebraic theory to formalize the notion of concurrent computation. An acronym for Calculus of Communicating Systems.

See also CSP.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 16:33:42 1999.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/ccs.html


C curve

Definition: (no definition here, yet, but you can help.)

See also Dragon curve, Hilbert curve, Sierpinski curve.

Note: After LISP, page 60.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jun 28 12:14:36 1999.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/ccurve.html


cell probe model

(definition)

Definition: A model of computation where the cost of a computation is measured by the total number of memory accesses to a random access memory with ceiling( log n ) bits cell size. All other computations are not counted and are considered to be free.

See also random access machine, pointer machine, Turing machine, big-O notation.

Note: From Algorithms and Theory of Computation Handbook, page 5-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:43:20 2000.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/cellProbeModel.html


cell tree

(data structure)

Definition: A spatial access method where successive levels are split by arbitrary hyperplanes. Concave objects are decomposed into convex pieces. Each convex piece is indexed in every cell which it overlaps.

See also BSP-tree, R+-tree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:24 2001.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/celltree.html


cellular automaton

(definition)

Definition: Usually a two-dimensional organization of simple finite state machines whose next state depends on their own state and the states of their eight closest neighbors. In general the machines may be arranged in meshes of higher or lower dimension, have larger neighborhoods, or be arbitrarily complex processors.

Note: Conway's game of Life is probably the most well known instance of a cellular automaton.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 2 10:31:31 1999.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/cellulartmtn.html


centroid

(definition)

Definition: The center of gravity or center of mass of an object.

Author: PEB

More information

Clark Kimberling's pictorial example and physical method of finding the centroid of an plane object. A more analytical description and information about the word's origin.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 17 09:09:28 2003.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/centroid.html


certificate

(definition)

Definition: (1) Extra information so the correctness of an answer to a decision problem can be quickly checked. (2) For any graph property P and graph G, a certificate for G is a graph G' such that G has property P if and only if G' has the property.

See also witness.

Note: (1) After comp.theory FAQ. (2) From Algorithms and Theory of Computation Handbook, page 8-22, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Authors: PEB,CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:24:44 2002.
HTML page formatted Mon May 12 10:30:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/certificate.html


chain

(definition)

Definition: A set with a total order.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 23 11:55:22 2000.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/chain.html


chaining

(data structure)

Definition: The use of an external data structure to store collisions of a hash table. A linked list is often used.

See also open addressing, load factor, separate chaining hashing, direct chaining hashing.

Note: Any searchable data structure may be used, but it is usually better to expand the hash table, thus lowering the load factor, and use the simple linked list.

Author: PEB

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 20 16:22:51 2000.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/chaining.html


child

(definition)

Definition: An item of a tree referred to by a parent item. See the figure at tree. Every item, except the root, is the child of some parent.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Sep 18 12:51:45 1998.
HTML page formatted Thu Apr 17 10:48:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/child.html


Chinese postman problem

(classic problem)

Definition: Find a minimum length closed walk that traverses each edge at least once. Finding an optimal solution is NP-complete.

See also Hamiltonian cycle, Euler cycle, traveling salesman, vehicle routing problem, optimization problem.

Note: This is similar to finding the most efficient way to route garbage trucks, school buses, etc. A good algorithm is given in Jack Edmonds and Ellis L. Johnson, Matching, Euler Tours, and the Chinese Postman, Math. Programming, 5:88-124, 1973.

From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

(Mathematica and Fortran)

More information

Originally proposed by Mei-Ko Kwan, in 1962.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 12 10:31:53 2003.
HTML page formatted Mon May 12 11:07:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/chinesePostman.html


Chinese remainder theorem

(algorithm)

Definition: An integer n can be solved uniquely mod LCM(A(i)), given modulii (n mod A(i)), A(i) > 0 for i=1..k, k > 0. In other words, given the remainders an integer gets when it's divided by an arbitrary set of divisors, you can uniquely determine the integer's remainder when it is divided by the least common multiple of those divisors.

Note: For example, knowing the remainder of n when it's divided by 3 and the remainder when it's divided by 5 allows you to determine the remainder of n when it's divided by LCM(3,5) = 15. After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 16 10:09:06 1999.
HTML page formatted Thu Apr 17 10:48:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/chineseRmndr.html


Christofides algorithm

(algorithm)

Definition: (1) A heuristic algorithm to find a near-optimal solution to the traveling salesman problem. Step 1: find a minimum spanning tree T. Step 2: find a perfect matching M among vertices with odd degree. Step 3: combine the edges of M and T to make a multigraph G. Step 4: find an Euler cycle in G by skipping vertices already seen. (2) An algorithm to find the chromatic number of a graph.

Also known as Christofides heuristic.

Author: PEB

More information

A graphical example and algorithm outline, a PDF document explaining the algorithm with proof of guarantee.

(1) Nicos Christofides, Worst-case analysis of a new heuristic for the travelling salesman problem, Report 388, Graduate School of Industrial Administration, CMU, 1976.

Also CMU Tech. Report CS-93-13, 1976. Also Sympos. on New Directions and Recent Results in Algorithms and Complexity, J. F. Traub ed., page 441, Academic Press, New York, NY, 1976.

(2) Nicos Christofides, An algorithm for the chromatic number of a graph, Computer J., 14(1):38-39, February 1971.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 13 09:12:38 2001.
HTML page formatted Thu Apr 17 10:48:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/christofides.html


Christofides heuristic

(algorithm)

Definition: See Christofides algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 13 09:12:38 2001.
HTML page formatted Thu Apr 17 10:48:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/ChristofidesHeuristic.html


chromatic number

(definition)

Definition: The minimum number of colors needed to color the vertices of a graph such that no two adjacent vertices have the same color.

See also vertex coloring, chromatic index, Christofides algorithm.

Note: From Algorithms and Theory of Computation Handbook, pages 7-19 and 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 3 12:50:57 2001.
HTML page formatted Mon May 12 10:30:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/chromatcnmbr.html


chromatic index

(definition)

Definition: The minimum number of colors needed to color the edges of a graph.

See also chromatic number, edge coloring.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:42:59 2000.
HTML page formatted Mon May 12 10:30:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/chromaticndx.html


Church-Turing thesis

(definition)

Definition: (no definition here, yet, but you can help.)

See also polynomial-time Church-Turing thesis.

More information

The Church-Turing Thesis in the Stanford Encyclopedia of Philosophy.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 22 16:44:21 2001.
HTML page formatted Thu Apr 17 10:48:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/churchTuringThesis.html


circuit

(definition)

Definition: An acyclic network of inputs, logic gates, and outputs. Contrasted with a Turing machine, it has no memory.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:42:48 2000.
HTML page formatted Mon May 12 10:30:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/circuit.html


circuit complexity

(definition)

Definition: The study of the size, depth, and other attributes of circuits that decide specified languages or compute specified functions.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:42:16 2000.
HTML page formatted Mon May 12 10:30:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/circuitComplexity.html


circuit value problem

(definition)

Definition: Given an encoding alpha of a boolean circuit alpha, inputs x1, ... , xn and a designated output y, the problem of deciding if output y of alpha is true on input x1, ... , xn.

Note: From Algorithms and Theory of Computation Handbook, pages 27-21 and 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:42:02 2000.
HTML page formatted Mon May 12 10:30:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/circuitvalue.html


circular list

(data structure)

Definition: A variant of a linked list in which the nominal tail is linked to the head. The entire list may be accessed starting at any item and following links until one comes to the starting item again.

See also list.

Author: BB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 6 16:49:21 2001.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/circularlist.html


circular queue

(data structure)

Definition: An implementation of a bounded queue using an array.

See also queue.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 14 12:02:36 2001.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/circularQueue.html


clique

(definition)

Definition: A set of vertices in an undirected graph in which every vertex has an edge to every other vertex. In other words, a subgraph which is complete.

See also clique problem.

Note: Pronounced "click."

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:11:55 2000.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/clique.html


clique problem

(classic problem)

Definition: Find the largest clique in an undirected graph.

Author: PEB

Implementation

(Fortran, C, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 17 14:49:34 1999.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/cliqueproblm.html


clustering

(definition)

Definition: The tendency for entries in a hash table which uses open addressing to be stored together, even when the table has ample empty space to spread them out.

See also primary clustering, secondary clustering, k-clustering, clustering free.

Note: Clustering leads to inefficiency because the chances are higher that the place you want to put an item is already filled. The effect is like having a high load factor in the areas with clustering, even though the overall load factor may be quite low.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 20 16:43:10 2000.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/clustering.html


clustering free

(definition)

Definition: When a collision resolution scheme spreads out entries in a hash table.

See also clustering, open addressing, double hashing, uniform hashing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 2 16:36:32 2000.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/clusterngfr.html


coalesced hashing

(data structure)

Definition: An array that is indexed by a hash function. An item whose hash value is occupied (a collision) is put in the next empty place in the array and added to the end of a list embedded in the array items.

See also hash table, chaining, separate chaining hashing.

Note: Deletion may be hard because finding collisions again relies on not creating empty spots. One solution is to mark an entry as deleted so it can be reused for insertion, but the search list is intact. Any list search algorithm may be used to search the collision list.

Author: PEB

Implementation

insert (C), search (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:28:21 2003.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/coalescdhash.html


coalesced chaining

(data structure)

Definition: See coalesced hashing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:28:21 2003.
HTML page formatted Thu Apr 17 10:48:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/coalescedChaining.html


coarsening

(definition)

Definition: To alter a problem, typically restricting it to a less complex feasible region or objective function, so that the resulting problem can be efficiently solved, usually by dynamic programming.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:41:57 2000.
HTML page formatted Mon May 12 10:30:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/coarsening.html


cocktail shaker sort

(algorithm)

Definition: See bidirectional bubble sort.

Authors: PEB,BB

Implementation

animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:51 2003.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/cocktailShakerSort.html


codeword

(definition)

Definition: Sequence of bits of a code corresponding to a symbol.

Note: From Algorithms and Theory of Computation Handbook, page 12-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:41:53 2000.
HTML page formatted Mon May 12 10:30:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/codeword.html


coding tree

Definition: (no definition here, yet, but you can help.)

See also prefix code.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 7 16:53:30 2000.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/codingTree.html


collective recursion

(algorithmic technique)

Definition: A special form of tail recursion, where the results are produced during the recursive calls and nothing is returned. The recursion may be optimized away by executing the call in the current stack frame, rather than creating a new stack frame, or by deallocating the entire recursion stack at once rather than a little at each return.

Note: The following program prints the values greater than limit in a list.

 int overlimit(list l, int limit)
 {
     if (null == l) {
         return;
     }

     if (limit < head(l)) {
         printf("%d\n", head(l));
     }
     overlimit(tail(l), limit);
 }
At the return, the compiler can deallocate all the memory for the recursion stack at once.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 28 11:31:18 2000.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/collectrecur.html


collision

(definition)

Definition: When two or more items should be kept in the same location, especially in hash tables, that is, when two or more different keys hash to the same value.

See also collision resolution scheme, perfect hashing, simple uniform hashing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:35:34 2003.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/collision.html


collision resolution scheme

(algorithm)

Definition: A way of handling collisions, that is, when two or more items should be kept in the same location, especially in a hash table. The general ways are keeping subsequent items within the table (open addressing), keeping a list for items which collide (direct chaining hashing or separate chaining hashing), keeping a special overflow area, etc. Perfect hashes avoid collisions, but may be time-consuming to create.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:36:22 2003.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/collisionres.html


Colussi

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Reverse Colussi.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:08:31 2003.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/colussi.html


combination

(algorithm)

Definition: Choose n of m elements, where n less than or equal to m.

See also permutation, subset.

Note: A combination is a subset with exactly n elements.

Author: PEB

Implementation

The Combinatorial Object Server's information on Combinations (Pascal and C); Michael Gilleland's CombinationGenerator class (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 6 11:18:53 2002.
HTML page formatted Thu Apr 17 10:48:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/combination.html


comb sort

(algorithm)

Definition: See diminishing increment sort.

Authors: PEB,ASK

Implementation

comb sort parallel (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:11:52 2002.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/combSort.html


Communicating Sequential Processes

(definition)

Definition: C. A. R. Hoare's algebraic theory to formalize the notion of concurrent computation. Commonly known as CSP.

See also CCS.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 16:31:52 1999.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/communseqpro.html


commutative

(definition)

Definition: A function where f(A, B) = f(B, A).

See also associative.

Note: Multiplication is associative, e.g., 2 × (3 × 4) = (2 × 3) × 4, and commutative, e.g., 2 × 3 = 3 × 2. Subtraction is neither associative, e.g., 2 - (3 - 4) not equal to (2 - 3) - 4, nor commutative, e.g., 2 - 3 not equal to 3 - 2. Because of rounding floating point addition on a computer is not associative, e.g., (1000000 + .00001) + .00001 not equal to 1000000 + (.00001 + .00001) (actual values depend on the details of the computer addition), but is commutative, e.g., 1000000 + .00001 = .00001 + 1000000.
Cartesian product is associative, e.g., {1, 2} × ({a, b} × {X, Y}) = ({1, 2} × {a, b}) × {X, Y}, but is not commutative, e.g., {1, 2} × {a, b} not equal to {a, b} × {1, 2}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 29 12:19:10 1999.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/commutative.html


compact DAWG

(data structure)

Definition: A directed acyclic word graph (DAWG) representing the suffixes of a given string in which each edge is labeled with the longest possible string. The strings along a path from the root to a node are the substring which the node represents.

See also directed acyclic word graph, Patricia tree.

Note: This is a variant of a directed acyclic word graph, or DAWG, in which a node with one child is merged with its parent and the edge labels are concatenated. A Patricia tree merges single-child nodes also, but does not combine common subtrees.

Author: PEB

More information

Andrew W. Appel and Guy J. Jacobson, The World's Fastest Scrabble Program, CACM, 31(5):572-578, May 1988. Good description of the basic DAWG.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 8 15:53:28 2001.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/compactDAWG.html


comparison sort

(definition)

Definition: Any sort algorithm using comparisons between keys, and nothing else about the keys, to arrange items in a predetermined order. An alternative is a restricted universe sort such as counting sort or bucket sort.

See also quicksort, insertion sort.

Note: From Algorithms and Theory of Computation Handbook, page 3-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:41:50 2000.
HTML page formatted Mon May 12 10:30:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/comparisnsrt.html


competitive analysis

(definition)

Definition: An analysis in which the performance of an on-line algorithm is compared to the best that could have been achieved if all the inputs had been known in advance.

Note: From Algorithms and Theory of Computation Handbook, page 10-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:35:48 2000.
HTML page formatted Mon May 12 10:30:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/competitiveAnalysis.html


competitive ratio

(definition)

Definition: The worst case of the ratio between the cost incurred by an on-line algorithm and the best-case cost.

Note: From Algorithms and Theory of Computation Handbook, page 10-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:06:37 2002.
HTML page formatted Mon May 12 10:30:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/competitivrt.html


complement

(definition)

Definition: (1) Of a boolean, 0 if 1, or 1 if 0. See not. (2) Of a set A, a set having all the members which are in the universe, but not in A.

See also difference, union, intersection.

Note: The complement can be seen as the difference of a set and the universe, or the universal set. That is, A' = U - A. If the universe is {1, 2, 3, 4}, then the complement of {1, 2} is {3, 4}, and the complement of {3} is {1, 2, 4}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:37:59 2002.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/complement.html


complete binary tree

(definition)

Definition: A binary tree in which all leaf nodes are at some depth n or n-1, and all leaves at depth n are toward the left.

See also full binary tree, perfect binary tree, extendible hashing, heap, complete tree.

Note: A complete binary tree has between 2n-1 and 2n-1 nodes. It can be efficiently implemented as an array, where a node at index i has children at indexes 2i and 2i+1 and a parent at index i/2. After LK.

This kind of tree is called "complete" by authors that mention it (Budd page 332, Ege, Carrano & Prichard page 427, Goodrich & Tamassia, [Knuth98], [Stand98, page 249]).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 10:41:16 2002.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/completeBinaryTree.html


complete graph

(definition)

Definition: An undirected graph with an edge between every pair of vertices.

See also connected graph, sparse graph, dense graph, complete tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 22 11:44:40 2002.
HTML page formatted Thu Apr 17 10:48:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/completeGraph.html


complete k-ary tree

(definition)

Definition: See perfect k-ary tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 10:33:06 2002.
HTML page formatted Thu Apr 17 10:48:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/completeKaryTree.html


completely connected graph

(definition)

Definition: See either connected graph or complete graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 22 11:45:51 2002.
HTML page formatted Thu Apr 17 10:48:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/completelyConnectedGraph.html


complete tree

(definition)

Definition: A tree in which all leaf nodes are at some depth n or n-1, and all leaves at depth n are toward the left.

See also complete graph, complete binary tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 10:41:47 2002.
HTML page formatted Thu Apr 17 10:48:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/completetree.html


complexity

(definition)

Definition: The intrinsic minimum amount of resources, for instance, memory, time, messages, etc., needed to solve a problem or execute an algorithm.

See also complexity class, big-O notation, decision problem, model of computation.

Note: Any measure of execution must implicitly or explicitly refer to some computation model. Usually this is some notion of the limiting factor. For one problem or machine, the number of floating point multiplications may be the limiting factor, while for another, it may be the number of messages passed across a network. Other measures that may be important are compares, item moves, disk accesses, memory used, or elapsed ("wall clock") time.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:23:22 2003.
HTML page formatted Thu Apr 17 10:48:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/complexity.html


complexity class

(definition)

Definition: Any of a set of computational problems with the same bounds ( upper-case Theta (n)) on time and space, for deterministic and nondeterministic machines.

See also canonical complexity class, P, NP, NP-complete, NP-hard, coNP, NC, AP, BPP, Turing machine.

Note: From Algorithms and Theory of Computation Handbook, page 27-2, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:39:10 2002.
HTML page formatted Mon May 12 10:30:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/complexityClass.html


compliment

(definition)

Definition: See complement.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:37:59 2002.
HTML page formatted Thu Apr 17 10:48:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/compliment.html


computable

(definition)

Definition: A function that can be computed by an algorithm --- equivalently, by a Turing machine.

See also uncomputable function, decidable, solvable, tractable, primitive recursive.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 14:04:15 2002.
HTML page formatted Mon May 12 10:30:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/computable.html


computable function

(definition)

Definition: See computable.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 14:04:15 2002.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/computableFunction.html


concave function

(definition)

Definition: (no definition here, yet, but you can help.)

Note: Adapted from [AS98, page 415].

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:11:59 2001.
HTML page formatted Thu Apr 17 10:48:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/concavefunct.html


concurrent read, concurrent write

(definition)

Definition: A parallel memory model in which multiple processors can read simultaneously from a single memory location, and multiple processors can write simultaneously to a single memory location.

Also known as CRCW.

See also concurrent read, exclusive write, exclusive read, concurrent write, exclusive read, exclusive write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:33:31 2002.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/concurrentReadConWrt.html


concurrent read, exclusive write

(definition)

Definition: A parallel memory model in which multiple processors can read simultaneously from a single memory location, but only one processor can write to any one memory location at one time.

Also known as CREW.

See also concurrent read, concurrent write, exclusive read, concurrent write, exclusive read, exclusive write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:34:49 2002.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/concurrentReadExcluWrt.html


concurrent flow

(definition)

Definition: A multi-commodity flow in which the same fraction of the demand of each commodity is satisfied.

See also flow, flow network.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:31:11 2000.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/concurrntflw.html


configuration

(definition)

Definition: See instantaneous description.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:53:42 2002.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/configuration.html


confluently persistent data structure

(definition)

Definition: A fully persistent data structure that allows meld or merge operations to combine two different versions.

See also partially persistent data structure, fully persistent data structure.

Author: PEB

More information

James R. Driscoll, Daniel D. Sleator, and Robert E. Tarjan, Fully Persistent Lists with Catenation, Journal of the ACM, 41(5):943-949, 1994.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Mar 7 12:50:15 2003.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/confluentlyPersistData.html


conjunction

(definition)

Definition: The boolean and function.

See also disjunction, implication.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 31 10:57:00 1999.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/conjunction.html


connected components

(definition)

Definition: The set of maximally connected components of an undirected graph.

See also connected graph, biconnected component, undirected graph, subgraph, clique, strongly connected components.

Note: If a graph is connected, it has only one connected component.

Let G=(V, E) be a graph and G1=(V1, E1) ..., Gm=(Vm, Em) be its connected components. Every vertex is in exactly in one connected component. Formally, for all i not equal to j, Vi intersect Vj= {}. Further, V=V1 union ... Vm and E=E1 union ... union Em.

Author: AL

Implementation

(C++, C, Pascal, Mathematica, and Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 13:16:16 2002.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/connectedComponents.html


connected graph

(definition)

Definition: An undirected graph that has a path between every pair of vertices.

See also complete graph, biconnected graph, triconnected graph, strongly connected graph, forest, bridge, reachable, maximally connected component, connected components, vertex connectivity, edge connectivity.

Note: After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 27 10:11:36 2002.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/connectedGraph.html


coNP

(definition)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 10 13:26:02 2001.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/coNP.html


constant function

(definition)

Definition: A function that always gives the same value.

See also 0-ary function, unary function, binary function, n-ary function.

Note: A 0-ary or nullary function that is pure (no state or interactions with external variables) must be a constant function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 11:19:13 2001.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/constantfunc.html


container

(data structure)

Definition: abstract data type storing a collection of items.

See also locator.

Note: From Algorithms and Theory of Computation Handbook, page 4-29, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:31:02 2000.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/container.html


continuous knapsack problem

(classic problem)

Definition: See fractional knapsack problem.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 24 09:06:52 2002.
HTML page formatted Thu Apr 17 10:48:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/continuousKnapsackProblem.html


Cook reduction

(definition)

Definition: A reduction computed by a deterministic polynomial time oracle Turing machine.

See also NP-complete, Turing reduction, Karp reduction, l-reduction, many-one reduction, polynomial-time reduction.

Note: From Algorithms and Theory of Computation Handbook, page 28-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:30:57 2000.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/cookreductin.html


Cook's theorem

(definition)

Definition: The language SAT of satisfiable Boolean formulas is NP-complete.

Note: From Algorithms and Theory of Computation Handbook, page 28-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:30:54 2000.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/cookstheorem.html


counting sort

(algorithm)

Definition: A 2-pass sort algorithm that is efficient when the range of keys is small and there many duplicate keys. The first pass counts the occurrences of each key in an auxiliary array, and then makes a running total so each auxiliary entry is the number of preceding keys. The second pass puts each item in its final place according to the auxiliary entry for that key.

See also histogram sort, American flag sort, bucket sort, bingo sort, distribution sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:49:56 2003.
HTML page formatted Tue May 13 15:54:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/countingsort.html


covering

(definition)

Definition: Given a finite collection of subsets of a finite ground set, to find an optimal subcollection whose union covers the ground set.

See also packing, vertex cover, set cover, path cover.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:30:50 2000.
HTML page formatted Mon May 12 10:30:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/covering.html


CP algorithm

(algorithm)

Definition: See Cayley-Purser.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 13:48:32 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/CPAlgorithm.html


CRC

(algorithm)

Definition: See cyclic redundancy check.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:20:25 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/crc.html


CRCW

(definition)

Definition: See concurrent read, concurrent write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:33:31 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/crcw.html


CREW

(definition)

Definition: See concurrent read, exclusive write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:34:49 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/crew.html


critical path problem

(classic problem)

Definition: Find the longest path from any source to any sinks in a directed acyclic graph which has weights, or numeric values, on vertices.

Note: This can be solved with a variant of the DAG shortest paths algorithm by assigning an initial distance of negative infinity (- infinity), updating the distance and predecessor if dist(v) + weight(u) > dist(u), and recording the greatest distance found so far.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:11:47 2000.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/criticalPath.html


CSP

(definition)

Definition: C. A. R. Hoare's algebraic theory to formalize the notion of concurrent computation. An acronym for Communicating Sequential Processes.

See also CCS.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 09:27:29 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/csp.html


CTL

(definition)

Definition: A propositional, branching-time temporal logic for which formulas can be checked in linear time. An acronym for Computation Tree Logic.

Note: CTL differs from CTL* in that in CTL path quantifiers (E and A) always appear with temporal operators (F, G, X, U, etc.). Therefore CTL formulas are state formulas.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:40:16 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/ctl.html


cuckoo hashing

(algorithm)

Definition: A dictionary implemented with two hash tables, T1 and T2, and two different hash functions, h1 and h2. Each key, k, is either in T1[h1(k)] or T2[h2(k)]. A new key, k, is stored in T1[h1(k)]. If that location is already occupied by another key, l, the other key is moved to T2[h2(l)]. Key are moved back and forth until a key moves to an empty location or a limit has been reached. If the limit is reached, new hash functions are chosen, and the tables are rehashed. For tables that are a bit less than half full and universal hashing functions, performance is good. A key is deleted by removing it from a table.

Note: The name comes from the European cuckoo, whose young pushes other, competing eggs out of the nest.

Author: PEB

More information

Rasmus Pagh and Flemming Friche Rodler, Cuckoo Hashing, Proceedings of ESA 2001, Lecture Notes in Computer Science, vol. 2161, pages 121-?, 2001.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:54:33 2003.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/cuckooHashing.html


cut

(definition)

Definition: A nonempty, proper subset of vertices of a graph.

Note: After [Leda98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 4 10:08:59 2002.
HTML page formatted Thu Apr 17 10:48:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/cut.html


cutting plane

(definition)

Definition: A valid inequality for an integer polyhedron that separates the polyhedron from a given point outside it.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:30:46 2000.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/cuttingplane.html


cutting stock problem

(classic problem)

Definition: Find the best arrangement of shapes on rectangles to minimize waste or the number of rectangles. This is a two-dimensional variant of the bin packing problem. It is NP-complete.

See also knapsack problem, a one-dimensional variant is the strip packing problem, optimization problem.

Note: This problem arises often in manufacturing. For instance, deciding how to cut pieces for pants from cloth or shapes from sheet metal.

Author: PEB

Implementation

linear and nonlinear programming and algebra packages (C and Fortran)

More information

The Cutting Stock Problem: An Application of Integer Linear Programming at the Optimization Technology Center.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 13:03:44 2002.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/cuttingStock.html


cutting theorem

(definition)

Definition: For any set H of n hyperplanes in Rk, and any parameter r, 1 less than or equal to r less than or equal to n, there always exists a (1/r)-cutting of size O(rk). In two dimensions, a (1/r)-cutting of size s is a partition of the plane into s disjoint triangles, some of which are unbounded, such that no triangle in the partition intersects more than n/r lines in H. In Rk, triangles are replaced by simplices. Such a cutting can be computed in O(nrk-1) time.

Note: From Algorithms and Theory of Computation Handbook, page 20-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:30:42 2000.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/cuttingtherm.html


cut vertex

(definition)

Definition: A vertex whose deletion along with incident edges results in a graph with more components than the original graph.

Also known as articulation vertex.

See also connected components, biconnected graph.

Note: After Algorithms and Theory of Computation Handbook, page 6-6, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

With input from Paul Tanenbaum <pjt@arl.army.mil> (3 Sept 2002).

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 3 11:56:40 2002.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/cutvertex.html


cycle

(definition)

Definition: A path in a graph which starts and ends at the same vertex and includes other vertices at most once.

See also Hamiltonian cycle, Euler cycle.

Note: The constraint that it include vertices at most once makes a cycle a simple path.

Author: PEB

Implementation

graph cycle detector (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 2 08:52:54 2000.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/cycle.html


cyclic redundancy check

(algorithm)

Definition: (1) A method to detect and correct errors by adding bits derived from a block or string of bits to the block. (2) An algorithm to compute bits characteristic of a block based on the algebra of polynomials over the integers, modulo 2. (3) The characteristic bits of a block.

Also known as CRC.

Note: Large blocks may be probabilistically compared by precalculating the CRC for each block, then comparing their CRCs. If the CRCs are different, the blocks are different. If the CRCs match, there is a small chance that the blocks are actually different. This probability may be made arbitrarily smaller with more CRC bits.

Many transmission errors may be detected, and some corrected, by recalculating the CRC and comparing it with the transmitted CRC.

Contributed by Arvind <uk_arvind@mail.utexas.edu> May 2002.

More information

tutorial

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:20:25 2002.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/cyclicRedundancyCheck.html


D-adjacent

(definition)

Definition: An entry reachable for a (d-1)-extremal entry through a unit vertical, horizontal, or diagonal-mismatch step.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:29:48 2000.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/dadjacent.html


DAG

(definition)

Definition: See directed acyclic graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:34:39 2002.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/dag.html


DAG shortest paths

(algorithm)

Definition: Solve the single-source shortest-path problem in a weighted directed acyclic graph by 1) doing a topological sort on the vertices by edge so vertices with no incoming edges are first and vertices with only incoming edges are last, 2) assign an infinite distance to every vertex (dist(v)= infinity) and a zero distance to the source, and 3) for each vertex v in sorted order, for each outgoing edge e(v,u), if dist(v) + weight(e) < dist(u), set dist(u)=dist(v) + weight(e) and the predecessor of u to v.

See also Dijkstra's algorithm, Bellman-Ford algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:16:52 2000.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/dagShortPath.html


database

(data structure)

Definition: See dictionary.

Author: PEB

Implementation

(C++, Pascal, and Fortran), Kazlib (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/database.html


data structure

(data structure)

Definition: An organization of information, usually in memory, for better algorithm efficiency, such as queue, stack, linked list, heap, dictionary, and tree, or conceptual unity, such as the name and address of a person. It may include redundant information, such as length of the list or number of nodes in a subtree.

See also external memory data structure, passive data structure, active data structure, persistent data structure, recursive data structure, abstract data type.

Note: Most data structures have associated algorithms to perform operations, such as search, insert, or balance, that maintain the properties of the data structure.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 10 10:04:10 2003.
HTML page formatted Thu Apr 17 10:48:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/datastructur.html


data structure persistance

(definition)

Definition: See persistent data structure.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 6 11:57:46 2003.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/dataStructurePersistance.html


data structure persistence

(definition)

Definition: See persistent data structure.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 6 11:57:46 2003.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/dataStructurePersistence.html


DAWG

(data structure)

Definition: See directed acyclic word graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:49:29 2002.
HTML page formatted Thu Apr 17 10:48:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/dawg.html


decidable

(definition)

Definition: A decision problem that can be solved by an algorithm that halts on all inputs in a finite number of steps. The associated language is called a decidable language.

Also known as totally decidable problem, algorithmically solvable, recursively solvable.

See also undecidable, NP, NP-complete, solvable, tractable, computable.

Note: For emphasis, the equivalent term totally decidable problem is sometimes used.

From Algorithms and Theory of Computation Handbook, pages 24-19 and 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:22:08 2002.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/decidable.html


decidable language

(definition)

Definition: A language for which membership can be decided by an algorithm that halts on all inputs in a finite number of steps --- equivalently, can be recognized by a Turing machine that halts for all inputs.

Also known as recursive language, totally decidable language.

See also undecidable language, decidable, recursively enumerable language.

Note: For emphasis, the equivalent term totally decidable language is sometimes used. From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:21:50 2002.
HTML page formatted Mon May 12 10:30:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/decidableLanguage.html


decimation

(algorithmic technique)

Definition: See prune and search.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:52:34 2002.
HTML page formatted Thu Apr 17 10:48:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/decimation.html


decision problem

(definition)

Definition: A problem with a "yes" or "no" answer. Equivalently, a function whose range is two values, such as {0,1}.

See also optimization problem, certificate, NP, NP-complete.

Note: A decision problem asks, is there a solution with a certain characteristic? An optimization problem asks, what is the best solution? For instance, the traveling salesman problem is an optimization problem, while the corresponding decision problem asks if there is a Hamiltonian cycle with a cost less than some fixed amount k.

From Algorithms and Theory of Computation Handbook, page 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

History, definitions, examples, etc. given in Comp.Theory FAQ, scroll down to P vs. NP.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:09:05 2002.
HTML page formatted Mon May 12 10:30:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/decisionProblem.html


decision tree

Definition: (no definition here, yet, but you can help.)

Note: comparisons done by a sort.

More information

Problem of building a minimum decision tree

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 22 09:06:12 2000.
HTML page formatted Thu Apr 17 10:48:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/decisiontree.html


decomposable searching problem

(definition)

Definition: A searching problem for which one can decompose the searched domain into subsets, find answers from these subsets, and combine these answers to form the solution to the original problem. More formally a problem with a query Q is decomposable given if there exists an efficiently computable associative and commutative binary operator @ satisfying the condition: Q(x, A union B) = @(Q(x,A),Q(x,B)).

Note: From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:29:30 2000.
HTML page formatted Mon May 12 10:30:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/decomposable.html


degree

(definition)

Definition: (1) Of a vertex, the number of edges connected to it. (2) Of a graph, the maximum degree of any vertex.

See also in-degree, out-degree.

Note: From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

tutorial, and another definition.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 4 14:25:11 2001.
HTML page formatted Mon May 12 10:30:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/degree.html


dense graph

(definition)

Definition: An undirected graph in which the number of edges is close to the possible number of edges, that is, n(n-1)/2, where n is the number of vertices.

See also sparse graph, complete graph, adjacency-matrix representation.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 18 16:40:59 2001.
HTML page formatted Thu Apr 17 10:48:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/densegraph.html


depoissonization

(definition)

Definition: To interpret a solution to a poisson model in the original model after poissonization.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:29:20 2000.
HTML page formatted Mon May 12 10:30:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/depoissonztn.html


depth

(definition)

Definition: (1) The distance from a leaf to the root of a tree. (2) The longest chain of sequential dependencies in a computation.

Note: From Algorithms and Theory of Computation Handbook, page 47-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 18 10:52:09 2002.
HTML page formatted Mon May 12 10:30:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/depth.html


depth-first search

(algorithm)

Definition: (1) Any search algorithm which considers outgoing edges of a vertex before any neighbors of the vertex, that is, outgoing edges of the vertex's predecessor in the search. Extremes are searched first. This is easily implemented with recursion. (2) An algorithm which marks all vertices in a directed graph in the order they are discovered and finished, partitioning the graph into a forest.

Also known as DFS.

See also breadth-first search, best-first search.

Note: [CLR90, pages 477-485]

Author: PEB

Implementation

(Lisp), (Prolog)

More information

Laboratory Resources on Search and Game Playing, Lecture notes on Uninformed Search, Lecture notes from Design and Analysis of Algorithms on Breadth-first search and depth-first search. A demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Mar 14 13:39:12 2003.
HTML page formatted Thu Apr 17 10:48:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/depthfirst.html


deque

(data structure)

Definition: A data structure in which items may be added to or deleted from the head or the tail.

Also known as doubly-ended queue.

See also queue.

Note: Short for Double-Ended QUEue. After [CLR90, page 203].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 12:42:12 2002.
HTML page formatted Thu Apr 17 10:48:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/deque.html


derangement

(algorithm)

Definition: A permutation of elements, where no element is in its original position.

See also sort.

Author: PEB

More information

The (Combinatorial) Object Server's information on Derangements

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 08:49:45 2002.
HTML page formatted Thu Apr 17 10:48:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/derangement.html


descendant

(definition)

Definition: A child of a node in a tree, any of the children of the children, etc.

See also ancestor.

Note: of a tree node

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 31 13:22:52 1999.
HTML page formatted Thu Apr 17 10:48:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/descendant.html


deterministic finite automata string search

(algorithm)

Definition: A string matching algorithm which builds a deterministic finite state machine to recognize the search string. The machine is then run at each location in turn. If the machine accepts, that is a match.

Author: PEB

Implementation

description and animation (C), (C) which uses a finite automaton structure (C) and builds a recognizer (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 15:39:56 2001.
HTML page formatted Thu Apr 17 10:48:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/determFinitAutSrch.html


deterministic finite state machine

(definition)

Definition: A finite state machine with exactly one transition for each given symbol and state.

Also known as DFA, deterministic finite automaton.

See also nondeterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:51:31 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/determFinitStateMach.html


deterministic finite tree automaton

(definition)

Definition: A deterministic finite state machine that accepts finitary trees rather than just strings. The tree nodes are marked with the letters of the alphabet of the automaton, and the transition function encodes the next states for each branch of the tree. The acceptance condition is modified accordingly.

Also known as DFTA.

See also nondeterministic finite tree automaton, deterministic tree automaton.

Author: SKS

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:11:07 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/determFinitTreeAutom.html


deterministic algorithm

(algorithmic technique)

Definition: An algorithm whose behavior can be completely predicted from the input.

See also nondeterministic algorithm.

Note: That is, each time a certain set of input is presented, the algorithm gives the same results as any other time the set of input is presented. For algorithms with state, or that maintain information between inputs, "the input" means everything since the algorithm was started from an initial state.

There can be degrees of deterministic behavior. For instance, an algorithm that uses random numbers might not be considered deterministic. However if the "random numbers" come from a pseudo-random number generator, the behavior may be deterministic.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 5 16:08:15 2002.
HTML page formatted Thu Apr 17 10:48:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/determinalgo.html


deterministic

(definition)

Definition: Permitting at most one next move at any step in a computation.

See also nondeterministic.

Note: From Algorithms and Theory of Computation Handbook, pages 24-19 and 15-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:29:13 2000.
HTML page formatted Mon May 12 10:30:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/deterministc.html


deterministic finite automaton

(definition)

Definition: See deterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:51:31 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/deterministicFiniteAutomaton.html


deterministic finite state automaton

(definition)

Definition: See deterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:51:31 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/deterministicFiniteStateAutomaton.html


deterministic pushdown automaton

(definition)

Definition: (no definition here, yet, but you can help.)

Also known as DPDA.

See also pushdown automaton.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:58:34 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/deterministicPushdownAutom.html


deterministic tree automaton

(definition)

Definition: A deterministic finite state machine that accepts infinite trees rather than just strings. The tree nodes are marked with the letters of the alphabet of the automaton, and the transition function encodes the next states for each branch of the tree. The expressive power of such automata varies depending on the acceptance conditions of the trees.

See also deterministic finite tree automaton.

Note: These are used in various studies in branching-time temporal logic, second order logic with multiple successors, etc.

Author: SKS

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:10:57 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/detrmtreeaut.html


Deutsch-Jozsa algorithm

(algorithm)

Definition: A quantum algorithm to determine whether a function is constant or balanced, that is, returns 1 for half the domain and 0 for the other half. For a function taking n input qubits, first, do Hadamards on n 0's, forming all possible inputs, and a single 1, which will be the answer qubit. Next, run the function once; this exclusive or's the result with the answer qubit. Finally, do Hadamards on the n inputs again, and measure the answer qubit. If it is 0, the function is constant, otherwise the function is balanced.

See also quantum computation.

Note: The algorithm needs only one (quantum) evaluation of the function. A classical algorithm to answer the same question is to examine one more than half the domain in the worst case.

See Arthur O. Pittenger, "An Introduction to Quantum Computing Algorithms", page 41, or Michael A. Nielsen and Isaac L. Chuang, "Quantum Computation and Quantum Information", pages 34-36.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:30:26 2002.
HTML page formatted Thu Apr 17 10:48:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/deutschJozsaAlgo.html


DFA

(definition)

Definition: See deterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:51:31 2002.
HTML page formatted Thu Apr 17 10:48:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/dfa.html


DFS

(algorithm)

Definition: See depth-first search.

Author: PEB

Implementation

(Lisp), (Prolog)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Mar 14 13:39:12 2003.
HTML page formatted Thu Apr 17 10:48:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/dfs.html


DFS forest

(definition)

Definition: A rooted forest formed by depth-first search.

Note: From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:29:09 2000.
HTML page formatted Mon May 12 10:30:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/dFSforest.html


DFTA

(definition)

Definition: See deterministic finite tree automaton.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:11:07 2002.
HTML page formatted Thu Apr 17 10:48:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/dfta.html


diagonalization

(definition)

Definition: A proof technique for showing that a given language does not belong to a given complexity class, used in many separation theorems.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:29:04 2000.
HTML page formatted Mon May 12 10:30:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/diagonaliztn.html


diameter

(definition)

Definition: The maximum of the distances between all possible pairs of vertices of a graph.

See also degree.

Note: The distance between two vertices u and v in a weighted graph is the sum of weights of the edges of a shortest path between them. For unweighted graph, it is the number of edges of a shortest path.

From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

tutorial, another definition, and yet another definition.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 4 14:19:42 2001.
HTML page formatted Mon May 12 10:30:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/diameter.html


dichotomic search

(definition)

Definition: Search by selecting between two distinct alternatives (dichotomies) at each step.

See also binary search.

Note: Division into multiple alternatives is polychotomy.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jul 22 09:47:49 1999.
HTML page formatted Thu Apr 17 10:48:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/dichotomic.html


dictionary

(data structure)

Definition: An abstract data type storing items, or keys, associated with values. Basic operations are insert, find, and delete.

Formal Definition: The operations new(), insert(i, v, D), and find(i, D) may be defined as follows.

  1. new() returns a dictionary
  2. find(i, insert(i, v, D)) = v
  3. find(i, insert(j, v, D)) = find(i, D) if i not equal to j
where i and j are items or keys, v is a value, and D is a dictionary. The operation find(i, new()) is not defined.

We can define delete in terms of insert using a special value: undefined. With this special value, we can also define find on an empty dictionary.

  4. delete(i, D) = insert(i, undefined, D)
  5. find(i, new()) = undefined

Alternately, we can use another special value, which we'll call fail this time, to add axioms for delete. This only changes the return type of find.

  4. find(i, delete(i, D)) = fail
  5. find(i, delete(j, D)) = find(i, D) if i not equal to j
  6. find(i, new()) = fail

Also known as association list, property list, directory, database.

See also total order, associative array, Implementations: linked list, hash table, B-tree, directed acyclic word graph.

Note: The terms "association list" and "property list" are used with LISP-like languages and in the area of Artificial Intelligence. These suggest a relatively small number of items, whereas a dictionary or directory may be quite large. Database suggests so many items of so many types that special uniform access methods are needed to express queries reasonably and process them efficiently.

Author: PEB

Implementation

(C++, Pascal, and Fortran), Kazlib (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:48:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/dictionary.html


diet

(data structure)

Definition: See discrete interval encoding tree.

Author: PEB

Implementation

insert, delete, and member (ML), insert, delete, and member (Haskell)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:02:00 2002.
HTML page formatted Thu Apr 17 10:48:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/diet.html


difference

(definition)

Definition: The difference of set A minus set B is a set having all the members which are in A, but not in B.

See also complement, union, intersection, symmetric set difference.

Note: For example, {2, 3, 5} - {7, 5} = {2, 3}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 4 09:50:30 2002.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/difference.html


digital search tree

(data structure)

Definition: A trie which stores the strings in internal nodes, so there is no need for extra leaf nodes to store the strings.

See also digital tree, directed acyclic word graph, compact DAWG, Patricia tree, suffix tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 26 15:43:01 2000.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/digitalSearchTree.html


digital tree

(data structure)

Definition: A tree for storing strings in which nodes are organized by substrings common to two or more strings.

See also trie, digital search tree, directed acyclic word graph, compact DAWG, Patricia tree, suffix tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 26 15:34:40 2000.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/digitaltree.html


digraph

(data structure)

Definition: See directed graph.

Author: PEB

Implementation

build, traverse, top sort, etc. weighted, directed graph (Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:51:05 2003.
HTML page formatted Fri May 23 12:54:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/digraph.html


Dijkstra's algorithm

(algorithm)

Definition: An algorithm to find the shortest paths from a single source vertex to all other vertices in a weighted, directed graph. All weights must be nonnegative. Implementing the priority queue with a Fibonnaci heap makes the time complexity O(E + V log V), where V is the number of vertices and E is the number of edges.

See also Bellman-Ford algorithm, Johnson's algorithm, all pairs shortest path.

Note: This is used in Johnson's algorithm. Since Dijkstra's algorithm chooses the closest vertex, it is a greedy algorithm.

After [CLR90, page 527].

Author: PEB

Implementation

An analysis with code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 13 10:47:23 2002.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/dijkstraalgo.html


diminishing increment sort

(algorithm)

Definition: An in-place sort algorithm which repeatedly reorders different, small subsets of the input until the entire array is ordered. On each pass it sorts i sets of n/i items, where n is the total number of items to sort. Each set is every ith item, e.g. set 1 is item 1, 1+i, 1+2i, etc., set 2 is item 2, 2+i, etc. Typically each set is sorted with an insertion sort. On each succeeding pass, the increment, i, is reduced until it is 1 for the last pass.

Also known as comb sort.

See also Shell sort.

Note: Since items may move large distances at first, this method is quite efficient. Donald E. Knuth extensively analyses this algorithm in [Knuth98, vol. 3, Sect. 5.2.1]. A good set of increments may be 2k+1, . . ., 9, 5, 3, 1 with the first increment no more than N/3.

Since one of the sets can be visualized as those items where the teeth of a comb touch, this is also known as a comb sort. Using this analogy, the teeth get closer on each pass.

Authors: PEB,ASK

Implementation

comb sort parallel (Java).

More information

demonstration.

Invented by Donald Lewis Shell, A High-Speed Sorting Procedure, CACM, 2(7):30-32, July 1959.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:11:52 2002.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/diminishingIncSort.html


dining philosophers

(classic problem)

Definition: Suppose a number of philosophers surround a dining table. Adjacent philosophers share one fork. They spend time thinking or trying to eat. A philosopher must have both the fork on the left and the fork on the right to eat. Clearly adjacent philosophers cannot eat at the same time. The problem is to find an algorithm for taking forks which prevents deadlock, starvation, etc.

Author: PEB

Implementation

code Shared Memory and Semaphores (C and C++), (Java), (Siefast)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 6 03:45:58 2001.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/diningphilos.html


directed acyclic graph

(definition)

Definition: A directed graph where no path starts and ends at the same vertex.

Also known as DAG, acyclic directed graph, oriented acyclic graph.

See also directed graph, acyclic graph, cycle.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:34:39 2002.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/directAcycGraph.html


direct chaining hashing

(data structure)

Definition: An array of lists that is indexed by a hash function. Each list holds all items with the same hash value (collisions).

See also hash table, linear search, separate chaining hashing, collision resolution scheme.

Note: The items in the list may be searched and maintained with any list search algorithms.

Author: PEB

Implementation

insert (C), search (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:33:23 2003.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/directchhash.html


directed acyclic word graph

(data structure)

Definition: (1) A directed acyclic graph representing the suffixes of a given string in which each edge is labeled with a character. The characters along a path from the root to a node are the substring which the node represents. (2) A finite state machine that recognizes a set of words.

Also known as DAWG.

See also compact DAWG, suffix tree, trie, Patricia tree, suffix automaton.

Note: A variant, the compact DAWG, labels the edges with strings, not just single characters. In the compact DAWG, any node with one child is merged with its parent and the edge labels are concatenated. Another variant is the morphic DAWG, where some substrings are encoded with new characters, like a simplified Huffman encoding.

Author: PEB

More information

(1) Andrew W. Appel and Guy J. Jacobson, The World's Fastest Scrabble Program, CACM, 31(5):572-578, May 1988. Good description and comparison with a trie.

M. Crochemore and R. Verin, Direct Construction of Compact Directed Acyclic Word Graphs, 8th Annual Symposium, CPM 97, Aarhus, Denmark, 116-129, 1997.

(2) J. Aoe, K. Morimoto, M. Shishibori and K-H. Park, A Trie Compaction Algorithm for a Large Set of Keys, IEEE Trans. Knowledge and Data Engineering, 8(3):476-491, 1996.

D. Perrin, Finite Automata, in: J. van Leeuwen, ed., Handbook of Theoretical Computer Science, Elsevier, Amsterdam, Vol. A, 3-57, 1990.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:49:29 2002.
HTML page formatted Thu Apr 17 10:48:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/directedAcyclicWordGraph.html


directed graph

(data structure)

Definition: A graph whose edges are ordered pairs of vertices. That is, each edge can be followed from one vertex to the next.

Also known as digraph, oriented graph.

See also directed acyclic graph, undirected graph, weighted, directed graph, hypergraph, multigraph, in-degree, out-degree, arborescence.

Note: In contrast, undirected graphs merely connect the vertices, without any consideration for direction. For example, a map of streets in a neighborhood is an undirected graph, but a map that shows the postman's route through that neighborhood is a directed graph. A directed graph may be thought of as a neighborhood of one-way streets: your map must show the direction one may travel on each street. A regular two-way street may be thought of as two one-way streets.

John N. Warfield <Jnwarfield@aol.com> provides the following history of digraphs.

In the Harvard-Oxford books on Aristotle, one of the translators suggests that Aristotle actually used something akin to digraphs in his teachings, but this was pure speculation.

Augustus De Morgan invented the Theory of Relations and published the key work in 1847---the same year in which Boole published his key book in which he credited De Morgan for essentially teaching Boole about logic.

Since the Theory of Relations offers essentially the algebraic form of the digraph, it is unlikely that there was any formal use before 1847.

Charles Sanders Peirce made clear the use of structural patterns in doing basic work, but his own graphics were not very useful in extended form, though some modern enthusiasts have extolled his "existential graphs".

The earliest actual drawing of a digraph as connected to De Morgan that I have been able to find occurs in the 1919 book by Bertrand Russell titled "Introduction to Mathematical Philosophy".

If you find an earlier digraph, please contact me, John N. Warfield.

The best modern reference is the book by Harary, Norman, and Cartwright (1966?) titled "Structural Modeling---The Theory of Directed Graphs".

Author: PEB

Implementation

build, traverse, top sort, etc. weighted, directed graph (Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:51:05 2003.
HTML page formatted Fri May 23 12:54:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/directgraph.html


directory

(data structure)

Definition: See dictionary.

Author: PEB

Implementation

(C++, Pascal, and Fortran), Kazlib (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/directory.html


discrete interval encoding tree

(data structure)

Definition: A binary search tree which stores consecutive values as intervals.

Also known as diet.

Note: Each node is an interval signifying consecutive values, instead of a single value. This is better than if there are many sets of consecutive values.

Author: PEB

Implementation

insert, delete, and member (ML), insert, delete, and member (Haskell)

More information

Discrete Interval Encoding Trees with links to implementations. Abstract and links to full text of Diets for Fat Sets from Journal of Functional Programming, Vol. 8, No. 6, 1998.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:02:00 2002.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/discretintrv.html


discrete p-center

(classic problem)

Definition: A facility location problem in which the supply points must be a subset of demand points.

Note: Adapted from [AS98, page 428].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:11:42 2001.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/discretpcntr.html


disjoint set

(definition)

Definition: A set whose members do not overlap, are not duplicated, etc.

Note: For example, the set of intervals {[1,5], [4,7], [8,9]} is not disjoint since [1,5] overlaps [4,7].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 30 13:56:49 1999.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/disjointset.html


disjunction

(definition)

Definition: The boolean or function.

See also conjunction, implication.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 31 10:50:29 1999.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/disjunction.html


distributional complexity

(definition)

Definition: The expected running time of the best possible deterministic algorithm over the worst possible probability distribution on the inputs.

See also randomized complexity, worst case, lower bound.

Note: From Algorithms and Theory of Computation Handbook, page 15-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:06:18 2002.
HTML page formatted Mon May 12 10:30:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/distributionalComplex.html


distribution sort

(algorithm)

Definition: Any sort algorithm where data is distributed from its input to multiple intermediate structures which are then gathered and placed on the output.

See also bucket sort, range sort, counting sort, histogram sort, merge sort, UnShuffle sort.

Note: Many distribution sorts are also merge sorts depending on how the distribution is performed.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 8 12:42:10 2001.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/distributionSort.html


divide and conquer

(algorithmic technique)

Definition: An algorithmic technique. To solve a problem on an instance of size n, a solution is found either directly because solving that instance is easy (typically, because the instance is small) or the instance is divided into two or more smaller instances. Each of these smaller instances is recursively solved, and the solutions are combined to produce a solution for the original instance.

Note: The name divide and conquer is because the problem is conquered by dividing it into several smaller problems.

This technique yields elegant, simple and quite often very efficient algorithms. Well-known examples include heapify, merge sort, quicksort, Strassen's fast matrix multiplication, the Fast Fourier Transform (FFT), and binary search. (Why is binary search included? The dividing part just picks which segment in which to search, and "combining the solutions" is trivial: take the answer from the segment in which you searched.) Similar principles are at the heart of several important data structures such as binary search tree, multiway search trees, tries, skip lists, multidimensional search trees (k-d trees, quadtrees), etc.

Here is this term in different languages:

French | diviser pour régner
German | teile und herrsche
Latin | divide et impera
Spanish | divide y vencerás

Author: CM

Implementation

how many odd numbers in an array? (C)

More information

Three divide and conquer sorting algorithms, as a means of using parallelism, and some notes on divide and conquer algorithms.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 14 14:15:15 2002.
HTML page formatted Thu Apr 17 10:48:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/divideconqr.html


divide and marriage before conquest

(algorithmic technique)

Definition: A variant of divide and conquer in which subproblems created in the "divide" step are merged before the "conquer" step.

Note: From Algorithms and Theory of Computation Handbook, page 19-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:27:41 2000.
HTML page formatted Mon May 12 10:30:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/dividemarrig.html


division method

Definition: (no definition here, yet, but you can help.)

Note: hash mod m

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:48:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/divisionmthd.html


domain

(definition)

Definition: (1) The inputs for which a function or relation is defined. For instance, 0 is not in the domain of reciprocal (1/x). (2) The possible values of a variable.

See also range, total function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 10:21:51 1999.
HTML page formatted Thu Apr 17 10:48:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/domain.html


don't care

(definition)

Definition: A special symbol which matches any other symbol of a given alphabet.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:27:37 2000.
HTML page formatted Mon May 12 10:30:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/dontcare.html


Doomsday rule

(algorithm)

Definition: An algorithm to find the day of the week for any date. It is simple enough to memorize and do mentally.

See also Zeller's congruence.

Note: Invented sometime before January 1976 by John Horton Conway, the mathematician who also invented the computer Game of Life.

Author: PEB

More information

Explanation, examples, origin, and links; a summary of the International Standard Date and Time Notation ISO 8601.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 3 12:55:28 2003.
HTML page formatted Thu Apr 17 10:48:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/doomsday.html


doomsday algorithm

(algorithm)

Definition: See Doomsday rule.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 3 12:55:28 2003.
HTML page formatted Thu Apr 17 10:48:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/doomsdayAlgorithm.html


double-direction bubble sort

(algorithm)

Definition: See bidirectional bubble sort.

Authors: PEB,BB

Implementation

animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:51 2003.
HTML page formatted Thu Apr 17 10:48:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/doubledirectionBubbleSort.html


double-ended priority queue

(data structure)

Definition: A priority queue which simultaneously keeps track of the maximum and minimum keys, and supports operations efficiently on either extreme (minimum or maximum).

Note: After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 11 16:24:44 1999.
HTML page formatted Thu Apr 17 10:48:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/doubleendpq.html


double hashing

(algorithm)

Definition: A method of open addressing for a hash table in which a collision is resolved by searching the table for an empty place at intervals given by a different hash function, thus minimizing clustering.

Also known as rehashing.

See also linear probing, hash table.

Note: Since a different hashing function is used to find a location in case of collision, colliding values should be spread out. In linear probing, primary clustering occurs when collisions fill up every space for long stretches. Even in quadratic probing, secondary clustering may develop since colliding values follow the same probe sequence.

Author: PEB

Implementation

insert (C and Pascal), search (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 13:22:22 2002.
HTML page formatted Thu Apr 17 10:48:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/doublehashng.html


double left rotation

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:48:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/doubleLeftRotat.html


double metaphone

(algorithm)

Definition: An algorithm to code English words (and foreign words often heard in the United States) phonetically by reducing them to 12 consonant sounds. This reduces matching problems from wrong spelling.

See also Jaro-Winkler, NYSIIS, soundex, metaphone, edit distance.

Note: This is an improved version of metaphone. It returns two keys if a word has two feasible pronunciations, such as a foreign word.

Author: PEB

Implementation

Metaphone and double metaphone (Basic, C, Perl, and C++), zip'd (C++)

More information

A Better Phonetic Lookup

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:36:35 2002.
HTML page formatted Thu Apr 17 10:48:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/doubleMetaphone.html


double right rotation

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:48:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/doubleRightRotation.html


doubly-ended queue

(data structure)

Definition: See deque.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 12:42:12 2002.
HTML page formatted Thu Apr 17 10:48:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/doublyendedQueue.html


doubly linked list

(data structure)

Definition: A variant of a linked list in which each item has a link to the previous item as well as the next. This allows easily accessing list items backwards as well as forwards and deleting any item in constant time.

Also known as two-way linked list, symmetrically linked list.

Note: See [Stand98, p. 91].

Author: PEB

Implementation

Illustrations, too (C++)

More information

Tutorial, diagrams, and code (C++) of a doubly linked list.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:04:41 2003.
HTML page formatted Thu Apr 17 10:48:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/doublyLinkedList.html


DPDA

(definition)

Definition: See deterministic pushdown automaton.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:58:34 2002.
HTML page formatted Thu Apr 17 10:48:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/dpda.html


Dragon curve

Definition: (no definition here, yet, but you can help.)

Also known as Herter-Heighway Dragon.

See also C curve, Hilbert curve, Sierpinski curve.

Note: After LISP, page 62. Also know as the Herter-Heighway Dragon.

More information

how to generate it

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 17:02:46 2002.
HTML page formatted Thu Apr 17 10:48:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/dragoncurve.html


dual

(definition)

Definition: The dual of a planar graph, G, is a graph with a vertex for each region in G and an edge between vertices for each pair of adjacent regions. The new edge crosses the edge in G which is the boundary between the adjacent regions.

Note: The dual of a planar graph is also planar. The original graph is the dual of the dual. That is, they are duals of each other.

In the accompanying figure, the black circles and solid lines are one planar graph. The white squares and dotted lines are another planar graph. Each is the dual of the other.

Author: PEB

More information

The dual of a Venn diagram, also here. Self-dual maps, that is, planar graphs which are duals of themselves.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:16:30 2000.
HTML page formatted Thu Apr 17 10:48:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/dual.html


dual linear program

(definition)

Definition: Every linear program has a corresponding linear program called the dual. It is maxy {b · y | ATy less than or equal to c and y greater than or equal to 0 }. For any solution x to the original linear program and any solution y to the dual we have c · x greater than or equal to (AT y)T x = yT(Ax) greater than or equal to y · b. For optimal x and y, equality holds. For a problem formulated as an integer linear program, a solution to the dual of a relaxation of the program can serve as witness.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:27:33 2000.
HTML page formatted Mon May 12 10:30:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/duallinear.html


Dutch national flag

(algorithm)

Definition: Rearrange elements in an array into three groups: bottom, middle, and top. During execution, the top group grows down from the top of the array, the bottom group grows up from the bottom, and the middle group is kept just above the bottom. The algorithm stores the locations just below the top group, just above the bottom, and just above the middle in three indexes. At each step, examine the element just above the middle. If it belongs to the top group, swap it with the element just below the top. If it belongs in the bottom, swap it with the element just above the bottom. If it is in the middle, leave it. Update the appropriate index. Complexity is O(n) moves and examinations.

See also partition, American flag sort.

Note: Using this algorithm in quicksort to partition elements, with the pivot being the middle, lets quicksort avoid "resorting" elements which equal the pivot.

The first reference I have to this algorithm is the report of someone hearing it at a lecture at the Institute of Computer Science (ICS), London University, about 1973. The algorithm is named from the problem of ordering red, white, and blue marbles into the order of the Dutch national flag.

Author: PEB

Implementation

explanation and development (C)

More information

A detailed tutorial on the algorithm. The flag of the Netherlands or the Dutch national flag and links and more images.

James R. Bitner, An Asymptotically Optimal Algorithm for the Dutch National Flag Problem, SIAM Journal on Computing, 11(2):243-262, May 1982.

Colin L. McMaster, An Analysis of Algorithms for the Dutch National Flag Problem, CACM, 21(10):842-846, October 1978.

E. W. Dijkstra, A Discipline of Programming, Prentice-Hall, 1976.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 16:25:05 2003.
HTML page formatted Tue May 13 16:25:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/dutchnatlflg.html


dynamic

(definition)

Definition: When the problem domain may change, e.g., there may be insertions and deletions.

See also static, dynamic programming, dynamization transformation.

Note: From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 4 09:13:01 2001.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/dynamic.html


dynamic array

(data structure)

Definition: An array whose size may change over time. Items are not only added or removed, but memory used changes, too.

Note: For instance, REDIM in Visual Basic or malloc() in C. In some languages, such as Perl, all arrays are dynamic.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 31 13:25:16 2000.
HTML page formatted Thu Apr 17 10:48:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/dynamicarray.html


dynamic hashing

(data structure)

Definition: A hash table that grows to handle more items. The associated hash function must change as the table grows. Some schemes may shrink the table to save space when items are deleted.

See also load factor.

Author: PEB

More information

R. J. Enbody and H. C. Du, Dynamic Hashing Schemes, ACM computing Surveys, 20(2):85-113, June 1998. Note: Figure 5b has errors: boxes should be labeled (top to bottom) A, D, B, and C.

P. Larson, Dynamic hashing, BIT 18:184-201, 1978.

Martin Dietzfelbinger, Anna Karlin, Kurt Melhorn, Friedhelm Meyer Auf Der Heide, Hans Rohnert, and Robert E. Tarjan, Dynamic Perfect Hashing: Upper and Lower Bounds, SIAM J. Comput., 23(4):738-761, August 1994.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:32:59 2003.
HTML page formatted Thu Apr 17 10:48:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/dynamicHashing.html


dynamic programming

(algorithmic technique)

Definition: An algorithmic technique in which an optimization problem is solved by caching subproblem solutions (memoization) rather than recomputing them.

See also greedy algorithm, principle of optimality, matrix-chain multiplication problem, Smith-Waterman algorithm.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

Oleg Kiselyov's program to optimally lay out a page (C++) using dynamic programming.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 19 09:33:22 2001.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/dynamicprog.html


dynamization transformation

(algorithmic technique)

Definition: A data structuring technique that can make a static data structure dynamic. In so doing, the performance of the dynamic structure will exhibit certain space-time tradeoffs.

Note: From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:27:20 2000.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/dynamization.html


edge

(definition)

Definition: A connection between two vertices of a graph. In a weighted graph, each edge has an number, called a "weight." In a directed graph, an edge goes from one vertex, the source, to another, the target, and hence makes connection in only one direction.

Also known as arc.

See also directed graph, undirected graph, weighted graph, hyperedge, in-degree, out-degree.

Note: That is, in a directed graph, an edge goes from the source to the target.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:33:40 2002.
HTML page formatted Thu Apr 17 10:48:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/edge.html


edge coloring

(definition)

Definition: An assignment of colors (or any distinct marks) to the edges of a graph. A coloring is a proper coloring if no two adjacent edges have the same color.

See also vertex coloring, k-coloring, chromatic index.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Authors: PEB,CRC-A

Implementation

(C++, Mathematica, and C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:27:16 2000.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/edgecoloring.html


edge connectivity

(definition)

Definition: (1) The smallest number of edges whose deletion will cause a connected graph to not be connected. (2) For a pair of vertices s and t in a graph, the smallest number of edges whose deletion will separate s from t.

See also vertex connectivity.

Author: GS

Implementation

(Mathematica, C, and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 15:26:29 2001.
HTML page formatted Thu Apr 17 10:48:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/edgeConnectivity.html


edge crossing

(definition)

Definition: Two different edges cross in a graph drawing if their geometric representations intersect. The number of crossings in a graph drawing is the number of pairs of edges which cross.

Note: From Algorithms and Theory of Computation Handbook, page 9-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:27:12 2000.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/edgecrossing.html


edit distance

(definition)

Definition: The smallest number of insertions, deletions, and substitutions required to change one string or tree into another.

Also known as Levenshtein distance.

See also edit operation, double metaphone, soundex.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

Levenshtein distance (Java, C++, Visual Basic)

More information

A 33-page paper giving definitions, algorithms, etc. for string distances, Levenshtein distance, etc., called Learning String Edit Distance. definition, comments, and references to similar functions.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:24:49 2002.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/editdistance.html


edit operation

(definition)

Definition: On a string, the operation of deletion, insertion, or substitution performed on a single symbol. On a tree, the deletion of a node v followed by the reassignment of all children of v to the node of which v was formerly a child, the insertion of a new node followed by the reassignment of some arcs departing from the parent of the new node, or the substitution of the label of one of the nodes with another label. Each edit operation may have an associated nonnegative real number representing its cost.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:26:45 2000.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/editoperatin.html


edit script

(definition)

Definition: A sequence of viable edit operations on a string or tree.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:26:31 2000.
HTML page formatted Mon May 12 10:30:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/editscript.html


efficiency

(definition)

Definition: The resources an algorithm used to find an answer. It is usually measured in terms of the theoretical computations, such as comparisons or data moves, the memory used, the number of messages passed, the number of disk accesses, etc.

See also big-O notation, best case, worst case, average case.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:05:48 2002.
HTML page formatted Thu Apr 17 10:48:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/efficiency.html


8 queens

(classic problem)

Definition: Place eight chess queens on an 8 × 8 board such that no queen can attach another. Efficiently find all possible placements.

See also n queens.

Author: PEB

More information

explanation and Java classes

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 30 10:13:59 2002.
HTML page formatted Thu Apr 17 10:48:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/eightqueens.html


element uniqueness

(classic problem)

Definition: The problem of determining if there are duplicates in a set of numbers.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:26:26 2000.
HTML page formatted Mon May 12 10:30:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/elementnqnss.html


EM data structure

(data structure)

Definition: See external memory data structure.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 18 14:21:42 2002.
HTML page formatted Thu Apr 17 10:48:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/EMDataStructure.html


end-of-string

(definition)

Definition: A special character indicating the end of a string.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:07:50 2002.
HTML page formatted Thu Apr 17 10:48:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/endofstring.html


enfilade

(data structure)

Definition: (no definition here, yet, but you can help.)

Note: Pronounced "En-fill-aid". Related concepts are Ent, Granfilade (Grand Enfilade), POOMfilade (Permutation Of Order Matrix Enfilade), Spanfilade (Spanning Enfilade), Switcheroo, Switcheroonie, and tumbler.

Implementation

Green (C)

More information

An introduction or here, too.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 27 14:42:31 2000.
HTML page formatted Thu Apr 17 10:48:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/enfilade.html


ERCW

(definition)

Definition: See exclusive read, concurrent write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:35:42 2002.
HTML page formatted Thu Apr 17 10:48:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/ercw.html


EREW

(definition)

Definition: See exclusive read, exclusive write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:36:09 2002.
HTML page formatted Thu Apr 17 10:48:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/erew.html


Euclid's algorithm

(algorithm)

Definition: An algorithm to compute the greatest common divisor of two positive integers. It is Euclid(a,b){if (b=0) then return a; else return Euclid(b, a mod b);}. The run time complexity is O(( log a)( log b)) bit operations.

Also known as Euclidean algorithm.

See also binary GCD algorithm, extended Euclid's algorithm, Ferguson-Forcade algorithm.

Note: After [CLR90, page 810].

Author: PEB

Implementation

Worst-case behavior annotated for real time (WOOP/ADA), (Scheme).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:54:18 2003.
HTML page formatted Thu Apr 17 10:48:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/euclidalgo.html


Euclidean algorithm

(algorithm)

Definition: See Euclid's algorithm.

Author: PEB

Implementation

Worst-case behavior annotated for real time (WOOP/ADA), (Scheme).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:54:18 2003.
HTML page formatted Thu Apr 17 10:48:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/EuclideanAlgorithm.html


Euclidean distance

(definition)

Definition: The straight line distance between two points. In a plane with p1 at (x1, y1) and p2 at (x2, y2), it is square root ((x1 - x2)2 + (y1 - y2)2).

See also rectilinear, Manhattan distance, Lm distance.

Note: In N dimensions, the Euclidean distance between two points p and q is square root ( summation i=1N (pi-qi)2) where pi (or qi) is the coordinate of p (or q) in dimension i.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 15 10:36:40 1999.
HTML page formatted Mon May 12 10:30:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/euclidndstnc.html


Euclidean traveling salesman problem

(classic problem)

Definition: Find a path of minimum Euclidean distance between points in a plane which includes each point exactly once and returns to its starting point.

See also traveling salesman, spanning tree.

Note: This can be generalized to higher dimensions, for instance, points in a 3-dimensional space. This problem is a special case of traveling salesman since the cost between points is the planar distance instead of arbitrary weights.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 15 10:04:13 1999.
HTML page formatted Thu Apr 17 10:48:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/euclidntrvls.html


Euclidean Steiner tree

(definition)

Definition: A tree of minimum Euclidean distance connecting a set of points, called terminals, in the plane. This tree may include points other than the terminals, which are called Steiner points.

See also Steiner tree, rectilinear Steiner tree.

Author: JLG

Implementation

GeoSteiner (C) - software for computing steiner trees.

More information

Steiner Tree page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 17 09:20:43 2003.
HTML page formatted Thu Apr 17 10:48:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/euclidstntre.html


Euler cycle

(definition)

Definition: A path through a graph which starts and ends at the same vertex and includes every edge exactly once.

Also known as Eulerian path, Königsberg bridges problem.

See also Hamiltonian cycle, Chinese postman problem.

Note: "Euler" is pronounced "oil-er." A Hamiltonian cycle includes each vertex once; an Euler cycle includes each edge once.

Euler defined the cycle to solve the puzzle of finding a path across every bridge of the German city of Königsberg exactly once.

Author: PEB

Implementation

(Mathematica and Fortran)

More information

examples and explanations

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 10 12:42:59 2002.
HTML page formatted Thu Apr 17 10:48:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/eulercycle.html


Eulerian graph

(definition)

Definition: A graph that has an Euler cycle.

Note: From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:26:21 2000.
HTML page formatted Mon May 12 10:30:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/euleriangrph.html


Eulerian path

(definition)

Definition: See Euler cycle.

Author: PEB

Implementation

(Mathematica and Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 10 12:42:59 2002.
HTML page formatted Thu Apr 17 10:48:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/EulerianPath.html


Euler tour

(definition)

Definition: See Euler cycle.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 10 12:42:59 2002.
HTML page formatted Thu Apr 17 10:48:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/EulerTour.html


exact string matching

(classic problem)

Definition: See string matching.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:52:13 2003.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/exactStringMatching.html


EXCELL

(data structure)

Definition: A point access method using a dynamic multidimensional array.

See also grid file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:16 2001.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/excell.html


exchange sort

(algorithm)

Definition: See bubble sort.

Author: PEB

Implementation

animation and code (Java); sinking sort explanation and animation (Java); demonstration and source code (Java) - but code might not render properly; explanation (C); (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:19:11 2003.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/exchangeSort.html


exclusive or

(definition)

Definition: See xor.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:26:33 2001.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/exclusiveOr.html


exclusive read, concurrent write

(definition)

Definition: A parallel memory model in which only one processor can read from any one memory location at one time, but multiple processors can write simultaneously to a single memory location.

Also known as ERCW.

See also concurrent read, concurrent write, concurrent read, exclusive write, exclusive read, exclusive write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:35:42 2002.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/exclusiveReadConWrt.html


exclusive read, exclusive write

(definition)

Definition: A parallel memory model in which only one processor can read from any one memory location at one time, and only one processor can write to any one memory location at one time.

Also known as EREW.

See also concurrent read, concurrent write, concurrent read, exclusive write, exclusive read, concurrent write.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:36:09 2002.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/exclusiveReadExcluWrt.html


exhaustive search

(algorithmic technique)

Definition: An algorithm that finds a solution by trying every possibility.

See also brute force, search.

Author: BB

More information

All the Needles in a Haystack: Can Exhaustive Search Overcome Combinatorial Chaos?

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 13 16:57:28 2002.
HTML page formatted Thu Apr 17 10:48:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/exhaustvsrch.html


existential state

(definition)

Definition: A state in a nondeterministic Turing machine from which the machine accepts if any move leads to acceptance.

See also universal state.

Note: From Algorithms and Theory of Computation Handbook, page 24-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:26:14 2000.
HTML page formatted Mon May 12 10:30:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/existentlstt.html


expandable hashing

Definition: (no definition here, yet, but you can help.)

Note: Source: Knott, G. D., "Expandable open addressing hash table storage and retrieval." Proc. ACM SIGFIDET Workshop on Data Description, Access, and Control, 1971, pp. 186-206.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Nov 14 09:38:31 2000.
HTML page formatted Thu Apr 17 10:48:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/expandableHashing.html


expander graph

(definition)

Definition: (no definition here, yet, but you can help.)

Note: Adapted from [AS98, page 420].

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:11:37 2001.
HTML page formatted Thu Apr 17 10:48:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/expandergrph.html


exponential

(definition)

Definition: (1) Any function which is the sum of constants times other constants to the power of the argument: f(x)= upper-case Sigma i=0k cibixpi. (2) In complexity theory, the measure of computation, m(n) (usually execution time or memory space), is bounded by an exponential function of the problem size, n. More formally if there exists k > 1 such that m(n) = upper-case Theta (kn) and there exists c such that m(n) = O(cn).

See also logarithmic, linear, polynomial, moderately exponential.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 17 11:10:29 2001.
HTML page formatted Thu Apr 17 10:48:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/exponential.html


extended binary tree

(data structure)

Definition: A binary tree with special nodes replacing every null subtree. Every regular node has two children, and every special node has no children.

Note: After [Knuth98, 1:399, Sect. 2.3.4.5].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 11:34:40 2002.
HTML page formatted Thu Apr 17 10:48:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/extendedBinaryTree.html


extended Euclid's algorithm

(algorithm)

Definition: An algorithm to find the greatest common divisor, g, of two positive integers, a and b, and coefficients, h and j, such that g = ha + jb.

See also Euclid's algorithm.

Note: These coefficients are useful for computing modular multiplicative inverses. After [CLR90, page 811].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:08:36 2001.
HTML page formatted Thu Apr 17 10:48:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/extendEuclid.html


extendible hashing

(data structure)

Definition: A hash table in which the hash function is the last few bits of the key and the table refers to buckets. Table entries with the same final bits may use the same bucket. If a bucket overflows, it splits, and if only one entry referred to it, the table doubles in size. If a bucket is emptied by deletion, entries using it are changed to refer to an adjoining bucket, and the table may be halved.

See also dynamic hashing, expandable hashing, virtual hashing.

Note: The table may be seen as a complete binary tree where the buckets are (possibly) shared leaf nodes.

Author: PEB

Implementation

A description including a hash function (COBOL).

More information

Description illustrating splitting and combining of buckets (note: the index bits are shown in the reverse order of the keys bits. That is, the key is shown most significant bits first, and indexes are shown least significant first.)

Ronald Fagin, Jürg Nievergelt, Nicholas Pippenger, and H. Raymond Strong, Extendible Hashing - A Fast Access Method for Dynamic Files, ACM Transactions on Database Systems, 4(3):315-344, 1979.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:32:22 2003.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/extendibleHashing.html


extended k-d tree

(data structure)

Definition: A spatial access method where successive levels are split along different dimensions into nonoverlapping cells. Objects are indexed in all cells they intersect.

See also skd-tree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:11 2001.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/extendkdtree.html


external index

(data structure)

Definition: An auxiliary data structure added to a main data structure to improve operations, such as a search on a secondary key.

See also inverted index, hash table, search tree.

Note: The implementation probably embeds parts of the external index in the primary data structure, such as adding a few fields to each node. If items are added to or deleted from the primary data structure, the external index must be maintained, too. Data may have multiple external indexes, such as a data base of movies with inverted indexes for title, actors, and genre.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Dec 27 15:34:47 1999.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalindx.html


external memory algorithm

(algorithm)

Definition: An algorithm that is efficient when accessing most of the data is very slow, such as, on disk.

See also external sort, external memory data structure.

Note: See [Vitt01]. The external memory could be magnetic tape or even main memory if the cache is very fast.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 27 11:03:46 2003.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalMemoryAlgo.html


external memory data structure

(data structure)

Definition: A data structure that is efficient even when accessing most of the data is very slow, such as, on a disk.

See also B-tree, external memory algorithm.

Note: See [Vitt01]. The external memory could be magnetic tape or even main memory if the cache is very fast.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 18 14:21:42 2002.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalMemoryDataStr.html


external merge

(algorithm)

Definition: To combine multiple sorted data streams into a single sorted stream using external storage.

See also merge, external sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 29 16:59:48 1999.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalmerg.html


external merge sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 22 09:44:34 1999.
HTML page formatted Thu Apr 17 10:48:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalMergeSort.html


external node

(definition)

Definition: See leaf.

Authors: PEB,CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 09:54:49 2002.
HTML page formatted Mon May 12 10:30:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalNode.html


external radix sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 22 09:47:56 1999.
HTML page formatted Thu Apr 17 10:48:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalRadixSort.html


external sort

(definition)

Definition: Any sort algorithm that uses external memory, such as tape or disk, during the sort. Since most common sort algorithms assume high-speed random access to all intermediate memory, they are unsuitable if the values to be sorted don't fit in main memory.

See also internal sort, balanced multiway merge, cascade merge sort, external merge sort, optimal polyphase merge sort, oscillating merge sort, polyphase merge sort, external radix sort, external merge, external memory algorithm.

Note: Algorithms may read the initial values from magnetic tape or write sorted values to disk, but this is not using external memory during the sort. Note that even though virtual memory may mask the use of disk, sorting sets of data much larger than main memory may be much faster using an explicit external sort.

See [Knuth98, vol. 3, Sect. 5.4] for an extensive treatment.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 27 11:00:58 2003.
HTML page formatted Thu Apr 17 10:48:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/externalsort.html


external quicksort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:08:44 2001.
HTML page formatted Thu Apr 17 10:48:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/externquiksr.html


extrapolation search

(algorithm)

Definition: See interpolation search.

Author: PEB

Implementation

Worst-case behavior annotated for real time (WOOP/ADA), including bibliography, (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 14:26:30 2003.
HTML page formatted Thu Apr 17 10:48:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/extrapolationSearch.html


extremal

(definition)

Definition: Some of the entries of the auxiliary array used in a string matching algorithm. An entry is d-extremal if it is the deepest entry on its diagonal to be given value d.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 09:57:46 2000.
HTML page formatted Mon May 12 10:30:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/extremal.html


extreme point

(definition)

Definition: A corner point of a polyhedron. More formally, a point which cannot be expressed as a convex combination of other points in the polyhedron.

Note: From Algorithms and Theory of Computation Handbook, pages 19-26 and 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:26:05 2000.
HTML page formatted Mon May 12 10:30:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/extremepoint.html


facility location

(classic problem)

Definition: Given a set of demand points, a distance function, and a parameter p, find a set of p supply objects (points, lines, segments, etc.) which minimizes some distance objective function. The function may be the maximum distance between any demand point and the nearest supply, so no demand point is too far from a supply, or the sum of distances to the nearest supply.

See also capacitated facility location.

Note: Adapted from [AS98, page 428].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:11:29 2001.
HTML page formatted Thu Apr 17 10:48:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/facilityloc.html


factor

(definition)

Definition: See substring.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:45:00 2002.
HTML page formatted Mon May 12 10:30:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/factor.html


factorial

(definition)

Definition: The factorial of an integer n, written n!, is n × n-1 × ... × 2 × 1. In particular, 0! = 1.

See also gamma function, Stirling's approximation.

Note: For instance 5! = 120. Factorial is often used as a (poor) example of recursion, since n! = n × (n-1)! for n > 1, however a simple loop is usually faster and just as clear.

Why is 0! = 1? Using the gamma function definition, 0! = upper-case Gamma (0+1) = integral of 0 infinity e-xx1-1dx = integral of 0 infinity e-xdx = 1.

Author: PEB

Implementation

(Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:56:27 2003.
HTML page formatted Thu Apr 17 10:48:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/factorial.html


fast fourier transform

(algorithm)

Definition: An algorithm to convert a set of uniformly spaced points from the time domain to the frequency domain.

Also known as FFT.

Note: Used to convert a complicated wave into its component sine waves.

Author: PS

Implementation

Worst-case behavior annotated for real time (WOOP/ADA).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 19 09:39:19 2002.
HTML page formatted Thu Apr 17 10:48:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/fastFourierTransform.html


fathoming

(algorithmic technique)

Definition: Pruning a search tree.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:25:55 2000.
HTML page formatted Mon May 12 10:30:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/fathoming.html


feasible region

(definition)

Definition: The set of all possible solutions of an optimization problem.

See also feasible solution, objective function.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:25:51 2000.
HTML page formatted Mon May 12 10:30:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/feasibleregn.html


feasible solution

(definition)

Definition: Any element of the feasible region of an optimization problem.

See also fractional solution.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:25:48 2000.
HTML page formatted Mon May 12 10:30:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/feasiblesltn.html


feedback edge

(definition)

Definition: (no definition here, yet, but you can help.)

See also vertex set.

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 17 15:10:24 1999.
HTML page formatted Thu Apr 17 10:49:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/feedbackedge.html


Ferguson-Forcade algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Euclid's algorithm, extended Euclid's algorithm.

Note:

Introduction. Given a pair (x, y) of positive real numbers, then one iteration of the Euclidean algorithm replaces the larger number by its least non-negative residue modulo the smaller number. If the two numbers are linearly dependent, the repetition of this process will eventually terminate with a pair in which one of the elements is zero. (If the original pair were integers, then the remaining non-zero element is their greatest common divisor.)

Another property of the Euclidean algorithm, fundamental to the study of continued fractions, is that it produces increasingly good rational approximations to the original pair of real numbers.

We will construct an iterative algorithm for n-tuples, generalizing both the terminating and approximating features of the Euclidean algorithm. Thus, if the original n-tuple of elements are Z-linearly dependent, the algorithm will necessarily terminate and discover the Z-relation among the elements of the original n-tuple. If the original n-tuple elements are not Z-linearly dependent, then the algorithm will "absolutely approximate" by producing lattice points arbitrarily close to the line generated by the original n-tuple.

We emphasize that a major difficulty in the problem of constructing a generalization of the Euclidean algorithm is to give an iterative algorithm.

More information

Helaman R. P. Ferguson and Rodney W. Forcade, Multidimensional Euclidean algorithms, Journal Fur Dir Reine Und Angewandte Mathematik 334:171-181, 1982. Walter de Gruyter & Co.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jul 26 12:24:27 2001.
HTML page formatted Thu Apr 17 10:49:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/fergusonForcade.html


FFT

(algorithm)

Definition: See fast fourier transform.

Author: PS

Implementation

Worst-case behavior annotated for real time (WOOP/ADA).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 19 09:39:19 2002.
HTML page formatted Thu Apr 17 10:49:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/fft.html


Fibonnaci heap

(data structure)

Definition: A heap made of a forest of trees. The amortized cost of the operations create, insert a value, decrease a value, find minimum, and merge or join (meld) two heaps, is a constant upper-case Theta (1). The delete operation takes O( log n).

See also priority queue, Dijkstra's algorithm.

Note: After [CLR90, page 421].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 13 10:53:15 2002.
HTML page formatted Thu Apr 17 10:49:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/fibonacciHeap.html


Fibonacci number

(definition)

Definition: A member of the sequence of numbers such that each number is the sum of the preceding two. The first seven numbers are 1, 1, 2, 3, 5, 8, and 13. F(n) approximately equal to round( upper-case Phi n/ square root of 5), where upper-case Phi =(1+ square root of 5)/2.

Formal Definition: The nth Fibonacci number is

  • F(n) = F(n-1) + F(n-2), where F(1)=1 and F(2)=1, or
  • F(n) = ( upper-case Phi n - phi n)/ square root of 5, where upper-case Phi =(1+ square root of 5)/2 and phi =(1- square root of 5)/2.

    See also kth order Fibonacci numbers, memoization, Fibonacci tree.

    Note: Fibonacci, or more correctly Leonardo of Pisa, discovered the series in 1202 when he was studying how fast rabbits could breed in ideal circumstances.

    Computing Fibonacci numbers with the recursive formula is an example in the notes for memoization.

    Author: PR

    Implementation

    Worst-case behavior to generate nth number, annotated for real time (WOOP/ADA), (Scheme).

    More information

    A wonderful site on Fibonacci Numbers and the Golden Section.

    Go to the Dictionary of Algorithms and Data Structures home page.

    If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

    Entry modified Tue Jan 7 10:55:14 2003.
    HTML page formatted Thu Apr 17 10:49:00 2003.

    This page's URL is http://www.nist.gov/dads/HTML/fibonacciNumber.html


Fibonacci numbers

(definition)

Definition: See Fibonacci number.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:55:14 2003.
HTML page formatted Thu Apr 17 10:49:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/FibonacciNumbers.html


Fibonacci search

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Worst-case behavior annotated for real time (WOOP/ADA), including bibliography.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 8 10:41:05 2001.
HTML page formatted Thu Apr 17 10:49:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/fibonacciSearch.html


Fibonacci tree

(data structure)

Definition: A variant of a binary tree where a tree of order n (n>1) has a left subtree of order n-1 and a right subtree of order n-2. An order 0 Fibonacci tree has no nodes, and an order 1 tree has 1 node.

See also Fibonacci number, AVL tree.

Note: A Fibonacci tree of order n has F(n+2)-1 nodes, where F(n) is the nth Fibonacci number. A Fibonacci tree is the most unbalanced AVL tree allowed.

Author: PEB

More information

pictures of Fibonacci trees of various orders

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 16:40:30 2001.
HTML page formatted Thu Apr 17 10:49:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/fibonacciTree.html


FIFO

(data structure)

Definition: See queue.

Author: PEB

Implementation

(Java). Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:01:26 2003.
HTML page formatted Thu Apr 17 10:49:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/fifo.html


Find

(algorithm)

Definition: An algorithm to select the kth smallest element of an array and partition the array around it. First, partition around the value of the kth element. If the split is not at element k, move the upper or lower boundary and partition again.

See also select and partition, MODIFIND, Select.

Note: This does more swaps than MODIFIND.

Author: PEB

Implementation

analysis and comparison (Rexx)

More information

C. A. R. Hoare, Algorithm 65, FIND, CACM, 4(7):321, July 1961.

C. A. R. Hoare, Proof of a Program: FIND, CACM, 14(7):39-45, January 1971.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:22:56 2002.
HTML page formatted Thu Apr 17 10:49:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/find.html


find kth least element

(classic problem)

Definition: See select kth element.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:37:05 2003.
HTML page formatted Thu Apr 17 10:49:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/findKthLeastElement.html


finitary tree

(data structure)

Definition: A tree with a finite number of children at every node.

Note: As opposed to infinitary trees which may have an infinite number of children at some nodes.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 13:29:34 1999.
HTML page formatted Thu Apr 17 10:49:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/finitarytree.html


finite automaton

(definition)

Definition: See finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 12 17:22:31 2002.
HTML page formatted Mon May 12 10:30:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/finiteAutomaton.html


finite Fourier transform

(algorithm)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 17 13:05:00 2000.
HTML page formatted Thu Apr 17 10:49:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/finiteFourierTransform.html


finite state automaton

(definition)

Definition: See finite state machine.

Author: PEB

Implementation

Oleg Kiselyov's program to minimize a finite state machine (Prolog)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 12 17:22:31 2002.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/finiteStateAutomaton.html


finite state machine

(definition)

Definition: A model of computation consisting of a set of states, a start state, an input alphabet, and a transition function that maps input symbols and current states to a next state. Computation begins in the start state with an input string. It changes to new states depending on the transition function. There are many variants, for instance, machines having actions (outputs) associated with transitions (Mealy machine) or states (Moore machine), multiple start states, transitions conditioned on no input symbol (a null) or more than one transition for a given symbol and state (nondeterministic finite state machine), one or more states designated as accepting states (recognizer), etc.

Also known as finite state automaton.

See also deterministic finite state machine, Turing machine, Kripke structure, transducer, Markov chain, hidden Markov model.

Note: Equivalent to a restricted Turing machine where the head is read-only and shifts only from left to right. After Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: PEB

Implementation

Oleg Kiselyov's program to minimize a finite state machine (Prolog)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 12 17:22:31 2002.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/finiteStateMachine.html


finite state transducer

(definition)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 14:31:04 1999.
HTML page formatted Thu Apr 17 10:49:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/finiteStateTransducer.html


finite state machine minimization

(classic problem)

Definition: (no definition here, yet, but you can help.)

Implementation

(C++ and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 14:31:10 1999.
HTML page formatted Thu Apr 17 10:49:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/finitestmmin.html


first-come, first-served

(definition)

Definition: See first-in, first-out.

See also last-in, first-out.

Note: Written more fully this is, "the FIRST item to COME here is the FIRST one SERVED."

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 12 08:54:59 1999.
HTML page formatted Thu Apr 17 10:49:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/firstcome.html


first-in, first-out

(definition)

Definition: A policy that items are processed in order of arrival. A queue implements this.

See also last-in, first-out.

Note: Same as first-come, first-served. A breadth-first search checks newly encountered nodes first-in, first-out. Often written as FIFO.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 16 13:27:54 1999.
HTML page formatted Thu Apr 17 10:49:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/firstinfrstt.html


fixed-grid method

(definition)

Definition: Space decomposition into rectangular cells by overlaying a grid on it.If the cells are congruent (i.e.,of the same width, height, etc.), then the grid is said to be uniform.

See also bucketing method, regular decomposition.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:25:01 2000.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/fixedgrdmthd.html


flash sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Note: It is "a randomized parallel sorting algorithm, similar in a lot of ways to quicksort with lots of pivots used simultaneously. -- Steve Tate, srt@cs.unt.edu, comp.theory, 25 Feb 2000.

More information

J. H. Reif and L. G. Valiant, A logarithmic time sort for linear size networks, Proc. 15th Annual STOC, pp. 10-16, 1983.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 13 12:35:16 2002.
HTML page formatted Thu Apr 17 10:49:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/flashsort.html


flow

(definition)

Definition: A measure of the maximum weight along paths in a weighted, directed graph.

See also flow network, maximum-flow problem.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 17 11:53:01 2000.
HTML page formatted Thu Apr 17 10:49:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/flow.html


flow conservation

(definition)

Definition: The property that no vertex, except the source and sink, of a flow network creates or stores flow. More formally, the incoming flow is the same as the outgoing flow, or, the net flow is 0.

Note: From Algorithms and Theory of Computation Handbook, page 7-10, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:24:53 2000.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/flowconsrvtn.html


flow function

(definition)

Definition: An assignment of flow values to the edges of a flow network that satisfies flow conservation, skew symmetry, and capacity constraints.

Also known as network flow.

See also saturated edge.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:16:15 2002.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/flowfunction.html


flow network

(definition)

Definition: A weighted, directed graph with two specially marked nodes, the source s and the sink t, and a capacity function that maps edges to positive real numbers, u: E |-> R+.

See also st-digraph, maximum-flow problem, flow function, blocking flow.

Note: A graph with multiple sources or sinks may be converted into a flow network by adding a supersource, which has infinite capacity to all sources, or a supersink, which has infinite capacity from all sinks.

From Algorithms and Theory of Computation Handbook, page 7-10, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:18:32 2002.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/flownetwork.html


Floyd-Warshall algorithm

(algorithm)

Definition: An algorithm to solve the all pairs shortest path problem in a weighted, directed graph by multiplying an adjacency-matrix representation of the graph multiple times. The edges may have negative weights, but no negative weight cycles. The time complexity is upper-case Theta (V3).

See also Johnson's algorithm.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 12 11:22:17 2001.
HTML page formatted Thu Apr 17 10:49:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/floydWarshall.html


Ford-Bellman

(algorithm)

Definition: See Bellman-Ford algorithm.

Author: PEB

Implementation

explanation and example (C-like pseudocode)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 9 10:11:57 2003.
HTML page formatted Fri May 9 10:15:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/FordBellman.html


Ford-Fulkerson method

(algorithm)

Definition: Given a flow function and its corresponding residual graph (a maximum-flow problem), select a path from the source to the sink along which the flow can be increased and increase the flow. Repeat until there are no such paths.

Note: This algorithm was proposed in 1956. After Wilf.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 26 12:08:22 2001.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/fordFulkerson.html


forest

(definition)

Definition: A collection of one or more trees.

Formal Definition: An undirected, acyclic graph.

See also connected graph.

Note: Different vertices of a forest need not be connected.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 10:56:27 2002.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/forest.html


forest editing problem

(definition)

Definition: The problem of finding an edit script of minimum cost which transforms a given forest into another given forest.

See also edit operation, tree editing problem.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 13:24:40 2000.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/forestedit.html


formal language

(definition)

Definition: See language.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:40:55 2002.
HTML page formatted Mon May 12 10:30:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/formalLanguage.html


formal methods

(definition)

Definition: A group of analytical approaches having mathematically precise foundation which can serve as a framework or adjunct for human engineering and design skills and experience.

See also formal verification, model checking.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 17:21:05 1999.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/formalmethod.html


formal verification

(definition)

Definition: Establishing properties of hardware or software designs using logic, rather than (just) testing or informal arguments. This involves formal specification of the requirement, formal modeling of the implementation, and precise rules of inference to prove, say, that the implementation satisfies the specification.

See also model checking, temporal logic, formal methods.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 17:12:12 1999.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/formalverf.html


forward index

(data structure)

Definition: An index into a set of texts. This is usually created as the first step to making an inverted index.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 23 10:38:42 2001.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/forwardIndex.html


fractal

Definition: (no definition here, yet, but you can help.)

See also Sierpinski triangle, Peano curve, C curve, Hilbert curve, Sierpinski curve, Dragon curve.

More information

pictures of fractal curves

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:21:08 2003.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/fractal.html


fractional solution

(definition)

Definition: Typically, a solution to a relaxation of an optimization problem.

See also feasible solution.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:57:00 2000.
HTML page formatted Mon May 12 10:30:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/fractional.html


fractional knapsack problem

(classic problem)

Definition: Given materials of different values per unit volume and maximum amounts, find the most valuable mix of materials which fit in a knapsack of fixed volume. Since we may take pieces (fractions) of materials, a greedy algorithm finds the optimum. Take as much as possible of the material that is most valuable per unit volume. If there is still room, take as much as possible of the next most valuable material. Continue until the knapsack is full.

Also known as continuous knapsack problem.

See also knapsack problem, unbounded knapsack problem.

Note: The problem may equivalently be expressed in terms of weight instead of volume. This is also known as the continuous knapsack problem since amounts have continuous, rather than discrete, values.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 24 09:06:52 2002.
HTML page formatted Thu Apr 17 10:49:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/fractionalKnapsack.html


free edge

(definition)

Definition: An edge which is not in a matching.

See also matched edge, free vertex.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 23 12:10:19 1999.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/freeedge.html


free list

Definition: (no definition here, yet, but you can help.)

Note: garbage collection

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/freelist.html


free tree

(definition)

Definition: A connected, acyclic, undirected graph.

See also tree, rooted tree.

Note: This differs from the usual notion of a tree in that it does not have a root. This differs from a forest in that it is connected.

After [CLR90, page 91].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 1 09:58:53 2001.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/freetree.html


free vertex

(definition)

Definition: A vertex not on a matched edge in a matching, or, one which has not been matched.

See also matched vertex, free edge.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 23 12:15:58 1999.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/freevertex.html


frequency count heuristic

(algorithm)

Definition: A heuristic that keeps the elements of a list ordered by number of times each element is the target of a search.

See also self-organizing heuristic, self-organizing list.

Implementation

Discussion and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:38:11 2003.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/frequencyCountHueristic.html


full array

(definition)

Definition: A term from combinatorial chemistry referring to trying all possible combinations of blocks. This is not a data structure, and is here to reduce confusion.

Author: PEB

More information

Dimitris K. Agrafiotis, Multiobjective Optimization of Combinatorial Libraries, IBM Journal of Research and Development, Yorktown Heights, New York, USA, 45(3/4):545-566, May/July 2001. Referenced on page 548.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Sep 14 10:55:58 2001.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullArray.html


full binary tree

(definition)

Definition: A binary tree in which each node has exactly zero or two children.

Also known as proper binary tree.

See also complete binary tree, perfect binary tree.

Note: In other words, every node is either a leaf or has two children. For efficiency, any Huffman encoding is a full binary tree. A BDD is a full binary tree.

After Mustafa Ege (ege@eti.cc.hun.edu.tr) Hacettepe University, comp.theory, 17 November 1998. Also Carrano & Prichard page 427, [CLR90, page 95], and [Stand98, page 248].

This kind of tree is called "proper" by Goodrich & Tamassia.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:25:58 2002.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullBinaryTree.html


full inverted index

(data structure)

Definition: An inverted index which includes the exact location within texts, in addition to the text in which the word appears.

See also inverted file index, block addressing index.

Note: See the example at inverted index.

Author: PEB

More information

Nivio Ziviani, Edleno Silva de Moura, Gonzalo Navarro, Ricardo Baeza-Yates, Compression: A Key for Next-Generation Text Retrieval Systems, IEEE Computer, 33(11):37-44, November 2000, (page 42).

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:39:26 2002.
HTML page formatted Thu Apr 17 10:49:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullInvertedIndex.html


fully dynamic graph problem

(definition)

Definition: Problem where the update operations include unrestricted insertions and deletions of edges.

See also partially dynamic graph problem.

Note: From Algorithms and Theory of Computation Handbook, page 8-22, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:56:50 2000.
HTML page formatted Mon May 12 10:30:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullydynamic.html


fully inverted index

(data structure)

Definition: See full inverted index.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:39:26 2002.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullyInvertedIndex.html


fully persistent data structure

(definition)

Definition: A persistent data structure that allows updates to all versions, previous and latest.

See also partially persistent data structure, confluently persistent data structure.

Note: From Algorithms and Theory of Computation Handbook, page 5-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 6 11:52:53 2003.
HTML page formatted Mon May 12 10:30:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullyPersistData.html


fully polynomial approximation scheme

(algorithmic technique)

Definition: A set of algorithms {A epsilon | epsilon > 0}, where each Ae is an approximation algorithm and the running time bounded by a polynomial in the length of the input and 1/ epsilon.

See also polynomial approximation scheme.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:41:20 2002.
HTML page formatted Mon May 12 10:30:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/fullypolynml.html


function

(definition)

Definition: (1) A computation which takes some arguments or inputs and yields an output. Any particular input yields the same output every time. More formally, a mapping from each element in the domain to an element in the range. (2) A subroutine which returns a value.

See also relation, total function, boolean function, constant function, signature, unary function, binary function, trinary function, n-ary function, procedure, predicate.

Note: (1) A relation may map an input to more than one output. Every function is a relation. The inverse of a function, a mapping from the function's outputs to its inputs, may be a relation rather than another function.

Consider square root (x). The domain and the range are the nonnegative real numbers, R0+. For instance 4 is mapped to 2. The inverse is the function x2, which maps 2 to 4. Cosine is also a function, since every angle has a specific cosine, but its inverse cos-1(x) is a relation, since a cosine value maps to many (for cosine, infinitely many) angles.

A function which takes no arguments is a constant function, or simply, a constant. Since a function must return the same value for each input and the input cannot change (since it has no arguments), it must always return the same value. For instance, if the function one() always returns 1, we can use it instead of the constant 1. This is theoretical convenient because we can write everything as functions, rather than functions and constants.

(2) A subroutine which does not return a value is called a "procedure" in some programming languages.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:14:40 2002.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/function.html


functional data structure

(data structure)

Definition: See active data structure.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 18 14:16:24 2002.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/functionalDataStructure.html


Galil-Giancarlo

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:08:16 2003.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/galilgiancar.html


Galil-Seiferas

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:05:41 2003.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/galilseifers.html


gamma function

(definition)

Definition: The gamma function of n, written upper-case Gamma (n), is integral of 0 infinity e-xxn-1dx. Recursively upper-case Gamma (n+1) = n upper-case Gamma (n). For non-negative integers upper-case Gamma (n+1) = n!.

See also Stirling's formula.

Note: The gamma function is defined for all numbers whereas factorial is (strictly) only defined for non-negative integers.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 9 09:16:03 1999.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/gammafunctn.html


GBD-tree

(data structure)

Definition: A generalized BD-tree, hence the name, which stores spatially extended objects as a hierarchy of minimum bounding boxes. It is a balanced multiway tree which serves as a spatial access method.

Note: After [GG98, page 211].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:40:31 2001.
HTML page formatted Thu Apr 17 10:49:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/gbdtree.html


GCD

(algorithm)

Definition: See greatest common divisor.

Author: PEB

Implementation

(Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:54:34 2003.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/gcd.html


geometric optimization problem

(definition)

Definition: An optimization problem induced by a collection of geometric objects.

See also prune and search.

Note: Since the variables and constraints come from physical situations, faster algorithms can often be developed. Adapted from [AS98, page 413].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:11:10 2001.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/geometricopt.html


globally optimal

(definition)

Definition: See global optimum.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:19:31 2002.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/globallyOptimal.html


global optimum

(definition)

Definition: The best possible solution to a problem.

See also local optimum, optimization problem, prisoner's dilemma.

Note: Some search methods may get trapped in a local optimum and miss the global optimum.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:19:31 2002.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/globalOptimum.html


graph

(data structure)

Definition: A set of items connected by edges. Each item is called a vertex or node. Formally, a graph is a set of vertices and a relation between vertices, adjacency.

See also directed graph, undirected graph, acyclic graph, biconnected graph, connected graph, complete graph, sparse graph, dense graph, hypergraph, multigraph, labeled graph, weighted graph, self-loop, isomorphic, homeomorphic, graph drawing, diameter, degree, dual, adjacency-list representation, adjacency-matrix representation.

Note: Graphs are so general that many other data structures, such as trees, are just special kinds of graphs. Graphs are usually represented G = (V,E), where V is the set of vertices, and E is the set of edges. If the graph is undirected, the adjacency relation is symmetric. If the graph does not allow self-loops, adjacency is irreflexive.

A graph is like a road map. Cities are vertices. Roads from city to city are edges. (How about junctions or branches in a road? You could consider junctions to be vertices, too. If you don't want to count them as vertices, a road may connect more than two cities. So strictly speaking you have hyperedges in a hypergraph. If you want to allow more than one road between each pair of cities, you have a multigraph, instead. It all depends on how you want to define it.)

Another way to think of a graph is as a bunch of dots connected by lines. Because mathematicians stopped talking to regular people long ago, the dots in a graph are called vertices, and the lines that connect the dots are called edges. The important things are edges and the vertices: the dots and the connections between them. The actual position of a given dot or the length or straightness of a given line isn't at issue. Thus the dots can be anywhere, and the lines that join them are infinitely stretchy. Moreover, a mathematical graph is not a comparison chart, nor a diagram with an x- and y-axis, nor a squiggly line on a stock report. A graph is simply dots and lines between them---pardon me, vertices and edges.
Michael Bolton <mb@michaelbolton.net> 22 February 2000

Authors: PEB,PJT

Implementation

GraphEd -- Graph Editor and Layout Program (C), graph manipulation (C++, C, Mathematica, and Pascal), build, traverse, top sort, etc. weighted, directed graphs (Java), graph generating (C, Mathematica, Pascal, C++, and Fortran)

More information

Journal of Combinatorics dynamic surveys DS8 and DS9 are a bibliography and glossary of graphs.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 26 10:32:57 2003.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/graph.html


graph coloring

(definition)

Definition: See vertex coloring, edge coloring, or k-coloring.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 7 16:41:22 2000.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/graphcolorng.html


graph concentration

(definition)

Definition: Contracting a graph by removing a subset of the vertices.

Note: From Algorithms and Theory of Computation Handbook, page 47-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:56:39 2000.
HTML page formatted Mon May 12 10:30:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/graphconcen.html


graph drawing

(classic problem)

Definition: The problem of representing a graph in a plane "neatly," for instance with a minimum number of edge crossings.

See also grid drawing, orthogonal drawing, straight-line drawing, planar graph, planarization.

Author: PEB

Implementation

Links to graph drawing packages (Java, C, etc.), draw a graph nicely (C and Mathematica), draw a graph in the plane such that no edges cross (C, C++, and Mathematica), GraphEd: Graph Editor and Layout Program (C).

More information

Roberto Tamassia's Graph Drawing links page (conferences, software, etc.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 13:14:48 2001.
HTML page formatted Thu Apr 17 10:49:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/graphdrawing.html


graph isomorphism

(classic problem)

Definition: Determine if two graphs are isomorphic.

See also subgraph isomorphism, homeomorphic.

Author: PEB

Implementation

(C and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 26 10:32:02 2003.
HTML page formatted Thu Apr 17 10:49:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/graphisomrph.html


graph partition

(definition)

Definition: (no definition here, yet, but you can help.)

Implementation

(C++)

More information

METIS is a set of programs for partitioning graphs, etc.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 19 08:51:34 1999.
HTML page formatted Thu Apr 17 10:49:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/graphpartitn.html


Gray code

(definition)

Definition: An ordering of 2n binary numbers such that only one bit changes from one entry to the next.

See also Karnaugh map.

Note: Gray codes are useful in mechanical encoders since a slight change in location only affects one bit. Using a typical binary code, up to n bits could change, and slight misalignments between reading elements could cause wildly incorrect readings.

One Gray code for 3 bits is (000, 010, 011, 001, 101, 111, 110, 100). Gray codes are not unique. An n-bit Gray code corresponds to a Hamiltonian cycle on an n-dimensional hypercube.

One way to construct a Gray code for n bits is to take a Gray code for n-1 bits with each code prefixed by 0 (for the first half of the code) and append the n-1 Gray code reversed with each code prefixed by 1 (for the second half). This is called a "binary-reflected Gray code". Here is an example of creating a 3-bit Gray code from a 2-bit Gray code.

00 | 01 | 11 | 10 |  |  |  |  | A Gray code for 2 bits
000 | 001 | 011 | 010 |  |  |  |  | the 2-bit code with "0" prefixes
 |  |  |  | 10 | 11 | 01 | 00 | the 2-bit code in reverse order
 |  |  |  | 110 | 111 | 101 | 100 | the reversed code with "1" prefixes
000 | 001 | 011 | 010 | 110 | 111 | 101 | 100 | A Gray code for 3 bits

A Gray code was used in a telegraph demonstrated by French engineer Émile Baudot in 1878. The codes were first patented by Frank Gray, a Bell Labs researcher, in 1953.

Author: PEB

Implementation

Glenn Rhoads' Snippets (c). binary-to-Gray and Gray-to-binary conversion (C) with history, references, and application to genetic algorithms. convert between binary and Gray (C): a PDF document of section 20.2 of Numerical recipes in C, binary-to-Gray, code generation, and plotting (Maple) with applications and references.

More information

Pictures of a Gray code rotary railroad control.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 26 11:37:30 2002.
HTML page formatted Thu Apr 17 10:49:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/graycode.html


greatest common divisor

(algorithm)

Definition: (1) The greatest integer which is a divisor of given positive integers. For instance, GCD(30, 42) = 6. (2) An algorithm to find the same.

Also known as GCD.

See also Euclid's algorithm, binary GCD algorithm, least common multiple, extended Euclid's algorithm.

Note: After [CLR90, page 804].

Author: PEB

Implementation

(Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:54:34 2003.
HTML page formatted Thu Apr 17 10:49:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/greatcomdiv.html


greatest common denominator

(algorithm)

Definition: See greatest common divisor.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:54:34 2003.
HTML page formatted Thu Apr 17 10:49:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/greatestCommonDenominator.html


greedy algorithm

(algorithmic technique)

Definition: An algorithm that always takes the best immediate, or local, solution while finding an answer. Greedy algorithms find the overall, or globally, optimal solution for some optimization problems, but may find less-than-optimal solutions for some instances of other problems.

See also greedy heuristic.

Note: Prim's algorithm and Kruskal's algorithm are greedy algorithms that find the globally optimal solution, a minimum spanning tree. In contrast, any known greedy algorithm to find an Hamiltonian cycle might not find the shortest path, that is, a solution to the traveling salesman problem.

If there is no greedy algorithm that always finds the optimal solution for a problem, one may have to search (exponentially) many possible solutions to find the optimum. Greedy algorithms are usually quicker, since they don't consider the details of possible alternatives.

Dijkstra's algorithm for finding shortest paths, Huffman encoding and optimal merge are other examples of greedy algorithms that find optimal solutions.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 12:39:35 2001.
HTML page formatted Thu Apr 17 10:49:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/greedyalgo.html


greedy heuristic

(algorithmic technique)

Definition: An algorithmic technique in which an optimization problem is solved by finding locally optimal solutions.

See also greedy algorithm.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 30 08:47:51 2001.
HTML page formatted Mon May 12 10:30:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/greedyHeuristic.html


grey code

(definition)

Definition: See Gray code.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 26 11:37:30 2002.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/greyCode.html


grid drawing

(definition)

Definition: A graph drawing in which each vertex is represented by a point with integer coordinates.

See also orthogonal drawing, straight-line drawing.

Note: From Algorithms and Theory of Computation Handbook, page 9-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:56:31 2000.
HTML page formatted Mon May 12 10:30:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/griddrawing.html


grid file

(data structure)

Definition: A point access method which splits space into a nonperiodic grid. Each spatial dimension is divided by a linear hash. Small sets of points are referred to by one or more cells of the grid.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:38:06 2001.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/gridfile.html


Grover's algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Las Vegas algorithm, quantum computation.

Note: Named for the inventor, Lov K. Grover. See Arthur O. Pittenger, "An Introduction to Quantum Computing Algorithms," page 46.

Implementation

(C-like)

More information

Grover's article in Dr. Dobb's Journal, April 2001.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 11 13:46:08 2001.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/groversAlgo.html


halting problem

(classic problem)

Definition: No program can ever be written to determine whether any arbitrary program will halt. Since many questions can be recast to this problem, we can conclude that some programs are absolutely impossible, although heuristic or partial solutions are possible.

See also undecidable problem, uncomputable problem, algorithm, Turing machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 6 10:11:45 2003.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/haltingProblem.html


Hamiltonian cycle

(definition)

Definition: A path through a graph which starts and ends at the same vertex and includes every other vertex exactly once.

Also known as tour.

See also cycle, traveling salesman, Euler cycle, simple path, vehicle routing problem, perfect matching.

Note: Named for Sir William Rowan Hamilton (1805-1865) (a longer biography). A Hamiltonian cycle includes each vertex once; an Euler cycle includes each edge once.

Author: PEB

Implementation

(Fortran, C, Mathematica, and C++)

More information

Links to papers on every aspect of Hamiltonian cycles and paths.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 11:00:44 2003.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/hamiltonianCycle.html


Hamming distance

(definition)

Definition: The number of bits which differ between two binary strings. More formally, the distance between two strings A and B is summation | Ai - Bi |.

Note: After Ralf Rabaetje <rrabaetj@advea.com> 4 February 2000.

The Hamming distance can be interpreted as the number of bits which need to be changed (corrupted) to turn one string into the other.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 4 12:45:16 2000.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/hammingdist.html


hash function

(algorithm)

Definition: A function that maps keys to integers, usually to get an even distribution on a smaller set of values.

See also hash table, linear hash, multiplication method, perfect hashing, minimal perfect hashing, order preserving minimal perfect hashing, uniform hashing, universal hashing, simple uniform hashing, Pearson's hash.

Note: The range of integers is typically [0 ... m-1] where m is a prime number or a power of 2.

Author: PEB

Implementation

See the implementations at minimal perfect hashing (C++ and C) and Pearson's hash (C). A review and comparison of many integer hash functions (C). Overview of different kinds of hash functions. Hash functions for strings (C), strings (C and Perl), Kazlib (C)

More information

Hashing Functions.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:23:21 2003.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/hash.html


hash heap

(data structure)

Definition: An efficient implementation of a priority queue. The linear hash function monotonically maps keys to buckets, and each bucket is a heap.

See also bucket sort.

Note: This is a bucket sort where the buckets are organized as heaps. The linear hash function maps increasing keys into nondecreasing values, that is, key1 > key2 implies h(key1) is greater than or equal to h(key2). It is not clear what happens if a bucket gets full.

Let R be the ratio between the key range and the range of the hash function. If R is so large there is only one bucket, we have a regular heap. If R is one, it is a direct mapped array. This data structure was proposed by Chris L. Kuszmaul <fyodor@nas.nasa.gov> in the news group comp.theory 13 January 1999.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Dec 27 15:33:24 1999.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/hashheap.html


hash

(algorithm)

Definition: See hash function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:23:21 2003.
HTML page formatted Thu Apr 17 10:49:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/hashI.html


hash table

(data structure)

Definition: A dictionary in which keys are mapped to array positions by a hash function. Having more than one key map to the same position is called a collision. There are many ways to resolve collisions, but they may be divided into open addressing, in which all elements are kept within the table, and chaining, in which additional data structures are used.

See also perfect hashing, dynamic hashing, cuckoo hashing, load factor, hash table delete, collision resolution: coalesced hashing, linear probing, double hashing, quadratic probing, uniform hashing, simple uniform hashing, separate chaining hashing, direct chaining hashing, clustering, an application: Bloom filter.

Note: Complexity depends on the hash function and collision resolution, but may be constant ( upper-case Theta (1)). Some open addressing schemes suffer from clustering more than others.

Author: PEB

Implementation

chaining: (C), linear probing hashing: insert (C), look up (C), Kazlib (C), chaining: explanations, diagrams, and code (Visual Basic)

More information

explanation and example of hashing and various collision resolution techniques

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:27:01 2003.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/hashtab.html


hash table delete

(algorithm)

Definition: If the hash table uses chaining, use the chaining data structure delete. If it uses open addressing, mark the item "deleted" for future reuse.

See also cuckoo hashing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:22:10 2003.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/hashtabdelet.html


Hausdorff distance

(definition)

Definition: A measure of the resemblance of two (fixed) sets of geometric points P and Q, defined as H(P,Q)= max{ maxa in P minb in Q d(a,b), maxa in Q minb in P d(a,b)} where d( ·, ·) is the distance metric, usually the Euclidean distance.

Note: Adapted from [AS98, page 437].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:11:03 2001.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/hausdorffdst.html


hB-tree

(data structure)

Definition: A point access method which uses k-d trees to organize the space, but partitions as excluded intervals, like the BANG file. Searching is like in a k-d-B-tree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:37:58 2001.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/hbtree.html


head

(definition)

Definition: The first item of a list.

See also tail.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Sep 18 11:55:54 1998.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/head.html


heap

(data structure)

Definition: A tree where every node has a key more extreme (greater or less) than or equal to the key of its parent.

See also build-heap, heapsort, binary heap, k-ary heap, priority queue, heap property, treap, complete binary tree.

Note: Insertion is O( log2 n) where n is the number of nodes.

Author: CLK

Implementation

delete (C) and insert (C and Pascal) both of which use the auxiliary function siftup (C and Pascal), explanation, examples, and C code, (Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 22 08:54:30 2002.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/heap.html


heap condition

(definition)

Definition: See heap property.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:35:59 2002.
HTML page formatted Thu Apr 17 10:49:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/heapCondition.html


heapify

(algorithm)

Definition: Rearrange a heap to maintain the heap property, that is, the key of the root node is more extreme (greater or less) than or equal to the keys of its children. If the root node's key is not more extreme, swap it with the most extreme child key, then recursively heapify that child's subtree. The child subtrees must be heaps to start.

See also binary heap, build-heap, heapsort.

Note: For an array implementation, heapify takes O( log2 n) or O(h) time under the comparison model, where n is the number of nodes and h is the height.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 9 16:57:17 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heapify.html


heap ordered

(definition)

Definition: See heap property.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:35:59 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heapOrdered.html


heap property

(definition)

Definition: Each node in a tree has a key which is more extreme (greater or less) than or equal to the key of its parent.

See also max-heap property, min-heap property, heap.

Note: The root node has the largest or smallest key. After LK.

A tree with the heap property is a heap.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:35:59 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heapproperty.html


heapsort

(algorithm)

Definition: A sort algorithm which builds a heap, then repeatedly extracts the maximum item. Run time is O(n log n).

See also adaptive heap sort, smoothsort.

Author: PEB

Implementation

(Java), (Java), Worst-case behavior annotated for real time (WOOP/ADA), including bibliography.

More information

demonstration.

J. W. J. Williams, Algorithm 232 (heapsort), CACM, 7:378-348, 1964.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 5 12:51:16 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heapSort.html


heap sort

(algorithm)

Definition: See heapsort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 5 12:51:16 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heapSortI.html


heaviest common subsequence

(classic problem)

Definition: See longest common subsequence.

Author: CRC-A

Implementation

(C and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:08:01 2002.
HTML page formatted Mon May 12 10:30:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/heaviestCommonSubsequence.html


height

(definition)

Definition: The maximum distance of any leaf from the root of a tree. If a tree has only one node (the root), the height is zero.

Note: The height of the figure at the definition of tree is two.

The height of a tree is also known as the order.

Author: PEB

Implementation

For binary trees (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:46:49 2003.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/height.html


height-balanced binary search tree

(data structure)

Definition: A height-balanced tree which is also a binary search tree. It supports membership, insert, and delete operations in time logarithmic in the number of nodes in the tree.

See also AVL tree, red-black tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 30 16:35:17 2001.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heightBalancedBinSrchTree.html


height-balanced tree

(data structure)

Definition: A tree whose subtrees differ in height by no more than one and the subtrees are height-balanced, too. An empty tree is height-balanced.

See also weight-balanced tree, balanced binary tree, height-balanced binary search tree.

Note: After [HS83, page 442].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 10:27:02 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heightBalancedTree.html


Herter-Heighway Dragon

Definition: See Dragon curve.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 17:02:46 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/HerterHeighwayDragon.html


heuristic

(algorithmic technique)

Definition: An algorithm that usually, but not always, works or that gives nearly the right answer.

See also metaheuristic, probabilistic algorithm, greedy algorithm, move-to-front heuristic.

Note: Some problems, such as the traveling salesman problem, take far too long to compute an optimal solution. But some have good heuristics that are fast and find a solution no more than a few percent worse than the optimal.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jun 25 15:32:53 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/heuristic.html


hidden Markov model

(data structure)

Definition: A variant of a finite state machine having a set of states, Q, an output alphabet, O, transition probabilities, A, output probabilities, B, and initial state probabilities, upper-case Pi. The current state is not observable. Instead, each state produces an output with a certain probability, B. Usually the states, Q, and outputs, O, are understood, so an HMM is said to be a triple, (A, B, upper-case Pi).

Formal Definition: After Michael Cohen.

  • A = {aij = P(qj at t+1 | qi at t)}, where P(a | b) is the conditional probability of a given b, t greater than or equal to 1 is time, and qi in Q.
    Informally, A is the probability that the next state is qj given that the current state is qi.
  • B = {bik = P(ok | qi)}, where ok in O.
    Informally, B is the probability that the output is ok given that the current state is qi.
  • upper-case Pi = {pi = P(qi at t=1)}.

Also known as HMM.

See also Markov chain, Baum Welch algorithm, Viterbi algorithm.

Note: Computing a model given sets of sequences of observed outputs is very difficult, since the states are not directly observable and transitions are probabilistic. One method is the Baum Welch algorithm.

Although the states cannot, by definition, be directly observed, the most likely sequence of sets for a given sequence of observed outputs can be computed in O(nt), where n is the number of states and t is the length of the sequence. One method is the Viterbi algorithm.

Thanks to Arvind <uk_arvind@mail.utexas.edu> May 2002.

Author: PEB

More information

See Michael Cohen's Hidden Markov Models for definitions, examples, algorithms, proofs, etc.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:12:39 2002.
HTML page formatted Thu Apr 17 10:49:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/hiddenMarkovModel.html


Hilbert curve

Definition: (no definition here, yet, but you can help.)

See also C curve, Dragon curve, Sierpinski curve.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jun 28 12:14:59 1999.
HTML page formatted Thu Apr 17 10:49:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/hilbertcurve.html


histogram sort

(algorithm)

Definition: An efficient 3-pass refinement of a bucket sort algorithm. The first pass counts the number of items for each bucket in an auxiliary array, and then makes a running total so each auxiliary entry is the number of preceding items. The second pass puts each item in its proper bucket according to the auxiliary entry for the key of that item. The last pass sorts each bucket.

See also counting sort, American flag sort.

Note: The run time is effectively O(n log log n). Let S be the data set to be sorted, where n=|S|. R is an approximate rank function to sort the data into n bins. R has the following properties.

  • R is an integer valued function into [0, n-1].
  • 0 less than or equal to R(x) less than or equal to n-1 for x in S.
  • For some x,y in S, R(x)=0 and R(y)=n-1.
  • x < y implies R(x) less than or equal to R(y) for x,y in S.
Each bin then has, on average, 1 entry. Under some rather broad assumptions the number of entries in a bin will be Poisson distributed whence the observation that the sort is O(n log log n).

Let T be the final array for the sorted data. Allocate an auxiliary integer array H indexed 0 ... n-1. We make one pass through the data to count the number of items in each bin, recording the counts in H. The array H is then converted into a cumulative array so each entry in H specifies the beginning bin position of the bin contents in T. We then make a second pass through the data. We copy each item x in S from S to T at H(R(x)), then increment H(R(x)) so the next item in the bin goes in the next location in T. (The bin number R(x) could be saved in still another auxiliary array to trade off memory for computation.)

For numeric data, there is a simple R function that works very well: Let min, max be the minimum and maximum of S. Then R(x) = n*(x - min)/(max-min).

This uses quite a bit of extra memory. For large data sets, there could be slow downs because of page faults. For large n it is more efficient to bound the number of bins.

This note is due to Richard Harter, cri@tiac.net, http://www.tiac.net/users/cri/, 8 January 2001, and is used by permission.

Author: PEB

Implementation

Marion McCoskey's Single Buffered Count Sort in (C++).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:48:22 2003.
HTML page formatted Tue May 13 15:54:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/histogramSort.html


HMM

(data structure)

Definition: See hidden Markov model.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:12:39 2002.
HTML page formatted Thu Apr 17 10:49:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/hmm.html


homeomorphic

(definition)

Definition: Two graphs are homeomorphic if they can be made isomorphic by inserting new vertices of degree 2 into edges.

Note: This corresponds to the topological notion since adding or removing degree 2 vertices doesn't change the graph's topology.

This is similar to, but not the same as, homomorphic.

Author: PEB

More information

Eric Weisstein's MathWorld entries for homomorphism and homeomorphism.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 26 10:33:40 2003.
HTML page formatted Thu Apr 17 10:49:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/homeomorphic.html


horizontal visibility map

(definition)

Definition: A partition of the plane into regions by drawing a horizontal straight line through each vertex p of a planar straight-line graph until it intersects an edge e of the graph or extends to infinity. The edge e is said to be horizontally visible from p.

See also vertical visibility map, visibility map, visible.

Note: From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:56:20 2000.
HTML page formatted Mon May 12 10:30:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/horizontalVisMap.html


Horner's rule

(algorithm)

Definition: A polynomial A(x) = a0 + a1x + a2x2 + a3x3 + ... may be written as A(x) = a0 + x(a1 + x(a2 + x(a3 + ...))).

Note: A polynomial may be evaluated at a point x', that is A(x') computed, in upper-case Theta (n) time using Horner's rule. That is, repeated multiplications and additions, rather than the naive methods of raising x to powers, multiplying by the coefficient, and accumulating.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 10 10:09:00 1999.
HTML page formatted Thu Apr 17 10:49:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/hornersrule.html


Horspool

(algorithm)

Definition: See Boyer-Moore-Horspool.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C) entry for Horspool, (C) or (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:10:08 2003.
HTML page formatted Thu Apr 17 10:49:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/Horspool.html


hueristic

(algorithmic technique)

Definition: See heuristic.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jun 25 15:32:53 2002.
HTML page formatted Thu Apr 17 10:49:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/hueristic.html


Huffman coding

(algorithm)

Definition: See Huffman encoding.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:52:22 2003.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/HuffmanCoding.html


Huffman encoding

(algorithm)

Definition: A minimal variable-length character encoding based on the frequency of each character. First, each character becomes a trivial tree, with the character as the only node. The character's frequency is the tree's frequency. The two trees with the least frequencies are joined with a new root which is assigned the sum of their frequencies. This is repeated until all characters are in one tree. One code bit represents each level. Thus more frequent characters are near the root and are encoded with few bits, and rare characters are far from the root and are encoded with many bits.

Also known as static Huffman encoding.

See also arithmetic coding, k-ary Huffman encoding, adaptive Huffman encoding, optimal merge, greedy algorithm, full binary tree, Shannon-Fano coding.

Note: The worst case for Huffman encoding (or, equivalently, the longest Huffman encoding for a set of characters) is when the distribution of frequencies follows the Fibonacci numbers. For this and other relations see Alex Vinokur's note on Huffman codes and Fibonacci numbers.

Joining trees by frequency is the same as merging sequences by length in optimal merge. See the example there. Since a node with only one child is not optimal, any Huffman encoding is a full binary tree.

Shannon-Fano is a minimal prefix code. Huffman is optimal for character encoding (one character-one code word) and simple to program. Arithmetic coding is better still, since it can allocate fractional bits, but more complicated.

Author: PEB

Implementation

build tree in array (C) -- also computes entropy and efficiency.

More information

Dr. Pam J. Vermeer's step by step discovery of the algorithm, survey on data compression, explanation, example, and analysis.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:52:22 2003.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/huffmanEncoding.html


Huffmann coding

(algorithm)

Definition: See Huffman encoding.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:52:22 2003.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/HuffmannCoding.html


Hufman encoding

(algorithm)

Definition: See Huffman encoding.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:52:22 2003.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/HufmanEncoding.html


hybrid algorithm

(definition)

Definition: Any algorithm composed of simpler algorithms.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 09:06:49 2002.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/hybridAlgorithm.html


hyperedge

(definition)

Definition: A connection between two or more vertices of a hypergraph.

See also edge, graph, directed graph, undirected graph, weighted graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:29:06 2000.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/hyperedge.html


hypergraph

(data structure)

Definition: A graph whose hyperedges connect two or more vertices.

See also multigraph, undirected graph.

Note: Consider "family," a relation connecting two or more people. If each person is a vertex, a family edge connects the father, mother, and all of their children. So G = (people, family) is a hypergraph. Contrast this with the binary relations "married to," which connects a man and a woman, or "child of," which is directed from a child to his or her father or mother.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Mar 24 07:28:08 2000.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/hypergraph.html


ID

(definition)

Definition: See instantaneous description.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:53:42 2002.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/id.html


ideal merge

(algorithm)

Definition: Merge n sorted streams into one output stream. To begin the streams are sorted by the value of the head element of each. Then the head of the first stream, which is the least since the streams were sorted, is removed and written to the output. That stream is inserted back into the list of streams according to its new head. Taking the head of the first stream and reinserting that stream is repeated until all elements have been processed. Using binary search to find the new place to insert a stream, the execution time is upper-case Theta (M log N) where M is the total number of elements.

See also simple merge, optimal merge, UnShuffle sort, merge sort.

Note: Ideal merge was first mentioned by Art S. Kagel as part of the implementation of the UnShuffle sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 16:20:35 2003.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/idealmerge.html


implication

(definition)

Definition: The boolean implies function.

See also conjunction, disjunction.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 31 10:57:44 1999.
HTML page formatted Thu Apr 17 10:49:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/implication.html


implies

(definition)

Definition: Implication: 0 -> 0 = 1, 0 -> 1 = 1, 1 -> 0 = 0, 1 -> 1 = 1.

See also and, or, not, xor.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 15:11:33 1999.
HTML page formatted Thu Apr 17 10:49:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/implies.html


in-branching

(definition)

Definition: See branching.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 17:02:11 2002.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/inbranching.html


inclusion-exclusion principle

(definition)

Definition: A rule that allows to compute the probability of exactly r occurrences of events A1, A2, ... , An.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:56:08 2000.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/inclusion.html


inclusive or

(definition)

Definition: See or.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 13 09:35:18 2001.
HTML page formatted Thu Apr 17 10:49:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/inclusiveOr.html


incompressible string

(definition)

Definition: A string whose Kolmogorov complexity equals its length, so that it has no shorter encodings.

Note: From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:56:02 2000.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/incompressbl.html


in-degree

(definition)

Definition: The number of edges coming into a vertex in a directed graph.

See also out-degree, source, degree.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 7 14:20:04 2000.
HTML page formatted Thu Apr 17 10:49:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/indegree.html


independent set

(definition)

Definition: A set of vertices in a graph such that for any pair of vertices, there is no edge between them.

See also maximal independent set.

Author: SKS

Implementation

(Fortran and C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:16:18 2000.
HTML page formatted Thu Apr 17 10:49:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/independntst.html


index file

(data structure)

Definition: A file which stores keys and an index into another file. The index file may have additional structure, e.g., be a B-tree.

See also inverted index, forward index.

Note: An index file is helpful if records are large: the keys and indexes can be extracted, sorted, and the original file accessed faster than the original file could be rearranged into sorted order. Also if the file needs to be accessed by different keys at the same time, it cannot be sorted by all of them. So a index file is maintained for each different key.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 23 10:37:54 2001.
HTML page formatted Thu Apr 17 10:49:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/indexfile.html


information theoretic bound

(definition)

Definition: lower bounds on the execution of a computation based on the rate at which information can be accumulated.

Note: From Algorithms and Theory of Computation Handbook, page 1-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:55:57 2000.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/information.html


inorder traversal

(algorithm)

Definition: See in-order traversal.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 2 13:11:01 2002.
HTML page formatted Thu Apr 17 10:49:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/inorderTraversal.html


in-order traversal

(algorithm)

Definition: Process all nodes of a tree by recursively processing the left subtree, then processing the root, and finally the right subtree.

See also postorder traversal, preorder traversal, tree traversal, level-order traversal.

Note: For instance, if the "processing" is just printing, a tree is printed as "(left subtree) root (right subtree)." Here is pseudocode for a binary tree:

 inorder(tree)
 begin
     if tree is null, return;

     inorder(tree.left_subtree);
     print(tree.root);
     inorder(tree.right_subtree);
 end

Author: PEB

More information

demonstration

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 2 13:11:01 2002.
HTML page formatted Thu Apr 17 10:49:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/inordrtrvrsl.html


in-place sort

(algorithm)

Definition: A sort algorithm in which the sorted items occupy the same storage as the original ones. These algorithms may use o(n) additional memory for bookkeeping, but at most a constant number of items are kept in auxiliary memory at any time.

Also known as sort in place.

See also American flag sort, quicksort, insertion sort, selection sort, Shell sort, diminishing increment sort.

Authors: PEB,CM

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:41:59 2003.
HTML page formatted Tue May 13 15:54:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/inplacesort.html


insertion sort

(algorithm)

Definition: Sort by repeatedly taking the next item and inserting it into the final data structure in its proper order with respect to items already inserted. Run time is O(n2) because of moves.

Also known as linear insertion sort.

See also sort.

Note: Sorting can be done in place by moving the next item past the end of the sorted items into place by repeatedly swapping it with the preceding item until it is in place - a linear search and move combined.

If comparing items is very expensive, use binary search to reduce the number of comparisons needed to find where the item should be inserted, then open a space by moving all later items down one. However a binary search is likely to make this not a stable sort.

Author: PEB

Implementation

(Java). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting; (Scheme); explanation (C); (Fortran).

More information

demonstration of several sort algorithms, with particular emphasis on insertion sort; more demonstrations; a demonstration of insertion sort.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:18:36 2003.
HTML page formatted Thu Apr 17 10:49:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/insertsrt.html


instantaneous description

(definition)

Definition: A string that encodes the current state, head position, and (work) tape contents at one step of a Turing machine computation.

Also known as ID, configuration.

Note: From Algorithms and Theory of Computation Handbook, page 28-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:53:42 2002.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/instantaneos.html


integer polyhedron

(definition)

Definition: A polyhedron, all of whose extreme points are integer valued.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:55:48 2000.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/integer.html


integer linear program

(definition)

Definition: A linear program with additional constraints that all of the variables must take on integer values. Solving such problems is NP-hard.

See also mixed integer linear program.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:55:44 2000.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/integerliner.html


integer multi-commodity flow

(definition)

Definition: A multi-commodity flow in which the flow of each commodity through each edge must take an integer value. The term is also used to capture the multi-commodity flow problem in which each demand is routed along a single path.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:55:41 2000.
HTML page formatted Mon May 12 10:30:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/integermulti.html


interactive proof system

(definition)

Definition: A protocol in which one or more provers try to convince another party, called the verifier, that the prover(s) possess certain true knowledge, such as the membership of a string x in a given language, often with the goal of revealing no further details about this knowledge. The prover(s) and verifier are formally defined as probabilistic Turing machines with special "interaction tapes" for exchanging messages.

See also probabilistically checkable proof.

Note: From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:55:37 2000.
HTML page formatted Mon May 12 10:30:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/interactvprf.html


interior-based representation

(definition)

Definition: A representation of a region that is based on its interior (i.e., the cells that compose it).

See also boundary-based representation.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:55:34 2000.
HTML page formatted Mon May 12 10:30:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/interiorbasd.html


interior node

(definition)

Definition: See internal node.

Authors: LJW,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 12:02:29 2002.
HTML page formatted Thu Apr 17 10:49:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/interiorNode.html


internal node

(definition)

Definition: A node of a tree that has one or more child nodes, equivalently, one that is not a leaf.

Also known as nonterminal node.

See also parent, root.

Note: See [CLR90, page 93] or [HS83, page 220].

Authors: LJW,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 12:02:29 2002.
HTML page formatted Thu Apr 17 10:49:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/internalnode.html


internal sort

(definition)

Definition: Any sort algorithm which uses exclusively main memory during the sort. This assumes high-speed random access to all memory.

See also external sort, quicksort, insertion sort.

Note: Although virtual memory may hide the use of disk, an internal sort is written as if all memory is equally accessible. From Algorithms and Theory of Computation Handbook, page 3-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

(Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 15:46:40 2001.
HTML page formatted Mon May 12 10:30:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/internalsort.html


interpolation search

(algorithm)

Definition: Search a sorted array by estimating the next position to check based on a linear interpolation of the search key and the values at the ends of the search interval.

Also known as extrapolation search.

See also jump search, secant search.

Note: You probably use this when looking something up in the telephone book or dictionary. For instance, "cold fusion" is probably near the front, so you open maybe 1/4 of the way in. What you find there helps you decide whether to turn many pages or just a few. Compare this with a linear search, where you check each entry in order from the beginning, or a binary search, where you always divide the search interval exactly in half. Unless the data is very uniform, there are millions of records, or comparisons are very time-consuming, a binary search is probably no slower since interpolation is usually time-consuming on a computer and a binary search only takes log(n) comparisons anyway.

Author: PEB

Implementation

Worst-case behavior annotated for real time (WOOP/ADA), including bibliography, (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 14:26:30 2003.
HTML page formatted Thu Apr 17 10:49:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/interpolationSearch.html


interpolation sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

(C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:08:31 2001.
HTML page formatted Thu Apr 17 10:49:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/interpolsort.html


interpolation-sequential search

(algorithm)

Definition: An approximate location is interpolated from the first and last items of a sorted array, then a linear search finds the actual location.

See also interpolation search.

Author: PEB

Implementation

(Pascal) or (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 17 14:44:55 2001.
HTML page formatted Thu Apr 17 10:49:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/interpsequen.html


intersection

(definition)

Definition: The intersection of two sets is a set having those members which are in both sets.

See also union, difference, complement.

Note: The intersection of {2, 3, 5} and {7, 5, 2} is {5, 2}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:33:24 2002.
HTML page formatted Thu Apr 17 10:49:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/intersection.html


interval tree

Definition: (no definition here, yet, but you can help.)

Note: [CLR90, page 290].

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 1 09:58:36 2001.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/intervaltree.html


intractable

(definition)

Definition: A problem for which no algorithm can exist which computes all instances of it in polynomial time.

See also tractable, undecidable problem, unsolvable problem.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 31 15:47:32 2000.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/intratable.html


introsort

(algorithm)

Definition: See introspective sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 24 08:44:07 2002.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/introsort.html


introspection sort

(algorithm)

Definition: See introspective sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 24 08:44:07 2002.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/introspectionSort.html


introspective sort

(algorithm)

Definition: A variant of quicksort which switches to heapsort for pathological inputs, that is, when execution time is becoming quadratic.

Also known as introsort.

Author: PEB

More information

abstract and link to Musser's paper

David R. Musser, Introspective Sorting and Selection Algorithms, Software-Practice and Experience, 8:983-993, 1997.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 24 08:44:07 2002.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/introspectiveSort.html


inverse Ackermann function

(algorithm)

Definition: A function of two parameters whose value grows very, very slowly.

Formal Definition: alpha (m,n) = min{i greater than or equal to 1: A(i, floor( m/n)) > log2 n} where A(i,j) is Ackermann's function.

Also known as alpha.

See also Ackermann's function.

Note: This is not strictly the inverse of Ackermann's function. Rather, this grows as slowly as Ackermann's function grows quickly.

After [CLR90, page 452].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:27:17 2002.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/inverseAckermann.html


inverse Ackerman's function

(algorithm)

Definition: See inverse Ackermann function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:27:17 2002.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/inverseAckermansFunction.html


inverted file

(data structure)

Definition: See inverted index.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 15:39:17 2002.
HTML page formatted Thu Apr 17 10:49:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/invertedFile.html


inverted file index

(data structure)

Definition: An inverted index which only indicates the text in which a word appears, not where the word appears within the text.

See also full inverted index, block addressing index.

Note: See the example at inverted index.

Author: PEB

More information

Nivio Ziviani, Edleno Silva de Moura, Gonzalo Navarro, Ricardo Baeza-Yates, Compression: A Key for Next-Generation Text Retrieval Systems, IEEE Computer, 33(11):37-44, November 2000, (page 42).

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 23 10:41:01 2001.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/invertedFileIndex.html


inverted index

(data structure)

Definition: An index into a set of texts of the words in the texts. The index is accessed by some search method. Each index entry gives the word and a list of texts, possibly with locations within the text, where the word occurs.

See also full inverted index, inverted file index, block addressing index, index file, external index, forward index.

Note: Suppose we want to search the texts "i love you," "god is love," "love is blind," and "blind justice." (The words of the text are all lower case for simplicity.) If we index by (text, character within the text), the index with location in text is:

 blind   (3,8);(4,0)
 god     (2,0)
 i       (1,0)
 is      (2,4);(3,5)
 justice (4,6)
 love    (1,2);(2,7);(3,0)
 you     (1,7)
The word "blind" is in document 3 ("love is blind") starting at character 8, so has an entry (3,8). To find, for instance, documents with both "is" and "love," first look up the words in the index, then find the intersection of the texts in each list. In this case, documents 2 and 3 have both words. We can quickly find documents where the words appear close to each other by comparing the character within the text.

Author: PEB

More information

Nivio Ziviani, Edleno Silva de Moura, Gonzalo Navarro, Ricardo Baeza-Yates, Compression: A Key for Next-Generation Text Retrieval Systems, IEEE Computer, 33(11):37-44, November 2000, (page 42).

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 15:39:17 2002.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/invertedIndex.html


irreflexive

(definition)

Definition: A binary relation R for which there is no element a such that a R a.

See also reflexive, antisymmetric.

Note: The relation "less than" is irreflexive since no number is less than itself.

Author: PEB

More information

After Eric W. Weisstein's World of Mathematics entry irreflexive.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 11:28:57 2003.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/irreflexive.html


isomorphic

(definition)

Definition: Two graphs are isomorphic if there is a one-to-one correspondence between their vertices and there is an edge between two vertices of one graph if and only if there is an edge between the two corresponding vertices in the other graph.

See also homeomorphic.

Author: SKS

Implementation

(C and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 26 10:30:04 2003.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/isomorphic.html


iteration

(algorithmic technique)

Definition: An algorithmic technique where a function solves a problem by repeatedly working on successive parts of the problem.

See also recursion.

Author: PEB

More information

See dynamic algorithms for an example of one trade-off between speed and clarity for a recursive vs. an iterative implementation.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:45:12 2002.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/iteration.html


Jaro-Winkler

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also double metaphone, soundex, NYSIIS, edit distance.

Note: Accepts two names and returns a number between 1, perfect match, and 0, completely different. Used at the U.S. Census.

More information

Winkler and Thibaudeau paper abstract (HTML) and full paper (PDF). slide summary of algorithm and comparison of Soundex, edit distance, NYSIIS, and Jaro-Winkler

William E. Winkler and Yves Thibaudeau, An Application of the Fellegi-Sunter Model of Record Linkage to the 1990 U.S. Decennial Census, Statistical Research Report Series RR91/09, U.S. Census Bureau, Washington, D.C., 1991.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 25 11:05:57 2002.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/jaroWinkler.html


Johnson's algorithm

(algorithm)

Definition: An algorithm to solve the all pairs shortest path problem in a sparse weighted, directed graph. First, it adds a new node with zero weight edges from it to all other nodes, and runs the Bellman-Ford algorithm to check for negative weight cycles and find h(v), the least weight of a path from the new node to node v. Next it reweights the edges using the nodes' h(v) values. Finally for each node, it runs Dijkstra's algorithm and stores the computed least weight to other nodes, reweighted using the nodes' h(v) values, as the final weight. The time complexity is O(V2 log V + VE).

See also Floyd-Warshall algorithm.

Note: After [CLR90, page 569].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:06:47 2001.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/johnsonsAlgorithm.html


Johnson-Trotter

(algorithm)

Definition: An algorithm to generate permutations by transposing elements.

Also known as Steinhaus-Johnson-Trotter.

Author: PEB

Implementation

Information on Permutations (Pascal and C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 13 09:04:37 2001.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/johnsonTrotter.html


j sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also sort.

Author: PEB

Implementation

demonstration and source code (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:40 2003.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/jsort.html


jsort

(algorithm)

Definition: See j sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:40 2003.
HTML page formatted Thu Apr 17 10:49:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/jsortI.html


jump search

(algorithm)

Definition: An algorithm to search sorted items by checking jth item until the right area is found, then doing smaller jumps or a linear search. The optimum for n items is when j= square root of n.

Also known as block search.

See also interpolation search, binary search, linear search.

Note: If there will be two levels of jumping, the optimum is j=n2/3 for the first jumps and j=n1/3 for the second level of jumps.

More information

Ben Shneiderman, Jump Searching: A Fast Sequential Search Technique, CACM, 21(10):831-834, October 1978.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 11:50:47 2001.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/jumpsearch.html


Karmarkar's algorithm

Definition: (no definition here, yet, but you can help.)

Implementation

Article with details of implementation and comparisons (Algol-like pseudo-code)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 21 12:37:22 2001.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/karmarkarsAlgo.html


Karnaugh map

(algorithm)

Definition: A method for minimizing a boolean expression, usually aided by a rectangular map of the value of the expression for all possible input values. Input values are arranged in a Gray code. Maximal rectangular groups that cover the inputs where the expression is true give a minimum implementation.

Also known as Veitch diagram, KV diagram.

See also Venn diagram.

Note: "Karnaugh" is pronounced "car-no".

In the example, "*" means "don't care", that is, it doesn't matter what the function value is for those inputs. This expression may be realized as AB' + AD + BC'D + B'CD'. Some expressions may be implemented more compactly by grouping the zeros, possibly including "don't care" cells, and negating the final output. The positive implementation is smaller for this expression.

Author: SKS

Implementation

(Java)

More information

An interactive quiz, and the latest few lectures (33 and 34) in Discrete Mathematics (click on the Lecture Notes link) explain more.

Maurice Karnaugh, The Map Method for Synthesis of Combinational Logic Circuits, Trans. AIEE. pt I, 72(9):593-599, November 1953.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 1 09:34:50 2003.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/karnaughmap.html


Karp-Rabin

(algorithm)

Definition: A string matching algorithm that compares string's hash values, rather than the strings themselves. For efficiency, the hash value of the next position in the text is easily computed from the hash value of the current position.

Also known as Rabin-Karp.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), description and animation (C), (C and Pascal), (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:05:32 2003.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/karpRabin.html


Karp reduction

(definition)

Definition: A reduction given by a polynomial time computable transformation function.

See also NP-complete, Turing reduction, Cook reduction, l-reduction, many-one reduction, polynomial-time reduction.

Note: From Algorithms and Theory of Computation Handbook, page 28-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:54:57 2000.
HTML page formatted Mon May 12 10:30:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/karpreductin.html


k-ary heap

(data structure)

Definition: A complete tree where every node has a key more extreme (greater or less) than the key of its parent. Each node has k or fewer children.

See also k-ary tree, binary heap, heap.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 30 17:44:17 2000.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/karyheap.html


k-ary Huffman encoding

(algorithm)

Definition: A minimal variable-length encoding based on the frequency of each character. Similar to a Huffman encoding, but joins k trees into a k-ary tree at each step, and uses k symbols for each level.

Note: The encoding at each stage has k symbols, not just 2 (0 or 1) like traditional Huffman. If k is a power of two, that is, k=2n, every symbol can be represented by n bits.

Author: PEB

Implementation

animation which counts characters, finds the code, encodes, and decodes (Java),
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:52:48 2003.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/karyHuffman.html


k-ary tree

(definition)

Definition: A tree with no more than k children for each node.

Also known as k-way tree.

See also multiway tree.

Note: A k-ary tree may be thought of as a multiway trees limited to k children.

Author: PEB

More information

explanation and example

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:45:04 2002.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/karyTree.html


k-clustering

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:49:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/kclustering.html


k-coloring

(definition)

Definition: 1) The assignment of k colors (or any distinct marks) to the vertices of a graph. 2) The assignment of k colors to the edges of a graph.

A coloring is a proper coloring if no two adjacent vertices or edges have the same color.

See also edge coloring, vertex coloring.

Author: ME

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 28 14:56:07 2000.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/kcoloring.html


k-connected graph

(definition)

Definition: A connected graph such that deleting any k-1 vertices (and incident edges) results in a graph that is still connected.

See also biconnected graph, triconnected graph, cut vertex.

Note: Informally, there are at least k independent paths from any vertex to any other vertex.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:00:47 2003.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/kconnectedGraph.html


k-d-B-tree

(data structure)

Definition: A data structure which splits multidimensional spaces like an adaptive k-d tree, but balances the resulting tree like a B-tree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:37:50 2001.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/kdbtree.html


k-dimensional

(definition)

Definition: (1) Dealing with or restricted to a space where location can be completely described with exactly k orthogonal axes. (2) Dealing with a space of any number of dimensions.

See also one-dimensional, two-dimensional, three-dimensional.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 2 10:01:11 1999.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/kdimensional.html


K-dominant match

(definition)

Definition: A match [i,j] having rank k and such that for any other pair [i',j'] of rank k either i'>i and j' less than or equal to j or i' less than or equal to i and j'>j.

Note: From Algorithms and Theory of Computation Handbook, page 13-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:54:52 2000.
HTML page formatted Mon May 12 10:30:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/kdominant.html


k-d tree

(data structure)

Definition: A multidimensional search tree for points in k dimensional space. Levels of the tree are split along successive dimensions at the points.

See also binary search tree, adaptive k-d tree, point access method.

Note: After [GG98]. Robert Keith Oswald (rko9h@virginia.edu) explains, In a traditional binary search tree, records are defined by only one key. In a k-d tree, records are defined by k keys. Like a traditional binary search trees, records are inserted and returned using < and greater than or equal to. However, the key which determines the subtree to use (i.e. left or right) varies with the level in the tree. At level L, key number L mod k + 1 is used, where the root is at level 0. Therefore, the first key is used at the root, the second key at level 1, and so on until all keys have been used. The keys are used again beginning at level k.

Author: PEB

Implementation

C, Pascal, or FORTRAN, insert (C), range search (C), and search (C). (C, Pascal, and Fortran)

More information

Some notes on k-d trees and other spatial data structures.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:37:44 2001.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/kdtree.html


key

(definition)

Definition: The part of a group of data by which it is sorted, indexed, cross referenced, etc.

See also dictionary, heap, sort.

Note: For instance, to sort customer records alphabetically, the key is the last name, then the given names. Other information, such as the address, outstanding balance, credit limit, etc. do not matter in sorting the records alphabetically. Different keys may be used at different times, for instance, an accounting report may need customers with larger balances first, so the records could be sorted using the outstanding balance as the key.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:48:05 2002.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/key.html


KMP

(algorithm)

Definition: See Knuth-Morris-Pratt algorithm.

Author: SB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal) which uses Boyer-Moore preprocessing (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:05:12 2003.
HTML page formatted Thu Apr 17 10:49:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/kmp.html


KmpSkip Search

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:05:19 2003.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/kmpskipsrch.html


knapsack problem

(classic problem)

Definition: Given items of different values and volumes, find the most valuable set of items that fit in a knapsack of fixed volume.

Formal Definition: There is a knapsack of capacity c > 0 and N items. Each item has value vi > 0 and weight wi > 0. Find the selection of items ( delta i = 1 if selected, 0 if not) that fit, summation i=1N delta iwi less than or equal to c, and the total value, summation i=1N delta ivi, is maximized.

Also known as 0-1 knapsack problem, binary knapsack problem.

See also fractional knapsack problem, unbounded knapsack problem, bin packing problem, cutting stock problem.

Note: Also called 0-1 knapsack (each item may be taken (1) or not (0)), in contrast to the fractional knapsack problem. Also called unbounded knapsack because they are an unbounded number of copies items of each The decision problem form is, given items of different values and volumes and a knapsack, is there a subset which exceeds a certain value? The decision problem is NP-complete.

Author: PEB

Implementation

(Fortran and Pascal)

More information

How to construct an optimal solution using dynamic programming.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 12:55:51 2002.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/knapsackProblem.html


knight's tour

(classic problem)

Definition: A series of moves of a chess knight that visits all squares on the board exactly once.

See also Hamiltonian cycle.

Note: The associated problem is to find such a series of moves. The problem can be generalized to an n × m rectangular chess board. Solutions may be found using backtracking.

Author: PEB

Implementation

Oleg Kiselyov's derivation (Prolog)

More information

Mark R. Keen's Knight's Tour page, a thorough discussion of the origin of and ways of finding solutions to the Knight's Tour. It treats rectangular boards of arbitrary size.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:08:47 2002.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/knightstour.html


Knuth-Morris-Pratt algorithm

(algorithm)

Definition: A string matching algorithm which turns the search string into a finite state machine, then runs the machine with the string to be searched as the input string. Execution time is O(m+n), where m is the length of the search string, and n is the length of the string to be searched.

Also known as KMP.

Author: SB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal) which uses Boyer-Moore preprocessing (C)

More information

a comparison of Naive, Knuth-Morris-Pratt, and Boyer-Moore string searches.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:05:12 2003.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/knuthMorrisPratt.html


Koenigsberg bridges problem

(definition)

Definition: See Euler cycle.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 10 12:42:59 2002.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/KoenigsbergBridgesProblem.html


Kolmogorov complexity

(definition)

Definition: The minimum number of bits into which a string can be compressed without losing information. This is defined with respect to a fixed, but universal decompression scheme, given by a universal Turing machine.

See also incompressible string.

Note: From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

Special issue of the Computer Journal on Kolmogorov Complexity (1999).

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:54:43 2000.
HTML page formatted Mon May 12 10:30:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/kolmogorov.html


Königsberg bridges problem

(definition)

Definition: See Euler cycle.

Author: PEB

Implementation

(Mathematica and Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 10 12:42:59 2002.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/KoumlnigsbergBridgesProblem.html


Kraft's inequality

(definition)

Definition: summation i=1N 2-c(i) less than or equal to 1, where N is the number of leaves in a binary tree and c(i) is the depth of leaf i.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:54:39 2000.
HTML page formatted Mon May 12 10:30:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/kraftsinqlty.html


Kripke structure

(definition)

Definition: A nondeterministic finite state machine whose states are labeled with boolean variables, which are the evaluations of expressions in that state. It may be extended with fairness constraints.

See also model checking.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 09:47:58 2000.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/kripkeStruct.html


Kruskal's algorithm

(algorithm)

Definition: An algorithm for computing a minimum spanning tree. It maintains a set of partial minimum spanning trees, and repeatedly adds the shortest edge in the graph whose vertices are in different partial minimum spanning trees.

See also Prim's algorithm.

Author: JLG

Implementation

analysis and code (C), (pseudocode)

More information

OR-Notes on graph theory, including Kruskal's algorithm.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:45:01 2002.
HTML page formatted Thu Apr 17 10:49:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/kruskalsalgo.html


kth order Fibonacci numbers

(definition)

Definition: A sequence of numbers where each number is the sum of the k preceding numbers. The usual Fibonacci numbers occur when k=2.

Formal Definition:

  • F(k)n = F(k)n-1 + F(k)n-2 + . . . + F(k)n-k for n greater than or equal to k.
  • F(k)k-1 = 1
  • F(k)n = 0 for 0 less than or equal to n less than or equal to k-2

Also known as pth order Fibonacci numbers.

See also optimal polyphase merge.

Author: PEB

More information

Apparently first studied by V. Schlegel, El Progreso Matemático, 4:173-174, 1894.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:28:14 2002.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kthOrderFibonacci.html


kth shortest path

(classic problem)

Definition: The problem of finding the kth shortest path from one vertex in a graph to another vertex. Variants may require that paths are edge- or vertex-disjoint, that is sharing no edges or vertices. "Shortest" may be least number of edges, least total weight, etc.

Author: PEB

Implementation

Víctor Jiménez and Andrés Marzal keep links to algorithms and code (C).

More information

The optimal problem page with definitions, links to basic concepts, variants, and algorithms.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 26 12:47:06 2001.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kthShortestPath.html


kth shortest path

(classic problem)

Definition: See kth shortest path.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 26 12:47:06 2001.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kthShortestPathI.html


kth smallest element

(classic problem)

Definition: See select kth element.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:37:05 2003.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kthSmallestElement.html


KV diagram

(algorithm)

Definition: See Karnaugh map.

Author: SKS

Implementation

(Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 1 09:34:50 2003.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/KVDiagram.html


k-way merge

(definition)

Definition: To combine k sorted data streams into a single sorted stream.

See also k-way merge sort, multiway merge, merge.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 10 14:32:56 2001.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kwaymerge.html


k-way merge sort

(algorithm)

Definition: A merge sort that sorts a data stream using repeated merges. It distributes the input into k streams by repeatedly reading a block of input that fits in memory, called a run, sorting it, then writing it to the next stream. It merges runs from the k streams into an output stream. It then repeatedly distributes the runs in the output stream to the k streams and merges them until there is a single sorted output.

Also known as p-way merge sort.

See also balanced k-way merge sort, simple merge, balanced merge sort, nonbalanced merge sort.

Note: This is an external sort.

Author: ASK

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 15:53:35 2003.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kwaymergsort.html


k-way tree

(definition)

Definition: See k-ary tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:45:04 2002.
HTML page formatted Thu Apr 17 10:49:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/kwayTree.html


labeled graph

(definition)

Definition: A graph which has labels associated with each edge or each vertex.

See also weighted graph.

Note: Adapted from [Wier98, page 466].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 09:59:20 2001.
HTML page formatted Thu Apr 17 10:49:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/labeledgraph.html


language

(definition)

Definition: A set of strings over some fixed alphabet. A characterization of inputs which may or may not be solved by algorithms.

Also known as formal language.

See also decidable language, undecidable problem.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:40:55 2002.
HTML page formatted Mon May 12 10:30:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/language.html


last-in, first-out

(definition)

Definition: A policy that the most recently arrived item is processed first. A stack implements this.

See also first-in, first-out.

Note: A depth-first search checks newly encountered nodes last-in, first-out.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 2 17:05:54 1999.
HTML page formatted Thu Apr 17 10:49:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/lastfirstout.html


Las Vegas algorithm

(definition)

Definition: A randomized algorithm that always produces correct results, with the only variation from one run to another being its running time.

See also Monte Carlo algorithm, ZPP, Grover's algorithm.

Note: From Algorithms and Theory of Computation Handbook, 15-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 15:16:04 2002.
HTML page formatted Mon May 12 10:30:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/lasVegas.html


lattice

(definition)

Definition: A point lattice generated by taking integer linear combinations of a set of basis vectors.

See also reduced basis.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:54:08 2000.
HTML page formatted Mon May 12 10:30:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/lattice.html


layered digraph

(definition)

Definition: See layered graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:58:12 2002.
HTML page formatted Thu Apr 17 10:49:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/layeredDigraph.html


layered graph

(definition)

Definition: A connected graph where "layers" L0 ... Lk partition the vertices. Each edge, which has a nonnegative integral weight, connects only vertices in successive layers. The width is the greatest number of vertices in any layer, i.e., MAXi=0k |Li|.

See also bipartite graph.

Note: A bipartite graph is a layered graph with two layers.

A. Fiat, D.P. Foster, H.J. Karloff, Y. Rabani, Y. Ravid, and S. Vishwanathan. Competitive Algorithms for Layered Graph Traversal. SIAM J. Comput., to appear. Preliminary version appeared in FOCS '91. Contributed by Giovanni Fiaschi <Giovanni.Fiaschi@marconi.com> June 2000.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:58:12 2002.
HTML page formatted Thu Apr 17 10:49:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/layeredgraph.html


LCM

(definition)

Definition: See least common multiple.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:06:26 2002.
HTML page formatted Thu Apr 17 10:49:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/lcm.html


LCS

(classic problem)

Definition: See longest common subsequence.

Author: CRC-A

Implementation

(C and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:08:01 2002.
HTML page formatted Mon May 12 10:30:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/lcs.html


leaf

(definition)

Definition: A terminal or "bottom" item of a tree, i.e., an item with no child. More formally, a vertex with degree one. See the figure at tree.

Also known as external node, terminal node.

See also root, internal node.

Note: From Algorithms and Theory of Computation Handbook, and is Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Authors: PEB,CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 09:54:49 2002.
HTML page formatted Mon May 12 10:30:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/leaf.html


least common multiple

(definition)

Definition: The least integer which is a multiple of given integers. For instance, LCM(6, 10) = 30.

Also known as LCM.

See also greatest common divisor.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:06:26 2002.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/leastCommonMultiple.html


leftist tree

(data structure)

Definition: (no definition here, yet, but you can help.)

Implementation

merge and delete (C and Pascal) which use distance (C and Pascal), insert (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:47:03 2001.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/leftisttree.html


left rotation

(algorithm)

Definition: (1) In a binary search tree, pushing a node N down and to the left to balance the tree. N's right child replaces N, and the right child's left child becomes N's right child. (2) In an array, moving all items to the next lower location. The first item is moved to the last location, which is now vacant. (3) In a list, removing the head and inserting it at the tail.

Also known as rotate left.

See also right rotation, double left rotation, rotation.

Note: Also known as left single rotation, in contrast to double left rotation.

Author: BB

Implementation

(Pascal), (C)

More information

A great series of animations explaining rotations.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:21:23 2002.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/leftrotation.html


left single rotation

(algorithm)

Definition: See left rotation.

Author: BB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:21:23 2002.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/leftSingleRotation.html


Lempel-Ziv

(algorithm)

Definition: See Lempel-Ziv-Welch.

Author: GS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:22:41 2002.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/LempelZiv.html


Lempel-Ziv-Welch

(algorithm)

Definition: A compression algorithm that encodes strings of characters with codes of a fixed number of bits. Every new string in the input is added to a table until it is full. The codes of existing strings are output instead of the strings.

Also known as LZW compression.

See also algorithm BSTW.

Author: GS

Implementation

explanation (C)

More information

survey of data compression

J. Ziv and A. Lempel, A Universal Algorithm for Sequential Data Compression, IEEE Transactions on Information Theory, May 1977.

Terry Welch, A Technique for High-Performance Data Compression, Computer, June 1984.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:22:41 2002.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/lempelZivWelch.html


Lempel-Ziv-Welch data compression

(algorithm)

Definition: See Lempel-Ziv-Welch.

Author: GS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:22:41 2002.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/LempelZivWelchDataCompression.html


omega

(definition)

Definition: The Greek letter written as omega (see omega (n)) or upper-case Omega (see upper-case Omega (n)).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 8 10:39:21 2002.
HTML page formatted Thu Apr 17 10:49:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/letterOmega.html


level-order traversal

(algorithm)

Definition: Process all nodes of a tree by depth: first the root, then the children of the root, etc. Equivalent to a breadth-first search from the root.

See also postorder traversal, preorder traversal, tree traversal.

Note: For instance, if the "processing" is just printing, a tree is printed as "root, all children of the root, all grandchildren (children of children) of the root, etc." Here is pseudocode for an inefficient level-order traversal of a binary tree:

 levelorderAux(tree, level)
 begin
     if tree is null, return;

     if level is 1, then
         print(tree.root);
     else if level greater than 1, then
         levelorderAux(tree.left_subtree, level-1);
         levelorderAux(tree.right_subtree, level-1);
     endif
 end

 levelorder(tree)
 begin
     for d = 1 to height(tree)
         levelorderAux(tree, d);
     endfor
 end

See [Stand98, p. 251].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 6 10:28:44 2003.
HTML page formatted Thu Apr 17 10:49:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/levelOrderTraversal.html


Levenshtein distance

(definition)

Definition: See edit distance.

Author: CRC-A

Implementation

Levenshtein distance (Java, C++, Visual Basic)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:24:49 2002.
HTML page formatted Mon May 12 10:30:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/LevenshteinDistance.html


lexicographical order

(definition)

Definition: Alphabetical or "dictionary" order.

Note: For instance, ordering cities by name rather than, say, by country or population (attributes of the named entity). The exact order, for example A-Za-z vs. aA-zZ etc., depends on the locale and application.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 1 08:44:19 2003.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/lexicgrphcl.html


LIFO

(data structure)

Definition: See stack.

Author: PEB

Implementation

Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java), (Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:55:14 2003.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/lifo.html


linear

(definition)

Definition: (1) Any function which is a constant times the argument plus a constant: f(x)=c1x + c0. (2) In complexity theory, the measure of computation, m(n) (usually execution time or memory space), is bounded by a linear function of the problem size, n. More formally m(n) = O(n).

See also exponential, logarithmic, polynomial.

Note: Strictly speaking, a linear function is polynomial with the highest exponent being 1. However polynomial usually means exponents greater than 1.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 22 16:52:34 1999.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linear.html


linear congruential generator

(algorithm)

Definition: A class of algorithms that are pseudo-random number generators. The next number is generated from the current one by rn+1 = (A × rn + B) mod M, where A and B are relatively prime numbers.

Note: When implemented in software, A and B may be chosen so as to have integer overflow on nearly every step, and therefore have a less predictable sequence and avoid the mod operation. The low-order bits tend to be less random than high-order bits. This is improved by discarding some of the low-order bits. Therefore, the range of random numbers is less than the range of the integer used in the computation.

Better algorithms are available, but they are more complex.

Author: BB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jun 13 16:34:03 2002.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearCongruentGen.html


linear hash

(algorithm)

Definition: A numeric function that maintains the order of input keys while changing their spacing.

See also hash function, grid file, hash heap.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:27:37 2003.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearhash.html


linear insertion sort

(algorithm)

Definition: See insertion sort.

Author: PEB

Implementation

(Java). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting; (Scheme); explanation (C); (Fortran).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:18:36 2003.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearInsertionSort.html


linear order

(definition)

Definition: See total order.

Authors: PEB,PJT

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 25 16:41:51 2001.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearOrder.html


linear probing sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

(C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:08:17 2001.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearprbsrt.html


linear probing

(data structure)

Definition: A hash table in which a collision is resolved by putting the item in the next empty place in the array following the occupied place. Even with a moderate load factor, primary clustering tends to slow retrieval.

See also double hashing, quadratic probing.

Note: Deletion may be hard because finding collisions again relies on not creating empty spots. One solution is to mark an entry as deleted so it can be reused for insertion, but the search list is still intact.

Author: PEB

Implementation

insert (C), search (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 13:34:42 2002.
HTML page formatted Thu Apr 17 10:49:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearprobng.html


linear product

(definition)

Definition: For two vectors X and Y, and with respect to two suitable operations otimes and oplus is a vector Z=Z0 Z1 ... Zm+n where Zk= oplus i+j=kXi otimes Yj (k=0, ... , m+n).

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:53:54 2000.
HTML page formatted Mon May 12 10:30:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearprodct.html


linear program

(definition)

Definition: A problem expressible in the following form. Given an n × m real matrix A, m-vector b and n-vector c, determine minx {c · x | Ax greater than or equal to b and x greater than or equal to 0 } where x ranges over all n-vectors and the inequalities are interpreted component-wise, i.e., x greater than or equal to 0 means that the entries of x are nonnegative.

See also dual linear program.

Note: From Algorithms and Theory of Computation Handbook, page 34-18 (also pages 31-33 and 32-39), Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 10:17:26 2001.
HTML page formatted Mon May 12 10:30:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearprogrm.html


linear quadtree

(data structure)

Definition: A quadtree implemented as a single array of nodes.

Author: PEB

Implementation

Spatial Linear Quadtree with Constant Time Node Traversal (C++) including man pages, examples, etc.

More information

Quadtree ...

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 10 09:27:47 2000.
HTML page formatted Thu Apr 17 10:49:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearquadtr.html


linear search

(algorithm)

Definition: Search an array or list by checking items one at a time.

Also known as sequential search.

See also binary search, transpose sequential search, move-to-front heuristic, search, hash table.

Note: Average run time is upper-case Theta (n/2).

Author: PEB

Implementation

C

More information

expected time. Demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:44:53 2002.
HTML page formatted Thu Apr 17 10:49:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/linearSearch.html


link

(definition)

Definition: A reference, pointer, or access handle to another part of the data structure. Often, a memory address.

See also linked list, threaded tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 15 14:12:26 2000.
HTML page formatted Thu Apr 17 10:49:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/link.html


linked list

(data structure)

Definition: A list implemented by each item having a link to the next item.

Also known as singly linked list.

See also doubly linked list, skip list, ordered linked list, circular list, move-to-front heuristic.

Note: The first item, or head, is accessed from a fixed location, called a "head pointer." An ordinary linked list must be searched with a linear search. Average search time may be improved using a move-to-front heuristic in some cases. An external index, such as a hash table, inverted index, or auxiliary search tree may be used as a "cross index" to help find items quickly.

A linked list can be used to implement other data structures, such as a queue or a stack.

Author: PEB

Implementation

explanations, examples, iterators, sorting lists, etc. (C++), Kazlib (C), (C++)

More information

Tutorial, diagrams, and code (C++) of a linked list, an introduction, a Java applet demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 20 08:56:35 2003.
HTML page formatted Tue May 20 08:57:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/linkedList.html


list

(data structure)

Definition: A collection of items accessible one after another beginning at the head and ending at the tail.

See also linked list, doubly linked list, circular list, bag.

Author: PEB

Implementation

Jonathan G. Campbell's List Class (C++)

More information

Tutorial, diagrams, and code (C++) of array implementation.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:02:39 2003.
HTML page formatted Thu Apr 17 10:49:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/list.html


list contraction

(definition)

Definition: Contracting a list by removing some of the items.

Note: From Algorithms and Theory of Computation Handbook, page 47-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:53:42 2000.
HTML page formatted Mon May 12 10:30:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/listcontrctn.html


little-o notation

(definition)

Definition: A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items. Informally, saying some equation f(n) = o(g(n)) means f(n) becomes insignificant relative to g(n) as n approaches infinity. The notation is read, "f of n is little oh of g of n".

Formal Definition: f(n) = o(g(n)) means for all c > 0 there exists some k > 0 such that 0 less than or equal to f(n) < cg(n) for all n greater than or equal to k. The value of k must not depend on n, but may depend on c.

See also big-O notation, omega (n).

Note: As an example, 3n + 4 is o(n2) since for any c we can choose k > (3+ square root (9+16c))/2c. 3n + 4 is not o(n). o(f(n)) is an upper bound, but is not an asymptotically tight bound.

Strictly, the character is the lower-case Greek letter omicron.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:03:38 2002.
HTML page formatted Thu Apr 17 10:49:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/littleOnottn.html


Lm distance

(definition)

Definition: The generalized distance between two points. In a plane with point p1 at (x1, y1) and p2 at (x2, y2), it is (|x1 - x2|m + |y1 - y2|m)1/m.

See also Euclidean distance, rectilinear, Manhattan distance.

Note: This is easily generalized to higher dimensions. Euclidean distance is L2 distance. Rectilinear or Manhattan distance is L1 distance. L infinity distance is max(|x1 - x2|, |y1 - y2|). Adapted from [CLR90, page 912].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:06:41 2001.
HTML page formatted Mon May 12 10:30:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/lmdistance.html


load factor

(definition)

Definition: The number of elements in a hash table divided by the number of slots. Usually written alpha (alpha).

Note: The higher the load factor, the slower the retrieval. With open addressing, the load factor cannot exceed 1. With chaining, the load factor often exceeds 1. After [CLR90, page 224].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:06:36 2001.
HTML page formatted Thu Apr 17 10:49:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/loadfactor.html


local alignment

(definition)

Definition: The detection of local similarities among two or more strings.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:53:38 2000.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/localalgnmnt.html


locally optimal

(definition)

Definition: See local optimum.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:22:08 2002.
HTML page formatted Thu Apr 17 10:49:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/locallyOptimal.html


local optimum

(definition)

Definition: A solution to a problem that is better than all other solutions that are slightly different, but worse than the global optimum.

See also prisoner's dilemma, optimization problem.

Note: Some search methods may get trapped in a local optimum and miss the global optimum.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:22:08 2002.
HTML page formatted Thu Apr 17 10:49:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/localoptimum.html


locator

(definition)

Definition: Variable that allows access to items in a container. Typically the locator allows access to one item at a time, but the locator can be moved to the next or previous item, to the first item, etc.

Note: From Algorithms and Theory of Computation Handbook, page 4-29, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:53:28 2000.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/locator.html


logarithmic

(definition)

Definition: (1) Any function which is a constant times the logarithm of the argument: f(x)=c log x. (2) In complexity theory, when the measure of computation, m(n) (usually execution time or memory space), is bounded by a logarithmic function of the problem size, n. More formally m(n) = O( log n). (3) Sometimes imprecisely used to mean polylogarithmic.

See also linear, polynomial, exponential.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 10 08:45:25 2000.
HTML page formatted Thu Apr 17 10:49:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/logarithmic.html


longest common subsequence

(classic problem)

Definition: The problem of finding a maximum length (or maximum weight) subsequence of two or more strings.

Also known as LCS, longest common substring, heaviest common subsequence.

See also Ratcliff/Obershelp pattern recognition.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

(C and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:08:01 2002.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/longestcommn.html


longest common substring

(classic problem)

Definition: See longest common subsequence.

Author: CRC-A

Implementation

(C and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:08:01 2002.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/longestCommonSubstring.html


Lotka's law

(definition)

Definition: The number of authors making n contributions is about 1/na of those making one contribution, where a is often nearly 2.

See also Zipf's law, Benford's law, Bradford's law.

Note: A power law; often nearly an inverse square law.

Contributed by Christiane Fritze <h0444who@rz.hu-berlin.de> July 2000.

Author: PEB

More information

A short biography of Alfred James Lotka.

Alfred J. Lotka, The Frequency Distribution of Scientific Productivity, Journal of the Washington Academy of Sciences, 16(12):317-323, 1926.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 10:13:03 2003.
HTML page formatted Thu Apr 17 10:49:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/lotkaslaw.html


lower bound

(definition)

Definition: A function or growth rate below which solving a problem is impossible.

See also big-O notation.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:53:16 2000.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/lowerbound.html


lower triangular matrix

(data structure)

Definition: A matrix which is only defined at (i,j) when i less than or equal to j.

See also upper triangular matrix, strictly lower triangular matrix, ragged matrix.

Note: For example

 | j
i | 1 | - | - | -
 | 7 | 7 | - | -
 | 1 | 0 | 1 | -
 | 1 | 9 | 5 | 4

It may be more compactly represented in an array by storing entry (i,j) in location i(i-1)/2 + j (one-based indexing).

Author: PEB

Implementation

(Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 16 12:14:43 2001.
HTML page formatted Thu Apr 17 10:49:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/lowertriangm.html


lowest common ancestor

(definition)

Definition: The deepest node in a tree that is an ancestor of two given leaves.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:53:01 2000.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/lowestcommon.html


l-reduction

(definition)

Definition: A Karp reduction that preserves approximation properties of optimization problems.

See also NP-complete, Turing reduction, Cook reduction, many-one reduction, polynomial-time reduction.

Note: From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:52:57 2000.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/lreduction.html


lucksort

(algorithm)

Definition: See lucky sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:14:02 2003.
HTML page formatted Thu Apr 17 10:49:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/lucksort.html


lucky sort

(algorithm)

Definition: The best possible sort algorithm: it is so lucky that the input is already sorted, and it need do nothing!

See also bogosort, bozo sort, stooge sort.

Note: Defined more for humorous, rather than serious, purposes.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:14:02 2003.
HTML page formatted Thu Apr 17 10:49:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/luckySort.html


LZW compression

(algorithm)

Definition: See Lempel-Ziv-Welch.

Author: GS

Implementation

explanation (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:22:41 2002.
HTML page formatted Thu Apr 17 10:49:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/LZWCompression.html


Malhotra-Kumar-Maheshwari blocking flow

(algorithm)

Definition: Given a flow function and its corresponding residual graph (a maximum-flow problem), select a vertex with the least throughput and greedily push the maximum flow from it to the sink. This is repeated until all vertices are deleted.

Note: From Algorithms and Theory of Computation Handbook, page 7-13, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 30 08:50:24 2001.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/malhotraKumr.html


Manhattan distance

(definition)

Definition: The distance between two points measured along axes at right angles. In a plane with p1 at (x1, y1) and p2 at (x2, y2), it is |x1 - x2| + |y1 - y2|.

See also Euclidean distance, Lm distance.

Note: This is easily generalized to higher dimensions. Manhattan distance is often used in integrated circuits where wires only run parallel to the X or Y axis.

Also known as rectilinear distance.

Author: PEB

More information

Weisstein's World of Math calls it taxicab metric

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 19 11:07:33 2003.
HTML page formatted Mon May 19 11:13:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/manhattanDistance.html


many-one reduction

(definition)

Definition: A reduction that maps an instance of one problem into an equivalent instance of another problem.

See also NP-complete, Turing reduction, Cook reduction, Karp reduction, l-reduction, polynomial-time reduction.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:52:45 2000.
HTML page formatted Mon May 12 10:30:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/manyonerdctn.html


Markov chain

(data structure)

Definition: A finite state machine with probabilities for each transition, that is, a probability that the next state is sj given that the current state is si.

See also hidden Markov model.

Note: Equivalently, a weighted, directed graph in which the weights correspond to the probability of that transition. In other words, the weights are nonnegative and the total weight of outgoing edges is positive. If the weights are normalized, the total weight, including self-loops, is 1. After [Leda98].

Author: PEB

Implementation

Use Markov chains to generate random text (clisp) and in (C).

More information

Named after Andrei Andreyevich Markov (1856 - 1922), who studied poetry and other texts as stochastic sequences of characters. Implementations come from Jon Bentley's "Programming Pearls" and Dr. Dobb's Journal, April 2001.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 4 10:11:12 2002.
HTML page formatted Thu Apr 17 10:49:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/markovchain.html


Marlena

(definition)

Definition: A wonderful wife. Every man should have such an incredible wife. We got married in 1976, too, and life's only gotten better.

Note: After Harry Newton "Newton's Telecom Dictionary" (Miller Freeman, New York, 1999).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:00:26 2003.
HTML page formatted Thu Apr 17 10:49:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/marlena.html


Master theorem

(definition)

Definition: A theorem giving a solution in asymptotic terms for recurrence relations of the form T(n) = aT(n/b) + f(n) where a greater than or equal to 1 and b > 1 are constants and n/b means either floor( n/b ) or ceiling( n/b ).

Author: SKS

More information

Details

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:24:08 2001.
HTML page formatted Thu Apr 17 10:49:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/mastertheorm.html


matched edge

(definition)

Definition: An edge which is in a matching.

See also free edge, matched vertex.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 23 12:16:47 1999.
HTML page formatted Thu Apr 17 10:49:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/matchededge.html


matched vertex

(definition)

Definition: A vertex on an matched edge in a matching, or, one which has been matched.

See also free vertex.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 23 12:15:48 1999.
HTML page formatted Thu Apr 17 10:49:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/matchedvertx.html


matching

(definition)

Definition: (1) A subgraph in which every vertex has a degree at most one. In other words, no two edges share a common vertex. (2) The problem of finding such a subgraph.

See also string matching, perfect matching, free edge, matched edge, free vertex, matched vertex.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

(Fortran, C, C++, and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 10:42:21 2003.
HTML page formatted Mon May 12 10:30:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/matching.html


matrix

(data structure)

Definition: A two-dimensional array. By convention, the first index is the row, and the second index is the column.

See also square matrix, rectangular matrix, sparse matrix, lower triangular matrix, upper triangular matrix, ragged matrix, uniform matrix.

Note: Often implemented as an array.

Author: PEB

Implementation

(Fortran), (C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 15:47:25 2001.
HTML page formatted Thu Apr 17 10:49:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/matrix.html


matrix-chain multiplication problem

(classic problem)

Definition: Given a sequence of matrices such that any matrix may be multiplied by the result of multiplying all the matrices before it, find the best parenthesizing such that the result is obtained with the minimum number of arithmetic operations. One may use dynamic programming to find the best parenthesizing.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jul 11 11:51:03 2000.
HTML page formatted Thu Apr 17 10:49:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/matrxchnmltp.html


max

(definition)

Definition: Short for maximum.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 17 12:16:08 1999.
HTML page formatted Thu Apr 17 10:49:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/max.html


max-heap property

(definition)

Definition: Each node in a tree has a key which is less than or equal to the key of its parent.

See also min-heap property, heap property.

Note: The root node has the largest key. After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 11 16:23:18 1999.
HTML page formatted Thu Apr 17 10:49:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/maxheapprop.html


maximally connected component

(definition)

Definition: A connected subgraph of a graph to which no vertex can be added and it still be connected.

Formal Definition: Given a graph G=(V, E), a subgraph S=(V', E') is a maximally connected component if

  • S is connected, and
  • for all vertices u such that u in V and u not in V' there is no vertex v in V' for which (u, v) in E.

See also connected graph, connected components, biconnected component, strongly connected component.

Note: Informally, (one of) the biggest connected subgraph(s) of a graph. Also know as "connected component", with the "maximal" property understood.

Author: AL

More information

(C++, C, Pascal, Mathematica, and Fortran)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 13:24:40 2002.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/maximallyConnectedComponent.html


Maximal Shift

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:04:52 2003.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/maximalshift.html


maximum bipartite matching

(definition)

Definition: See bipartite matching.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:55:31 2002.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/maximumBipartiteMatching.html


maximum-flow problem

(classic problem)

Definition: The problem of finding the maximum flow between any two vertices of a graph.

Also known as network flow problem.

See also flow network, Malhotra-Kumar-Maheshwari blocking flow, Ford-Fulkerson method.

Note: After [CLR90, page 580].

Author: PEB

Implementation

description and links to implementations (C, Fortran, C++, Pascal, and Mathematica)

More information

OR-Notes on network flow, including maximum-flow problem.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:37:19 2001.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/maximumflow.html


maximal independent set

(classic problem)

Definition: A set of vertices in a graph such that for any pair of vertices, there is no edge between them and such that no more vertices can be added and it still be an independent set.

Note: It is NP-complete to decide if there is maximal independent set of size k in a graph.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:15:58 2000.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/maxmlndpndnt.html


MAX-SNP

(definition)

Definition: The class of problems having constant-factor approximation algorithms, but no approximation schemes unless P=NP.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:52:23 2000.
HTML page formatted Mon May 12 10:30:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/MAXSNP.html


MBB

(definition)

Definition: See minimum bounding box.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:09:29 2002.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/mbb.html


Mealy machine

(definition)

Definition: A finite state machine which produces an output for each transition.

See also Moore machine.

Author: PEB

More information

George H. Mealy, A method for synthesizing sequential circuits, Bell System Technical Journal, 34(5):1045-1079, 1955.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 26 11:47:37 2001.
HTML page formatted Thu Apr 17 10:49:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/mealyMachine.html


mean

(definition)

Definition: The (arithmetic) mean of some values is the sum of all values divided by the number of values.

See also median, mode, midrange.

Note: The mean of 1, 1, 3, 50, and 60 is 23 (1 + 1 + 3 + 50 + 60 / 5 = 23).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 2 11:15:00 2001.
HTML page formatted Thu Apr 17 10:49:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/mean.html


median

(definition)

Definition: The value which has an equal number of values greater and less than it. For an even number of values, it is the mean of the two middle values.

See also mean, mode, midrange, Select, select and partition.

Note: The median is the "middle" value. The median of 1, 1, 3, 50, and 60 is 3 since two elements (1 and 1) are less than it and two elements (50 and 60) are greater. The median of 1, 1, 2, 3, 3, and 4 is 2.5, the mean of 2 and 3.

Author: PEB

Implementation

find median (Pascal and C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 31 13:28:07 2002.
HTML page formatted Thu Apr 17 10:49:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/median.html


meld

(definition)

Definition: Joining several data structures with particular properties into one large data structure having those properties. For instance, some priority queue implementations support the operation of joining two priority queues into a larger one.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 17 12:21:12 1999.
HTML page formatted Thu Apr 17 10:49:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/meld.html


memoization

(algorithmic technique)

Definition: An algorithmic technique which saves (memoizes) a computed answer for later reuse, rather than recomputing the answer.

See also dynamic programming.

Note: The term comes from "memo": "A short note written as a reminder." [The American Heritage Dictionary of the English Language, © 1970, American Heritage Publishing]

A naive program to compute Fibonacci numbers is

 fib(n) {
    if n is 1 or 2, return 1;
    return fib(n-1) + fib(n-2);
 }
Because fib() is recomputed over and over for the same argument, run time for the above is upper-case Omega (1.6n). If instead we memoize (save) the value of fib(n) the first time we compute it, the run time is upper-case Theta (n).
 allocate array for memo;
 initialize memo[1] and memo[2] to 1;

 fib(n) {
    if memo[n] is not zero, return memo[n];
    memo[n] = fib(n-1) + fib(n-2);
    return memo[n];
 }

Of course, computing Fibonacci numbers can be easily done in constant time (see Fibonacci numbers), but this illustrates the technique.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jul 10 12:11:35 2002.
HTML page formatted Thu Apr 17 10:49:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/memoize.html


memoize

(algorithmic technique)

Definition: See memoization.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jul 10 12:11:35 2002.
HTML page formatted Thu Apr 17 10:49:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/memoizeI.html


merge

(definition)

Definition: Combine two or more sorted sequences of data into a single sorted sequence.

Formal Definition: The input is two sequences, A={a1, ..., an} and B={b1, ..., bm}, each sorted according to some total order, less than or equal to. The output is a single sequence, merge(A,B), which is a sorted permutation of {a1, ..., an, b1, ..., bm}.

merge(A, B) is

  1. A, if B is empty,
  2. B, if A is empty,
  3. {a1}.merge({a2, ..., an}, B) if a1 <= b1, and
  4. {b1}.merge(A, {b2, ..., bm}) otherwise.
The symbol "." stands for concatenation, for example, {a1, ..., an}.{b1, ..., bm} = {a1, ..., an, b1, ..., bm}.

Formalization by Mustafa Ege <ege@eti.cc.hun.edu.tr>.

See also simple merge, ideal merge, optimal merge, two-way merge sort, three-way merge sort, k-way merge sort, balanced merge sort, nonbalanced merge sort.

Author: ASK

Implementation

(Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 16:18:33 2003.
HTML page formatted Thu Apr 17 10:49:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/merge.html


merge sort

(algorithm)

Definition: A sort algorithm which splits the items to be sorted into two groups, recursively sorts each group, and merges them into a final, sorted sequence. Run time is upper-case Theta (n log n).

Also known as sort merge.

See also divide and conquer, balanced k-way merge sort, polyphase merge sort, external sort, bitonic sort.

Author: PEB

Implementation

demonstration (Java); recurrence relation analysis and demonstration (Java); explanation (C); (C) which needs list merge (C) or array merge (C), (Pascal)which needs list merge (Pascal) or array merge (Pascal); (Java); Demo and code of in-place and double merge sort (Java); Worst-case behavior annotated for real time (WOOP/ADA), including bibliography. Sohail Somani's (C++), (Scheme). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting.

More information

demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 4 13:13:44 2003.
HTML page formatted Wed Jun 4 13:25:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/mergesort.html


mergesort

(algorithm)

Definition: See merge sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 4 13:13:44 2003.
HTML page formatted Wed Jun 4 13:25:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/mergesortI.html


meromorphic function

(definition)

Definition: A function that is analytic, except for a finite number of poles (at which the function ceases to be defined).

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:52:19 2000.
HTML page formatted Mon May 12 10:30:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/meromorphic.html


metaheuristic

(algorithmic technique)

Definition: A state space search that looks for better solutions by changing a current set of solutions, for instance, genetic algorithms or simulated annealing.

See also optimization problem.

Author: PEB

More information

The Metaheuristic research group.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 09:28:36 2003.
HTML page formatted Fri May 23 12:52:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/metaheuristic.html


metaphone

(algorithm)

Definition: An algorithm to code English words phonetically by reducing them to 16 consonant sounds. A better variant is double metaphone.

See also Jaro-Winkler, NYSIIS, soundex, edit distance.

Author: PEB

Implementation

Metaphone and double metaphone (Basic, C, Perl, and C++), double metaphone, zip'd (C++), (C, Basic), (Java), (Java).

More information

A Better Phonetic Lookup

Andrew Binstock and John Rex. Metaphone: A Modern Soundex. Practical Algorithms For Programmers. Addison-Wesley, 1995 pages 160-169.

Gary Parker. A Better Phonetic Search. C Gazette, Vol. 5, No. 4 (June/July), 1990.

Lawrence Philips. Hanging on the Metaphone. Computer Language, Vol. 7, No. 12 (December), 1990.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:36:36 2002.
HTML page formatted Thu Apr 17 10:49:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/metaphone.html


midrange

(definition)

Definition: The sum of the maximum and minimum values, divided by two.

See also mean, median, mode.

Note: The midrange of 1, 1, 3, 50, and 60 is 30.5 (1 + 60 / 2 = 30.5).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 22 10:40:11 2002.
HTML page formatted Thu Apr 17 10:49:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/midrange.html


Miller-Rabin

(algorithm)

Definition: A heuristic test for prime numbers. It repeatedly checks if the number being tested, n, is pseudoprime to a randomly chosen base, a, and there are only trivial square roots of 1, modulo n. In other words, n is surely composite if an-1 not equal to 1 (mod n), where 0 < a < n. Some composites may be incorrectly judged to be prime.

Note: For k repetitions, the chance of incorrectly judging an odd integer greater than 2 to be prime is 2-k. For randomly chosen large integers, a small number of repetitions, say 3, is enough. After [CLR90, pp 838-844].

Author: PEB

Implementation

Frederic Raynal's Miller-Rabin Primality test (pseudo-code) pages, with mathematical background, implementation, demonstration, etc. Explanation and code (C) in Pete Emerson's thesis.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 3 09:49:04 2002.
HTML page formatted Thu Apr 17 10:49:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/millerRabin.html


Miller-Rabin probabilistic primality test

(algorithm)

Definition: See Miller-Rabin.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 3 09:49:04 2002.
HTML page formatted Thu Apr 17 10:49:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/MillerRabinProbabilisticPrimalityTest.html


min

(definition)

Definition: Short for minimum, minimal, etc.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jul 6 08:40:47 2000.
HTML page formatted Thu Apr 17 10:49:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/min.html


min-heap property

(definition)

Definition: Each node in a tree has a key which is greater than or equal to the key of its parent.

See also max-heap property, heap property.

Note: After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 11 16:23:13 1999.
HTML page formatted Thu Apr 17 10:49:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/minheapprop.html


minimal antichain decomposition

(definition)

Definition: A decomposition of a poset into the minimum possible number of antichains.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:52:04 2000.
HTML page formatted Mon May 12 10:30:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimalntchn.html


minimal perfect hashing

(algorithm)

Definition: A perfect hashing function that maps each different key to a distinct integer and has the same number of possible integers as keys. Formally, given a set of N keys, the size of the range is N.

See also order preserving minimal perfect hashing.

Note: After BJ.

Author: PEB

Implementation

Description and code for minimal perfect hashing (C), mph: minimal perfect hash function generator (C), gperf: near minimal perfect hashing (C++),
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 30 11:54:50 2002.
HTML page formatted Thu Apr 17 10:49:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimalPerfectHash.html


minimum path cover

Definition: (no definition here, yet, but you can help.)

Note: of a digraph

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:49:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimmpthcvr.html


minimum bounding box

(definition)

Definition: The smallest rectangle completely enclosing a set of points.

Also known as MBB.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:09:29 2002.
HTML page formatted Thu Apr 17 10:49:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimumBoundingBox.html


minimum code spanning tree

(definition)

Definition: See minimum spanning tree.

Author: JLG

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:49:54 2003.
HTML page formatted Fri May 23 12:52:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimumCodeSpanningTree.html


minimum cost spanning tree

(definition)

Definition: See minimum spanning tree.

Author: JLG

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:49:54 2003.
HTML page formatted Fri May 23 12:52:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimumCostSpanningTree.html


minimum cut

(definition)

Definition: The smallest set of edges in an undirected graph which separate two distinct vertices. That is, every path between them includes some member of the set.

See also minimum vertex cut, cut.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:10:39 2000.
HTML page formatted Thu Apr 17 10:49:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimumcut.html


minimum spanning tree

(definition)

Definition: A minimum-weight tree in a weighted graph which contains all of the graph's vertices.

Also known as MST, shortest spanning tree, SST.

See also Kruskal's algorithm, Prim's algorithm, Steiner minimum tree, spanning tree, arborescence, similar problems: all pairs shortest path, traveling salesman.

Note: A minimum spanning tree can be used to quickly find a near-optimal solution to the traveling salesman problem.

The term "shortest spanning tree" may be more common in the field of operations research.

Author: JLG

Implementation

(C++, Pascal, Fortran, C, and Mathematica)

More information

OR-Notes on graph theory, including minimum spanning trees.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:49:54 2003.
HTML page formatted Fri May 23 12:52:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/minimumSpanningTree.html


minimum vertex cut

(definition)

Definition: The smallest set of vertices in an undirected graph which separate two distinct vertices. That is, every path between them passes through some member of the cut.

See also minimum cut.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:15:50 2000.
HTML page formatted Thu Apr 17 10:49:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/minvertexcut.html


mixed integer linear program

(definition)

Definition: A linear program with additional constraints that some of the variables must take on integer values. Solving such problems is NP-hard.

See also integer linear program.

Note: From Algorithms and Theory of Computation Handbook, pages 32-39 and 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:52:00 2000.
HTML page formatted Mon May 12 10:30:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/mixedinteger.html


mode

(definition)

Definition: The value which occurs most often. If no value is repeated, there is no mode. If more than one value occurs with the same greatest frequency, each value is a mode.

See also median, mean, midrange.

Note: The mode of 1, 1, 3, 50, and 60 is 1 since it occurs twice and all the other values occur once. The set {1, 1, 2, 3, 3, 4} has two modes, 1 and 3, and is called bimodal. If there are more than two modes, it is multimodal.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 2 11:14:33 2001.
HTML page formatted Thu Apr 17 10:49:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/mode.html


model checking

(algorithm)

Definition: Efficiently deciding whether a temporal logic formula is satisfied in a finite state machine model.

See also Kripke structure.

Note: Model checking is increasingly used in the formal verification of hardware and software. The decision process often uses some form of binary decision diagrams (BDDs).

Author: SKS

Implementation

The SMV model checker.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 22 16:33:40 1999.
HTML page formatted Thu Apr 17 10:49:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/modelcheckng.html


model of computation

(definition)

Definition: A formal, abstract definition of a computer. Using a model one can more easily analyze the intrinsic execution time or memory space of an algorithm while ignoring many implementation issues. There are many models of computation which differ in computing power (that is, some models can perform computations impossible for other models) and the cost of various operations.

See also Turing machine, random access machine, big-O notation, primitive recursive, cellular automaton, finite state machine, cell probe model, pointer machine, alternation, alternating Turing machine, nondeterministic Turing machine, oracle Turing machine, probabilistic Turing machine, universal Turing machine, multiprocessor model, work-depth model, parallel random-access machine, quantum computation.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 19 16:09:34 2000.
HTML page formatted Thu Apr 17 10:49:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/modelofcompu.html


moderately exponential

(definition)

Definition: The measure of computation, m(n) (usually execution time or memory space), is more than any polynomial nk, but less than any exponential cn where c > 1. Formally, m(n) is of moderately exponential growth if for all k > 0 m(n)= upper-case Omega (nk) and for all epsilon > 0 m(n)=o((1+ epsilon)n).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 1 15:56:03 2000.
HTML page formatted Thu Apr 17 10:49:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/moderatexpon.html


MODIFIND

(algorithm)

Definition: An algorithm to select the kth smallest element of an array and partition the array around it. It partitions around the value of the kth element until one boundary passes element k. If either boundary does not pass element k, that boundary is moved and it partitions again.

See also select and partition, Find, Select.

Note: This does fewer swaps than Find.

Author: PEB

Implementation

analysis and comparison (Rexx)

More information

Vladimir Zabrodsky, MODIFIND, Elektronika, No. 6, pp 33-34, 1992

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 25 14:43:24 2001.
HTML page formatted Thu Apr 17 10:49:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/modifind.html


monotonically decreasing

(definition)

Definition: A function from a partially order domain to a partially ordered range such that x greater than or equal to y implies f(x) less than or equal to f(y).

See also monotonically increasing, strictly decreasing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 15:22:04 1999.
HTML page formatted Thu Apr 17 10:49:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/monotoncdecr.html


monotonically increasing

(definition)

Definition: A function from a partially order domain to a partially ordered range such that x greater than or equal to y implies f(x) greater than or equal to f(y).

See also monotonically decreasing, strictly increasing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 15:21:48 1999.
HTML page formatted Thu Apr 17 10:49:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/monotoncincr.html


monotone priority queue

(data structure)

Definition: A priority queue in which a key being inserted is never higher in priority than a previously deleted node.

Note: The keys deleted from a monotone priority queue form a monotonically increasing or monotonically decreasing sequence -- hence the name. After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 11 16:22:55 1999.
HTML page formatted Thu Apr 17 10:49:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/monotonprioq.html


Monte Carlo algorithm

(definition)

Definition: A randomized algorithm that may produce incorrect results, but with bounded error probability.

See also Las Vegas algorithm, heuristic, RP.

Note: From Algorithms and Theory of Computation Handbook, 15-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 14:40:27 2002.
HTML page formatted Mon May 12 10:30:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/monteCarlo.html


Moore machine

(definition)

Definition: A finite state machine which produces an output for each state.

See also Mealy machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 09:00:25 2000.
HTML page formatted Thu Apr 17 10:49:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/mooreMachine.html


Morris-Pratt

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:04:48 2003.
HTML page formatted Thu Apr 17 10:49:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/morrispratt.html


move

(definition)

Definition: See transition.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 15 09:49:26 2002.
HTML page formatted Thu Apr 17 10:49:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/move.html


move-to-front heuristic

(algorithm)

Definition: A heuristic that moves the target of a search to the head of a list so it is found faster next time.

See also move-to-root heuristic, transpose sequential search.

Note: This technique speeds up linear search performance only if the target item is likely to be searched for again soon.

Author: PEB

Implementation

Discussion and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:31:25 2003.
HTML page formatted Thu Apr 17 10:49:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/movefront.html


move-to-root heuristic

(algorithm)

Definition: A heuristic that moves the target of a search to the root of the search tree so it is found faster next time.

See also move-to-front heuristic, splay tree.

Note: This technique speeds up search performance only if the target item is likely to be searched for again soon.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 12:59:05 2002.
HTML page formatted Thu Apr 17 10:49:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/movetoroot.html


MST

(definition)

Definition: See minimum spanning tree.

Author: JLG

Implementation

(C++, Pascal, Fortran, C, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:49:54 2003.
HTML page formatted Fri May 23 12:52:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/mst.html


multi-commodity flow

(definition)

Definition: A maximum-flow problem involving multiple commodities, in which each commodity has an associated demand and source-sink pairs.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:16:03 2002.
HTML page formatted Mon May 12 10:30:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/multicommdty.html


multigraph

(data structure)

Definition: A graph whose edges are unordered pairs of vertices, and the same pair of vertices can be connected by multiple edges.

See also hypergraph, undirected graph.

Note: The edges are a bag, not a set.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 2 14:27:26 2001.
HTML page formatted Thu Apr 17 10:49:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/multigraph.html


multilayer grid file

(data structure)

Definition: A spatial access method which is two or more simultaneous grid files. Objects reside in the first grid file where it doesn't have to be split across hyperplanes.

See also twin grid file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:36:30 2001.
HTML page formatted Thu Apr 17 10:49:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/multilaygrd.html


multiplicative hashing

(algorithm)

Definition: See multiplication method.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 12:09:01 2003.
HTML page formatted Thu Apr 17 10:49:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiplicativeHashing.html


multiprefix

(algorithm)

Definition: A generalization of scan in which the partial sums are grouped by keys.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:51:45 2000.
HTML page formatted Mon May 12 10:30:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiprefix.html


multiprocessor model

(definition)

Definition: A model of parallel computation based on a set of communicating sequential processors.

See also Turing machine, work-depth model.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:51:39 2000.
HTML page formatted Mon May 12 10:30:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiprocssr.html


multiset

(definition)

Definition: See bag.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 6 09:43:53 2002.
HTML page formatted Thu Apr 17 10:49:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiset.html


multi suffix tree

(data structure)

Definition: A suffix tree extended to multiple strings by concatenating the strings.

Author: SE

More information

Multi Suffix Trees and Patricia Trees

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 11 14:53:50 1999.
HTML page formatted Thu Apr 17 10:49:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/multisufxtre.html


multiway decision

(definition)

Definition: A decision which has more than two results. For instance, testing if a < b yields two results, but some languages allow a test to return a < b, a=b, or a > b in one operation.

Note: The standard library function strcmp() in C returns -1, 0, or 1 depending on whether one is less than, equal to, or greater than the other.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 26 15:55:45 2000.
HTML page formatted Thu Apr 17 10:49:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiwayDecision.html


multiway merge

(definition)

Definition: To combine more than two sorted data streams into a single sorted stream.

See also k-way merge sort, order, merge.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 9 11:57:54 1999.
HTML page formatted Thu Apr 17 10:49:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiwaymrg.html


multiway search tree

(data structure)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 25 17:43:22 1999.
HTML page formatted Thu Apr 17 10:49:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiwaySearchTree.html


multiway tree

(definition)

Definition: A tree with any number of children for each node.

See also binary tree, k-ary tree, B-tree.

Note: A typical implementation is to have a list of child nodes at each node, rather than a fixed number of children. A more elaborate implementation is to have a fixed number of children, to handle most nodes efficiently, and a linked list for those rare nodes that have more children.

Author: PEB

More information

explanation and example

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:44:36 2002.
HTML page formatted Thu Apr 17 10:49:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/multiwaytree.html


multiplication method

(algorithm)

Definition: A hash function that uses the first p bits of the key times an irrational number.

Formal Definition: h(k) = floor( m(k A (mod 1)) ), where m is usually an integer 2p and A is an irrational number (or an approximation thereto) 0 < A < 1. The modulo 1 operation removes the integer part of k × A.

Author: PEB

More information

explanation, example, and guide to choosing A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 12:09:01 2003.
HTML page formatted Thu Apr 17 10:49:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/multplctnmth.html


naive string search

(algorithm)

Definition: See brute force string search.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:09:05 2003.
HTML page formatted Thu Apr 17 10:49:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/naiveStringSearch.html


nand

(definition)

Definition: Negated conjunction: 0 AND 0 = 1, 0 AND 1 = 1, 1 AND 0 = 1, 1 AND 1 = 0.

See also and, not, or.

Note: NAND is equivalent to AND followed by NOT. It is of particular interest because all possible boolean functions can be built with combinations of NANDs, and a NAND gate is easily built.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 14:59:11 1999.
HTML page formatted Thu Apr 17 10:49:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/nand.html


n-ary function

(definition)

Definition: (1) A function with exactly n arguments. (2) A function which takes any number of arguments, or a variable number of arguments.

See also constant function, unary function, binary function, trinary function.

Note: By analogy with unary, binary, etc.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 16 09:20:46 1999.
HTML page formatted Thu Apr 17 10:49:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/naryfunc.html


NC

(definition)

Definition: The complexity class of all languages L that are decidable in polylogarithmic parallel time and polynomial processors.

See also P.

Note: From Algorithms and Theory of Computation Handbook, page 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 10 13:41:53 2001.
HTML page formatted Mon May 12 10:30:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/nc.html


NC many-one reducibility

(definition)

Definition: A language L is NC many-one reducible or NC reducible to L', written L less than or equal to mNC L' if there is a function f in FNC such that x in L if and only if f(x) in L'.

Note: From Algorithms and Theory of Computation Handbook, page 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:51:31 2000.
HTML page formatted Mon May 12 10:30:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/nCmanyone.html


nearest neighbor

(classic problem)

Definition: Find the point (rectangle, line, etc.) that is closest to another point.

See also spatial access method, point access method.

Author: PEB

Implementation

(C, C++, and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 5 13:00:23 2002.
HTML page formatted Thu Apr 17 10:49:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/nearestNeighbor.html


negation

(definition)

Definition: The negation of 0 is 1; the negation of 1 is 0.

See also not.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 29 09:27:33 2000.
HTML page formatted Thu Apr 17 10:49:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/negation.html


network flow

(definition)

Definition: See flow function.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:16:15 2002.
HTML page formatted Mon May 12 10:30:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/networkFlow.html


network flow problem

(classic problem)

Definition: See maximum-flow problem.

Author: PEB

Implementation

description and links to implementations (C, Fortran, C++, Pascal, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:37:19 2001.
HTML page formatted Thu Apr 17 10:49:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/networkFlowProblem.html


next state

(definition)

Definition: The state immediately following the current state, defined by the transition function of a finite state machine and the input.

See also Turing machine.

Author: LH

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 15 09:29:21 2002.
HTML page formatted Thu Apr 17 10:49:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/nextstate.html


NFA

(definition)

Definition: See nondeterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 17 11:03:47 2001.
HTML page formatted Thu Apr 17 10:49:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/nfa.html


NFTA

(definition)

Definition: See nondeterministic finite tree automaton.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:13:45 2002.
HTML page formatted Thu Apr 17 10:49:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/nfta.html


NIST

(definition)

Definition: The United States National Institute of Standards and Technology.

Author: PEB

More information

home page

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 10 12:55:44 1999.
HTML page formatted Thu Apr 17 10:49:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/nist.html


node

(definition)

Definition: (1) A unit of reference in a data structure. Also called a vertex in graphs and trees. (2) A collection of information which must be kept at a single memory location.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 29 14:16:10 2000.
HTML page formatted Thu Apr 17 10:49:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/node.html


nonbalanced merge

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also nonbalanced merge sort.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 30 10:29:17 1999.
HTML page formatted Thu Apr 17 10:49:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/nonbalancedMerge.html


nonbalanced merge sort

(algorithm)

Definition: A k-way merge sort in which the number of input and output data streams is different for any particular pass. Typically P input streams are merged and distributed to T output streams on one pass followed by a merge of the T inputs and distribution to P outputs.

See also merge sort, simple merge, balanced merge sort.

Author: ASK

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 16:02:46 2003.
HTML page formatted Thu Apr 17 10:49:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/nonbalncmsrt.html


nondeterministic finite state machine

(definition)

Definition: A finite state machine whose transition function maps inputs symbols and states to a (possibly empty) set of next states. The transition function also may map the null symbol (no input symbol needed) and states to next states.

Also known as NFA, nondeterministic finite automaton.

See also deterministic finite state machine.

Note: Any such machine may be converted to a deterministic finite state machine, although the number of states may increase by an exponential amount.

Thanks to Thorsten Jens (thojens@gmx.de) and Yaacov Yesha (yayesha@cs.umbc.edu) for correcting this entry. 17 January 2001.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 17 11:03:47 2001.
HTML page formatted Thu Apr 17 10:49:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondetermFiniteStateMach.html


nondeterministic finite tree automaton

(definition)

Definition: A nondeterministic finite state machine that accepts finitary trees rather than just strings. The tree nodes are marked with the letters of the alphabet of the automaton, and the transition function encodes the next states for each branch of the tree. The acceptance condition is modified accordingly.

Also known as NFTA.

See also deterministic finite tree automaton, nondeterministic tree automaton.

Author: SKS

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:13:45 2002.
HTML page formatted Thu Apr 17 10:49:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondetermFiniteTreeAutom.html


nondeterministic

(definition)

Definition: Permitting more than one choice of next move at some step in a computation.

See also deterministic.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:51:22 2000.
HTML page formatted Mon May 12 10:30:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondeterministic.html


nondeterministic finite automaton

(definition)

Definition: See nondeterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 17 11:03:47 2001.
HTML page formatted Thu Apr 17 10:49:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondeterministicFiniteAutomaton.html


nondeterministic polynomial time

(definition)

Definition: See NP.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:41:23 2002.
HTML page formatted Thu Apr 17 10:49:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondeterministicPolynomialTime.html


nondeterministic tree automaton

(definition)

Definition: A nondeterministic finite state machine that accepts infinite trees rather than just strings. The tree nodes are marked with the letters of the alphabet of the automaton, and the transition function encodes the next states for each branch of the tree. The expressive power of such automata varies depending on the acceptance conditions of the trees.

See also nondeterministic finite tree automaton.

Author: SKS

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:14:06 2002.
HTML page formatted Thu Apr 17 10:49:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondetermTreeAutom.html


nondeterministic algorithm

(algorithmic technique)

Definition: (no definition here, yet, but you can help.)

See also deterministic algorithm.

Note: this doesn't mean random, rather a magical ability to forsee (choose) the right thing

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 19 08:59:56 1999.
HTML page formatted Thu Apr 17 10:49:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondetrmalgo.html


nondeterministic Turing machine

(definition)

Definition: A Turing machine which has more than one next state for some combinations of contents of the current cell and current state. An input is accepted if any move sequence leads to acceptance.

See also alternating Turing machine, oracle Turing machine, probabilistic Turing machine, universal Turing machine.

Note: A nondeterministic Turing machine is a probabilistic Turing machine ignoring the probabilities.

From Algorithms and Theory of Computation Handbook, page 24-9, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 14:02:34 2002.
HTML page formatted Mon May 12 10:30:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/nondetrmtur.html


nonterminal node

(definition)

Definition: See internal node.

Authors: LJW,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 12:02:29 2002.
HTML page formatted Thu Apr 17 10:49:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/nonterminalNode.html


nor

(definition)

Definition: Negated disjunction: 0 NOR 0 = 1, 0 NOR 1 = 0, 1 NOR 0 = 0, 1 NOR 1 = 0.

Note: NOR is equivalent to OR followed by NOT. It is of interest because all possible boolean functions can be built with combinations of NORs.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 14:59:50 1999.
HTML page formatted Thu Apr 17 10:49:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/nor.html


not

(definition)

Definition: Negation: NOT 0 = 1, NOT 1 = 0. Also known as complement.

See also and, or.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:02:33 2001.
HTML page formatted Thu Apr 17 10:49:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/not.html


Not So Naive

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:04:42 2003.
HTML page formatted Thu Apr 17 10:49:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/notsonaive.html


NP

(definition)

Definition: The complexity class of decision problems for which answers can be checked by an algorithm whose run time is polynomial in the size of the input. Note that this doesn't require or imply that an answer can be found quickly, only that any claimed solution can be verified quickly. "NP" is the class that a Nondeterministic Turing machine accepts in Polynomial time.

Also known as nondeterministic polynomial time.

See also P, NP-complete, NP-hard, coNP, RP, ZPP, BPP, big-O notation.

Note: For instance, a "yes" answer to the question, "is there a Hamiltonian cycle, or tour, of a certain graph?" can be quickly checked given a certificate for the answer. We can quickly check that the path which is the certificate, indeed, starts and ends at the same vertex, contains every other vertex exactly once, and only uses valid edges. Another example is that a purported sorting of an input can be verified in O(n log n). This can be done by sorting the input (again), then comparing it with the purported sorting.

Being in NP doesn't require that a negative answer, e.g. "there is no tour", can be quickly checked.

Author: PEB

More information

History, definitions, examples, etc. given in Comp.Theory FAQ, scroll down to P vs. NP. Wikipedia entry on Complexity classes P and NP.

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:41:23 2002.
HTML page formatted Thu Apr 17 10:49:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/np.html


NPC

(definition)

Definition: See NP-complete.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 12 11:03:54 2003.
HTML page formatted Mon May 12 11:08:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/npc.html


NP-complete

(definition)

Definition: The complexity class of decision problems for which answers can be checked for correctness, given a certificate, by an algorithm whose run time is polynomial in the size of the input (that is, it is NP) and no other NP problem is more than a polynomial factor harder. Informally, a problem is NP-complete if answers can be verified quickly, and a quick algorithm to solve this problem can be used to solve all other NP problems quickly.

See also NP-hard, P, AP.

Note: A trivial example of NP, but (presumably) not NP-complete is finding the bitwise AND of two strings of N boolean bits. The problem is NP, since one can quickly (in time upper-case Theta (N)) verify that the answer is correct, but knowing how to AND two bit strings doesn't help one quickly find, say, a Hamiltonian cycle or tour of a graph. So bitwise AND is not NP-complete (as far as we know).

Author: PEB

Implementation

Stas Busygin's NP-Completeness Page with QUALEX and SAT01 (C++).

More information

History, definitions, examples, etc. given in Comp.Theory FAQ, scroll down to P vs. NP. A compendium of NP optimization problems.

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 12 11:03:54 2003.
HTML page formatted Mon May 12 11:08:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/npcomplete.html


NP-complete language

(definition)

Definition: A language in NP such that every language in NP can be reduced to it in polynomial time.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:51:12 2000.
HTML page formatted Mon May 12 10:30:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/nPcompltlngg.html


NP-hard

(definition)

Definition: The complexity class of decision problems that are intrinsically harder than those that can be solved by a nondeterministic Turing machine in polynomial time. When a decision version of a combinatorial optimization problem is proven to belong to the class of NP-complete problems, which includes well-known problems such as satisfiability, traveling salesman, the bin packing problem, etc., then the optimization version is NP-hard.

See also strongly NP-hard, AP, unbounded knapsack problem.

Note: For example, "is there a tour with length less than k" is NP-complete: it is easy to determine if a proposed certificate has length less than k. The optimization problem, "what is the shortest tour?", is NP-hard, since there is no easy way to determine if a certificate is the shortest.

Another example of an NP-complete problem is to decide if there exist k star-shaped polygons whose union is equal to a given simple polygon, for some parameter k. The optimization problem, i.e., finding the minimum number (least k) of star-shaped polygons whose union is equal to a given simple polygon, is NP-hard.

From Algorithms and Theory of Computation Handbook, page 19-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

History, definitions, examples, etc. given in Comp.Theory FAQ, scroll down to P vs. NP.

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:43:36 2002.
HTML page formatted Mon May 12 10:30:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/nphard.html


n queens

(classic problem)

Definition: Place n chess queens on an n × n board such that no queen can attack another. Efficiently find all possible placements.

See also 8 queens.

Note: A backtracking algorithm may be efficient enough for small values of n.

Author: PEB

More information

explanation and Java classes, demonstration

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 30 10:15:27 2002.
HTML page formatted Thu Apr 17 10:49:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/nqueens.html


nullary function

(definition)

Definition: See 0-ary function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 14:59:54 2002.
HTML page formatted Thu Apr 17 10:49:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/nullaryFunction.html


null tree

(definition)

Definition: (1) A tree which is empty. (2) A tree whose leaf nodes all have a null value.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:20:25 2000.
HTML page formatted Thu Apr 17 10:49:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/nulltree.html


NYSIIS

(algorithm)

Definition: Convert a name to a phonetic coding of up to six characters.

See also Jaro-Winkler, double metaphone, soundex, edit distance.

Author: PEB

Implementation

SAMHSA's code (SAS) -- click on nysiis.sas.

More information

slides with summary of algorithm and comparison of Soundex, edit distance, NYSIIS, and Jaro-Winkler

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 25 12:46:37 2003.
HTML page formatted Thu Apr 17 10:49:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/nysiis.html


O

(definition)

Definition: See big-O notation.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:08:16 2003.
HTML page formatted Thu Apr 17 10:49:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/o.html


OBDD

Definition: (no definition here, yet, but you can help.)

Also known as ordered binary decision diagram.

See also BDD, reduced ordered binary decision diagram.

Note: http://www.cs.engr.uky.edu/~lewis/research/obdd.html

More information

Symbolic Boolean manipulation with ordered binary-decision diagrams, OBDD's in gif and postscript

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:36:16 2002.
HTML page formatted Thu Apr 17 10:49:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/obdd.html


objective function

(definition)

Definition: A function associated with an optimization problem which determines how good a solution is, for instance, the total cost of edges in a solution to a traveling salesman problem.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:50:18 2000.
HTML page formatted Mon May 12 10:30:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/objective.html


oblivious binary decision diagram

Definition: See OBDD.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:36:16 2002.
HTML page formatted Thu Apr 17 10:49:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/obliviousBinaryDecisionDiagram.html


occurrence

(definition)

Definition: A string v occurs in a string u if v is a substring of u.

Note: From Algorithms and Theory of Computation Handbook, page 11-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:50:14 2000.
HTML page formatted Mon May 12 10:30:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/occurrence.html


octree

(data structure)

Definition: A tree to index three dimensions. Each node has either eight children or no children.

See also quadtree, BSP-tree.

Author: PEB

More information

algorithms, another diagram and algorithm, and one more diagram

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 13 12:21:42 2003.
HTML page formatted Thu Apr 17 10:49:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/octree.html


octtree

(data structure)

Definition: See octree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 13 12:21:42 2003.
HTML page formatted Thu Apr 17 10:49:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/octtree.html


odd shaped array

(data structure)

Definition: See ragged matrix.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 24 16:29:34 2003.
HTML page formatted Thu Apr 17 10:49:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/oddShapedArray.html


off-line algorithm

(definition)

Definition: An algorithm which is given the entire sequence of inputs in advance.

See also on-line algorithm.

Note: From Algorithms and Theory of Computation Handbook, pages 10-17 and 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:50:10 2000.
HTML page formatted Mon May 12 10:30:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/offline.html


offset

(definition)

Definition: The distance from the beginning of a string to the end of a segment in that string.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:50:07 2000.
HTML page formatted Mon May 12 10:30:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/offset.html


omega

(definition)

Definition: A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items. Informally, saying some equation f(n) = omega (g(n)) means g(n) becomes insignificant relative to f(n) as n goes to infinity.

Formal Definition: f(n) = omega (g(n)) means that for any positive constant c, there exists a constant k, such that 0 less than or equal to cg(n) < f(n) for all n greater than or equal to k. The value of k must not depend on n, but may depend on c.

See also upper-case Omega (n), little-o notation, big-O notation.

Note: This is the Greek letter Omega.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 8 10:28:52 2002.
HTML page formatted Thu Apr 17 10:48:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/omega.html


Omega

(definition)

Definition: A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items. Informally, saying some equation f(n) = upper-case Omega (g(n)) means it is more than some constant multiple of g(n).

Formal Definition: f(n) = upper-case Omega (g(n)) means there are positive constants c and k, such that 0 less than or equal to cg(n) less than or equal to f(n) for all n greater than or equal to k. The values of c and k must be fixed for the function f and must not depend on n.

See also omega (n), big-O notation, asymptotic lower bound.

Note: This is the upper-case Greek letter Omega.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 09:27:56 2002.
HTML page formatted Thu Apr 17 10:48:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/omegaCapital.html


omicron

(definition)

Definition: The Greek letter written as "o" (see little-o notation) or "O" (see big-O notation).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 9 10:32:16 1999.
HTML page formatted Thu Apr 17 10:49:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/omicron.html


one-dimensional

(definition)

Definition: Dealing with or restricted to a line. An organization where location can be completely described with exactly one axis.

See also two-dimensional, three-dimensional, k-dimensional.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 2 09:55:24 1999.
HTML page formatted Thu Apr 17 10:49:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/onedimensnal.html


on-line algorithm

(definition)

Definition: An algorithm that must process each input in turn, without detailed knowledge of future inputs.

See also off-line algorithm, adversary.

Note: From Algorithms and Theory of Computation Handbook, pages 10-17 and 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:50:03 2000.
HTML page formatted Mon May 12 10:30:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/online.html


O notation

(definition)

Definition: See big-O notation.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:08:16 2003.
HTML page formatted Thu Apr 17 10:49:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/ONotation.html


open addressing

(algorithm)

Definition: A general collision resolution scheme for a hash table in which all items are stored within the table. In case of collision, other positions are computed and checked (a probe sequence) until an empty position is found. Some ways of computing possible new positions are less efficient because of clustering.

See also chaining, coalesced hashing, linear probing, quadratic probing, double hashing, uniform hashing, expandable hashing.

Note: After [CLR90, page 232]. Chaining, the use of external data structures to resolve collisions, has no clustering in the usual sense.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 14:06:25 2001.
HTML page formatted Thu Apr 17 10:49:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/openaddress.html


optimal

(definition)

Definition: (1) A solution to an optimization problem which has the minimum (or maximum) value of the objective function. (2) The time, space, resource, etc. complexity of an algorithm which matches the best known lower bound of a problem.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 16:15:58 1999.
HTML page formatted Thu Apr 17 10:49:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimal.html


optimal cost

(definition)

Definition: See best-case cost.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:08:18 2002.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalCost.html


optimal hashing

(algorithm)

Definition: See perfect hashing.

Author: PEB

Implementation

See the implementations at minimal perfect hashing (C++, C), insert (C), search (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:25:53 2003.
HTML page formatted Thu Apr 17 10:49:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalHashing.html


optimal merge

(algorithm)

Definition: Merge n sorted sequences of different lengths into one output while minimizing reads. Only two sequences can be merged at once. At each step, the two shortest sequences are merged.

Formal Definition: Let D={n1, ... , nk} be the set of lengths of sequences to be merged. Take the two shortest sequences, ni, nj in D, such that n greater than or equal to ni and n greater than or equal to nj for all n in D. Merge these two sequences. The new set D is D' = (D - {ni, nj}) union {ni+nj}. Repeat until there is only one sequence.

See also simple merge, ideal merge, Huffman encoding, greedy algorithm.

Note: Merging sequences by length is the same as joining trees by frequency in Huffman encoding. For example, let there be a set of sorted sequences of the following lengths: D={3,5,7,9,12,14,15,17}. Building the optimal merge tree goes as follows. Note that merged sequences are replaced by the sum of their lengths. For instance, the first step merges the sequence of length 3 and the sequence of length 5 to get a sequence of length 8.

 3        5        7        9       12        14     15       17
   8          7        9       12        14     15       17
  / \
 3   5
     15         9       12        14     15       17
    /  \
   8    7
  / \
 3   5
     15          21       14     15       17
    /  \        /  \
   8    7      9    12
  / \
 3   5
    29             21        15       17
   /  \           /  \
 14    15        9    12
      /  \
     8    7
    / \
   3   5
    29             21           32
   /  \           /  \         /  \
 14    15        9    12     15    17
      /  \
     8    7
    / \
   3   5
         50                 32
       /    \              /  \
      /      \           15    17
    29        21
   /  \      /  \
 14    15   9    12
      /  \
     8    7
    / \
   3   5
               82
             /    \
            /      \
           /        \
         50          32
       /    \       /  \
      /      \    15    17
    29        21
   /  \      /  \
 14    15   9    12
      /  \
     8    7
    / \
   3   5

Author: AL

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 16:20:17 2003.
HTML page formatted Thu Apr 17 10:49:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalMerge.html


optimal mismatch

(algorithm)

Definition: A string matching algorithm that compares the rarest character first. When a character doesn't match, the next character in the text beyond the search string determines where the next possible match begins.

Note: After [Sund98].

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:16:07 2003.
HTML page formatted Thu Apr 17 10:49:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalMismatch.html


optimal polygon triangulation problem

(classic problem)

Definition: (no definition here, yet, but you can help.)

See also optimal triangulation problem.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 24 09:17:39 1999.
HTML page formatted Thu Apr 17 10:49:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalPolygonTriangProb.html


optimal polyphase merge sort

(algorithm)

Definition: An external sort algorithm that uses optimal polyphase merges.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:44:12 2002.
HTML page formatted Thu Apr 17 10:49:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalPolyphaseMergeSort.html


optimal solution

(definition)

Definition: A solution to an optimization problem which minimizes (or maximizes) the objective function.

See also optimal value.

Note: From Algorithms and Theory of Computation Handbook, page 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:49:55 2000.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalsoltn.html


optimal value

(definition)

Definition: The minimum (or maximum) value of the objective function over the feasible region of an optimization problem.

See also optimal solution.

Note: From Algorithms and Theory of Computation Handbook, page 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:49:51 2000.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimalvalue.html


optimization problem

(definition)

Definition: A computational problem in which the object is to find the best of all possible solutions. More formally, find a solution in the feasible region which has the minimum (or maximum) value of the objective function.

See also decision problem, optimal solution, optimal value, geometric optimization problem, witness, local optimum, global optimum, Classical optimization problems: bin packing problem, knapsack problem, cutting stock problem, Chinese postman problem, traveling salesman, vehicle routing problem, prisoner's dilemma, Solution methods: dynamic programming, metaheuristic, relaxation, simulated annealing.

Note: An optimization problem asks, what is the best solution? A decision problem asks, is there a solution with a certain characteristic? For instance, the traveling salesman problem is an optimization problem, while the corresponding decision problem asks if there is a Hamiltonian cycle with a cost less than some fixed amount k.

From Algorithms and Theory of Computation Handbook, pages 29-20 and 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

linear and nonlinear programming and algebra packages (C and Fortran) from the Optimization Technology Center.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 12:54:31 2002.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimization.html


optimal polyphase merge

(algorithm)

Definition: A polyphase merge which seeks to minimize the number of merge passes by allocating output runs of each pass to the various output files. Since polyphase merging must have a different number of runs in each file to be efficient, one seeks the optimal way of selecting how many runs go into each output file. A series of kth order Fibonacci numbers is one way to select the number of runs.

See also merge, polyphase merge, optimal merge.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 30 10:25:20 1999.
HTML page formatted Thu Apr 17 10:49:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimpolymrg.html


optimal triangulation problem

(classic problem)

Definition: Find the triangulation with the greatest overall minimum angle. There is an incremental algorithm that takes O(n log n) time.

See also optimal polygon triangulation problem.

Note: Triangulation is breaking up an area into triangles. The goal is to make all the triangles as close to equilateral as possible. Equivalently, have as few "slivers" as possible.

This is the best triangulation if you want to interpolate a height field (topographic map) between given points, or to divide a surface to triangles and research the heat conduction, etc. between them. Contributed by Motty Porat (vn16908@netvision.net.il) 10 July 2000.

See Computational Geometry by De Berg, Van Kreveld, Overmars and Schwarzkopf.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 17 14:22:43 2001.
HTML page formatted Thu Apr 17 10:49:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/optimTriangulation.html


or

(definition)

Definition: Disjunction: 0 OR 0 = 0, 0 OR 1 = 1, 1 OR 0 = 1, 1 OR 1 = 1.

Also known as inclusive or.

See also and, not, xor, nor, implies.

Note: Also known as "inclusive or" in contrast to exclusive or (xor).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 13 09:35:18 2001.
HTML page formatted Thu Apr 17 10:49:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/or.html


oracle set

(definition)

Definition: A predetermined set of tapes used by an oracle Turing machine to make decisions otherwise not feasibled.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:49:43 2000.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/oracleset.html


oracle tape

(definition)

Definition: An extra tape used by an oracle Turing machine to make decisions otherwise not feasible.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:49:39 2000.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/oracletape.html


oracle Turing machine

(definition)

Definition: A Turing machine with an extra oracle tape and three extra states q?, qy, qn. When the machine enters q?, control goes to state qy if the oracle tape content is in the oracle set; otherwise control goes to state qn.

See also alternating Turing machine, nondeterministic Turing machine, probabilistic Turing machine, universal Turing machine.

Note: From Algorithms and Theory of Computation Handbook, pages 24-19 and 28-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:49:36 2000.
HTML page formatted Mon May 12 10:30:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/oracleTur.html


order

(definition)

Definition: (1) The height of a tree. (2) The number of children of the root of a binomial tree. (3) The number of data streams, usually denoted omega, in a multiway merge.

See also total order, partial order.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 27 08:38:24 2000.
HTML page formatted Thu Apr 17 10:49:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/order.html


ordered array

(data structure)

Definition: An array whose items have some order. Usually, it means a sorted array, but may mean not fully ordered, for example, all values less than the median are in the first half.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:21:23 2000.
HTML page formatted Thu Apr 17 10:49:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/orderedarry.html


ordered binary decision diagram

Definition: See OBDD.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:36:16 2002.
HTML page formatted Thu Apr 17 10:49:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/orderedBinaryDecisionDiagram.html


ordered linked list

(data structure)

Definition: A linked list whose items have some order.

See also ordered array, sorted list.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Aug 30 12:51:37 2000.
HTML page formatted Thu Apr 17 10:49:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/orderedLinkedList.html


ordered tree

(data structure)

Definition: A tree where the children of every node are ordered, that is, there is a first child, second child, third child, etc.

Note: An unordered tree may be thought of as a recursive bag, while an ordered tree is a recursive list.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 23 11:34:56 2000.
HTML page formatted Thu Apr 17 10:49:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/orderedtree.html


order preserving minimal perfect hashing

(algorithm)

Definition: A minimal perfect hashing function for keys in S such that if k1, k2 in S and k1 > k2, then f(k1) > f(k2).

Note: For example, if the keys are stored in order in an array, the array offsets are an order preserving minimal perfect hash of the keys.

Author: BJ

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Dec 27 16:12:17 1999.
HTML page formatted Thu Apr 17 10:49:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/orderpresmph.html


oriented acyclic graph

(definition)

Definition: See directed acyclic graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:34:39 2002.
HTML page formatted Thu Apr 17 10:49:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/orientedAcyclicGraph.html


oriented graph

(data structure)

Definition: See directed graph.

Author: PEB

Implementation

build, traverse, top sort, etc. weighted, directed graph (Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:51:05 2003.
HTML page formatted Fri May 23 12:54:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/orientedGraph.html


oriented tree

(definition)

Definition: See rooted tree.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 1 16:53:50 2002.
HTML page formatted Thu Apr 17 10:49:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/orientedTree.html


orthogonal lists

Definition: (no definition here, yet, but you can help.)

Note: lists which share members, but are informationally independent. The lists are interweaved through items. For instance, we may keep people on three orthogonal lists by hair color, gender, and country of residence.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:49:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/orthognllsts.html


orthogonally convex rectilinear polygon

(definition)

Definition: A rectilinear polygon P in which every horizontal or vertical segment connecting two points in P lies totally within P.

Note: From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:49:04 2000.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/orthogoncnvx.html


orthogonal drawing

(definition)

Definition: A graph drawing in which each edge is represented by a polyline, each segment of which is parallel to a coordinate axis.

See also grid drawing, straight-line drawing.

Note: From Algorithms and Theory of Computation Handbook, page 9-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:48:59 2000.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/orthogonldrw.html


oscillating merge sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

(Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:08:09 2001.
HTML page formatted Thu Apr 17 10:49:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/oscillatmerg.html


out-branching

(definition)

Definition: A rooted spanning tree in a directed graph, such that there is a path from the root to each vertex.

See also branching.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:48:55 2000.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/outbranching.html


out-degree

(definition)

Definition: The number of edges going out of a vertex in a directed graph.

See also in-degree, sink, degree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 7 14:20:42 2000.
HTML page formatted Thu Apr 17 10:49:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/outdegree.html


overlapping subproblems

Definition: (no definition here, yet, but you can help.)

Note: optimization

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:49:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/ovrlppngsbpr.html


P

(definition)

Definition: The complexity class of languages that can be accepted by a deterministic Turing machine in polynomial time.

See also NP, BPP, NC.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

History, definitions, examples, etc. given in Comp.Theory FAQ, scroll down to P vs. NP. Wikipedia entry on Complexity classes P and NP.

Scott Aaronson's Complexity Zoo

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 26 10:41:43 2002.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/p.html


packing

(definition)

Definition: Given a finite collection of subsets of a finite ground set, to find an optimal subcollection that are pairwise disjoint.

See also covering.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:48:39 2000.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/packing.html


padding argument

(definition)

Definition: A method for transferring results about one complexity bound to another complexity bound, by padding extra dummy characters onto the inputs of the machines involved.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:48:32 2000.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/paddingrgmnt.html


pagoda

(data structure)

Definition: (no definition here, yet, but you can help.)

Note: Francon, J., Viennot, G., and Vuillemin, J. Description and analysis of an efficient priority queue representation. Proc. 19th Annual Symp. on Foundations of Computer Science. IEEE, 1978, pp. 1-7. Nix, R. An Evaluation of Pagodas. Res. Rep. 164, Dept. of Computer Science, Yale Univ. 1988?

Implementation

delete (C and Pascal), insert (C and Pascal), and merge (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:46:30 2001.
HTML page formatted Thu Apr 17 10:49:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/pagoda.html


pairing heap

Definition: (no definition here, yet, but you can help.)

More information

M. L. Fredman, R. Sedgewick, D. Sleator, and R. Tarjan, The Pairing Heap: A New Form of Self-Adjusting Heap, 1988?

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 14:19:37 2002.
HTML page formatted Thu Apr 17 10:49:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/pairingHeap.html


PAM

(definition)

Definition: See point access method.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 14:26:26 2001.
HTML page formatted Thu Apr 17 10:49:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/pam.html


parallel computation thesis

(definition)

Definition: Sequential space is a polynomial of parallel time.

Note: From Algorithms and Theory of Computation Handbook, page 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:48:20 2000.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/parallel.html


parallel random-access machine

(definition)

Definition: A shared-memory model of computation, where typically the processors all execute the same instruction synchronously, and access to any memory location occurs in unit time.

Also known as PRAM.

See also work-depth model, multiprocessor model.

Note: From Algorithms and Theory of Computation Handbook, page 47-3, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:38:41 2002.
HTML page formatted Mon May 12 10:30:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/parallelRandomAccessMachine.html


parallel prefix computation

(algorithm)

Definition: Calculate a function, f, on all prefixes of an n-element array, that is, s[0], f(s[0], s[1]), f(s[0], f(s[1], s[2])), ..., f(s[0], ... f(s[n-2], s[n-1]) ...), using upper-case Theta (n) processors in upper-case Theta ( log n) time. The algorithm is

 for j := 0 to lg(n-1) do
     for i := 2j to n-1 parallel-do
         s[i] := f(s[i-2j], s[i])
where lg is the logarithm base 2, and parallel-do does the innermost computations in parallel. The function must be associative.

Note: In particular, this calculates any associative function, such as sum, maximum, or concatenate, over a list of values in logarithmic time. Since this overwrites the initial values, the n processors can copy input values to a working array in parallel in one additional step.
From Yair Tuaff (r56409@email.sps.mot.com), 29 December 1999.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 28 11:35:57 2000.
HTML page formatted Thu Apr 17 10:49:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/parallprefix.html


parametric searching

(algorithmic technique)

Definition: (no definition here, yet, but you can help.)

Note: Adapted from [AS98, page 415].

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:10:52 2001.
HTML page formatted Thu Apr 17 10:49:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/parametrsrch.html


parent

(definition)

Definition: Of a node: the tree node conceptually above or closer to the root than the node and which has a link to the node. See the figure at tree.

See also child, ancestor, internal node.

Note: By definition, a parent node is an interior node.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 10:20:49 2002.
HTML page formatted Thu Apr 17 10:49:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/parent.html


partial function

(definition)

Definition: A function which is not defined for some of its domain. For instance, division is (usually) a partial function since anything divided by 0 is undefined.

See also total function, partial recursive function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jun 17 12:59:29 1999.
HTML page formatted Thu Apr 17 10:49:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/partialfunct.html


partially decidable problem

(definition)

Definition: One whose associated language is a recursively enumerable language. Equivalently, there exists an algorithm that halts and outputs 1 for every instance having a "yes" answer, but for instances having a "no" answer is allowed either not to halt or to halt and output 0.

See also decidable, undecidable, solvable, tractable, computable.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:47:57 2000.
HTML page formatted Mon May 12 10:30:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/partiallydcd.html


partially dynamic graph problem

(definition)

Definition: Problem where the update operations include either edge insertions (incremental) or deletions (decremental).

See also fully dynamic graph problem.

Note: From Algorithms and Theory of Computation Handbook, page 8-22, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:48:12 2000.
HTML page formatted Mon May 12 10:30:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/partiallyDynamicGraph.html


partially ordered set

(definition)

Definition: See poset.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:48:26 2002.
HTML page formatted Mon May 12 10:30:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/partiallyOrderedSet.html


partially persistent data structure

(definition)

Definition: A persistent data structure that allows updates to the latest version only.

See also fully persistent data structure, confluently persistent data structure.

Note: From Algorithms and Theory of Computation Handbook, page 5-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 6 11:52:09 2003.
HTML page formatted Mon May 12 10:30:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/partiallyPersistData.html


partial order

(definition)

Definition: An order defined for some, but not necessarily all, pairs of items. For instance, the sets {a, b} and {a, c, d} are subsets of {a, b, c, d}, but neither is a subset of the other. So "subset of" is a partial order on sets.

Formal Definition: A partial order is a binary relation that is reflexive, transitive, and antisymmetric.

See also total order, poset.

Authors: PEB,PJT

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 16:14:46 2003.
HTML page formatted Thu Apr 17 10:49:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/partialorder.html


partial recursive function

(definition)

Definition: A function computed by a Turing machine that need not halt for all inputs.

See also partial function.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:47:51 2000.
HTML page formatted Mon May 12 10:30:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/partialrcrsv.html


partition

(definition)

Definition: (1) A division of a set into nonempty disjoint sets which completely cover the set. (2) To rearrange the elements of an array into two (or more) groups, typically, such that elements in the first group are less than a value and elements in the second group are greater.

Formal Definition: (1) A partition P of a set S is a set of subsets with the following properties:

  • for all si in P, si not equal to {}
    (no subset is empty),
  • for all si, sj in P, si intersect sj = {}
    (subsets are disjoint), and
  • Ui=1 si = S
    (subsets exactly cover the original).

Thanks to Julio A. Cartaya <jac@puma.mt.att.com>.

See also select and partition, set packing, subset, Dutch national flag, American flag sort.

Author: PEB

Implementation

generating partitions (Fortran, Mathematica, Pascal, and C), (Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:20:06 2003.
HTML page formatted Tue May 13 15:37:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/partition.html


passive data structure

(data structure)

Definition: A data structure with is only changed by external threads or processes, in contrast to an active data structure.

Note: See the note for active data structure for an example.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 18 14:17:00 2002.
HTML page formatted Thu Apr 17 10:49:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/passiveDataStruc.html


path

(definition)

Definition: A list of vertices of a graph where each vertex has an edge from it to the next vertex.

See also cycle, Hamiltonian cycle, Euler cycle, shortest path, all pairs shortest path, alternating path, simple path.

Note: A path is usually assumed to be a simple path, unless otherwise defined.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 2 08:51:51 2000.
HTML page formatted Thu Apr 17 10:49:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/path.html


path cover

Definition: (no definition here, yet, but you can help.)

Note: of a digraph

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:49:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/pathcover.html


path system problem

(classic problem)

Definition: For a path system P=(x,R,S,T), where S is a subset of X, T is a subset of X, and R is a subset of X × X × X, the problem of whether there is an admissible vertex in S. A vertex is admissible if and only if x in T, or there exists admissible y, z in X such that (x,y,z) in R.

Note: From Algorithms and Theory of Computation Handbook, page 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:47:47 2000.
HTML page formatted Mon May 12 10:30:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/pathsystem.html


Patricia tree

(data structure)

Definition: A compact representation of a trie where all nodes with one child are merged with their parents.

See also suffix tree, compact DAWG.

Note: A compact directed acyclic word graph (DAWG) merges common suffix trees to save additional space.

Author: SE

Implementation

insert (C), search (C).

More information

Arijit Sengupta's Data Structures for efficient data manipulation and Dictionary Automaton in Optimal Space

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 12 13:23:58 2003.
HTML page formatted Mon May 12 13:25:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/patriciatree.html


pattern

(definition)

Definition: A finite number of strings that are searched for in texts.

See also pattern element, string matching.

Note: From Algorithms and Theory of Computation Handbook, page 11-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:17:29 2002.
HTML page formatted Mon May 12 10:30:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/pattern.html


pattern element

(definition)

Definition: A positive (negative) pattern element is a "partial wild card" presented as a subset of the alphabet upper-case Sigma, with the symbols in the subset specifying which symbols of upper-case Sigma are matched (mismatched) by the pattern element.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:47:10 2000.
HTML page formatted Mon May 12 10:30:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/patternelmnt.html


P-complete

(definition)

Definition: A language L is P-hard under NC many-one reducibility if L' less than or equal to mNC for every L' in P. A language L is P-complete under NC reducibility if L in P and L is P-hard.

Note: From Algorithms and Theory of Computation Handbook, page 45-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:46:17 2000.
HTML page formatted Mon May 12 10:30:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/pcomplete.html


PCP

(classic problem)

Definition: See Post's correspondence problem.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 08:52:54 2001.
HTML page formatted Thu Apr 17 10:49:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/pcp.html


PD

(data structure)

Definition: See stack.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:55:14 2003.
HTML page formatted Thu Apr 17 10:49:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/pd.html


PDA

(definition)

Definition: See pushdown automaton.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:18:05 2002.
HTML page formatted Mon May 12 10:30:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/pda.html


Peano curve

Definition: (no definition here, yet, but you can help.)

Implementation

(Maple)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jun 28 12:33:33 1999.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/peanocurve.html


Pearson's hash

(algorithm)

Definition: A hash function that uses an auxiliary array, but no shift or exclusive-or (xor) operations.

Note: This hash function may be particularly fast on computers that don't have hardware support for shifting or xor. Named for Peter K. Pearson.

Author: PEB

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:26:58 2003.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/pearsonshash.html


perfect binary tree

(definition)

Definition: A binary tree with all leaf nodes at the same depth. All internal nodes have degree 2.

See also full binary tree, complete binary tree, perfect k-ary tree.

Note: A complete binary tree has 2n-1 nodes. It can be efficiently implemented as an array, where a node at index i has children at indexes 2i and 2i+1 and a parent at index i/2. After LK.

Every perfect binary tree is both a perfect binary tree and a full binary tree.

A heap may be seen as a complete binary tree with some extra leaf nodes at depth n+1, all toward the left. (After [CLR90, page 140]).

This kind of tree is called "complete" by some authors ([CLR90, page 95], Leighton) and "full" by others (Budd page 331, Ege, [HS83, page 225]).

Authors: YZ,PEB

More information

example and formal definition.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 10:50:45 2002.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/perfectBinaryTree.html


perfect hashing

(algorithm)

Definition: A hash function that maps each different key to a distinct integer. Usually all possible keys must be known beforehand. A hash table that uses a perfect hash has no collisions.

Formal Definition: A function f is perfect for a set of keys K iff for all j, k in K f(j) = f(k) -> j = k.

Also known as optimal hashing.

See also minimal perfect hashing, order preserving minimal perfect hashing.

Note: After BJ.

Author: PEB

Implementation

See the implementations at minimal perfect hashing (C++, C), insert (C), search (C).

More information

Martin Dietzfelbinger, Anna Karlin, Kurt Melhorn, Friedhelm Meyer Auf Der Heide, Hans Rohnert, and Robert E. Tarjan, Dynamic Perfect Hashing: Upper and Lower Bounds, SIAM J. Comput., 23(4):738-761, August 1994.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:25:53 2003.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/perfecthash.html


perfect k-ary tree

(definition)

Definition: A k-ary tree with all leaf nodes at same depth. All internal nodes have degree k.

See also complete graph, full binary tree, complete binary tree.

Note: Called "complete" by [CLR90, page 95].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 28 10:33:06 2002.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/perfectKaryTree.html


perfect matching

(definition)

Definition: A matching, or subset of edges without common vertices, of a connected graph that touch all vertices exactly once. A graph with an odd number of vertices is allowed one unmatched vertex.

See also bipartite matching.

Note: The term comes from matching each vertex with exactly one other vertex.

A graph with n vertices has a perfect matching with n/2 edges. If a graph has a Hamiltonian cycle, it has two different perfect matchings, since the edges in the cycle could be alternately colored. After Douglas Bass <dbass@stthomas.edu> 5 Sep 1999.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 11:06:32 2003.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/perfectmatch.html


perfect shuffle

(algorithm)

Definition: A permutation algorithm, or shuffle, that has exactly the same chance of producing any permutation.

Note: Attaching random tags then sorting (see permutation) may not be a perfect shuffle: if tags may be duplicated, a stable sort has a greater chance of producing permutations with some items in the original order.

Author: PEB

Implementation

Discussion and explanation of what makes a shuffle perfect and two implementations (Haskell).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 5 16:37:53 2002.
HTML page formatted Thu Apr 17 10:50:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/perfectShuffle.html


performance guarantee

(definition)

Definition: An expression of the most the result of an approximation algorithm may depart from the optimal solution.

See also absolute performance guarantee, relative performance guarantee, optimization problem.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:46:12 2000.
HTML page formatted Mon May 12 10:30:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/performance.html


performance ratio

(definition)

Definition: See relative performance guarantee.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:46:59 2002.
HTML page formatted Mon May 12 10:30:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/performanceRatio.html


permutation

(algorithm)

Definition: A rearrangement of elements, where none are lost, added, or changed. A good algorithm to randomly permute N elements is to exchange each element ei with a random element from i to N.

Also known as shuffle.

See also perfect shuffle, combination, pseudo-random number generator, sort, derangement, Johnson-Trotter, American flag sort.

Note: A sort is a permutation where the items are arranged in some order. The algorithm above can be viewed as a reverse selection sort, and is described in detail in [Knuth98, vol. 2]. It consumes upper-case Theta (N log N) bits and runs in linear time.

Author: PEB

Implementation

The (Combinatorial) Object Server's information on Permutations (Pascal and C); Michael Gilleland's PermutationGenerator class (Java); Glenn Rhoads' Snippets (c); (Pascal, Fortran, Mathematica, and C); (Fortran). Perfect shuffle (Haskell).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:43:15 2003.
HTML page formatted Tue May 13 15:55:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/permutation.html


permute

(algorithm)

Definition: See permutation.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:43:15 2003.
HTML page formatted Tue May 13 15:55:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/permute.html


persistant data structure

(definition)

Definition: See persistent data structure.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 6 11:57:46 2003.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/persistantDataStructure.html


persistent data structure with confluence

(definition)

Definition: See confluently persistent data structure.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Mar 7 12:50:15 2003.
HTML page formatted Thu Apr 17 10:50:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/persistentDataStructureWithConfluence.html


persistent data structure

(definition)

Definition: A data structure that preserves its old versions, that is, previous versions may be queried in addition to the latest version.

See also partially persistent data structure, fully persistent data structure, confluently persistent data structure.

Note: From Algorithms and Theory of Computation Handbook, page 5-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

A Brief Introduction to Persistent Data Structures

James R. Driscoll, Neil Sarnak, Daniel D. Sleator, and Robert E. Tarjan, Making Data Structures Persistent, Journal of Computer and System Sciences, 38(1):86-124, 1989.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 6 11:57:46 2003.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/persistentdt.html


pile

(data structure)

Definition: An ordered deque, that is, items may only be added to or removed from the head or the tail. An item is added to the head if it is smaller than the current head. An item is added to the tail if it is greater than the current tail. Items are never inserted into the middle, rather, an additional pile may be created.

See also linked list, UnShuffle sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 11 14:59:47 1999.
HTML page formatted Thu Apr 17 10:50:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/pile.html


pipelined divide and conquer

(algorithmic technique)

Definition: A divide and conquer paradigm in which partial results from recursive calls can be used before the calls complete. The technique is often useful for reducing the depth of an algorithm.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:45:43 2000.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/pipelineddvd.html


planar graph

(definition)

Definition: A graph that can be drawn in the plane with no crossing edges.

See also planar straight-line graph.

Note: Equivalently, a graph that does not contain any subgraph homeomorphic to the complete graph on 5 vertices or the complete bipartite graph with 3 vertices in each partition.

Author: JLG

Implementation

draw a planar graph such that no edges cross (C, C++, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 15:03:41 2003.
HTML page formatted Fri May 23 15:34:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/planargraph.html


planarity

(definition)

Definition: See planar graph.

Author: JLG

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 15:03:41 2003.
HTML page formatted Fri May 23 15:34:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/planarity.html


planarization

(definition)

Definition: The process of transforming a graph into a planar graph. More formally, the transformation involves either removing edges (planarization by edge removal), or replacing pairs of nonincident edges by 4-starts (planarization by adding crossing vertices). In both cases, the aim of planarization is minimize the number of edge removals or replacements.

Note: From Algorithms and Theory of Computation Handbook, page 9-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 13:10:01 2001.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/planarization.html


planar straight-line graph

(definition)

Definition: A graph that can be embedded in the plane without crossings in which every edge in the graph is a straight line segment. It is sometimes referred to as planar subdivision or map.

See also planar graph.

Note: From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 13:16:56 2001.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/planarstrght.html


PLOP-hashing

(data structure)

Definition: Piecewise linear order-preserving (PLOP) hashing is a spatial access method which splits space into a nonperiodic grid. Each spatial dimension is divided by nodes of a binary tree. Object are stored in the grid cell of their centroid.

See also grid file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:35:40 2001.
HTML page formatted Thu Apr 17 10:50:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/plophashing.html


point access method

(definition)

Definition: A data structure and associated algorithms primarily to search for points defined in multidimensional space.

Also known as PAM.

See also EXCELL, grid file, hB-tree, twin grid file, two-level grid file, k-d tree, BSP-tree, quadtree, buddy tree, spatial access method.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 14:26:26 2001.
HTML page formatted Thu Apr 17 10:50:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/pointaccess.html


pointer jumping

(definition)

Definition: In a linked structure, replacing a pointer with the pointer it points to. Used for various algorithms on lists and trees.

Also known as shortcutting.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:30:59 2002.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/pointerjump.html


pointer machine

(definition)

Definition: A model of computation whose memory consists of an unbounded collection of registers, or records, connected by pointers. Each register may contain an arbitrary amount of additional information. No arithmetic is allowed to compute the address of a register. The only way to access a register is by following pointers.

See also cell probe model, random access machine, Turing machine, big-O notation.

Note: From Algorithms and Theory of Computation Handbook, page 5-25, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:45:12 2000.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/pointermachn.html


poissonization

(definition)

Definition: To replace a deterministic input by poisson process, changing the model into a poisson model. A solution to the poisson model must be interpreted in the original model.

See also depoissonization.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:45:07 2000.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/poissonizatn.html


polychotomy

(definition)

Definition: Division into many distinct classifications.

Note: Compare "dichotomy": a division into two distinct, contrasting classes. The term is used in the area of machine learning (artificial intelligence).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 23 12:33:39 1999.
HTML page formatted Thu Apr 17 10:50:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/polychotomy.html


polyhedron

(definition)

Definition: The set of solutions to a finite system of linear inequalities on real-valued variables. Equivalently, the intersection of a finite number of linear half-spaces in Rn.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:45:02 2000.
HTML page formatted Mon May 12 10:30:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/polyhedron.html


polylogarithmic

(definition)

Definition: (1) Any function which is the sum of constants times powers of a logarithm of the argument: f(x)= upper-case Sigma i=0kci logpi x. (2) In complexity theory, the measure of computation, m(n) (usually execution time or memory space), is bounded by a polylogarithmic function of the problem size, n. More formally m(n) = O( logk n).

See also logarithmic, polynomial, exponential.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jun 17 09:17:11 1999.
HTML page formatted Thu Apr 17 10:50:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/polylogarith.html


polynomial approximation scheme

(algorithmic technique)

Definition: A set of algorithms {A epsilon | epsilon > 0}, where each A epsilon is a (1+ epsilon)-approximation algorithm and the execution time is bounded by a polynomial in the length of the input. The execution time may depend on the choice of epsilon. Sometimes referred to more precisely as polynomial-time approximation scheme.

Also known as PTAS.

See also fully polynomial approximation scheme.

Note: From Algorithms and Theory of Computation Handbook, pages 29-20 and 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:23:40 2002.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomaprox.html


polynomial-time Church-Turing thesis

(definition)

Definition: The complexity class P captures the true notion of feasible (polynomial time) sequential computation.

See also Church-Turing thesis.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 10 13:49:48 2001.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomChurchTur.html


polynomial hierarchy

(definition)

Definition: The classes of languages accepted by k-alternating Turing machines, over all k greater than or equal to 0 and with initial state existential or universal. The bottom level (k=0) is the class P. The next level (k=1) comprises NP and co- NP.

Note: From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:44:49 2000.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomhier.html


polynomial

(definition)

Definition: (1) Any function which is the sum of constants times powers of the argument: f(x)= upper-case Sigma i=0k cixpi. (2) In complexity theory, the measure of computation, m(n) (usually execution time or memory space), is bounded by a polynomial function of the problem size, n. More formally m(n) = O(nk).

See also logarithmic, linear, exponential.

Note: Strictly speaking, a linear function is a polynomial with the highest exponent being 1, and a logarithmic function is a polynomial with fractional exponents. However polynomial usually means exponents greater than 1.

Author: PEB

More information

An explanation of how quadratic and other polynomials got their names.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:31:56 2003.
HTML page formatted Thu Apr 17 10:50:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomial.html


polynomial-time algorithm

(definition)

Definition: See polynomial time.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:10:14 2002.
HTML page formatted Thu Apr 17 10:50:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomialtimeAlgorithm.html


polynomial-time approximation scheme

(algorithmic technique)

Definition: See polynomial approximation scheme.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:23:40 2002.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomialtimeApproximationScheme.html


polynomial time

(definition)

Definition: When the execution time of a computation, m(n), is no more than a polynomial function of the problem size, n. More formally m(n) = O(nk) where k is a constant.

See also NP, exponential, logarithmic.

Note: Broadly speaking, polynomial time algorithms are reasonably to compute. The time to run exponential algorithms grows too fast to expect to be able to compute exact solutions in all cases.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:10:14 2002.
HTML page formatted Thu Apr 17 10:50:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomialtm.html


polynomial-time reduction

(definition)

Definition: A transformation of one problem into another which is computable in polynomial time.

See also NP-complete, Turing reduction, Cook reduction, Karp reduction, l-reduction, many-one reduction.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:44:40 2000.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/polynomtredc.html


polyphase merge

(algorithm)

Definition: A nonbalanced k-way merge which reduces the number of output files needed by reusing the emptied input file or device as one of the output devices. This is most efficient if the number of output runs in each output file is different.

See also merge, optimal polyphase merge, nonbalanced merge, polyphase merge sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 30 09:43:43 1999.
HTML page formatted Thu Apr 17 10:50:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/polyphmerge.html


polyphase merge sort

(algorithm)

Definition: A merge sort algorithm which reduces the number of intermediate files needed by reusing emptied files.

See also polyphase merge, sort, distribution sort, merge.

Author: ASK

Implementation

(C) using an auxiliary function to select next file (C)

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 10 14:35:38 2001.
HTML page formatted Thu Apr 17 10:50:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/polyphmrgsrt.html


polytope

(definition)

Definition: A closed, bounded N-dimensional figure whose faces are hyperplanes. Informally, a multidimensional solid with flat sides. A generalization of polyhedron.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 2 08:52:28 2001.
HTML page formatted Thu Apr 17 10:50:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/polytope.html


poset

(definition)

Definition: A set the elements of which are subject to a partial order.

Also known as partially ordered set.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:48:26 2002.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/poset.html


postfix traversal

(algorithm)

Definition: See postorder traversal.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 2 13:10:59 2002.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/postfixTraversal.html


Post machine

Definition: (no definition here, yet, but you can help.)

Note: Similar to a Turing machine, but uses a queue instead of an infinite tape.

More information

Biography of Emil Leon Post.

Post, E. L., Finite Combinatory Processes - Formulation 1, Journal of Symbolic Logic, 1, 103-105, 1936.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 19 08:25:32 2002.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/postMachine.html


postman's sort

(algorithm)

Definition: An efficient, general implementation of a radix sort where attributes of the key are described so the algorithm can allocate memory efficiently.

Note: After Robert Ramey (ramey@rrsd.com)

Author: PEB

Implementation

16- and 32-bit binaries for DOS, OS/2, and Windows

More information

White Paper.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 20 09:08:52 2000.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/postmansort.html


postorder traversal

(algorithm)

Definition: Process all nodes of a tree by recursively processing all subtrees, then finally processing the root.

Also known as postfix traversal.

See also in-order traversal, preorder traversal, tree traversal, level-order traversal.

Note: For instance, if the "processing" is just printing, a tree is printed as "(first subtree) (second subtree) ... (last subtree) root." Here is pseudocode for a binary tree:

 postorder(tree)
 begin
     if tree is null, return;

     postorder(tree.left_subtree);
     postorder(tree.right_subtree);
     print(tree.root);
 end

Author: PEB

More information

demonstration

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 2 13:10:59 2002.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/postordrtrvs.html


Post's correspondence problem

(classic problem)

Definition: Given a set of pairs of strings, find a sequence of pairs such that the concatenation of all first members of the pairs is the same string as the concatenation of all second members. This is an undecidable problem.

Also known as PCP.

Author: SKS

More information

Ling Zhao's page with examples, notes on programs to find solutions, etc..

Emil Post, A Variant of a Recursively Unsolvable Problem. Bulletin of the American Mathematical Society, 52:264-268, 1946.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 08:52:54 2001.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/postsCorrespondProb.html


potential function

(definition)

Definition: A measure of a data structure whose change after an operation corresponds to the time cost of the operation.

See also amortized cost.

Note: If an inexpensive operation results in an increase of the potential function, but the increase of the potential function is within a constant factor of the actual cost of the operation, the amortized cost of the operation is unchanged. Meanwhile, if an expensive operation results in a decrease of the potential function that offsets the cost of the expensive operation, the amortized cost of the expensive operation may be small. For such an analysis to remain valid, the potential function must stay nonnegative, and begin with a value of zero. For more on amortized analysis and its origins see Tarjan.

Author: CLK

More information

R. E. Tarjan, Amortized computational complexity, SIAM Journal on Algebraic and Discrete Methods, 6(2):306-318, 1985.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 16:20:24 2002.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/potentialfnc.html


PRAM

(definition)

Definition: See parallel random-access machine.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 10:38:41 2002.
HTML page formatted Mon May 12 10:30:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/pram.html


predicate

(definition)

Definition: A function that returns true or false. Conceptually it tests for a condition.

See also binary function, boolean expression.

Note: See the description of isEmpty() in the Notes for abstract data type.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:50:50 2002.
HTML page formatted Thu Apr 17 10:50:05 2003.

This page's URL is http://www.nist.gov/dads/HTML/predicate.html


prefix

(definition)

Definition: The beginning characters of a string. More formally a string v in upper-case Sigma * is a prefix of a string u in upper-case Sigma * if u=vu' for some string u' in upper-case Sigma *.

See also suffix.

Note: From Algorithms and Theory of Computation Handbook, pages 11-26 and 12-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:44:31 2000.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/prefix.html


prefix computation

Definition: (no definition here, yet, but you can help.)

Note: parallel

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:50:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/prefixcmpttn.html


prefix code

(definition)

Definition: Set of words such that no word of the set is a prefix of another word in the set. A prefix code may be represented by a coding tree.

Note: From Algorithms and Theory of Computation Handbook, page 12-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:44:27 2000.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/prefixcode.html


prefix sums

(algorithm)

Definition: See scan.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:45:18 2002.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/prefixSums.html


prefix traversal

(algorithm)

Definition: See preorder traversal.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 2 13:11:44 2002.
HTML page formatted Thu Apr 17 10:50:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/prefixTraversal.html


preorder traversal

(algorithm)

Definition: Process all nodes of a tree by processing the root, then recursively processing all subtrees.

Also known as prefix traversal.

See also in-order traversal, postorder traversal, tree traversal, level-order traversal.

Note: For instance, if the "processing" is just printing, a tree is printed as "root (first subtree) (second subtree) ... (last subtree)." Here is pseudocode for a binary tree:

 preorder(tree)
 begin
     if tree is null, return;

     print(tree.root);
     preorder(tree.left_subtree);
     preorder(tree.right_subtree);
 end

Author: PEB

More information

demonstration

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 2 13:11:44 2002.
HTML page formatted Thu Apr 17 10:50:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/preordertrvs.html


primary clustering

(definition)

Definition: The tendency for some collision resolution schemes to create long runs of filled slots at the hash function position.

See also secondary clustering, clustering free, hash table, open addressing, clustering, linear probing, quadratic probing, double hashing, uniform hashing.

Note: Primary clustering increases average search time. Linear probing is especially susceptible to primary clustering.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:20:24 2003.
HTML page formatted Thu Apr 17 10:50:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/primaryclstr.html


primitive recursive

(definition)

Definition: A total function which can be written using only nested conditional (if-then-else) statements and fixed iteration (for) loops.

See also computable.

Note: Ackermann's function is computable, but is not primitive recursive. Primitive recursion functions always terminate. More powerful languages have some functions which cannot be proved to either terminate or run forever.

After Algorithms and Theory of Computation Handbook, footnote, page 26-13, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 14:03:41 2002.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/primitivrecr.html


Prim's algorithm

(algorithm)

Definition: An algorithm for computing a minimum spanning tree. It builds upon a single partial minimum spanning tree, at each step adding an edge connecting the vertex nearest to but not already in the current partial minimum spanning tree.

See also Kruskal's algorithm.

Author: JLG

Implementation

explanation and implementation (pseudocode and Java bytecode)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 30 13:06:00 1999.
HTML page formatted Thu Apr 17 10:50:06 2003.

This page's URL is http://www.nist.gov/dads/HTML/primsalgrthm.html


principle of optimality

(definition)

Definition: In some optimization problems, components of a globally optimal solution are themselves globally optimal.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:44:12 2000.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/principle.html


priority queue

(data structure)

Definition: An abstract data type to efficiently support finding the item with the highest priority across a series of operations. The basic operations are: insert, find-minimum (or maximum), and delete-minimum (or maximum). Some implementations also efficiently support join two priority queues (meld), delete an arbitrary item, and increase the priority of a item (decrease-key).

See also discrete interval encoding tree, best-first search, heap, hash heap, Fibonnaci heap, calendar queue, queue.

Note: It can be implemented efficiently with a heap. After LK.

Author: PEB

Implementation

Implemented as a heap: insert, delete, etc. (Modula-2?) (C++, Pascal, and Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 12:15:14 2002.
HTML page formatted Thu Apr 17 10:50:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/priorityque.html


prisoner's dilemma

(classic problem)

Definition: Two prisoners are questioned separately about a crime they committed. Each may give evidence against the other or may say nothing. If both say nothing, they get a minor reprimand and go free because of lack of evidence. If one gives evidence and the other says nothing, the first goes free and the second is severely punished. If both give evidence, both are severely punished. The overall (globally) best strategy is for both to say nothing. However not knowing (or trusting) what the other will do, each prisoner's (locally) best strategy is to give evidence, which is the worst possible outcome.

In general, a situation where local optimization leads to the worst possible outcome globally.

See also global optimum, optimization problem.

Note: This problem is in the area of game theory.

Author: PEB

More information

A thorough treatment from Principia Cybernetica including links to a web-based game and related entries and definitions.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 23 10:47:54 2001.
HTML page formatted Thu Apr 17 10:50:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/prisonersDilemma.html


PRNG

(algorithm)

Definition: See pseudo-random number generator.

Author: PEB

Implementation

(C++, C, and Fortran), Glenn Rhoads' Snippets (C), (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 11:58:36 2003.
HTML page formatted Thu Apr 17 10:50:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/prng.html


probabilistically checkable proof

(definition)

Definition: An interactive proof system in which provers follow a fixed strategy, that is, one not affected by any messages from the verifier. The prover's strategy for a given instance x of a decision problem can be represented by a finite oracle language Bx, which constitutes a proof of the correct answer for x.

Note: From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 4 10:54:36 2002.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/probabilisticallyCheckableProof.html


probabilistic algorithm

(definition)

Definition: Any algorithm that works for all practical purposes but has a theoretical chance of being wrong.

See also Example: Bloom filter, related terms: Monte Carlo algorithm, Las Vegas algorithm, randomized algorithm, heuristic, deterministic algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jun 25 15:31:38 2002.
HTML page formatted Thu Apr 17 10:50:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/probablAlgo.html


probabilistic Turing machine

(definition)

Definition: A Turing machine in which some transitions are random choices among finitely many alternatives.

See also alternating Turing machine, nondeterministic Turing machine, oracle Turing machine, universal Turing machine, NP, RP, ZPP, BPP.

Note: The typical, deterministic Turing machine (TM) can be seen as a probabilistic TM with no more than one alternative for each transition. A nondeterministic TM is a probabilistic TM ignoring the probabilities.

From Algorithms and Theory of Computation Handbook, page 29-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 14:03:40 2002.
HTML page formatted Mon May 12 10:30:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/probablturng.html


probe sequence

(definition)

Definition: The list of locations which a method for open addressing produces as alternatives in case of a collision.

See also hash table, collision resolution scheme, clustering, uniform hashing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 2 17:04:03 2000.
HTML page formatted Thu Apr 17 10:50:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/probesequenc.html


procedure

(definition)

Definition: A subroutine which does not return a value.

See also function(2).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Jul 31 12:08:13 1999.
HTML page formatted Thu Apr 17 10:50:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/procedure.html


process algebra

(definition)

Definition: An algebraic theory to formalize the notion of concurrent computation, best exemplified in CSP and CCS.

See also formal verification, formal methods.

Author: SKS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 16:36:03 1999.
HTML page formatted Thu Apr 17 10:50:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/processalgbr.html


proper

(definition)

Definition: (1) A subunit of a unit is not equal to the unit itself. For instance, a proper substring is not the whole string, a proper subset is not the whole set, a proper subgraph is not the whole graph, etc. (2) According to a rule, as in proper coloring.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 12:20:04 2002.
HTML page formatted Thu Apr 17 10:50:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/proper.html


proper binary tree

(definition)

Definition: See full binary tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:25:58 2002.
HTML page formatted Thu Apr 17 10:50:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/properBinaryTree.html


proper coloring

(definition)

Definition: A vertex coloring or edge coloring of a graph in which no two adjacent vertices or edges have the same color.

Note: Generally "coloring" is understood to mean "proper coloring".

Author: ME

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 12:19:16 2002.
HTML page formatted Thu Apr 17 10:50:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/propercolor.html


proper subset

(definition)

Definition: A set S2 is a proper subset of another set S1 if every element in S2 is in S1 and S1 has some elements which are not in S2.

See also subset, superset.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 17 10:34:37 1999.
HTML page formatted Thu Apr 17 10:50:08 2003.

This page's URL is http://www.nist.gov/dads/HTML/propersubset.html


property list

(data structure)

Definition: See dictionary.

Author: PEB

Implementation

(C++, Pascal, and Fortran), Kazlib (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:50:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/propertyList.html


prop list

(data structure)

Definition: See dictionary.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 3 13:01:31 2003.
HTML page formatted Thu Apr 17 10:50:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/propList.html


prune and search

(algorithmic technique)

Definition: Find an optimal value by eliminating a constant fraction of remaining objects at each step. Eliminated objects are guaranteed not to affect the optimal value. A logarithmic number steps reduces the number of objects to a constant, and a brute force approach can then solve it.

Also known as decimation.

Note: Adapted from [AS98, page 422].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:52:34 2002.
HTML page formatted Thu Apr 17 10:50:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/pruneNsearch.html


pseudorandom number

(algorithm)

Definition: See pseudo-random number generator.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 11:58:36 2003.
HTML page formatted Thu Apr 17 10:50:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/pseudorandomNumber.html


pseudo-random number generator

(algorithm)

Definition: A deterministic algorithm to generate a sequence of numbers with little or no discernible pattern in the numbers, except for broad statistical patterns.

Also known as PRNG.

See also spectral test, randomized algorithm, linear congruential generator.

Note: Any computer program is likely to generate pseudo-random numbers, not actually random numbers. This is important when, say, simulations are sensitive to subtle patterns in the "random" numbers used. Hardware-based random number generators are built from parts with naturally random events, such as noise in a diode.

A generator may be "seeded", or initialized, with a random event, such as the current time in milliseconds, to give different sequences every time it is used.

Author: PEB

Implementation

(C++, C, and Fortran), Glenn Rhoads' Snippets (C), (C)

More information

Random Number Generation and Testing with links to reports, standard tests, and on-going research. ent: a program to test the randomness of bytes in a file.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 11:58:36 2003.
HTML page formatted Thu Apr 17 10:50:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/pseudorandomNumberGen.html


PTAS

(algorithmic technique)

Definition: See polynomial approximation scheme.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:23:40 2002.
HTML page formatted Mon May 12 10:30:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/ptas.html


pth order Fibonacci numbers

(definition)

Definition: See kth order Fibonacci numbers.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:28:14 2002.
HTML page formatted Thu Apr 17 10:50:09 2003.

This page's URL is http://www.nist.gov/dads/HTML/pthOrderFibonacciNumbers.html


P-tree

(data structure)

Definition: (1) A spatial access method that defines hyperplanes, in addition to the orthogonal dimensions, which node boundaries may parallel. Space is split by hierarchically nested polytopes (multidimensional boxes with nonrectangular sides). The R-tree is a special case which has no additional hyperplanes. (2) A spatial access method which splits space by hierarchically nested polytopes. The R-tree is a special case in which all polytopes are boxes.

Note: (2) by Jagadish after [GG98].

Author: PEB

Implementation

Implementations of P-tree (1) insert (C and Pascal), delete max (C and Pascal), and head (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 7 10:58:08 2002.
HTML page formatted Thu Apr 17 10:50:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/ptree.html


purely functional language

(definition)

Definition: A language that does not allow any destructive operation---one which overwrites data---such as the assignment operation. Purely functional languages are free of side effects, i.e., invoking a function has no effect other than computing the value returned by the function.

Note: From Algorithms and Theory of Computation Handbook, page 5-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:43:53 2000.
HTML page formatted Mon May 12 10:30:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/purelyfnctnl.html


pushdown

(data structure)

Definition: See stack.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:55:14 2003.
HTML page formatted Thu Apr 17 10:50:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/pushdown.html


pushdown automaton

(definition)

Definition: A restricted Turing machine where the tape acts as a pushdown store (or stack, where only the latest element can be read), with an extra one-way read-only input tape.

Also known as PDA.

See also deterministic pushdown automaton.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:18:05 2002.
HTML page formatted Mon May 12 10:30:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/pushdownautm.html


pushdown transducer

(definition)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 14:27:09 1999.
HTML page formatted Thu Apr 17 10:50:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/pushdownTransducer.html


p-way merge sort

(algorithm)

Definition: See k-way merge sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 15:53:35 2003.
HTML page formatted Thu Apr 17 10:50:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/pwayMergeSort.html


qm sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also sort.

Author: PEB

Implementation

demonstration and source code (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:37 2003.
HTML page formatted Thu Apr 17 10:50:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/qmsort.html


qmsort

(algorithm)

Definition: See qm sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:37 2003.
HTML page formatted Thu Apr 17 10:50:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/qmsortI.html


q sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also sort.

Author: PEB

Implementation

demonstration and source code (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:30 2003.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/qsort.html


qsort

(algorithm)

Definition: See q sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:30 2003.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/qsortI.html


quadratic hashing

(algorithm)

Definition: See quadratic probing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:31:48 2003.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/quadraticHashing.html


quadratic probing

(algorithm)

Definition: A method of open addressing for a hash table in which a collision is resolved by putting the item in the next empty place given by a probe sequence. The space between places in the sequence increases quadratically.

See also double hashing, linear probing.

Note: Deletion may be hard because finding collisions again relies on not creating empty spots. One solution is to mark an entry as deleted so it can be reused for insertion, but the search list is intact.

Author: PEB

Implementation

insert (C and Pascal)

More information

An explanation of how quadratic equations got their name.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:31:48 2003.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/quadraticprb.html


quadtree

(data structure)

Definition: A tree where each node is split along all d dimensions, leading to 2d children.

See also octree, quadtree complexity theorem, linear quadtree, BSP-tree.

Note: It was originally designed for 2-dimensional data (pictures), so each node had four children, hence quadtree. After [GG98].

Author: PEB

Implementation

Spatial Linear Quadtree with Constant Time Node Traversal (C++) including man pages, examples, etc., insert (C), search (C), bitmap utilities (C).

More information

Quadtree ...

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 10:20:11 2003.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/quadtree.html


quadtree complexity theorem

(definition)

Definition: The number of nodes in a quadtree region representation for a simple polygon (i.e. with nonintersecting edges and without holes) is O(p+q) for a 2q × 2q image with perimeter p measured in pixel widths. In most cases, q is negligible, and thus, the number of nodes is proportional to the perimeter. It also holds for three-dimensional data where the perimeter is replaced by surface area, and in general for d-dimensions where instead of perimeter we have the size of the (d-1)-dimensional interfaces between the d-dimensional objects.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:43:38 2000.
HTML page formatted Mon May 12 10:30:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/quadtreecplx.html


quad trie

(data structure)

Definition: (no definition here, yet, but you can help.)

Implementation

insert (C), search (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:12:23 2001.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/quadtrie.html


quantum computation

(definition)

Definition: Computation based on quantum mechanical effects, such as superposition and entanglement, in addition to classical digital manipulations.

See also Shor's algorithm, Grover's algorithm, Simon's algorithm, Deutsch-Jozsa algorithm, model of computation.

Note: Quantum computers can, in theory, make computations which are impossible to do exactly with classical computers or achieve exponential speedup. Since nobody has yet (as of November 2002) implemented more than a few bit operations, problems such as decoherence and measurement error may limit quantum computation to a few specialized roles.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:49:01 2002.
HTML page formatted Thu Apr 17 10:50:11 2003.

This page's URL is http://www.nist.gov/dads/HTML/quantumComputation.html


queue

(data structure)

Definition: A set of items in which only the earliest added item may be accessed. Basic operations are add (to the tail) or enqueue and delete (from the head) or dequeue. Delete returns the item removed. Also known as "first-in, first-out" or FIFO.

Formal Definition: It is convenient to define delete or dequeue in terms of remove and a new operation, front. The operations new(), add(v, Q), front(Q), and remove(Q) may be defined as follows.

  1. new() returns a queue
  2. front(add(v, new())) = v
  3. remove(add(v, new())) = new()
  4. front(add(v, add(w, Q))) = front(add(w, Q))
  5. remove(add(v, add(w, Q))) = add(v, remove(add(w, Q)))
where Q is a queue and v and w are values.

Also known as FIFO.

See also bounded queue, deque, stack, abstract data type, priority queue.

Author: PEB

Implementation

(Java). Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java)

More information

Tutorial, diagrams, and code (C++) of linked list and fixed array (shifted and circular) implementation. Demonstrations with dynamic array, fixed array, and linked list implementations.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:01:26 2003.
HTML page formatted Thu Apr 17 10:50:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/queue.html


quick search

(algorithm)

Definition: A string matching algorithm that compares characters from the end of the search string to its beginning. When a character doesn't match, the next character in the text beyond the search string determines where the next possible match begins.

See also optimal mismatch, Boyer-Moore.

Note: After [Sund98].

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:16:38 2003.
HTML page formatted Thu Apr 17 10:50:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/quicksearch.html


quickselect

(algorithm)

Definition: See Select.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:21:44 2002.
HTML page formatted Thu Apr 17 10:50:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/quickselect.html


quicksort

(algorithm)

Definition: An in-place sort algorithm that uses the divide and conquer paradigm. It picks an element from the array (the pivot), partitions the remaining elements into those greater than and less than this pivot, and recursively sorts the partitions. There are many variants of the basic scheme above: to select the pivot, to partition the array, to stop the recursion on small partitions, etc.

See also balanced quicksort, three-way radix quicksort, introspective sort, sort, Select.

Note: Quicksort has running time upper-case Theta (n2) in the worst case, but it is typically O(n log n). In practical situations, a finely tuned implementation of quicksort beats most sort algorithms, including sort algorithms whose theoretical complexity is O(n log n) in the worst case.

Quicksort with Bentley-McIlroy 3-way partitioning is within a constant of optimal for comparison sorts.

Select can be used to always picks good pivots, thus giving a variant with O(n log n) worst-case running time.

Author: CM

Implementation

Robert Sedgewick's talk showing that with Bentley-McIlroy 3-way partitioning Quicksort Is Optimal (C) (pdf format) with discussion and proof. animation and code (Java); demos and code for enhanced, fast, quicksort, and quicksort with bubble sort (Java); explanation (C); (Java), (Scheme).

More information

demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:11:09 2003.
HTML page formatted Thu Apr 17 10:50:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/quicksort.html


Rabin-Karp

(algorithm)

Definition: See Karp-Rabin.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), description and animation (C), (C and Pascal), (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:05:32 2003.
HTML page formatted Thu Apr 17 10:50:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/RabinKarp.html


radix quicksort

Definition: See three-way radix quicksort.

Implementation

papers, demos, and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 14:35:43 2002.
HTML page formatted Thu Apr 17 10:50:12 2003.

This page's URL is http://www.nist.gov/dads/HTML/radixQuicksort.html


radix sort

(algorithm)

Definition: A multiple pass sort algorithm that distributes each item to a bucket according to part of the item's key beginning with the least significant part of the key. After each pass, items are collected from the buckets, keeping the items in order, then redistributed according to the next most significant part of the key.

See also bucket sort, three-way radix quicksort, American flag sort.

Note: This is the algorithm used by letter-sorting machines in the post office. Since keys are not compared against each other, sorting time is O(cn), where c depends on the size of the key and number of buckets. You have probably used a form of this if you sorted lots of papers alphabetically: you put each paper in its pile (or bucket), A's, B's, C's, D's, etc., then sort each pile.

Here is a simple example of the sort. Suppose the input keys are 34, 12, 42, 32, 44, 41, 34, 11, 32, and 23. Four buckets are appropriate. The first pass distributes them by the least significant digit. After the first pass we have the following, where each line is a bucket.
41 11
12 42 32 32
23
34 44 34
We collect these, keeping their relative order: 41 11 12 42 32 32 23 34 44 34. Now we distribute by the next most significant digit, in this case, the highest digit, and we get the following.
11 12
23
32 32 34 34
41 42 44
When we collect them, they are in order: 11 12 23 32 32 34 34 41 42 44.

[CLR90] gives an in-place variant of radix sort by using a stable sort on each digit of the key.

Author: PEB

Implementation

Explanation and code (Pascal); (C and Pascal); analysis, explanation, and code (C); tutorial with examples and code (C++).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:45:27 2003.
HTML page formatted Tue May 13 15:55:10 2003.

This page's URL is http://www.nist.gov/dads/HTML/radixsort.html


ragged matrix

(data structure)

Definition: A matrix having irregular numbers of items in each row.

See also uniform matrix, sparse matrix.

Note: An upper triangular matrix or a lower triangular matrix are usually not thought of as being ragged since the number of items in each row is regular (changing by one from row to row).

For example

1 | 16 | 18 | 9 | 12
6
1 | 8 | 3 | 0

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 24 16:29:34 2003.
HTML page formatted Thu Apr 17 10:50:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/raggedmatrix.html


Raita

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:03:40 2003.
HTML page formatted Thu Apr 17 10:50:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/raita.html


random access machine

(definition)

Definition: A model of computation whose memory consists of an unbounded sequence of registers, each of which may hold an integer. In this model, arithmetic operations are allowed to compute the address of a memory register.

See also cell probe model, pointer machine, Turing machine, big-O notation.

Note: From Algorithms and Theory of Computation Handbook, page 5-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:43:30 2000.
HTML page formatted Mon May 12 10:30:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomaccess.html


randomization

(algorithmic technique)

Definition: (no definition here, yet, but you can help.)

See also randomized binary search tree.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 25 10:55:58 1999.
HTML page formatted Thu Apr 17 10:50:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizatn.html


randomized rounding

(algorithm)

Definition: A probabilistic method to convert a solution of a relaxed problem into an approximate solution to the original problem.

See also approximation algorithm, integer linear program.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:43:26 2000.
HTML page formatted Mon May 12 10:30:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizdrnd.html


randomized algorithm

(definition)

Definition: Any algorithm that makes some random (or pseudorandom) choices.

See also Monte Carlo algorithm, Las Vegas algorithm, skip list, adversary, pseudo-random number generator, probabilistic algorithm.

Note: From Algorithms and Theory of Computation Handbook, pages 10-17 and 15-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Some algorithms make random choices initially to avoid any fixed worst case.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:02:11 2002.
HTML page formatted Mon May 12 10:30:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizedAlgo.html


randomized binary search tree

(data structure)

Definition: A binary search tree in which nodes have a randomly assigned priority. Updates keep priorities in heap order instead of keeping balance information and doing rebalance operations.

Also known as cartesian tree, RBST.

See also randomized search tree, treap.

Note: Also called a treap, but strictly a treap does not define how priorities are assigned.

Because of the random priority, the trees are always expected to be nearly balanced, regardless of the number, kind and order of updates made. The expected worst case is O(log n) for any update or search in a RBST of size n.

Author: CM

Implementation

Oleg Kiselyov's (Scheme)

More information

Abstract of papers about Randomized Binary Search Trees and Randomized K-Dimensional Binary Search Trees

Conrado Martinez and Salvador Roura, Randomized Binary Search Trees, Journal of the ACM, 45(2):288-323, March 1998.

Jean Vuillemin, A Unifying Look at Data Structures, CACM, 23(4):229-239, April 1980.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:01:52 2002.
HTML page formatted Thu Apr 17 10:50:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizedBinarySearchTree.html


randomized complexity

(definition)

Definition: The expected running time of the best possible randomized algorithm over the worst input.

See also distributional complexity, worst-case cost, lower bound.

Note: From Algorithms and Theory of Computation Handbook, page 26-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:42:59 2000.
HTML page formatted Mon May 12 10:30:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizedComplexity.html


randomized polynomial time

(definition)

Definition: See RP.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 15:25:01 2002.
HTML page formatted Thu Apr 17 10:50:13 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizedPolynomialTime.html


randomized search tree

(data structure)

Definition: See randomized binary search tree.

See also treap.

Author: PEB

More information

Raimund G. Seidel and Cecilia R. Aragon, Randomized Search Trees, Algorithmica, 16(4/5):464-497 (1996).
Also in 30th Annual Symposium on Foundations of Computer Science, pages 540-545, Research Triangle Park, North Carolina, 30 October-1 November 1989. IEEE.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:33:59 2002.
HTML page formatted Thu Apr 17 10:50:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomizedSearchTree.html


random number generator

(algorithm)

Definition: See pseudo-random number generator.

Also known as RNG.

See also spectral test.

Note: Any computer program is likely to generate pseudo-random numbers, not actually random numbers. This is important when, say, simulations are sensitive to subtle patterns in the "random" numbers used.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 5 15:14:00 2002.
HTML page formatted Thu Apr 17 10:50:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomnumgen.html


random sampling

(algorithmic technique)

Definition: Using a randomly selected sample of the data to help solve a problem on the whole data.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:42:55 2000.
HTML page formatted Mon May 12 10:30:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomsampl.html


Randomized-Select

Definition: (no definition here, yet, but you can help.)

Note: algorithm

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 3 13:42:31 1999.
HTML page formatted Thu Apr 17 10:50:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/randomzdSlct.html


range

(definition)

Definition: The possible results of a function or relation. For instance, the range of cosine is [-1,+1].

See also domain.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Jul 31 12:23:18 1999.
HTML page formatted Thu Apr 17 10:50:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/range.html


range sort

(algorithm)

Definition: A bucket sort where the function to determine the bucket is based on the range of possible keys.

See also distribution sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:32:10 2000.
HTML page formatted Thu Apr 17 10:50:14 2003.

This page's URL is http://www.nist.gov/dads/HTML/rangesort.html


rank

(definition)

Definition: For a given match, this is the number of matches in a longest chain terminating with that match, inclusive.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:42:49 2000.
HTML page formatted Mon May 12 10:30:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/rank.html


Ratcliff/Obershelp pattern recognition

(algorithm)

Definition: Compute the similarity of two strings as the number of matching characters divided by the total number of characters in the two strings. Matching characters are those in the longest common subsequence plus, recursively, matching characters in the unmatched region on either side of the longest common subsequence.

See also string matching.

Author: PEB

Implementation

(C)

More information

John W. Ratcliff and David Metzener, Pattern Matching: The Gestalt Approach, Dr. Dobb's Journal, page 46, July 1988.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 5 10:17:31 2001.
HTML page formatted Thu Apr 17 10:50:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/ratcliffObershelp.html


RBST

(data structure)

Definition: See randomized binary search tree.

Author: CM

Implementation

Oleg Kiselyov's (Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:01:52 2002.
HTML page formatted Thu Apr 17 10:50:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/rbst.html


reachable

(definition)

Definition: A vertex v is reachable from another vertex u if there is a path of any length from u to v.

See also sink, source, connected graph.

Note: Usually applied only to directed graphs, since any vertex in a connected, undirected graph is reachable from any other vertex.

Author: JM

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 17 14:20:42 2000.
HTML page formatted Thu Apr 17 10:50:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/reachable.html


rebalance

(algorithm)

Definition: Restore balance to a tree.

See also relaxed balance, right rotation, left rotation.

Author: PEB

Implementation

(Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:07:42 2001.
HTML page formatted Thu Apr 17 10:50:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/rebalance.html


recognizer

(definition)

Definition: A finite state machine with one or more states designated as accepting states. An input string is accepted if there is a path from the start state to an accepting state.

See also deterministic finite state machine, nondeterministic finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 09:34:19 2000.
HTML page formatted Thu Apr 17 10:50:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/recognizer.html


rectangular matrix

(data structure)

Definition: An n × m matrix, or, one whose size may not be the same in both dimensions.

See also square matrix.

Author: PEB

Implementation

(Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jul 6 09:25:28 2000.
HTML page formatted Thu Apr 17 10:50:15 2003.

This page's URL is http://www.nist.gov/dads/HTML/rectangmatrx.html


rectilinear

(definition)

Definition: Distance, paths, lines, etc. which are always parallel to axes at right angles. For example, a path along the streets of Salt Lake City or the moves of a rook in chess.

See also Manhattan distance, Euclidean distance, Lm distance.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:35:18 2001.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/rectilinear.html


rectilinear distance

(definition)

Definition: See Manhattan distance.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 19 11:07:33 2003.
HTML page formatted Mon May 19 11:13:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/rectilinearDistance.html


rectilinear Steiner tree

(definition)

Definition: A minimum-length rectilinear tree connecting a set of points, called terminals, in the plane. This tree may include points other than the terminals, which are called Steiner points.

See also Steiner tree, Euclidean Steiner tree.

Author: JLG

Implementation

GeoSteiner (C) - software for computing steiner trees.

More information

Steiner Tree page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 17 09:20:56 2003.
HTML page formatted Thu Apr 17 10:50:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/rectilstntre.html


recurrence relation

(definition)

Definition: The specification of a sequence of values in terms of earlier values in the sequence and base values.

Also known as recurrence equations.

See also Master theorem.

Note: Fibonacci numbers may be described by the recurrence relation F(n) = F(n-1) + F(n-2), where F(1)=1 and F(2)=1. Execution times are often computed by setting up, then solving, a unary recurrence relation, such as T(n) = 2T(n/4) + 2.

From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 4 10:14:04 2001.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recurrence.html


recurrence equations

(definition)

Definition: See recurrence relation.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 4 10:14:04 2001.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recurrenceEquations.html


recurrences

(definition)

Definition: See recurrence relation.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 4 10:14:04 2001.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recurrences.html


recursion

(algorithmic technique)

Definition: An algorithmic technique where a function, in order to accomplish a task, calls itself with some part of the task.

See also iteration, divide and conquer, tail recursion, collective recursion, divide and marriage before conquest, recursive.

Note: Recursive solutions involve two major parts, the second part having three components.

  • base case(s), in which the problem is simple enough to be solved directly, and
  • recursive case(s). A recursive case has three components:
    1. divide the problem into one or more simpler or smaller parts of the problem,
    2. call the function (recursively) on each part, and
    3. combine the solutions of the parts into a solution for the problem.
Depending on the problem, any of these may be trivial or complex.

Here are some exercises to help you learn recursion. Although recursion may not be the best way to write some of the functions here, it is good practice. There are more exercises at Erwin's Programming with Recursion tutorial.

  1. Write a function to compute the sum of all numbers from 1 to n.
  2. Write a function to compute 2 to the power of a non-negative integer.
  3. Write a function to compute any number to the power of a non-negative integer.
  4. Write a function to compute the nth Fibonacci number.
  5. Write a function to compute the greatest common divisor (GCD) of two positive integers with Euclid's algorithm.
  6. Write a function to compute GCD based on the following relations
    • GCD(2m, 2n) = 2 * GCD(m, n)
    • GCD(2m, 2n+1) = GCD(m, 2n+1)
    • GCD(2m+1, 2n+1) = GCD(n-m, 2m+1) if m < n
    • GCD(m, m) = m
    (after "ML for the Working Programmer", page 49).
  7. Write a function to compute any number to the power of a positive integer using squaring, that is, x2n = (xn)2 and x2n+1 = x × x2n. (after "ML for the Working Programmer", pages 45 and 46).
  8. Write a function to compute the integer square root of a non-negative integer using square_root(4x) = 2*square_root(x). (after "ML for the Working Programmer", pages 48 and 49).

Authors: PEB,PR

More information

See dynamic algorithms for an example of one trade-off between speed and clarity for a recursive vs. an iterative implementation. See the notes for the towers of Hanoi puzzle for another recursive and iterative solution. Erwin's Programming with Recursion tutorial.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Sep 27 10:11:04 2002.
HTML page formatted Thu Apr 17 10:50:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursion.html


recursion tree

(definition)

Definition: A method to analyze the complexity of an algorithm by diagramming the recursive function calls.

Formal Definition: A recursion tree T(p) of degree p is either (i) null or (ii) has p children which are recursion trees.

Note: Also known as an "R-tree".

Author: PEB

More information

A longer definition

After [GCG92] and [CLR90, page 59]. Suggested by Rama Maiti, 19 August 2001.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:40:47 2001.
HTML page formatted Thu Apr 17 10:50:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursionTree.html


recursion termination

(definition)

Definition: The point when conditions are met and a recursive algorithm ceases calling itself and begins to return values.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 25 11:53:28 1999.
HTML page formatted Thu Apr 17 10:50:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursiontrm.html


recursive

(data structure)

Definition: (1) A data structure that is partially composed of other instances of the data structure. For instance, a tree is composed of smaller trees (subtrees) and leaf nodes, and a list may have other lists as elements. (2) An algorithm in which functions might call themselves. For instance, quicksort or heapify.

See also recursion.

Note: Infinite data structures may be represented by having a tree include (point back to) itself recursively, a list include itself, etc. Recursive data structures are often best handled with a recursive algorithm, or an algorithm using recursion.

Author: PEB

More information

See the entry at recursion for links, explanations, exercises, cross references, etc.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Sep 27 09:55:41 2002.
HTML page formatted Thu Apr 17 10:50:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursive.html


recursive doubling

(definition)

Definition: See pointer jumping.

Note: The term comes the fact that if all the pointers are jumped at every step, the pointers point double the distance with each recursion. From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:31:23 2002.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursivedbl.html


recursive language

(definition)

Definition: See decidable language.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:21:50 2002.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursiveLanguage.html


recursively enumerable language

(definition)

Definition: A language accepted by a Turing machine.

See also decidable language.

Note: From Algorithms and Theory of Computation Handbook, pages 24-19 and 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:22:48 2002.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursivelyEnumerableLang.html


recursively solvable

(definition)

Definition: See decidable.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:22:08 2002.
HTML page formatted Mon May 12 10:30:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursivelySolvable.html


recursive data structure

(definition)

Definition: A data structure that is partially composed of smaller or simpler instances of the same data structure. For instance, a tree is composed of smaller trees (subtrees) and leaf nodes, and a list may have other lists as elements.

See also iteration, recursion, recursive.

Authors: PR,PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 18 13:51:28 2002.
HTML page formatted Thu Apr 17 10:50:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/recursivstrc.html


red-black tree

(data structure)

Definition: A nearly-balanced tree which uses an extra bit per node to maintain balance. No leaf is more than twice as far from the root as any other.

Formal Definition: A red-black tree with n internal nodes has height at most 2 log2(n+1).

Also known as symmetric binary B-tree.

See also left rotation, right rotation, AVL tree, height-balanced tree, B-tree.

Note: The extra bit "colors" the node red or black, hence the name. These were called "symmetric binary B-trees" when first invented.

Author: PEB

Implementation

analysis, explanation, examples, and code (C), Ben Pfaff's libavl (C) including pointers to other implementations, Kazlib (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:24:56 2003.
HTML page formatted Wed Jun 11 14:28:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/redblack.html


reduced basis

(definition)

Definition: A basis for a lattice that is nearly orthogonal.

Note: From Algorithms and Theory of Computation Handbook, page 32-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:37 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/reducedbasis.html


reduced digraph

(definition)

Definition: (no definition here, yet, but you can help.)

See also transitive reduction.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 8 09:53:35 1999.
HTML page formatted Thu Apr 17 10:50:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/reducedDigraph.html


reduced ordered binary decision diagram

(data structure)

Definition: (no definition here, yet, but you can help.)

Also known as ROBDD.

See also BDD, OBDD.

Note: Randy Bryant's homepage

More information

Randy E. Bryant, Graph-Based Algorithms for Boolean Function Manipulation, IEEE Transactions on Computers, C-35(8):677-691, August, 1986.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:31:20 2002.
HTML page formatted Thu Apr 17 10:50:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/reducedOrderedBDD.html


reduction

(definition)

Definition: A computable transformation of one problem into another.

See also NP-complete, Turing reduction, Cook reduction, Karp reduction, l-reduction, many-one reduction, polynomial-time reduction.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:33 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/reduction.html


reflexive

(definition)

Definition: A binary relation R for which a R a for all a.

See also symmetric, transitive, irreflexive.

Note: The relation "equals" is reflexive since everything is equal to itself. However the relation "less than" is not reflexive. The relation "likes" is not reflexive either since some people do not like themselves.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 12 09:23:32 2000.
HTML page formatted Thu Apr 17 10:50:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/reflexive.html


regular decomposition

(definition)

Definition: A space decomposition method that partitions the underlying space by recursively halving it across the various dimensions instead of permitting the partitioning lines to vary.

See also fixed-grid method, bucketing method.

Note: From Algorithms and Theory of Computation Handbook, page 18-24, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:29 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/regular.html


rehashing

(algorithm)

Definition: See double hashing.

Author: PEB

Implementation

insert (C and Pascal), search (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 13:22:22 2002.
HTML page formatted Thu Apr 17 10:50:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/rehashing.html


r.e. language

(definition)

Definition: See recursively enumerable language.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:22:48 2002.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/reLanguage.html


relation

(definition)

Definition: A computation which takes some inputs and yields an output. Any particular input may yield different outputs at different times. Formally, a mapping from each element in the domain to one or more elements in the range.

See also function.

Note: Cosine is a function, since every angle has a specific cosine. Its inverse cos-1(x) is a relation, since a cosine value maps to many (for this relation, infinitely many) angles.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Jul 31 12:11:19 1999.
HTML page formatted Thu Apr 17 10:50:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/relation.html


relational structure

(data structure)

Definition: The counterpart in formal logic of a data structure or class instance in the object-oriented sense. Examples are strings, directed graphs, and undirected graphs. Sets of relational structures generalize the notion of languages as sets of strings.

Note: From Algorithms and Theory of Computation Handbook, page 29-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:20 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/relational.html


relative performance guarantee

(definition)

Definition: The maximum ratio by which the result of a ρ-approximation algorithm may depart from the optimal solution.

Also known as performance ratio.

See also absolute performance guarantee, optimization problem.

Note: From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:46:59 2002.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/relativePerformGuar.html


relaxation

(definition)

Definition: An optimization problem with an enlarged feasible region (and extended objective function) compared with an original optimization problem. Typically, the relaxation is considerably easier to solve than the original.

Note: From Algorithms and Theory of Computation Handbook, pages 32-39 and 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:11 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/relaxation.html


relaxed balance

(definition)

Definition: When rebalancing a search tree is independent of updating the tree.

See also balanced tree, rebalance.

Note: Normally rebalancing is tightly coupled to updating: as soon as the tree is updated, rebalancing operations are applied until the given balance constraints are again fulfilled. In search trees with relaxed balance, updating and rebalancing are processes which can be controlled separately. Typically, this means that balance constraints must be relaxed such that an update can leave the tree in a well-defined state. Thus, the assumptions under which rebalancing is carried out change. This poses the problem of still carrying out the rebalancing efficiently.

Author: KSL

More information

Relaxed Balance page

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 22 08:53:01 1999.
HTML page formatted Thu Apr 17 10:50:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/relaxdbalanc.html


rescalable

(definition)

Definition: An optimization for which given any instance of the problem and integer upper-case lambda >0, there is an easily computed second instance that is the same except that the objective function for the second instance is (element-wise) upper-case lambda times the objective function of the first instance. For such problems, the best one can hope for is a relative performance guarantee, not an absolute performance guarantee.

Note: From Algorithms and Theory of Computation Handbook, page 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:07 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/rescalable.html


restricted universe sort

(definition)

Definition: A sort algorithm that operates on the basis that the keys are members of a restricted set of values. They may not require comparisons of keys to perform the sorting.

See also comparison sort, counting sort, bucket sort, radix sort, universe.

Note: From Algorithms and Theory of Computation Handbook, page 3-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:41:02 2000.
HTML page formatted Mon May 12 10:30:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/restricted.html


result cache

Definition: (no definition here, yet, but you can help.)

Note: memoize - page 408 of McMillan article (see mnemodex)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 3 16:59:29 2000.
HTML page formatted Thu Apr 17 10:50:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/resultcache.html


Reverse Colussi

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Colussi.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:03:31 2003.
HTML page formatted Thu Apr 17 10:50:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/reverseColus.html


Reverse Factor

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Turbo Reverse Factor.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:03:26 2003.
HTML page formatted Thu Apr 17 10:50:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/reversefactr.html


R-file

(data structure)

Definition: A spatial access method which divides space into a hierarchically of nested boxes. Objects are indexed in the lowest cell which completely contains them.

See also BANG file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:34:35 2001.
HTML page formatted Thu Apr 17 10:50:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/rfile.html


rho-approximation algorithm

(algorithmic technique)

Definition: See rho -approximation algorithm.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:00:56 2002.
HTML page formatted Mon May 12 10:30:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/rhoapproximationAlgorithm.html


ρ-approximation algorithm

(algorithmic technique)

Definition: An approximation algorithm guaranteed to find a solution at most (or at least, as appropriate) rho times the optimum. The ratio rho is the performance ratio or relative performance guarantee of the algorithm.

Note: From Algorithms and Theory of Computation Handbook, pages 32-39 and 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:00:56 2002.
HTML page formatted Mon May 12 10:30:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/rhoapproxmtn.html


Rice's method

(definition)

Definition: A method of complex asymptotics that can handle certain alternating sums arising in the analysis of algorithms.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:40:54 2000.
HTML page formatted Mon May 12 10:30:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/ricesmethod.html


right rotation

(algorithm)

Definition: (1) In a binary search tree, pushing a node N down and to the right to balance the tree. N's left child replaces N, and the left child's right child becomes N's left child. (2) In an array, moving all items to the next higher location. The last item is moved to the first location, which is now vacant. (3) In a list, removing the tail and inserting it at the head.

Also known as rotate right.

See also left rotation, double right rotation, rotation.

Note: Also known as right single rotation, in contrast with a double right rotation.

Author: BB

Implementation

(C and Pascal)

More information

A great series of animations explaining rotations.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:24:43 2002.
HTML page formatted Thu Apr 17 10:50:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/rightrotatn.html


right single rotation

(algorithm)

Definition: See right rotation.

Author: BB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:24:43 2002.
HTML page formatted Thu Apr 17 10:50:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/rightSingleRotation.html


right-threaded tree

(data structure)

Definition: A variant of a threaded tree in which only the right thread, i.e. link to the successor, of each node is maintained.

See also binary search tree.

Note: Keeping only the right thread, rather than both left and right threads, makes it quicker to find the next greater value and cheaper to insert and delete.

Author: PEB

Implementation

Ben Pfaff's explanations and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:24:24 2003.
HTML page formatted Wed Jun 11 14:28:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/rightThreadedTree.html


RNG

(algorithm)

Definition: See random number generator.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 5 15:14:00 2002.
HTML page formatted Thu Apr 17 10:50:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/rng.html


ROBDD

(data structure)

Definition: See reduced ordered binary decision diagram.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 20 11:31:20 2002.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/robdd.html


root

(definition)

Definition: The distinguished initial or fundamental item of a tree. The only item which has no parent. See the figure at tree.

See also leaf.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Sep 18 12:42:45 1998.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/root.html


root balance

(definition)

Definition: See balance.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:29:12 2002.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/rootBalance.html


rooted tree

(definition)

Definition: A tree in which one node is designated as the root.

Also known as oriented tree.

See also free tree.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 1 16:53:50 2002.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/rootedtree.html


rotate left

(algorithm)

Definition: See left rotation.

Author: BB

Implementation

(Pascal), (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:21:23 2002.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/rotateLeft.html


rotate right

(algorithm)

Definition: See right rotation.

Author: BB

Implementation

(C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:24:43 2002.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/rotateRight.html


rotation

(definition)

Definition: To switch children and parents among two or three adjacent nodes to restore balance to a tree.

See also left rotation, right rotation, balanced tree.

Note: A rotation may change the depth of some nodes, but does not change their relative ordering.

Author: PMS

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 24 10:06:25 2000.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/rotation.html


rough graph

(definition)

Definition: (no definition here, yet, but you can help.)

Note: see? "Rough Sets", CACM Nov 1995, p 89, "Myths about Rough Set Theory", CACM Nov 1998, p 102, and "Evidence for RST claims", CACM Mar 1999, p 31.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 12 12:23:14 1999.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/roughgraph.html


RP

(definition)

Definition: The class of languages for which membership can be determined in polynomial time by a probabilistic Turing machine with no false acceptances and less than half false rejections. "RP" means "Randomized Polynomial" time.

Formal Definition: For a language, S, there exists a probabilistic Turing machine, M, that accepts or rejects any string in polynomial time. If w not in S, M rejects w. If w in S, M accepts w with a probability at least 1/2.

Also known as randomized polynomial time.

See also NP, ZPP, BPP, Monte Carlo algorithm.

Note: By repeating the run, the chance of incorrect rejection may be arbitrarily reduced.

After [Hirv01, page 19].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 15:25:01 2002.
HTML page formatted Thu Apr 17 10:50:21 2003.

This page's URL is http://www.nist.gov/dads/HTML/rp.html


R+-tree

(data structure)

Definition: A spatial access method which splits space with hierarchically nested boxes. Objects are indexed in each box which intersects them. The tree is height-balanced.

See also R-file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:34:22 2001.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/rplustree.html


R*-tree

(data structure)

Definition: A spatial access method which splits space in hierarchically nested, possibly overlapping, boxes. The tree is height-balanced. It is similar to the R-tree, but reinserts entries upon overflow, rather than splitting.

Note: After [GG98].

Author: PEB

Implementation

In the Spatial Index Library (C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 13 09:51:28 2002.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/rstartree.html


R-tree

(data structure)

Definition: (1) A spatial access method which splits space with hierarchically nested, and possibly overlapping, boxes. The tree is height-balanced. (2) A recursion tree.

See also B-tree, P-tree (2), P-tree (3), R+-tree, R*-tree.

Author: PEB

Implementation

(Java), (C++)

More information

(1) After [GG98]. Also found in Algorithms and Theory of Computation Handbook, page 18-24. (2) Used in [GCG92]. Suggested by Rama Maiti, 19 August 2001.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Nov 13 09:48:39 2002.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/rtree.html


run time

(definition)

Definition: (1) The amount of time needed to execute an algorithm. (2) The time when a compiled program is executing, versus compile time.

See also big-O notation, polynomial time.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:42:05 2000.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/runtime.html


saguaro stack

(data structure)

Definition: See cactus stack.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:16:22 2002.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/saguaroStack.html


SAM

(definition)

Definition: See spatial access method.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 14:17:13 2001.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/sam.html


saturated edge

(definition)

Definition: An edge in a flow network which has the maximum possible flow.

See also blocking flow, flow function, capacity.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 7 16:56:43 2000.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/saturatedEdge.html


SBB tree

(data structure)

Definition: A symmetric binary B-tree. Now known as a red-black tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 12 09:28:46 2000.
HTML page formatted Thu Apr 17 10:50:22 2003.

This page's URL is http://www.nist.gov/dads/HTML/sbbtree.html


scan

(algorithm)

Definition: A parallel operation in which each element in an array or linked list receives the sum of all previous elements.

Also known as prefix sums.

Note: Also called prefix sums. From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 16:45:18 2002.
HTML page formatted Mon May 12 10:30:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/scan.html


scapegoat tree

(algorithm)

Definition: A binary search tree that needs no balance information. Search time is logarithmic, and the amortized cost of update is logarithmic.

Note: I. Galperin and R. L. Rivest, Scapegoat trees, Proc. 4th ACM-SIAM Symp. on Discrete Algorithms (SODA), 1993, pp. 165-174.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 27 11:05:11 2003.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/scapegoatTree.html


search

(algorithm)

Definition: To look for a value or item in a data structure. There are dozens of algorithms, data structures, and approaches.

See also array, binary search, B-tree, dictionary, hash table, heap, inverted index, linked list, quadtree, select kth element, linear search, string matching, select and partition.

Note: For more information, see the data structure in question or terms related to searching.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:18:30 2002.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/search.html


search tree

(data structure)

Definition: A tree where every subtree of a node has values less than any other subtree of the node to its right. The values in a node are conceptually between subtrees and are greater than any values in subtrees to its left and less than any values in subtrees to its right.

See also search tree property, binary search tree, B-tree, (a, b)-tree, k-d tree, move-to-root heuristic.

Note: A search tree which is also a binary tree is a binary search tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 11 12:59:18 2002.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/searchtree.html


search tree property

(definition)

Definition: When the key of every node of a binary tree is larger than the key of its left child and smaller than its right child.

Note: A binary tree which has this property is a binary search tree.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 16 14:29:42 1999.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/searchtrprop.html


secant search

(algorithm)

Definition: Search a sorted array by estimating the next position to check based on the values at the two previous positions checked.

See also binary search, interpolation search.

Note: It is called "secant search" because it uses the secant of the function at two successive points to approximate the derivative in the Newton-Raphson formula.

To find a key k in an array v with indexes from 0 to n-1, begin with x0 = 0, x1 = n-1, and i = 1. Compute the next position with
xi+1 = xi - (v[xi]-k) * (xi - xi-1)/(v[xi] - v[xi-1]).
If this lies outside the range, a different method (e.g., midpoint of the range) must be used to get the next position.

Although the theoretical execution time is better than interpolation search or binary search, coding is tricky, and the gains from faster convergence are offset by higher costs per iteration.

Richard Harter <cri@tiac.net> January 2001.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 23 14:59:24 2003.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/secantSearch.html


secondary clustering

(definition)

Definition: The tendency for some collision resolution schemes to create long probe sequences of filled slots.

See also primary clustering, clustering free, hash table, open addressing, clustering, linear probing, quadratic probing, double hashing, uniform hashing.

Note: Secondary clustering increases average search time. Quadratic probing is susceptible to secondary clustering since keys which have the same hash value also have the same probe sequence.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 2 16:59:50 2000.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/secondaryclu.html


segment

(definition)

Definition: (1) The substring of a pattern delimited by two don't cares or one don't care and beginning or end of the pattern. (2) A substring.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:40:15 2000.
HTML page formatted Mon May 12 10:30:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/segment.html


Select

(algorithm)

Definition: A four-part algorithm to select the kth smallest element of an array. Part 1) Consider the array as groups of 5 elements; sort and find the median of each group. 2) Use Select recursively to find x, the median of the medians. 3) Next partition the array around x. 4) Let i be the number of elements in the low side of the partition. If k less than or equal to i, use Select recursively to find the kth element of the low side. Otherwise Select the k-ith element of the high side.

See also Find, MODIFIND, select and partition, select kth element, tournament.

Note: After [CLR90, p 190]. Sometimes called "quick select".

Author: PEB

More information

Robert W. Floyd and Ronald L. Rivest, Expected time bounds for selection, CACM, 18(3):165-172, March 1975

Robert W. Floyd and Ronald L. Rivest, Algorithm #489 SELECT, CACM, 18(3):173, March 1975

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:21:44 2002.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/select.html


select and partition

(classic problem)

Definition: Given an array A of n elements and a positive integer k less than or equal to n, find the kth smallest element of A and partition the array such that A[1], ..., A[k-1] less than or equal to A[k] less than or equal to A[k+1], ..., A[n].

See also select kth element, MODIFIND, Find, Select.

Note: Algorithms to solve this problem are often used in sort algorithms or to find the median of a set. These can be easily changed to find the kth largest element.

Author: VZ

Implementation

analysis and comparison (Rexx), (Scheme)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:39:38 2003.
HTML page formatted Thu Apr 17 10:50:23 2003.

This page's URL is http://www.nist.gov/dads/HTML/selectAndPartition.html


selection problem

(classic problem)

Definition: See select kth element.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:37:05 2003.
HTML page formatted Thu Apr 17 10:50:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/selectionProblem.html


selection sort

(algorithm)

Definition: An algorithm which orders items by repeatedly looking through remaining items to find the least one and moving it to a final location.

See also sort.

Note: Sorting can be done in place by switching the least remaining item with the item in the next position to be filled.

Author: PEB

Implementation

animation and code (Java); explanation (C); (Scheme).

More information

demonstration.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 14:19:31 2003.
HTML page formatted Thu Apr 17 10:50:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/selectionsrt.html


select kth element

(classic problem)

Definition: Find the kth smallest element of a set. Two approaches are a modified distribution sort or select and partition.

Also known as selection problem, find kth least element, kth smallest element.

See also Select, MODIFIND, Find.

Note: The select-and-partition approximately divides in half the number of elements which must be considered at each step. The modified distribution sort divides by m the number of elements at each step. The later is faster, but the former is more generally applicable.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 10:37:05 2003.
HTML page formatted Thu Apr 17 10:50:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/selectkth.html


select mode

(algorithm)

Definition: An algorithm to find the mode, or most frequently occurring value, in a group of elements.

Author: PEB

Implementation

(Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:07:37 2001.
HTML page formatted Thu Apr 17 10:50:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/selectmode.html


self-loop

(definition)

Definition: An edge of a graph which starts and ends at the same vertex.

Note: Some types of graphs allow self-loops, and some do not.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 22 15:25:08 1998.
HTML page formatted Thu Apr 17 10:50:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/selfloop.html


self-organizing heuristic

(algorithmic technique)

Definition: Heuristic that reorders a list of elements according to how the elements are accessed.

See also move-to-front heuristic, frequency count heuristic, transpose sequential search, self-organizing list.

Note: From Algorithms and Theory of Computation Handbook, page 2-14, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 14:15:46 2003.
HTML page formatted Mon May 12 10:30:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/selforganiz.html


self-organizing list

(data structure)

Definition: A list that reorders the elements based on some self-organizing heuristic to improve average access time.

Author: PEB

Implementation

Discussion of several techniques with code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:37:47 2003.
HTML page formatted Thu Apr 17 10:50:24 2003.

This page's URL is http://www.nist.gov/dads/HTML/selfOrganizingList.html


self-organizing sequential search

(algorithm)

Definition: See transpose sequential search.

Author: PEB

Implementation

Discussion and code (C); (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:32:43 2003.
HTML page formatted Thu Apr 17 10:50:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/selforganizingSequentialSearch.html


self-organizing strategy

(algorithmic technique)

Definition: See self-organizing heuristic.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 14:15:46 2003.
HTML page formatted Mon May 12 10:30:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/selforganizingStrategy.html


semidefinite programming

(definition)

Definition: A generalization of a linear program in which any subset of the variables may be constrained to form a semidefinite matrix.

Note: Used in recent results and obtaining better approximation algorithms for cut, satisfiability, and coloring problems. From Algorithms and Theory of Computation Handbook, page 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:40:02 2000.
HTML page formatted Mon May 12 10:30:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/semidefinite.html


separate chaining hashing

(data structure)

Definition: An array that is indexed by a hash function. All subsequent items with the same hash value as an existing one (a collision) are put in a single external list.

See also hash table, linear search, direct chaining hashing, coalesced hashing, collision resolution scheme.

Note: The items in the list may be searched and maintained with any of the list search algorithms.

Author: PEB

Implementation

insert (C), search (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:20:11 2003.
HTML page formatted Thu Apr 17 10:50:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/separatchain.html


separation theorem

(definition)

Definition: A theorem showing that two complexity classes are distinct. Most separation theorems have been proved by diagonalization.

See also simulation theorem.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:39:54 2000.
HTML page formatted Mon May 12 10:30:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/separatnthrm.html


sequential search

(algorithm)

Definition: See linear search.

Author: PEB

Implementation

C
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 4 10:44:53 2002.
HTML page formatted Thu Apr 17 10:50:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/sequentialSearch.html


set

(definition)

Definition: An unordered collection of values where each value occurs at most once. A group of elements with three properties: (1) all elements belong to a universe, (2) either each element is a member of the set or it is not, and (3) the elements are unordered.

Formal Definition: As an abstract data type, a set has a single query function, isIn(v, S), which tells whether an element is in the set or not, and two modifier functions, add(v, S) and remove(v, S). These may be defined as follows.

  1. new() returns a set
  2. isIn(v, new()) = false
  3. isIn(v, add(v, S)) = true
  4. isIn(v, add(u, S)) = isIn(v , S) if v not equal to u
  5. isIn(v, remove(v, S)) = false
  6. isIn(v, remove(u, S)) = isIn(v , S) if v not equal to u
where S is a set and u and v are elements.

See also bag, intersection, union, complement, difference, list, set cover.

Authors: PR,PEB

Implementation

(C++ and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 10 10:08:44 2003.
HTML page formatted Thu Apr 17 10:50:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/set.html


set complement

(definition)

Definition: See complement.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:37:59 2002.
HTML page formatted Thu Apr 17 10:50:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/setComplement.html


set cover

(classic problem)

Definition: A set of sets whose union has all members of the union of all sets. The set cover problem is to find a minimum size set.

Formal Definition: Given a set S of sets, choose c is a subset of S such that Ui=1 ci = Ui=1 Si.

See also covering.

Author: PEB

Implementation

(Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 19 15:08:50 2002.
HTML page formatted Thu Apr 17 10:50:25 2003.

This page's URL is http://www.nist.gov/dads/HTML/setcover.html


set covering problem

(classic problem)

Definition: See set cover.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 19 15:08:50 2002.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/setCoveringProblem.html


set difference

(definition)

Definition: See difference.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jan 4 09:50:30 2002.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/setDifference.html


set intersection

(definition)

Definition: See intersection.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:33:24 2002.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/setIntersection.html


set packing

(classic problem)

Definition: An optimization problem to find the largest number of mutually disjoint subsets that cover a given set of sets.

See also partition, vertex cover, bin packing problem.

Author: BB

Implementation

(Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 12:54:03 2002.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/setpacking.html


set union

(definition)

Definition: See union.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:33:37 2002.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/setUnion.html


shadow heap

(data structure)

Definition: A heap, implemented in an array, adjacent to an unordered table. The shadow is the table nodes and all their (recursive) parents, by array index, in the heap.

See also shadow merge insert, shadow merge.

Note: Personal communication from Chris L. Kuszmaul <fyodor@nas.nasa.gov>, January 1999.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 26 12:33:48 1999.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/shadowheap.html


shadow merge

(algorithm)

Definition: An algorithm to merge two heaps by concatenating the smaller heap to the larger, then reordering just the concatenated nodes and their parents to restore the heap property.

See also shadow heap.

Note: Personal communication from Chris L. Kuszmaul <fyodor@nas.nasa.gov>, January 1999.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 29 14:04:27 2000.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/shadowmerge.html


shadow merge insert

(algorithm)

Definition: An algorithm to insert a new node into a shadow heap. The new node is placed in the unordered table. When the table grows beyond some threshold size, table nodes and all their parents are reordered so everything is a heap.

See also shadow merge.

Note: If the threshold size is O(log n), where n is the size of the heap, insertion is O(log log n), amortized. Personal communication from Chris L. Kuszmaul <fyodor@nas.nasa.gov>, January 1999.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:26:29 2000.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/shadowmrgins.html


shaker sort

(algorithm)

Definition: See bidirectional bubble sort.

Authors: PEB,BB

Implementation

animation and code (Java); demonstration and source code (Java); animation and code, see cocktail sort (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:12:51 2003.
HTML page formatted Thu Apr 17 10:50:26 2003.

This page's URL is http://www.nist.gov/dads/HTML/shakerSort.html


Shannon-Fano coding

(algorithm)

Definition: A variable-length encoding based on the frequency of each character. The most frequent character is assigned 0, the next is assigned 10, the next 110, etc.

See also arithmetic coding, Huffman encoding, Zipf's law.

Note: Shannon-Fano is a minimal prefix code. Huffman is optimal for character encoding (one character-one code word) and simple to program. Arithmetic coding is better still, since it can allocate fractional bits, but more complicated.

Author: PEB

More information

Debra A. Lelewer's and Daniel S. Hirschberg's survey of data compression.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 14 16:18:31 2002.
HTML page formatted Thu Apr 17 10:50:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/shannonFano.html


shared memory

(definition)

Definition: All processors have the same global image of (and access to) all of the memory.

Note: From Algorithms and Theory of Computation Handbook, page 46-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:40:07 2000.
HTML page formatted Mon May 12 10:30:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/sharedmemory.html


Shell-Metzner sort

(algorithm)

Definition: See Shell sort.

Authors: PEB,ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:10:32 2003.
HTML page formatted Thu Apr 17 10:50:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/ShellMetznerSort.html


Shell sort

(algorithm)

Definition: The first diminishing increment sort. Originally the first increment was half the number of items to be sorted, i.e., n/2, and each succeeding increment was half the preceding increment.

Note: Based on an "adaptation by Marlene Metzner" this algorithm is referred to as the Shell-Metzner sort by John P. Grillo, A Comparison of Sorts, Creative Computing, 2:76-80, Nov/Dec 1976. Grillo cites Fredric Stuart, FORTRAN Programming, John Wiley and Sons, New York, 1969, page 294. In crediting "one of the fastest" programs for sorting, Stuart says in a footnote, "Published by Marlene Metzner, Pratt & Whitney Aircraft Company. From a method described by D. L. Shell."

If you have any lead on this Marlene Metzner or details of how or where it was published, please let me know.

Authors: PEB,ASK

Implementation

demonstration (Java); Sedgewick's Analysis of Shellsort and Related Algorithms (C); Worst-case behavior annotated for real time (WOOP/ADA), including bibliography; demonstration and source code (Java); explanation (C); (Pascal), (Scheme), (VBScript), (Fortran), (Passport for Windows PFW), (Forth), (Basic).

More information

Donald Lewis Shell, A High-Speed Sorting Procedure, CACM, 2(7):30-32, July 1959.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 7 17:10:32 2003.
HTML page formatted Thu Apr 17 10:50:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/shellsort.html


Shift-Or

(algorithm)

Definition: A string matching algorithm which keeps an array of bits, R, showing if prefixes of the pattern don't match at the current place. Before searching, mismatch arrays are computed for each character in the alphabet and saved in an array, S. For the next position, with the character c, R = shift(R) or S[c]. If the last bit of R is 0, the pattern matches.

Author: PEB

Implementation

explanation and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 10:58:17 2000.
HTML page formatted Thu Apr 17 10:50:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/shiftOr.html


Shor's algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also finite Fourier transform, quantum computation.

Note: See Arthur O. Pittenger, "An Introduction to Quantum Computing Algorithms," page 54.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 17 13:17:08 2000.
HTML page formatted Thu Apr 17 10:50:27 2003.

This page's URL is http://www.nist.gov/dads/HTML/shorsAlgo.html


shortcutting

(definition)

Definition: See pointer jumping.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:30:59 2002.
HTML page formatted Mon May 12 10:30:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/shortcutting.html


shortest common supersequence

(definition)

Definition: (no definition here, yet, but you can help.)

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:28:34 2002.
HTML page formatted Thu Apr 17 10:50:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/shortestCommonSuperseq.html


shortest common superstring

(definition)

Definition: See shortest common supersequence.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:28:34 2002.
HTML page formatted Thu Apr 17 10:50:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/shortestCommonSuperstring.html


shortest path

(classic problem)

Definition: The problem of finding the shortest path from one vertex in a graph to another vertex. "Shortest" may be least number of edges, least total weight, etc.

Also known as single-pair shortest-path problem.

See also Dijkstra's algorithm, Bellman-Ford algorithm, DAG shortest paths, all pairs shortest path, single-source shortest-path problem, kth shortest path.

Note: The problem is to find the weight of the shortest path. For a map, it is to produce the (shortest) road distance from one city to another city, not which roads to take.

A modification to most algorithms finds the shortest path, too. In predecessor[i][j] save the immediate predecessor of the shortest path from i to j. Suppose predecessor[i][j] is k; then the shortest path ends with ... -> k -> j. If predecessor[i][k] is p, the shortest path ends with ... -> p -> k -> j. Continue working backwards until you reach i.

Author: PEB

Implementation

(C, C++, Pascal, Fortran, and Mathematica)

More information

OR-Notes on network flow, including shortest path.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 26 12:44:22 2001.
HTML page formatted Thu Apr 17 10:50:28 2003.

This page's URL is http://www.nist.gov/dads/HTML/shortestpath.html


shortest spanning tree

(definition)

Definition: See minimum spanning tree.

Author: JLG

Implementation

(C++, Pascal, Fortran, C, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:49:54 2003.
HTML page formatted Fri May 23 12:52:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/shortestSpanningTree.html


shuffle

(algorithm)

Definition: See permutation.

Author: PEB

Implementation

The (Combinatorial) Object Server's information on Permutations (Pascal and C); Michael Gilleland's PermutationGenerator class (Java); Glenn Rhoads' Snippets (c); (Pascal, Fortran, Mathematica, and C); (Fortran). Perfect shuffle (Haskell).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:43:15 2003.
HTML page formatted Tue May 13 15:55:17 2003.

This page's URL is http://www.nist.gov/dads/HTML/shuffle.html


sibling

(definition)

Definition: A node in a tree that has the same parent as another node is its sibling.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 10:09:07 2001.
HTML page formatted Thu Apr 17 10:50:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/sibling.html


Sierpinski curve

Definition: (no definition here, yet, but you can help.)

See also Sierpinski triangle, Hilbert curve, C curve, Dragon curve.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jun 28 12:19:29 1999.
HTML page formatted Thu Apr 17 10:50:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/sierpinskcrv.html


Sierpinski triangle

(definition)

Definition: A fractal whose envelope is an equilateral triangle and which is composed of three half-sized Sierpinski triangles. Let p0, p1, and p2 be the vertices of an equilateral triangle. The three points midway between each pair of vertices are p01=(p0+p1)/2, p12=(p1+p2)/2, and p20=(p2+p0)/2. The Sierpinski triangle (p0, p1, p2) is the union of p0, p1, p2, and the points in the three smaller Sierpinski triangles (p0, p01, p20), (p1, p01, p12), and (p2, p20, p12).

See also Sierpinski curve.

Note: This definition leads to a recursive algorithm to draw (an approximation of) a Sierpinski triangle. If the triangle is smaller than some size, draw an equilateral triangle (the base case). Otherwise draw three triangles half the size of the original with the top vertices at p0, p01, and p20.

This definition also generalizes to higher dimensions.

Here are two more definitions by Paul Hsieh <qed@pobox.com> that are equivalent to the above, but which may be easier to understand or use.

Let X0 be the set of point of the (closed) equilateral triangle (p0, p1, p2), and let Xi+1 = Uj=0, 1, 2 {(x+pj)/2 | x in Xi}. Then the Sierpinski triangle (p0, p1, p2) is the intersection of all sets X0, X1, X2, X3, ...

The second definition uses a transitive closure. Let p0, p1, and p2 be the three vertices of an equilateral triangle. The Sierpinski triangle S on these points is the set that satisfies the following conditions.

  • p0, p1, and p2 are in S,
  • the interior of triangle ((p0 + p1)/2, (p1 + p2)/2, (p0 + p2)/2) is not in S,
  • no points outside of triangle (p0, p1, p2) are in S, and
  • s in S implies (s + pi)/2 in S for i=1,2,3.
"Interior" means not including the sides or vertices; analogous to an open (vs. a closed) interval.

Author: PEB

More information

how to generate it

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:26:24 2002.
HTML page formatted Thu Apr 17 10:50:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/sierpinskiTriangle.html


sieve of Eratosthenes

(algorithm)

Definition: An algorithm to find all prime numbers up to a certain N. Begin with an (unmarked) array of integers from 2 to N. The first unmarked integer, 2, is the first prime. Mark every multiple of this prime. Repeatedly take the next unmarked integer as the next prime and mark every multiple of the prime.

Note: Invented by Eratosthenes of Cyrene (276 BC - 194 BC).

For example, here's a beginning array.
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27
Since 2 is unmarked, it is our first prime. We mark every second integer, that is, 4, 6, 8, 10, 12, etc.
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27
The next unmarked integer is 3, so it is prime, and we mark every third integer, i.e., 6, 9, 12, etc. Note that we mark 6, 12, 18, etc. again.
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27
Now 5 is the next prime, and we mark every fifth integer. The only new integer marked in range is 25.
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27
From here we find the primes 7, 11, 13, 17, etc.

To optimize, when we find the prime n, we can begin marking at n2, since any composite less than that is a multiple of a lesser prime, and so will have been marked earlier. As a corollary, we can stop marking when n2 is greater than our range. That is, any unmarked numbers greater than the square root of the range are primes.

The naive implementation is not practical for large N since the memory is upper-case Theta (N). More efficient implementations use a segmented sieve.

Author: PEB

Implementation

various implementations (C, Perl, and Java), (Perl), (java), (F), (CafeOBJ), Stockton's Pascal Maths Page gives links to three implementations: bit array (Pascal), bit array for odd numbers (Pascal), packed bit array for odd numbers (Pascal)

More information

explanation and (pseudocode)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 20 11:53:38 2001.
HTML page formatted Thu Apr 17 10:50:29 2003.

This page's URL is http://www.nist.gov/dads/HTML/sieve.html


sift up

(algorithm)

Definition: Restoring the heap property by swapping a node with its parent, and repeating the process on the parent until the root is reached or the heap property is satisfied.

Note: Insertion in a binary heap is implemented by adding a node to the end of of the array and then performing a "sift up" starting at that node. After LK.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 11 16:21:50 1999.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/siftup.html


signature

(definition)

Definition: The types or domains, and order, in some representations, of inputs to and outputs from a function.

Note: For instance, the signature of the C library function strncmp() (compare up to n characters of two strings) is int (char *, char *, int). That is, it takes two C strings and an integer, and returns an integer.

Author: PR

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:57:51 2000.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/signature.html


sim

(definition)

Definition: (1) Proportional to. (2) Asymptotically equal to. A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items. Informally, saying some equation f(n) similar to g(n) means it grows at the same rate as g(n). More formally, it means limx -> infinity f(x)/g(x) = 1.

See also big-O notation, upper-case Theta (n), asymptotically tight bound.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Sep 17 10:36:10 2001.
HTML page formatted Thu Apr 17 10:48:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/sim.html


Simon algorithm

(algorithm)

Definition: See Simon's algorithm.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:21:18 2002.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/SimonAlgorithm.html


Simon's algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also quantum computation.

Implementation

In Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms preprocessing phase (C)

More information

Arthur O. Pittenger, An Introduction to Quantum Computing Algorithms, page 44. Also see "An Exact Quantum Polynomial-Time Algorithm for Simon's Problem".

Christophe Hancart, On Simon's string searching algorithm, Information Processing Letters, 47(2):95-99, 20 August 1993.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:21:18 2002.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/simonsAlgo.html


simple merge

(algorithm)

Definition: Merge n sorted streams into one output stream. All the stream heads are compared, and the head with the least key is removed and written to the output. This is repeated until all streams are empty.

See also ideal merge, optimal merge.

Note: The run time is upper-case Theta (mn), where m is the total number of elements and n is the number of streams.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 16:20:55 2003.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/simplemerge.html


simple path

(definition)

Definition: A path which repeats no vertex.

See also cycle.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 19 14:15:46 1999.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/simplepath.html


simple uniform hashing

(definition)

Definition: The assumption or goal that items are equally likely to hash to any value.

See also hash table, perfect hashing, uniform hashing.

Note: If this assumption holds, items are evenly distributed in a hash table and there are a minimum of collisions.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 12 11:19:39 2003.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/simpleUniformHashing.html


simplex

(algorithm)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Oct 13 12:13:10 1999.
HTML page formatted Thu Apr 17 10:50:30 2003.

This page's URL is http://www.nist.gov/dads/HTML/simplex.html


simulated annealing

(algorithm)

Definition: A technique to find a good solution to an optimization problem by trying random variations of the current solution. A worse variation is accepted as the new solution with a probability that decreases as the computation proceeds. The slower the cooling schedule, or rate of decrease, the more likely the algorithm is to find an optimal or near-optimal solution.

See also metaheuristic.

Note: This technique stems from thermal annealing which aims to obtain perfect crystallizations by a slow enough temperature reduction to give atoms the time to attain the lowest energy state.

This search tries to avoid local minima by jumping out of them early in the computation. Toward the end of the computation, when the temperature, or probability of accepting a worse solution, is nearly zero, this simply seeks the bottom of the local minimum. The chance of getting a good solution can be traded off with computation time by slowing down the cooling schedule. The slower the cooling, the higher the chance of finding the optimum solution, but the longer the run time. Thus effective use of this technique depends on finding a cooling schedule that gets good enough solutions without taking too much time.

After Daniel Thiel <mouttaqu@enitiaa-nantes.fr>, 31 January 2000.

Author: PEB

More information

The Metaheuristic Network project's simulated annealing page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 09:30:45 2003.
HTML page formatted Fri May 23 12:52:16 2003.

This page's URL is http://www.nist.gov/dads/HTML/simulatedAnnealing.html


simulation theorem

(definition)

Definition: One kind of computation can be simulated by another kind within stated complexity bounds. Most known containment or equality relationships between complexity classes were proved this way.

See also separation theorem.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:08:07 2000.
HTML page formatted Mon May 12 10:30:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/simulatnthrm.html


single-destination shortest-path problem

(classic problem)

Definition: Find the shortest path from each vertex in a weighted, directed graph to a specific destination vertex.

See also graph, all pairs shortest path, single-source shortest-path problem, DAG shortest paths, shortest path.

Note: Equivalent to the single-source shortest-path problem with all directions reversed.

Author: PEB

Implementation

See implementations at graph.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 2 09:09:29 2000.
HTML page formatted Thu Apr 17 10:50:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/singleDestShortestPath.html


single-pair shortest-path problem

(classic problem)

Definition: See shortest path.

Author: PEB

Implementation

(C, C++, Pascal, Fortran, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 26 12:44:22 2001.
HTML page formatted Thu Apr 17 10:50:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/singlepairShortestpathProblem.html


single program multiple data

(definition)

Definition: The dominant style of parallel programming, where all processors use the same program, though each has its own data.

Also known as SPMD.

Note: From Algorithms and Theory of Computation Handbook, page 46-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:24:59 2002.
HTML page formatted Mon May 12 10:30:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/singleprogrm.html


single-source shortest-path problem

(classic problem)

Definition: Find the shortest paths from a specific source vertex to every other vertex in a weighted, directed graph. Dijkstra's algorithm solves this if all weights are nonnegative. The Bellman-Ford algorithm handles any weights.

See also graph, all pairs shortest path, single-destination shortest-path problem, DAG shortest paths, shortest path.

Note: Equivalent to the single-destination shortest-path problem with all directions reversed.

Author: PEB

Implementation

See implementations at graph.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Oct 2 09:09:45 2000.
HTML page formatted Thu Apr 17 10:50:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/singleSourceShortestPath.html


singly linked list

(data structure)

Definition: See linked list.

Author: PEB

Implementation

explanations, examples, iterators, sorting lists, etc. (C++), Kazlib (C), (C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 20 08:56:35 2003.
HTML page formatted Tue May 20 08:57:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/singlyLinkedList.html


singularity analysis

(definition)

Definition: A complex asymptotic technique for determining the asymptotics of certain algebraic functions.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:07:04 2000.
HTML page formatted Mon May 12 10:30:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/singularity.html


sink

(definition)

Definition: A vertex of a directed graph with no outgoing edges. More formally, a vertex with with out-degree 0.

See also source, supersink, flow network, critical path problem, multi-commodity flow.

Note: Conceptually, a final destination of whatever is flowing through the graph. In UML, a consumer of data in a design.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 09:16:32 2002.
HTML page formatted Thu Apr 17 10:50:31 2003.

This page's URL is http://www.nist.gov/dads/HTML/sink.html


sinking sort

(algorithm)

Definition: See bubble sort.

Author: PEB

Implementation

animation and code (Java); sinking sort explanation and animation (Java); demonstration and source code (Java) - but code might not render properly; explanation (C); (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:19:11 2003.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/sinkingSort.html


sink sort

(algorithm)

Definition: See bubble sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:19:11 2003.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/sinkSort.html


skd-tree

(data structure)

Definition: The spatial k-d tree is a spatial access method where successive levels are split along different dimensions. Objects are indexed by their centroid, and the minimum bounding box of objects in a node are stored in the node.

See also extended k-d tree.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:32:10 2001.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/skdtree.html


skew symmetry

(definition)

Definition: The property that the flow is the same amount, but reversed direction, starting from either vertex of every edge of a flow network. More formally, for an edge e=(v,w), f(v,w) = -f(w,v), where f(a,b) is the flow from a to b.

Note: From Algorithms and Theory of Computation Handbook, page 7-10, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:13:20 2000.
HTML page formatted Mon May 12 10:30:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/skewsymmetry.html


skip list

(data structure)

Definition: A randomized variant of a linked list with additional, parallel lists. Parallel lists at higher levels skip geometrically more items. Searching begins at the highest level, to quickly get to the right part of the list, then uses progressively lower level lists. A new item is added by randomly selecting a level, then inserting it in order in the lists for that and all lower levels. With enough levels, searching is O( log n).

Author: PEB

Implementation

(C)

More information

(click on Skip Lists) diagrams, explanation, and code (C), bibtex references to papers

William Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, CACM, 33(6):668-676, June 1990.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jun 24 13:36:40 2002.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/skiplist.html


skiplist

(data structure)

Definition: See skip list.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jun 24 13:36:40 2002.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/skiplistI.html


Skip Search

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:02:53 2003.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/skipSearch.html


slope selection

(classic problem)

Definition: Given a set of points in a plane and an integer k less than or equal to ( n OVER 2 ), find the line between pairs of points which has the kth smallest slope.

Note: Adapted from [AS98, page 416].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Sep 11 10:10:41 2001.
HTML page formatted Thu Apr 17 10:50:32 2003.

This page's URL is http://www.nist.gov/dads/HTML/slopeselectn.html


Smith algorithm

(algorithm)

Definition: A string matching algorithm which computes the shift value for both the rightmost character of the window and the character preceding it, then uses the maximum of the two values.

Author: BB

Implementation

visualization and code (C)

More information

P. D. Smith, Experiments with a very fast substring search algorithm, Software Practice & Experience, 21(10):1065-1074, 1991.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:18:59 2002.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/smithAlgorithm.html


Smith-Waterman algorithm

(algorithm)

Definition: A means of searching protein databases to find those with the best alignment using dynamic programming.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 22 08:59:23 2002.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/smithWaterman.html


smoothsort

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also heapsort.

Note: Similar to heapsort, but O(n) when input is sorted.

Implementation

Smoothsort, an alternative for sorting in situ typescript (guarded command language)

More information

Edsger W. Dijkstra, An alternative to Heapsort for sorting in situ, manuscript, June 1981. PDF.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 5 12:55:15 2002.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/smoothsort.html


solvable

(definition)

Definition: A computational problem that can be solved by a Turing machine. The problem may have a nonbinary output.

See also unsolvable problem, decidable, tractable, computable.

Note: From Algorithms and Theory of Computation Handbook, page 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:13:11 2000.
HTML page formatted Mon May 12 10:30:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/solvable.html


sort

(algorithm)

Definition: Arrange items in a predetermined order. There are dozens of algorithms, the choice of which depends on factors such as the number of items relative to working memory, knowledge of the orderliness of the items or the range of the keys, the cost of comparing keys vs. the cost of moving items, etc. Most algorithms can be implemented as an in-place sort, and many can be implemented so they are stable, too.

See also Specific algorithms: quicksort, heapsort, Shell sort, radix sort, bucket sort, insertion sort, selection sort, merge sort, counting sort, histogram sort, bubble sort, bidirectional bubble sort, adaptive heap sort, three-way radix quicksort. Related terms: external sort, internal sort, comparison sort, distribution sort, permutation, derangement.

Note: Any sorting algorithm can be turned into a stable variant by appending the original position to the key. When otherwise-equal keys are compared, the positions "break the tie" and the original order is maintained.

Knuth notes [Knuth98, 3:1, Chap. 5] that this operation might be called "order". In standard English, "to sort" means to arrange by kind or to classify. The term "sort" came to be used in Computer Science because the earliest automated ordering procedures used punched card machines, which classified cards by their holes, to implement radix sort.

Author: PEB

Implementation

Specific implementations can be found under the specific sort routines or at (Pascal, C++, Fortran, and Mathematica); Explanation, demo and code (Java).

More information

Demonstrations of various sorting algorithms; Links to different sorting algorithms.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 27 10:58:58 2003.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/sort.html


sorted array

(data structure)

Definition: An array whose items are kept sorted, often so searching is faster.

See also binary search, interpolation search, ordered array.

Author: PEB

Implementation

Insert (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 10:31:55 2002.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/sortedarray.html


sorted list

(data structure)

Definition: A list whose items are kept sorted.

See also sorted array, ordered linked list.

Author: PEB

Implementation

insert (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:07:25 2001.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/sortedlist.html


sorting algorithm

(algorithm)

Definition: See sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 27 10:58:58 2003.
HTML page formatted Thu Apr 17 10:50:33 2003.

This page's URL is http://www.nist.gov/dads/HTML/sortingAlgorithm.html


sort in place

(algorithm)

Definition: See in-place sort.

Authors: PEB,CM

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:41:59 2003.
HTML page formatted Tue May 13 15:55:20 2003.

This page's URL is http://www.nist.gov/dads/HTML/sortInPlace.html


sort merge

(algorithm)

Definition: See merge sort.

Author: PEB

Implementation

demonstration (Java); recurrence relation analysis and demonstration (Java); explanation (C); (C) which needs list merge (C) or array merge (C), (Pascal)which needs list merge (Pascal) or array merge (Pascal); (Java); Demo and code of in-place and double merge sort (Java); Worst-case behavior annotated for real time (WOOP/ADA), including bibliography. Sohail Somani's (C++), (Scheme). Other implementations may be available through the Stony Brook Algorithm Repository, Sorting.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 4 13:13:44 2003.
HTML page formatted Wed Jun 4 13:26:04 2003.

This page's URL is http://www.nist.gov/dads/HTML/sortMerge.html


soundex

(algorithm)

Definition: An algorithm to code people's surnames phonetically by reducing them to the first letter and up to three digits, where each digit is one of six consonant sounds. This reduces matching problems from different spellings.

See also double metaphone, Jaro-Winkler, NYSIIS, edit distance.

Note: The algorithm was devised to code names recorded in US census records. The standard algorithm works best on European names. Variants have been devised for names from other cultures.

Author: PEB

Implementation

(C), embedded in page source (JavaScript)

More information

Soundex Indexing System with links to encoders and more information, Overview of Soundex, and What is Soundex?.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:35:47 2002.
HTML page formatted Thu Apr 17 10:50:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/soundex.html


source

(definition)

Definition: (1) A vertex of a directed graph with no incoming edges. More formally, a vertex with in-degree 0. (2) The vertex from which an edge of a directed graph leaves.

See also sink, supersource, flow network, critical path problem, multi-commodity flow, (2) target.

Note: Conceptually, an origin of whatever is directed in the graph. In UML, a producer of data in a design.

(2) That is, an edge goes from the source to the target.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:33:12 2002.
HTML page formatted Thu Apr 17 10:50:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/source.html


source-target directed acyclic graph

(data structure)

Definition: See st-digraph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 15:32:57 2003.
HTML page formatted Fri May 23 15:34:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/sourcetargetDirectedAcyclicGraph.html


space-constructible function

(definition)

Definition: A function s(n) that gives the actual space used by some Turing machine on all inputs of length n.

See also time-constructible function, time/space complexity.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:58 2000.
HTML page formatted Mon May 12 10:30:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/space.html


spaghetti stack

(data structure)

Definition: See cactus stack.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:16:22 2002.
HTML page formatted Thu Apr 17 10:50:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/spaghettiStack.html


spanning tree

(definition)

Definition: A connected, acyclic subgraph containing all the vertices of a graph.

See also minimum spanning tree.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

OR-Notes on graph theory, including spanning trees.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:49 2000.
HTML page formatted Mon May 12 10:30:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/spanningtree.html


sparse array

(data structure)

Definition: See sparse matrix.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 3 14:04:50 2002.
HTML page formatted Thu Apr 17 10:50:34 2003.

This page's URL is http://www.nist.gov/dads/HTML/sparseArray.html


sparse graph

(definition)

Definition: A graph in which the number of edges is much less than the possible number of edges, that is, the number of vertices squared.

See also dense graph, complete graph, adjacency-list representation.

Note: From Algorithms and Theory of Computation Handbook, page 6-22, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 18 16:42:36 2001.
HTML page formatted Mon May 12 10:30:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/sparsegraph.html


sparse matrix

(data structure)

Definition: A matrix that has relatively few non-zero (or "interesting") entries. It may be represented in much less than n × m space.

See also ragged matrix.

Note: A matrix which is n × m with k non-zero entries is sparse if k << n × m. It may be faster to represent the matrix compactly as a list of the non-zero indexes and associated entries, as a list of lists of entries (one list for each row), or by a point access method.

Author: PEB

Implementation

Input/output for sparse matrices stored in Harwell-Boeing Format (C)

More information

picture of one type of sparse matrix.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 3 14:04:50 2002.
HTML page formatted Thu Apr 17 10:50:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/sparsematrix.html


sparsification

(algorithmic technique)

Definition: Technique for designing dynamic graph algorithms, which when applicable transform a time bound of T(n,m) onto O(T(n,n)), where m is the number of edges and n is the number of vertices of the given graph.

Note: From Algorithms and Theory of Computation Handbook, page 8-22, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:39 2000.
HTML page formatted Mon May 12 10:30:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/sparsificatn.html


sparsity

(definition)

Definition: Instances of the longest common subsequence problem in which the number of matches is small compared to the product of the lengths of the input strings.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:32 2000.
HTML page formatted Mon May 12 10:30:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/sparsity.html


spatial access method

(definition)

Definition: A data structure to search for lines, polygons, etc.

Also known as SAM.

See also cell tree, extended k-d tree, GBD-tree, multilayer grid file, P-tree, R-file, R+-tree, R*-tree, R-tree, skd-tree, point access method.

Note: After [GG98]. Point access methods may not support region, overlap, enclosure, etc. searches very well.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 14:17:13 2001.
HTML page formatted Thu Apr 17 10:50:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/spatialAccessMethod.html


spectral test

Definition: (no definition here, yet, but you can help.)

Note: of pseudo-random number generator

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jul 6 09:30:22 2000.
HTML page formatted Thu Apr 17 10:50:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/spectraltest.html


splaying

(data structure)

Definition: See splay tree.

Author: CLK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 4 12:12:22 2003.
HTML page formatted Thu Apr 17 10:50:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/splaying.html


splay tree

(data structure)

Definition: A binary search tree in which operations that access nodes restructure the tree.

Author: CLK

Implementation

(C)

More information

A demonstration of top-down splaying.

D. D. Sleator and R. E. Tarjan, Self-Adjusting Binary Search Trees, Journal of the ACM, 32(3):652-686, 1985.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 4 12:12:22 2003.
HTML page formatted Thu Apr 17 10:50:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/splaytree.html


SPMD

(definition)

Definition: See single program multiple data.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 2 11:24:59 2002.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/spmd.html


square matrix

(data structure)

Definition: A n × n matrix, i.e., one whose size is the same in both dimensions.

See also rectangular matrix.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Aug 28 11:02:58 1999.
HTML page formatted Thu Apr 17 10:50:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/squarematrix.html


square root

(algorithm)

Definition: This describes a "long hand" or manual method of finding square roots. Finding a square root by hand is a little like long hand division.

Suppose you need to find the square root of 66564 Set up a "division" with the number under the radical. Mark off pairs of digits, starting from the decimal point. (Here the decimal point is a period (.) and a comma (,) marks pairs of digits.)

               ___________
             \/  6,65,64.
Look at the leftmost digit(s) (6 in this case). What is the largest number whose square is less than or equal to it? It is 2, whose square is 4. Write 2 above, write the square below and subtract.
               __2________
             \/  6,65,64.
                -4
               ----
                 2
Now bring down the next two digits (65). The next "divisor" is double the number on top (2x2=4) and some other digit in the units position (4_).
               __2________
             \/  6,65,64.
                -4
                -----
             4_ ) 265
What is the largest number that we can put in the units and multiply times the divisor and still be less than or equal to what we have? (Algebraically, what is d such that d × 4d less than or equal to 265?) It looks like 6 might work (since 6 * 40 = 240), but 6 is too big, since 6 * 46 = 276.
               __2__6_____
             \/  6,65,64.
                -4
                -----
             46 ) 265
                  276   TOO BIG
So try 5 instead.
               __2__5_____
             \/  6,65,64.
                -4
                -----
             45 ) 265
                 -225
                 -------
                   40
Repeat: bring down the next two digits, and double the number on top (2x25=50) to make a "divisor", with another unit.
               __2__5_____
             \/  6,65,64.
                -4
                -----
             45 ) 265
                 -225
                 -------
             50_ ) 4064
It looks like 8 would work. Let's see.
               __2__5__8__
             \/  6,65,64.
                -4
                -----
             45 ) 265
                 -225
                 -------
             508 ) 4064
                  -4064
                  ------
                      0

So the square root of 66564 is 258. You can continue for as many decimal places as you need: just bring down more pairs of zeros.

Why does this work?

Consider (10A + B)2 = 100A2 + 2 × 10AB + B2 and think about finding the area of a square. Remember that 10A + B is just the numeral with B in the units place and A in the higher position. For 42, A=4 and B=2, so 10 × 4 + 2 = 42.

diagram of a square that is 10A + B on a side showing a 100A squared rectangle, two 10AB rectangles, and a B squared rectangle

The area of the two skinny rectangles is 2 × 10A × B. The tiny square is B2. If we know A and the area of the square, S, what B should we choose?

We previously subtracted A2 from S. To scale to 100A2, we bring down two more digits (a factor of 100) of the size of S. We write down twice A (2A), but shifted one place to leave room for B (10 × 2A or 2 × 10A). Now we add B to get 2 × 10A + B. Multiplying by B gives us 2 × 10AB + B2. When we subtract that from the remainder (remember we already subtracted A2), we have subtracted exactly (10A + B)2. That is, we have improved our knowledge of the square root by one digit, B.

We take whatever remains, scale again by 100, by bringing down two more digits, and repeat the process.

Note: In computers and hand-held calculators, square root, sine, cosine, and other transcendental functions are calculated with sophisticated functions based on the Newton-Raphson method, sometimes called Newton's method. Here is a more detailed lesson that explains, for instance, possible difficulties in convergence.

Author: PEB

Implementation

GAMS Class C2 has many implementations of powers, roots, and reciprocals (C and Fortran). Many variations (C and Assembler) for caching, pipelined processing, etc.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 12:52:43 2003.
HTML page formatted Thu Apr 17 10:50:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/squareRoot.html


SST

(definition)

Definition: See minimum spanning tree.

Author: JLG

Implementation

(C++, Pascal, Fortran, C, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:49:54 2003.
HTML page formatted Fri May 23 12:52:18 2003.

This page's URL is http://www.nist.gov/dads/HTML/sst.html


stable

(definition)

Definition: An algorithm where the relative order upon input of items with equal keys is always preserved in the output. Usually a sort algorithm.

Note: Many different operations, such as sort, merge, and select the minimum using a priority queue, can be stable.

Suppose we need to sort the following people by age: Max, age 45, Brodsky (19), David (21), Carla (45), and Liang (19). A stable sort would yield Brodsky (19), Liang (19), David (21), Max (45), and Carla (45). Note that Brodsky still precedes Liang, and Max still precedes Carla. A sort which is not stable may put Liang before or after Brodsky and Carla before or after Max. A radix sort requires each phase to be stable.

From Algorithms and Theory of Computation Handbook, and is Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Jul 5 16:27:39 2002.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/stable.html


stack

(data structure)

Definition: A collection of items in which only the most recently added item may be removed. The latest added item is at the top. Basic operations are push and pop. Also known as "last-in, first-out" or LIFO.

Formal Definition: The operations new(), push(v, S), top(S), and popoff(S) may be defined as follows.

  1. new() returns a stack
  2. popoff(push(v, S)) = S
  3. top(push(v, S)) = v
where S is a stack and v is a value. The pop operation is a combination of top, to return the top value, and popoff, to remove the top value.

Also known as LIFO.

See also bounded stack, queue, cactus stack, abstract data type.

Author: PEB

Implementation

Jonathan G. Campbell's Queue and Stack Classes (C++) and (Java), (Scheme)

More information

examples and code. Tutorial, diagrams, and code (C, C++) of array and linked list implementation. Demonstration with dynamic array and linked list implementations.

Origin is attributed to A. W. Burks, D. W. Warren, and J. B. Wright, An analysis of a logical machine using parenthesis-free notation, Mathematical Tables and Other Aids to Computation, 8(46):53-57, April 1954, and A. Newell and J. C. Shaw, Programming the logic theory machine, In Proceedings of the 1957 Western Joint Computer Conference, pp 230-240, Institute of Radio Engineers, New York, February 1957.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:55:14 2003.
HTML page formatted Thu Apr 17 10:50:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/stack.html


stack tree

(definition)

Definition: A binary tree where no node, except the root, has more than one non-leaf child.

Note: This topology is used to define simple, fault-tolerant, acyclic networks. See Ann T. Tai, Savio N. Chau, and Leon Alkalai, "COTS-Based Fault Tolerance in Deep Space: Qualitative and Quantitative Analyses of a Bus Network Architecture," in Proceedings of the 4th International IEEE High-Assurance Systems Engineering Symposium (HASE '99), November 1999, Washington, D.C., pages 97 - 104.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:31:25 2000.
HTML page formatted Thu Apr 17 10:50:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/stacktree.html


star-shaped polygon

(definition)

Definition: A polygon P in which there exists an interior point p such that all the boundary points of P are visible from p.

Note: From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:24 2000.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/starshaped.html


start state

(definition)

Definition: An initial state or condition of a finite state machine or Turing machine. Informally, how the memory is initially set.

See also accepting state, universal state.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 09:36:53 2000.
HTML page formatted Thu Apr 17 10:50:36 2003.

This page's URL is http://www.nist.gov/dads/HTML/startstate.html


state

(definition)

Definition: The condition of a finite state machine or Turing machine at a certain time. Informally, the content of memory.

See also start state, accepting state, next state, universal state, existential state.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 09:07:17 2000.
HTML page formatted Thu Apr 17 10:50:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/state.html


state machine

(definition)

Definition: An abstract computer consisting of a (possibly infinite) set of states, a set of start states, an input alphabet, and a transition function which maps input symbols and current states to a next state. Usually understood to be a finite state machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 11:30:30 2000.
HTML page formatted Thu Apr 17 10:50:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/statemachine.html


state transition

(definition)

Definition: See transition.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 15 09:49:26 2002.
HTML page formatted Thu Apr 17 10:50:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/stateTransition.html


static

(definition)

Definition: When the problem domain does not change.

See also dynamic, dynamization transformation.

Note: From Algorithms and Theory of Computation Handbook, page 20-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:15 2000.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/static.html


static Huffman encoding

(algorithm)

Definition: See Huffman encoding.

Author: PEB

Implementation

build tree in array (C) -- also computes entropy and efficiency.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 17 14:52:22 2003.
HTML page formatted Thu Apr 17 10:50:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/staticHuffmanEncoding.html


s-t cut

(definition)

Definition: A partitioning of the vertices of a flow network into S and T such that the source is in S and the sink is in T.

Note: From Algorithms and Theory of Computation Handbook, page 7-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:06:08 2000.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/stcut.html


st-digraph

(data structure)

Definition: A directed acyclic graph with two specially marked nodes, the source s and the sink t.

See also flow network.

Note: After P. Bertolazzi, G. Di Battista, and W. Didimo, Quasi-upward planarity, Algorithmica, 32:474-506 (2002).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 15:32:57 2003.
HTML page formatted Fri May 23 15:34:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/stdigraph.html


Steiner minimum tree

(definition)

Definition: Given a set of vertices S in an undirected weighted graph, a minimal weight spanning tree of S union Q for some added Steiner vertices Q in the graph.

See also minimum spanning tree.

Note: This differs from the minimum spanning tree in that the set of Steiner vertices must be identified. That is, additional vertices may be used.

From Algorithms and Theory of Computation Handbook, page 20-12, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

OR-Notes on network flow, including Steiner minimum tree.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:05:59 2000.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/steinermintr.html


Steiner point

(definition)

Definition: (1) A point that is not part of the input set of points, for instance, a point computed to construct a Steiner tree. (2) A point with a particular geometric relation to a triangle.

Note: Also called a Steiner vertex.

Consider the three points of a triangle. The shortest tree connecting all three, called the Steiner tree, branches out from a fourth point in the middle. That middle point, which was not given initially and must be computed in order to build the shortest tree, is a Steiner point.

From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

Named for Jakob Steiner. See the following for the geometric (classical) definition of a Steiner Point.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 17 09:09:32 2003.
HTML page formatted Mon May 12 10:30:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/steinerpoint.html


Steiner ratio

(definition)

Definition: For a given variant of the Steiner tree problem, the maximum possible ratio of the length of a minimum spanning tree of a set of terminals to the length of an optimal Steiner tree of the same set of terminals. Usually written rho (rho).

Note: In graphs rho = 2. In the Euclidean metric, rho = 2/ square root (3). In the rectilinear metric, rho = 3/2.

Author: JLG

More information

Steiner Tree page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 15 10:02:47 1999.
HTML page formatted Thu Apr 17 10:50:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/steinerratio.html


Steiner tree

(definition)

Definition: A minimum-weight tree connecting a designated set of vertices, called terminals, in a weighted graph or points in a space. The tree may include non-terminals, which are called Steiner vertices or Steiner points.

See also Euclidean Steiner tree, rectilinear Steiner tree.

Note: Named for Jakob Steiner.

Author: JLG

Implementation

(C and Pascal), GeoSteiner (C) - software for computing steiner trees.

More information

The Steiner Tree page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 17 09:20:49 2003.
HTML page formatted Thu Apr 17 10:50:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/steinertree.html


Steiner vertex

(definition)

Definition: A point that is not part of the input set of points, for instance, a point computed to construct a Steiner tree.

Note: Also called a Steiner point.

Consider the three points of a triangle. The shortest tree connecting all three, called the Steiner tree, branches out from a fourth point in the middle. That middle point, which was not given initially and must be computed in order to build the shortest tree, is a Steiner point.

From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:05:30 2000.
HTML page formatted Mon May 12 10:30:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/steinervertx.html


Steinhaus-Johnson-Trotter

(algorithm)

Definition: See Johnson-Trotter.

Author: PEB

Implementation

Information on Permutations (Pascal and C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 13 09:04:37 2001.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/SteinhausJohnsonTrotter.html


Stirling's approximation

(definition)

Definition: For large values of n, n! approximately equal to (n/e)n square root (2n pi).

See also factorial, gamma function.

Note: This approximation is taken directly from Stirling's formula.

Author: PEB

More information

A slightly different approximation and relative errors.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 9 12:59:19 2001.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/stirlingappx.html


Stirling's formula

(definition)

Definition: For large values of n, (n/e)n square root (2n pi) < n! < (n/e)n(1 + 1/(12n-1)) square root (2n pi).

See also Stirling's approximation, factorial, gamma function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 10 12:54:58 1999.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/stirlingform.html


stooge sort

(algorithm)

Definition: A terribly inefficient sort algorithm that swaps the top and bottom items if needed, then (recursively) sorts the bottom two-thirds, then the top two-thirds, then the bottom two-thirds again.

See also bozo sort, bogosort, lucky sort.

Author: PEB

Implementation

demonstration and source code (Java).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:13:36 2003.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/stoogesort.html


straight-line drawing

(definition)

Definition: A graph drawing in which each edge is represented by a straight line segment.

See also grid drawing, orthogonal drawing, planar straight-line graph.

Note: From Algorithms and Theory of Computation Handbook, page 9-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 12 13:18:22 2001.
HTML page formatted Mon May 12 10:30:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/straightline.html


strictly decreasing

(definition)

Definition: A function from a partially ordered domain to a partially ordered range such that x > y implies f(x) < f(y).

See also strictly increasing, monotonically decreasing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 21 13:23:37 2002.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/strictlydecr.html


strictly increasing

(definition)

Definition: A function from a partially ordered domain to a partially ordered range such that x > y implies f(x) > f(y).

See also strictly decreasing, monotonically increasing.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Mar 21 13:23:28 2002.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/strictlyincr.html


strictly lower triangular matrix

(data structure)

Definition: A matrix which is only defined at (i,j) when i < j.

See also lower triangular matrix, strictly upper triangular matrix, ragged matrix.

Note: For example

 | j
i | - | - | - | -
 | 7 | - | - | -
 | 1 | 0 | - | -
 | 1 | 9 | 5 | -

It may be more compactly represented in an array by storing entry (i,j) in location (i-1)(i-2)/2 + j (one-based indexing).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 16 12:13:32 2001.
HTML page formatted Thu Apr 17 10:50:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/strictlyLowerTriangMat.html


strictly upper triangular matrix

(data structure)

Definition: A matrix which is only defined at (i,j) when i > j.

See also upper triangular matrix, strictly lower triangular matrix, ragged matrix.

Note: For example

 | j
i | - | 7 | 7 | 6
 | - | - | 1 | 1
 | - | - | - | 8
 | - | - | - | -

It may be more compactly represented in an array by storing entry (i,j) in location n(i-1)+j- i(i-1)/2-i = (2n-i)(i-1)/2 - i + j (one-based indexing).

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 16 12:13:34 2001.
HTML page formatted Thu Apr 17 10:50:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/strictlyUpperTriangMat.html


string

(data structure)

Definition: A list of characters, usually implemented as an array. Informally a word, phrase, sentence, etc. Since text processing is so common, a special type with substring operations is often available.

See also string matching, string matching with errors, longest common subsequence, end-of-string, text.

Note: The term string usually refers to a small sequence of characters, such as a name or a sentence. The term text usually refers to a large sequence of characters, such as an article or a book.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:06:58 2002.
HTML page formatted Thu Apr 17 10:50:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/string.html


string editing problem

(definition)

Definition: The problem of finding an edit script of minimum cost which transforms a given string into another given string.

See also edit operation, tree editing problem.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:11:45 2000.
HTML page formatted Mon May 12 10:30:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringedit.html


string matching

(classic problem)

Definition: The problem of finding occurrence(s) of a pattern string within another string or body of text. There are many different algorithms for efficient searching.

Also known as exact string matching, string searching, text searching.

See also string matching with errors, brute force string search, Knuth-Morris-Pratt algorithm, Boyer-Moore, Zhu-Takaoka, quick search, optimal mismatch, deterministic finite automata string search, Karp-Rabin, Shift-Or, Smith algorithm, Ratcliff/Obershelp pattern recognition, string similarity search, string matching on ordered alphabets, inverted index.

Note: For large collections which are searched often, it may be far faster, though more complicated, to start with an inverted index. The name "exact string matching" is in contrast to string matching with errors.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:52:13 2003.
HTML page formatted Thu Apr 17 10:50:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringMatching.html


string matching on ordered alphabets

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 09:02:28 2003.
HTML page formatted Thu Apr 17 10:50:40 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringMatchOrdAlphabet.html


string matching with errors

(algorithm)

Definition: Searching for approximate (e.g., up to a predefined number of symbol mismatches, insertions, and deletions) occurrences of a pattern string in a text string. Preprocessing, e.g., building an index, may or may not be allowed.

Also known as approximate string matching.

See also string matching, string matching with mismatches, inverted index.

Note: From Algorithms and Theory of Computation Handbook, page 13-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

For large collections that are searched often, it is far faster, though more complicated, to start with an inverted index.

Author: CRC-A

Implementation

See implementations at string matching. (C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 19 09:03:51 2002.
HTML page formatted Mon May 12 10:30:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringMatchwError.html


string matching with mismatches

(algorithm)

Definition: The special case of string matching with errors where mismatches are the only type of error allowed.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 28 09:39:05 2000.
HTML page formatted Mon May 12 10:30:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringMatchwMismatch.html


string search

(classic problem)

Definition: See string matching.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:52:13 2003.
HTML page formatted Thu Apr 17 10:50:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringSearch.html


string searching

(classic problem)

Definition: See string matching.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:52:13 2003.
HTML page formatted Thu Apr 17 10:50:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringSearching.html


string similarity search

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 20 09:11:21 1999.
HTML page formatted Thu Apr 17 10:50:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/stringSimilaritySearch.html


strip packing

(classic problem)

Definition: A variant of the bin packing problem in which one must determine how to get the most objects from the least number of fixed length strips. More formally, find a partition and assignment of a set of objects of certain lengths such that they fit on a minimum number of strips.

See also knapsack problem, a two-dimensional variant is the cutting stock problem, optimization problem.

Note: For instance, suppose we need a number of pipes of different, specific lengths to plumb a house and we can buy pipe stock in 5 meter lengths. How can we cut the 5 meter pipes to waste as little as possible (minimize the cost of pipe)?

The classic method comes from Gilmore and Gomory, who published in Operations Research in the 1960's. The method "iterates between solving a potentially large LP (using column generation) and a knapsack problem (to construct new columns)." (Paul Rubin, rubin@msu.edu, 20 June 1996)

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 8 13:06:40 2002.
HTML page formatted Thu Apr 17 10:50:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/strippacking.html


strongly connected component

(definition)

Definition: A strongly connected subgraph, S, of a directed graph, D, such that no vertex of D can be added to S and it still be strongly connected.

Formal Definition: Given a directed graph D=(V, E), a subgraph S=(V', E') is a strongly connected component if

  • S is strongly connected, and
  • for all vertices u such that u in V and u not in V' there is no vertex v in V' for which (u, v) in E.

See also maximally connected component, strongly connected graph, connected graph.

Note: If a graph is strongly connected, it has only one strongly connected component.

Let G=(V, E) be a directed graph and G1=(V1, E1) ..., Gm=(Vm, Em) be its strongly connected components. Every vertex is in exactly in one strongly connected component. Formally, for all i not equal to j, Vi intersect Vj= {}. Further, V=V1 union ... Vm and E=E1 union ... union Em.

After Robert Caswell (caswer01@cs.uwa.edu.au), 3 May 2002.

Author: PEB

Implementation

(C++, C, Pascal, Mathematica, and Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 13:24:48 2002.
HTML page formatted Thu Apr 17 10:50:41 2003.

This page's URL is http://www.nist.gov/dads/HTML/stronglyConnectedCompo.html


strongly connected graph

(definition)

Definition: A directed graph that has a path from each vertex to every other vertex.

Formal Definition: A directed graph D=(V, E) such that for all pairs of vertices u, v in V, there is a path from u to v and from v to u.

See also connected graph, strongly connected component, bridge.

Note: From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Implementation

(C++, C, Pascal, Mathematica, and Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 13:13:21 2002.
HTML page formatted Mon May 12 10:30:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/stronglyConnectedGraph.html


strongly NP-hard

(definition)

Definition: The complexity class of decision problems which are still NP-hard even when all numbers in the input are bounded by some polynomial in the length of the input.

See also NP-complete, NP, AP.

Note: From Algorithms and Theory of Computation Handbook, page 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science,Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 10 13:43:37 2001.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/stronglyNP.html


stupid sort

(algorithm)

Definition: See bogosort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 16 13:24:39 2003.
HTML page formatted Thu Apr 17 10:50:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/stupidSort.html


subadditive ergodic theorem

(definition)

Definition: If a stationary and ergodic process satisfies the subadditive inequality, it grows almost surely linearly in time.

Note: From Algorithms and Theory of Computation Handbook, page 14-35, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:04:46 2000.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/subadditive.html


subgraph

(definition)

Definition: A graph whose vertices and edges are subsets of another graph.

Formal Definition: Given a graph G=(V, E), another graph G'=(V', E') is a subgraph iff

  • V' is a subset of V, and
  • E'={(v1, v2) in E | v1, v2 in V'}.

Authors: PEB,AL

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jan 28 09:25:02 2002.
HTML page formatted Thu Apr 17 10:50:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/subgraph.html


subgraph isomorphism

(classic problem)

Definition: Decide if there is a subgraph of one graph which is isomorphic to another graph.

Note: This is known to be NP-complete. After [ATCH99, page 6-21].

Author: PEB

More information

A large bibtex bibliography.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 23 12:31:15 2001.
HTML page formatted Thu Apr 17 10:50:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/subgraphiso.html


subsequence

(definition)

Definition: Any string that can be obtained by deleting zero or more symbols from a given string.

See also substring.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:03:45 2000.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/subsequence.html


subset

(definition)

Definition: A set S2 is a subset of another set S1 if every element in S2 is in S1. S1 may have exactly the same elements as S2.

See also proper subset, superset, combination.

Note: If S2 is a subset of S1, S1 is a superset of S2.

A combination is a subset with exactly n elements.

Author: PR

Implementation

The Combinatorial Object Server's information on subsets (Pascal and C); generating subsets (Fortran, Mathematica, and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jun 5 08:59:35 2001.
HTML page formatted Thu Apr 17 10:50:42 2003.

This page's URL is http://www.nist.gov/dads/HTML/subset.html


substring

(definition)

Definition: A string v is a substring of a string u if u=u'vu" for some prefix u' and suffix u".

Also known as factor.

See also subsequence.

Note: From Algorithms and Theory of Computation Handbook, pages 11-26 and 12-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:45:00 2002.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/substring.html


subtree

(definition)

Definition: The tree which is a child of a node.

Note: The name emphasizes that everything which is a descendant of a tree node is a tree, too, and is a subset of the larger tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 5 10:22:53 2001.
HTML page formatted Thu Apr 17 10:50:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/subtree.html


subword

(definition)

Definition: See substring.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 13:45:00 2002.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/subword.html


suffix

(definition)

Definition: The end characters of a string. More formally a string v is a suffix of a string u if u=u'v for some string u'.

See also prefix.

Note: From Algorithms and Theory of Computation Handbook, page 11-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:11:23 2000.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/suffix.html


suffix array

(data structure)

Definition: An array of all suffixes of a string in lexicographical order, which allows a binary search.

See also suffix tree, suffix automaton.

Note: It can be constructed in O(n log n) time.

From Algorithms and Theory of Computation Handbook, page 11-23, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:11:09 2001.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/suffixarray.html


suffix automaton

(definition)

Definition: The smallest automaton accepting all suffixes of a string. The states form a directed acyclic word graph or DAWG.

See also compact DAWG.

Note: From Algorithms and Theory of Computation Handbook, page 11-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:22:11 2002.
HTML page formatted Mon May 12 10:30:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/suffixautmtn.html


suffix tree

(data structure)

Definition: A compact representation of a trie corresponding to the suffixes of a given string where all nodes with one child are merged with their parents.

See also multi suffix tree, Patricia tree, suffix array, directed acyclic word graph.

Note: A suffix tree is a Patricia tree corresponding to the suffixes of a given string. A directed acyclic word graph (DAWG) is a more compact form.

Author: SE

Implementation

Strmat - a variety of string matching and pattern discovery algorithms (C) (C++ and Pascal), generate random text (clisp) and in (C).

More information

Multi Suffix Trees, links to papers

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 11 13:37:11 2001.
HTML page formatted Thu Apr 17 10:50:43 2003.

This page's URL is http://www.nist.gov/dads/HTML/suffixtree.html


superimposed code

(definition)

Definition: A set of bit vectors such that no vector is a subset of a bitwise or of a small number of others.

Author: PEB

More information

From Deterministic Superimposed Coding with Applications to Pattern Matching, IEEE, 1997.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 11 08:46:46 2000.
HTML page formatted Thu Apr 17 10:50:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/superimposedCode.html


superset

(definition)

Definition: A set S1 is a superset of another set S2 if every element in S2 is in S1. S1 may have elements which are not in S2.

See also subset.

Note: If S1 is a superset of S2, S2 is a subset of S1.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 17 10:34:19 1999.
HTML page formatted Thu Apr 17 10:50:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/superset.html


supersink

(definition)

Definition: A vertex of a directed graph which is reachable from all other vertices.

See also supersource, sink, flow network.

Note: Usually added to convert a graph with multiple sinks into a graph with a single sink.

Author: JM

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 29 09:20:31 2002.
HTML page formatted Thu Apr 17 10:50:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/supersink.html


supersource

(definition)

Definition: A vertex of a directed graph from which all other vertices are reachable.

See also supersink, source, flow network.

Note: Usually added to convert a graph with multiple sources into a graph with a single source.

Author: JM

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Oct 29 09:20:06 2002.
HTML page formatted Thu Apr 17 10:50:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/supersource.html


symmetric

(definition)

Definition: A binary relation R for which a R b implies b R a.

See also reflexive, transitive, antisymmetric.

Note: The relation "not equal to" is symmetric: if a not equal to b, then b not equal to a. However, "loves" is not symmetric since love might not be reciprocated. The relation "is married to" is symmetric, but not antisymmetric: if Paul is married to Marlena, then Marlena is married to Paul (symmetric), but that does not mean that Paul and Marlena are the same person.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jun 19 09:40:36 2001.
HTML page formatted Thu Apr 17 10:50:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/symmetric.html


symmetrically linked list

(data structure)

Definition: See doubly linked list.

Author: PEB

Implementation

Illustrations, too (C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:04:41 2003.
HTML page formatted Thu Apr 17 10:50:44 2003.

This page's URL is http://www.nist.gov/dads/HTML/symmetricallyLinkedList.html


symmetric binary B-tree

(data structure)

Definition: See red-black tree.

Author: PEB

Implementation

analysis, explanation, examples, and code (C), Ben Pfaff's libavl (C) including pointers to other implementations, Kazlib (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:24:56 2003.
HTML page formatted Wed Jun 11 14:28:38 2003.

This page's URL is http://www.nist.gov/dads/HTML/symmetricBinaryBtree.html


symmetric set difference

(definition)

Definition: Members which are in either set, but not in both. That is, for sets A and B, it is (A - B) union (B - A).

See also difference.

Note: {2, 3, 5} symmetric difference {7, 5} = {2, 3, 7}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 7 16:19:38 2001.
HTML page formatted Thu Apr 17 10:50:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/symmetricSetDiff.html


symmetry breaking

(algorithmic technique)

Definition: To differentiate parts of a structure, such as a graph, which locally look the same to all vertices. Usually implemented with randomization.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:10:01 2000.
HTML page formatted Mon May 12 10:30:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/symmetrybrek.html


tail

(definition)

Definition: (1) The last item of a list. (2) All but the first item of a list; the list following the head.

See also head.

Note: The first definition is common when building lists from other language constructs, such as C pointers. The second definition occurs in languages with primitive list types, such as ML or Lisp.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 25 13:14:18 2003.
HTML page formatted Fri Apr 25 13:13:35 2003.

This page's URL is http://www.nist.gov/dads/HTML/tail.html


tail recursion

(algorithmic technique)

Definition: A special form of recursion where the last operation of a function is a recursive call. The recursion may be optimized away by executing the call in the current stack frame and returning its result rather than creating a new stack frame.

See also collective recursion, iteration.

Note: Although it may not save a lot of run time, it can save a lot of memory. The following finds the maximum value in a list.

 int max_list(list l, int max_so_far)
 {
     if (null == l) {
         return max_so_far;
     }

     if (max_so_far < head(l)) {
         return max_list(tail(l), head(l));
     } else {
         return max_list(tail(l), max_so_far);
     }
 }

The return value of the current invocation is just the return value of the recursive call. A compiler could optimize it something like the following so it doesn't allocate new space for l and max_so_far on each invocation or tear down the stack on the returns.

 int max_list(list l, int max_so_far)
 {
   for (;;) {
     if (null == l) {
         return max_so_far;
     }

     if (max_so_far < head(l)) {
         max_so_far = head(l);
         l = tail(l);
     } else {
         max_so_far = max_so_far;
         l = tail(l);
     }
   }
 }
Now there is no need to allocate new memory for the parameters or get rid of it during the returns, so this will run faster. This code transformation is simple enough to do by hand in this example, but it is much harder for complex recursive data structures, such as trees.

Of course, if a compiler is good enough to find and rewrite tail recursion, it will also collapse the loop test, eliminate the assignment of max_so_far to itself, and hoist the assignment of l after the test giving the following:

 int max_list(list l, int max_so_far)
 {
   while (null != l) {
     if (max_so_far < head(l)) {
         max_so_far = head(l);
     }
     l = tail(l);
   }
   return max_so_far;
 }

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:56:59 2003.
HTML page formatted Thu Apr 17 10:50:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/tailrecursn.html


target

(definition)

Definition: The vertex which an edge of a directed graph enters.

See also source, st-digraph.

Note: That is, an edge goes from the source to the target.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Dec 4 10:33:01 2002.
HTML page formatted Thu Apr 17 10:50:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/target.html


taxi cab metric

(definition)

Definition: See Manhattan distance.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 19 11:07:33 2003.
HTML page formatted Mon May 19 11:13:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/taxiCabMetric.html


temporal logic

(definition)

Definition: A logic with a notion of time included. The formulas can express facts about past, present, and future states. The formulas are interpreted over Kripke structures, which can model computation; hence temporal logic is very useful in formal verification.

Author: SKS

Implementation

The SMV model checker.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Sat Sep 4 16:48:17 1999.
HTML page formatted Thu Apr 17 10:50:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/temporllogic.html


terminal

(definition)

Definition: The set of points in a plane or vertices in a graph defining endpoints of a Steiner tree.

See also Steiner point, Steiner vertex.

Author: PEB

More information

Steiner Tree page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:08:59 2000.
HTML page formatted Thu Apr 17 10:50:45 2003.

This page's URL is http://www.nist.gov/dads/HTML/terminal.html


terminal node

(definition)

Definition: See leaf.

Authors: PEB,CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 09:54:49 2002.
HTML page formatted Mon May 12 10:30:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/terminalNode.html


ternary search tree

(data structure)

Definition: (no definition here, yet, but you can help.)

Also known as TST.

See also trie, binary search tree, three-way radix quicksort.

Implementation

papers, demos, and code (C), (C).

More information

Jon L. Bentley and Robert Sedgewick, Algorithms for Sorting and Searching Strings, Proc. 8th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA), January 1997.

Jon Bentley and Robert Sedgewick, Ternary Search Trees, Dr. Dobb's Journal, April 1998.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:18:21 2002.
HTML page formatted Thu Apr 17 10:50:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/ternarySearchTree.html


text

(definition)

Definition: A list of characters, usually thought of as a list of words separated by spaces.

See also string matching, string matching with errors, longest common subsequence, inverted index.

Note: The term string usually refers to a small sequence of characters, such as a name or a sentence. The term text usually refers to a large sequence of characters, such as an article or a book.

See definition relating to string matching in Algorithms and Theory of Computation Handbook, page 11-26.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Oct 5 09:55:14 2001.
HTML page formatted Thu Apr 17 10:50:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/text.html


text match

(classic problem)

Definition: See string matching.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:52:13 2003.
HTML page formatted Thu Apr 17 10:50:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/textMatch.html


text searching

(classic problem)

Definition: See string matching.

Author: PEB

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C), (C++ and Pascal), Strmat (C) - a collection of string matching and pattern discovery programs, (Fortran), (Fortran).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:52:13 2003.
HTML page formatted Thu Apr 17 10:50:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/textSearching.html


Theta

(definition)

Definition: A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items. Informally, saying some equation f(n) = upper-case Theta (g(n)) means it is within a constant multiple of g(n). The equation is read, "f of n is theta g of n".

Formal Definition: f(n) = upper-case Theta (g(n)) means there are positive constants c1, c2, and k, such that 0 less than or equal to c1g(n) less than or equal to f(n) less than or equal to c2g(n) for all n greater than or equal to k. The values of c1, c2, and k must be fixed for the function f and must not depend on n.

Also known as theta.

See also big-O notation, similar to , asymptotically tight bound.

Note: This is the upper-case Greek letter Theta.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 11 09:50:08 2002.
HTML page formatted Thu Apr 17 10:48:07 2003.

This page's URL is http://www.nist.gov/dads/HTML/theta.html


theta

(definition)

Definition: See upper-case Theta .

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Feb 11 09:50:08 2002.
HTML page formatted Thu Apr 17 10:50:46 2003.

This page's URL is http://www.nist.gov/dads/HTML/thetaI.html


threaded binary tree

(data structure)

Definition: See threaded tree.

Note: Although Knuth defines a threaded tree and a threaded binary tree in [Knuth98, 1:320, Sect. 2.3.1], the first term might refer to a threaded multiway tree.

Author: PEB

Implementation

Ben Pfaff's explanations and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:23:47 2003.
HTML page formatted Wed Jun 11 14:28:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/threadedBinaryTree.html


threaded tree

(data structure)

Definition: A binary search tree in which each node uses an otherwise-empty left child link to refer to the node's in-order predecessor and an empty right child link to refer to its in-order successor.

See also right-threaded tree, binary search tree.

Note: See [Knuth98, 1:320, Sect. 2.3.1]. Although the definition could refer to a multiway tree, Knuth defines a threaded tree as a binary tree.

Author: PEB

Implementation

Ben Pfaff's explanations and code (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 11 14:23:57 2003.
HTML page formatted Wed Jun 11 14:28:39 2003.

This page's URL is http://www.nist.gov/dads/HTML/threadedtree.html


three-dimensional

(definition)

Definition: Dealing with or restricted to a space in which location can be completely described with exactly three orthogonal axes.

See also one-dimensional, two-dimensional, k-dimensional.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:24:17 2000.
HTML page formatted Thu Apr 17 10:50:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/threedimnsnl.html


three-way merge sort

(algorithm)

Definition: A k-way merge sort which uses three input and three output streams.

See also two-way merge sort, merge sort, balanced merge sort.

Author: ASK

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 31 09:41:14 1999.
HTML page formatted Thu Apr 17 10:50:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/threewaymsrt.html


three-way radix quicksort

Definition: (no definition here, yet, but you can help.)

Also known as radix quicksort.

See also radix sort, quicksort, ternary search tree.

Implementation

papers, demos, and code (C)

More information

Jon L. Bentley and Robert Sedgewick, Algorithms for Sorting and Searching Strings, Proc. 8th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA), January 1997.

Jon Bentley and Robert Sedgewick, Ternary Search Trees, Dr. Dobb's Journal, April 1998.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 14:35:43 2002.
HTML page formatted Thu Apr 17 10:50:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/threeWayRadixQuicksort.html


time-constructible function

(definition)

Definition: A function t(n) that gives the actual running time of some Turing machine on all inputs of length n.

See also space-constructible function, time/space complexity.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:03:11 2000.
HTML page formatted Mon May 12 10:30:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/time.html


time/space complexity

(definition)

Definition: The maximum time or space required by a Turing machine on any input of length n.

See also time-constructible function, space-constructible function.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:03:06 2000.
HTML page formatted Mon May 12 10:30:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/timespace.html


top-down radix sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

(C and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:07:23 2001.
HTML page formatted Thu Apr 17 10:50:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/topdwnrdxsrt.html


top-down tree automaton

(definition)

Definition: (no definition here, yet, but you can help.)

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jun 23 09:23:00 1999.
HTML page formatted Thu Apr 17 10:50:47 2003.

This page's URL is http://www.nist.gov/dads/HTML/topdwntrtmtn.html


topological sort

(definition)

Definition: To arrange items when some pairs of items have no comparison, that is, according to a partial order.

See also topological order.

Note: After [Leda98].

Author: PEB

Implementation

(C++, Mathematica, C, and Pascal), build, traverse, top sort, etc. weighted, directed graphs (Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 14 13:21:01 2002.
HTML page formatted Thu Apr 17 10:50:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/topologcsort.html


topological order

(definition)

Definition: A numbering of the vertices of a directed acyclic graph such that every edge from a vertex numbered i to a vertex numbered j satisfies i<j.

See also topological sort.

Note: From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:02:58 2000.
HTML page formatted Mon May 12 10:30:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/topologicalOrder.html


topology tree

(definition)

Definition: Tree that describes a balanced decomposition of another tree, according to its topology. More precisely, given a restricted multilevel partition for a tree T, a topology tree satisfies the following: (1) A topology tree node at level l represents a vertex cluster at level l in the restricted multilevel partition, and (2) A node at level l greater than or equal to 1 has at most two children, representing the vertex clusters at level l-1 whose union gives the vertex cluster the node represents.

Note: From Algorithms and Theory of Computation Handbook, page 8-11, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:02:27 2000.
HTML page formatted Mon May 12 10:30:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/topologytree.html


top sort

(definition)

Definition: See topological sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 14 13:21:01 2002.
HTML page formatted Thu Apr 17 10:50:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/topSort.html


total function

(definition)

Definition: A function which is defined for all inputs of the right type, that is, for all of its domain.

See also partial function.

Note: Square (x2) is total, while reciprocal (1/x) is not, since 0 is a real number, but has no reciprocal.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 28 13:44:33 2000.
HTML page formatted Thu Apr 17 10:50:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/totalfunc.html


totally decidable language

(definition)

Definition: See decidable language.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:21:50 2002.
HTML page formatted Mon May 12 10:30:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/totallyDecidableLanguage.html


totally decidable problem

(definition)

Definition: See decidable.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 15:22:08 2002.
HTML page formatted Mon May 12 10:30:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/totallyDecidableProblem.html


totally undecidable problem

(definition)

Definition: A problem that cannot be solved by a Turing machine.

See also undecidable problem, unsolvable problem.

Note: From Algorithms and Theory of Computation Handbook, page 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:02:09 2000.
HTML page formatted Mon May 12 10:30:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/totallyUndecidableProb.html


total order

(definition)

Definition: An order defined for all pairs of items of a set. For instance, less than or equal to (less than or equal to) is a total order on integers, that is, for any two integers, one of them is less than or equal to the other.

Formal Definition: A total order is a relation that is reflexive, transitive, antisymmetric, and total.

Also known as linear order.

See also partial order, chain.

Authors: PEB,PJT

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 25 16:41:51 2001.
HTML page formatted Thu Apr 17 10:50:48 2003.

This page's URL is http://www.nist.gov/dads/HTML/totalorder.html


tour

(definition)

Definition: See Hamiltonian cycle.

Author: PEB

Implementation

(Fortran, C, Mathematica, and C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 11:00:44 2003.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/tour.html


tournament

(algorithm)

Definition: Find the maximum of a set of n elements in ceiling( log n ) "rounds" (passes) by "playing" (comparing) pairs of elements and advancing the winner (greater) of each pair to the next round. It takes n-1 comparisons, like linear search, but may be parallelized, extended to also find the second greatest element, etc.

See also select kth element, select and partition.

Note: The second greatest element can be found with log n - 1 additional comparisons.

Author: GS

Implementation

Forbes D. Lewis' essay on Order Statistics and Tournaments (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 13 15:59:00 2001.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/tournament.html


towers of Hanoi

(classic problem)

Definition: Given three posts (towers) and n disks of decreasing sizes, move the disks from one post to another one at a time without putting a larger disk on a smaller one. The minimum is 2n-1 moves. The "ancient legend" was invented by De Parville in 1884.

Note: A solution using recursion is: to move n disks from post A to post B 1) recursively move the top n-1 disks from post A to C, 2) move the nth disk from A to B, and 3) recursively move the n-1 disks from C to B. A solution using iteration is: on odd-numbered moves, move the smallest disk clockwise. On even-numbered moves, make the single other move which is possible.

[GCG92] gives generalizations of the puzzle, algorithms, and proofs.

Author: PEB

Implementation

(JavaScript)

More information

The Puzzle Archive gives background and a recursive and an iterative solution. demonstration

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 30 10:40:47 2002.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/towersOfHanoi.html


tractable

(definition)

Definition: A problem which has an algorithm which computes all instances of it in polynomial time.

See also intractable, decidable, solvable, computable.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 14:02:14 2002.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/tractable.html


transducer

(definition)

Definition: A finite state machine specifically with a read-only input and a write-only output. The input and output cannot be reread or changed.

See also Turing transducer, finite state transducer, pushdown transducer.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Apr 5 10:10:18 2000.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/transducer.html


transition

(definition)

Definition: The change from one state to another in a finite state machine. Analogously, an edge in a directed graph.

Also known as state transition, move.

See also transition function, next state, Mealy machine.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Feb 15 09:49:26 2002.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/transition.html


transition function

(definition)

Definition: A function of the current state and input giving the next state of a finite state machine or Turing machine.

Note: This defines the set of transitions.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 12 17:16:19 2002.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/transitionfn.html


transitive

(definition)

Definition: A binary relation R for which a R b and b R c implies a R c.

See also reflexive, symmetric.

Note: The relation "less than" is transitive: if a < b and b < c, then a < c. The relation "is an ancestor of" is also transitive: if Reuben is an ancestor of Bill and Bill is an ancestor of Patrick, Reuben is an ancestor of Patrick. However "likes" is not transitive since someone I like may like someone that I don't like.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 12 09:22:04 2000.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/transitive.html


transitive closure

(definition)

Definition: An extension or superset of a binary relation such that whenever (a,b) and (b,c) are in the extension, (a,c) is also in the extension.

See also transitive reduction, transitive.

Author: SKS

Implementation

on a graph (C++ and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 12 09:21:19 2000.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/transitiveClosure.html


transpose sequential search

(algorithm)

Definition: Search an array or list by checking items one at a time. If the value is found, swap it with its predecessor so it is found faster next time.

Also known as self-organizing sequential search.

See also linear search, move-to-front heuristic, self-organizing list.

Note: This moves more frequently searched items to the front. If a few items are sought much more often than the rest, this can save time. A binary search or hash table is almost always faster, though.

Author: PEB

Implementation

Discussion and code (C); (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:32:43 2003.
HTML page formatted Thu Apr 17 10:50:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/transposeSeqSearch.html


transitive reduction

(definition)

Definition: The transitive reduction of a directed graph G is the directed graph G' with the smallest number of edges such for every path between vertices in G, G' has a path between those vertices.

See also reduced digraph, transitive closure.

Note: Informally G' is the minimal graph with the connectivity as G. After abstract of A. V. Aho, M. R. Garey, and J. D. Ullman. The transitive reduction of a directed graph. SIAM Journal on Computing, 1:131--137, 1972.

Author: PEB

Implementation

on a graph (C++ and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:15:20 2000.
HTML page formatted Thu Apr 17 10:50:49 2003.

This page's URL is http://www.nist.gov/dads/HTML/transtvreduc.html


traveling salesman

(classic problem)

Definition: Find a path through a weighted graph which starts and ends at the same vertex, includes every other vertex exactly once, and minimizes the total cost of edges.

Also known as TSP.

See also bottleneck traveling salesman, Hamiltonian cycle, optimization problem, Christofides algorithm, similar problems: all pairs shortest path, minimum spanning tree, vehicle routing problem.

Note: Less formally, find a path for a salesman to visit every listed city at the lowest total cost.

The above described path is always a Hamiltonian cycle, or tour, however a Hamiltonian cycle need not be optimal. The problem is an optimization problem, that is, to find the shortest tour. The corresponding decision problem asks if there is a tour with a cost less than some given amount. See [CLR90, page 969].

If the triangle inequality does not hold, that is dik > dij + djk for some i, j, k, there is no possible polynomial time algorithm which guarantees near-optimal result (unless P=NP).

If the triangle inequality holds, you can quickly get a near-optimal solution by finding the minimum spanning tree. Convert the tree to a path by traversing the tree, say by depth-first search, but go directly to the next unvisited node, rather than repeating nodes. Christofides algorithm starts with a minimum spanning tree, but is more careful about converting the tree to a path with results closer to optimal.

Author: PEB

Implementation

Links to software as well as papers, preprints, reports, etc., on-line on this and related problems, solver packages (C) in addition to a pictorial history, papers, and an annotated bibliography, (C, Fortran, Pascal, Mathematica, and C++).

More information

Several animations of different heuristics; links to challenges, advances, etc.; program to find a good solution using a genetic algorithm.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 9 13:07:03 2002.
HTML page formatted Thu Apr 17 10:50:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/travelingSalesman.html


traveling salesman problem

(classic problem)

Definition: See traveling salesman.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 9 13:07:03 2002.
HTML page formatted Thu Apr 17 10:50:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/travelingSalesmanProblem.html


travelling salesman problem

(classic problem)

Definition: See traveling salesman.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 9 13:07:03 2002.
HTML page formatted Thu Apr 17 10:50:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/travellingSalesmanProblem.html


treap

(data structure)

Definition: A binary search tree in which nodes have another key, called the priority. Operations also keep nodes in heap order with regard to the priority.

See also randomized binary search tree.

Note: The name comes from "tree" and "heap".

Author: PEB

Implementation

Oleg Kiselyov's (Scheme)

More information

Raimund G. Seidel and Cecilia R. Aragon, Randomized Search Trees, Algorithmica, 16:464-497 (1996). Also in 30th Annual Symposium on Foundations of Computer Science, pages 540-545, Research Triangle Park, North Carolina, 30 October-1 November 1989. IEEE.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Nov 19 09:18:59 2001.
HTML page formatted Thu Apr 17 10:50:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/treap.html


tree

(data structure)

Definition: (1) A data structure accessed beginning at the root node. Each node is either a leaf or an internal node. An internal node has one or more child nodes and is called the parent of its child nodes. All children of the same node are siblings. Contrary to a physical tree, the root is usually depicted at the top of the structure, and the leaves are depicted at the bottom. (2) A connected, undirected, acyclic graph. It is rooted and ordered unless otherwise specified.

Formal Definition: (1) A tree is either

  • empty (no nodes), or
  • a root and zero or more subtrees.
The subtrees are ordered.

See also kinds of trees: heap, B-tree, binary tree, balanced tree, multiway tree, complete tree, search tree, digital tree, other vocabulary: descendant, ancestor, tree traversal, height, depth (2), technical terms: ordered tree, rooted tree, free tree, arborescence.

Note: Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

A tree in the data structure sense (1) is not the same as a tree in the graph sense (2). Consider possible binary trees with two nodes. There are two possible data structures: a root and a left subtree or a root and a right subtree. However there is only one possible graph: a root and a subtree. The graph definition doesn't allow for "the subtree is the right subtree and the left subtree is empty". Also there is no "empty" graph tree.

Thanks to Sharat Chandran (sharat@cs.umd.edu) for clarifying the difference between these two senses.

The formal definition is after [CLR90, page 94].

Authors: PEB,CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 12:54:22 2003.
HTML page formatted Fri May 23 15:04:37 2003.

This page's URL is http://www.nist.gov/dads/HTML/tree.html


tree automaton

(definition)

Definition: A tree automaton is an extension of a finite state machine, but operates on n-ary constructors. Where a finite state automaton reaches a new state with a single state and character, a tree automaton takes n states and constructors. Tree automata may be top-down (starting from the root) or bottom-up (starting from the leaves), and deterministic or nondeterministic.

See also deterministic finite tree automaton, nondeterministic finite tree automaton, deterministic tree automaton, nondeterministic tree automaton, bottom-up tree automaton, top-down tree automaton.

Note: Words for finite state automata can be seen as composed of unary constructors, the alphabet, and a 0-ary constructor, the end of the word.

Nondeterministic top-down and bottom-up automata, and deterministic bottom-up automata are equivalent, but top-down automata are weaker.

Author: DM

Implementation

(ELAN)

More information

Tree Automata Techniques and Applications page.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 29 12:20:23 2002.
HTML page formatted Thu Apr 17 10:50:50 2003.

This page's URL is http://www.nist.gov/dads/HTML/treeautomata.html


tree contraction

(definition)

Definition: Contracting a tree by removing some of the nodes.

Note: From Algorithms and Theory of Computation Handbook, page 47-39, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:05:12 2000.
HTML page formatted Mon May 12 10:30:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/treecontrctn.html


tree editing problem

(definition)

Definition: The problem of finding an edit script of minimum cost which transforms a given tree into another given tree.

See also edit operation, string editing problem, forest editing problem.

Note: From Algorithms and Theory of Computation Handbook, page 13-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:02:01 2000.
HTML page formatted Mon May 12 10:30:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/treeedit.html


tree sort

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also binary search tree.

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:07:17 2001.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/treesort.html


tree traversal

(definition)

Definition: A technique for processing the nodes of a tree in some order.

See also preorder traversal, in-order traversal, postorder traversal, level-order traversal.

Author: PEB

More information

Demonstration of each type of traversal on a binary tree.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 15:12:45 2000.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/treetravrsl.html


triangle inequality

(definition)

Definition: The property that a complete weighted graph satisfies weight(u,v) less than or equal to weight(u,w) + weight(w,v) for all vertices u, v, w. Informally, the graph has no short cuts.

Note: This holds for any graph representing points in a metric space. Many problems involving edge-weighted graphs have better approximation algorithms if the problem is restricted to weights satisfying the triangle inequality.

From Algorithms and Theory of Computation Handbook, page 34-17, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:01:55 2000.
HTML page formatted Mon May 12 10:30:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/trianglnqlty.html


triconnected graph

(definition)

Definition: A connected graph such that deleting any two vertices (and incident edges) results in a graph that is still connected.

See also biconnected graph, k-connected graph, cut vertex.

Note: After Tomas Rokicki <rokicki@instantis.com>, 24 December 2002.

Informally, there are at least three independent paths from any vertex to any other vertex. After Paul M. Sant, 6 Sep 2000.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 7 09:58:17 2003.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/triconnectedGraph.html


trie

(data structure)

Definition: A tree for storing strings in which there is one node for every common prefix. The strings are stored in extra leaf nodes.

See also digital tree, digital search tree, directed acyclic word graph, compact DAWG, Patricia tree, suffix tree.

Note: The name comes from retrieval and is pronounced, "tree."

Author: PEB

Implementation

insert (C), search (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:11:31 2001.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/trie.html


trinary function

(definition)

Definition: A function with three arguments.

See also constant function, unary function, binary function, n-ary function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Aug 4 11:05:17 1999.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/trinaryfunc.html


tripartition

(algorithm)

Definition: To partition array elements into three groups.

See also Dutch national flag.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 13 15:08:33 2003.
HTML page formatted Tue May 13 15:38:19 2003.

This page's URL is http://www.nist.gov/dads/HTML/tripartition.html


TSP

(classic problem)

Definition: See traveling salesman.

Author: PEB

Implementation

Links to software as well as papers, preprints, reports, etc., on-line on this and related problems, solver packages (C) in addition to a pictorial history, papers, and an annotated bibliography, (C, Fortran, Pascal, Mathematica, and C++).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu May 9 13:07:03 2002.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/tsp.html


TST

(data structure)

Definition: See ternary search tree.

Implementation

papers, demos, and code (C), (C).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 3 15:18:21 2002.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/tst.html


Turbo-BM

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Boyer-Moore.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:55:58 2003.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/turboBM.html


Turbo Reverse Factor

(algorithm)

Definition: (no definition here, yet, but you can help.)

See also Reverse Factor.

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:55:50 2003.
HTML page formatted Thu Apr 17 10:50:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/turboRevFact.html


Turing machine

(definition)

Definition: A model of computation consisting of a finite state machine controller, a read-write head, and an unbounded sequential tape. Depending on the current state and symbol read on the tape, the machine can change its state and move the head to the left or right. Unless otherwise specified, a Turing machine is deterministic.

See also other models: cell probe model, random access machine, pointer machine, multiprocessor model, related terms: big-O notation, busy beaver, variants: alternating Turing machine, nondeterministic Turing machine, oracle Turing machine, probabilistic Turing machine, universal Turing machine.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

More information

An article in the Stanford Encyclopedia of Philosophy.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 13:55:31 2002.
HTML page formatted Mon May 12 10:30:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/turingMachine.html


Turing reduction

(definition)

Definition: A reduction computable by an oracle Turing machine that halts for all inputs.

See also NP-complete, Cook reduction, Karp reduction, l-reduction, many-one reduction, polynomial-time reduction.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:01:45 2000.
HTML page formatted Mon May 12 10:30:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/turingredctn.html


Turing transducer

(definition)

Definition: (no definition here, yet, but you can help.)

Note: like transducer, but has m work tapes

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Nov 18 14:26:28 1999.
HTML page formatted Thu Apr 17 10:50:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/turingtrnsdr.html


twin grid file

(data structure)

Definition: A point access method which is two simultaneous grid files. Points are shuffled between the primary and secondary file to minimize the total size.

See also multilayer grid file.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:30:16 2001.
HTML page formatted Thu Apr 17 10:50:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/twingridfl.html


2-3-4 tree

(data structure)

Definition: A variant of a B-tree with two, three, or four children for each internal node.

See also 2-3 tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 14:13:43 2003.
HTML page formatted Thu Apr 17 10:50:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/two34tree.html


2-3 tree

(data structure)

Definition: A B-tree of order 3, that is, internal nodes have two or three children.

See also 2-3-4 tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 14:13:11 2003.
HTML page formatted Thu Apr 17 10:50:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/two3tree.html


two-dimensional

(definition)

Definition: Dealing with or restricted to a plane. An organization where location can be completely described with exactly two orthogonal axes.

See also one-dimensional, three-dimensional, k-dimensional.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:30:36 2000.
HTML page formatted Thu Apr 17 10:50:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/twodimensnal.html


two-level grid file

(data structure)

Definition: A point access method which is two levels of grid files. The first level addresses second level grid files.

Note: After [GG98].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Aug 21 13:31:50 2001.
HTML page formatted Thu Apr 17 10:50:52 2003.

This page's URL is http://www.nist.gov/dads/HTML/twolevgrid.html


two-terminal dag

(data structure)

Definition: See st-digraph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri May 23 15:32:57 2003.
HTML page formatted Fri May 23 15:34:51 2003.

This page's URL is http://www.nist.gov/dads/HTML/twoterminalDag.html


Two Way algorithm

(algorithm)

Definition: (no definition here, yet, but you can help.)

Implementation

Christian Charras' and Thierry Lecroq's Exact String Matching Algorithms (C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Mar 3 08:55:30 2003.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/twoWay.html


two-way linked list

(data structure)

Definition: See doubly linked list.

Author: PEB

Implementation

Illustrations, too (C++)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:04:41 2003.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/twowayLinkedList.html


two-way list

(data structure)

Definition: See doubly linked list.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 13:04:41 2003.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/twowayList.html


two-way merge sort

(algorithm)

Definition: A k-way merge sort that sorts a data stream using repeated merges. It distributes the input into two streams by repeatedly reading a block of input that fits in memory, a run, sorting it, then writing it to the next stream. It merges runs from the two streams into an output stream. It then repeatedly distributes the runs in the output stream to the two streams and merges them until there is a single sorted output.

See also balanced two-way merge sort, merge sort, simple merge, balanced merge sort, nonbalanced merge sort.

Note: This is an external sort.

Author: ASK

More information

2-way, balanced, k-way, and polyphase merge sorts

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 15:45:32 2003.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/twowaymrgsrt.html


UB

(classic problem)

Definition: See unbounded knapsack problem.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 25 08:54:52 2002.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/ub.html


UKP

(classic problem)

Definition: See unbounded knapsack problem.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 25 08:54:52 2002.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/ukp.html


unary function

(definition)

Definition: A function which takes one argument.

See also constant function, binary function, n-ary function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Dec 21 16:33:50 2000.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/unaryfunc.html


unbounded knapsack problem

(classic problem)

Definition: Given types of items of different values and volumes, find the most valuable set of items that fit in a knapsack of fixed volume. The number of items of each type is unbounded. This is an NP-hard combinatorial optimization problem.

Formal Definition: There is a knapsack of capacity c > 0 and N types of items. Each item of type t has value vt > 0 and weight wt > 0. Find the number nt > 0 of each type of item such that they fit, summation t=1N ntwt less than or equal to c, and the total value, summation t=1N ntvt, is maximized.

Also known as UKP.

See also knapsack problem, fractional knapsack problem.

Author: PEB

More information

demonstration solutions using dynamic programming. formal definition and links to papers. Links to many papers.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 25 08:54:52 2002.
HTML page formatted Thu Apr 17 10:50:53 2003.

This page's URL is http://www.nist.gov/dads/HTML/unboundedKnapsack.html


uncomputable function

(definition)

Definition: A function that cannot be computed by any algorithm --- equivalently, not by any Turing machine.

See also computable, unsolvable problem, intractable, busy beaver.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 10 14:03:49 2002.
HTML page formatted Mon May 12 10:31:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/uncomputableFunction.html


uncomputable problem

(definition)

Definition: (no definition here, yet, but you can help.)

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jun 17 16:21:44 1999.
HTML page formatted Thu Apr 17 10:50:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/uncomputableProblem.html


undecidable

(definition)

Definition: (no definition here, yet, but you can help.)

See also decidable, NP, NP-complete.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 9 10:30:40 1999.
HTML page formatted Thu Apr 17 10:50:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/undecidable.html


undecidable language

(definition)

Definition: A language for which the membership cannot be decided by an algorithm --- equivalently, cannot be recognized by a Turing machine that halts for all inputs.

See also decidable language, undecidable problem, decidable.

Note: From Algorithms and Theory of Computation Handbook, page 24-19, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 15:54:21 2000.
HTML page formatted Mon May 12 10:31:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/undecidableLanguage.html


undecidable problem

(definition)

Definition: A problem that cannot be solved for all cases by any algorithm whatsoever---equivalently, whose associated language cannot be recognized by a Turing machine that halts for all inputs.

See also decidable, unsolvable problem, undecidable language, intractable, Post's correspondence problem, halting problem, busy beaver.

Note: For instance, figuring out whether any arbitrary program halts for all inputs or not is an undecidable problem (this is the halting problem). That is, there can be no program that, when given any program, finishes in finite time and correctly answers "Yes, the program you gave me halts for all inputs" or "No, the program you gave me does not halt for some inputs."

From Algorithms and Theory of Computation Handbook, page 24-19 or 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 13:08:30 2001.
HTML page formatted Mon May 12 10:31:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/undecidableProblem.html


undirected graph

(data structure)

Definition: A graph whose edges are unordered pairs of vertices. That is, each edge connects two vertices.

See also directed graph, hypergraph, multigraph.

Note: Any undirected graph may be represented as a directed graph with two directed edges, one "to" and one "from," for each undirected edge.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:15:14 2000.
HTML page formatted Thu Apr 17 10:50:54 2003.

This page's URL is http://www.nist.gov/dads/HTML/undirectgraf.html


uniform circuit complexity

(definition)

Definition: The study of complexity classes defined by uniform circuit families.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:01:35 2000.
HTML page formatted Mon May 12 10:31:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/uniformCircuitComplexity.html


uniform circuit family

(definition)

Definition: A sequence of circuits, one for each input length n, that can be efficiently generated by a Turing machine.

See also uniform circuit complexity.

Note: From Algorithms and Theory of Computation Handbook, page 27-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 15:55:11 2000.
HTML page formatted Mon May 12 10:31:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/uniformCircuitFamily.html


uniform hashing

(algorithm)

Definition: A conceptual method of open addressing for a hash table. A collision is resolved by putting the item in the next empty place given by a probe sequence which is independent of sequences for all other key.

See also collision resolution scheme, clustering free, double hashing, quadratic probing, linear probing, perfect hashing, simple uniform hashing.

Note: Since the probe sequences are independent, this is free of clustering. This is conceptual because real probe sequences are unlikely to be completely independent.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 9 15:15:51 2003.
HTML page formatted Thu Apr 17 10:50:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/uniformhashn.html


uniform matrix

(data structure)

Definition: A matrix having the same number of items in each row.

See also ragged matrix.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Sep 2 14:29:23 1999.
HTML page formatted Thu Apr 17 10:50:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/uniformmatrx.html


union

(definition)

Definition: The union of two sets is a set having all members in either set.

See also intersection, difference, complement.

Note: The union of {2, 3, 5} and {7, 5, 8} is {2, 3, 5, 7, 8}.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Jan 9 11:33:37 2002.
HTML page formatted Thu Apr 17 10:50:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/union.html


union of automata

(algorithm)

Definition: An algorithm to find an automaton which accepts everything which the automata accept individually.

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:07:12 2001.
HTML page formatted Thu Apr 17 10:50:55 2003.

This page's URL is http://www.nist.gov/dads/HTML/unionautoma.html


universal hashing

(definition)

Definition: A scheme that chooses randomly from a set of hash functions.

See also adversary, cuckoo hashing.

Note: From Algorithms and Theory of Computation Handbook, page 2-14, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Feb 20 12:22:44 2003.
HTML page formatted Mon May 12 10:31:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/universalhsh.html


universal state

(definition)

Definition: A state in an alternating Turing machine from which the machine accepts only if all possible moves lead to acceptance.

See also existential state.

Note: From Algorithms and Theory of Computation Handbook, page 24-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:01:23 2000.
HTML page formatted Mon May 12 10:31:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/universalstt.html


universal Turing machine

(definition)

Definition: A Turing machine that is capable of simulating any other Turing machine by encoding the latter.

See also alternating Turing machine, nondeterministic Turing machine, oracle Turing machine, probabilistic Turing machine.

Note: From Algorithms and Theory of Computation Handbook, pages 24-19 and 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:08:26 2000.
HTML page formatted Mon May 12 10:31:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/universalTur.html


universe

(definition)

Definition: All potential elements of a set.

See also complement, restricted universe sort.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 14 11:00:22 2000.
HTML page formatted Thu Apr 17 10:50:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/universe.html


UnShuffle sort

(algorithm)

Definition: A distribution sort with two phases. In the first phase, the inputs are distributed among doubly-ended queues keeping the items in each queue ordered and creating a new queue when there is no place on an existing queue. The second phase is an ideal merge in which the item to be removed is determined by keeping the queues in a priority queue.

See also merge sort, distribution sort, ideal merge, pile.

Note: The doubly-ended queue with ordered items is called a pile. The UnShuffle algorithm is the most efficient available for sorting data streams that exhibit low entropy, i.e., are already mostly sorted or contains runs of sorted elements. The run time is upper-case Theta (N) for sorted input. The general case is NK/2 + N log K where K is the entropy of the input and is manifest in the number of piles generated during the distribution phase.

Author: ASK

More information

Art S. Kagel, Unshuffle Algorithm, Not Quite a Sort?, Computer Language Magazine, 3(11), November 1985.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 19 16:00:59 2003.
HTML page formatted Thu Apr 17 10:50:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/unshufflsort.html


unsolvable problem

(definition)

Definition: A computational problem that cannot be solved by a Turing machine. The associated function is called an uncomputable function.

See also solvable, undecidable problem, intractable, halting problem.

Note: From Algorithms and Theory of Computation Handbook, page 26-20, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Mar 6 12:46:28 2001.
HTML page formatted Mon May 12 10:31:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/unsolvablepr.html


unsorted list

(definition)

Definition: A list whose order of items, if any, is not known.

See also sort.

Note: The list need not be out of order, simply that it is not known to be in order.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 4 15:18:27 2000.
HTML page formatted Thu Apr 17 10:50:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/unsortedlst.html


upper triangular matrix

(data structure)

Definition: A matrix which is only defined at (i,j) when i greater than or equal to j.

See also lower triangular matrix, strictly upper triangular matrix, ragged matrix.

Note: For example

 | j
i | 1 | 7 | 7 | 6
 | - | 9 | 1 | 1
 | - | - | 8 | 8
 | - | - | - | 1

It may be more compactly represented in an array by storing entry (i,j) in location n(i-1)+j- i(i-1)/2 = (2n-i)(i-1)/2 + j (one-based indexing).

Author: PEB

Implementation

(Fortran)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed May 16 12:15:00 2001.
HTML page formatted Thu Apr 17 10:50:56 2003.

This page's URL is http://www.nist.gov/dads/HTML/uppertriangm.html


Van Emde-Boas priority queue

(data structure)

Definition: (no definition here, yet, but you can help.)

Implementation

insert (Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Apr 23 13:06:51 2001.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/vanemdeboas.html


vehicle routing problem

(classic problem)

Definition: Find an optimal route of one or more vehicles through a graph.

Also known as VRP.

See also traveling salesman, Hamiltonian cycle, Chinese postman problem, optimization problem.

Note: The vehicles may be school buses, garbage trucks, delivery vans, etc. The optimal may be fastest routes, least variation (all get nearly equal assignments), least "cost" (big cost for going through Mayor's neighborhood, small cost for taking freeway), etc.

Author: PEB

Implementation

Jano Simicka's Vehicle Routing Problem page has links to papers, sample problems, implementations, etc.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 28 15:41:25 2002.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/vehicleRouting.html


Veitch diagram

(algorithm)

Definition: See Karnaugh map.

Author: SKS

Implementation

(Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Apr 1 09:34:50 2003.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/VeitchDiagram.html


Venn diagram

(definition)

Definition: A visual depiction of membership in sets according to binary properties, using overlapping ovals to divide the plane into regions. Regions inside an oval have the property the oval represents, while regions outside it do not have the property. Regions are shaded to show combinations of properties (or sets) of interest, or elements are placed in regions corresponding to their properties (or membership).

See also Karnaugh map.

Note: Here is an example of a Venn diagram with three properties: male/female, happy/sad, and short/tall. Some of the combinations, such as sad, tall males and happy, short females are labeled.

John Venn first published these diagrams in 1880, although similar diagrams were used much earlier by Leibniz and Euler (Opera Omnia, a century earlier).

Author: PEB

More information

Simple diagrams, examples, and explanations. Formal definition and methods to draw diagrams for N variables. A short biography of John Venn, with extensive references.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon May 6 09:11:34 2002.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/venndiagram.html


vertex

(definition)

Definition: An item in a graph. Sometimes referred to as a node.

See also edge, in-degree, out-degree.

Note: The plural is vertices.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 17 11:52:10 2002.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertex.html


vertex coloring

(definition)

Definition: An assignment of colors (or any distinct marks) to the vertices of a graph. Strictly speaking, a coloring is proper if no two adjacent vertices have the same color.

See also edge coloring, k-coloring, vertex cover, chromatic number.

Note: From Algorithms and Theory of Computation Handbook, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Authors: PEB,CRC-A

Implementation

(Fortran, C, Pascal, C++, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Apr 4 12:21:01 2002.
HTML page formatted Mon May 12 10:31:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertexcolor.html


vertex connectivity

(definition)

Definition: (1) The smallest number of vertices whose deletion will cause a connected graph to not be connected. (2) For a pair of vertices s and t in a graph, the smallest number of vertices whose deletion will separate s from t.

See also edge connectivity.

Author: GS

Implementation

(Mathematica, C, and Pascal)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Dec 14 15:26:35 2001.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertexConnectivity.html


vertex cover

(classic problem)

Definition: A set of vertices in an undirected graph where every edge connects at least one vertex. The vertex cover problem is to find a minimum size set and is NP-complete.

See also vertex coloring, covering.

Author: PEB

Implementation

(C, Fortran, and Mathematica)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 7 10:57:12 2002.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertexcover.html


vertex covering problem

(classic problem)

Definition: See vertex cover.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 7 10:57:12 2002.
HTML page formatted Thu Apr 17 10:50:57 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertexCoveringProblem.html


vertexes

(definition)

Definition: See vertex.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Jan 17 11:52:10 2002.
HTML page formatted Thu Apr 17 10:50:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertexes.html


vertex set

(definition)

Definition: (no definition here, yet, but you can help.)

See also feedback edge.

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Mar 17 15:10:44 1999.
HTML page formatted Thu Apr 17 10:50:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertexset.html


vertical visibility map

(definition)

Definition: A partition of the plane into regions by drawing a vertical straight line through each vertex p of a planar straight-line graph until it intersects an edge e of the graph or extends to infinity. The edge e is said to be vertically visible from p.

See also horizontal visibility map, visibility map, visible.

Note: From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:38:01 2000.
HTML page formatted Mon May 12 10:31:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertical.html


vertices

(definition)

Definition: Plural of vertex.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Feb 22 11:14:19 2000.
HTML page formatted Thu Apr 17 10:50:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/vertices.html


virtual hashing

Definition: (no definition here, yet, but you can help.)

Note: Litwin, W. "Virtual hashing: A dynamically changing hashing." Proc. Very Large Data Bases Conf., Berlin, 1978, pp. 517-523.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Nov 14 09:40:45 2000.
HTML page formatted Thu Apr 17 10:50:58 2003.

This page's URL is http://www.nist.gov/dads/HTML/virtualHashing.html


visibility map

(definition)

Definition: A planar subdivision that encodes the visibility information, that is, which points are mutually visible.

See also horizontal visibility map, vertical visibility map.

Note: From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:00:48 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/visibilityMap.html


visible

(definition)

Definition: Two points p and q are visible if the straight line segment between them does not intersect any other object, edge, etc.

See also horizontal visibility map, vertical visibility map.

Note: Visibility is symmetric, that is, if p is visible from q, q is visible from p.

From Algorithms and Theory of Computation Handbook, page 19-27, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Oct 12 09:20:31 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/visible.html


Viterbi algorithm

(algorithm)

Definition: An algorithm to compute the optimal (most likely) state sequence in a hidden Markov model given a sequence of observed outputs.

See also Baum Welch algorithm.

Note: Also used to decode, i.e. remove noise from, linear error-correcting codes.

Author: PEB

More information

See this lesson on Hidden Markov Models for more explanation.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 1 16:45:49 2002.
HTML page formatted Thu Apr 17 10:50:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/viterbiAlgorithm.html


Viterbi search

(algorithm)

Definition: See Viterbi algorithm.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Thu Aug 1 16:45:49 2002.
HTML page formatted Thu Apr 17 10:50:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/ViterbiSearch.html


VRP

(classic problem)

Definition: See vehicle routing problem.

Author: PEB

Implementation

Jano Simicka's Vehicle Routing Problem page has links to papers, sample problems, implementations, etc.
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 28 15:41:25 2002.
HTML page formatted Thu Apr 17 10:50:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/vrp.html


walk

(definition)

Definition: A path in which edges may be repeated.

Note: From Algorithms and Theory of Computation Handbook, page 6-21, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Sep 6 12:08:03 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/walk.html


weak-heap

(data structure)

Definition: A relaxed heap satisfying the following three conditions: (1) every key in the right subtree of a node is greater than the key stored in the node itself, (2) the root has no left child, and (3) leaves are only found on the last two levels of the tree.

See also weak-heap sort.

Note: A weak-heap is realized with an array a of items and an array r of reverse bits. The left child of an index i is addressed by 2i+1-ri, and the right child is addressed by 2i+ri.

This is a min weak-heap. A max weak-heap has subtree keys that are less than the node's key.

Author: SE

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:31:51 2003.
HTML page formatted Thu Apr 17 10:50:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/weakheap.html


weak-heap sort

(algorithm)

Definition: A sort algorithm that builds a weak-heap, then repeatedly extracts the maximum item. In the worst case, the run time is O(n log n + 0.1 n).

See also heapsort.

Author: PEB

Implementation

(C)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:31:15 2003.
HTML page formatted Thu Apr 17 10:50:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/weakheapsort.html


weight-balanced tree

(data structure)

Definition: (no definition here, yet, but you can help.)

See also height-balanced tree.

Implementation

insert (C and Pascal) and delete (C and Pascal) that use check root (C and Pascal) (or this one or this one?), left rotation (C and Pascal), and right rotation (C and Pascal).
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:31:08 2003.
HTML page formatted Thu Apr 17 10:50:59 2003.

This page's URL is http://www.nist.gov/dads/HTML/weightbaltre.html


weighted, directed graph

(definition)

Definition: A directed graph that has a weight, or numeric value, associated with each edge.

See also weighted graph.

Author: PEB

Implementation

build, traverse, top sort, etc. weighted, directed graph (Java)
Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:30:44 2003.
HTML page formatted Thu Apr 17 10:51:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/weightdigraf.html


weighted digraph

(definition)

Definition: See weighted, directed graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Jan 28 12:30:44 2003.
HTML page formatted Thu Apr 17 10:51:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/weightedDigraph.html


weighted graph

(definition)

Definition: A graph having a weight, or number, associated with each edge. Some algorithms require all weights to be nonnegative, integral, positive, etc.

See also weighted, directed graph, labeled graph.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue May 14 12:22:16 2002.
HTML page formatted Thu Apr 17 10:51:00 2003.

This page's URL is http://www.nist.gov/dads/HTML/weightgraph.html


window

(definition)

Definition: substring of the text that is aligned with the pattern.

Note: From Algorithms and Theory of Computation Handbook, page 11-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 16:00:41 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/window.html


witness

(definition)

Definition: (1) a structure providing an easily verified bound on the optimal value of an optimization problem. Typically used in the analysis of an approximation algorithm to prove the performance guarantee. (2) a mismatch of two symbols of string y at a distance of d is a "witness" to the fact that in no subject y could occur twice at a distance of exactly d positions (equivalently, that d cannot be a period of y).

See also certificate.

Note: From Algorithms and Theory of Computation Handbook, pages 13-17 and 34-18, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 14:04:23 2002.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/witness.html


work

(definition)

Definition: The total number of operations taken by a computation.

See also big-O notation.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 15:53:56 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/work.html


work-depth model

(definition)

Definition: A model of parallel computation in which one keeps track of the total work and depth of a computation without worrying about how it maps onto a machine.

See also multiprocessor model.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 15:59:04 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/workdepthmdl.html


work-efficient

(definition)

Definition: A parallel algorithm which asymptotically requires at most a constant factor more work than the best known sequential algorithm or the optimal work.

See also asymptotic time complexity, work-preserving.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Aug 14 15:59:31 2000.
HTML page formatted Mon May 12 10:31:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/workefficint.html


work-preserving

(definition)

Definition: A translation of an algorithm from one model of computation to another in which the work is the same in both models, to within a constant factor.

See also work-efficient.

Note: From Algorithms and Theory of Computation Handbook, page 47-40, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 31 09:02:17 2000.
HTML page formatted Mon May 12 10:31:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/workpreserv.html


worst case

(definition)

Definition: (1) The situation or input that forces an algorithm or data structure to take the most time or resources. (2) Having to do with this situation or input.

See also best case, average case, worst-case cost, amortized cost, complexity, randomized algorithm, worst-case minimum access, adversary.

Note: See the notes on worst-case behavior at Huffman encoding and balanced quicksort and the link at BB alpha tree.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:13:07 2002.
HTML page formatted Thu Apr 17 10:51:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/worstcase.html


worst-case cost

(definition)

Definition: The highest possible use of resources of an algorithm, which occurs for the most pessimistic, or worst possible, input.

See also average-case cost, best-case cost, amortized cost, adversary.

Note: From Algorithms and Theory of Computation Handbook, page 1-26, Copyright © 1999 by CRC Press LLC. Appearing in the Dictionary of Computer Science, Engineering and Technology, Copyright © 2000 CRC Press LLC.

Author: CRC-A

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 12:13:22 2002.
HTML page formatted Mon May 12 10:31:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/worstcasecst.html


worst-case minimum access

(definition)

Definition: A figure of merit for a family of searches, the "best" is the search that takes the minimum accesses in the worst case.

Author: AB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Tue Dec 3 11:59:54 2002.
HTML page formatted Thu Apr 17 10:51:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/worstCaseMinimumAccess.html


xor

(definition)

Definition: "Exclusive OR" or "not equal to" function: 0 XOR 0 = 0, 0 XOR 1 = 1, 1 XOR 0 = 1, 1 XOR 1 = 0.

Also known as exclusive or.

See also and, or, not, implies.

Note: The name "exclusive or" is in contrast with inclusive or.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Nov 30 12:26:33 2001.
HTML page formatted Thu Apr 17 10:51:01 2003.

This page's URL is http://www.nist.gov/dads/HTML/xor.html


Yule distribution

(definition)

Definition: See Zipfian distribution.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 14:58:22 2002.
HTML page formatted Thu Apr 17 10:51:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/YuleDistribution.html


Zeller's algorithm

(algorithm)

Definition: See Zeller's congruence.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 1 11:45:21 2002.
HTML page formatted Thu Apr 17 10:51:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/ZellersAlgorithm.html


Zeller's congruence

(algorithm)

Definition: An algorithm to find the day of the week for any date.

See also Doomsday rule.

Author: PEB

Implementation

Dr J R Stockton's The Calendar Week (Pascal). View Page Source and search for text/javascript for JavaScript code. Comp.lang.c FAQ question 17.28 (C).

More information

A summary of the International Standard Date and Time Notation ISO 8601.

Christian Zeller, Kalender-Formeln, Acta Mathematica, 9:131-6, 1886-7.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Mon Jul 1 11:45:21 2002.
HTML page formatted Thu Apr 17 10:51:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/zellersCongruence.html


0-ary function

(definition)

Definition: A function that takes no arguments.

Also known as nullary function.

See also constant function, unary function, binary function, n-ary function.

Note: Pronounced "zero-airy". By analogy to unary, binary, etc.

A 0-ary or nullary function that is pure (no state or interactions with external variables) must be a constant function.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 14:59:54 2002.
HTML page formatted Thu Apr 17 10:51:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/zeroaryfunc.html


zero error probability in polynomial time

(definition)

Definition: See ZPP.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 15:28:15 2002.
HTML page formatted Thu Apr 17 10:51:02 2003.

This page's URL is http://www.nist.gov/dads/HTML/zeroErrorProbabilityInPolynomialTime.html


Zhu-Takaoka

(algorithm)

Definition: A string matching algorithm that is a variant of the Boyer-Moore algorithm. It uses two consecutive text characters to compute the bad character shift. It is faster when the alphabet or pattern is small, but the skip table grows quickly, slowing the pre-processing phase.

Author: BB

Implementation

explanation, animation, and example (C)

More information

R. F. Zhu and T. Takaoka, On improving the average case of the Boyer-Moore string matching algorithm, J. Inform. Process. 10(3):173-177 (1987).

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 14:59:06 2002.
HTML page formatted Thu Apr 17 10:51:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/zhuTakaoka.html


Zipfian distribution

(definition)

Definition: A distribution of probabilities of occurrence that follows Zipf's law.

Also known as Yule distribution.

Note: The distribution of words is often proportional to a function like 1/na.

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Wed Feb 6 14:58:22 2002.
HTML page formatted Thu Apr 17 10:51:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/zipfian.html


Zipf's law

(definition)

Definition: The probability of occurrence of words or other items starts high and tapers off. Thus, a few occur very often while many others occur rarely.

Formal Definition: Pn similar to 1/na, where Pn is the frequency of occurrence of the nth ranked item and a is close to 1.

See also Zipfian distribution, Lotka's law, Benford's law, Bradford's law.

Note: In the English language words like "and," "the," "to," and "of" occur often while words like "undeniable" are rare. This law applies to words in human or computer languages, operating system calls, colors in images, etc., and is the basis of many (if not, all!) compression approaches.

Named for George Kingsley Zipf.

Author: PEB

More information

A brief explanation of the law with links to dozens of papers.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Aug 2 10:35:06 2002.
HTML page formatted Thu Apr 17 10:51:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/zipfslaw.html


ZPP

(definition)

Definition: The class of languages for which a membership computation by a probabilistic Turing machine halts in polynomial time with no false acceptances or rejections, but randomly some "I don't know" answers. "ZPP" means "Zero error Probability in Polynomial" time.

Formal Definition: For a language, S, there exists a probabilistic Turing machine, M, that halts in polynomial time. M (correctly) accepts or rejects the string or, randomly, halts in an "I don't know" state.

See also RP, NP, BPP, Las Vegas algorithm.

Note: By repeating the run, the correct answer will always be found, albeit with polynomial expected run time.

After [Hirv01, page 19].

Author: PEB

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul E. Black (paul.black@nist.gov).

Entry modified Fri Apr 5 15:28:15 2002.
HTML page formatted Thu Apr 17 10:51:03 2003.

This page's URL is http://www.nist.gov/dads/HTML/zpp.html


2nd level index

DADS 2nd level index page

Up to Two-level Index

α
ω
Ω
ρ-approximation algorithm
∼
θ
absolute performance guarantee
abstract data type
(a,b)-tree
accepting state
Ackermann's function
active data structure
acyclic directed graph
acyclic graph
adaptive heap sort
adaptive Huffman encoding
adaptive k-d tree
adaptive sort
address-calculation sort
adjacency-list representation
adjacency-matrix representation
adjacent
admissible vertex
ADT
adversary
algorithm
algorithm B
algorithm BSTW
algorithm FGK
algorithmically solvable
algorithm V
all pairs shortest path
alphabet
Alpha Skip Search algorithm
alternating path
alternating Turing machine
alternation
American flag sort
amortized cost

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

ancestor
and
ANSI
antichain
antisymmetric
AP
Apostolico-Crochemore
Apostolico-Giancarlo algorithm
approximate string matching
approximation algorithm
arborescence
arc
arithmetic coding
array
array index
array merging
array search
articulation vertex
assignment problem
association list
associative
associative array
asymptotically tight bound
asymptotic bound
asymptotic equipartition property
asymptotic lower bound
asymptotic space complexity
asymptotic time complexity
asymptotic upper bound
augmenting path
automaton
average case
average-case cost
AVL tree
backtracking
bag
balance
balanced binary search tree
balanced binary tree

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

balanced k-way merge sort
balanced merge sort
balanced multiway merge
balanced multiway tree
balanced quicksort
balanced tree
balanced two-way merge sort
BANG file
Batcher sort
Baum Welch algorithm
BB alpha tree
BDD
BD-tree
Bellman-Ford algorithm
Benford's law
best case
best-case cost
best-first search
biconnected component
biconnected graph
bidirectional bubble sort
big-O notation
binary function
binary GCD algorithm
binary heap
binary insertion sort
binary knapsack problem
binary priority queue
binary relation
binary search
binary search tree
binary tree
binary tree representation of trees
bingo sort
binomial heap
binomial tree
bin packing problem
bin sort
bintree

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

bipartite graph
bipartite matching
bisector
bitonic sort
bit vector
Bk tree
block
block addressing index
blocking flow
block search
Bloom filter
blossom
bogosort
boolean
boolean expression
boolean function
border
bottleneck traveling salesman
bottom-up tree automaton
boundary-based representation
bounded error probability in polynomial time
bounded queue
bounded stack
Boyer-Moore
Boyer-Moore-Horspool
bozo sort
B+-tree
BPP
Bradford's law
branch and bound
branching
breadth-first search
Bresenham's algorithm
brick sort
bridge
British Museum algorithm
brute force
brute force string search
brute force string search with mismatches

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

B-spline
BSP-tree
B*-tree
B-tree
bubble sort
bucket
bucket array
bucketing method
bucket sort
bucket trie
buddy system
buddy tree
build-heap
busy beaver
BV-tree
Byzantine generals
cactus stack
Calculus of Communicating Systems
calendar queue
candidate consistency testing
candidate verification
canonical complexity class
capacitated facility location
capacity
capacity constraint
cartesian tree
cascade merge sort
Cayley-Purser
CCS
C curve
cell probe model
cell tree
cellular automaton
centroid
certificate
chain
chaining
child
Chinese postman problem

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

Chinese remainder theorem
Christofides algorithm
Christofides heuristic
chromatic index
chromatic number
Church-Turing thesis
circuit
circuit complexity
circuit value problem
circular list
circular queue
clique
clique problem
clustering
clustering free
coalesced hashing
coarsening
cocktail shaker sort
codeword
coding tree
collective recursion
collision
collision resolution scheme
Colussi
combination
comb sort
Communicating Sequential Processes
commutative
compact DAWG
comparison sort
competitive analysis
competitive ratio
complement
complete binary tree
complete graph
completely connected graph
complete tree
complexity
complexity class

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

computable
concave function
concurrent flow
concurrent read, concurrent write
concurrent read, exclusive write
configuration
confluently persistent data structure
conjunction
connected components
connected graph
coNP
constant function
container
continuous knapsack problem
Cook reduction
Cook's theorem
counting sort
covering
CRC
CRCW
CREW
critical path problem
CSP
CTL
cuckoo hashing
cut
cutting plane
cutting stock problem
cutting theorem
cut vertex
cycle
cyclic redundancy check
D-adjacent
DAG
DAG shortest paths
database
data structure
DAWG
decidable

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

decidable language
decimation
decision problem
decision tree
decomposable searching problem
degree
dense graph
depoissonization
depth
depth-first search
deque
derangement
descendant
deterministic
deterministic algorithm
deterministic finite automata string search
deterministic finite automaton
deterministic finite state machine
deterministic finite tree automaton
deterministic pushdown automaton
deterministic tree automaton
Deutsch-Jozsa algorithm
DFA
DFS
DFS forest
DFTA
diagonalization
diameter
dichotomic search
dictionary
diet
difference
digital search tree
digital tree
digraph
Dijkstra's algorithm
diminishing increment sort
dining philosophers
direct chaining hashing

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

directed acyclic graph
directed acyclic word graph
directed graph
directory
discrete interval encoding tree
discrete p-center
disjoint set
disjunction
distributional complexity
distribution sort
divide and conquer
divide and marriage before conquest
division method
domain
don't care
Doomsday rule
double-direction bubble sort
double-ended priority queue
double hashing
double left rotation
double metaphone
double right rotation
doubly-ended queue
doubly linked list
DPDA
Dragon curve
dual
dual linear program
Dutch national flag
dynamic
dynamic array
dynamic hashing
dynamic programming
dynamization transformation
edge
edge coloring
edge connectivity
edge crossing
edit distance

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

edit operation
edit script
efficiency
8 queens
element uniqueness
end-of-string
enfilade
ERCW
EREW
Euclidean algorithm
Euclidean distance
Euclidean Steiner tree
Euclidean traveling salesman problem
Euclid's algorithm
Euler cycle
Eulerian graph
Eulerian path
exact string matching
EXCELL
exchange sort
exclusive or
exclusive read, concurrent write
exclusive read, exclusive write
exhaustive search
existential state
expandable hashing
expander graph
exponential
extended binary tree
extended Euclid's algorithm
extended k-d tree
extendible hashing
external index
external memory algorithm
external memory data structure
external merge
external merge sort
external node
external quicksort

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

external radix sort
external sort
extrapolation search
extremal
extreme point
facility location
factor
factorial
fast fourier transform
fathoming
feasible region
feasible solution
feedback edge
Ferguson-Forcade algorithm
FFT
Fibonacci number
Fibonacci search
Fibonacci tree
Fibonnaci heap
FIFO
Find
find kth least element
finitary tree
finite Fourier transform
finite state automaton
finite state machine
finite state machine minimization
finite state transducer
first-come, first-served
first-in, first-out
fixed-grid method
flash sort
flow
flow conservation
flow function
flow network
Floyd-Warshall algorithm
Ford-Bellman
Ford-Fulkerson method

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

forest
forest editing problem
formal language
formal methods
formal verification
forward index
fractal
fractional knapsack problem
fractional solution
free edge
free list
free tree
free vertex
frequency count heuristic
full array
full binary tree
full inverted index
fully dynamic graph problem
fully persistent data structure
fully polynomial approximation scheme
function
functional data structure
Galil-Giancarlo
Galil-Seiferas
gamma function
GBD-tree
GCD
geometric optimization problem
global optimum
graph
graph coloring
graph concentration
graph drawing
graph isomorphism
graph partition
Gray code
greatest common divisor
greedy algorithm
greedy heuristic

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

grid drawing
grid file
Grover's algorithm
halting problem
Hamiltonian cycle
Hamming distance
hash function
hash heap
hash table
hash table delete
Hausdorff distance
hB-tree
head
heap
heapify
heap property
heapsort
heaviest common subsequence
height
height-balanced binary search tree
height-balanced tree
Herter-Heighway Dragon
heuristic
hidden Markov model
Hilbert curve
histogram sort
HMM
homeomorphic
horizontal visibility map
Horner's rule
Horspool
Huffman encoding
hybrid algorithm
hyperedge
hypergraph
ID
ideal merge
implication
implies

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

in-branching
inclusion-exclusion principle
inclusive or
incompressible string
in-degree
independent set
index file
information theoretic bound
in-order traversal
in-place sort
insertion sort
instantaneous description
integer linear program
integer multi-commodity flow
integer polyhedron
interactive proof system
interior-based representation
internal node
internal sort
interpolation search
interpolation-sequential search
interpolation sort
intersection
interval tree
intractable
introsort
introspective sort
inverse Ackermann function
inverted file index
inverted index
irreflexive
isomorphic
iteration
Jaro-Winkler
Johnson's algorithm
Johnson-Trotter
j sort
jump search
Karmarkar's algorithm

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

Karnaugh map
Karp-Rabin
Karp reduction
k-ary heap
k-ary Huffman encoding
k-ary tree
k-clustering
k-coloring
k-connected graph
k-d-B-tree
k-dimensional
K-dominant match
k-d tree
key
KMP
KmpSkip Search
knapsack problem
knight's tour
Knuth-Morris-Pratt algorithm
Königsberg bridges problem
Kolmogorov complexity
Kraft's inequality
Kripke structure
Kruskal's algorithm
kth order Fibonacci numbers
kth shortest path
kth smallest element
KV diagram
k-way merge
k-way merge sort
k-way tree
labeled graph
language
last-in, first-out
Las Vegas algorithm
lattice
layered graph
LCM
LCS

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

leaf
least common multiple
leftist tree
left rotation
Lempel-Ziv-Welch
level-order traversal
Levenshtein distance
lexicographical order
LIFO
linear
linear congruential generator
linear hash
linear insertion sort
linear order
linear probing
linear probing sort
linear product
linear program
linear quadtree
linear search
link
linked list
list
list contraction
little-o notation
Lm distance
load factor
local alignment
local optimum
locator
logarithmic
longest common subsequence
longest common substring
Lotka's law
lower bound
lower triangular matrix
lowest common ancestor
l-reduction
lucky sort

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

LZW compression
Malhotra-Kumar-Maheshwari blocking flow
Manhattan distance
many-one reduction
Markov chain
Marlena
Master theorem
matched edge
matched vertex
matching
matrix
matrix-chain multiplication problem
max
max-heap property
maximal independent set
maximally connected component
Maximal Shift
maximum bipartite matching
maximum-flow problem
MAX-SNP
MBB
Mealy machine
mean
median
meld
memoization
merge
merge sort
meromorphic function
metaheuristic
metaphone
midrange
Miller-Rabin
min
min-heap property
minimal antichain decomposition
minimal perfect hashing
minimum bounding box
minimum cut

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

minimum path cover
minimum spanning tree
minimum vertex cut
mixed integer linear program
mode
model checking
model of computation
moderately exponential
MODIFIND
monotone priority queue
monotonically decreasing
monotonically increasing
Monte Carlo algorithm
Moore machine
Morris-Pratt
move
move-to-front heuristic
move-to-root heuristic
MST
multi-commodity flow
multigraph
multilayer grid file
multiplication method
multiprefix
multiprocessor model
multi-set
multi suffix tree
multiway decision
multiway merge
multiway search tree
multiway tree
naive string search
nand
n-ary function
NC
NC many-one reducibility
nearest neighbor
negation
network flow

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

network flow problem
next state
NFA
NFTA
NIST
node
nonbalanced merge
nonbalanced merge sort
nondeterministic
nondeterministic algorithm
nondeterministic finite automaton
nondeterministic finite state machine
nondeterministic finite tree automaton
nondeterministic polynomial time
nondeterministic tree automaton
nondeterministic Turing machine
nonterminal node
nor
not
Not So Naive
NP
NP-complete
NP-complete language
NP-hard
n queens
nullary function
null tree
NYSIIS
O
OBDD
objective function
occurrence
octree
off-line algorithm
offset
omega
omicron
one-dimensional
on-line algorithm

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

open addressing
optimal
optimal cost
optimal hashing
optimal merge
optimal mismatch
optimal polygon triangulation problem
optimal polyphase merge
optimal polyphase merge sort
optimal solution
optimal triangulation problem
optimal value
optimization problem
or
oracle set
oracle tape
oracle Turing machine
order
ordered array
ordered binary decision diagram
ordered linked list
ordered tree
order preserving minimal perfect hashing
oriented acyclic graph
oriented graph
oriented tree
orthogonal drawing
orthogonal lists
orthogonally convex rectilinear polygon
oscillating merge sort
out-branching
out-degree
overlapping subproblems
P
packing
padding argument
pagoda
pairing heap
PAM

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

parallel computation thesis
parallel prefix computation
parallel random-access machine
parametric searching
parent
partial function
partially decidable problem
partially dynamic graph problem
partially ordered set
partially persistent data structure
partial order
partial recursive function
partition
passive data structure
path
path cover
path system problem
Patricia tree
pattern
pattern element
P-complete
PCP
PDA
Peano curve
Pearson's hash
perfect binary tree
perfect hashing
perfect k-ary tree
perfect matching
perfect shuffle
performance guarantee
performance ratio
permutation
persistent data structure
pile
pipelined divide and conquer
planar graph
planarization
planar straight-line graph

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

PLOP-hashing
point access method
pointer jumping
pointer machine
poissonization
polychotomy
polyhedron
polylogarithmic
polynomial
polynomial approximation scheme
polynomial hierarchy
polynomial time
polynomial-time Church-Turing thesis
polynomial-time reduction
polyphase merge
polyphase merge sort
polytope
poset
postfix traversal
Post machine
postman's sort
postorder traversal
Post's correspondence problem
potential function
PRAM
predicate
prefix
prefix code
prefix computation
prefix sums
prefix traversal
preorder traversal
primary clustering
primitive recursive
Prim's algorithm
principle of optimality
priority queue
prisoner's dilemma
PRNG

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

probabilistic algorithm
probabilistically checkable proof
probabilistic Turing machine
probe sequence
procedure
process algebra
proper
proper binary tree
proper coloring
proper subset
property list
prune and search
pseudo-random number generator
PTAS
pth order Fibonacci numbers
P-tree
purely functional language
pushdown automaton
pushdown transducer
p-way merge sort
qm sort
q sort
quadratic probing
quadtree
quadtree complexity theorem
quad trie
quantum computation
queue
quick search
quicksort
Rabin-Karp
radix quicksort
radix sort
ragged matrix
Raita
random access machine
randomization
randomized algorithm
randomized binary search tree

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

randomized complexity
randomized polynomial time
randomized rounding
randomized search tree
Randomized-Select
random number generator
random sampling
range
range sort
rank
Ratcliff/Obershelp pattern recognition
RBST
reachable
rebalance
recognizer
rectangular matrix
rectilinear
rectilinear Steiner tree
recurrence equations
recurrence relation
recursion
recursion termination
recursion tree
recursive
recursive data structure
recursive doubling
recursive language
recursively enumerable language
recursively solvable
red-black tree
reduced basis
reduced digraph
reduced ordered binary decision diagram
reduction
reflexive
regular decomposition
rehashing
relation
relational structure

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

relative performance guarantee
relaxation
relaxed balance
rescalable
restricted universe sort
result cache
Reverse Colussi
Reverse Factor
R-file
Rice's method
right rotation
right-threaded tree
RNG
ROBDD
root
root balance
rooted tree
rotate left
rotate right
rotation
rough graph
RP
R+-tree
R*-tree
R-tree
run time
saguaro stack
SAM
saturated edge
SBB tree
scan
scapegoat tree
search
search tree
search tree property
secant search
secondary clustering
segment
Select

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

select and partition
selection problem
selection sort
select kth element
select mode
self-loop
self-organizing heuristic
self-organizing list
self-organizing sequential search
semidefinite programming
separate chaining hashing
separation theorem
sequential search
set
set cover
set packing
shadow heap
shadow merge
shadow merge insert
shaker sort
Shannon-Fano coding
shared memory
Shell sort
Shift-Or
Shor's algorithm
shortcutting
shortest common supersequence
shortest path
shortest spanning tree
shuffle
sibling
Sierpinski curve
Sierpinski triangle
sieve of Eratosthenes
sift up
signature
Simon's algorithm
simple merge
simple path

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

simple uniform hashing
simplex
simulated annealing
simulation theorem
single-destination shortest-path problem
single-pair shortest-path problem
single program multiple data
single-source shortest-path problem
singly linked list
singularity analysis
sink
sinking sort
skd-tree
skew symmetry
skip list
Skip Search
slope selection
Smith algorithm
Smith-Waterman algorithm
smoothsort
solvable
sort
sorted array
sorted list
sort in place
sort merge
soundex
source
space-constructible function
spaghetti stack
spanning tree
sparse graph
sparse matrix
sparsification
sparsity
spatial access method
spectral test
splay tree
SPMD

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

square matrix
square root
SST
stable
stack
stack tree
star-shaped polygon
start state
state
state machine
state transition
static
static Huffman encoding
s-t cut
st-digraph
Steiner minimum tree
Steiner point
Steiner ratio
Steiner tree
Steiner vertex
Steinhaus-Johnson-Trotter
Stirling's approximation
Stirling's formula
stooge sort
straight-line drawing
strictly decreasing
strictly increasing
strictly lower triangular matrix
strictly upper triangular matrix
string
string editing problem
string matching
string matching on ordered alphabets
string matching with errors
string matching with mismatches
string searching
string similarity search
strip packing
strongly connected component

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

strongly connected graph
strongly NP-hard
subadditive ergodic theorem
subgraph
subgraph isomorphism
subsequence
subset
substring
subtree
suffix
suffix array
suffix automaton
suffix tree
superimposed code
superset
supersink
supersource
symmetric
symmetrically linked list
symmetric binary B-tree
symmetric set difference
symmetry breaking
tail
tail recursion
target
temporal logic
terminal
terminal node
ternary search tree
text
text searching
theta
threaded binary tree
threaded tree
three-dimensional
three-way merge sort
three-way radix quicksort
time-constructible function
time/space complexity

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

top-down radix sort
top-down tree automaton
topological order
topological sort
topology tree
total function
totally decidable language
totally decidable problem
totally undecidable problem
total order
tour
tournament
towers of Hanoi
tractable
transducer
transition
transition function
transitive
transitive closure
transitive reduction
transpose sequential search
traveling salesman
treap
tree
tree automaton
tree contraction
tree editing problem
tree sort
tree traversal
triangle inequality
triconnected graph
trie
trinary function
tripartition
TSP
TST
Turbo-BM
Turbo Reverse Factor
Turing machine

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

Turing reduction
Turing transducer
twin grid file
two-dimensional
two-level grid file
2-3-4 tree
2-3 tree
Two Way algorithm
two-way linked list
two-way merge sort
UKP
unary function
unbounded knapsack problem
uncomputable function
uncomputable problem
undecidable
undecidable language
undecidable problem
undirected graph
uniform circuit complexity
uniform circuit family
uniform hashing
uniform matrix
union
union of automata
universal hashing
universal state
universal Turing machine
universe
UnShuffle sort
unsolvable problem
unsorted list
upper triangular matrix
Van Emde-Boas priority queue
vehicle routing problem
Veitch diagram
Venn diagram
vertex
vertex coloring

National Institute of Standards and Technology


2nd level index

DADS 2nd level index page

Up to Two-level Index

vertex connectivity
vertex cover
vertex set
vertical visibility map
vertices
virtual hashing
visibility map
visible
Viterbi algorithm
VRP
walk
weak-heap
weak-heap sort
weight-balanced tree
weighted, directed graph
weighted graph
window
witness
work
work-depth model
work-efficient
work-preserving
worst case
worst-case cost
worst-case minimum access
xor
Yule distribution
Zeller's congruence
0-ary function
0-1 knapsack problem
Zhu-Takaoka
Zipfian distribution
Zipf's law
ZPP

National Institute of Standards and Technology


Dictionary of Algorithms and Data Structures

This is a dictionary of algorithms, algorithmic techniques, data structures, archetypical problems, and related definitions. Algorithms include common functions, such as Ackermann's function. Problems include traveling salesman and Byzantine generals. Some entries have links to implementations and more information. Index pages list entries by area, for instance, sorting, searching, or graphs, and by type, for example, algorithms or data structures. The two-level index has a total download 1/20 as big as this page.

Don't use this site to cheat. Teachers, contact me if I can help.

To define or correct terms, please contact Paul E. Black. We need help in automata theory, combinatorics, parallel or randomized algorithms, heuristics, and quantum computing. We do not include algorithms particular to business data processing, communications, operating systems or distributed algorithms, programming languages, AI, graphics, or numerical analysis: it is tough enough covering "general" algorithms and data structures. However, if you want to tackle one of these areas, we'll consider including them.

Some terms with a leading variable, such as n-way, m-dimensional, or p-branching, are under k-. You may find terms dealing with hardware, the computer industry, slang, etc., in the Free On-Line Dictionary Of Computing or in A Glossary of Computer Oriented Abbreviations and Acronyms.

To look up words or phrases, enter them in the box, then click the button. To look up algorithms by example, use AlgoVista.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

rho -approximation algorithm

A

absolute performance guarantee
abstract data type
(a,b)-tree
accepting state
Ackermann's function
active data structure
acyclic directed graph
acyclic graph
adaptive heap sort
adaptive Huffman encoding
adaptive k-d tree
adaptive sort
address-calculation sort
adjacency-list representation
adjacency-matrix representation
adjacent
admissible vertex
ADT
adversary
algorithm
algorithm B
algorithm BSTW
algorithm FGK
algorithmically solvable
algorithm V
all pairs shortest path
alphabet
Alpha Skip Search algorithm
alternating path
alternating Turing machine
alternation
American flag sort
amortized cost
ancestor
and
ANSI
antichain
antisymmetric
AP
Apostolico-Crochemore
Apostolico-Giancarlo algorithm
approximate string matching
approximation algorithm
arborescence
arc
arithmetic coding
array
array index
array merging
array search
articulation vertex
assignment problem
association list
associative
associative array
asymptotically tight bound
asymptotic bound
asymptotic equipartition property
asymptotic lower bound
asymptotic space complexity
asymptotic time complexity
asymptotic upper bound
augmenting path
automaton
average case
average-case cost
AVL tree

B

backtracking
bag
balance
balanced binary search tree
balanced binary tree
balanced k-way merge sort
balanced merge sort
balanced multiway merge
balanced multiway tree
balanced quicksort
balanced tree
balanced two-way merge sort
BANG file
Batcher sort
Baum Welch algorithm
BB alpha tree
BDD
BD-tree
Bellman-Ford algorithm
Benford's law
best case
best-case cost
best-first search
biconnected component
biconnected graph
bidirectional bubble sort
big-O notation
binary function
binary GCD algorithm
binary heap
binary insertion sort
binary knapsack problem
binary priority queue
binary relation
binary search
binary search tree
binary tree
binary tree representation of trees
bingo sort
binomial heap
binomial tree
bin packing problem
bin sort
bintree
bipartite graph
bipartite matching
bisector
bitonic sort
bit vector
Bk tree
block
block addressing index
blocking flow
block search
Bloom filter
blossom
bogosort
boolean
boolean expression
boolean function
border
bottleneck traveling salesman
bottom-up tree automaton
boundary-based representation
bounded error probability in polynomial time
bounded queue
bounded stack
Boyer-Moore
Boyer-Moore-Horspool
bozo sort
B+-tree
BPP
Bradford's law
branch and bound
branching
breadth-first search
Bresenham's algorithm
brick sort
bridge
British Museum algorithm
brute force
brute force string search
brute force string search with mismatches
B-spline
BSP-tree
B*-tree
B-tree
bubble sort
bucket
bucket array
bucketing method
bucket sort
bucket trie
buddy system
buddy tree
build-heap
busy beaver
BV-tree
Byzantine generals

C

cactus stack
Calculus of Communicating Systems
calendar queue
candidate consistency testing
candidate verification
canonical complexity class
capacitated facility location
capacity
capacity constraint
cartesian tree
cascade merge sort
Cayley-Purser
CCS
C curve
cell probe model
cell tree
cellular automaton
centroid
certificate
chain
chaining
child
Chinese postman problem
Chinese remainder theorem
Christofides algorithm
Christofides heuristic
chromatic index
chromatic number
Church-Turing thesis
circuit
circuit complexity
circuit value problem
circular list
circular queue
clique
clique problem
clustering
clustering free
coalesced hashing
coarsening
cocktail shaker sort
codeword
coding tree
collective recursion
collision
collision resolution scheme
Colussi
combination
comb sort
Communicating Sequential Processes
commutative
compact DAWG
comparison sort
competitive analysis
competitive ratio
complement
complete binary tree
complete graph
completely connected graph
complete tree
complexity
complexity class
computable
concave function
concurrent flow
concurrent read, concurrent write
concurrent read, exclusive write
configuration
confluently persistent data structure
conjunction
connected components
connected graph
coNP
constant function
container
continuous knapsack problem
Cook reduction
Cook's theorem
counting sort
covering
CRC
CRCW
CREW
critical path problem
CSP
CTL
cuckoo hashing
cut
cutting plane
cutting stock problem
cutting theorem
cut vertex
cycle
cyclic redundancy check

D

D-adjacent
DAG
DAG shortest paths
database
data structure
DAWG
decidable
decidable language
decimation
decision problem
decision tree
decomposable searching problem
degree
dense graph
depoissonization
depth
depth-first search
deque
derangement
descendant
deterministic
deterministic algorithm
deterministic finite automata string search
deterministic finite automaton
deterministic finite state machine
deterministic finite tree automaton
deterministic pushdown automaton
deterministic tree automaton
Deutsch-Jozsa algorithm
DFA
DFS
DFS forest
DFTA
diagonalization
diameter
dichotomic search
dictionary
diet
difference
digital search tree
digital tree
digraph
Dijkstra's algorithm
diminishing increment sort
dining philosophers
direct chaining hashing
directed acyclic graph
directed acyclic word graph
directed graph
directory
discrete interval encoding tree
discrete p-center
disjoint set
disjunction
distributional complexity
distribution sort
divide and conquer
divide and marriage before conquest
division method
domain
don't care
Doomsday rule
double-direction bubble sort
double-ended priority queue
double hashing
double left rotation
double metaphone
double right rotation
doubly-ended queue
doubly linked list
DPDA
Dragon curve
dual
dual linear program
Dutch national flag
dynamic
dynamic array
dynamic hashing
dynamic programming
dynamization transformation

E

edge
edge coloring
edge connectivity
edge crossing
edit distance
edit operation
edit script
efficiency
8 queens
element uniqueness
end-of-string
enfilade
ERCW
EREW
Euclidean algorithm
Euclidean distance
Euclidean Steiner tree
Euclidean traveling salesman problem
Euclid's algorithm
Euler cycle
Eulerian graph
Eulerian path
exact string matching
EXCELL
exchange sort
exclusive or
exclusive read, concurrent write
exclusive read, exclusive write
exhaustive search
existential state
expandable hashing
expander graph
exponential
extended binary tree
extended Euclid's algorithm
extended k-d tree
extendible hashing
external index
external memory algorithm
external memory data structure
external merge
external merge sort
external node
external quicksort
external radix sort
external sort
extrapolation search
extremal
extreme point

F

facility location
factor
factorial
fast fourier transform
fathoming
feasible region
feasible solution
feedback edge
Ferguson-Forcade algorithm
FFT
Fibonacci number
Fibonacci search
Fibonacci tree
Fibonnaci heap
FIFO
Find
find kth least element
finitary tree
finite Fourier transform
finite state automaton
finite state machine
finite state machine minimization
finite state transducer
first-come, first-served
first-in, first-out
fixed-grid method
flash sort
flow
flow conservation
flow function
flow network
Floyd-Warshall algorithm
Ford-Bellman
Ford-Fulkerson method
forest
forest editing problem
formal language
formal methods
formal verification
forward index
fractal
fractional knapsack problem
fractional solution
free edge
free list
free tree
free vertex
frequency count heuristic
full array
full binary tree
full inverted index
fully dynamic graph problem
fully persistent data structure
fully polynomial approximation scheme
function
functional data structure

G

Galil-Giancarlo
Galil-Seiferas
gamma function
GBD-tree
GCD
geometric optimization problem
global optimum
graph
graph coloring
graph concentration
graph drawing
graph isomorphism
graph partition
Gray code
greatest common divisor
greedy algorithm
greedy heuristic
grid drawing
grid file
Grover's algorithm

H

halting problem
Hamiltonian cycle
Hamming distance
hash function
hash heap
hash table
hash table delete
Hausdorff distance
hB-tree
head
heap
heapify
heap property
heapsort
heaviest common subsequence
height
height-balanced binary search tree
height-balanced tree
Herter-Heighway Dragon
heuristic
hidden Markov model
Hilbert curve
histogram sort
HMM
homeomorphic
horizontal visibility map
Horner's rule
Horspool
Huffman encoding
hybrid algorithm
hyperedge
hypergraph

I

ID
ideal merge
implication
implies
in-branching
inclusion-exclusion principle
inclusive or
incompressible string
in-degree
independent set
index file
information theoretic bound
in-order traversal
in-place sort
insertion sort
instantaneous description
integer linear program
integer multi-commodity flow
integer polyhedron
interactive proof system
interior-based representation
internal node
internal sort
interpolation search
interpolation-sequential search
interpolation sort
intersection
interval tree
intractable
introsort
introspective sort
inverse Ackermann function
inverted file index
inverted index
irreflexive
isomorphic
iteration

J

Jaro-Winkler
Johnson's algorithm
Johnson-Trotter
j sort
jump search

K

Karmarkar's algorithm
Karnaugh map
Karp-Rabin
Karp reduction
k-ary heap
k-ary Huffman encoding
k-ary tree
k-clustering
k-coloring
k-connected graph
k-d-B-tree
k-dimensional
K-dominant match
k-d tree
key
KMP
KmpSkip Search
knapsack problem
knight's tour
Knuth-Morris-Pratt algorithm
Königsberg bridges problem
Kolmogorov complexity
Kraft's inequality
Kripke structure
Kruskal's algorithm
kth order Fibonacci numbers
kth shortest path
kth smallest element
KV diagram
k-way merge
k-way merge sort
k-way tree

L

labeled graph
language
last-in, first-out
Las Vegas algorithm
lattice
layered graph
LCM
LCS
leaf
least common multiple
leftist tree
left rotation
Lempel-Ziv-Welch
level-order traversal
Levenshtein distance
lexicographical order
LIFO
linear
linear congruential generator
linear hash
linear insertion sort
linear order
linear probing
linear probing sort
linear product
linear program
linear quadtree
linear search
link
linked list
list
list contraction
little-o notation
Lm distance
load factor
local alignment
local optimum
locator
logarithmic
longest common subsequence
longest common substring
Lotka's law
lower bound
lower triangular matrix
lowest common ancestor
l-reduction
lucky sort
LZW compression

M

Malhotra-Kumar-Maheshwari blocking flow
Manhattan distance
many-one reduction
Markov chain
Marlena
Master theorem
matched edge
matched vertex
matching
matrix
matrix-chain multiplication problem
max
max-heap property
maximal independent set
maximally connected component
Maximal Shift
maximum bipartite matching
maximum-flow problem
MAX-SNP
MBB
Mealy machine
mean
median
meld
memoization
merge
merge sort
meromorphic function
metaheuristic
metaphone
midrange
Miller-Rabin
min
min-heap property
minimal antichain decomposition
minimal perfect hashing
minimum bounding box
minimum cut
minimum path cover
minimum spanning tree
minimum vertex cut
mixed integer linear program
mode
model checking
model of computation
moderately exponential
MODIFIND
monotone priority queue
monotonically decreasing
monotonically increasing
Monte Carlo algorithm
Moore machine
Morris-Pratt
move
move-to-front heuristic
move-to-root heuristic
MST
multi-commodity flow
multigraph
multilayer grid file
multiplication method
multiprefix
multiprocessor model
multi-set
multi suffix tree
multiway decision
multiway merge
multiway search tree
multiway tree

N

naive string search
nand
n-ary function
NC
NC many-one reducibility
nearest neighbor
negation
network flow
network flow problem
next state
NFA
NFTA
NIST
node
nonbalanced merge
nonbalanced merge sort
nondeterministic
nondeterministic algorithm
nondeterministic finite automaton
nondeterministic finite state machine
nondeterministic finite tree automaton
nondeterministic polynomial time
nondeterministic tree automaton
nondeterministic Turing machine
nonterminal node
nor
not
Not So Naive
NP
NP-complete
NP-complete language
NP-hard
n queens
nullary function
null tree
NYSIIS

O

O
OBDD
objective function
occurrence
octree
off-line algorithm
offset
omega
omicron
one-dimensional
on-line algorithm
open addressing
optimal
optimal cost
optimal hashing
optimal merge
optimal mismatch
optimal polygon triangulation problem
optimal polyphase merge
optimal polyphase merge sort
optimal solution
optimal triangulation problem
optimal value
optimization problem
or
oracle set
oracle tape
oracle Turing machine
order
ordered array
ordered binary decision diagram
ordered linked list
ordered tree
order preserving minimal perfect hashing
oriented acyclic graph
oriented graph
oriented tree
orthogonal drawing
orthogonal lists
orthogonally convex rectilinear polygon
oscillating merge sort
out-branching
out-degree
overlapping subproblems

P

P
packing
padding argument
pagoda
pairing heap
PAM
parallel computation thesis
parallel prefix computation
parallel random-access machine
parametric searching
parent
partial function
partially decidable problem
partially dynamic graph problem
partially ordered set
partially persistent data structure
partial order
partial recursive function
partition
passive data structure
path
path cover
path system problem
Patricia tree
pattern
pattern element
P-complete
PCP
PDA
Peano curve
Pearson's hash
perfect binary tree
perfect hashing
perfect k-ary tree
perfect matching
perfect shuffle
performance guarantee
performance ratio
permutation
persistent data structure
pile
pipelined divide and conquer
planar graph
planarization
planar straight-line graph
PLOP-hashing
point access method
pointer jumping
pointer machine
poissonization
polychotomy
polyhedron
polylogarithmic
polynomial
polynomial approximation scheme
polynomial hierarchy
polynomial time
polynomial-time Church-Turing thesis
polynomial-time reduction
polyphase merge
polyphase merge sort
polytope
poset
postfix traversal
Post machine
postman's sort
postorder traversal
Post's correspondence problem
potential function
PRAM
predicate
prefix
prefix code
prefix computation
prefix sums
prefix traversal
preorder traversal
primary clustering
primitive recursive
Prim's algorithm
principle of optimality
priority queue
prisoner's dilemma
PRNG
probabilistic algorithm
probabilistically checkable proof
probabilistic Turing machine
probe sequence
procedure
process algebra
proper
proper binary tree
proper coloring
proper subset
property list
prune and search
pseudo-random number generator
PTAS
pth order Fibonacci numbers
P-tree
purely functional language
pushdown automaton
pushdown transducer
p-way merge sort

Q

qm sort
q sort
quadratic probing
quadtree
quadtree complexity theorem
quad trie
quantum computation
queue
quick search
quicksort

R

Rabin-Karp
radix quicksort
radix sort
ragged matrix
Raita
random access machine
randomization
randomized algorithm
randomized binary search tree
randomized complexity
randomized polynomial time
randomized rounding
randomized search tree
Randomized-Select
random number generator
random sampling
range
range sort
rank
Ratcliff/Obershelp pattern recognition
RBST
reachable
rebalance
recognizer
rectangular matrix
rectilinear
rectilinear Steiner tree
recurrence equations
recurrence relation
recursion
recursion termination
recursion tree
recursive
recursive data structure
recursive doubling
recursive language
recursively enumerable language
recursively solvable
red-black tree
reduced basis
reduced digraph
reduced ordered binary decision diagram
reduction
reflexive
regular decomposition
rehashing
relation
relational structure
relative performance guarantee
relaxation
relaxed balance
rescalable
restricted universe sort
result cache
Reverse Colussi
Reverse Factor
R-file
Rice's method
right rotation
right-threaded tree
RNG
ROBDD
root
root balance
rooted tree
rotate left
rotate right
rotation
rough graph
RP
R+-tree
R*-tree
R-tree
run time

S

saguaro stack
SAM
saturated edge
SBB tree
scan
scapegoat tree
search
search tree
search tree property
secant search
secondary clustering
segment
Select
select and partition
selection problem
selection sort
select kth element
select mode
self-loop
self-organizing heuristic
self-organizing list
self-organizing sequential search
semidefinite programming
separate chaining hashing
separation theorem
sequential search
set
set cover
set packing
shadow heap
shadow merge
shadow merge insert
shaker sort
Shannon-Fano coding
shared memory
Shell sort
Shift-Or
Shor's algorithm
shortcutting
shortest common supersequence
shortest path
shortest spanning tree
shuffle
sibling
Sierpinski curve
Sierpinski triangle
sieve of Eratosthenes
sift up
signature
Simon's algorithm
simple merge
simple path
simple uniform hashing
simplex
simulated annealing
simulation theorem
single-destination shortest-path problem
single-pair shortest-path problem
single program multiple data
single-source shortest-path problem
singly linked list
singularity analysis
sink
sinking sort
skd-tree
skew symmetry
skip list
Skip Search
slope selection
Smith algorithm
Smith-Waterman algorithm
smoothsort
solvable
sort
sorted array
sorted list
sort in place
sort merge
soundex
source
space-constructible function
spaghetti stack
spanning tree
sparse graph
sparse matrix
sparsification
sparsity
spatial access method
spectral test
splay tree
SPMD
square matrix
square root
SST
stable
stack
stack tree
star-shaped polygon
start state
state
state machine
state transition
static
static Huffman encoding
s-t cut
st-digraph
Steiner minimum tree
Steiner point
Steiner ratio
Steiner tree
Steiner vertex
Steinhaus-Johnson-Trotter
Stirling's approximation
Stirling's formula
stooge sort
straight-line drawing
strictly decreasing
strictly increasing
strictly lower triangular matrix
strictly upper triangular matrix
string
string editing problem
string matching
string matching on ordered alphabets
string matching with errors
string matching with mismatches
string searching
string similarity search
strip packing
strongly connected component
strongly connected graph
strongly NP-hard
subadditive ergodic theorem
subgraph
subgraph isomorphism
subsequence
subset
substring
subtree
suffix
suffix array
suffix automaton
suffix tree
superimposed code
superset
supersink
supersource
symmetric
symmetrically linked list
symmetric binary B-tree
symmetric set difference
symmetry breaking

T

tail
tail recursion
target
temporal logic
terminal
terminal node
ternary search tree
text
text searching
theta
threaded binary tree
threaded tree
three-dimensional
three-way merge sort
three-way radix quicksort
time-constructible function
time/space complexity
top-down radix sort
top-down tree automaton
topological order
topological sort
topology tree
total function
totally decidable language
totally decidable problem
totally undecidable problem
total order
tour
tournament
towers of Hanoi
tractable
transducer
transition
transition function
transitive
transitive closure
transitive reduction
transpose sequential search
traveling salesman
treap
tree
tree automaton
tree contraction
tree editing problem
tree sort
tree traversal
triangle inequality
triconnected graph
trie
trinary function
tripartition
TSP
TST
Turbo-BM
Turbo Reverse Factor
Turing machine
Turing reduction
Turing transducer
twin grid file
two-dimensional
two-level grid file
2-3-4 tree
2-3 tree
Two Way algorithm
two-way linked list
two-way merge sort

U

UKP
unary function
unbounded knapsack problem
uncomputable function
uncomputable problem
undecidable
undecidable language
undecidable problem
undirected graph
uniform circuit complexity
uniform circuit family
uniform hashing
uniform matrix
union
union of automata
universal hashing
universal state
universal Turing machine
universe
UnShuffle sort
unsolvable problem
unsorted list
upper triangular matrix

V

Van Emde-Boas priority queue
vehicle routing problem
Veitch diagram
Venn diagram
vertex
vertex coloring
vertex connectivity
vertex cover
vertex set
vertical visibility map
vertices
virtual hashing
visibility map
visible
Viterbi algorithm
VRP

W

walk
weak-heap
weak-heap sort
weight-balanced tree
weighted, directed graph
weighted graph
window
witness
work
work-depth model
work-efficient
work-preserving
worst case
worst-case cost
worst-case minimum access

X

xor

Y

Yule distribution

Z

Zeller's congruence
0-ary function
0-1 knapsack problem
Zhu-Takaoka
Zipfian distribution
Zipf's law
ZPP

We thank those who contributed definitions as well as many others who offered suggestions and corrections.

Here are some references on algorithms and data structures.

[CLR90] Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, MIT Press, 1990.

[HS83] Fundamentals of Data Structures, Ellis Horowitz and Sartaj Sahni, Computer Science Press, 1983.

Algorithms in C, Robert Sedgewick, Addison-Wesley, 1997.

Handbook of Algorithms and Data Structures -- in Pascal and C, G. Gonnet and R. Baeza-Yates, Addison-Wesley, 1991.

The Stony Brook Algorithm Repository, which has algorithms organized by type, succinct, illustrated definitions, and ratings of sites with implementations.

Data Structures and Algorithms is a wonderful site with illustrations, explanations, analysis, and code taking the student from arrays and lists through trees, graphs, and intractable problems.

Bibliography

[AS98] Pankaj K. Agarwal and Micha Sharir, Efficient Algorithms for Geometric Optimization, ACM Computing Surveys, 30(4):412-458, December 1998.

[ATCH99] Algorithms and Theory of Computation Handbook, Mikhail J. Atallah, ed., CRC Press LLC, 1999.

[GCG92] P. Gupta, P. P. Chakrabarti, and S. Ghose, The Towers of Hanoi: Generalizations, Specializations, and Algorithms, Intern. J. Computer Math., 46:149-161, Gordon and Breach Science Publishers S.A., 1992.

[GG98] Volker Gaede and Oliver Günther, Multidimensional Access Methods, ACM Computing Surveys, 30(2):170-231, June 1998.

[Hirv01] Mika Hirvensalo, Quantum Computing, Springer-Verlag, 2001.

[Knuth98] Donald E. Knuth, The Art of Computer Programming, Addison-Wesley, volumes 1, 2, and 3, 3rd edition, 1998.

[Leda98] LEDA (accessed 4 December 2002).

[Stand98] Thomas Standish, Data Structures in Java, Addison-Wesley, 1998.

[Sund98] Daniel M. Sunday, A Very Fast Substring Search Algorithm, Communications of the ACM, 33(8):132-142, August 1998.

[Vitt01] Jeffrey Scott Vitter, External Memory Algorithms and Data Structures: Dealing with Massive Data, ACM Computing Surveys, 33(2):209-271, June 2001.

[Wier98] Roel Wieringa, A Survey of Structured and Object-Oriented Software Specification Methods and Techniques, ACM Computing Surveys, 30(4):459-527, December 1998.

The FOLDOC style guide.

This dictionary is an example for Problem Set 4 of Software Engineering of Innovative Web Services.

Robots, please index all term pages, including spelling variants.

Viewable With Any Browser

With JavaScript, below is a link to machine translation. We provide the link because it may be of interest in some cases. NIST does not necessarily endorse the results and has not checked the translation for accuracy. Further, NIST does not endorse commercial products advertised or available on this site.

Created Fri Sep 4 16:39:23 1998
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Fri Apr 25 15:08:23 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/

Hosted in part by the Software Quality group of the Software Diagnostics and Conformance Testing Division in the Information Technology Laboratory.
NIST is an agency of the U.S. Commerce Department's Technology Administration


Contributors to the Dictionary of Algorithms and Data Structures

Contributors

to the

Dictionary of Algorithms and Data Structures

This is a list of most of those defining the over 1300 terms in the Dictionary of Algorithms and Data Structures. In addition, we received corrections and suggestions from many others not listed here. The quality and breadth of the Dictionary wouldn't be possible without them. We are grateful.

AB
Andrew Boniface bonifaceaw@yahoo.com
AL
Alen Lovrencic alovrenc@foi.hr
ASK
Art S. Kagel kagel@bloomberg.net
BB
Bob Bockholt bbockholt@yahoo.com
BJ
Bob Jenkins bob_jenkins@burtleburtle.net http://burtleburtle.net/bob/
CLK
Chris L. Kuszmaul fyodor@nas.nasa.gov
CM
Conrado Martinez Conrado.Martinez@lsi.upc.es http://www.lsi.upc.es/~conrado/
CRC-A
Algorithms and Theory of Computation Handbook, CRC Press LLC, 1999
DM
David Monniaux David.Monniaux@ens.fr.cuckoo-to-be-removed
GS
Gopinath Srinivasan s.gopinath@in.ibm.com
IR
Ingo Rohloff rohloff@in.tum.de
JLG
Joseph L. Ganley joe@ganley.org http://ganley.org/
JM
Jason McCabe Jason.McCabe@wcom.com
KSL
Kim Skak Larsen kslarsen@imada.ou.dk http://www.imada.ou.dk/~kslarsen/
LH
Leslie Hastings prof_math@yahoo.com http://www.geocities.com/leslie_hastings/
LJW
Lawrence J. Wobker ljwobker@pobox.com
ME
Mustafa Ege ege@eti.cc.hun.edu.tr
PEB
Paul E. Black paul.black@nist.gov http://xsun.sdct.itl.nist.gov/~black/
PJT
Paul J. Tanenbaum pjt@ARL.MIL http://ftp.arl.mil/~pjt/
PMS
Paul M. Sant sant@dcs.kcl.ac.uk
PR
Patrick Rodgers rodgerpk@jmu.edu
PS
Paul Steffas Paul_Steffas@amat.com
SB
Sterling Bates SterlingB@bdt.net
SE
Stefan Edelkamp edelkamp@informatik.uni-freiburg.de http://www.informatik.uni-freiburg.de/~edelkamp/
SKS
Sandeep Kumar Shukla
VZ
Vladimir Zabrodsky zabrodskyvlada@yahoo.com http://www.geocities.com/SiliconValley/Garage/3323/
YZ
Yuming Zou zou@fas.harvard.edu

Updated Tue Apr 1 09:28:41 2003

Created Wed Jan 9 12:09:39 2002
by Paul E. Black (paul.black@nist.gov)
This Trailer Updated Tue Apr 1 08:49:08 2003
by Paul E. Black (paul.black@nist.gov)

This page's URL is http://www.nist.gov/dads/Other/contrib.html