文書があれば、その文書にある単語だけを受け入れるNFAを生成できるようにしたい。 基本的には、どのドキュメントからでもNFAを動的に生成できる関数を作成したいと考えています。 既存のアルゴリズムがありますか?ファイルに存在する単語だけを受け入れるNFAを生成する方法をファイルに指定しますか?
1
A
答えて
0
必要なものがすべてNFAであれば、構成はほとんど自明です。
各単語wに対して、| w |を使用してNFAに異なる分岐を作成します。 + 1状態(初期状態を含まない)。開始状態から、最初の状態に空の遷移を追加し、w番目のn番目の状態のn番目の状態からn + 1番目の状態への遷移を追加します。 | w | + 1番目の状態を受け入れます。
これは、シンボル+単語がファイル内にある状態と同数の状態のDFAを提供します。状態の数を減らしたい場合は、すべての単語の最初の文字の最初の「レイヤー」、すべての単語の2番目のすべての文字の2番目の「レイヤー」などを作成し、レイヤーの状態からのトランジションを追加することで、遷移を有効にするワードwがある場合には、層n + 1の状態にnを加える。実際、あなたがこれを正しく行うならば、DFAで終わるでしょうし、それはおそらく最小限になるでしょう(練習:これを証明するか、それとも反証するか)。
関連する問題
- 1. ファイルを受け入れてクラウドストレージに保存する方法
- 2. 指定された数の単語だけを返します
- 3. 言語を受け入れるプッシュダウンオートマトンを作成するには?
- 4. Python - 複数のファイルを受け入れてループする方法
- 5. AndroidアプリケーションでBluetooth受信ファイルを受け入れる方法は?
- 6. 設定方法NumberTextBoxはdojoの数字だけを受け入れますか?
- 7. Liquibase:changelog.xmlのファイルが存在する場合、 "ファイルが存在しません"例外を受け取ります。
- 8. ファイル内の単語を二重に見つける方法
- 9. quantregパッケージ:predict.rqは単一のタウだけを受け入れる
- 10. 受け入れ言語のフォールバックを処理する方法は?
- 11. FasterCSV:ファイルを受け入れる前にファイルが無効であるかどうかを確認します。これは簡単な方法ですか?
- 12. ラジオボタンで入力ファイルの「受け入れる」値を変更する方法
- 13. 現在のユーザーがカレンダーイベントを受け入れるか拒否するかを簡単に見つける
- 14. C++でユーザーの入力に「y」または「n」だけを受け入れる方法はありますか?
- 15. nullを受け入れるカラムを設定する方法
- 16. GUIだけでJmeterでHTMLファイルを生成するには?
- 17. ファイルから最後の単語だけを読み取るFscanf
- 18. なぜfputs()はファイル内に単語を1つだけ追加しますか?
- 19. 1つのNFAが受け入れる言語が、別のNFAが受け入れる言語のスーパーセットであるかどうかを判断する効率的なアルゴリズムはありますか?
- 20. Excelファイルを入力として受け入れるコード生成ツールはありますか?
- 21. ファイルを受け入れる:namesOfPromisedFilesDroppedAtDestinationはFinderウィンドウを開きます
- 22. hypernator.js:オーバーフローした単語だけをハイフネーションする方法はありますか?
- 23. 特定のブランチからのマージだけを受け入れるようにTFSを設定できますか?
- 24. サーブレット - zipファイルを受け取る方法
- 25. Pythonプログラムを作成するドラッグされたファイルを受け入れるアイコン
- 26. JAVAによる単語ファイルのページ番号付け方法
- 27. Pandas read_csv存在しない列名を受け入れるユースケース
- 28. POSTデータを受け入れるJSONファイルですか?
- 29. 入力を受け入れてプロローグに格納する方法
- 30. 入力フィールドをjQueryで数字だけを受け入れるように設定します。
名前にもかかわらず、ほとんどの正規表現エンジンは現在NFAです。例えば、Pythonでは '\ b(word1 | word2 | word3)\ b'を使って単語のリストを照合することができます。 – justhalf