• 大小: 144KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: Java
  • 标签: ac  自动机  java  算法  

资源简介

从别的共享资源下载的java版ac自动机,已验证使用非常好。

资源截图

代码片段和文件信息

package org.arabidopsis.ahocorasick;

import java.util.Iterator;


/**
   

An implementation of the Aho-Corasick string searching
   automaton.  This implementation of the    href=“http://portal.acm.org/citation.cfm?id=360855&dl=ACM&coll=GUIDE“
   target=“_blank“>Aho-Corasick algorithm is optimized to work
   with bytes.



   


   Example usage:
   


       AhoCorasick tree = new AhoCorasick();
       tree.add(“hello“.getBytes() “hello“);
       tree.add(“world“.getBytes() “world“);
       tree.prepare();

       Iterator searcher = tree.search(“hello world“.getBytes());
       while (searcher.hasNext()) {
           SearchResult result = searcher.next();
           System.out.println(result.getOutputs());
           System.out.println(“Found at index: “ + result.getLastIndex());
       }
   

   



   

Recent changes


   


       
  • Per user request from Carsten Kruege I‘ve
       changed the signature of State.getOutputs() and
       SearchResults.getOutputs() to Sets rather than Lists.
       


  •    

 */
public class AhoCorasick {
    private State root;
    private boolean prepared;

    public AhoCorasick() {
this.root = new State(0);
this.prepared = false;
    }



    /**
       Adds a new keyword with the given output.  During search if
       the keyword is matched output will be one of the yielded
       elements in SearchResults.getOutputs().
     */
    public void add(byte[] keyword object output) {
if (this.prepared)
    throw new IllegalStateException
(“can‘t add keywords after prepare() is called“);
State lastState = this.root.extendAll(keyword);
lastState.addOutput(output);
    }



    /**
       Prepares the automaton for searching.  This must be called
       before any searching().
     */
    public void prepare() {
this.prepareFailTransitions();
this.prepared = true;
    }




    /**
       Starts a new search and returns an Iterator of SearchResults.
     */
    public Iterator search(byte[] bytes) {
return new Searcher(this this.startSearch(bytes));
    }








    /** DANGER DANGER: dense algorithm code ahead.  Very order
dependent.  Initializes the fail transitions of all states
except for the root.
    */
    private void prepareFailTransitions() {
Queue q = new Queue();
for(int i = 0; i < 256; i++)
    if (this.root.get((byte) i) != null) {
this.root.get((byte) i).setFail(this.root);
q.add(this.root.get((byte) i));
    }
this.prepareRoot();
while (! q.isEmpty()) {
    State state = q.pop();
    byte[] keys = state.keys();
    for (int i = 0; i < keys.length; i++) {
State r = state;
byte a = keys[i];
State s = r.get(a);
q.add(s);
r = r.getFail();
while (r.get(a) == null)
    r = r.getFail();
s.setFail(r.get(a));
s.getOutputs().addAll(r.get(a).getOutputs());
    }
}
    }


    /** Sets all the out transitions of the root to itself if no
transition yet exists at this point.
    */
    private void prepareRoot() {
for(i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        103  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\maven-archiver\pom.properties

     文件      11072  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\ac-1.0.0.jar

     文件        244  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\meta-INF\maven\com.geo.dcp\ac\pom.properties

     文件        739  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\meta-INF\maven\com.geo.dcp\ac\pom.xml

     文件        109  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\meta-INF\MANIFEST.MF

     文件       1243  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\Searcher.class

     文件       1380  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\SparseEdgeList.class

     文件       1622  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\DenseEdgeList.class

     文件        258  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\EdgeList.class

     文件       2422  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\State.class

     文件       1435  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\Queue.class

     文件        803  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\SearchResult.class

     文件        682  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\SparseEdgeList$Cons.class

     文件       3477  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\target\classes\org\arabidopsis\ahocorasick\AhoCorasick.class

     文件       1025  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\.classpath

     文件        563  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\.project

     文件       1190  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\DenseEdgeList.java

     文件        197  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\EdgeList.java

     文件       2174  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\State.java

     文件        695  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\Queue.java

     文件        900  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\SearchResult.java

     文件       4154  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\AhoCorasick.java

     文件        732  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\Searcher.java

     文件        922  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\src\main\java\org\arabidopsis\ahocorasick\SparseEdgeList.java

     文件        430  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\.settings\org.eclipse.jdt.core.prefs

     文件         90  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\.settings\org.eclipse.m2e.core.prefs

     文件        119  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\.settings\org.eclipse.core.resources.prefs

     文件        739  2014-05-30 09:04  ahocorasick_java-1.1\ahocorasick\pom.xml

     文件       1511  2014-05-30 09:04  ahocorasick_java-1.1\LICENSE

     文件     121070  2014-05-30 09:04  ahocorasick_java-1.1\lib\junit.jar

............此处省略47个文件信息

评论

共有 条评论