この正規表現マッチングの問題の複雑さは気になります。小文字の文字列とマッチング ルールが与えられた場合、そのルールが文字列全体と一致するかどうかを判断します。ルールは、小文字および/または「.」のみを含む簡略化された正規表現です。(ピリオド) および/または '*' (アスタリスク)。ピリオドは任意の小文字と一致し、アスタリスクは先行する要素の 0 個以上と一致する可能性があります。
ここではいくつかの例を示します。
- isMatch("aa","a") は false
- isMatch("aa","aa") は true
- isMatch("aaa","aa") は false
- isMatch("aa", "a*") は true
- isMatch("aa", ".*") は true
- isMatch("ab", ".*") は true
- isMatch("aab", "c*a*b") は true
この問題は多項式時間で解けると言われています。どうやって?直観的に、「aaaaaaaaaa」を「.*a.*」のような正規表現に一致させると、有限決定論的機械と一致したときに状態遷移を決定するのが難しくなります。コメントはありますか?
ありがとうございました。