String 构建长度为L的字符串,其中正好包含N个回文

String 构建长度为L的字符串,其中正好包含N个回文,string,algorithm,palindrome,String,Algorithm,Palindrome,给定一个字符串的长度L和N-回文数,构建一个包含N个回文子字符串的字符串。比如说, L = 4 N = 2 S = 'aabb' or 'abba' L = 4 N = 3,4,5 S = impossible L = 4 N = 6 S = 'aaaa' (palindromes are substrings S[0:2], S[2:4], S[1:3], S[0:3], S[1:4], S[0:4]) 更新:所有目标回文的长度应大于1您可以为字符串s中的每个字符引入一个变量s_i={0

给定一个字符串的长度L和N-回文数,构建一个包含N个回文子字符串的字符串。比如说,

L = 4
N = 2
S = 'aabb' or 'abba'

L = 4
N = 3,4,5
S = impossible

L = 4
N = 6
S = 'aaaa' (palindromes are substrings S[0:2], S[2:4], S[1:3], S[0:3], S[1:4], S[0:4])

更新:所有目标回文的长度应大于1

您可以为字符串s中的每个字符引入一个变量s_i={0,1},那么如果子字符串s[a..b]是回文,则必须是这样的

(s_a = s_b) and (s_{a+1} = s_{b-1}) and ... 
因此,对于每个子字符串,都有一个子句,并且必须满足其中的N。这将问题归结为可满足性

我还想知道,您是否可以将其作为优化问题来解决: 对于每个子串,引入一个变量x_i=
{0,1}
,表示子串编号
i
是回文(设为S[a..b])。然后为该子字符串的子句引入一个变量y_i

(s_a-s_b)^2 + (s_{a+1}-s_{b-1})^2 +  ... 
然后您需要满足
\sum{x\u i}=N
并最小化
\sum{x\u i*y\u i}
。显然,如果存在解且目标始终为非负,则最小值为0

编辑
优化的想法似乎是错误的,因为您需要强制执行,如果
y_i=0
,那么它必须是
x_i=0
,但是满足性公式应该有效您可以为字符串s中的每个字符引入变量s_i={0,1},然后如果子字符串s[a..b]是回文,一定是这样

(s_a = s_b) and (s_{a+1} = s_{b-1}) and ... 
因此,对于每个子字符串,都有一个子句,并且必须满足其中的N。这将问题归结为可满足性

我还想知道,您是否可以将其作为优化问题来解决: 对于每个子串,引入一个变量x_i=
{0,1}
,表示子串编号
i
是回文(设为S[a..b])。然后为该子字符串的子句引入一个变量y_i

(s_a-s_b)^2 + (s_{a+1}-s_{b-1})^2 +  ... 
然后您需要满足
\sum{x\u i}=N
并最小化
\sum{x\u i*y\u i}
。显然,如果存在解且目标始终为非负,则最小值为0

编辑
优化的想法似乎是错误的,因为你需要强制执行,如果
y_i=0
,那么它必须是
x_i=0
,但满意度公式应该有效

问题是什么?听起来这可能是一个有趣的挑战,但我不确定问题是什么。到目前为止,您尝试了什么?字母表是否仅限于
{a,b}
?如果不是,那么对于N=4和L=4有一个解决方案。你的任务不清楚。是否需要搜索唯一回文?aabb有以下回文:“a”、“b”、“aa”、“bb”(再加上一次“a”、“b”)S='abab'(回文是
aba
bab
abab
)。“abab”不是回文。问题是什么?听起来可能是一个有趣的挑战,但我不确定问题是什么。到目前为止,您尝试了什么?字母表是否仅限于
{a,b}
?如果不是,那么对于N=4和L=4有一个解决方案。你的任务不清楚。是否需要搜索唯一回文?aabb有以下回文:“a”、“b”、“aa”、“bb”(再加上一次“a”、“b”)S='abab'(回文是
aba
bab
abab
)。“abab”不是回文。