生物信息学模式匹配的挑战性字符串算法

时间:2012-01-08 19:04:28

标签: algorithm

朋友告诉我以下挑战问题。

{A, T, G, C}作为我们的字母表,我们希望通过以下递归模式定义知道具有指定长度n的有效短语数

  • pat=pat1pat2,即将两个模式连接在一起以形成新模式pat
  • pat=(pat1|pat2),即选择其中一种模式pat1pat2以形成新模式pat
  • pat=(pat1*),即重复模式pat1任意次数(可以为0)以形成新模式pat

如果可以通过上述模式定义形成,则由字母集{A, T, G, C}形成的短语被认为满足模式;它的长度是字母数。

一些例子:

  • 给定模式((A|T|G)*)n=2,有效短语的数量 是9,因为有AAATAGTATTTGGA,{{ 1}}, GT
  • 给定模式GG(((A|T)*)|((G|C)*)),有效短语的数量 是8,因为有n=2AAATTATTGGGC,{{ 1}}。
  • 给定模式CGCC,有效短语的数量 是3,因为有((A*)C(G*))n=3AAC

如果你曾经见过这个问题以及你的想法,请指出这个问题的根源。

1 个答案:

答案 0 :(得分:0)

字母A,C,G和T的选择让我想到DNA碱基对序列。但正如thiton所写,显然这个问题已从常规语言研究中解脱出来。谷歌“常规语言枚举”,你应该找到大量的研究论文和代码,以帮助你入门。如果为这些模式计算匹配字符串的数量不是#P-complete问题,我会感到惊讶,所以期望n中的运行时指数。