說我試圖生成[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