Order preserving minimal perfect hash functions

2019-07-04 15:10发布

问题:

I want to implement an OPMPH function for the words in a dictionary in C++. How do I do it?

Thanks!

回答1:

Have you looked at these papers?

  • http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.4018&rep=rep1&type=pdf
  • http://dx.doi.org/10.1016/0020-0190(92)90220-P (the short form link that leads to a very long link at http://www.sciencedirect.com/)
  • http://eprints.cs.vt.edu/archive/00000248/01/TR-91-01.pdf


回答2:

Limit your word length to 6 letters or less and you might be able to make it work. Not very practical.



回答3:

If you need alphabetical order use a Trie or a DAWG (like I recommended in your last question). For an order besides alphabetic I would use a binary tree (std::map in C++ is implemented with a red-black tree usually).

Implementing an order preserving hash container sounds like the mother of all early optimizations.



标签: c++ hash