資源簡介
從別的共享資源下載的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? 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個文件信息
評論
共有 條評論