n 비트 입력을 퍼 뮤트 (재 셔플)하는 방법은 무엇입니까?


14

나는 n 비트 시퀀스를 입력으로 가져 오고이 n 비트 시퀀스의 재구성 된 (순환 된) 버전을 출력으로 생성하는 양자 알고리즘에 관심이 있습니다.

예를 들어 입력이 0,0,1,1 (이 경우 n = 4)이면 가능한 대답은 다음과 같습니다.

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

가능한 모든 유효한 출력 중에서 무작위로 선택된 하나의 출력 만 생성해야합니다.

어떻게 양자 알고리즘 에서 가장 잘 구현 될 수 있습니까?

이에 대한 해결책은 이미 동일한 수의 1 비트로 2 개의 n 비트 시퀀스를 생성하는 양자 알고리즘을 만드는 방법에 대한 답변 중 하나의 일부로 이미 제안되었습니다 . . 그러나이 솔루션의 문제점은 약 (n2) 도움말 큐 비트가 필요하다는 것입니다. 이는 n이 클 경우 빠르게 커집니다.

노트 :

  • 클래식 알고리즘의 단계를 범용 양자 컴퓨터에 매핑하는 방법에 대한 설명없이 클래식 알고리즘을 제공하지 마십시오.
  • 나를 위해 "가능한 모든 좋은 결과물 중에서 무작위로 선택됨" 을 해석하는 두 가지 좋은 방법이 있습니다. (2) 가능한 모든 좋은 산출물은> 0을 선택할 확률이있다.

1
입력 길이의 이진 스트링이고 비트의 1 개의, 그리고 출력은 임의 의 그것의 가능한 순열을? 이것은 1 단계의 클래식 컴퓨터에서 수행 할 수 있습니다. 당신이 원하는 마십시오 alll 가능한 출력을? nk(nk)−1
— user1271772

아니요, 가능한 모든 출력 중에서 무작위로 선택된 하나의 출력 만 생성해야합니다.
— JanVdA

고전적인 알고리즘으로 충분할까요? (여전히 양자 컴퓨터에서 실행할 수 있습니다.) 또는 sth가 필요합니까? 가장 고전적인 알고리즘을 능가하는 것은 무엇입니까?
— Norbert Schuch

1
@ JanVdA : 왜 1과 0을 골라서 고전 컴퓨터에서 두 개를 바꾸지 않겠습니까?
— user1271772

1
원하는 임의 분포를 지정하지 않았으므로 여기에 그대로 두겠습니다. Dilbert and XKCD ;)
— Ali

답변:


4

다음 줄을 따라 추가 큐 비트를 사용하여 수행 할 수 있습니다 .⌈log⁡n⌉

  1. 추가 큐 비트 를 무작위로 균일하게 선택한 숫자 을 인코딩하도록 변환합니다 .k∈{0,…,n−1}

  2. 입력 큐 비트를 주기적으로 번 시프트합니다 .k

  3. 원래 입력 큐 비트의 마지막을 출력으로 고정하고 나머지 에서 재귀 합니다.n−1

이것은 고전적인 알고리즘이지만 Norbert가 의견에서 제안한 것처럼 양자 컴퓨터에서 실행할 수 있습니다. (양자 알고리즘에 대해 단호한 질문의 양상은 여전히 ​​나에게 분명하지 않으므로 양자 컴퓨터에서 제안한 것과 같은 고전적인 알고리즘을 실행하는 것이 충분하지 않으면 질문에 도움이 될 것입니다. 명확히해야합니다.)

질문은 무작위 출력을 요구하기 때문에 알고리즘은 아마도 측정 또는 큐 비트에 대한 다른 비-일체 연산 (예 : 초기화)을 통해 어떤 시점에서 엔트로피를 생성해야합니다. 위의 알고리즘에서 엔트로피를 생성하는 첫 번째 단계입니다. 1 단계의 작업이 수행되기 전에 추가 큐 비트의 상태에 관계없이 이어야합니다. 단계 1이 수행 된 후 ( 는 2 진수로 인코딩되어 있다고 가정하자).

1n∑k=0n−1|k⟩⟨k|
k

답변 해주셔서 감사합니다. 나는 문제에 대한 실제 양자 알고리즘에 관심이 있습니다-고전 알고리즘 위에 양자 프로그램에 매핑 할 수 있다면 괜찮습니다. 그러나 이것을하는 방법에 대한 실마리는 없습니다.
— JanVdA

2
저는 이제 질문이 집중되고 있다고 생각합니다. 실제로 알고리즘을 찾고 있지 않고 코드를 찾고 있습니다. 내가 설명 한 것은 알고리즘이며, 남아있는 작업은 해당 알고리즘 (또는 다른 알고리즘)을 일부 언어의 코드 또는 양자 회로의 저수준 설명으로 구현하는 것입니다. 더 명확하게하기 위해 질문을 수정하는 것이 좋습니다.하지만 누군가 지루하고 개념적으로 흥미가없는 작업을하도록 요청하고 있다는 점에 유의하십시오. 이 작업을 수행하는 방법을 배우는 대안은 어려워 보일 수 있지만 결국에는 더 나은 솔루션이 될 수 있습니다.
— John Watrous

질문에 메모를 추가했습니다. 우리는 개념 양자 알고리즘을 다르게 해석했다고 생각합니다 . 나를 위해 a_classical 알고리즘 _이 아닌 양자 알고리즘 만에 매핑 될 수 양자 알고리즘 .
— JanVdA

@ JanVdA : 양자 알고리즘은 무엇을 의미합니까? 예를 들어, 적어도 하나의 게이트를 포함해야합니까? 아니면 하나 이상의 게이트 가 필요 합니까? 아니면 다른 특정 게이트 세트가 필요합니까? 이 알고리즘에 어떤 게이트 세트를 사용 하시겠습니까? HY
— user1271772

양자 알고리즘은 범용 양자 컴퓨터를위한 프로그램에 (단계 레벨에서) 매핑 될 수있는 알고리즘입니다. 양자 알고리즘 단계의 입력 및 출력은 큐 비트 (또는 일련의 큐 비트에 맵핑 될 수 있음)입니다. 양자 알고리즘의 마지막 단계 = 큐 비트의 값을 판독 (관측) (큐 비트가 실제 비트에 매핑 됨) 게이트 세트에는 제한이 없습니다. 아이디어는 완전한 알고리즘이 범용 양자 컴퓨터에서 실행될 수 있다는 것입니다.
— JanVdA

3

참고 :이 답변에서는 순열을 일관되게 하고 싶다고 가정합니다 . 즉 1/3 대신 을 원한다고 가정합니다. 확률은 , 1/3 확률은 , 1/3 확률은 입니다.13(|001⟩+|010⟩+|100⟩)001010100

가역성 제약으로 인해이 작업을 매우 쉽게 수행 할 수 없으므로이 작업을 지정하는 방법에주의하십시오. 예를 들어, 입력 경우 GHZ 상태 를 출력하려고합니다. . 그러나 입력 및 대한 GHZ 상태도 출력하려면 작동하지 않습니다. 여러 개의 입력 상태를 동일한 출력 상태 (디코 히어 런스없이)로 보낼 수는 없습니다. "0000111과 같이 정렬 된 오름차순 입력에 대해서만 신경 쓰지만 1110000 또는 0010110에는 신경 쓰지 않고 원하는대로 무엇이든 할 수 있습니다"라고 말하면 괜찮습니다.|001⟩|31⟩=13(|001⟩+|010⟩+|100⟩)|010⟩|100⟩

정렬 된 입력의 양자 순열을 생성하는 한 가지 트릭은 먼저 정렬 네트워크를 균일 한 중첩으로 시드 값 목록에 적용하여 "순열 상태"를 준비하는 것입니다. 정렬 네트워크는 정렬 된 시드를 보유한 큐 비트와 정렬 네트워크 비교를 보유한 큐 비트를 출력합니다. 순열 상태는 단지 비교 큐 비트입니다. 입력에 적용하려면 정렬 네트워크를 통해 입력을 반대로 실행하면됩니다. 여기에는 까다로운 세부 사항이 있습니다. " Fermionic Hamiltonians의 고유 상태를 준비하기위한 개선 된 기술 "논문을 참조하십시오 . 고유 한 값 대신 반복되는 값을 가진 입력에서 작업하려면이 기술을 일반화해야합니다.

" quantum compression " 을 보길 원할 수도 있는데, 이것은생성하려는 상태 ( 비트가 설정된 모든 비트 상태 의 균일 한 중첩 ). 가장 큰 차이점은 양자 압축 회로를 역으로 실행한다는 것입니다. "몇 개가 있습니까?" "정확한 수의 상태를 알려주십시오"대신.|nk⟩nk

내가 말하는 것은 이러한 종류의 상태를 생성하는 것이 예상보다 복잡하다는 것입니다. 복잡한 이유는 출력의 진폭의 크기가 입력의 계산 기준 상태에 달려 있기 때문입니다. 예를 들어, 대한 당신의 prefactor 그래서 당신은, 4 개 개의 클래식 상태의 중첩 인 출력을 원하는 숨겨진 내부 . 그러나 경우 원하는 출력은 6 개의 클래식 상태를 가지므로 은 의 선행 요소를 숨 깁니다 .|0001⟩14|41⟩|0011⟩|42⟩16


귀하의 답변을 소중히하기 위해 더 많은 연구가 필요하지만 가역성 제약에 대한 두 번째 단락에 전적으로 동의하지 않습니다. 당신이 사용하는 것을 주 을위한 솔루션으로 하지만 우리는 작업으로 더 많은 솔루션이있다 숫자가 복잡한 경우 (예 : 다음은 가능한 해결 방법입니다13(|001⟩+|010⟩+|100⟩)|001⟩13(|001⟩−|010⟩+i.|100⟩)
— rangle-

1
@JanVdA 맞습니다. 위상을 사용하여 다양한 출력을 직교로 만들 수 있습니다. 귀하의 질문에 대한 나의 독서는 모든 경우에 동일한 단계를 원한다는 것입니다.
— Craig Gidney 2016 년

0

양자 컴퓨터는 고전적인 계산을 수행 할 수 있습니다. 최적의 알고리즘은 다음과 같습니다.

  1. 액세스 할 수있는 가장 빠른 비트를 선택하십시오.
  2. 반대의 값을 가진 비트를 찾으십시오 (1 단계에서 0을 얻은 경우 1을 찾으십시오)
  3. 전환하십시오 (0은 1이되고 1은 0이됩니다).

2 단계는 클래식 연산을 사용하는 연산 을 사용 하는 비트 문자열을 통한 검색을 포함 하지만 함수를 평가 하여 비트 값을 얻을 수있는 경우 Grover의 양자 알고리즘을 사용하여 연산 과 반대 비트를 찾습니다 . NO(N)nthO(N)


고맙지 만 알고리즘은 2 비트 만 전환하므로 모든 순열을 생성하지는 않지만 여전히 고전적인 알고리즘이지만 양자 알고리즘을보고 싶습니다.
— JanVdA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.