양자 계산 언어
Quantum Computation LanguageQCL(Quantum Computation Language)은 최초로 구현된 양자 프로그래밍 [1]언어 중 하나입니다.QCL의 가장 중요한 기능은 사용자 정의 연산자 및 함수 지원입니다.이 구문은 C 프로그래밍 언어의 구문과 유사하며 고전적인 데이터 유형은 C의 원시 데이터 유형과 유사합니다.클래식 코드와 양자 코드를 같은 프로그램으로 조합할 수 있다.
이 언어는 양자 [2][3][4]컴퓨터를 위한 프로그래밍 개념을 탐구하기 위해 만들어졌습니다.
QCL 표준 라이브러리는 다음과 같은 [5]양자 알고리즘에 사용되는 표준 양자 연산자를 제공합니다.
- 제어됨-목표 큐비트가 많지 않음,
- 아다마드는 많은 큐비트를 조작했고
- 위상 및 제어 위상.
- 이진수(모든 계수 n)를 사용한 덧셈, 곱셈 및 지수를 위한 양자 알고리즘
- 양자 푸리에 변환
구문
- 데이터형
- Quantum - qureg, quvoid, quconst, quuscratch, quecond
- 고전 - int, 실수, 복소수, 부울, 문자열, 벡터, 행렬, 텐서
- 기능 타입
- qufected - 의사 클래스 연산자.기본 상태의 순열만 변경할 수 있습니다.
- 연산자 - 일반 유니터리 연산자.진폭을 변경할 수 있습니다.
- 절차 - 이 함수에 대해 측정, 인쇄 및 덤프를 호출할 수 있습니다.이 함수는 반전할 수 없습니다.
- 내장 기능
- 양자
- 사용후 - 팬아웃, 스왑, Perm2, Perm4, Perm8, 없음, CNot
- 연산자 - 행렬 2x2, 행렬 4x4, 행렬 8x8, 썩음, 혼합, H, CPhase, SqrtNot, X, Y, Z, S, T
- 절차 - 측정, 덤프, 재설정
- 고전적인
- 산술 - sin, cos, tan, log, sqrt, ...
- 복합 - Re, Im, consa
- 양자
예
QCL의 기본 내장 양자 데이터 유형은 쿼그(quantum register)입니다.큐비트 배열(양자 비트)로 해석할 수 있습니다.
큐레그 x1[2]; // 2비트 양자 레지스터 x1 큐레그 x2[2]; // 2비트 양자 레지스터 x2 H(x1); // x1에서의 Adamard 연산 H(x2[1]); // 레지스터 x2의 첫 번째 큐비트에 대한 아다마드 연산
qcl 인터프리터는 qlib 시뮬레이션 라이브러리를 사용하기 때문에 양자 프로그램 실행 중에 양자 머신의 내부 상태를 관찰할 수 있다.
qcl> 덤프 : 상태 : 4 / 32 큐비트 할당 완료, 28 / 32 큐비트 빈 0.35355 0 > + 0.35355 1 > + 0.35355 2 > + 0.355 3 > + 0.355 9 > + 0.355 10 > + 0.355 11 >
덤프 연산은 양자 기계의 상태에 영향을 주지 않고 시뮬레이터를 통해서만 실현되므로 측정과 다릅니다.
현대의 프로그래밍 언어와 마찬가지로 양자 데이터를 조작하는 데 사용할 수 있는 새로운 연산을 정의할 수 있습니다.예를 들어 다음과 같습니다.
교환입니다. 흩어지다 (큐레그 q) { H(q); // Adamard 변환 것은 아니다.(q); // Q 반전 CPhase(파이, q); // q=111인 경우 회전합니다. !것은 아니다.(q); // 반전 취소 !H(q); // Adamard 변환 실행 취소 }
는 Grover 알고리즘에서 사용되는 평균 연산자에 대한 역치를 정의합니다(Grover 확산 연산자라고도 함).이를 통해 더 높은 수준의 추상화 알고리즘을 정의하고 프로그래머가 사용할 수 있는 함수의 라이브러리를 확장할 수 있습니다.
레퍼런스
- ^ "QCL - A Programming Language for Quantum Computers". tuwien.ac.at. Retrieved 2017-07-20.
- ^ Ömer, Bernhard (2000-01-20). Quantum Programming in QCL (PDF) (Thesis). Institute for Theoretical Physics, Vienna University of Technology. Retrieved 2021-05-24.
- ^ Ömer, Bernhard (29 Apr 2003). "Classical Concepts in Quantum Programming". International Journal of Theoretical Physics. 44 (7): 943–955. arXiv:quant-ph/0211100. doi:10.1007/s10773-005-7071-x. S2CID 119373370.
- ^ Ömer, Bernhard (2 September 2009). "Structured Quantum Programming" (PDF). Institute for Theoretical Physics, Vienna University of Technology.
- ^ QCL 웹 페이지