量子コンピューターとは?簡単な例で説明します。

皆さんこんにちは!

先日、カナダのバンクーバーにあるD-WaveSystemsを訪れました。最先端の量子コンピューターを作っている会社です。

そこでは量子コンピューターについて多くのことを学ぶことができたので、この記事でそこで学んだことのいくつかを皆さんと共有したいと思います。

この記事の目的は、簡単な例を使用して、量子コンピューターが何を使用しているかを正確に直感的に理解できるようにすることです。

この記事では、量子物理学またはコンピューターサイエンスのいずれかの予備知識がなくても理解できます。

さて、始めましょう。

編集(2019年2月26日):最近、同じトピックに関するビデオをYouTubeチャンネルに公開しました。ビデオにいくつかのより微妙な議論を追加したので、この記事を読む前または後にそれを見る(ここをクリックする)ことをお勧めします。

量子コンピューターとは?

これは、量子コンピューターとは何かを一文で要約したものです。

量子コンピューターは、量子力学を利用して、通常のコンピューターよりも効率的に特定の種類の計算を実行できるコンピューターの一種です。

この文には開梱するものがたくさんあるので、簡単な例を使用して正確に何を説明するかを説明します。

量子コンピューターとは何かを説明するために、最初に通常の(非量子)コンピューターについて少し説明する必要があります。

通常のコンピュータが情報を保存する方法

現在、通常のコンピューターは情報を一連の0と1で格納します。

この方法で、数字、テキスト、画像などのさまざまな種類の情報を表すことができます。

この一連の0と1の各単位は、ビットと呼ばれます。したがって、ビットは0または1のいずれかに設定できます。

さて、量子コンピューターはどうですか?

量子コンピューターは、情報を格納するためにビットを使用しません。代わりに、キュービットと呼ばれるものを使用します。

各キュービットは1または0に設定できるだけでなく、1および0に設定することもできます。しかし、それは正確にはどういう意味ですか?

これを簡単な例で説明しましょう。これはやや人工的な例になります。しかし、それでも量子コンピューターがどのように機能するかを理解するのに役立つでしょう。

量子コンピューターがどのように機能するかを理解するための簡単な例

ここで、旅行代理店を経営していて、人々のグループをある場所から別の場所に移動する必要があるとします。

これを単純にするために、今のところ、アリス、ベッキー、クリスの3人だけを移動する必要があるとしましょう。

そして、この目的のために2台のタクシーを予約し、誰がどのタクシーに乗るかを知りたいとします。

また、ここで、誰が誰と友達で、誰が誰と敵であるかについての情報が与えられているとします。

ここで、それを言いましょう:

  • アリスとベッキーは友達です
  • アリスとクリスは敵です
  • ベッキーとクリスは敵です

そして、ここでの目標が、この3人のグループを2つのタクシーに分割して、次の2つの目的を達成することであるとします。

  • 同じ車を共有する友達ペアの数を最大化する
  • 同じ車を共有する敵のペアの数を最小限に抑える

さて、これがこの問題の基本的な前提です。まず、通常のコンピューターを使用してこの問題を解決する方法について考えてみましょう。

通常のコンピューターでこの問題を解決する

通常の非量子コンピューターでこの問題を解決するには、最初に関連情報をビットで格納する方法を理解する必要があります。

2つのタクシータクシー#1とタクシー#0にラベルを付けましょう。

次に、誰がどの車に乗るかを3ビットで表すことができます。

たとえば、3ビットを0、0、に設定できますおよび1を表す:

  • アリスはタクシー#0に乗ります
  • ベッキーはタクシー#0に乗ります
  • クリスはタクシー#1に乗ります

人ごとに2つの選択肢があるため、このグループの人を2台の車に分割する方法は2 * 2 * 2 = 8つあります。

可能なすべての構成のリストは次のとおりです。

A | B | C

0 | 0 | 0

0 | 0 | 1

0 | 1 | 0

0 | 1 | 1

1 | 0 | 0

1 | 0 | 1

1 | 1 | 0

1 | 1 | 1

3ビットを使用して、これらの組み合わせのいずれかを表すことができます。

各構成のスコアを計算する

さて、通常のコンピューターを使用して、どの構成が最適なソリューションであるかをどのように判断しますか?

これを行うには、各構成のスコアを計算する方法を定義しましょう。このスコアは、各ソリューションが前述の2つの目的を達成する程度を表します。

  • 同じ車を共有する友達ペアの数を最大化する
  • 同じ車を共有する敵のペアの数を最小限に抑える

スコアを次のように簡単に定義しましょう。

(特定の構成のスコア)=(同じ車を共有する#友達ペア)-(同じ車を共有する#敵ペア)

たとえば、アリス、ベッキー、クリスがすべてタクシー#1に乗り込んだとします。3ビットの場合、これは111として表すことができます。

この場合、同じ車を共有している友人のペアは、アリスとベッキーの1つだけです。

ただし、同じ車を共有している2つの敵のペアがあります。アリスとクリス、およびベッキーとクリスです。

したがって、この構成の合計スコアは1-2 = -1です。

問題の解決

このすべての設定で、最終的にこの問題の解決に取り掛かることができます。

通常のコンピューターでは、最適な構成を見つけるために、基本的にすべての構成を調べて、どれが最高のスコアを達成するかを確認する必要があります。

したがって、次のようなテーブルの作成について考えることができます。

A | B | C | スコア

0 | 0 | 0 | -1

0 | 0 | 1 | 1 <-最良の解決策の1つ

0 | 1 | 0 | -1

0 | 1 | 1 | -1

1 | 0 | 0 | -1

1 | 0 | 1 | -1

1 | 1 | 0 | 1 <-他の最良の解決策

1 | 1 | 1 | -1

ご覧のとおり、ここには001と110の2つの正しい解決策があり、どちらもスコア1を達成しています。

この問題はかなり単純です。この問題の人の数が増えるにつれて、通常のコンピューターで解決するのはすぐに難しくなります。

3人で、8つの可能な構成を実行する必要があることがわかりました。

4人いる場合はどうなりますか?その場合、2 * 2 * 2 * 2 = 16の構成を実行する必要があります。

n人の場合、最適なソリューションを見つけるには、(2のn乗)構成を実行する必要があります。

したがって、100人の場合は、次の手順を実行する必要があります。

  • 2¹⁰⁰〜 =10³⁰= 100億百万百万百万の構成。

これは、通常のコンピューターでは解決できません。

量子コンピューターでこの問題を解決する

量子コンピューターでこの問題をどのように解決するのでしょうか?

それを考えるために、3人を2つのタクシーに分割する場合に戻りましょう。

前に見たように、この問題には8つの可能な解決策がありました。

A | B | C

0 | 0 | 0

0 | 0 | 1

0 | 1 | 0

0 | 1 | 1

1 | 0 | 0

1 | 0 | 1

1 | 1 | 0

1 | 1 | 1

通常のコンピューターでは、3ビットを使用して、一度にこれらのソリューションの1つ(たとえば、001)のみを表すことができました。

ただし、量子コンピューターでは、3キュービットを使用して、これらの8つのソリューションすべてを同時に表すことができます。

それが正確に何を意味するのかについては議論がありますが、これが私がそれについて考える方法です。

まず、これら3つのキュービットのうち最初のキュービットを調べます。両方に設定すると0と1は、2つの並列ワールドを作成するようなものです。(はい、それは奇妙ですが、ここに従ってください。)

これらの並列ワールドの1つでは、キュービットは0に設定されています。もう1つでは、キュービットは1に設定されています。

では、2番目のキュービットも01に設定するどうなるでしょうか。次に、4つの並列ワールドを作成するようなものです。

最初の世界では、2つのキュービットは00に設定されています。2番目の世界では01です。3番目の世界では10です。4番目の世界では11です。

同様に、3つのキュービットすべてを0と1の両方に設定すると、8つの並列ワールド(000、001、010、011、100、101、110、および111)が作成されます。

これは奇妙な考え方ですが、キュービットが現実の世界でどのように動作するかを解釈する正しい方法の1つです。

さて、これらの3つのキュービットにある種の計算を適用すると、実際には、これらの8つの並列ワールドすべてに同時に同じ計算を適用することになります。

したがって、これらの潜在的なソリューションのそれぞれを順番に調べる代わりに、すべてのソリューションのスコアを同時に計算できます。

この特定の例では、理論的には、量子コンピューターは数ミリ秒で最良の解決策の1つを見つけることができます。繰り返しますが、前に見たように、それは001または110です。

A | B | C | スコア

0 | 0 | 0 | -1

0 | 0 | 1 | 1 < -最高の1 solutiアドオン

0 | 1 | 0 | -1

0 | 1 | 1 | -1

1 | 0 | 0 | -1

1 | 0 | 1 | -1

1 | 1 | 0 | 1 < -ので、他の最高lution

1 | 1 | 1 | -1

実際には、この問題を解決するには、量子コンピューターに2つのことを与える必要があります。

  • キュービットで表されるすべての潜在的なソリューション
  • それぞれの潜在的なソリューションをスコアに変換する関数。この場合、これは同じ車を共有している友達ペアと敵ペアの数をカウントする機能です。

これらの2つのことを考えると、量子コンピューターは数ミリ秒で最良の解決策の1つを吐き出します。この場合、スコアは001または110でスコアは1です。

現在、理論的には、量子コンピューターは実行するたびに最良の解決策の1つを見つけることができます。

ただし、実際には、量子コンピューターを実行するとエラーが発生します。したがって、最適なソリューションを見つける代わりに、2番目に優れたソリューション、3番目に優れたソリューションなどを見つける可能性があります。

問題がますます複雑になるにつれて、これらのエラーはより顕著になります。

したがって、実際には、量子コンピューターで同じ操作を数十回または数百回実行することをお勧めします。次に、得られた多くの結果から最良の結果を選択します。

量子コンピューターのスケーリング方法

私が述べたエラーがあっても、量子コンピューターには通常のコンピューターが苦しんでいるのと同じスケーリングの問題はありません。

3人で2台に分割する必要がある場合、量子コンピューターで実行する必要のある操作の数は1です。これは、量子コンピューターがすべての構成のスコアを同時に計算するためです。

4人の場合でも操作数は1回です。

100人の場合でも、操作の数は1です。1回の操作で、量子コンピューターはすべての2¹⁰⁰〜 = 10³⁰ = 100億億万百万の構成のスコアを同時に計算します。

先に述べたように、実際には、量子コンピューターを数十回または数百回実行し、得られた多くの結果から最良の結果を選択するのがおそらく最善です。

ただし、通常のコンピューターで同じ問題を実行し、同じタイプの計算を100億、100万、100万回繰り返すよりもはるかに優れています。

まとめ

これらすべてを辛抱強く説明してくれたD-WaveSystemsの皆さんに特に感謝します。

D-Waveは最近、量子コンピューターと対話するためのクラウド環境を立ち上げました。

あなたが開発者であり、実際に量子コンピューターを使用してみたい場合は、おそらくそれが最も簡単な方法です。

これはLeapと呼ばれ、// cloud.dwavesys.com/leapにあります。これを無料で使用して、何千もの問題を解決できます。また、サインアップすると、量子コンピューターの使用を開始するためのわかりやすいチュートリアルもあります。

脚注:

  • この記事では、「通常のコンピューター」という用語を使用して、非量子コンピューターを指しました。ただし、量子コンピューティング業界では、非量子コンピューターは通常、古典的なコンピューターと呼ばれます。