Class ImmutableBinaryTrie<T>

    • Constructor Detail

      • ImmutableBinaryTrie

        public ImmutableBinaryTrie​(Iterable<? extends T> elements,
                                   TransformationStrategy<? super T> transformationStrategy)
        Creates a trie from a set of elements.
        Parameters:
        elements - a set of elements
        transformationStrategy - a transformation strategy that must turn elements into a list of distinct, lexicographically increasing (in iteration order) binary words.
    • Method Detail

      • buildTrie

        protected ImmutableBinaryTrie.Node buildTrie​(ObjectList<LongArrayBitVector> elements,
                                                     int pos)
        Builds a trie recursively.

        The trie will contain the suffixes of words in words starting at pos.

        Parameters:
        elements - a list of elements.
        pos - a starting position.
        Returns:
        a trie containing the suffixes of words in words starting at pos.
      • size

        public int size()
        Returns the number of binary words in this trie.
        Specified by:
        size in interface Function<T,​Long>
        Returns:
        the number of binary words in this trie.
      • getIndex

        public long getIndex​(Object element)
      • get

        public long get​(BooleanIterator iterator)
        Return the index of the word returned by the given iterator, or -1 if the word is not in this trie.
        Parameters:
        iterator - a boolean iterator that will be used to find a word in this trie.
        Returns:
        the index of the specified word, or -1 if the word returned by the iterator is not in this trie.
        See Also:
        getLong(Object)
      • getInterval

        public LongInterval getInterval​(BitVector word)
        Returns an interval given by the smallest and the largest word in the trie starting with the specified word.
        Parameters:
        word - a word.
        Returns:
        an interval given by the smallest and the largest word in the trie that start with word (thus, the empty inteval if no such words exist).
        See Also:
        getInterval(BooleanIterator)
      • getInterval

        public LongInterval getInterval​(BooleanIterator iterator)
        Returns an interval given by the smallest and the largest word in the trie starting with the word returned by the given iterator.
        Parameters:
        iterator - an iterator.
        Returns:
        an interval given by the smallest and the largest word in the trie that start with the word returned by iterator (thus, the empty interval if no such words exist).
        See Also:
        getInterval(BitVector)
      • getApproximatedInterval

        public LongInterval getApproximatedInterval​(T element)
        Returns an approximated interval around the specified word.

        Given a word w, the corresponding approximated interval is defined as follows: if the words in the approximator are thought of as left interval extremes in a larger lexicographically ordered set of words, and we number these word intervals using the indices of their left extremes, then the first word extending w would be in the word interval given by the left extreme of the interval returned by this method, whereas the last word extending w would be in the word interval given by the right extreme of the interval returned by this method. If no word in the larger set could possibly extend w (because w is smaller than the lexicographically smallest word in the approximator) the result is just an empty interval.

        Parameters:
        element - an element.
        Returns:
        an approximated interval around the specified word.
        See Also:
        getApproximatedInterval(BooleanIterator)
      • getApproximatedInterval

        public LongInterval getApproximatedInterval​(BooleanIterator iterator)
        Returns an approximated prefix interval around the word returned by the specified iterator.
        Parameters:
        iterator - an iterator.
        Returns:
        an approximated interval around the specified word: if the words in this trie are thought of as left interval extremes in a larger lexicographically ordered set of words, and we number these word intervals using the indices of their left extremes, then the first word extending word would be in the word interval given by the left extreme of the LongInterval returned by this method, whereas the last word extending word would be in the word interval given by the right extreme of the LongInterval returned by this method.
        See Also:
        getApproximatedInterval(Object)