Search in sources :

Example 16 with Node

use of org.trie4j.Node in project trie4j by takawitter.

the class TailLOUDSTrieWithSuffixTrieTailArrayWikipediaTest method afterVerification.

@Override
protected void afterVerification(Trie trie) throws Exception {
    TailLOUDSTrie t = (TailLOUDSTrie) trie;
    final Map<Integer, List<Integer>> childrenCounts = new TreeMap<Integer, List<Integer>>(new Comparator<Integer>() {

        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    });
    Algorithms.traverseByBreadth(t.getRoot(), new NodeVisitor() {

        @Override
        public boolean visit(Node node, int nest) {
            int n = node.getChildren().length;
            List<Integer> nodes = childrenCounts.get(n);
            if (nodes == null) {
                nodes = new ArrayList<Integer>();
                childrenCounts.put(n, nodes);
            }
            nodes.add(c++);
            return c < 6189;
        }

        int c = 0;
    });
    for (Map.Entry<Integer, List<Integer>> entry : childrenCounts.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
}
Also used : Node(org.trie4j.Node) ArrayList(java.util.ArrayList) TreeMap(java.util.TreeMap) NodeVisitor(org.trie4j.NodeVisitor) ArrayList(java.util.ArrayList) List(java.util.List) TreeMap(java.util.TreeMap) Map(java.util.Map)

Example 17 with Node

use of org.trie4j.Node in project trie4j by takawitter.

the class MapPatriciaTrieWikipediaTest method afterVerification.

@Override
protected void afterVerification(Trie trie) throws Exception {
    final AtomicInteger nodes = new AtomicInteger();
    final AtomicInteger leaves = new AtomicInteger();
    Algorithms.traverseByDepth(trie.getRoot(), new NodeVisitor() {

        @Override
        public boolean visit(Node node, int nest) {
            if (node.isTerminate())
                leaves.incrementAndGet();
            else
                nodes.incrementAndGet();
            return true;
        }
    });
    System.out.println(String.format("%d nodes and %d leaves", nodes.intValue(), leaves.intValue()));
    super.afterVerification(trie);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Node(org.trie4j.Node) NodeVisitor(org.trie4j.NodeVisitor)

Example 18 with Node

use of org.trie4j.Node in project trie4j by takawitter.

the class MapTailPatriciaTrieWithSuffixTrieTailBuilderWikipediaTest method afterVerification.

@Override
protected void afterVerification(Trie trie) throws Exception {
    final AtomicInteger nodes = new AtomicInteger();
    final AtomicInteger leaves = new AtomicInteger();
    Algorithms.traverseByDepth(trie.getRoot(), new NodeVisitor() {

        @Override
        public boolean visit(Node node, int nest) {
            if (node.isTerminate())
                leaves.incrementAndGet();
            else
                nodes.incrementAndGet();
            return true;
        }
    });
    System.out.println(String.format("%d nodes and %d leaves", nodes.intValue(), leaves.intValue()));
    super.afterVerification(trie);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Node(org.trie4j.Node) NodeVisitor(org.trie4j.NodeVisitor)

Example 19 with Node

use of org.trie4j.Node in project trie4j by takawitter.

the class PatriciaTrieWikipediaTest method afterVerification.

@Override
protected void afterVerification(Trie trie) throws Exception {
    final AtomicInteger nodes = new AtomicInteger();
    final AtomicInteger leaves = new AtomicInteger();
    Algorithms.traverseByDepth(trie.getRoot(), new NodeVisitor() {

        @Override
        public boolean visit(Node node, int nest) {
            if (node.isTerminate())
                leaves.incrementAndGet();
            else
                nodes.incrementAndGet();
            return true;
        }
    });
    System.out.println(String.format("%d nodes and %d leaves", nodes.intValue(), leaves.intValue()));
    super.afterVerification(trie);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Node(org.trie4j.Node) NodeVisitor(org.trie4j.NodeVisitor)

Example 20 with Node

use of org.trie4j.Node in project trie4j by takawitter.

the class BitVectorExp method main.

public static void main(String[] args) throws Exception {
    Trie trie = new PatriciaTrie();
    int c = 0;
    // You can download archive from http://dumps.wikimedia.org/jawiki/latest/
    LapTimer t = new LapTimer();
    for (String word : new WikipediaTitles()) {
        trie.insert(word);
        c++;
        if (c == maxCount)
            break;
    }
    t.lapMillis("trie building done. %d words.", c);
    final BytesSuccinctBitVector bv = new BytesSuccinctBitVector(5000000);
    final AtomicInteger nodeCount = new AtomicInteger();
    Algorithms.traverseByDepth(trie.getRoot(), new NodeVisitor() {

        @Override
        public boolean visit(Node node, int nest) {
            Node[] children = node.getChildren();
            if (children != null) {
                int n = node.getChildren().length;
                for (int i = 0; i < n; i++) {
                    bv.append(true);
                }
            }
            bv.append(false);
            nodeCount.incrementAndGet();
            return true;
        }
    });
    trie = null;
    t.lapMillis("done. %d nodes inserted. do rank and select", nodeCount.intValue());
    for (int i = 0; i < c; i += 100) {
        int count = bv.rank(i, true);
        bv.select(count, true);
    }
    t.lapMillis("done.");
    Thread.sleep(10000);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) PatriciaTrie(org.trie4j.patricia.PatriciaTrie) Node(org.trie4j.Node) BytesSuccinctBitVector(org.trie4j.bv.BytesSuccinctBitVector) WikipediaTitles(org.trie4j.test.WikipediaTitles) Trie(org.trie4j.Trie) PatriciaTrie(org.trie4j.patricia.PatriciaTrie) LapTimer(org.trie4j.test.LapTimer) NodeVisitor(org.trie4j.NodeVisitor)

Aggregations

Node (org.trie4j.Node)31 Test (org.junit.Test)15 AbstractTermIdTrieTest (org.trie4j.AbstractTermIdTrieTest)13 Trie (org.trie4j.Trie)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)9 ByteArrayInputStream (java.io.ByteArrayInputStream)8 ByteArrayOutputStream (java.io.ByteArrayOutputStream)8 ObjectInputStream (java.io.ObjectInputStream)8 ObjectOutputStream (java.io.ObjectOutputStream)8 NodeVisitor (org.trie4j.NodeVisitor)8 PatriciaTrie (org.trie4j.patricia.PatriciaTrie)6 LinkedList (java.util.LinkedList)3 PrintWriter (java.io.PrintWriter)2 ArrayList (java.util.ArrayList)2 AbstractImmutableTrieTest (org.trie4j.AbstractImmutableTrieTest)2 LapTimer (org.trie4j.test.LapTimer)2 WikipediaTitles (org.trie4j.test.WikipediaTitles)2 Pair (org.trie4j.util.Pair)2 OutputStreamWriter (java.io.OutputStreamWriter)1 HashMap (java.util.HashMap)1