私はN個の文字列を持っています。 また、私に知られていないK個の正規表現があります。各文字列は、正規表現のいずれかと一致するか、またはガベージです。セットにはL個のガベージ文字列があります。 KとLの両方は不明です。自動正規表現ビルダ
正規表現を推論したいと思います。明らかに、この問題には無限の数の解があります。私は正規表現の "詳細" を最大化)L
3を最小限に抑える)K
2を最小限に抑える)が
1、 "合理的に良い解決策" を見つける必要があります。私はこの品質にとって正しい言葉が何であるか分かりません。たとえば、文字列 "ab123"は/ ab \ d + /または/\ w+.+/と記述できますが、最初の正規表現はより特定的です。
すべての3つの要件は、特定の合理的な重みを付けて、1つの複合基準として扱う必要があります。
L = 0、K = 1の場合(正規表現は1つで、ごみはありません)、文字列に対してLCS(最長共通部分シーケンス)を見つけ、対応する正規表現そこから。しかし、 "ノイズ"(L> 0)がある場合、この方法は機能しません。
すべてのアイデア(または既存の作品へのポインタ)を高く評価します。
情報は何を与えていますか?ちょうどN弦ですか?正規表現はすでに決定されていますが、あなたから隠されていますか?あなたは簡単に "|"でそれらを結合することによって、文字列の特定のセットに一致する正規表現を生成することができます。 –
:)これは不正行為になります。私はこの種の解決策を防ぐために別の基準が必要だと思う...正規表現のlenthを制限する、そうだ。 –
あなたの条件#3は、指定されたN個の文字列のセットにない一致する文字列の数を最小限に抑えるものとして記述することができます。最小化する3つのことがあるとすれば(L = 0が必要な場合もありますが)、より重要な要素を重み付けする必要があります。 – user57368