资源简介
从别的共享资源下载的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\me
文件 739 2014-05-30 09:04 ahocorasick_java-1.1\ahocorasick\target\classes\me
文件 109 2014-05-30 09:04 ahocorasick_java-1.1\ahocorasick\target\classes\me
文件 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.xm
文件 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个文件信息
相关资源
- java 采用ssl的socket交互
- 编程模拟多进程共享临界资源最终版
- HDU题目java实现
- java socket异步长连接demo
- websocket demojava客户端,心跳监测
- Java+servlet+jsp页面ajax请求
- robocode_API中文参考(java).pdf
- 自己做的java通讯软件小程序
- 基于JAVA的动态八皇后游戏互动
- 利用Ptrace在Android平台实现应用程序控
- Ngram分词程序
- java-client-5.0.0-BETA7.jar
- java虚拟机调优(马士兵)-课程程序
- R树的java版本实现
- java通过socket编写小型聊天室
- 转换代码vox转wav的java代码
- 操作系统文件管理课程设计JAVA版
- DSS数字签名标准Java实现
- DH密钥交换算法Java实现
- java弹球程序弹球程序
- JAVA学生选课系统jsp源代码
- 会员管理系统Java程序源码
- java写的家庭理财工具
- Java工程师面试突击第1季可能是史上最
- java DHT爬虫 重构并加了注释 修复了一
- java DHT爬虫 重构并加了完整的注释 修
- java DHT爬虫
- JavaEE项目案例源码
- Java开发的游戏 贪吃蛇 完整源代码
- JAVA简版图书馆管理程序
评论
共有 条评论