Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
はじめてみよう量子プログラミング
Search
ito-koichi
September 17, 2024
Programming
770
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
はじめてみよう量子プログラミング
吉祥寺.pm36【オンライン】
https://kichijojipm.connpass.com/event/328378/
LT資料
ito-koichi
September 17, 2024
More Decks by ito-koichi
See All by ito-koichi
量子コンピュータはどのように計算するのか
itokoichi01
0
33
量子ビットを見てみよう
itokoichi01
0
21
RubyKaigiに参加したら何かやりたくなった
itokoichi01
0
48
Other Decks in Programming
See All in Programming
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
260
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
260
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
280
XHTMLが残したもの
yosuke_furukawa
PRO
2
800
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
320
「新人AI禁止のその先へ ― 参加と協働のステップアップ」Vibe TOKYO, AI & CRAFT / 2026年8月21日
kentarowada
0
100
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
620
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
110
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
280
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
110
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
1k
速習iPhone Duo対応
yuukiw00w
1
380
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
370
Code Reviewing Like a Champion
maltzj
528
40k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
The Pragmatic Product Professional
lauravandoore
37
7.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Side Projects
sachag
456
43k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Prompt Engineering for Job Search
mfonobong
0
450
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
490
Testing 201, or: Great Expectations
jmmastey
46
8.3k
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 (単位ゲート)