资源简介
从别的共享资源下载的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源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- ehcache-core-2.5.1.jar
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
评论
共有 条评论