Re: [問題] array shuffle
看板Programming作者BaronDavis5 (Baron Davis)時間18年前 (2007/07/20 01:41)推噓1(1推 0噓 1→)留言2則, 1人參與討論串7/9 (看更多)
※ 引述《ephesians (ephesians)》之銘言:
: ※ 引述《xcycl (XOO)》之銘言:
: S = {c,a,b}
: 則可以用
: swap(S[1],S[3]),swap(S[2],S[3])
: 或
: swap(S[2],S[3]),swap(S[1],S[2])
: 來做.
: 輪調三個變數要做二次,但只使用一個共用的temp變數.
: 同理,上述array shuffle若對任意長度原陣列可找到一個公式化的輪調順序,
: 結果就符合所求的時間與空間複雜度.
我也是用這個方法,主要idea是很久以前離散數學學過的一個permutation group
我猜應該是和前述cycle decomposition類似概念的東西
但是我之前把它寫出來後,發現不同長度時,permutation group的量不一定
比如在元素長度8時,就存在二個permutation group (註1)
但是在長度20時,就只存在一個permutation group(皆扣掉頭尾元素)
目前也想不出有沒有什麼方法可以找出那些沒交集permutation group...
(註1)
index 0 1 2 3 4 5 6 7
original 1 3 5 7 2 4 6 8
to 1 2 3 4 5 6 7 8
permutation group (1 2 4) (3 6 5)
(2 4 1),(6 5 3)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.233.21
推
07/20 02:13, , 1F
07/20 02:13, 1F
→
07/20 02:14, , 2F
07/20 02:14, 2F
※ 編輯: BaronDavis5 來自: 59.115.233.21 (07/20 04:04)
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章