说我试图生成[21 2 0 34 0 0 0 1]
的置换,它将移动最后的所有零(请记住零的数量可能很大,将其视为稀疏向量)矢量的非零值将在矢量的前面移动,而不会改变它们的自然顺序。结果将是[21 2 34 1 0 0 0 0 ]
。什么是这对大载体这种计算效率的解决方案:生成稀疏向量的置换
- 去了载体和添加到另一个向量非零的元素,然后用零填充第二向量的休息吗?
- 生成给出的向量所有排列(他们大概
n!/m!
其中n
是向量的长度和m
是零的个数,如果我们忽略非零元素可能出现一次以上的号码)和选择适合此限制的组合。
你忘BOGO排序的选项3.严重的是,它从来没有计算效率创造的东西所有排列,即使你认为N - m小。 – Gleno