내가 관심있는 질문은 무작위 순열을 생성하는 것과 관련이 있습니다. 확률 적 쌍별 스왑 게이트를 기본 빌딩 블록으로 가정하면 요소를 균일하게 무작위로 치환하는 가장 효율적인 방법은 무엇 입니까? 여기서 나는 "확률적인 쌍별 스왑 게이트"를 각각의 게이트에 대해 자유롭게 선택 될 수있는 확률 를 갖는 선택된 요소 와 사이의 스왑 게이트를 구현하는 연산으로하고 그렇지 않으면 동일성을 취한다.i j p
나는 이것이 일반적으로 임의 순열을 생성하는 방식이 아니라는 것을 알고 있습니다. 보통 Fisher-Yates 셔플과 같은 것을 사용할 수는 있지만 허용 된 연산이 다르기 때문에 내가 생각한 응용 프로그램에서는 작동하지 않습니다.
분명히 이것이 가능할 것입니다, 문제는 얼마나 효율적입니다. 이 목표를 달성하기 위해 필요한 최소한의 확률 적 스왑은 무엇입니까?
최신 정보:
Anthony Leverrier는 실제로 게이트를 사용하여 정확한 분포를 생성하는 방법을 제공하며 , Ito Tsuyoshi는 주석에서 동일한 스케일링으로 다른 접근법을 제공합니다. 그러나 지금까지 내가 본 가장 낮은 하한은 이며 로 확장됩니다 . 따라서 질문은 여전히 열려 있습니다. 가 수행 할 수있는 최선입니까 (즉, 더 낮은 하한선이 있습니까)? 또는 더 효율적인 회로 제품군이 있습니까?⌈ log 2 ( n ! ) ⌉ O ( n log n ) O ( n 2 )
최신 정보:
여러 해답과 의견은 확률이 고정되어있는 확률 론적 스왑으로 구성된 회로를 제안했습니다 . 이러한 회로는 다음과 같은 이유로이 문제를 해결할 수 없습니다 (의견에서 들었습니다).
개의 게이트 를 사용하는 회로를 상상해보십시오 . 그런 다음 등가 계산 경로가 있으므로 정수 k에 대해 확률 순열이 발생해야합니다 . 그러나 균일 한 분포를 위해서는 이 필요하며 으로 다시 쓸 수 있습니다 . 분명히 의 정수 값 대해서는 부터 만족할 수 없습니다( 이지만 입니다.2 m k 2 − m k 2 − m = 1
업데이트 (바운티를 제공하는 mjqxxxx의) :
제공되는 현상금은 (1) 게이트가 필요 하다는 증거 또는 (2) 미만의 게이트 를 사용 하는 대한 작동 회로 입니다.N N ( N - 1 ) / 2