External Perfect Hashing

  • Yannis Manolopoulos
  • Yannis Theodoridis
  • Vassilis J. Tsotras
Part of the Advances in Database Systems book series (ADBS, volume 17)


In this chapter, we give some theoretical and experimental results for the most popular practical algorithms for constructing perfect hashing functions, suitable for key sets ranging in size from very small to very large ones, i.e. in the order of millions. These algorithms are used for a variety of applications such as in DBMSs, retrieval systems and file managers, as well as in compilers, natural language applications, hypermedia and hypertext to provide rapid access to internal and external data collections.


Hash Function Main Memory Hash Table Dependency Graph Secondary Memory 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Brain, M. and Tharp, A. (1990). Perfect Hashing Sparse Matrix Packing. Information Systems, 15(3):281–290.CrossRefGoogle Scholar
  2. Brain, M. and Tharp, A. (1994). Using Tries to Eliminate Pattern Collisions in Perfect Hashing. IEEE Transactions on Knowledge and Data Engineering, 6(2):239–247.CrossRefGoogle Scholar
  3. Carter, L. and Wegman, M. (1979). Universal Classes of Hash Functions. Journal of Computer Systems and Sciences, 18(2):143–154.MathSciNetzbMATHCrossRefGoogle Scholar
  4. Cercone, N., Krause, M, and Boates, J. (1983). Minimal and Almost Minimal Perfect Hash Function Search with Applications to Natural Language Lexicon Design. Computer Mathematics and Applications, 9(1):215–231.zbMATHCrossRefGoogle Scholar
  5. Cercone, N., Boates, J., and Krause, M. (1985). An Interactive System for Finding Perfect Hash Functions. IEEE Software, 2(6):38–53.CrossRefGoogle Scholar
  6. Chang, C.C. (1984). The Study of an Ordered Minimal Perfect Hashing Scheme. Communications of the ACM, 27(4):384–387.CrossRefGoogle Scholar
  7. Chang, C.C., Kowng, H.C., and Wu, T.C. (1991). A Refinement of a Compression-oriented Addressing Scheme. BIT, 33(4):530–535.Google Scholar
  8. Chang, C.C. and Chang, H.C. (1988). The Ordered Minimal Perfect Hashing Scheme with Single Parameter. Information Processing Letters, 27(2):79–83.MathSciNetCrossRefGoogle Scholar
  9. Chang, C.C. and Lee, R.C.T. (1986). A Letter-oriented Minimal Perfect Hashing Scheme. The Computer Journal, 29(3):277–281.zbMATHCrossRefGoogle Scholar
  10. Chang, C.C. and Wu, T.C. (1991). A Letter-oriented Perfect Hashing Scheme based upon Sparse Table Compression. Software-Practice and Experience, 21(1):35–49.MathSciNetCrossRefGoogle Scholar
  11. Cichelli, R. (1980). Minimal Perfect Hash Functions Made Simple. Communications of the ACM, 23(1):17–19.CrossRefGoogle Scholar
  12. Cormack, G., Horspool, R., and Kaiserswerth, M. (1985). Practical Perfect Hashing. The Computer Journal, 28(1):54–58.MathSciNetCrossRefGoogle Scholar
  13. Czech, Z., Havas, G., and Majewski, B. (1992). An Optimal Algorithm for Generating Minimal Perfect Hash Functions. Information Processing Letters, 43(5):257–264.MathSciNetzbMATHCrossRefGoogle Scholar
  14. Czech, Z. and Majewski, B. (1993). A Linear Time Algorithm for Finding Minimal Perfect Hash Functions. The Computer Journal, 36(6):579–587.zbMATHCrossRefGoogle Scholar
  15. Czech, Z., Havas, G., and Majewski, B. (1997). Perfect Hashing. Theoretical Computer Science, 182(1-2):1–143.MathSciNetzbMATHCrossRefGoogle Scholar
  16. Dietzfelbinger, M., Karlin, A., Mehlhorn, K., Meyer auf der Heide, F., Rohnhert, H., and Tarjan, R. (1998). Dynamic Perfect Hashing-Upper and Lower Bounds. SIAM Journal on Computing, 24(4):738–761.Google Scholar
  17. Du, M.W., Hsieh, T.M., Jea, K.F., and Shieh, D.W. (1983). The Study of a New Perfect Hash Scheme. IEEE Transactions on Software Engineering, 9(3):305–313.zbMATHCrossRefGoogle Scholar
  18. Fox, E., Chen, Q., Daoud, A., and Heath, L. (1991). Order Preserving Minimal Perfect Hash Functions and Information Retrieval. ACM Transactions on Information Systems, 3(3):281–308.CrossRefGoogle Scholar
  19. Fox, E., Heath, L., Chen, Q., and Daoud. A. (1992a). Practical Minimal Perfect Hash Functions for Large Databases. Communications of the ACM, 35(5):105–121.CrossRefGoogle Scholar
  20. Fox, E., Chen, Q., and Heath, L. (1992b). A Faster Algorithm for Constructing Minimal Perfect Hash Functions. In Proceedings of 15 th ACM SIGIR Conference on Research and Development in Information Retrieval, pages 266–273.Google Scholar
  21. Fredman, M., Komlos, J., and Szemeredi, E. (1982). Storing a Sparse Table with O(1) Worst Case Access Time. In Proceedings of the 23 rd IEEE Symposium on Foundations of Computer Science, pages 165–168.Google Scholar
  22. Gonnet, G. and Larson, P.A. (1982). External Hashing with Limited Internal Storage. In Proceedings of the 1 st ACM Symposium on Principles of Database Systems, pages 256–261.Google Scholar
  23. Gonnet, G. and Larson, P.A. (1988). External Hashing with Limited Internal Storage. Journal of the ACM, 35(1):161–184.MathSciNetCrossRefGoogle Scholar
  24. Jaeschke, G. (1981). Reciprocal Hashing: a Method for Generating Minimal Perfect Hashing Functions. Communications of the ACM, 24(12):829–833.MathSciNetzbMATHCrossRefGoogle Scholar
  25. Knuth, D. (1973). The Art of Computer Programming, Vol.3: Sorting and Searching. Addison-Wesley.Google Scholar
  26. Larson, P.A. (1978). Dynamic Hashing. BIT, 18(2):184–201.MathSciNetzbMATHCrossRefGoogle Scholar
  27. Larson, P.A. and Ramakrishna, M. (1985). External Perfect Hashing. In Proceedings of ACM SIGMOD Conference on Management of Data, pages 190–200.Google Scholar
  28. Lewis, T. and Cook, C. (1988). Hashing for Static and Dynamic Internal Tables. IEEE Computer, 21(10):45–560.CrossRefGoogle Scholar
  29. Majewski, B., Wormald, N., Havas, G., and Czech, Z. (1996). A Family of Perfect Hashing Methods. The Computer Journal, 39(6):547–554.CrossRefGoogle Scholar
  30. Ramakrishna, M. (1986). Perfect Hashing for External Files. Ph.D. Dissertation, Technical report CS-86-25, Department of Computer Science, University of Waterloo, Canada.Google Scholar
  31. Ramakrishna, M. and Larson, P.A. (1989). File Organization Using Composite Perfect Hashing. ACM Transactions on Database Systems, 14(12):231–263.CrossRefGoogle Scholar
  32. Ramakrishna, M. and Portice, G. (1991). Perfect Hashing Functions for Hardware Applications. In Proceedings of the 7 th IEEE International Conference on Data Engineering, pages 464–470.Google Scholar
  33. Sager, T. (1985). A Polynomial Time Generator for Minimal Perfect Hash Functions. Communications of the ACM, 28(5):523–532.MathSciNetCrossRefGoogle Scholar
  34. Sprugnoli, R. (1977). Perfect Hashing Functions: a Single Probe Retrieving Method for Static Sets. Communications of the ACM, 20(11):841–850.MathSciNetzbMATHCrossRefGoogle Scholar
  35. Tarjan, R. and Yao, A.C. (1979). Storing a Sparse Table. Communications of the ACM, 22(11):606–611.MathSciNetzbMATHCrossRefGoogle Scholar
  36. Winters, V. (1990). Minimal Perfect Hashing in Polynomial Time. BIT, 30(2):235–244.MathSciNetzbMATHCrossRefGoogle Scholar
  37. Yang, W.P. and Du, M.W. (1985). A Backtracking Method for Constructing Perfect Hash Functions from a Set of Mapping Functions. BIT, 25(1):148–164.MathSciNetzbMATHCrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2000

Authors and Affiliations

  • Yannis Manolopoulos
    • 1
  • Yannis Theodoridis
    • 2
  • Vassilis J. Tsotras
    • 3
  1. 1.Aristotle UniversityGreece
  2. 2.Greece
  3. 3.University of CaliforniaRiversideUSA

Personalised recommendations