Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
11
量子ビットを見てみよう
itokoichi01
0
8
RubyKaigiに参加したら何かやりたくなった
itokoichi01
0
32
Other Decks in Programming
See All in Programming
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
160
Developing static sites with Ruby
okuramasafumi
0
280
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
130
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
300
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
400
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
810
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
認証・認可の基本を学ぼう後編
kouyuume
0
190
dotfiles 式年遷宮 令和最新版
masawada
1
760
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
150
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
210
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Visualization
eitanlees
150
16k
Embracing the Ebb and Flow
colly
88
4.9k
Designing Experiences People Love
moore
143
24k
Facilitating Awesome Meetings
lara
57
6.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
Rails Girls Zürich Keynote
gr2m
95
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Practical Orchestrator
shlominoach
190
11k
How to train your dragon (web standard)
notwaldorf
97
6.4k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
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 (単位ゲート)