Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はじめてみよう量子プログラミング
Search
ito-koichi
September 17, 2024
Programming
0
560
はじめてみよう量子プログラミング
吉祥寺.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
RubyKaigiに参加したら何かやりたくなった
itokoichi01
0
28
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
440
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
350
XP, Testing and ninja testing
m_seki
3
240
技術同人誌をMCP Serverにしてみた
74th
1
630
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
130
ニーリーにおけるプロダクトエンジニア
nealle
0
800
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
710
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
760
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
630
LINEヤフー データグループ紹介
lycorp_recruit_jp
1
2.4k
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
430
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
960
We Have a Design System, Now What?
morganepeng
53
7.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
How STYLIGHT went responsive
nonsquared
100
5.6k
Designing for Performance
lara
610
69k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Raft: Consensus for Rubyists
vanstee
140
7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
280
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
For a Future-Friendly Web
brad_frost
179
9.8k
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 (単位ゲート)