집합 S = {1, 2, ..., n} 내에서 순열 p : S-> S를 찾는 데 관심이 있습니다. 특히, i와 j를 치환하는 모든 함수 : p (i) = j 및 p (j) = i; p (i) = i 또는 p (j) = j로 유지한다. 예를 들어모든 가능한 순열 함수 생성
, 경우 S = {1,2,3}, 내가 좋아하는 뭔가를 얻어야한다 :
p0 = [(1), (2), (3)] # p(1)=1, p(2)=2, p(3)=3
p1 = [(1,2), (3)] # p(1)=2, p(2)=1, p(3)=3
p2 = [(1,3), (2)]
p3 = [(2,3), (1)]
하면 S = {1, 2, 3, 4} :
p0 = [(1), (2), (3), (4)]
p1 = [(1,2), (3,4)]
p2 = [(1,2), (3), (4)] # p(1)=2, p(2)=1, p(3)=3, p(4)=4
p3 = [(1,3), (2,4)]
p4 = [(1,3), (2), (4)]
p5 = [(1,4), (2,3)]
p6 = [(1,4), (2), (3)]
p7 = [(1), (3), (2,4)]
p8 = [(1), (4), (2,3)]
p9 = [(1), (2), (3,4)]
을
감사합니다.
당신은 무엇을 시도? 당신은 itertools에 대해 잘 알고 있습니다. 일단 당신이 그것을 알고 있다면 그것을 당신의 빌딩 블록에 사용하는 것이 어렵지 않습니다. – ShadowRanger
나는 많은 downvotes가 있어야한다고 생각하지 않는다. 그것은 * 임의적 인 순열에 관한 것이 아니라 오히려 그 특수한 부분 집합이다. 효율적인 구현은 약간 까다 롭습니다. – Kh40tiK
@ Kh40tiK : 시도조차하지 않고 도움을 요청하는 것은 실제로 SO의 정신이 아닙니다. – ShadowRanger