子集的排列和随后的运行时分析
我有 2 个问题:
我想生成子集的排列,例如有 20 种可能的氨基酸和它们可能出现的 5 个位置。可能发生的总排列是什么(在文本中)
一旦我有了这个排列列表,某些值将被分配给每个排列,我想在运行时查找任何给定的排列。我想到的第一个想法是查找表,但我想知道是否有更好的方法来做到这一点。
I have 2 questions:
I would like to generate the permutations of subsets e.g. There are 20 possible amino acids and 5 positions where they can occur. What are the total permutations that can occur (in text)
Once I have this list of permutations certain values will be assinged to each one and I would like to look up any given permutation at run time. The first idea that comes to mind is a look-up table, but I was wondering if there might be a better way of doing this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要长度为 5 的组合,而不是排列。这是一个标准问题,可以用递归来解决。如果您不想自己编写,请使用
CombinationGenerator
。< /p>使用碱基 20 对组合进行编号(不要与碱基的化学定义混淆)。如果您要存储有限子集的组合数据,请使用哈希表;如果您要存储大多数组合的数据,请使用查找数组。
You want combinations of length 5, not permutations. This is a standard problem, which can be solved with recursion. Use
CombinationGenerator
if you don't want to write it yourself.Number the combinations using base 20 (not to be confused with the chemical definition of base). Use a hashtable if you'll be storing data for a limited subset of combinations, or a look-up array if you'll be most of them.