KR102204081B1 - 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법 - Google Patents

효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법 Download PDF

Info

Publication number
KR102204081B1
KR102204081B1 KR1020200092365A KR20200092365A KR102204081B1 KR 102204081 B1 KR102204081 B1 KR 102204081B1 KR 1020200092365 A KR1020200092365 A KR 1020200092365A KR 20200092365 A KR20200092365 A KR 20200092365A KR 102204081 B1 KR102204081 B1 KR 102204081B1
Authority
KR
South Korea
Prior art keywords
auxiliary
qubits
qubit
quantum
modular
Prior art date
Application number
KR1020200092365A
Other languages
English (en)
Inventor
서승현
조성민
김애영
Original Assignee
한양대학교 에리카산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 에리카산학협력단 filed Critical 한양대학교 에리카산학협력단
Priority to KR1020200092365A priority Critical patent/KR102204081B1/ko
Application granted granted Critical
Publication of KR102204081B1 publication Critical patent/KR102204081B1/ko
Priority to US18/017,655 priority patent/US20230316121A1/en
Priority to PCT/KR2021/005372 priority patent/WO2022019443A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B82NANOTECHNOLOGY
    • B82YSPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
    • B82Y10/00Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Complex Calculations (AREA)

Abstract

모듈러 2N 연산의 특징을 이용해 효율적인, 즉, 양자 회로의 복잡도가 낮은 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법이 개시된다. 본 발명의 실시 예에 따른 양자 모듈러 곱셈기는 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈기로서 상기 제1 큐비트들 중에서 최하위 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 제1 보조 큐비트들에 저장하는 제1 보조 레지스터 설정부, 상기 제1 큐비트들 중에서 p번째(p는 2 이상이며 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (p-1)번 왼쪽 시프트(left shift)하여 제2 보조 큐비트들에 저장하는 제2 보조 레지스터 설정부, 상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 제1 보조 큐비트들에 저장하는 가산부 및 상기 제2 보조 큐비트들을 초기화하는 보조 레지스터 초기화부를 포함하며, 상기 제2 보조 레지스터 설정부, 상기 가산부 및 상기 보조 레지스터 초기화부는 상기 p가 2 부터 N까지 증가하는 동안 반복하여 수행된다.

Description

효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법{Efficient quantum modular multiplier and method of quantum modular multiplication}
본 발명은 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법에 관한 것으로, 특히, 모듈러 2N 연산의 특징을 이용해 효율적인, 즉, 양자 회로의 복잡도가 낮은 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법에 관한 것이다.
양자역학 원리와 양자 현상에 의해 작동하는 양자 컴퓨터는 정보처리의 기본 단위로 0과 1이 동시에 존재할 수 있는 큐비트를 사용한다.
이와 같은 큐비트의 사용으로 인해 양자 컴퓨터는 적은 큐비트로도 굉장히 많은 경우의 수를 동시에 표현할 수 있으며 계산할 수 있다.
양자 컴퓨터가 기존 컴퓨터 대비 월등한 연산속도를 보일 것으로 기대되면서 IT 분야뿐만이 아니라 화학, 의료, 제약 등 다양한 분야에서의 활용이 기대되고 있다.
현재 양자 컴퓨터의 개발은 여러 IT 기업들의 주도하에 이루어지고 있다. D-WAVE Systems는 양자 어닐링(Quantum Annealing) 기법을 이용한 128 큐비트 양자 컴퓨터를 개발하였으며, 최근에는 IBM, Google(구글) 등의 기업을 주축으로 개발이 진행되고 있다. 특히 구글은 최근 현존 최고 성능의 슈퍼컴퓨터로 1만 년이 걸릴 문제를 200초 만에 풀어낸 양자컴퓨터 칩 ‘시카모어’를 개발하여 네이처지에 발표하였다.
이와 같은 양자 컴퓨터의 특성을 활용하기 위한 양자 알고리즘은 큐비트의 양자적 특성을 유지하기 위해서 양자 게이트들로 구현되어 작동되어야 한다. 즉, 양자 알고리즘에 사용되는 여러 연산들 또한 양자 게이트들로 구현되어야 한다.
특히, 곱셈의 입력 레지스터 중 하나가 클래식한 파라미터로 고정되어 있는 ‘quantum-classical’ 모듈러 곱셈은 대부분의 양자 알고리즘에서 필요한 기본 연산이며, 곱셈의 두 입력 레지스터가 모두 양자 상태로 들어오는 quantum-quantum’모듈러 곱셈은 양자 회로에서 타원 곡선 연산 시에 사용되는 중요한 기본 연산이다.
종래 효율적이라고 알려진 양자 회로로 구현한 모듈러 곱셈 회로에는 Ripple-Carry 방식과 Carry-Lookahead 방식의 덧셈 연산을 Exact Division, Montgomery Reduction 또는 Barrett Reduction 기법에 적용시킨 In-place 방식의 ‘quantum-classical’ 모듈러 곱셈 회로들이 있다.
양자 회로의 복잡도는 보통 연산 오버헤드가 크다고 알려진 토폴리 게이트의 개수와 토폴리 게이트의 양자 회로 깊이, 큐비트의 개수에 따라 판단되는데 앞서 언급한 종래의 모듈러 곱셈 회로의 경우 (5n)개의 큐비트들과 (20n2)개의 게이트들, (8nlog2n)의 양자 회로 깊이를 갖는다.
본 발명이 이루고자 하는 기술적인 과제는 모듈러 2N 연산의 특징을 이용해 효율적인, 즉, 양자 회로의 복잡도가 낮은 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 양자 모듈러 곱셈기는 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈기로서 상기 제1 큐비트들 중에서 최하위 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 제1 보조 큐비트들에 저장하는 제1 보조 레지스터 설정부, 상기 제1 큐비트들 중에서 p번째(p는 2 이상이며 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (p-1)번 왼쪽 시프트(left shift)하여 제2 보조 큐비트들에 저장하는 제2 보조 레지스터 설정부, 상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 제1 보조 큐비트들에 저장하는 가산부 및 상기 제2 보조 큐비트들을 초기화하는 보조 레지스터 초기화부를 포함하며, 상기 제2 보조 레지스터 설정부, 상기 가산부 및 상기 보조 레지스터 초기화부는 상기 p가 2 부터 N까지 증가하는 동안 반복하여 수행된다.
실시 예에 따라, 상기 제1 보조 레지스터 설정부는, 상기 최하위 제1 큐비트와 상기 제2 큐비트들 중에서 q번째(q는 N 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제1 보조 큐비트들 중에서 q번째 제1 보조 큐비트를 출력으로 하는 복수의 제1 토폴리 게이트들을 포함할 수 있다.
실시 예에 따라, 상기 제2 보조 레지스터 설정부는, 상기 p번째 제1 큐비트와 상기 제2 큐비트들 중에서 r번째(r은 (N-p+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (p+r-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제2 토폴리 게이트들을 포함할 수 있다.
실시 예에 따라, 상기 보조 레지스터 초기화부는, 상기 p번째 제1 큐비트와 상기 r번째 제2 큐비트를 입력으로 하고 상기 (p+r-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제3 토폴리 게이트들을 포함할 수 있다.
실시 예에 따라, 상기 가산부는 상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 입력으로 하고 상기 제2 보조 큐비트들을 출력으로 하는 모듈러 2N 양자 가산기로 구성될 수 있다.
본 발명의 실시 예에 따른 양자 모듈러 곱셈 방법은 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈 방법으로서 상기 제1 큐비트들 중에서 최하위 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 제1 보조 큐비트들에 저장하는 제1 보조 레지스터 설정 단계, 상기 제1 큐비트들 중에서 p번째(p는 2 이상이며 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (p-1)번 왼쪽 시프트(left shift)하여 제2 보조 큐비트들에 저장하는 제2 보조 레지스터 설정 단계, 상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 제1 보조 큐비트들에 저장하는 가산 단계 및 상기 제2 보조 큐비트들을 초기화하는 보조 레지스터 초기화 단계를 포함하며, 상기 제2 보조 레지스터 단계, 상기 가산 단계 및 상기 보조 레지스터 초기화 단계는 상기 p가 2 부터 N까지 증가하는 동안 반복하여 수행된다.
실시 예에 따라, 상기 제1 보조 레지스터 설정 단계는, 상기 최하위 제1 큐비트와 상기 제2 큐비트들 중에서 q번째(q는 N 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제1 보조 큐비트들 중에서 q번째 제1 보조 큐비트를 출력으로 하는 복수의 제1 토폴리 게이트들을 이용해 수행될 수 있다.
실시 예에 따라, 상기 제2 보조 레지스터 설정 단계는, 상기 p번째 제1 큐비트와 상기 제2 큐비트들 중에서 r번째(r은 (N-p+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (r+p-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제2 토폴리 게이트들을 이용해 수행될 수 있다.
실시 예에 따라, 상기 보조 레지스터 초기화 단계는, 상기 p번째 제1 큐비트와 상기 r번째 제2 큐비트를 입력으로 하고 상기 (r+p-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제3 토폴리 게이트들을 이용해 수행될 수 있다.
실시 예에 따라, 상기 가산 단계는, 상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 입력으로 하고 상기 제2 보조 큐비트들을 출력으로 하는 모듈러 2N 양자 가산기를 이용해 수행될 수 있다.
본 발명의 실시 예에 따른 양자 모듈러 곱셈기는 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 모듈러 곱셈기로서 상기 제1 큐비트들 중에서 f번째(f는 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (f-1)번 왼쪽 시프트(left shift)하여 복수의 보조 레지스터들 중에서 f번째 보조 레지스터에 저장하는 복수의 보조 레지스터 설정부들 및 상기 복수의 보조 레지스터들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 복수의 보조 레지스터들 중에서 어느 하나에 저장하는 가산부를 포함한다.
실시 예에 따라, 상기 복수의 보조 레지스터 설정부들 각각은, 상기 f번째 제1 큐비트와 상기 제2 큐비트들 중에서 g번째(g는 (N-f+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (f+g-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 토폴리 게이트들을 포함할 수 있다.
실시 예에 따라, 상기 가산부는 토너먼트 방식으로 상기 복수의 보조 레지스터들을 모듈러 덧셈하는 복수의 모듈러 2N 양자 가산기들로 구성될 수 있다.
본 발명의 실시 예에 따른 양자 모듈러 곱셈 방법은 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 모듈러 곱셈 방법으로서 상기 제1 큐비트들 중에서 f번째(f는 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (f-1)번 왼쪽 시프트(left shift)하여 복수의 보조 레지스터들 중에서 f번째 보조 레지스터에 저장하는 보조 레지스터 설정 단계 및 상기 복수의 보조 레지스터들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 복수의 보조 레지스터들 중에서 어느 하나에 저장하는 가산 단계를 포함한다.
실시 예에 따라, 상기 보조 레지스터 설정 단계는, 상기 f번째 제1 큐비트와 상기 제2 큐비트들 중에서 g번째(g는 (N-f+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (f+g-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 토폴리 게이트들을 이용해 수행될 수 있다.
실시 예에 따라, 상기 가산 단계는, 토너먼트 방식으로 상기 복수의 보조 레지스터들을 모듈러 2N 덧셈할 수 있다.
본 발명의 실시 예에 따른 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법은 모듈러 2N 연산의 특징을 이용하여 연산 소요 시간을 감소시킬 수 있으며, 필요한 큐비트들의 개수와 게이트들의 개수를 감소시킬 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 제1 실시 예에 따른 양자 모듈러 곱셈 방법을 설명하기 위한 플로우 차트(flow chart)이다.
도 2는 본 발명의 제1 실시 예에 따른 양자 모듈러 곱셈기를 나타내는 블록도이다.
도 3은 도 2에 도시된 제1 보조 레지스터 설정부를 보다 상세하게 나타내는 회로도이다.
도 4는 도 2에 도시된 제2 보조 레지스터 설정부를 보다 상세하게 나타내는 회로도이다.
도 5는 도 2에 도시된 보조 레지스터 초기화부를 보다 상세하게 나타내는 회로도이다.
도 6은 도 2에 도시된 가산부의 일례를 보다 상세하게 나타내는 회로도이다.
도 7은 도 2에 도시된 양자 모듈러 곱셈기의 일례를 보다 상세하게 나타내는 회로도이다.
도 8은 본 발명의 제2 실시 예에 다른 양자 모듈러 곱셈 방법을 설명하기 위한 플로우 차트(flow chat)이다.
도 9는 본 발명의 제2 실시 예에 따른 양자 모듈러 곱셈기를 나타내는 블록도이다.
도 10은 도 9에 도시된 보조 레지스터 설정부의 일 실시 예를 보다 상세하게 나타내는 회로도이다.
도 11은 도 9에 도시된 가산부의 일례를 보다 상세하게 나타내는 블록도이다.
도 12는 본 발명의 제3 실시 예에 따른 양자 모듈러 곱셈기를 나타내는 블록도이다.
도 13은 도 12에 도시된 양자 모듈러 곱셈기의 일례를 보다 상세하게 나타내는 회로도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 제1 실시 예에 따른 양자 모듈러 곱셈 방법을 설명하기 위한 플로우 차트(flow chart)이며, 도 2는 본 발명의 제1 실시 예에 따른 양자 모듈러 곱셈기를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 양자 모듈러 곱셈기(100)는 N자리(N은 2 이상인 자연수) 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)를 직렬 방식으로 모듈러 2N 곱셈할 수 있다.
제1 큐비트 레지스터(A)는 N개의 제1 큐비트들(a1 내지 aN)을 포함할 수 있으며, 제2 큐비트 레지스터(B)는 N개의 제2 큐비트들(b1 내지 bN)을 포함할 수 있다.
양자 모듈러 곱셈기(100)는 N자리(N은 2 이상인 자연수) 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)에 대한 곱셈을 수행하기 위해 N자리 제1 보조 큐비트 레지스터(D)와 제2 큐비트 레지스터(C)를 포함할 수 있다.
제1 보조 큐비트 레지스터(D)는 N개의 제1 보조 큐비트들(d1 내지 dN)을 포함할 수 있으며, 제2 보조 큐비트 레지스터(C)는 N개의 제2 보조 큐비트들(c1 내지 cN)을 포함할 수 있다.
양자 모듈러 곱셈기(100)는 모듈러 2N 연산의 특성을 이용하면서 제1 큐비트들(a1 내지 aN)과 제2 큐비트들(b1 내지 bN)의 부분 곱들(partial products)을 가산하는 방식으로 모듈러 2N 곱셈을 수행할 수 있다.
양자 모듈러 곱셈 방법을 순차적으로 살펴보면, 양자 모듈러 곱셈기(100)는 제1 큐비트들(a1 내지 aN) 중에서 최하위 제1 큐비트(a1)와 제2 큐비트들(b1 내지 bN)의 부분 곱을 제1 보조 큐비트들(d1 내지 dN)에 저장할 수 있다(제1 보조 레지스터 설정 단계; S100).
양자 모듈러 곱셈기(100)는 제1 큐비트들(a1 내지 aN) 중에서 p번째(p는 2 이상이며 N 이하인 자연수) 제1 큐비트(ap)와 제2 큐비트들(b1 내지 bN)의 부분 곱을 (p-1)번 왼쪽 시프트(left shift)하여 제2 보조 큐비트들(c1 내지 cN)에 저장할 수 있다(제2 보조 레지스터 설정 단계; S200).
왼쪽 시프트는 일반적으로 레지스터 내에서 비트/큐비트에 저장된 값을 왼쪽 방향, 즉, 상위 비트/큐비트로 이동시키는 것을 의미하며, 여기서 부분 곱을 (p-1)번 왼쪽 시프트하여 저장한다는 의미는 부분 곱을 (p-1)번 상위 큐비트로 이동시켜 저장하는 것을 의미한다. 예를 들어, 제1 큐비트(ap)와 제k번째 제2 큐비트의 부분 곱은 제(k+p-1)번째 제2 보조 큐비트(ck+p-1)에 저장될 수 있다.
제1 보조 레지스터(D)와 제2 보조 레지스터(C)가 설정된 후, 양자 모듈러 곱셈기(100)는 제1 보조 레지스터(D)와 제2 보조 레지스터(C)를 모듈러 2N 덧셈하고 모듈러 덧셈 결과를 제1 보조 레지스터(D)에 저장할 수 있다(가산 단계; S300).
가산 단계가 수행된 후, 양자 모듈러 곱셈기(100)는 제2 보조 레지스터(C)를 초기화할 수 있다(보조 레지스터 초기화 단계; S400).
양자 모듈러 곱셈기(100)는 p가 2부터 N까지 증가하는 동안 제2 보조 레지스터 설정 단계(S200), 가산 단계(S300) 및 보조 레지스터 초기화 단계(S400)를 반복하여 수행할 수 있다.
즉, 양자 모듈러 곱셈기(100)는 p와 N을 비교하고, p가 N보다 작을 때(S500의 '예' 브랜치), 제2 보조 레지스터 설정 단계(S200)로 돌아갈 수 있다.
반대로, p가 N보다 작지 않을 때(S500의 '아니오' 브랜치), 양자 모듈러 곱셈기(100)는 곱셈 연산을 종료할 수 있다.
즉, 양자 모듈러 곱셈기(100)는 제1 큐비트들(a1 내지 aN) 중에서 어느 하나와 제2 큐비트들(b1 내지 bN)의 부분 곱을 제2 보조 큐비트들(c1 내지 cN)에 설정하고 이를 부분 곱들의 덧셈 결과가 저장되어 있는 제1 보조 큐비트들(d1 내지 dN)에 가산하는 과정을 p가 2부터 N까지 1씩 증가하는 동안 반복함으로써 양자 모듈러 곱셈을 수행할 수 있다.
양자 모듈러 곱셈기(100)는 제1 보조 레지스터 설정부(110), (N-1)개의 제2 보조 레지스터 설정부들(130-2 내지 130-N)), (N-1)개의 가산부들(150-2 내지 150-N) 및 (N-1)개의 보조 레지스터 초기화부들(170-2 내지 170-N)을 포함할 수 있다.
제1 보조 레지스터 설정부(110)는 최하위 제1 큐비트(a1)와 제2 큐비트들(b1 내지 bN)의 부분 곱을 제1 보조 큐비트들(d1 내지 dN)에 저장할 수 있다.
도 3은 도 2에 도시된 제1 보조 레지스터 설정부를 보다 상세하게 나타내는 회로도이다.
도 3을 참조하면, 제1 보조 레지스터 설정부(110)는 N개의 제1 토폴리 게이트들(TG1-1 내지 TG1-N, 이하 통칭하여 TG1)을 포함할 수 있다.
'토폴리 게이트'는 Toffoli 게이트 또는 controlled-controlled-not 게이트를 의미하며 두 개의 입력들이 모두 '1'일 때 출력 큐비트의 상태를 반전하는 게이트로서 아래와 같은 수학식 1의 행렬로 표현될 수 있다.
[수학식 1]
Figure 112020077659932-pat00001
제1 토폴리 게이트들(TG1-1 내지 TG1-N) 중에서 q번째 제1 토폴리 게이트(TG1-q)는 최하위 제1 큐비트(a1)와 제2 큐비트들(b1 내지 bN) 중에서 q번째(q는 N 이하인 자연수) 제2 큐비트(bq)를 입력으로 하고 제1 보조 큐비트들(d1 내지 dN) 중에서 q번째 제1 보조 큐비트(dq)를 출력으로 할 수 있다.
즉, q번째 제1 토폴리 게이트(TG1-q)는 최하위 제1 큐비트(a1)와 q번째 제2 큐비트(bq)가 모두 '1'일 때 q번째 제1 보조 큐비트(dq)를 반전할 수 있다.
다시 도 1 및 도 2를 참조하면, 제2 보조 레지스터 설정부들(130-2 내지 130-N, 이하 통칭하여 130) 각각은 최하위 제1 큐비트(a1)을 제외한 제1 큐비트들(a2 내지 aN) 중에서 어느 하나와 제2 큐비트들(b1 내지 bN)의 부분 곱을 왼쪽 시프트(left shift)하여 제2 보조 큐비트들(c1 내지 cN)에 저장할 수 있다.
다시 말해, p번째 제2 보조 레지스터 설정부(130-p)는 p번째 제1 큐비트(ap)와 제2 큐비트들(b1 내지 bN)의 부분 곱을 (p-1)번 왼쪽 시프트하여 제2 보조 큐비트들(c1 내지 cN)에 저장할 수 있다.
도 4는 도 2에 도시된 제2 보조 레지스터 설정부를 보다 상세하게 나타내는 회로도이다.
도 4를 참조하면, p번째 제2 보조 레지스터 설정부(130-p)는 (N-p+1)개의 제2 토폴리 게이트들(TG2-1 내지 TG2-(N-p+1), 이하 통칭하여 TG2)를 포함할 수 있다.
제2 토폴리 게이트들(TG2-1 내지 TG2-(N-p+1)) 중에서 r번째(r은 (N-p+1) 이하인 자연수) 제2 토폴리 게이트(TG2-r)는 p번째 제1 큐비트(ap)와 제2 큐비트들(b1 내지 bN) 중에서 r번째 제2 큐비트(br)를 입력으로 하고 제2 보조 큐비트들(c1 내지 cN) 중에서 (p+r-1)번째 제2 보조 큐비트(cp+r-1)를 출력으로 할 수 있다.
즉, r번째 제2 토폴리 게이트(TG2-r)는 p번째 제1 큐비트(ap)와 r번째 제2 큐비트(br)가 모두 '1'일 때 (p+r-1)번째 제2 보조 큐비트(cp+r-1)의 상태를 반전할 수 있다.
다시 도 1 및 도 2를 참조하면, 가산부들(150-2 내지 150-N, 이하 통칭하여 150) 각각은 제1 보조 큐비트들(d1 내지 dN)과 제2 보조 큐비트들(c1 내지 cN)을 모듈러 덧셈하고 모듈러 덧셈 결과를 제1 보조 큐비트들(d1 내지 dN)에 저장할 수 있다.
도 2에서는 양자 모듈러 곱셈기(100)가 복수의 가산부들(150-2 내지 150-N)을 포함하는 것으로 도시되어 있으나, 이는 설명의 편의를 위한 것일 뿐 본 발명의 기술적 사상을 제한하지 않는다.
예를 들어, 양자 모듈러 곱셈기(100)에는 하나의 가산부(150)가 포함되며, 가산 단계(S300)가 수행될 때마다 가산부(150)가 호출되는 방식으로 동작할 수도 있다.
가산부(150)는 모듈러 2N 양자 가산기로 구성될 수 있다. 예를 들어, 가산부(150)는 도 6에 도시된 바와 같이 구성될 수 있다.
도 6은 도 2에 도시된 가산부의 일례를 보다 상세하게 나타내는 회로도이다.
도 6에는 N이 5일 때, 즉, 가산되는 큐비트 레지스터들(A, B)이 다섯 자리일 때의 가산부(150A)가 도시된다.
가산부(150)는 복수의 토폴리 게이트들, 복수의 CNOT 게이트들 및 복수의 NOT 게이트들을 포함할 수 있다.
'CNOT 게이트'는 controlled-not 게이트를 의미하며 입력이 '1'일 때 출력 큐비트의 상태를 반전하는 게이트로서 아래와 같은 수학식 2의 행렬로 표현될 수 있다.
[수학식 2]
Figure 112020077659932-pat00002
'CNOT 게이트'는 하나의 입력('·' 표시)과 하나의 출력(원 안의 '+' 표시)을 연결하는 선으로 표현된다.
'NOT 게이트'는 해당 큐비트의 상태를 반전하는 게이트로서 아래와 같은 수학식 3의 행렬로 표현될 수 있다.
[수학식 3]
Figure 112020077659932-pat00003
'NOT 게이트'는 원 안의 '+' 표시로 표현된다.
가산부(150)는 모듈러 덧셈을 수행하기 위해 보조 큐비트들이 더 필요할 수 있다.
예를 들어, 가산부(150A)는 추가 보조 큐비트들(anc1[1], anc1[2], anc1[3], anc1[4] 및 anc2[0])이 더 필요하다.
가산부(150A)는 x[0] 내지 x[4]의 큐비트들로 구성된 제1 입력 레지스터(X)와 y[0] 내지 y[4]의 큐비트들로 구성된 제2 레지스터(Y)를 모듈러 2N 덧셈하고 덧셈 결과를 제2 레지스터(Y)에 저장할 수 있다.
다시 도 1 및 도 2를 참조하면, 보조 레지스터 초기화부들(170-2 내지 170-N, 이하 통칭하여 170)은 제2 보조 레지스터(C)를 초기화할 수 있다.
이를 위해, 보조 레지스터 초기화부들(170-2 내지 170-N)은 제2 보조 레지스터 설정부들(130-2 내지 130-N)와 동일한 구조 및 기능을 갖는다.
즉, 보조 레지스터 초기화부들(170-2 내지 170-N) 각각은 최하위 제1 큐비트(a1)을 제외한 제1 큐비트들(a2 내지 aN) 중에서 어느 하나와 제2 큐비트들(b1 내지 bN)의 부분 곱을 왼쪽 시프트(left shift)하여 제2 보조 큐비트들(c1 내지 cN)에 저장할 수 있다.
다시 말해, p번째 보조 레지스터 초기화부(170-p)는 p번째 제1 큐비트(ap)와 제2 큐비트들(b1 내지 bN)의 부분 곱을 (p-1)번 왼쪽 시프트하여 제2 보조 큐비트들(c1 내지 cN)에 저장할 수 있다.
도 5는 도 2에 도시된 보조 레지스터 초기화부를 보다 상세하게 나타내는 회로도이다.
도 5를 참조하면, p번째 보조 레지스터 초기화부(170-p)는 (N-p+1)개의 제3 토폴리 게이트들(TG3-1 내지 TG3-(N-p+1), 이하 통칭하여 TG3)를 포함할 수 있다.
제3 토폴리 게이트들(TG3-1 내지 TG3-(N-p+1)) 중에서 r번째(r은 (N-p+1) 이하인 자연수) 제2 토폴리 게이트(TG3-r)는 p번째 제1 큐비트(ap)와 제2 큐비트들(b1 내지 bN) 중에서 r번째 제2 큐비트(br)를 입력으로 하고 제2 보조 큐비트들(c1 내지 cN) 중에서 (p+r-1)번째 제2 보조 큐비트(cp+r-1)를 출력으로 할 수 있다.
즉, r번째 제3 토폴리 게이트(TG3-r)는 p번째 제1 큐비트(ap)와 r번째 제2 큐비트(br)가 모두 '1'일 때 (p+r-1)번째 제2 보조 큐비트(cp+r-1)의 상태를 반전할 수 있다.
도 7은 도 2에 도시된 양자 모듈러 곱셈기의 일례를 보다 상세하게 나타내는 회로도이다.
양자 모듈러 곱셈기(100A)는 N이 5일 때, 즉, 가산되는 큐비트 레지스터들(A, B)이 다섯 자리일 때의 회로 구조의 일례를 나타낸다.
양자 모듈러 곱셈기(100A)에는 도 6에 도시된 가산부(150A)가 적용되어 있다.
양자 모듈러 곱셈기(100A)는 가산부(150A)의 특징에 따라 제1 보조 큐비트들(d1 내지 d5)와 제2 보조 큐비트들(c1 내지 c5)에 더하여 5개의 추가 보조 큐비트들(anc1-1 내지 anc1-4, anc2)이 필요하다.
양자 모듈러 곱셈기(100)는 N자리의 레지스터들(A, B)을 곱할 때 (6N)개의 큐비트들과 (11N2)개의 게이트들이 필요하며, (N2/2)의 양자 회로 깊이를 갖는다. 즉, 양자 모듈러 곱셈기(100)는 직렬 방식으로 곱셈 연산을 수행함으로써 큐비트들과 게이트들의 개수를 감소시킬 수 있다.
도 8은 본 발명의 제2 실시 예에 다른 양자 모듈러 곱셈 방법을 설명하기 위한 플로우 차트(flow chat)이며, 도 9는 본 발명의 제2 실시 예에 따른 양자 모듈러 곱셈기를 나타내는 블록도이다.
도 8 및 도 9를 참조하면, 양자 모듈러 곱셈기(200A)는 N자리 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)를 병렬 방식으로 모듈러 2N 곱셈할 수 있다.
양자 모듈러 곱셈기(200A)는 N자리 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)에 대한 곱셈을 수행하기 위해 N개의 보조 큐비트 레지스터들(C1 내지 CN)을 포함할 수 있다.
보조 큐비트 레지스터들(C1 내지 CN) 각각은 N개의 보조 큐비트들(c11 내지 c1N, c21 내지 c2N, cN1 내지 CNN 등)을 포함할 수 있다.
양자 모듈러 곱셈기(200A)는 제1 큐비트들(a1 내지 aN) 중에서 f번째(f는 N 이하인 자연수) 제1 큐비트(af)와 제2 큐비트들(b1 내지 bN)의 부분 곱을 (f-1)번 왼쪽 시프트(left shift)하여 f번째 보조 큐비트 레지스터(Cf)에 저장할 수 있다(보조 레지스터 설정 단계; S600).
보조 레지스터들(C1 내지 CN)이 모두 설정된 후, 양자 모듈러 곱셈기(200A)는 보조 레지스터들(C1 내지 CN)을 모듈러 2N 덧셈하고 모듈러 덧셈 결과를 보조 레지스터들(C1 내지 CN) 중에서 어느 하나, 예를 들어, N번째 보조 레지스터(CN)에 저장할 수 있다(가산 단계; S700).
양자 모듈러 곱셈기(200A)는, 계산 소요 시간을 감소시키기 위해, 토너먼트 방식으로 보조 레지스터들(C1 내지 CN)을 모듈러 2N 덧셈할 수 있다.
즉, 양자 모듈러 곱셈기(200A)는 제1 큐비트들(a1 내지 aN) 중에서 어느 하나와 제2 큐비트들(b1 내지 bN)의 부분 곱을 복수의 큐비트 레지스터(C1 내지 CN)에 설정하고 이를 토너먼트 방식으로 모듈러 덧셈하여 양자 모듈러 곱셈을 수행할 수 있다.
양자 모듈러 곱셈기(200A)는 N개의 보조 레지스터 설정부들(210-1 내지 210-N, 이하 통칭하여 210)과 가산부(230)를 포함할 수 있다.
도 10은 도 9에 도시된 보조 레지스터 설정부의 일 실시 예를 보다 상세하게 나타내는 회로도이다.
도 10을 참조하면, f번째 보조 레지스터 설정부(210-f)는 (N-f+1)개의 토폴리 게이트들(TG-1 내지 TG-(N-f+1))을 포함할 수 있다.
토폴리 게이트들(TG-1 내지 TG-(N-f+1)) 중에서 g번째(g는 (N-f+1) 이하인 자연수) 토폴리 게이트(TG-g)는 제1 큐비트들(a1 내지 aN) 중에서 f번째 제1 큐비트(af)와 제2 큐비트들(b1 내지 bN) 중에서 g번째 제2 큐비트(bg)를 입력으로 하고 f번째 보조 큐비트 레지스터(Cf)에 포함된 (f+g-1)번째 보조 큐비트(cff+g-1)를 출력으로 할 수 있다.
즉, g번째 토폴리 게이트(TG-g)는 f번째 제1 큐비트(af)와 g번째 제2 큐비트(bg)가 모두 '1'일 때 f번째 보조 큐비트 레지스터(Cf)에 포함된 (f+g-1)번째 보조 큐비트(cff+g-1)를 반전할 수 있다.
도 11은 도 9에 도시된 가산부의 일례를 보다 상세하게 나타내는 블록도이다.
도 11을 참조하면, N이 9일 때, 즉, 가산되는 큐비트 레지스터들(A, B)이 아홉 자리일 때의 가산부(230A)가 도시된다.
가산부(230)는 복수의 모듈러 2N 양자 가산기들(231)을 포함할 수 있다. 예를 들어, 가산부(230A)는 8개의 모듈러 2N 양자 가산기들(231-1 내지 231-8, 이하 통칭하여 231)을 포함할 수 있다.
모듈러 2N 양자 가산기들(231) 각각은 도 6에 도시된 가산부(150A)로 구성될 수 있다. 다만, 가산부(150A)의 구성은 일례일 뿐 본 발명의 기술적 사상은 이제 한정되지 않는다. 예를 들어, 모듈러 2N 양자 가산기들(231) 각각은 가산부(150A)로부터 변형되어 구성될 수 있다.
모듈러 2N 양자 가산기들(231)은 토너먼트 방식으로 보조 레지스터들(C1 내지 C9)을 모듈러 2N 덧셈을 수행할 수 있다.
첫번째 스테이지에서는 보조 레지스터들(C1 내지 C9)이 한쌍씩 짝을 이루어 모듈러 2N 양자 가산기들(231-1 내지 231-4)에 의해 모듈러 2N 덧셈되고, 덧셈 결과는 한쌍 중 어느 하나의 보조 레지스터에 저장된다. 이때, 보조 레지스터들(C1 내지 C9)의 개수가 홀수로서 짝을 이루지 못하는 제9 보조 레지스터(C9)는 그대로 유지된다.
두번째 스테이지부터는 이전 스테이지의 결과가 저장된 보조 레지스터들이 한쌍씩 짝을 이루어 모듈러 2N 덧셈되고, 덧셈 결과는 한쌍 중 어느 하나의 보조 레지스터에 저장된다.
최종적으로 하나의 보조 레지스터에 최종 가산 결과가 저장될 때까지 토너먼트 방식으로 모듈러 2N 덧셈이 수행된다.
도 12는 본 발명의 제3 실시 예에 따른 양자 모듈러 곱셈기를 나타내는 블록도이다.
도 9에 도시된 양자 모듈러 곱셈기(200A)와 도 12에 도시된 양자 모듈러 곱셈기(200B)는 레지스터 초기화부(250)를 제외하면 실질적으로 동일하므로 중복되는 설명은 생략한다.
도 12를 참조하면, 양자 모듈러 곱셈기(200B)는 레지스터 초기화부(250)를 포함할 수 있다.
레지스터 초기화부(250)는, 보조 레지스터 설정부들(210)에 의해 보조 레지스터들(C1 내지 CN)이 설정된 후, 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)를 초기화, 즉, 리셋할 수 있다.
레지스터 초기화부(250)를 이용해 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)를 초기화하고 초기화된 큐비트들(a1 내지 aN, b1 내지 bN)을 가산부(230)에서 모듈러 덧셈 수행시 필요한 추가 큐비트들로서 활용되게 함으로써 시스템, 즉, 양자 모듈러 곱셈기(200B)에 필요한 큐비트들의 개수를 감소시킬 수 있다.
도 13은 도 12에 도시된 양자 모듈러 곱셈기의 일례를 보다 상세하게 나타내는 회로도이다.
양자 모듈러 곱셈기(200C)는 N이 5일 때, 즉, 가산되는 큐비트 레지스터들(A, B)이 다섯 자리일 때의 회로 구조의 일례를 나타낸다.
양자 모듈러 곱셈기(200C)의 양자 모듈러 가산기들에는 도 6에 도시된 가산부(150A)가 적용될 수 있다. 다만, 게이트의 개수를 저감시키기 위해 상기 양자 모듈러 가산기들 중 일부에는 가산부(150A)가 변형, 예를 들어, 게이트들 중 일부를 생략할 수 있다.
가산부(150A)는, 앞서 설명한 바와 같이, 5개의 추가 보조 큐비트들(도 6의 (anc1[1], anc1[2], anc1[3], anc1[4] 및 anc2[0]))이 더 필요하지만, 가산 단계에서 추가 보조 큐비트들 대신 초기화된 제1 큐비트 레지스터(A)와 제2 큐비트 레지스터(B)를 이용하도록 구성함으로써 필요한 큐비트들의 개수를 저감할 수 있다.
양자 모듈러 곱셈기(200)는 N자리의 레지스터들(A, B)을 병렬 방식으로 곱할 때 N2개의 큐비트들과 (5N2)개의 게이트들이 필요하며, (2N)의 양자 회로 깊이를 갖는다. 즉, 양자 모듈러 곱셈기(200)는 병렬 방식으로 곱셈 연산을 수행함으로써 양자 회로 깊이를 감소시킬 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 양자 모듈러 곱셈기(직렬 방식)
110; 제1 보조 레지스터 설정부
130; 제2 보조 레지스터 설정부
150; 가산부
170; 보조 레지스터 초기화부
200; 양자 모듈러 곱셈기(병렬 방식)
210; 보조 레지스터 설정부
230; 가산부
250; 레지스터 초기화부

Claims (16)

  1. N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈기에 있어서,
    상기 제1 큐비트들 중에서 최하위 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 제1 보조 큐비트들에 저장하는 제1 보조 레지스터 설정부;
    상기 제1 큐비트들 중에서 p번째(p는 2 이상이며 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (p-1)번 왼쪽 시프트(left shift)하여 제2 보조 큐비트들에 저장하는 제2 보조 레지스터 설정부;
    상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 제1 보조 큐비트들에 저장하는 가산부; 및
    상기 제2 보조 큐비트들을 초기화하는 보조 레지스터 초기화부를 포함하며,
    상기 제2 보조 레지스터 설정부, 상기 가산부 및 상기 보조 레지스터 초기화부는 상기 p가 2 부터 N까지 증가하는 동안 반복하여 수행되는 양자 모듈러 곱셈기.
  2. 제1항에 있어서,
    상기 제1 보조 레지스터 설정부는,
    상기 최하위 제1 큐비트와 상기 제2 큐비트들 중에서 q번째(q는 N 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제1 보조 큐비트들 중에서 q번째 제1 보조 큐비트를 출력으로 하는 복수의 제1 토폴리 게이트들을 포함하는 양자 모듈러 곱셈기.
  3. 제2항에 있어서,
    상기 제2 보조 레지스터 설정부는,
    상기 p번째 제1 큐비트와 상기 제2 큐비트들 중에서 r번째(r은 (N-p+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (p+r-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제2 토폴리 게이트들을 포함하는 양자 모듈러 곱셈기.
  4. 제3항에 있어서,
    상기 보조 레지스터 초기화부는,
    상기 p번째 제1 큐비트와 상기 r번째 제2 큐비트를 입력으로 하고 상기 (p+r-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제3 토폴리 게이트들을 포함하는 양자 모듈러 곱셈기.
  5. 제1항에 있어서,
    상기 가산부는 상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 입력으로 하고 상기 제2 보조 큐비트들을 출력으로 하는 모듈러 2N 양자 가산기로 구성되는 양자 모듈러 곱셈기.
  6. 양자 모듈러 곱셈기에 의해 수행되는 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈 방법에 있어서,
    상기 제1 큐비트들 중에서 최하위 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 제1 보조 큐비트들에 저장하는 제1 보조 레지스터 설정 단계;
    상기 제1 큐비트들 중에서 p번째(p는 2 이상이며 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (p-1)번 왼쪽 시프트(left shift)하여 제2 보조 큐비트들에 저장하는 제2 보조 레지스터 설정 단계;
    상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 제1 보조 큐비트들에 저장하는 가산 단계; 및
    상기 제2 보조 큐비트들을 초기화하는 보조 레지스터 초기화 단계를 포함하며,
    상기 제2 보조 레지스터 단계, 상기 가산 단계 및 상기 보조 레지스터 초기화 단계는 상기 p가 2 부터 N까지 증가하는 동안 반복하여 수행되는 양자 모듈러 곱셈 방법.
  7. 제6항에 있어서,
    상기 제1 보조 레지스터 설정 단계는,
    상기 최하위 제1 큐비트와 상기 제2 큐비트들 중에서 q번째(q는 N 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제1 보조 큐비트들 중에서 q번째 제1 보조 큐비트를 출력으로 하는 복수의 제1 토폴리 게이트들을 이용해 수행되는 양자 모듈러 곱셈 방법.
  8. 제7항에 있어서,
    상기 제2 보조 레지스터 설정 단계는,
    상기 p번째 제1 큐비트와 상기 제2 큐비트들 중에서 r번째(r은 (N-p+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (r+p-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제2 토폴리 게이트들을 이용해 수행되는 양자 모듈러 곱셈 방법.
  9. 제8항에 있어서,
    상기 보조 레지스터 초기화 단계는,
    상기 p번째 제1 큐비트와 상기 r번째 제2 큐비트를 입력으로 하고 상기 (r+p-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 제3 토폴리 게이트들을 이용해 수행되는 양자 모듈러 곱셈 방법.
  10. 제6항에 있어서,
    상기 가산 단계는,
    상기 제1 보조 큐비트들과 상기 제2 보조 큐비트들을 입력으로 하고 상기 제2 보조 큐비트들을 출력으로 하는 모듈러 2N 양자 가산기를 이용해 수행되는 양자 모듈러 곱셈 방법.
  11. N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈기에 있어서,
    상기 제1 큐비트들 중에서 f번째(f는 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (f-1)번 왼쪽 시프트(left shift)하여 복수의 보조 레지스터들 중에서 f번째 보조 레지스터에 저장하는 복수의 보조 레지스터 설정부들; 및
    상기 복수의 보조 레지스터들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 복수의 보조 레지스터들 중에서 어느 하나에 저장하는 가산부를 포함하는 양자 모듈러 곱셈기.
  12. 제11항에 있어서,
    상기 복수의 보조 레지스터 설정부들 각각은,
    상기 f번째 제1 큐비트와 상기 제2 큐비트들 중에서 g번째(g는 (N-f+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (f+g-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 토폴리 게이트들을 포함하는 양자 모듈러 곱셈기.
  13. 제11항에 있어서,
    상기 가산부는 토너먼트 방식으로 상기 복수의 보조 레지스터들을 모듈러 덧셈하는 복수의 모듈러 2N 양자 가산기들로 구성되는 양자 모듈러 곱셈기.
  14. 양자 모듈러 곱셈기에 의해 수행되는 N자리(N은 2 이상인 자연수) 제1 큐비트들과 N자리 제2 큐비트들을 곱하는 양자 모듈러 곱셈 방법에 있어서,
    상기 제1 큐비트들 중에서 f번째(f는 N 이하인 자연수) 제1 큐비트와 상기 제2 큐비트들의 부분 곱을 (f-1)번 왼쪽 시프트(left shift)하여 복수의 보조 레지스터들 중에서 f번째 보조 레지스터에 저장하는 보조 레지스터 설정 단계; 및
    상기 복수의 보조 레지스터들을 모듈러 덧셈하고 모듈러 덧셈 결과를 상기 복수의 보조 레지스터들 중에서 어느 하나에 저장하는 가산 단계를 포함하는 양자 모듈러 곱셈 방법.
  15. 제14항에 있어서,
    상기 보조 레지스터 설정 단계는,
    상기 f번째 제1 큐비트와 상기 제2 큐비트들 중에서 g번째(g는 (N-f+1) 이하인 자연수) 제2 큐비트를 입력으로 하고 상기 제2 보조 큐비트들 중에서 (f+g-1)번째 제2 보조 큐비트를 출력으로 하는 복수의 토폴리 게이트들을 이용해 수행되는 양자 모듈러 곱셈 방법.
  16. 제14항에 있어서,
    상기 가산 단계는,
    토너먼트 방식으로 상기 복수의 보조 레지스터들을 모듈러 2N 덧셈하는 양자 모듈러 곱셈 방법.
KR1020200092365A 2020-07-24 2020-07-24 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법 KR102204081B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200092365A KR102204081B1 (ko) 2020-07-24 2020-07-24 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
US18/017,655 US20230316121A1 (en) 2020-07-24 2021-04-28 Efficient quantum modular multiplier and quantum modular multiplication method
PCT/KR2021/005372 WO2022019443A1 (ko) 2020-07-24 2021-04-28 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200092365A KR102204081B1 (ko) 2020-07-24 2020-07-24 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법

Publications (1)

Publication Number Publication Date
KR102204081B1 true KR102204081B1 (ko) 2021-01-15

Family

ID=74127166

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200092365A KR102204081B1 (ko) 2020-07-24 2020-07-24 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법

Country Status (1)

Country Link
KR (1) KR102204081B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022019443A1 (ko) * 2020-07-24 2022-01-27 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
CN115809042A (zh) * 2021-09-14 2023-03-17 合肥本源量子计算科技有限责任公司 量子模数加法运算方法、装置、电子装置及模数算术组件
CN115879555A (zh) * 2021-09-28 2023-03-31 合肥本源量子计算科技有限责任公司 量子模数快速乘法运算方法、装置及模数算术组件
CN115879553A (zh) * 2021-09-28 2023-03-31 合肥本源量子计算科技有限责任公司 量子模数完整乘法运算方法、装置及模数算术组件

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010086516A (ko) * 2000-03-02 2001-09-13 윤종용 효과적인 승산 및 누산 기능을 갖는 보조프로세서
KR20040045152A (ko) * 2002-11-22 2004-06-01 한국전자통신연구원 모듈러 곱셈 장치
JP2006338185A (ja) * 2005-05-31 2006-12-14 Nippon Telegr & Teleph Corp <Ntt> 量子演算装置及び量子回路を用いた量子演算方法
KR20080050226A (ko) * 2006-12-01 2008-06-05 한국전자통신연구원 모듈러 곱셈 장치 및 설계 방법
KR20090090219A (ko) * 2008-02-20 2009-08-25 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
JP2010218513A (ja) * 2009-03-19 2010-09-30 Nippon Telegr & Teleph Corp <Ntt> 量子演算方法、量子演算装置、量子回路

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010086516A (ko) * 2000-03-02 2001-09-13 윤종용 효과적인 승산 및 누산 기능을 갖는 보조프로세서
KR20040045152A (ko) * 2002-11-22 2004-06-01 한국전자통신연구원 모듈러 곱셈 장치
JP2006338185A (ja) * 2005-05-31 2006-12-14 Nippon Telegr & Teleph Corp <Ntt> 量子演算装置及び量子回路を用いた量子演算方法
KR20080050226A (ko) * 2006-12-01 2008-06-05 한국전자통신연구원 모듈러 곱셈 장치 및 설계 방법
KR20090090219A (ko) * 2008-02-20 2009-08-25 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
JP2010218513A (ja) * 2009-03-19 2010-09-30 Nippon Telegr & Teleph Corp <Ntt> 量子演算方法、量子演算装置、量子回路

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022019443A1 (ko) * 2020-07-24 2022-01-27 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
CN115809042A (zh) * 2021-09-14 2023-03-17 合肥本源量子计算科技有限责任公司 量子模数加法运算方法、装置、电子装置及模数算术组件
CN115879555A (zh) * 2021-09-28 2023-03-31 合肥本源量子计算科技有限责任公司 量子模数快速乘法运算方法、装置及模数算术组件
CN115879553A (zh) * 2021-09-28 2023-03-31 合肥本源量子计算科技有限责任公司 量子模数完整乘法运算方法、装置及模数算术组件

Similar Documents

Publication Publication Date Title
KR102204081B1 (ko) 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
CN107807819B (zh) 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
Draper et al. A logarithmic-depth quantum carry-lookahead adder
JP4290202B2 (ja) ブース乗算の装置および方法
EP3444757B1 (en) Discrete data representation supported device and method for forward operation of artificial neural network
CN112114776A (zh) 一种量子乘法运算方法、装置、电子装置及存储介质
El-Slehdar et al. Memristor based N-bits redundant binary adder
CN107066234B (zh) 一种量子乘法器的设计方法
CN110543939A (zh) 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构
Bonny et al. Emulation of high-performance correlation-based quantum clustering algorithm for two-dimensional data on FPGA
KR102214836B1 (ko) 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
JPWO2019155910A1 (ja) ニューラル電子回路
US4293922A (en) Device for multiplying binary numbers
US20230316121A1 (en) Efficient quantum modular multiplier and quantum modular multiplication method
KR20220049212A (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
Mironov et al. Analysis of multiplier architectures for neural networks hardware implementation
Zakablukov On asymptotic gate complexity and depth of reversible circuits without additional memory
CN115526961A (zh) 基于Grover算法的图着色模拟方法及系统
Thapliyal et al. Quantum carry lookahead adders for NISQ and quantum image processing
Margem et al. Reservoir Computing Based on Cellular Automata (ReCA) in Sequence Learning.
Larasati et al. Simulation of modular exponentiation circuit for shor's algorithm in qiskit
KR102658003B1 (ko) 효율성이 향상된 양자 가산기 및 가산 방법
Gorodecky et al. Efficient hardware operations for the residue number system by boolean minimization
EP4275157A1 (en) Method and system for privacy-preserving logistic regression training based on homomorphically encrypted ciphertexts
JP4290203B2 (ja) リダクションアレイの装置および方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant