IBM QX로 배우는 양자 컴퓨팅 [양자 컴포저와 키스킷을 활용한 양자 컴퓨팅의 이해]
- 원서명Mastering Quantum Computing with IBM QX: Explore the world of quantum computing using the Quantum Composer and Qiskit (ISBN 9781789136432)
- 지은이크리스틴 콜벳 모란(Dr. Christine Corbett Moran)
- 옮긴이황진호
- ISBN : 9791161753799
- 30,000원
- 2019년 12월 31일 펴냄
- 페이퍼백 | 364쪽 | 188*235mm
- 시리즈 : 양자 컴퓨팅, 클라우드 컴퓨팅
책 소개
2020년 대한민국학술원 우수학술도서 선정도서
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
양자 컴퓨팅의 원리부터 양자 컴퓨팅을 실제로 적용할 수 있는 영역까지 다룬다. 양자 컴포저와 키스킷을 이용해 양자 개발 환경을 제공하는 IBM 생태계를 살펴본다. 더 나아가 양자 프로세서에서 알고리즘을 구현하고, 양자 계산을 실제로 실행하는 방법을 배운다. 이 책을 읽고 나면 자신의 양자 프로그램을 작성하는 방법, 산업에 양자 컴퓨팅이 미칠 영향, 미래의 프로그래밍 직업에 양자 컴퓨팅을 적용하는 방법 등을 완전히 이해할 수 있을 것이다.
이 책에서 다루는 내용
■ 양자 컴퓨팅의 핵심 개념과 원리
■ 양자 원리를 적용할 수 있는 영역
■ 양자 논리로 프로그램 디자인
■ 양자 컴퓨터가 계산하는 방법과 원리
■ 쇼어와 그로버의 알고리즘을 포함한 중요한 양자 계산 알고리즘
■ 산업 영역에서의 양자 컴퓨팅 잠재성 분석
이 책의 대상 독자
양자 컴퓨팅을 배우길 원하는 개발자나 데이터 과학자에게 좋은 참고서가 될 것이다. 이 책을 읽기 전에 파이썬 언어를 기본적으로 이해하고 있어야 하지만 물리학, 양자역학, 고급 수학 관련 지식이 꼭 필요한 것은 아니다.
이 책의 구성
1장, ‘양자 컴퓨팅이란 무엇인가?’에서는 전통적인 컴퓨팅 방식의 컴퓨터와 비교했을 때 양자 컴퓨터의 잠재적인 장점을 무엇인지 설명한다. 전통적인 컴퓨팅과 양자 컴퓨팅의 역사를을 알아보고, 컴퓨팅의 최신 기술을 살펴본다.
2장, ‘큐빗’에서는 블로흐 스피어(Bloch sphere)를 소개하고 개별 큐빗의 중첩과 측정을 설명한다. 큐빗이 왜 양자 컴퓨팅의 기본 개념이 되는지 알아보고, 파이썬에서 시뮬레이션해 직접 코드를 살펴본다. 여기서 중첩(superposition)에 관해 논의하고, 하나의 큐빗이 나타내는 세 개의 다른 표현을 살펴보는 파이썬 코드를 사용한다.
3장, ‘양자 상태, 양자 레지스터 그리고 측정’에서는 전통적인 레지스터의 양자 버전인 양자 레지스터와 양자 상태를 보관하는 방법을 알아본다. 나아가 분리 가능한 상태와 얽힘(entanglement)에 관해 논의하고, 얽혀있는 여러 개의 큐빗에 대한 양자를 측정하고, 파이썬으로 구현해봄으로써 집중적으로 다룬다.
4장, ‘양자 게이트로 양자 상태 전개하기’에서는 양자 컴퓨팅을 실행하기 위해 합쳐질 수 있는 일반적인 게이트 집합을 형성하고 가장 흔하게 사용되는 게이트인 I, X, Y, Z, H, S, S†, T, T†, CNOT를 설명한다. 또한 이렇게 사용되는 양자 게이트의 파이썬 구현을 제공하고, 지금껏 살펴본 양자 상태에 적용되는 게이트의 파이썬 예제를 살펴본다.
5장, ‘양자 회로’에서는 전통적인 회로와 같은 양자 회로를 소개하기 위해 양자 게이트의 개념을 확장한다. 이 장에서는 어떻게 전통적인 게이트가 양자 회로에서 재생산될 수 있는지 확인하고, 복잡한 수학이나 프로그래밍 언어를 사용하지 않고 양자 회로를 쉽게 정의하 는데 사용할 수 있는 양자 회로를 시각적으로 표현한다.
6장, ‘양자 컴포저’에서는 양자 회로를 시각적으로 보여주는 양자 스코어(scores)를 통해 양자 회로를 만드는 데 사용되는 IBM QX의 사용자 인터페이스를 알아본다. 양자 컴포저로 IBM QX 하드웨어나 소프트웨어 시뮬레이터에 구현할 자신의 양자 회로를 정의할 수 있다. 더불어 이전에 사용한 파이썬 코드를 양자 컴포저 표현으로 변환하고, 이를 IBM QX 하드웨어에서 구동할 기회를 제공한다.
7장, ‘OpenQASM 다루기’에서는 오픈 양자 어셈블리 언어(Open Quantum Assembly Language)를 설명한다. 줄여서 오픈 카즘(open kazm)으로 발음한다. 이 언어는 IBM QX 내에서 사용될 수 있다. 이 장에서는 이전에 정의한 양자 회로를 다시 확인하고, OpenQASM 언어에서 다시 정의한다. 이렇게 OpenQASM으로 재정의된 양자 회로는 IBM QX에서 실행할 기회를 제공한다.
8장, ‘키스킷과 양자 컴퓨터 시뮬레이션’에서는 키스킷(Quantum Information Software Kit)을 소개한다. 클라우드를 통해 IBM QX에서 키스킷으로 프로그램을 구동하는 방법과 양자 시뮬레이션의 기능에 초점을 두고 설명한다. 양자 회로, 측정, 키스킷 사용 개념을 키스킷을 사용하는 프로젝트에서 확인하면서 양자 컴퓨터를 사용해 음악 화음을 표현하는 유용한 데모를 만든다.
9장, ‘양자 AND (토폴리) 게이트와 양자 OR 게이트’에서는 양자 컴퓨터로 그로버(Grover)나 다른 알고리즘의 논리적인 문제를 해결하기 위해, 이진 논리 게이트와 동일한 양자 게이트를 살펴본다.
10장, ‘그로버의 알고리즘’에서는 전통적인 구현과 양자 구현을 비교해 그로버의 알고리즘을 설명한다. 이후 해당 알고리즘을 OpenQASM, 키스킷, 양자 스코어로 구현한다.
11장, ‘양자 푸리에 변환’에서는 양자 푸리에 변환을 설명한다. 이는 쇼어(Shor)의 알고리즘을 포함한 많은 중요한 양자 알고리즘의 하위 루틴이 된다. 이에 비교해 전통적인 컴퓨터에서 표현되는 신호의 푸리에 변환이 되는 불연속형 푸리에 변환을 계산하는 전통적인 알고리즘을 보여준다. 마지막으로 양자 푸리에 변환 알고리즘을 OpenQASM, 키스킷, 양자 스코어로 구현한다.
12장, ‘쇼어 알고리즘’에서는 쇼어 알고리즘을 설명하고 소인수분해를 사용하는 전통적인 알고리즘 구현과 비교해 살펴본다. 그리고 키스킷에서 쇼어 알고리즘을 구현한다.
13장, ‘양자 오류 정정’에서는 양자 오류 전파 문제를 설명하고, 양자 오류 정정(QEC, Quantum Error Correction)의 필요성을 알아본 뒤 간단한 QEC 알고리즘을 구현한다.
14장, ‘결론–양자 컴퓨터의 미래’에서는 배운 내용을 다시 살펴보고 양자 컴퓨팅의 명확한 이해를 돕는다. 그리고 양자 계산과 양자 컴퓨팅 프로그램 능력이 필요한 곳을 검토해본다. 또한 왜 양자 물리학자가 아닌 일반 기업가, 프로그래머, 기술자 등이 양자 컴퓨팅에 관심을 가질 가능성이 높은지 알아본다.
목차
목차
- 1장. 양자 컴퓨팅이란 무엇인가?
- 기술적인 필요 사항
- 양자 컴퓨터란 무엇인가?
- 양자 컴퓨터의 사용
- 전문가 의견–왜 양자 컴퓨터가 중요한가?
- 양자 컴퓨팅의 역사, 현재 그리고 미래
- 양자 컴퓨팅의 역사
- 양자 컴퓨팅의 현재 상황
- 양자 컴퓨팅의 미래
- 파이썬 코드 예제 설정과 실행
- 책에서 사용된 코드 다운로드하기
- 주피터 노트북 설정
- IBM QX 예제 설정과 실행
- 헬로 양자 월드
- API 키
- 키스킷 예제 설정과 실행
- 요약
- 연습 문제
- 2장. 큐빗
- 기술적인 필요 조건
- 큐빗
- 큐빗 저장하기
- 큐빗 시뮬레이션
- |“0”>과 |“1”>
- |“0”>과 |“1”>의 조합
- 큐빗의 세 가지 다른 형태의 표현
- 0과 1 기초–추가적인 설명
- 플러스 마이너스 기초
- 시계 방향과 반시계 방향 기초
- 블로흐 구
- 블로흐 구에 표현된 |“0”>과 |“1”> 그리고 다른 기초
- 큐빗에서 블록 좌표
- 블로흐 구에 블록 좌표 나타내기
- 큐빗의 중첩과 측정
- 큐빗의 양자 중첩
- 큐빗의 양자 측정
- 블로흐 구에서 하나의 큐빗 측정
- 요약
- 연습 문제
- 3장. 양자 상태, 양자 레지스터 그리고 측정
- 기술적인 필요 조건
- 양자 상태와 레지스터
- 분리 가능한 상태
- 얽힘
- 양자 측정과 얽힘
- 파이썬에서 양자 측정 시뮬레이션하는 알고리즘
- 결잃음, T1 그리고 T2
- 결잃음
- T1과 T2
- 요약
- 연습 문제
- 4장. 양자 게이트로 양자 상태 전개하기
- 기술적인 필요 조건
- 게이트
- 전통적인 게이트
- 양자 게이트
- 상태에 대한 게이트 동작
- 하나의 큐빗 게이트
- 하다마드 게이트(H)
- 폴리(Pauli) 게이트(X, Y, Z)
- 페이즈 게이트(S)와 π/8 게이트(T)
- 다수 큐빗 게이트
- CNOT 게이트
- 요약
- 연습 문제
- 5장. 양자 회로
- 기술적인 필요 조건
- 양자 회로와 양자 회로 도표
- 양자 회로를 만들기 위해 키스킷 사용하기
- 키스킷에서 하나의 큐빗 회로
- 키스킷의 양자 회로 클래스와 보편적인 게이트 메소드
- 키스킷에서 다수 큐빗 게이트
- 키스킷 회로에서 전통적인 레지스터
- 키스킷 회로에서 측정
- 되돌릴 수 있는 계산
- 유용한 양자 회로
- 2진 입력을 준비하기 위해 X 게이트 사용하기
- 두 개의 큐빗 바꾸기
- 요약
- 연습 문제
- 6장. 양자 컴포저
- 기술적인 필요 조건
- 양자 컴포저
- 하드웨어
- 게이트, 작업, 장벽
- 양자 회로를 양자 컴포저로 옮기기
- 양자 컴포저에서 시뮬레이션이나 하드웨어로 구동하기
- 시뮬레이션에서 양자 회로 실행하기
- 양자 컴퓨팅 하드웨어에서 양자 회로 실행하기
- 요약
- 연습 문제
- 7장. OpenQASM 다루기
- 기술적인 필요 조건
- OpenQASM
- OpenQASM 프로그램을 양자 스코어로 변환하기
- 하나의 큐빗을 부정하는 OpenQASM
- 두 개의 큐빗에 게이트를 적용하고, 첫 번째 큐빗을 측정하는 OpenQASM
- OpenQASM 2.0 프로그램에서 양자 스코어 나타내기
- IBM QX와 인터페이스하는 OpenQASM 사용하기
- 고급 OpenQASM 사용법
- 큐빗 초기화
- if문
- 사용자 정의 게이트와 프리미티브 게이트
- 프리미티브 게이트 CX와 U
- 불투명한 게이트
- 요약
- 연습 문제
- 8장. 키스킷과 양자 컴퓨터 시뮬레이션
- 기술적인 필요 조건
- 키스킷 설치와 사용법
- 키스킷 설치 테스트
- 키스킷으로 OpenQASM 사용하기
- 키스킷 아쿠아 소개와 설치
- 키스킷 테라–기준 프로젝트
- MIDI 명세의 간단한 소개
- MIDI로 양자 컴퓨팅 살펴보기
- 요약
- 연습 문제
- 9장. 양자 AND (토폴리) 게이트와 양자 OR 게이트
- 기술적인 필요 조건
- 2진 충족 가능 문제
- 3SAT 전통적인 구현
- 3SAT–왜 이 문제가 흥미로운가?
- 양자 AND와 OR
- 토폴리 게이트–양자 AND 게이트
- 양자 OR 게이트
- 여러 큐빗의 양자 AND와 OR
- 3SAT 양자 회로 구현
- 요약
- 연습 문제
- 10장. 그로버의 알고리즘
- 기술적인 필요 조건
- 그로버 알고리즘의 개요와 예제
- 그로버 알고리즘 단계
- 그로버 알고리즘 체커로써의 3SAT
- 키스킷에서 2개-큐빗 그리고 3개-큐빗 양자 AND (토폴리)
- 키스킷에서 2개-큐빗 그리고 3개-큐빗 양자 OR
- 게이트와 되돌리기 테스트하기
- 그로버 알고리즘으로 3SAT 문제 해결
- 키스킷에서 오라클 구현
- 3satmystery_3 함수 테스트
- 무버 단계 구현
- 전체 알고리즘 설정
- 키스킷에서 알고리즘 실행
- 요약
- 연습 문제
- 11장. 양자 푸리에 변환
- 전통적인 푸리에 변환
- 사인 파동
- 실질적인 푸리에 변환
- 양자 푸리에 변환
- 양자 푸리에 변환 구현
- 파이썬에서 제어된 회전 게이트 Rk 구현
- QFT 회로
- IBM QX에서 QFT 회로 구현
- IBM QX에서 REV 게이트 구현
- IBM QX에서 Rk 게이트 구현
- IBM QX에서 1-큐빗 QFT
- IBM QX에서 2-큐빗 QFT
- IBM QX에서 3-큐빗 QFT
- 일반화
- 요약
- 연습 문제
- 전통적인 푸리에 변환
- 12장. 쇼어 알고리즘
- 쇼어 알고리즘
- 큰 정수를 효과적으로 인수분해하는 것은 현대 암호화 기법에 영향을 미침
- 쇼어 알고리즘 개요
- 쇼어 알고리즘 설명
- 기호/수학으로 쇼어 알고리즘 설명
- 쇼어 알고리즘 예제
- N이 소수 N = 7인 예제
- N이 두 소수의 곱이고, N은 작고, N = 15인 예제
- N이 두 소수의 곱이고, N은 크고, N = 2257인 예제
- N이 소수와 소수가 아닌 수의 곱이고, N = 837인 예제
- 쇼어 알고리즘 파이썬 구현
- 쇼어 알고리즘–전통적인 구현
- 쇼어 알고리즘–양자 구현
- N = 15, a = 2로 양자 컴퓨터에서 구현하는 예제
- 양자 컴퓨터에서 주기를 찾은 이후 동작 확인
- 양자 컴퓨터에서 N = 35, a = 8인 예제 구현
- 요약
- 연습 문제
- 쇼어 알고리즘
- 13장. 양자 오류 정정
- 양자 오류
- 하드웨어 오류, 비트 반전 오류 설명
- 시뮬레이터에서 모델링 오류
- 양자 오류 정정
- 하나의 비트 반전 오류 정정
- 하나의 위상 반전에 대한 양자 오류 정정
- 쇼어 코드–하나의 비트와/또는 위상 반전
- 요약
- 연습 문제
- 양자 오류
- 14장. 결론–양자 컴퓨팅의 미래
- 양자 컴퓨팅의 중요 개념
- 양자 컴퓨팅이 유용할 분야
- 양자 컴퓨팅에 대한 비관론
- 양자 컴퓨팅에 관한 낙관론
- 양자 컴퓨팅에 대한 마지막 생각
- 부록
- 유용한 수학 기법
- 합
- 복소수
- 선형대수
- 행렬의 큐빗, 상태, 게이트
- 큐빗
- 게이트
- 양자 측정
- 유용한 수학 기법