rmuir commented on issue #13706:
URL: https://github.com/apache/lucene/issues/13706#issuecomment-2324856962
This is just what i'm mulling over now, relaxing `isTotal` to no longer
require a minimal DFA:
```
diff --git
a/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java
b/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java
index 2052b1c50bf..0de4ac013ee 100644
--- a/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java
+++ b/lucene/core/src/java/org/apache/lucene/util/automaton/Operations.java
@@ -864,15 +864,22 @@ public final class Operations {
/**
* Returns true if the given automaton accepts all strings for the
specified min/max range of the
- * alphabet. The automaton must be minimized.
+ * alphabet. The automaton must be deterministic with no transitions to
dead states.
*/
public static boolean isTotal(Automaton a, int minAlphabet, int
maxAlphabet) {
- if (a.isAccept(0) && a.getNumTransitions(0) == 1) {
+ // minimal case
+ if (a.getNumState() == 0 && a.isAccept(0) && a.getNumTransitions(0) ==
1) {
Transition t = new Transition();
a.getTransition(0, 0, t);
return t.dest == 0 && t.min == minAlphabet && t.max == maxAlphabet;
}
- return false;
+ // deterministic case
+ Automaton a2 = new Automaton();
+ int s = a2.createState();
+ a2.setAccept(s, true);
+ a2.addTransition(s, s, minAlphabet, maxAlphabet);
+ a2.finishState();
+ return sameLanguage(a, a2);
}
/**
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]