Javascript 用汉明距离d生成长度为l的字符串

Javascript 用汉明距离d生成长度为l的字符串,javascript,Javascript,我正在研究Motif搜索问题的一个变体,在其中一个子部分的逻辑上遇到了障碍 问题是: 你有字母表-['A','C','G','T'] 现在,给你一个由这些字母组成的字符串数组,长度为L,距离为D 例如,如果我们取L=3,d=2,并给出数组[ACT,TGC,GTA] 对于数组中的每个字符串,我们必须使用汉明距离为d的字母表生成长度相同的字符串3。汉明距离d意味着,与原始字符串相比,如果d=2,则最终字符串将只有两个d编辑 因此,如果我们以数组中的ACT为例,我们必须生成GTT、AAG、CGT等等。

我正在研究Motif搜索问题的一个变体,在其中一个子部分的逻辑上遇到了障碍

问题是:

你有字母表-['A','C','G','T']

现在,给你一个由这些字母组成的字符串数组,长度为L,距离为D

例如,如果我们取L=3,d=2,并给出数组[ACT,TGC,GTA]

对于数组中的每个字符串,我们必须使用汉明距离为d的字母表生成长度相同的字符串3。汉明距离d意味着,与原始字符串相比,如果d=2,则最终字符串将只有两个d编辑

因此,如果我们以数组中的ACT为例,我们必须生成GTT、AAG、CGT等等。 我想将这些生成的字符串存储在一个列表中

分解字符串的递归函数似乎是最有效的方法,但我在实现它时遇到了困难。关于用代码/伪代码解释的逻辑有什么想法吗?我需要能够把这个问题推广到L=15和d=5

汉明距离d=1的示例


这可以让你开始。它不处理创建长度与源不同的字符串。也许你可以补充一下

JavaScript代码:

函数falpabet,str,前缀,i,d{ 如果d==0 返回[prefix+str.substri]; 让单词=[]; 对于设j=0;jd 单词=words.concat falphabet,str,前缀+str[i],i+1,d 返回单词; } 常量字母表=['A','C','G','T']; const strs=[ACT、TGC、GTA]; 关于strs的let-str{ console.logstr; console.logJSON.stringifyfalphabet,str,0,2; console.log;
} 这可以让你开始。它不处理创建长度与源不同的字符串。也许你可以补充一下

JavaScript代码:

函数falpabet,str,前缀,i,d{ 如果d==0 返回[prefix+str.substri]; 让单词=[]; 对于设j=0;jd 单词=words.concat falphabet,str,前缀+str[i],i+1,d 返回单词; } 常量字母表=['A','C','G','T']; const strs=[ACT、TGC、GTA]; 关于strs的let-str{ console.logstr; console.logJSON.stringifyfalphabet,str,0,2; console.log;
} 您可以应用以下类比来解决此问题:如果您必须同时更改两个符号和长度为15的子字符串。首先,将两个索引的所有组合制作成一组,范围从0到14。在python中,可以使用itertool函数来实现这一点。第二,根据所选符号创建两个符号的所有组合,本例中为gatc。接下来,迭代每个索引组合i:一组介于0-14之间的两个数字,并以嵌套方式迭代符号组合j:一组两个符号。在迭代中,如果与我选择的索引相对应的任何字符都不等同于对应符号j的组合,那么我们可以用j替换这些索引。这样,就可以获得字符串的所有邻居。此算法的时间复杂度为On


您可以应用以下类比来解决此问题:如果您必须同时更改两个符号和长度为15的子字符串。首先,将两个索引的所有组合制作成一组,范围从0到14。在python中,可以使用itertool函数来实现这一点。第二,根据所选符号创建两个符号的所有组合,本例中为gatc。接下来,迭代每个索引组合i:一组介于0-14之间的两个数字,并以嵌套方式迭代符号组合j:一组两个符号。在迭代中,如果与我选择的索引相对应的任何字符都不等同于对应符号j的组合,那么我们可以用j替换这些索引。这样,就可以获得字符串的所有邻居。此算法的时间复杂度为On

Python函数从特定字符串生成距离为d的汉明字符串

函数生成具有汉明距离d的字符串 def gen_ham_stringsalphabets,string,前缀,i,d: 基本情况 如果d==0: 返回[前缀+字符串[i:] 单词=[] 对于字母表中的j: 如果字母[j]!=字符串[i]: 单词+=gen_ham_stringsalphabets,string,前缀+字母[j],i+1,d-1 如果lenstring-i>d: 单词+=gen_ham_stringsalphabets,string,前缀+string[i],i+1,d 回话 Python函数从特定字符串生成距离为d的汉明字符串

函数生成具有汉明距离d的字符串 def gen_ham_stringsalphabets,string,前缀,i,d: 基本情况 如果d==0: 返回[前缀+字符串[i:] 单词=[] 对于字母表中的j: 如果字母[j]!=字符串[i]: words+=gen_ha m_stringsalphabets,string,前缀+字母[j],i+1,d-1 如果lenstring-i>d: 单词+=gen_ham_stringsalphabets,string,前缀+string[i],i+1,d 回话
Python代码即将发布…Python代码即将发布。。。。