文字列を渡すときに "yes"または "no"を返すリモートの "エージェント"があります。このエージェントとのやりとりは高価なので、正のフィードバックと負のフィードバックを与えられた反復的な正規表現を構築し、その構築について知的であるライブラリを見つけることを望んでいます。これにより、送信側で回答をキャッシュすることができます。入力から最小正規表現を派生させる
たとえば、エージェントを「good」でクエリし、「yes」を受信したとします。最初に派生した正規表現は「良い」ものでなければなりません。
私は "goop"で質問し、 "yes"を受け取るとします。私は、得られた正規表現が "良い| goop"ではなく "goo [dp]"であると期待します。
など。
派生正規表現でバックトラッキングなどの非線形時間演算を行う必要はありません。おそらく、生成された正規表現はDFAの下にあるでしょう。誰もがこれを行うことができる任意のc/c + +の正規表現ライブラリを認識していますか?代わりに、これが愚かなアイデアであり、私の本当の問題に対するより良い解決策である理由もまた有用であろう。
この質問を単純化できますか?「与えられた文字列のセットに一致する最小正規表現を見つける方法」 –
@Kerrek:私はおおよそだと思いますが、新しい文字列を追加して段階的に構築するのが効率的であることが望ましいと思われます。 –
@Rこれは正しいです。バッチモデルの代わりに新しい文字列を追加することが重要です。 – tgoodhart