LoginSignup
4
1

More than 1 year has passed since last update.

IBMの量子コンピューターでシュレディンガーの猫と同じ気分になりたい。

Last updated at Posted at 2021-08-07

量子コンピューターは

量子コンピューターって、一言でいうと、量子力学の重ね合わせの状態を使って計算しているんだろうけど、よくわからないので、このままだと可哀そうな半死半生の「シュレディンガーの猫」に噛みつかれそうなので、ちょっと動かしながら勉強してみました。

シュレディンガーの猫
cat.JPGby wikipedia

シュレディンガーの猫とは、wikipediaの説明を簡単にすると

猫と放射性元素のある密閉した鋼鉄の箱の中で、放射性元素の1時間あたりの原子の放射性崩壊確率を50%とし、ガイガー計数管が原子崩壊を検知すると電気的に毒ガスが放出されて猫が殺される仕掛けになっています。1時間後には、箱の中の猫は「放射線が放出されたので猫が死んでいる」と「放射線が放出されていないので猫は生きている」という二つの状態が50%ずつの重ね合わせた状態になっています。箱をあけるまではこの状態で箱を開けた瞬間に猫の生死が決まります。

量子コンピューターをちょっと勉強して、この猫の気持ちを味わいたいと思います。

IBMの量子コンピューターの動かし方

量子コンピューター on IBM Cloudのチュートリルがありますので、それを使うと量子コンピューターを動かすことができます。

Googleアカウントでアカウントが簡単にできてログインできます。
そうなんです。量子コンピューターと言っても、googleアカウントがあればすぐに動かすことができます。
ログインするとこんな画面です。
0.JPG

Go to dashboard のボタンを押すと、
0.5.JPG

IBM Quantum Composer は、楽譜みたいなGUIを使ってプログラムを作ります。
composer.JPG

IBM Quantum Lab は、jupyterlabが立ち上がり、pythonでプログラムを作ります。
quantumlab.JPG

なんか楽譜みたいなプログラムって、超クールっぽいので、composerでプログラムを作ってみます。

 量子コンピューターの「Hello World」は

量子コンピューターでの「Hello World」は、ベル状態を作り出すことのようです。
でもベル状態ってなんだったのか、量子力学の落ちこぼれには思い出すことができません。でもどうやらこれでシュレディンガーの猫の気持ちが少しわかるようです。動かしてみましょう

 Create your first circuit walkthrough

docs&tutorial にCreate your first circuit walkthrough があるので、これを一つずつやってみます。
111.JPG
以下の「 」内はチュートリアルの日本語でgoogle翻訳です。

page1

「最初の回路を作りましょう Composerには、量子ハードウェアまたはシミュレーターで量子回路を構築、視覚化、および実行できるようにするカスタマイズ可能なツールのセットがあります。 最初の回路、ベル状態を一緒に構築しましょう。」
1.JPG

page2

「量子ゲートと操作 ゲートと操作はキュービットを操作します。 それらは量子回路の構成要素です。 量子回路を構築するために、操作ブロックを下のワイヤーにドラッグアンドドロップします。」
2.JPG

page3

「ベル状態の構築 ベル状態を構築します。 ベル状態は、特定の最大に絡み合った2量子ビット状態を生成します。詳細をご覧ください。まず、アダマールをドラッグします(NS)最初のキュービットワイヤ(q0)にゲートします。」
3.JPG

最初にアダマールゲートを $ q_0 $ におきます。
このアダマールゲートがポイントです。アダマールゲートは、量子 $ q_0 $ を $ |0⟩ $ と $ |1⟩ $の状態に重ね合わせる状態にするゲートです

page4

「今何があったの? 視覚化では、回路を測定する前に、シミュレーターを使用して量子コンピューターで何が起こっているかを示します。 ワイヤに操作を追加するたびに更新されます。現在、視覚化はアダマールゲートの効果を示しています。 キュービットは重ね合わせになりました。」
4.JPG

アダマールゲートを置いたので、下の可視化のところで、00、01と、 $ q_0 $の確率が50%ずつになっています。

page5

「2つの量子ビットを絡める Hゲートの右側にCNOTゲートを追加します(NS)ワイヤーq0上。 この操作は、q0とq1の2つのキュービットに作用します。新しいゲートを追加すると、ビジュアライゼーションが更新されることに注意してください。 キュービットが絡み合っています。」
5.JPG

CNOTゲートを設置します。このゲートを設置することで、$ q_0 $ が $ |0⟩ $ の時には何もせず、 $ |1⟩ $ の時に反転します。そのため、$ q_1 $ の半分の $ |0⟩ $ が $ |1⟩ $ になります。
今、猫は、こんな状態になっています。

nekoneko.JPG

page6

「回路を測定する ワイヤq0およびq1のCNOTゲートの右側に測定操作をドラッグアンドドロップします。 測定結果は、クラシックレジスタにクラシックビットとして記録されます。測定操作を下のワイヤに接続する垂直のワイヤは、キュービットから古典的なレジスタに流れる情報を示しています。」
6.JPG

最後に観測します。観測すると、11となっています。

page7

「コードエディタ 回路に操作を追加すると、コードエディタが更新されます。 openQASMコードを更新すると、変更はグラフィカルエディターに反映されます。コードはopenQASMまたは読み取り専用のQiskit(Python)で確認できます。 他のアプリケーションで使用するためにコードをエクスポートできます。」
7.JPG

page8

「学び続けます 次に何をすべきかわからない? 回路を実行するための手順、量子コンピューティングに関する背景情報など、必要なすべての情報は、ドキュメントとチュートリアルのパネルにあります。」
8.JPG

学び続けますと言われても、ちょっと限界に近いですが、少しだけ猫の気持ちがわかったような気がします。
次は、1+1=2を計算したいと思います。

参考にしたHP
量子計算におけるゲート色々
Qiskit を使った量子計算の学習
IBMQを動かして学ぶ量子コンピューター

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1