作者ykjiang (York)
看板CSSE
标题Re: permutation algorithm
时间Fri Nov 17 12:14:26 2006
我没有更快的方法,不过在 Python 下可以这样写:
>>> from numpy import *
>>> N=5
>>> a=arange(2*N) # creates an array for demo
>>> a # views the content of the array
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a.shape=(N,2)
>>> a.transpose().ravel()
array([0, 2, 4, 6, 8, 1, 3, 5, 7, 9])
上面拆成两行写,其实只要一行就搞定了:
>>> a.reshape(N,2).transpose().ravel()
array a 经过三次转换就得到答案了。
由上面可以看出,如果有特殊的硬体来进行矩阵运算的话,
可以加速很多。
※ 引述《jeunder ()》之铭言:
: 请教大家一个问题.
: 有一个阵列 x[2N] 要将其内容根据某个排列规则做 permutation.
: 规则如下:
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.226.118
※ 编辑: ykjiang 来自: 211.74.226.118 (11/17 12:31)
1F:→ ykjiang:有想到一个 space O(1) ,但 time 要 O(N^2) 的方法 11/18 00:32
2F:→ ykjiang:要用到多次的小 transpose 及 swap ,不是很实用 11/18 00:33