양자 컴퓨터 프로그래밍 [IBM Q Experience로 하는 양자 컴퓨터 프로그래밍]
- 원서명Practical Quantum Computing for Developers: Programming Quantum Rigs in the Cloud using Python, Quantum Assembly Language and IBM QExperience (ISBN 9781484242179)
- 지은이블라디미르 실바(Vladimir Silva)
- 옮긴이이정문
- ISBN : 9791161753393
- 35,000원
- 2019년 09월 16일 펴냄 (절판)
- 페이퍼백 | 400쪽 | 188*235mm
- 시리즈 : 양자 컴퓨팅, 클라우드 컴퓨팅
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
2020년 대한민국학술원 우수학술도서 선정도서
요약
새로운 분야인 양자 컴퓨팅에서 프로그램을 작성하는 방법을 설명하는 책이다. 우선, 양자 역학이 우리의 직관과 어떻게 다르게 동작하는지 주요 개념을 소개한 후, 양자 컴퓨터의 특징인 큐빗, 얽힘, 논리 게이트 등을 설명한다. 그리고 QISKit, 파이썬 SDK, QASM를 사용해서 IBM의 Q Experience 클라우드 양자 플랫폼에서 프로그램을 작성하고 실행하는 방법을 안내한다. 그로버와 쇼어 알고리즘, 양자 컴퓨터의 킬러 애플리케이션 후보인 양자 순간이동에 대한 설명도 빼놓지 않는다.
이 책에서 다루는 내용
■ IBM Q Experience를 사용해 프로그램과 실험을 시각적으로 작성해서 클라우드상의 양자 시뮬레이터 및 실제 양자 장치에 제출하는 방법
■ IBM Q Experience의 REST API를 사용해 프로그램을 원격으로 실행하는 방법
■ 고전 컴퓨터보다 성능이 우수한 알고리즘을 작성하는 방법
■ 인증, 원격 장치 열거, 양자 프로세서에 관한 정보 조회
■ 클라우드에서 원격으로 실험을 열거 및 실행할 수 있는 Node.js REST 클라이언트를 구축하는 방법
■ 양자 숫자 생성기 작성
■ 양자 순간 이동의 발견
■ 고전적인 전함 게임의 양자 버전을 예제로 사용해 단일 큐빗 연산의 심화 학습
■ 위조 동전 문제
이 책의 구성
1장, 양자역학의 기이하고 놀라운 세계
모든 것은 1930년대 어쩔 수 없이 천재라고 여겨진 막스 플랑크(Max Planck)로부터 시작됐다. 플랑크는 빛 스펙트럼의 에너지 분포에 대한 새로운 해석을 제시했다. 광자의 에너지는 고전 물리학자들이 믿는 것처럼 연속적인 함수로 기술되는 것이 아니고 플랑크가 양자(quanta)라고 부른 덩어리로 기술된다고 어쩔 수 없이 가정했다. 20세기 과학에서 가장 위대한 혁명, 즉 양자역학을 태동시킨 것이다. 1장은 본격적인 탐구에 들어가기 전의 애피타이저로, 2명의 물리학 거장 알버트 아인슈타인과 닐스 보어 간의 의견 충돌을 소개한다.
1930년대에 양자역학은 혁명적인 이론이었으므로 20세기 최고의 물리학자였던 아인슈타인을 포함해 많은 과학자가 받아들이기를 꺼려했다. 노벨물리학상 수상자이기도 했던 아인슈타인은 양자역학의 확률적 속성을 결코 받아들이지 않았다. 이 때문에 양자역학의 거두였던 닐스 보어와의 관계에 균열이 발생했다. 두 사람은 수십 년에 걸쳐 논쟁을 벌였으며, 끝끝내 의견차를 좁히지 못했다. 양자역학은 70년 동안 이론적, 실험적으로 수많은 도전을 받았으나 항상 논쟁에서 승리했다.
1장을 통해 두 명의 위대한 물리학자 사이의 흥미로운 이야기와 함께 양자역학의 바탕이 된 이론, 실험, 그리고 그 결과를 탐구한다.
2장, 양자 컴퓨팅: 현실의 구조 자체를 바꾼다
1980년대 또 다른 위대한 물리학자 리처드 파인만은 양자역학의 원리를 이용해 문제를 더 빨리 해결할 수 있는 컴퓨터, 즉 양자 컴퓨터를 제안한다. 양자 컴퓨터를 제작하기 위한 경쟁은 이미 시작됐다. 2장에서는 일반적인 용어를 사용해서 양자 컴퓨터의 기본적인 아키텍처, 즉 양자 계산의 기본 단위인 큐빗(qubit)을 탐구한다. 큐빗은 거의 마법과 같은 성질을 갖고 있는데, 바로 중첩(superposition)이다. 놀랍게도 큐빗은 동시에 0과 1, 두 개의 상태를 가질 수 있다. 이 개념은 우리가 살고 있는 거시적 규모에서는 이해하기 어렵다. 하지만 원자 규모에서는 현실 세계의 상식이 통하지 않으며, 이 사실은 70년 이상 실험적으로 입증됐다. 중첩 덕분에 양자 컴퓨터는 비교적 적은 수의 큐빗으로 대규모 계산을 수행해서 고전적인 컴퓨터를 능가할 수 있다. 상식을 뛰어넘는 큐빗의 또 다른 놀라운 성질은 큐빗의 얽힘(entanglement)이다. 얽힘은 알면 알수록 물리 법칙이 아니라 부두교 주술처럼 보이는 현상이다. 서로 얽힌 큐빗을 관찰하는 순간, 시간과 공간의 제약을 넘어서 빛의 속도보다 빠르게 상태 정보가 전송된다! 상식으로는 이해할 수 없는 현상이다.
2장에서는 양자 컴퓨터의 물리적 구성 요소인 양자 게이트와 초전도 루프, 이온 덫, 위상학 끈 등의 다양한 큐빗 설계 원리를 탐구한다. 또한 양자 컴퓨터 개발에 나선 주요 기업들의 현재 상황뿐 아니라 양자 어닐링과 같이 조금 다른 유형의 양자 계산을 소개한다.
3장, IBM Q Experience 시작: 유일무이한 클라우드 양자 컴퓨팅 플랫폼
3장에서는 IBM Q Experience에 발을 담근다. IBM Q Experience는 일반 대중이 사용할 수 있는 최초의 클라우드 양자 컴퓨팅 플랫폼으로, 실제 양자 장치 혹은 시뮬레이터를 제공한다. 전통적으로 실제 양자 장치는 연구 목적으로만 사용됐지만, 수십 년간 양자 컴퓨터를 개발해 온 IBM의 좋은 사람들이 일반에게 공개한 덕분에 우리들도 양자 컴퓨터를 사용할 수 있게 됐다.
시각적 작성 도구인 컴포저를 사용해 양자 회로를 만드는 방법과 여러분의 프로그래밍 열정을 위해 파이썬 SDK를 사용한 프로그램 작성 방법을 배운다. 그런 다음 실제 회로를 실행하고, 결과를 조사하고, 양자 프로그래머로서의 새로운 경력을 쌓기 위한 첫걸음을 내딛는다. IBM이 최초의 클라우드 양자 컴퓨팅 플랫폼을 내놓았지만 경쟁자들도 바짝 뒤쫓고 있다. 가까운 미래에 다른 IT업체들도 클라우드 양자 플랫폼을 발표할 것이다. 지금이야말로 배워야 할 때다.
4장, QISKit: 파이썬으로 양자 프로그램을 작성할 수 있는 멋진 SDK
QISKit은 Quantum Information Software Kit의 약자로, 클라우드 또는 로컬 시뮬레이터에서 양자 프로그램을 작성하기 위한 파이썬 SDK다. 4장에서는 먼저 PC에 파이썬 SDK를 설치하는 방법을 배운다. 다음으로 선형 대수학을 사용해 양자 게이트를 기술하고 내부적으로 어떤 일이 일어나는지 더 깊이 이해한다. 이는 첫 번째 양자 프로그램을 작성하기 전의 애피타이저며, 첫 번째 양자 프로그램은 파이썬 SDK의 구문에 익숙해지기 위해 아주 간단한 프로그램을 사용한다. 마지막으로 실제 양자 장치에서 실행한다. 물론 컴포저에서 시각적인 도구를 사용해 양자 프로그램을 작성할 수도 있다. 양자 프로그램의 기본 구성 요소인 양자 게이트에 대해 자세히 이해하는 것이 중요하다. 4장에서는 이와 관련된 모든 내용을 다룬다.
5장, 시동을 켜시오: 양자 난수, 양자 텔레포테이션, 초고밀도 코딩
5장에서는 양자 시스템의 뛰어난 정보처리 능력 3가지를 설명한다. 양자 난수 생성은 진정한 무작위성을 제공하는 양자역학의 성질을 탐색한다. 매우 간단한 논리 게이트와 파이썬 SDK를 사용해 양자 난수 생성을 어떻게 달성할 수 있는지 배운다. 다음으로 서로 관련을 갖는 정보처리 프로토콜인 초고밀도 코딩과 양자 텔레포테이션을 설명한다. 이 프로토콜들은 이름만큼이나 불가사의한 특징이 있다. 이 프로토콜들의 비밀을 발견하고, 컴포저에서 회로를 작성하고, 파이썬을 사용해 원격으로 실행하며, 최종적으로 결과를 해석하고 검증한다.
6장, 양자 게임으로 놀아보자
6장에서는 양자 컴퓨터로 기본적인 게임을 구현하는 방법을 학습한다. 이를 위해 QISKit 파이썬 튜토리얼과 함께 배포되는 전형적인 양자 전함 게임을 사용한다. 전반부에서는 게임의 동작 원리를 주로 살펴보지만 여기서 멈추지 않는다. 후반부에서는 게임의 외관을 대폭 업그레이드함으로써 한 단계 진화한다. 웹 브라우저 기반의 사용자 인터페이스, 이벤트를 소비하고 양자 시뮬레이터로 보내는 아파치 CGI 인터페이스 등의 기능을 추가하면서 양자 전함 게임을 클라우드에 배포한다. 클라우드의 웹 브라우저로 양자 전함 게임을 플레이하면서 친구와 가족을 감동시키자.
7장, 게임 이론: 양자역학에서 확률은 언제나 호의적이다
게임 이론은 양자역학에서도 신기하다. 7장에서는 고전적 알고리즘에 비해 양자 알고리즘의 놀라운 힘을 보여주는 2개의 게임 퍼즐인 위조 동전 퍼즐과 머민-페레즈 매직스퀘어를 살펴본다.
위조 동전 퍼즐의 경우 양자 알고리즘은 양팔 저울을 제한된 횟수만큼 사용해 가짜 동전을 찾을 때 고전적 알고리즘보다 4차 속도 향상을 보여준다. 머민-페레즈 매직스퀘어는 양자 의사(pseudo) 텔레파시, 즉 게임을 하는 플레이어들 간에 서로 의사소통을 하지 않고서는 불가능한 결과를 보여주는 능력의 예다.
8장, 그로버와 쇼어 알고리즘을 통한 검색 속도 향상과 비대칭 암호화 위협
8장에서는 실용적인 양자 계산의 가능성에 대한 흥분을 불러일으킨 2개의 알고리즘을 소개하며 책을 마무리한다. 그로버(Grover)의 검색 알고리즘은 평균적으로 N의 제곱근 단계 만에 값을 찾을 수 있는 비구조적 양자 검색 알고리즘으로, 최고의 고전적 알고리즘이 N/2 단계에 값을 찾는 것에 비해 훨씬 빠른 속도를 보여준다. 그렇게 큰 차이가 아니라고 생각할지 모르지만, 대규모의 데이터베이스들이 처리되는 데이터 센터에서 이 알고리즘의 잠재력은 엄청나다. 미래에는 그로버의 알고리즘이 모든 웹 검색을 수행할 날이 올 것이다. 쇼어의 소인수분해 알고리즘은 많은 전문가가 현재 주류인 비대칭 암호화 체계를 무릎 꿇릴 것으로 예상할 정도로 유명하다. 최고의 고전적 알고리즘보다 지수적으로 빠른 속도를 제공하며, 양자 계산의 힘을 보여주는 가장 좋은 예다.
상세 이미지
목차
목차
- 1장. 양자역학의 기이하고 놀라운 세계
- 20세기의 물리학 황금시대
- 막스 플랑크와 자외선 파탄이 모든 것의 시작
- 보어의 양자 도약
- 두 거물의 충돌: 양자 고양이와 불확정성 원리
- 전지전능한 파동 함수
- ψ의 확률론적 해석: 파동 함수의 원래 의도는 양자역학을 무너뜨리기 위한 것
- 양자 고양이가 보른의 확률론 진영을 무너뜨리려고 시도
- 불확정성 원리
- 간섭과 이중 슬릿 실험
- 아인슈타인이 보어에게: 신은 주사위를 던지지 않는다
- 보어가 아인슈타인에게: 신이 주사위를 갖고 무엇을 하든 상관하지 말라
- 얽힘과 EPR 역설: 도깨비 같은 원격 작용
- 벨의 부등식: 얽힘 테스트
- EPR 역설의 패배: 보어가 마지막에 웃다
- 우리를 속이고 있는 실재: 모든 것은 서로 연결돼 있다
- 2장. 양자 컴퓨팅: 현실의 뼈대 자체를 구부리다
- 트랜지스터는 물리 법칙과 충돌하고 있다
- 5나노 트랜지스터: 커다란 문제
- 양자 범위와 트랜지스터의 소멸
- 전자 터널링
- 슬릿 실험
- 트랜지스터의 미래
- 리처드 파인만과 양자 컴퓨터의 세계로
- 큐빗은 이상하고 놀랍다
- 상태의 중첩
- 얽힘: 큐빗 관측이 다른 큐빗의 상태를 드러내다
- 양자 게이트로 큐빗 조작
- 큐빗 설계
- 양자 컴퓨터와 기존 컴퓨터
- 복잡한 시뮬레이션
- 분자 모델링과 신소재
- 정교한 딥러닝
- 양자 신경망(QNN)과 인공지능(AI)
- 양자 컴퓨터의 함정: 결깨짐과 간섭
- 결깨짐(수명)
- 양자 오류 정정(QEC)
- 50-큐빗 프로세서와 양자 우위를 위한 탐험
- 양자 어닐링(QA)과 에너지 최소화 논쟁
- 2000 큐빗: 눈에 보이는 것이 항상 진실은 아니다
- 양자 어닐링: 양자 컴퓨팅의 부분집합
- 범용 양자 컴퓨팅과 미래
- 구글과 양자 인공지능
- 데이터 센터의 양자 컴퓨터
- 경쟁은 전 세계적으로 벌어지고 있다
- 미래의 응용 분야
- 3장. IBM Q Experience 시작: 유일무이한 클라우드 양자 컴퓨팅 플랫폼
- IBM Q Experience에 발 담그기
- 양자 컴포저
- 양자 게이트
- 사용 가능한 양자 백엔드 프로세서
- 작품 번호 1: 벨 상태와 GHZ 상태의 변형
- 벨 상태와 도깨비 같은 원격 작용
- 더욱 도깨비 같은 GHZ 상태 테스트
- 초결정론:도깨비스러움을 벗어나는 방법.아인슈타인이 옳았는가?
- REST API를 통한 원격 접근
- 인증
- 사용 가능한 백엔드 목록
- 특정 프로세서의 캘리브레이션 정보 얻기
- 백엔드 매개변수 얻기
- 프로세서 대기열의 상태 가져오기
- 실행 대기열 내의 작업 목록 얻기
- 계정의 크레딧 정보 가져오기
- 사용자의 실험 목록 얻어오기
- 실험 실행
- 작업 실행
- API 버전 얻기
- IBMQuantumExperience용 Node.js 클라이언트
- IBMQuantumExperience를 위한 Node.js 모듈 구축
- API 메소드 내보내기
- 토큰으로 인증
- 백엔드 목록 가져오기
- 캘리브레이션 매개변수 목록 가져오기
- 실험 실행
- 디버깅과 테스트
- 세상과 공유: 모듈을 게시
- IBM Q Experience에 발 담그기
- 4장. QISKit: 파이썬으로 양자 프로그램을 작성할 수 있는 멋진 SDK
- QISKit 설치
- 윈도우에 설치
- 리눅스 CentOS에서의 설치
- 큐빗 101: 아주 기본적인 대수학
- 양자 비트의 대수적 표현
- 양자 게이트로 큐빗의 상태 변경
- 보편적 양자 계산은 고전적 계산보다 지름길을 제공한다
- 첫 번째 양자 프로그램
- SDK의 내부: 회로 컴파일과 QASM
- 실제 양자 장치에서 실행
- 양자 어셈블리: 무대 뒤에 숨은 힘
- QISKit 설치
- 5장. 엔진 시동: 양자 난수, 양자 순간 이동, 초고밀도 코딩
- 양자 난수 생성
- 아다마르 게이트를 이용한 무작위 비트 생성
- 무작위 결과 값 검증
- 초고밀도 코딩
- 컴포저용 회로
- 파이썬을 사용해 원격으로 실행
- 결과 보기
- 양자 순간 이동
- 컴포저용 회로
- 파이썬을 사용해 원격으로 실행
- 결과 분석
- 양자 난수 생성
- 6장. 양자 게임으로 놀아보자
- 양자 전함 게임
- 설정 방법
- 초기화
- 보드에 전함 배치
- 메인 루프와 실행 결과
- 클라우드 전함: 원격 접근이 가능하게 개선
- 연습문제 1: 게임 로직과 사용자 인터페이스를 분리
- 연습문제 2: 전함-폭탄 보드를 위한 웹 인터페이스 구축
- 연습문제 3: 아파치 HTTPD로 배포 및 문제 해결
- 해답 1: 재사용 가능한 파이썬 프로그램
- 해답 2: 사용자 인터페이스
- 해답 3: 배포 및 테스트
- 문제 해결
- 추가적인 개선 사항
- 양자 전함 게임
- 7장. 게임 이론: 양자역학에서 확률은 언제나 호의적이다
- 위조 동전 퍼즐
- 위조 동전, 양자 컴퓨터의 해결 방법
- 1단계: 양자 저울에 질의
- 2단계: 양자 저울을 생성
- 3단계: 위조 동전을 식별
- 임의의 개수의 위조 동전으로 일반화
- 머민-페레즈 매직스퀘어
- 머민-페레즈 매직스퀘어 연습문제
- 양자 승리 전략
- 얽힘 상태 공유
- 유니타리 변환
- 계산 기준의 측정
- 머민-페레즈 매직스퀘어 연습문제의 해답
- 위조 동전 퍼즐
- 8장. 그로버와 쇼어 알고리즘을 통한 검색 속도 향상과 비대칭 암호화 위협
- 비구조적 양자 검색
- 위상 반전
- 평균에 대한 반전
- 실용적인 구현
- 일반화된 회로
- 쇼어 알고리즘을 사용한 소인수 분해
- 비대칭 암호화에 도전하는 양자 인수 분해
- 주기 찾기
- ProjectQ에 의한 쇼어 알고리즘
- 비구조적 양자 검색
도서 오류 신고
정오표
정오표
[p.46 : 표 1-2의 5~8행]
A+
->
A-
[p.56 : 표 2-3의 1행]
크기(마이크로미터 단위)
->
크기(나노미터 단위)
[p.114 : 파울리 Z]
블로흐 구의 Y축에서
->
블로흐 구의 Z축에서