Question

Suppose I have a list of strings and a prefix tree of those strings, and I would like to locate a string given a key, which one is more faster? binary search or prefix tree search?

Why and what's the time complexity?

Thanks!

Was it helpful?

Solution

Both techniques have their advantages, and their drawbacks:

Suffix tree

  • Advantages:
    • O(N) building complexity
    • O(M) search of a pattern of length M
    • They allow online construction
  • Drawbacks:
    • Space inefficient
    • Really complex construction algorithms

Binary search (with suffix array)

  • Advantages:
    • You can sort the string array in O(N) time
    • Space efficient (five times less memory (at least))
    • Simple and straightforward construction algorithms
  • Drawbacks:
    • They don't support online construction
    • O(M lg N) time to search a pattern of length M among N strings (this can be reduced to O(M+lg N) but this is still a little slower than suffix tree)

Both of these data structures are really powerful. If your application requires fast searching, and the space supplied is enough, then definitely go for suffix trees. But if the space matters, then suffix array(binary search) is the only choice you have...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top