$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はじめてみよう量子プログラミング
Search
ito-koichi
September 17, 2024
Programming
0
630
はじめてみよう量子プログラミング
吉祥寺.pm36【オンライン】
https://kichijojipm.connpass.com/event/328378/
LT資料
ito-koichi
September 17, 2024
Tweet
Share
More Decks by ito-koichi
See All by ito-koichi
量子コンピュータはどのように計算するのか
itokoichi01
0
9
量子ビットを見てみよう
itokoichi01
0
8
RubyKaigiに参加したら何かやりたくなった
itokoichi01
0
32
Other Decks in Programming
See All in Programming
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
5
1.4k
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
28
14k
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
210
AIコーディングエージェント(skywork)
kondai24
0
120
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
230
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
25
21k
AIコーディングエージェント(Manus)
kondai24
0
130
CSC305 Lecture 15
javiergs
PRO
0
250
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
5
270
20 years of Symfony, what's next?
fabpot
2
310
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
4.1k
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
270
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Why Our Code Smells
bkeepers
PRO
340
57k
How GitHub (no longer) Works
holman
316
140k
Designing for Performance
lara
610
69k
Agile that works and the tools we love
rasmusluckow
331
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Transcript
はじめてみよう 量子プログラミング 2024.9.17 吉祥寺.pm36 ito-koichi
自己紹介 名前: ito-koichi (伊藤公一) X:@itokoichi01X: @itokoichi01 所属:富士通 職業:システムエンジニア テーマ「プログラミング!」: 仕事:TypeScript、Kotlin 好きな言語:Ruby
量子プログラミングはただの趣味です(専門ではありません) Qiskit (IBMの量子コンピュータSDK) の資格持ってます
量子プログラミングしたことありますか • 量子コンピュータ持ってません • 量子プログラミングって言語は何を使うの? ここできみにすごいラッキーなニュースがあります
量子プログラミングはブラウザ上でできるんです * Python + Qiskit SDK 等 • IBM Quantum
Composer • Qni • QCoder • Qookbook 量子プログラミング環境 を作る(*) コード プログラミング ビジュアル プログラミング ブラウザベースのサービス 自分で環境構築
量子プログラミングはブラウザ上でできるんです • ビジュアル系 ◦ IBM Quantum Composer (https://quantum.ibm.com/composer) ◦ Qni
(https://qniapp.net/) • コード系 ◦ QCoder (https://www.qcoder.jp/) (Qiskitを使用する) ◦ Qookbook (https://www.qookbook.net/) IBM Quantum Composerを使って ビジュアル量子プログラミングのデモをします
IBM Quantum Composer IBM Quantum(*)のビジュアル量子プログラミング環境 * IBM Quantum: IBMの量子コンピューティングプラットフォーム •
量子コンピュータのシミュレータを使えます(ユーザー登録不要) ※デモ • 量子コンピュータの実機を使えます(ユーザー登録要) 量子プログラムの動きを見れるので便利
デモ 量子ビットの論理演算 量子ビットを量子ゲートで反転した後に測定する • 量子ビット ◦ ふつーのビットの量子版(重ね合わせ状態) ◦ 重ね合わせ状態のままでは値は決まらない(不確定性原理) ◦ 測定すると重ね合わせ状態が壊れて値が決まる(波束の収縮)
• 量子ゲート ◦ ふつーの論理ゲートの量子版 ◦ 入力、出力とも量子ビット(並列計算) ◦ デモではXゲート(NOTゲートの量子版)を使う
デモ
できました! 量子プログラミングは ブラウザ上で すぐにはじめられる
できました! 量子プログラミング 完全に理解した!
できました! おい
今回のデモはプログラムを書く部分 プログラムの書き方 • ビジュアルプログラミング • コードプログラミング 量子アルゴリズム • 量子位相推定、誤り訂正 ...
前提知識 • 数学、物理学 • 情報理論 量子コンピュータの知識 • 量子ビット、量子ゲート • トランスパイラ プログラムの周 辺知識も必要 そのためにおす すめの方法を二 つ紹介します 適用できる問題の探求 • 量子鍵配送、...
①勉強しよう • 本(「量子コンピュータ」で探す) • Webコンテンツ(チュートリアル等) • 動画コンテンツ できれば数式を説明しているもの(大事) そのうち「数式の方がシンプルで楽」になる 説明をプログラムにして動かしてみる
実際に動かすことで説明を納得できる
①勉強しよう 本を読んでも「量子プログラミングなにもわからない(本当に)」とき 別の本を読んでみる それでもわからなかったら、さらに別の本を 一冊で全てを理解できなくてもいい(大事)
②量子プログラミングのイベントに参加しよう • QCoder Programming Contest (https://www.qcoder.jp/) ◦ 不定期に開催されるオンラインの量子プログラミングコンテスト(競プロ) ◦ ブラウザ上でQiskitを使ったコードを入力して問題を解く
• IBM Quantum Challenge (https://challenges.quantum.ibm.com/) ◦ 年2回くらい開催されるオンラインの量子プログラミングイベント ◦ Python + Qiskitを実行できる環境を用意して問題を解く 問題が解けるとモチベーションが上がる(大事)
まとめ 量子プログラミングはブラウザ上ですぐにはじめられる 周辺知識を得るためには勉強とイベント参加がおすすめ 準備はできた おいでよ量子プログラミングの沼 基本的な 量子ゲート操作 量子 アルゴリズム ハイブリッド
アルゴリズム 問題解決 量子アプリケーション 量子コンピュータ の基礎 とはいえ沼は広くて深い。無理せず楽しんでいこう
おまけ1 デモ
デモ 準備 1. IBM Quantum Composerを開く (https://quantum.ibm.c om/composer) • ①:量子回路(ここに量子ゲー トを配置する)
• ②:量子ゲート(ここから回路 上に持っていく) ① ②
デモ 準備 2. 量子回路を学習用に1量子ビット構成にする 初期状態 q[3]をクリックしてごみ 箱。 q[0]のみにする c4をクリックしてマイナ ス。 c1まで減らす
1量子ビット構成の完成 → → →
デモ 準備 3. グラフを「Statevector」と「Probalilities」にする(左右は任意) • Statevector (状態ベクトル) ◦ 量子状態を表す ◦ 初期状態は|0>が1.0、|1>が0.0
(ちなみに値は確率振幅と呼ばれる複素数 ) • Probabilities (測定確率) ◦ 量子状態を1024回測定したときに0, 1がそれぞれ出る確率 (%)
デモ 初期状態 • 量子ビットの初期状態は |0> • Statevectorは|0>が1.0
デモ Xゲートを配置する • 量子ビットの初期状態は|0> • Statevactorは|0>が1.0 • Probabilitiesは未測定なので無し • Xゲートを配置する •
量子ビットは反転して |1>に なった • Statevectorは|1>が1.0
デモ 測定 • 測定を配置する • 量子ビットを測定した結果が c1 に入る • |1>状態は、測定すると100% で1になる
• Probabilitiesを見ると確かに1 が100%になっている
参考 量子コンピュータの実機で実行した結果 ノイズがあるため1が100%にはな らない 1024回の実行結果 • 0: 19回 (1.9%) • 1:
1005回 (98.1%)
おまけ2 量子プログラミングを学習するときの予備知識
量子プログラミングを学習するときの予備知識 本には書いてあることですが、最初はイメージしにくい(実感しにくい)ので図にしてみま した。 知ってると位相キックバックや量子テレポートを理解しやすいと思います。 ①量子ビットは全体で一つの系を構成する ②量子演算は量子系全体に影響する
①量子ビットは全体で1つの系を構成する 0 or 1 1ビット 2ビット 3ビット 古典ビット 量子ビット a|00>
+ b|01> + c|10> + d|11> 0 or 1 0 or 1 a|0> + b|1> 0 or 1 0 or 1 0 or 1 a|000> + b|001> + c|010> + d|011> + e|100> + f|101> + g|110> + h|111> 量子系は「全体で一つの状態ベクトル」ということです
②量子演算は量子系全体に影響する 入力 2ビット 0 or 1 0 or 1 a|00>
+ b|01> + c|10> + d|11> 古典ビット 量子ビット NOT 0 or 1 0 or 1 X 1ビット目を反転 a|01> + b|00> + c|11> + d|10> 出力 2ビット 量子演算は「系全体の状態ベクトル」を変更するものと考えるとよいです Id (単位ゲート)