كتاب "التطوير باستخدام الحاسبات الكمومية"

صورةمرحبا ، هابروجيتلي! الحوسبة الكمومية لا تغير الواقع فقط! ولدت صناعة جديدة تماما أمام أعيننا من أجل خلق ما لا يمكن تصوره من قبل وخفض قيمة بعض إنجازات الماضي. يناقش هذا الكتاب أهم مكونات الكمبيوتر الكمومي: الكوبت والبوابات المنطقية والدوائر الكمومية ، ويشرح أيضًا الفرق بين العمارة الكمومية والتقليدية. يمكنك تجربتها مجانًا في كل من المحاكي وعلى جهاز كمومي حقيقي باستخدام IBM Q Experience.

سوف تتعلم كيفية إجراء الحسابات الكمية باستخدام QISKit (أدوات برمجية لمعالجة المعلومات الكمية) ، و Python SDK ، وواجهات برمجة التطبيقات الأخرى ، ولا سيما QASM.

أخيرًا ، ستدرس خوارزميات الكم الحديثة التي تطبق التشابك ، وتوليد الأرقام العشوائية ، والبحث الخطي ، والعوامل الصحيحة ، وغيرها. ستتعامل مع حالات الجرس التي تصف التشابك ، وخوارزمية Grover للبحث الخطي ، وخوارزمية Shore للعوامل الصحيحة ، وخوارزميات التحسين ، والمزيد. .

سوف تتعلم: • تشغيل البرامج عن بُعد باستخدام واجهة برمجة التطبيقات Q Experience REST API. • كتابة الخوارزميات التي توفر أعلى أداء مقارنة بالنظائر لأجهزة الكمبيوتر التقليدية. • إنشاء عميل REST على Node.js للمصادقة والاستماع إلى الأجهزة البعيدة وطلب معلومات حول معالجات الكم والتحكم عن بعد وتشغيل التجارب في السحابة. • استخدام التحريك الكمي. باستخدام الحسابات الكلاسيكية والتشابك الكمي بين المرسل والمستقبل ، يرسل الحالة الدقيقة للبتة (معلومات كمية). • برمجة وتشغيل النسخة الكمية من معركة البحر. • استخدم Q Experience Composer لإنشاء برامج / تجارب بصرية.

مقتطفات. نظرية اللعبة: مع ميكانيكا الكم ، تكون الميزة دائمًا بجانبك


يستكشف هذا الفصل اثنين من ألغاز الألعاب التي توضح التفوق المثير للإعجاب للخوارزميات الكمومية على نظرائهم الكلاسيكيين.

  • لغز العملة المزيفة. هذه هي مشكلة الوزن الكلاسيكية التي اقترحها عالم الرياضيات E.D. Shell في عام 1945. في ذلك ، باستخدام مقياس المختبر لعدد محدود من الأوزان ، تحتاج إلى تحديد عملة يختلف وزنها عن وزن الآخرين (خطأ).
  • المربع السحري لميرمين - بيريز. هذا مثال على التخاطر الزائف الكمومي ، أو قدرة اللاعبين على تحقيق نتائج ممكنة فقط إذا قرأوا أفكار بعضهم البعض أثناء اللعبة.

في كلتا الحالتين ، تمكن الحوسبة الكمومية اللاعبين ذوي القدرات السحرية الزائفة ، كما لو كانوا يغشون طوال الوقت. دعونا نرى كيف يحدث هذا.

لغز العملة المزيفة


اللاعب لديه ثمانية عملات معدنية ومختبر. واحدة من العملات المعدنية خاطئة وبالتالي تزن أقل من الباقي. هل يمكنك العثور عليها؟ دعونا نلقي نظرة سريعة على الحل الموضح في الشكل. 7.1.

1. ضع القطع النقدية 1-3 على الجانب الأيسر من المقياس ، و 4-6 على اليمين. ضع القطع النقدية 7 و 8. جانبًا

2. إذا كان الجانب الأيمن من الميزان يفوق ، فخطأ - بين العملات النقدية 1-3 (على اليسار). تذكر أن العملة المزيفة أسهل. ثم قم بإزالة العملة 3 ووضع العملة 1 على الجانب الأيسر من المقياس والعملة 2 على اليمين.

  • إذا كان الوعاء الأيمن يفوق ، فإن الخطأ - عملة 1.
  • إذا كان الوعاء الأيسر يفوق ، فإن الوعاء الزائف - عملة 2.
  • إذا كان التوازن متوازنًا ، فإن الخطأ - عملة 3.

3. إذا فاق الجانب الأيسر من المقياس ، فإن الجانب الزائف - بين العملات 4-6. قم بإزالة العملة رقم 6 ووضع العملة رقم 4 على الجانب الأيسر من المقياس والعملة رقم 5 على اليمين.

  • إذا كان الوعاء الأيمن يفوق ، فإن الخطأ - عملة 4.
  • إذا كان الوعاء الأيسر يفوق ، فإن العملة الزائفة - عملة 5.
  • إذا كان التوازن متوازنا ، فإن العملة خاطئة - 6.

4. إذا كان الميزان متوازنًا ، فإن العملة المزيفة إما 7 أو 8. ضع العملة 7 على الجانب الأيسر من المقياس والعملة 8 على الجانب الأيمن ووزنها.

  • إذا كان الوعاء الأيمن يفوق ، فإن الخطأ - عملة 7.
  • إذا كان الوعاء الأيسر يفوق ، فإن العملة المزيفة 8.

يمكن تنفيذ الخوارزمية الكلاسيكية بغض النظر عن العدد الإجمالي للعملات المعدنية N وعدد العملات المزيفة ك. بشكل عام ، فإن التعقيد الزمني لمشكلة العملة المزيفة المعممة هو O (k log (N / k)).

ملاحظة:
ثبت أن هناك حاجة إلى محاولتين على الأقل للكشف عن عملة واحدة مزيفة باستخدام ميزان المختبر على جهاز كمبيوتر كلاسيكي.


صورة

حل الكم


صدق أو لا تصدق ، هناك خوارزمية كمية يمكنها العثور على عملة وهمية في وزن كم واحد ، بغض النظر عن عدد العملات المعدنية N! بشكل عام ، بالنسبة لأي عدد من العملات المزيفة k ، بغض النظر عن N ، فإن التعقيد الزمني لهذه الخوارزمية هوصورة

ملحوظة:
الخوارزمية الكمية لتحديد عملة مزيفة هي مثال على التسارع من الدرجة الرابعة مقارنة بنظيرتها الكلاسيكية.

لذا ، في الشكل. 7.2 يوضح تفوق خوارزمية الكم على النظير الكلاسيكي في حل لغز العملة المزيفة. دعونا ننظر في الأمر بمزيد من التفصيل. صورةيمكن تقسيم خوارزمية البحث الكمي لعملة واحدة مزيفة إلى ثلاث مراحل: طلب الأوزان الكمية ، وإنشاء أوزان كمية وتعريف العملة المزيفة.

صورة

الخطوة 1. طلب ​​أوزان الكم


سوف تستعلم خوارزمية الكم عن أوزان الكم في التراكب. للقيام بذلك ، استخدم سلسلة استعلام ثنائي لترميز العملات المعدنية على المقاييس. على سبيل المثال ، يعني سطر الاستعلام 11101111 أن جميع العملات المعدنية موجودة على الميزان ، باستثناء العملة مع المؤشر 3. تتم موازنة المقاييس إذا لم تكن هناك عملة واحدة مزيفة ، وتميل إلى خلاف ذلك. هذا موضح في الجدول التالي.

صورة

خوارزمية الإجراءات على النحو التالي.

1. استخدم سجيلين كميين للاستعلام عن أوزان الكم ، حيث يكون السجل الأول لسلسلة الاستعلام والثاني للنتيجة.

2. قم بإعداد تراكب جميع سلاسل الاستعلام الثنائية بعدد زوجي من الوحدات.

3. للحصول على تراكب الحالات مع عدد زوجي من الوحدات ، قم بإجراء تحويل Hadamard في الحالة الأساسية وتحقق مما إذا كان وزن Hamming لـ | x | حتى في. يمكن إظهار أن وزن هامينج لـ | x | حتى لو وفقط إذا كان x1 ⊕ x2 ⊕ ... ⊕ xN = 0.

ملاحظة
وزن الهامينج (hw) لسلسلة هو عدد الأحرف بخلاف الحرف الفارغ للأبجدية المستخدمة. على سبيل المثال ، hw (11101) = 4، hw (11101000) = 4، hw (000000) = 0.

4. أخيرًا ، قم بقياس السجل الثاني. إذا لوحظت حالة صورة، فإن السجل الأول هو تراكب لجميع سلاسل الاستعلام الثنائية المطلوبة. إذا تم تلقيه صورة، فأنت بحاجة إلى تكرار الإجراء حتى يتم ملاحظة الشرط. صورة

لاحظ أنه مع كل تكرار ، يكون احتمال النجاح 0.5 بالضبط. ومع ذلك ، بعد عدة تكرار ، يمكننا الحصول على التراكب المطلوب للحالات. تظهر القائمة 7.1 تنفيذ البرنامج الكمي للاستعلام عن الأوزان ، ويظهر الرسم البياني المقابل في الشكل. 7.3.

ملاحظة
لتبسيط التصور ، ينقسم برنامج تحديد العملة المزيفة إلى القوائم 7.1-7.3. على الرغم من أنني آمل أن تتمكن من دمج هذه القوائم لتشغيل البرنامج ، فإن الشفرة الكاملة موجودة في المصدر في الملف Workspace\Ch07\p_counterfeitcoin.py.

قائمة 7.1. نص الاستعلام عن أوزان الكم

# -------    
Q_program = QuantumProgram()
Q_program.set_api(Qconfig.APItoken, Qconfig.config["url"])

#  numberOfCoins +1 / 
#      
#  
qr = Q_program.create_quantum_register("qr", numberOfCoins + 1)

#     qr
cr = Q_program.create_classical_register("cr", numberOfCoins + 1)

circuitName = "QueryStateCircuit"
circuit = Q_program.create_circuit(circuitName, [qr], [cr])

N = numberOfCoins

#       N
for i in range(N):
     circuit.h(qr[i])

#  XOR(x)     CNOT  qr[0]
#  qr[N–1]     qr[N]
for i in range(N):
     circuit.cx(qr[i], qr[N])

#  qr[N]     cr[N]. ,
#  cr[N]  ,     
circuit.measure(qr[N], cr[N])

#     ,     
# cr[0]...cr[N],     |1>,
#   |0> - |1>  qr[N]
circuit.x(qr[N]).c_if(cr, 0)
circuit.h(qr[N]).c_if(cr, 0)

#      cr[N]
for i in range(N):
     circuit.h(qr[i]).c_if(cr, 2**N)

في التين. 7.3 هو مخطط تفصيلي كامل لأحجية العملات المزيفة بثمانية عملات وأخرى مزيفة بالمؤشر 6. ويعرض جميع الخطوات الموضحة هنا لمنصة IBM Q Experience. المرحلة الثانية من الخوارزمية هي إنشاء الأوزان.

صورة

الخطوة 2. إنشاء أوزان كمية


في القسم السابق ، أنشأنا تراكبًا لجميع سلاسل الاستعلام الثنائية التي يكون لها وزن هامينج متساويًا. في هذه الخطوة ، قم بإنشاء موازن كمومي ، وتحديد موضع العملة المزيفة. وبالتالي ، إذا كان k هو موضع العملة المزيفة بالنسبة إلى السلسلة الثنائية ، صورةفستعود المقاييس الكمية:

صورة

يتم تنفيذ ذلك باستخدام بوابة CNOT مع xk كبتاد التحكم والتسجيل الثاني كهدف (انظر القائمة 7.2).

قائمة 7.2. خلق أوزان كمية

#-----   
k = indexOfFalseCoin

#       
# (  cr,  )
circuit.cx(qr[k], qr[N]).c_if(cr, 0)

الخطوة 3. تحديد عملة وهمية


للكشف عن عملة مزيفة بعد الاستعلام على الأوزان ، قم بتطبيق تحويل هادامارد على سلسلة الاستعلام الثنائية. من المفترض أننا نجري استعلامًا عن أوزان الكم مع سلاسل ثنائية مع وزن Hamming متساوي ، وبالتالي ، بعد إجراء قياس في الأساس الحسابي بعد تحويل Hadamard ، يمكننا تحديد عملة مزيفة ، نظرًا لأن تصنيفها فقط يختلف عن معظم الملصقات (انظر القائمة 7.3).

قائمة 7.3. تعريف العملة المزيفة

# ---   
#     qr[0] ... qr[N-1]
for i in range(N):
     circuit.h(qr[i]).c_if(cr, 0)

#  qr[0] ... qr[N–1]
for i in range(N):
     circuit.measure(qr[i], cr[i])

results = Q_program.execute([circuitName], backend=backend, shots=shots)
answer = results.get_counts(circuitName)

print("Device " + backend + " counts " + str(answer))

#     
for key in answer.keys():
     normalFlag, _ = Counter(key[1:]).most_common(1)[0]

for i in range(2,len(key)):
     if key[i] != normalFlag:
          print("False coin index is: ", len(key) - i - 1)

عندما تكون البتة الموجودة في أقصى اليسار 0 ، يمكن تحديد مؤشر العملة المزيفة من خلال إيجاد العملة التي يختلف وزنها عن وزن البقية. على سبيل المثال ، مع N = 8 ومؤشر العملة المزيفة 6 ، يجب أن تكون النتيجة 010111111 أو 001000000. لاحظ أنه نظرًا لأننا نستخدم cr [N] للتحكم في العملية قبل وبعد طلب الأوزان:

  • إذا كانت البتة الموجودة في أقصى اليسار 0 ، فقد حددنا العملة المزيفة بنجاح ؛
  • إذا كان الحد الأقصى لليسار هو 1 ، فإننا لم نحصل على التراكب المطلوب ويجب أن نكرر العملية مرة أخرى.

عندما تقوم بتشغيل البرنامج على جهاز محاكاة IBM Q Experience عن بعد ، سوف تحصل على النتيجة الموضحة في كود المصدر للكتاب Workspace\Ch07\p_counterfeitcoin.py. لاحظ أنني أستخدم Windows: إذا لم يكن لديك حق الوصول إلى شفرة المصدر للكتاب ، ولكنك ما زلت تريد تجربة هذا النص البرمجي ، فقم بوضع مقتطفات الشفرة من الأقسام السابقة في حاوية البرنامج النصي من القائمة 7.4 (تحقق من المسافة البادئة ، فإن ميزة بناء جملة Python بسيطة مجنون). الإدراج 7.4. الحاوية النصية الرئيسية لغز العملة المعدنية المزيفة

c:\python36-64\python.exe p_counterfeitcoin.py
Device ibmq_qasm_simulator counts {'001000000': 1}
False coin index is: 6






import sys
import matplotlib.pyplot as plt
import numpy as np
from math import pi, cos, acos, sqrt
from collections import Counter
from qiskit import QuantumProgram
sys.path.append('../Config/')
import Qconfig

#      
import basic plot tools
from qiskit.tools.visualization import plot_histogram

def main(M = 16, numberOfCoins = 8 , indexOfFalseCoin = 6
      , backend = "local_qasm_simulator" , shots = 1 ):

      if numberOfCoins < 4 or numberOfCoins >= M:
           raise Exception("Please use numberOfCoins between 4 and ", M-1)
      if indexOfFalseCoin < 0 or indexOfFalseCoin >= numberOfCoins:
           raise Exception("indexOfFalseCoin must be between 0 and ",
           numberOfCoins-1)

      //   7.17.3 

#################################################
# main
#################################################
if __name__ == '__main__':
     M = 8                      #    
     numberOfCoins = 4          #  M-1,  M —   
     indexOfFalseCoin = 2             #   0, 1... numberOfCoins — 1

     backend = "ibmq_qasm_simulator"
     #backend = "ibmqx3"
     shots = 1                         #      

     main(M, numberOfCoins, indexOfFalseCoin, backend, shots)

خوارزمية معممة لأي عدد من العملات المزيفة


لحل لغز العملات المعدنية المزيفة ، أنشأ علماء الرياضيات Terhal و Smolin في عام 1998 خوارزمية معممة لأي عدد من العملات المزيفة (k> 1). في تطبيقها ، يتم استخدام نموذج "B-oracle" ("oracle متوازن") ، بينما:

  • عند الإدخال صورة
  • يتم إنشاء سلسلة استعلام ، تتكون من N ثلاث مرات من البتات بحيث يكون صورةلها نفس العدد من 1 و –1 ؛
  • الجواب هو واحد من هذا القبيل
    صورة

ملاحظة تعد
Oracle جزءًا من الخوارزمية ، وتعتبر مربعًا أسود. يتم استخدامه لتبسيط المخططات ومقارنة تعقيد الخوارزميات الكمية والكلاسيكية. يجب أن تكون أوراكل جيدة سريعة ومتنوعة وسهلة التنفيذ.

يظهر مثال على استخدام B-oracle لقطعتين عملتين مزورتين مع k = 2 و N = 6 في الشكل. 7.4.

صورة

بشكل عام ، يعد لغز العملة المزيفة مثالًا نموذجيًا على تسريع خوارزمية الكم مقارنة بالنظير الكلاسيكي. في القسم التالي ، سننظر في لغز سحري غريب آخر يسمى "المربع السحري لميرمين - بيريز".

نبذة عن الكاتب


تخرج فلاديمير سيلفا من جامعة ولاية تينيسي الوسطى بدرجة ماجستير في علوم الكمبيوتر. لمدة خمس سنوات ، عمل في IBM كمهندس أبحاث ، حيث اكتسب خبرة غنية في الحوسبة الموزعة وحوسبة GRID.

لدى فلاديمير العديد من الشهادات ، بما في ذلك OCP (Oracle Certified Professional) و MCSD (Microsoft Certified Solutions Developer) و MCP (Microsoft Certified Professional). وهو أيضًا مؤلف عدد كبير من المقالات الفنية لموقع IBM developerWorks. لقد كتب الكتب التالية: الحوسبة الشبكية للمطورين (Charles River Media) ، و العملي العملي Eclipse Rich Client Platform (Apress) ، Pro Android Games (Apress) و Advanced Android 4 Games (Apress).

فلاديمير عداء ماراثون متعطش شارك في 16 سباقاً في نورث كارولينا (في وقت كتابة هذا التقرير). إنه يحب العزف على الجيتار الكلاسيكي والتفكير في أشياء مذهلة مثل ميكانيكا الكم.

حول محرري العلوم


الطبعة الأصلية

جايسون وايتهورن هو رائد أعمال ومطور برامج ذو خبرة. وقد ساعد العديد من شركات النفط والغاز على أتمتة وتحسين تقنيتها من خلال جمع البيانات التشغيلية و SCADA (التحكم الإشرافي والحصول على البيانات) وتعلم الآلة. تخرج جايسون من جامعة ولاية أركنساس بدرجة البكالوريوس في علوم الكمبيوتر.

يحب جيسون قضاء وقت فراغ مع زوجته وأربعة أطفال. يعيش في تولسا ، أوكلاهوما. يمكن العثور على مزيد من المعلومات حول Jason على موقع jason.whitehorn.us الخاص به .

الطبعة الروسية

ميخائيل كوروبكو- فيزيائي منخرط في النظريات والتجارب حول تطبيق البصريات الكمومية والميكانيكا البصرية والقياسات الكمومية لتحسين حساسية كاشفات موجات الجاذبية. منذ عام 2012 ، كانت عضوًا في التعاون الدولي للعلماء في كاشف موجات الجاذبية LIGO.

تخرج ميخائيل من قسم الفيزياء بجامعة موسكو الحكومية. Lomonosov ، هو حاليًا طالب دراسات عليا في معهد فيزياء الليزر بجامعة هامبورغ. يقضي وقت فراغه مع عائلته ، ويكتب مقالات علمية شعبية حول فيزياء الكم وينشر منشورات على تويتر (hbar_universe).

»يمكن العثور على مزيد من المعلومات حول الكتاب على موقع الناشر على الإنترنت
» جدول المحتويات
» مقتطفات من

Savingsbenders 25٪ off coupon - Silva

عند دفع النسخة الورقية من الكتاب ، يتم إرسال كتاب إلكتروني عن طريق البريد الإلكتروني.

All Articles