Regex 正则表达式纵横字谜解算器

Regex 正则表达式纵横字谜解算器,regex,string,algorithm,performance,time-complexity,Regex,String,Algorithm,Performance,Time Complexity,接下来,我们假设查找与正则表达式匹配的字符串需要线性时间。我的建议是我们也可以通过编程来解决正则表达式的纵横字谜,对吗 如果是,解决NxM正则表达式纵横字谜的时间复杂度是多少 例如: 这是NP难,即使你不允许反向引用。有一个简单的映射,从这个问题 如果您有集合S[1]、S[2]、…、S[n](具有并集S),并且没有失去一般性,集合包含一些n的所有数字1…n。将S[i]表示为长度为n的字符串,如果k位于S[i],则1位于第k位,否则表示0。 让regexp拼图的列都相同--0*10*,第k行是“(

接下来,我们假设查找与正则表达式匹配的字符串需要线性时间。我的建议是我们也可以通过编程来解决正则表达式的纵横字谜,对吗

如果是,解决NxM正则表达式纵横字谜的时间复杂度是多少

例如:


这是NP难,即使你不允许反向引用。有一个简单的映射,从这个问题

如果您有集合
S[1]、S[2]、…、S[n]
(具有并集
S
),并且没有失去一般性,集合包含一些n的所有数字1…n。将
S[i]
表示为长度为n的字符串,如果k位于
S[i]
,则
1
位于第k位,否则表示
0
。 让regexp拼图的列都相同--
0*10*
,第k行是“(S[k])|(0*)”

例如,如果
S[1]={1,4},S[2]={2},S[3]={3}
S[4]={2,3}
,那么谜题将是:

         0*10*  0*10*  0*10*  0*10*
1001|0*
0100|0*
0010|0*
0110|0*

这个regexp难题的一个解决方案是使用
S[i]

“即使您不允许反向引用。”精确覆盖{1,2,3,4}。您的意思是什么?您在问题中的示例有
\1
\2
,它们不是正则表达式的一部分,尽管有些实现允许它们。通常,确定具有反向引用的regexp是否与字符串匹配需要指数时间。