Quick viewing(Text Mode)

Bibliography

Bibliography

Bibliography

[1] G. M. Adel’son-Vel’ski˘ıand E. M. Landis. An for the or- ganization of . Soviet Mathematics Doklady, 3:1259–1263, 1962.

[2] Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of . Addison Wesley, 1974.

[3] Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. : Prin- ciples, Techniques, and Tools. Addison Wesley, 1986.

[4] Martin Aigner. Combinatorial Search. Wiley-Teubner, 1988.

[5] Arne Andersson. Balanced search trees made simple. In Proceedings of the Third Workshop on Algorithms and Data Structures, number 709 in Lecture Notes in , pages 60–71. Springer-Verlag, 1993.

[6] K. R. Apt and E.-R. Olderog. Verification of Sequential and Concur- rent Programs. Springer-Verlag, 1991.

[7] Paul G. H. Bachmann. Analytische Zahlentheorie, Bd 2: Die Analy- sische Zahlentheorie. Teubner, Leipzig, Germany, 1894.

[8] R. Bayer. Symmetric binary -trees: Data structure and maintenance algorithms. Acta Informatica, 1:290–306, 1972.

[9] R. Bayer and E. M. McCreight. Organization and maintenance of large ordered indexes. Acta Informatica, 1:173–189, 1972.

[10] Richard E. Bellman. . Princeton University Press, 1957.

[11] Jon L. Bentley. Multidimensional divide-and-conquer. Communica- tions of the ACM, 23:214–229, 1980.

588 BIBLIOGRAPHY 589

[12] Jon L. Bentley. Programming Pearls. Addison-Wesley, Reading, MA, 1986.

[13] Jon L. Bentley and M. Douglas McIlroy. a . — Practice and Experience, 23:1249–1265, 1993.

[14] . Berge. Two theorems in theory. Proceedings of the National Academy of Sciences, 43:842–844, 1957.

[15] Manuel Blum, Robert W. Floyd, Vaughan R. Pratt, Ronald L. Rivest, and Robert E. Tarjan. Time bounds for selection. Journal of Computer and System Sciences, 7:448–461, 1972.

[16] Otokar Bor ˙uvka. O jist´em probl´emu minim´alnim. Pr´ace Moravsk´e Pˇr´ırodovˇed Spolecnosti, 3:37–58, 1926.

[17] Gilles Brassard. Crusade for a better notation. ACM SIGACT News, 17:60–64, 1985.

[18] Gilles Brassard and Paul Bratley. Fundamentals of . Pren- tice Hall, 1996.

[19] Christoph Burnikel and Joachim Ziegler. Fast recursive division. Re- search Report MPI-I-98-1-022, Max-Planck-Institut f¨ur Informatik, 1998.

[20] J. Lawrence Carter and Mark N. Wegman. Universal classes of hash functions. Journal of Computer and System Sciences, 18:143–154, 1979.

[21] David Cheriton and Robert E. Tarjan. Finding minimum spanning trees. SIAM Journal on , 5:724–742, 1976.

[22] V. Chvatal, D. A. Klarner, and D. E. Knuth. Selected combinato- rial research problems. Technical Report STAN-CS-72-292, Stanford University, 1972.

[23] Steven A. Cook. The of theorem-proving procedures. In Proceedings of the 3rd Annual ACM Symposium on Theory of Com- puting, pages 151–158, 1971.

[24] James W. Cooley and John W. Tukey. An algorithm for the machine calculation of complex Fourier series. Mathematics of , 19:297–301, 1965. BIBLIOGRAPHY 590

[25] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clif- ford Stein. Introduction to Algorithms. McGraw-Hill, 2nd edition, 2001.

[26] C. A. Crane. Linear lists and priority queues as balanced binary trees. Technical Report STAN-CS-72-259, Computer Science Department, Stanford University, Stanford, CA, 1972.

[27] Edsger W. Dijkstra. A note on two problems in connexion with graphs. Numerische Mathematik, 1:269–271, 1959.

[28] Edsger W. Dijkstra. The structure of “THE”-multiprogramming sys- tem. Communications of the ACM, 11:341–346, 1968.

[29] Edsger W. Dijkstra. A Discipline of Programming. Prentice-Hall, Englewood Cliffs, NJ, 1976.

[30] E. A. Dinic. Algorithm for solution of a problem of maximum flow in a network with power estimation. Soviet Mathematics Doklady, 11:1277–1280, 1970.

[31] Arnold I. Dumey. Indexing for rapid random access memory systems. and Automation, 5:6–9, 1956.

[32] J. P. Eckert and J. W. Mauchly. Progress report on the edvac, Septem- ber 1945.

[33] Jack Edmonds. Paths, trees, and flowers. Canadian Journal of Math- ematics, 17:449–467, 1965.

[34] Jack Edmonds. Matroids and the greedy algorithm. Mathematical Programming, 1:127–136, 1971.

[35] Jack Edmonds and Richard M. Karp. Theoretical improvements in algorithmic efficiency for network flow problems. Journal of the ACM, 19:248–264, 1972.

[36] Leohard Euler. Solutio problematis ad geometriam situs pertinentis. Commetarii Academiae Scientiarum Imperialis Petropolitanae, 8:128– 140, 1736.

[37] Shimon Even. Graph Algorithms. Computer Science Press, 1979.

[38] Robert W. Floyd. Algorithm 97: Shortest path. Communications of hte ACM, 5:345, 1962. BIBLIOGRAPHY 591

[39] Robert W. Floyd. Algorithm 245: Treesort. Communications of the ACM, 7:701, 1964. [40] L. R. Ford and D. R. Fulkerson. Maximal flow through a network. Canadian Journal of Mathematics, 8:399–404, 1956. [41] L. R. Ford and D. R. Fulkerson. Flows in Networks. Princeton Uni- versity Press, 1962. [42] N. Francez. Program Verification. Addison-Wesley, 1992. [43] Michael L. Fredman, J´anos Koml´os, and Endre Szermer´edi. Storing a sparse table with O(1) worst case access time. Journal of the ACM, 31:538–544, 1984. [44] Michael L. Fredman and Robert E. Tarjan. Fibonacci heaps and their use in improved network optimization algorithms. Journal of the ACM, 34:596–615, 1987. [45] Bernard A. Galler and Michael J. Fisher. An improved equivalence algorithm. Communications of the ACM, 7:301–303, 1964. [46] Anna Gambin and Adam Malinowski. Randomized meldable priority queues. In Conference on Current Trends in Theory and Practice of Informatics, pages 344–349, 1998. [47] M. R. Garey, R. L. Graham, D. S. Johnson, and A. C. Yao. Resource constrained scheduling as generalized bin packing. Journal of Combi- natorial Theory, Series A, 21:257–298, 1976. [48] Michael R. Garey, R. L. Graham, and J. D. Ullman. Worst-case anal- ysis of memory allocation algorithms. In Proceedings of the Fourth ACM Symposium on Theory of Computing, pages 143–150, 1972. [49] Michael R. Garey and David S. Johnson. Complexity results for mul- tiprocessor scheduling under resource constraints. SIAM Journal on Computing, 4:397–411, 1975. [50] Michael R. Garey and David S. Johnson. Two- scheduling with start-times and deadlines. SIAM Journal on Computing, 6:416– 426, 1977. [51] Michael R. Garey and David S. Johnson. “Strong” NP-Completeness results: Motivation, examples, and implications. Journal of the ACM, 25:499–508, 1978. BIBLIOGRAPHY 592

[52] Michael R. Garey and David S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, New York, 1979.

[53] Edgard N. Gilbert and Edward F. Moore. Variable length encodings. Bell System Technical Journal, 38:933–968, 1959.

[54] Sadashiva S. Godbole. On efficient computation of chain prod- ucts. IEEE Transactions on Computers, C-22:864–866, 1973.

[55] Andrew V. Goldberg and Satish Rao. Beyond the flow decomposition barrier. Journal of the ACM, 45:783–797, 1998.

[56] Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. Concrete Mathematics. Addison-Wesley, Reading, Massachusetts, 2nd edition, 1994.

[57] Leo J. Gubias and Robert Sedgewick. A dichromatic framework for balanced trees. In Porceedings of the 19th Annual Symposium on Foun- dations of Computer Science, pages 8–21. IEEE Computer Society, 1978.

[58] Machael T. Heideman, Don H. Johnson, and C. Sidney Burrus. Gauss and the history of the . IEEE ASSP Magazine, pages 14–21, 1984.

[59] C. A. R. Hoare. . Computer Journal, 5:10–15, 1962.

[60] C. A. R. Hoare. An axiomatic basis for . Com- munications of the ACM, 12:576–580, 1969.

[61] John E. Hopcroft and Richard M. Karp. An n5/2 algorithm for max- imum matchings in bipartite graphs. SIAM Journal on Computing, 2:225–231, 1973.

[62] John E. Hopcroft and Robert E. Tarjan. Efficient algorithms for graph manipulation. Communications of the ACM, 16:372–378, 1973.

[63] John E. Hopcroft and Jeffrey D. Ullman. Set merging algorithms. SIAM Journal on Computing, 2:294–303, 1973.

[64] Rodney R. Howell. On asymptotic notation with multiple variables. Technical Report 2007-4, Kansas State University, 2007. http:// people.cis.ksu.edu/∼rhowell/asymptotic.pdf. BIBLIOGRAPHY 593

[65] David A. Huffman. A method for the construction of minimum- redundancy codes. Proceedings of the IRE, 40:1098–1101, 1952. [66] Oscar H. Ibarra and Chul E. Kim. Fast approximation algorithms for the knapsack and sum of subset problems. Journal of the Association for Computing Machinery, 22:463–468, 1975. [67] V. Jarn´ık. O jist´em probl´emu minim´alnim. Pr´ace Moravsk´ePˇr´ırodovˇed Spolecnosti, 6:57–63, 1930. [68] D. S. Johnson, A. Demers, J. D. Ullman, M. R. Garey, and R. L. Graham. Worst-case performance bounds for simple one-dimensional packing algorithms. SIAM Journal on Computing, 3:299–325, 1974. [69] David S. Johnson. Near-Optimal Bin Packing Algorithms. Doctoral thesis, dept. of mathematics, Massachusetts Institute of Technology, Cambridge, MA, 1973. [70] David S. Johnson. Approximation algorithms for combinatorial prob- lems. Journal of Computer and System Sciences, 9:256–278, 1974. [71] Donald B. Johnson. Priority queues with update and finding minimum spanning trees. Information Processing Letters, 4:53–57, 1975. [72] Donald B. Johnson. Efficient algorithms for shortest paths in sparse networks. Journal of the ACM, 24:1–13, 1977. [73] Anatoli˘ı A. Karatsuba and Y. Ofman. of multidigit numbers on automata. Doklady Akademii Nauk SSSR, 145:293–294, 1962. [74] Richard M. Karp. Reducibility among combinatorial problems. In R. E. Miller and J. W. Thatcher, editors, Complexity of Computer , pages 85–103. Plenum Press, 1972. [75] D. G. Kirkpatrick and P. Hell. On the complexity of a generalized matching problem. In Proceedings of the 10th Annual ACM Sympo- sium on Theory of Computing, pages 240–245. Association for Com- puting Machinery, 1978. [76] Donald E. Knuth. Fundamental Algorithms, volume 1 of The Art of Computer Programming. Addison Wesley, 1968. 2nd edition, 1973. [77] Donald E. Knuth. Seminumerical algorithms, volume 2 of The Art of Computer Programming. Addison Wesley, 1969. 2nd edition, 1981. BIBLIOGRAPHY 594

[78] Donald E. Knuth. Von Neumann’s first . ACM Computing Surveys, 2:247–260, 1970.

[79] Donald E. Knuth. Optimal binary search trees. Acta Informatica, 1:14–25, 1971.

[80] Donald E. Knuth. Sorting and Searching, volume 3 of The Art of Computer Programming. Addison Wesley, 1973.

[81] Dexter Kozen and Shmuel Zaks. Optimal bounds for the change- making problem. Theoretical Computer Science, 123:377–388, 1994.

[82] Dexter C. Kozen. The Design and . Springer- Verlag, 1992.

[83] Joseph B. Kruskal, Jr. On the shortest spanning subtree of a graph and the traveling salesman problem. Proceedings of the American Mathematical Society, 7:48–50, 1956.

[84] Eugene L. Lawler. Combinatorial Optimization: Networks and Ma- troids. Holt, Rinehart, and Winston, 1976.

[85] Debra A. Lelewer and Daniel S. Hirschberg. . ACM Computing Surveys, 19:261–296, 1987.

[86] L. Lovasz. Coverings and colorings of hypergraphs. In Proceedings of the 4th Southeastern Conference on , , and Computing, pages 3–12. Utilitas Mathematica Publishing, 1973.

[87] E. Lucas. R´ecr´eations Math´ematiques, volume 1. Gauthier-Villars, 1883.

[88] S. Micali and V. V. Vazirani. An O(p|V |·|E|) algorithm for find- ing maximal matchings in general graphs. In Proceedings of the 21st Annual IEEE Symposium on Foundations of Computer Science, pages 17–27, 1980.

[89] Steven S. Muchnick. Advanced Design & . Morgan Kaufmann, 1997.

[90] Christos H. Papadimitriou and Kenneth Steiglitz. Combinatorial Op- timization: Algorithms and Complexity. Prentice-Hall, 1982.

[91] L. C. Paulson. ML for the Working . Cambridge Univer- sity Press, 2nd edition, 1996. BIBLIOGRAPHY 595

[92] Robert C. Prim. Shortest connection networks and some generaliza- tions. Bell System Technical Journal, 36:1389–1401, 1957.

[93] William Pugh. Skip lists: A probabilistic alternative to balanced trees. Communications of the ACM, 33:668–676, 1990.

[94] S. Sahni and T. Gonzalez. P-complete approximation problems. Jour- nal of the Association for Computing Machinery, 23:555–565, 1976.

[95] Sartaj Sahni. Approximate algorithms for the 0/1 knapsack prob- lem. Journal of the Association for Computing Machinery, 22:115– 124, 1975.

[96] A. Sch¨onhage and V. Strassen. Schnelle multiplikation grosser zahlen. Computing, 7:281–292, 1971.

[97] M. Sharir. A strong-connectivity algorithm and its applications in data flow analysis. Computers and Mathematics with Applications, 7:67–72, 1981.

[98] Edwin Silberstang. The Winner’s Guide to Casino Gambling. Signet, 1997.

[99] Daniel D. Sleator and Robert E. Tarjan. A data structure for dynamic trees. Journal of Computer and System Sciences, 26:362–391, 1983.

[100] Daniel D. Sleator and Robert E. Tarjan. Self-adjusting heaps. SIAM Journal on Computing, 15:52–69, 1986.

[101] . Gaussian elimination is not optimal. Numerische Mathematik, 13:354–356, 1969.

[102] R. E. Tarjan. Depth-first search and linear graph algorithms. SIAM Journal on Computing, 1:146–160, 1972.

[103] Robert E. Tarjan. On the efficiency of a good but not linear set merging algorithm. Journal of the ACM, 22:215–225, 1975.

[104] Robert E. Tarjan. Data Structures and Network Algorithms. Society for Industrial and , 1983.

[105] Robert E. Tarjan. Amortized . SIAM Jour- nal on Algebraic and Discrete Methods, 6:306–318, 1985. BIBLIOGRAPHY 596

[106] A. H. Taub, editor. : Collected Works, volume 5. Pergamon Press, 1963.

[107] J. van Leeuwen. Having a Grundy-numbering is NP-complete. Report 207, Pennsylvania State University, University Park, PA, 1976.

[108] Jean Vuillemin. A data structure for manipulating priority queues. Communications of the ACM, 21:309–315, 1978.

[109] R. A. Wagner and M. J. Fischer. The string-to-string correction prob- lem. Journal of the ACM, 21:168–173, 1974.

[110] Stephen Warshall. A theorem on Boolean matrices. Journal of the ACM, 9:11–12, 1962.

[111] Eric W. Weisstein. Collatz problem. From MathWorld — A Wolfram Web Resource. http://mathworld.wolfram.com/CollatzProblem. html.

[112] Hassler Whitney. On the abstract properties of linear dependence. American Journal of Mathematics, 57:509–533, 1935.

[113] John W. J. Williams. Algorithm 232: . Communications of the ACM, 7:347–348, 1964.

[114] Niclaus Wirth. Program development by stepwise refinement. Com- munications of the ACM, 14:221–227, 1971.

[115] J. W. Wright. The change-making problem. Journal of the ACM, 22:125–128, 1975.

[116] Andrew C.-C. Yao. An O(|E| log log |V |) algorithm for finding mini- mum spanning trees. Information Processing Letters, 4:21–23, 1975.

[117] Frances F. Yao. Efficient dynamic programming using quadrangle inequalities. In Proceedings of the 12th Annual ACM Symposium on Theory of Computing, pages 429–435, 1980. Index

3-dimensional matching, 527–531 Ω, 61 ω, 88 , 107 operations using, 65–67 abstraction, 5 properties, 59–60, 62–64, 91, accessor operations, 116 97–103 Ackermann’s function, 304 recurrences and, 67, 73–79 Adel’son-Vel’ski˘ı, G. M, 205, 242 summations and, 68 ADT, 107 Θ, 62 Aho, A. V., 145, 288 Aigner, M., 373 Bachman, P. G. H., 103 aliasing, 145 Bayer, R., 242, 243 Amdahl, G. M, 288 Bellman, R. E., 412 amortized analysis, 121–123, 129–139 Bentley, J. L., 24, 373 Andersson, A., 242 Berge, C., 468 approximation ratio, 563 big-Oh, 58 Apt, K. R., 55 big-Omega, 61 arbitrary precision arithmetic big-Theta, 62 exponentiation, 369 bin packing problem, 558, 570–574, 585 radix conversion, 369 binary search, 149–152 arbitrary-precision arithmetic, 145, binomial coefficients, 241 350–364 binomial theorem, 241 division, 350–359, 368 bitonic tour, 411 exponentiation, 369 Blum, M., 373 multiplication, 366, 481–482, Boehme, E. M., 288 485–504 Bool, 124 radix conversion, 369 boolean expressions reciprocal, 357–364, 368 conjunctive normal form, 517 arithmetic series, 49 DeMorgan’s laws, 518 asymptotic notation k-conjunctive normal form, 522 O, 58 literal, 517 limits and, 91–93 satisfiability, 508–523, 539–553 multiple variables, 81–88 not all equal, 554 o, 88 validity, 509

597 INDEX 598 boolean satisfiability Dinic, E. A., 468 conjunctive normal form discrete Fourier transform, 471 clauses, 517 discrete space, 170 Bor ˙uvka, O, 391 disjoint set, 289 Brassard, G., 103–104, 308, 412, 559 disjoint set structures, 289–308 Bratley, P., 308, 412, 559 divide-and-conquer, 74, 150, 332–373 Burnikel, C., 372 Dumey, A. I., 288 Burrus, C. S., 506 Dutch national flag, 37–43, 52, 54–55, 337 Carter, J. L, 288 dynamic programming, 392–412 change-making problem, 392–395 Cheriton, D., 391 Eckert, J. P., 372 Chinese Remainder Theorem, 498 Edmonds, J., 391, 468 chirp transform, 505 Euler, L., 330 Chiu-Shao, C., 506 Even, S., 330 Chvatal, V., 412 event, 172 clique, 555, 586 independence of, 176 clique problem, 555 pairwise, 230 cloning, 123 events shallow, 123 independence of Collatz problem, 33, 55 mutual, 231 Collatz, L., 55 eventually nondecreasing, 67, 87 collision, see hashing, collision eventually positive, 68, 87 compression map, see hashing, Expand function, 150 compression map expandable array, 121 conditional probability, 176 expected value, 171 ConsList, 124 expected-case analysis, 170 constructive induction, 347 convolution, 469–481 factorial, 50 negative wrapped, 488 Fast Fourier Transform, 469–506 positive wrapped, 480 Fibonacci sequence, 50 Cook, S. A., 372, 559 Fischer, M. J., 412 Cooley, J. W., 506 Fisher, M. J., 308 Cormen, T. H., 55, 104, 288, 308, 468 floor, 69 correctness Floyd, R. W., 194, 412 algorithms, 55 for loops, 32 data structures, 112 Ford, L. R., 468 countable set, 170 Francez, N., 55 Crane, C. A., 194 Fredman, M. L., 194, 288, 391 craps, 193–194 Fulkerson, D. R., 468 cut, 579 fully polynomial approximation scheme, 567 Demers, A., 586 design patterns, 20, 106 Galler, B. A., 308 Dijkstra, E. W., 24, 55, 391 Gambin, A., 194 INDEX 599

Garey, M. R., 559, 560, 586 transitively closed, 329 Gauss, C. F., 506 universal sink detection, 311–313 generalization, 39–43 universal sink in, 311 geometric series, 49 vertex cover, 523–527, 586 Gilbert, E. N., 412 greatest common divisor, 369 Godbole, S. S., 412 group, 482 Goldberg, A. V., 468 abelian, 482 golden ratio, 50 Gubias, L. J., 242 Gonzalez, T., 587 Graham, R. L., 104, 586 harmonic series, 342 graphs, 309–330 hashing, 248–288 acyclic, 313 c-universal, 272 adjacency list, 319–322, 327 collision, 248 adjacency matrix, 316–319, 327 compression map, 258 articulation points, 429–434 division method, 254–259, 284 biconnected, 442 load factor, 254 bipartite, 444 perfect, 274–283 breadth-first search, 389 polynomial, 259–260, 284 bridges, 442 rehashing, 254 coloring, 443–444, 557 universal, 260–274, 284 connected components of, 377 heaps, 152–186 connected undirected, 329 binary, 178–186 cycle in, 313 leftist, 159–165 edge connectivity, 468 Heideman, M. T., 506 Euler paths in, 329 Hell, P., 559 Hamiltonian cycle, 555 Hirschberg, D. S., 391 Hamiltonian path, 372 Hoare, C. A. R., 55, 373 independent set, 526–527 Hopcroft, J. E., 288, 308, 330, 444, 468 induced subgraph, 421 Huffman, D. A., 391 isomorphic, 555 matching, 455–465, 527 Ibarra, O. H., 587 path cover, 467 immutable structure, 123 reachability, 420–429 indicator random variable, 234 semiconnected, 443 induction, 27–29 shortest paths, 381–383, 389, constructive, 347 398–401 insecure data structure, 117 simple cycle in, 313 , see sorting, insertion sort simple path in, 447 Int, 38 singly connected, 443 interface, 107 sink in, 311 internal function, 115 sparse, 322 invariant strongly connected components, loop, 11 437–439 structural, 110 topological sort, 313–316, 434–436 inversion, 103 transitive closure, 406 InvertedPriorityQueue, 148 INDEX 600 iteration operator, 300 chained, 397–398 Jarn´ık, V., 391 Mauchly, J. W., 372 Jiushao, Q., 506 maximum cut problem, 579–584 Johnson, D. B., 391 maximum subsequence sum, 12–19, 24, Johnson, D. H., 506 29–32, 50–52, 59–61, 63–65, Johnson, D. S., 559, 560, 586 67, 69–78, 94, 332, 374 McCreight, E. M., 243 k-cut, 579 McIlroy, M. D., 308, 373 Karatsuba, A., 372 Micali, S., 468 Karp, R. M., 468, 559 minimum cluster problem, 579–584, 586 Keyed type, 148 mod, 33 Kim, C. E., 587 modular multiplicative inverse, 370 Kirkpatrick, D. G., 559 Moore, E. F., 412 Klarner, D. A., 412 Morris, 308 knapsack problem, 390, 401–403, 405, most significant bit, 351 563–570, 585 most significant digit, 351 Knuth, D. E., 104, 194, 288, 308, 330, 372, 412 Muchnick, S. S., 145 Koml´os, J., 288 multigraphs, 323–325, 327 Kozen, D. C., 308, 412 multiset, 148 Kruskal, J. B., Jr., 391 Nat, 4 L’Hˆopital’s rule, 92 natural number, 3 Landis, E. M., 205, 242 network flow, 445–455, 465 Lawler, E. L., 391 augmenting path, 447 Lelewer, D. A., 391 residual network, 448 lg, 69 Newton’s method, 359–364 limit, 91 nondestructive updates, 123 linearity of expectation, 177 NP-complete problem, 516 linked list, 129 strong sense, 535 little-oh, 88 NP-hard problem, 516 little-omega, 88 non-decision problem, 562 load factor, see hashing, load factor strong sense, 535 null path length, 159 base e, 93 Number, 4 base 2, 69 natural, 93 object-oriented design, 24 Lovasz, L., 559 object-oriented programming, 24 Lucas, E., 444 Ofman, Y., 372 Luhn, H. P., 288 Olderog, E.-R., 55 optimization problem, 374 Malinowski, A., 194 Markov’s Inequality, 194 palindrome, 22, 406 matching Papadimitriou, C. H., 391 bipartite, 455–465 partition problem, 532–539 INDEX 601

Patashnik, O., 104 Sch¨onhage, A., 506 Paulson, L. C., 147 scheduling, 289–291, 375–377 Perl, Y., 560 Sedgewick, R., 242 polynomial approximation scheme, 567 selection problem, 2–5, 25–27, 37–39, fully, 567 45–46, 72, 343–350 polynomial multiplication, 333–336, , see sorting, selection sort 469–481 self-adjusting, 214 polynomial-time algorithm, 512 sentinel element, 180 postcondition, 3 Sethi, R., 145 precondition, 3 Sharir, M., 444 Prim, R. C., 391 significant bit, 351 , 258 significant digit, 351 principal roots of unity, 471 SizeOf, 23 principle of optimality, 395 skip lists, 223–237 priority queue, 148–194 Sleator, D., 147, 194, 242 PriorityQueue, 148 smooth function, 68, 87, 104 probability, 170 sorting probability space, 170 heap sort, 178–186, 336 pseudopolynomial, 534 insertion sort, 5–12, 27–29, 32–37, Pugh, W., 243 71–72 , 336, 337, 372 queue, 143 quick sort, 54, 337–343, 372 quick sort, see sorting, quick sort selection sort, 22–23 stable, 192, 336 RAM, 540 specification, 2 random access machine, 540 of an algorithm, 3 random variable, discrete, 171 state of a data structure, 110 Rao, S., 468 Steiglitz, K., 391 recurrence, 67 Strassen, V., 373, 506 asymptotic solution to, see String, 143–145 asymptotic notation, summations recurrences and arithmetic series, 49 reduction, 5 asymptotic solution to, see polynomial asymptotic notation, many-one, 514 summations and Turing, 561–562 geometric series, 49 pseudopolynomial, 536 Szermer´edi, E., 288 rehashing, see hashing, rehashing ring, 483 tail recursion, 9 commutative, 483 Tarjan, R. E., 147, 194, 242, 308, 330, unit element, 483 391, 444 Rochester, N., 288 ToArray, 256 Toeplitz matrix, 505 Sahni, S., 586 top-down, 2, 5, 6, 24 Samuel, A. L., 288 topological sort, 316–322 INDEX 602

Tr´emaux, 444 universal sink detection, 316 transformation, 9 traveling salesperson problem, 558, van Leeuwen, J., 559 574–579 Vazirani, V. V., 468 metric, 575–579 virtual initialization, 244–248 trees, 329, 377 Visitor interface, 195 AVL, 205–214, 294 visitor pattern, 195 binary, 155 von Neumann, J., 372 binary search, 198–223 Vuillemin, J., 194 leftist, 160–165 Wagner, R. A., 412 red-black, 240 Warshall, S., 412 rooted, 153 Wegman, M. N., 288 height of, 154 Weisstein, E., 55 leaf, 154 Whitney, H., 391 size of, 154 Williams, J., 194 traversals, 201, 415–420 Wirth, N., 24 spanning, 377 worst case, 57 depth-first, 423 Wright, J. W., 412 minimum-cost, 377–381 splay, 214–223 Yao, A. C., 586 Tritter, A. L., 308 Yao, A. C.-C., 391 Ts˘u,S., 506 Yao, F. F., 412 Tukey, J. W., 506 Zaks, S., 412, 560 Ullman, J. D., 145, 288, 308, 586 Zi, S., 506 universal family, 261, 284 Ziegler, J., 372