我正在尝试实现TEIRESIAS算法,正如Rigoutsos和Floratos在1997年所描述的那样。该算法的第一步是要找到遵循两个条件的重要模式。我认为使用正则表达式应该可以实现,但是我找不到适合我需要的函数,因此我需要一些帮助。
该算法使用3个输入参数:L,W和K。W表示要找到的图案的长度,L表示该长度内的位数必须是实际字符。 K表示图案应出现的最小次数。听起来似乎有些含糊,但通过示例可能会更清楚。
示例:
L = 3,W = 4,K = 3
S = {s 1 =“ SDFBASTS”,s 2 =“ LFCASTS”,s 3 =“ FDASTSNP”} >
此输入应产生5个满足条件L,W和K的模式:
“ F.AS”,“ AST”,“ AS.S”,“ STS”,“ A.TS”
其中两个模式的长度仅为3,但是可以通过在前面或结尾添加“请勿打扰”字符来将其长度设置为4。
所以我要输入以下内容:
L <- 3
W <- 4
K <- 3
s1 <- "SDFBASTS"
s2 <- "LFCASTS"
s3 <- "FDASTSNP"
S <- c(s1, s2, s3)
生成模式P的集合:
> print(P)
[1] "F.AS" "AST" "AS.S" "STS" "A.TS"