balanced binary tree: red-black tree analysis, explanation,examples, and code C, Ben Pfaff's AVL tree explanation Cbalanced merge sort: C using an auxiliary function to selectnext file C
Trang 2Structures
This is a dictionary of algorithms, algorithmic techniques, datastructures, archetypical problems, and related definitions
Algorithms include common functions, such as Ackermann'sfunction Problems include traveling salesman and Byzantinegenerals Some entries have links to implementations and moreinformation 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 totaldownload 1/20 as big as this page
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 theFree 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 clickthe button To look up algorithms by example, use AlgoVista
Trang 3Search the Dictionary
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
Trang 4absolute performance guaranteeabstract data type
Trang 6balanced multiway mergebalanced multiway tree
balanced quicksort
balanced tree
balanced two-way merge sortBANG file
binary relation
Trang 9cactus stack
Calculus of Communicating Systemscalendar queue
Trang 10confluently persistent data structureconjunction
connected components
Trang 16extendible hashing
external index
external memory algorithmexternal memory data structureexternal merge
Trang 18functional data structure
Trang 20height-balanced binary search treeheight-balanced tree
Trang 21interior-based representationinternal node
internal sort
interpolation search
interpolation-sequential searchinterpolation sort
inverted index
Trang 22irreflexiveisomorphiciteration
Trang 23Jaro-Winkler
Johnson's algorithmJohnson-Trotter
j sort
jump search
Trang 24Kripke structure
Kruskal's algorithm
kth order Fibonacci numberskth shortest path
Trang 27Malhotra-Kumar-Maheshwari blocking flowManhattan distance
Trang 28minimal antichain decompositionminimal perfect hashing
Trang 30null treeNYSIIS
Trang 32out-degree
overlapping subproblems
Trang 33partial function
partially decidable problem
partially dynamic graph problempartially ordered set
partially persistent data structurepartial order
Trang 34polynomial-time Church-Turing thesispolynomial-time reduction
Trang 36queue
quick search
quicksort
Trang 39R*-treeR-treerun time
Trang 41single-source shortest-path problemsingly linked list
Trang 42st-digraph
Steiner minimum tree
Trang 43string matching with mismatchesstring searching
Trang 45top-down tree automatontopological order
topological sort
topology tree
total function
totally decidable languagetotally decidable problemtotally undecidable problemtotal order
Trang 46transitive closure
transitive reduction
transpose sequential searchtraveling salesman
Trang 47UKP
unary function
unbounded knapsack problemuncomputable function
Trang 48Van Emde-Boas priority queuevehicle routing problem
Trang 50xor
Trang 51Yule distribution
Trang 52Data Structures and Algorithms is a wonderful site with
illustrations, explanations, analysis, and code taking the studentfrom arrays and lists through trees, graphs, and intractable
problems
Trang 54
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 notendorse commercial products advertised or available on thissite
Information Technology Laboratory
NIST is an agency of the U.S Commerce Department's
Technology Administration
Trang 56Structures
This introduction is brief on purpose Here is more explanationand a NEW search form
α - amortized cost
ancestor - balanced binary tree
balanced k-way merge sort - bintree
bipartite graph - brute force string search with mismatchesB-spline - Chinese postman problem
Trang 58of
Trang 61nondeterministic Turing machine [D]oracle set [D]
Trang 62bounded stack [S]
Bradford's law [D]
brute force [T]
Trang 64intersection [D]
inverse Ackermann function [A]irreflexive [D]
multi-set [D]
Trang 67Zeller's congruence [A]0-ary function [D]
Trang 68n queens [P]
packing [D]
partition [D]
Trang 690-1 knapsack problem [P]
Trang 71External Memory Algorithms and Data Structures
external memory algorithm [A]
external memory data structure [S]
Trang 72polyhedron [D]
prune and search [T]
quadtree complexity theorem [D]
Trang 73star-shaped polygon [D]vertical visibility map [D]visibility map [D]
visible [D]
Trang 74acyclic directed graph [D]
acyclic graph [D]
adjacency-list representation [S]adjacency-matrix representation [S]adjacent [D]
Trang 75complete graph [D]
completely connected graph [D]concurrent flow [D]
Trang 77single-source shortest-path problem [P]sink [D]
Trang 79weighted, directed graph [D]weighted graph [D]
Trang 80extended Euclid's algorithm [A]factorial [D]
fast fourier transform [A]
Ferguson-Forcade algorithm [A]FFT [A]
kth order Fibonacci numbers [D]LCM [D]
least common multiple [D]
linear congruential generator [A]mean [D]
sieve of Eratosthenes [A]
square root [A]
Stirling's approximation [D]
Stirling's formula [D]
Trang 81Batcher 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]
Trang 82work-preserving [D]
Trang 86index file [S]
interpolation search [A]
interpolation-sequential search [A]inverted file index [S]
Trang 88subsequence [D]
substring [D]
suffix [D]
suffix array [S]
Trang 89text searching [P]
transpose sequential search [A]TST [S]
Trang 90balanced two-way merge sort [A]bidirectional bubble sort [A]
double-direction bubble sort [A]Dutch national flag [A]
Trang 92two-way merge sort [A]UnShuffle sort [A]
unsorted list [D]
weak-heap sort [A]
Trang 95polynomial-time Church-Turing thesis [D]
polynomial-time reduction [D]
Post's correspondence problem [P]
Trang 96primitive recursive [D]
prisoner's dilemma [P]
probabilistically checkable proof [D]process algebra [D]
reduction [D]
relational structure [S]
relative performance guarantee [D]relaxation [D]
time-constructible function [D]
time/space complexity [D]
Trang 97totally decidable language [D]totally decidable problem [D]totally undecidable problem [D]tractable [D]
Trang 99digital tree [S]
directed acyclic word graph [S]
discrete interval encoding tree [S]double-ended priority queue [S]
Trang 102CTL [D]
formal methods [D]
formal verification [D]
Trang 105which have
Trang 106This is the web page of terms with definitions that have links toimplementations 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 datastructure, 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 canadd 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 NISTwebspace We provided these links because they may haveinformation of interest to you No inferences should be drawnbecause some sites are referenced, or not, from this page
There may be other web sites that are more appropriate foryour purpose NIST does not necessarily endorse the viewsexpressed, or concur with the facts presented on these sites.Further, NIST does not endorse any commercial products thatmay be mentioned on these sites Please address commentsabout 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 Agreat source of implementations of mathematical functions isthe 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
Trang 107adaptive Huffman encoding: (C)
Alpha Skip Search algorithm: Christian Charras' and ThierryLecroq'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 ThierryLecroq's Exact String Matching Algorithms (C)
approximate string matching: See implementations at stringmatching (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) needsinsert, 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 selectnext file (C), (Java)
balanced multiway tree: data structure definition (C and
Pascal), insert (C and Pascal) using auxiliary functions (C andPascal), search (C and Pascal), (Pick Basic?)
Batcher sort: explanation, analysis, bibliography, etc (Java),explanation and animation (C), reference source code (C)
BB tree: Worst-case behavior of traversal, annotated for realtime (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)
Trang 108binary priority queue: insert (C and Pascal) and delete (C andPascal)
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 ofleaves, 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 ExactString Matching Algorithms (C), (C) which uses Boyer-Moorepreprocessing (C)
Boyer-Moore-Horspool: Christian Charras' and Thierry Lecroq'sExact 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 patchesb+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 extendsSearchApplet (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
Trang 109B-tree: data structure definition (C and Pascal), insert (C andPascal) using auxiliary functions (C and Pascal), search (C andPascal), (Pick Basic?)
bubble sort: animation and code (Java); sinking sort
explanation and animation (Java); demonstration and sourcecode (Java) - but code might not render properly; explanation(C); (Java)
Colussi: Christian Charras' and Thierry Lecroq's Exact StringMatching Algorithms (C)
cutting stock problem: linear and nonlinear programming andalgebra 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 andanimation (C), (C) which uses a finite automaton structure (C)and builds a recognizer (C)
Trang 110demonstration 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 optimallylay 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 realtime (WOOP/ADA), (Scheme)
Euclidean Steiner tree: GeoSteiner (C) - software for
computing steiner trees
Euclid's algorithm: Worst-case behavior annotated for realtime (WOOP/ADA), (Scheme)
Trang 111Eulerian path: (Mathematica and Fortran)
exact string matching: Christian Charras' and Thierry Lecroq'sExact 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 sourcecode (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 realtime (WOOP/ADA), including bibliography, (Pascal)
factorial: (Scheme)
fast fourier transform: Worst-case behavior annotated for realtime (WOOP/ADA)
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 afinite state machine (Prolog)
finite state machine: Oleg Kiselyov's program to minimize afinite 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 ExactString Matching Algorithms (C)
Trang 112GCD: (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 andGray-to-binary conversion (C) with history, references, andapplication to genetic algorithms convert between binary andGray (C): a PDF document of section 20.2 of Numerical
hash table: chaining: (C), linear probing hashing: insert (C),look up (C), Kazlib (C), chaining: explanations, diagrams, andcode (Visual Basic)
heap: delete (C) and insert (C and Pascal) both of which usethe auxiliary function siftup (C and Pascal), explanation,
examples, and C code, (Fortran)
heapsort: (Java), (Java), Worst-case behavior annotated forreal time (WOOP/ADA), including bibliography
heaviest common subsequence: (C and Mathematica)