dag, see directed acyclic graph
DAG-SHORTEST-PATHS, 592
d-ary heap, 143 pr.
in shortest-paths algorithms, 641 pr.
data-movement instructions, 22
data structure, 8, 197–318, 431–522
AA-trees, 301
AVL trees, 296 pr.
bit vectors, 222 ex.
deques, 204 ex.
dictionaries, 197
direct-address tables, 222–223
for dynamic graphs, 433
dynamic trees, 432
exponential search trees, 182, 433
k-neighbor trees, 301
order-statistic trees, 302–308
potential of, 413
radix trees, 269 pr.
relaxed heaps, 497
scapegoat trees, 301
skip lists, 301
treaps, 296 pr.
2-3-4 heaps, 473 pr.
van Emde Boas, 433
weight-balanced trees, 301
deadline, 399
deallocation of objects, 210–212
decision by an algorithm, 976
and optimization problems, 969
zero-one principle for, 712 ex.
decreasing a key
in binomial heaps, 470
in 2-3-4 heaps, 473 pr.
DECREMENT, 409 ex.
degeneracy, 802
degree
of a binomial-tree root, 457
maximum, of a Fibonacci heap, 479, 488 ex., 493–496
minimum, of a B-tree, 439
of a node, 1088
of a vertex, 1081
degree-bound, 822
DELETE-LARGER-HALF, 416 ex.
deletion
from binary search trees, 262–263
from chained hash tables, 226
from direct-address tables, 222
from dynamic tables, 422
from Fibonacci heaps, 492, 496 pr.
from heaps, 142 ex.
from interval trees, 313
from linked lists, 206
from open-address hash tables, 238
from order-statistic trees, 307
from queues, 201
from stacks, 200
from sweep-line statuses, 942
from 2-3-4 heaps, 473 pr.
demand paging, 22
DeMorgan's laws, 1072
dense graph, 527
∈-dense, 641 pr.
density of prime numbers, 887–888
dependence
and indicator random variables, 96
linear, 731
see also independence
depth
average, of a node in a randomly built binary search tree, 270 pr.
of a comparison network, 707
of a node in a rooted tree, 1088
of quicksort recursion tree, 153 ex.
of SORTER, 720 ex.
of a sorting network, 708 ex.
of a stack, 162 pr.
depth-determination problem, 519 pr.
depth-first forest, 540
in finding articulation points, bridges, and biconnected components, 558 pr.
in finding strongly connected components, 552–557
in topological sorting, 549–552
depth-first tree, 540
deque, 204 ex.
DEQUEUE, 203
derivative of series, 1060
descendant, 1087
destination vertex, 581
det, see determinant
determinant, 732
and matrix multiplication, 759 ex.
deterministic, 99
DETERMINISTIC-SEARCH, 118 pr.
DFS, 541
DFS-VISIT, 541
DFT (Discrete Fourier Transform), 833
diagonal matrix, 726
LUP decomposition of, 754 ex.
diameter of a tree, 539 ex.
dictionary, 197
difference constraints, 601–607
difference equation, see recurrence
difference of sets (-), 1071
symmetric, 696 pr.
differentiation of series, 1060
digital signature, 883
digraph, see directed graph
DIJKSTRA, 595
for all-pairs shortest paths, 620, 639
implemented with a Fibonacci heap, 599
implemented with a min-heap, 599
with integer edge weights, 600–601 ex.
in Johnson's algorithm, 639
similarity to breadth-first search, 599, 600 ex.
similarity to Prim's algorithm, 570, 599
DIRECT-ADDRESS-DELETE, 222
DIRECT-ADDRESS-INSERT, 222
DIRECT-ADDRESS-SEARCH, 222
directed acyclic graph (dag), 1083
and back edges, 550
and component graphs, 554
and hamiltonian-path problem, 983 ex.
single-source shortest-paths algorithm for, 592–595
directed graph, 1080
all-pairs shortest paths in, 620–642
constraint graph, 603
hamiltonian cycle of, 967
and longest paths, 966
path cover of, 692 pr.
semiconnected, 557 ex.
shortest path in, 580
single-source shortest paths in, 580–619
singly connected, 549 ex.
square of, 530 ex.
transitive closure of, 632
transpose of, 530 ex.
see also circuit, graph, network
directed version of an undirected graph, 1082
DIRECTION, 937
DISCHARGE, 683
discharge of an overflowing vertex, 683
discovery time, in depth-first search, 541
Discrete Fourier Transform, 833
discrete logarithm, 877
discrete logarithm theorem, 877
discrete probability distribution, 1101
discrete random variable, 1106–1111
disjoint-set data structure, 498–522
in depth determination, 519 pr.
disjoint-set-forest implementation of, 505–509
in Kruskal's algorithm, 569
linear-time special case of, 522
linked-list implementation of, 501–505
in off-line least common ancestors, 521 pr.
in off-line minimum, 518 pr.
in task scheduling, 404 pr.
rank properties of, 511–512, 518 ex.
see also disjoint-set data structure
disjoint sets, 1073
disjunctive normal form, 1000
disk, 947 ex.
see also secondary storage
DISK-READ, 437
DISK-WRITE, 437
distance
edit, 364 pr.
euclidean, 957
Lm, 962 ex.
of a shortest path, 534
distribution
geometric, 1112
of prime numbers, 888
sparse-hulled, 964 pr.
distributive laws for sets, 1072
divergent series, 1059
divide-and-conquer method, 28–33
for binary search, 37 ex.
for conversion of binary to decimal, 856 ex.
for Fast Fourier Transform, 834–836
for finding the closest pair of points, 958–961
for finding the convex hull, 948
for multiplication, 844 pr.
and recursion trees, 67
relation to dynamic programming, 323
solving recurrences for, 62–90
for Strassen's algorithm, 735–742
divide instruction, 22
divides relation (|), 850
division theorem, 851
common, 852
see also greatest common divisor
DNF (disjunctive normal form), 1000
does-not-divide relation (∤), 850
domain, 1077
dominates relation, 962 pr.
double hashing, 240–241, 244 ex.
doubly linked list, 204
see also linked list
d-regular graph, 669 ex.
weak, 805
dual linear program, 805
dynamic graph, 499 n.
data structures for, 433
minimum-spanning-tree algorithm for, 574 ex.
transitive closure of, 641 pr.
dynamic order statistics, 302–308
dynamic-programming method, 323–369
for activity selection, 378 ex.
for all-pairs shortest paths, 622–632
for assembly-line scheduling, 324–331
for bitonic euclidean traveling-salesman problem, 364 pr.
compared to greedy algorithms, 341, 350 ex., 373–375, 380, 382–383
for edit distance, 364 pr.
for Floyd-Warshall algorithm, 629–632
for longest common subsequence, 350–356
for matrix-chain multiplication, 331–339
for optimal binary search trees, 356–363
optimal substructure in, 339–344
overlapping subproblems in, 344–346
for printing neatly, 364 pr.
reconstructing an optimal solution in, 346–347
for scheduling, 369 pr.
for transitive closure, 632–635
for Viterbi algorithm, 367 pr.
for 0-1 knapsack problem, 384 ex.
see also data structure
analyzed by accounting method, 419
analyzed by aggregate analysis, 418–419
analyzed by potential method, 419–420, 422–424
load factor of, 417
dynamic tree, 432