I am not sure if this is "state of the art" but take a look at this paper [Efficient subset and superset queries][1]. Basicallly you use a bitset to represent a set, and add it to a binary trie. [1]: http://osebje.famnit.upr.si/~savnik/drafts/settrie0.pdf