Ich brauche eine Bibliothek, die zwei reguläre Ausdrücke aufnimmt und bestimmt, ob sie isomorph sind (dh genau denselben Satz von Strings abgleichen oder nicht). Zum Beispiel ist a|b isomorph zu [ab]
So wie ich es verstehe, kann ein regulärer Ausdruck in einen NFA konvertiert werden, der in einigen Fällen effizient in einen DFA konvertiert werden kann. Der DFA kann dann in einen minimalen DFA umgewandelt werden, der, wenn ich es richtig verstehe, einzigartig ist, und daher können diese minimalen DFAs dann auf Gleichheit verglichen werden. Mir ist klar, dass nicht alle NFAs mit regulären Ausdrücken effizient in DFAs umgewandelt werden können (insbesondere wenn sie aus Perl Regexps generiert wurden, die nicht wirklich “regulär” sind). In diesem Fall würde die Bibliothek idealerweise nur einen Fehler oder einen anderen Hinweis darauf zurückgeben, dass die Konvertierung ist nicht möglich.
Ich sehe online unzählige Artikel und wissenschaftliche Arbeiten darüber (und sogar einige Programmieraufgaben für Klassen, in denen die Schüler dazu aufgefordert werden), aber ich kann anscheinend keine Bibliothek finden, die diese Funktionalität implementiert. Ich würde eine Python- und/oder C/C++-Bibliothek bevorzugen, aber eine Bibliothek in einer beliebigen Sprache reicht aus. Weiß jemand, ob eine solche Bibliothek? Wenn nicht, kennt jemand eine nahe gelegene Bibliothek, die ich als Ausgangspunkt verwenden kann?
Nein. Es ist Teil eines Forschungsprojekts. Aber das ist nicht der Kern des Projekts, also würde ich lieber nicht die Zeit damit verbringen, meine eigene zu rollen, wenn ich nicht muss.
– Benutzer1255384
7. März 2012 um 18:37 Uhr
Ich habe nur Spaß gemacht. Das ist eine sehr gute Frage. Also +1.
– Benutzer405725
7. März 2012 um 18:43 Uhr
Tatsächlich sollten die minimalen DFAs nicht direkt auf Gleichheit verglichen werden, aber sie können auf Graphisomorphie verglichen werden, um die Äquivalenz zu bestimmen.
– Fred Foo
7. März 2012 um 21:05 Uhr