خوارزمية غروفر
في هذه الوحدة من Qiskit in Classrooms، يجب أن يكون لدى الطلاب بيئة Python تعمل بشكل صحيح مع تثبيت الحزم التالية:
qiskitالإصدار v2.1.0 أو أحدثqiskit-ibm-runtimeالإصدار v0.40.1 أو أحدثqiskit-aerالإصدار v0.17.0 أو أحدثqiskit.visualizationnumpypylatexenc
لإعداد وتثبيت الحزم أعلاه، راجع دليل تثبيت Qiskit. لتشغيل المهام على أجهزة الكمبيوتر الكمومية الحقيقية، يحتاج الطلاب إلى إنشاء حساب على IBM Quantum® باتباع الخطوات الموضّحة في دليل إعداد حساب IBM Cloud الخاص بك.
تم اختبار هذه الوحدة واستغرقت 12 ثانية من وقت QPU. هذا تقدير بحسن نية؛ قد يختلف استخدامك الفعلي.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'
مقدّمة
خوارزمية غروفر هي خوارزمية كمومية أساسية تعالج مشكلة البحث غير المنظّم: بافتراض أن لديك مجموعة من عنصرًا وطريقة للتحقق مما إذا كان أيّ عنصر هو الذي تبحث عنه، فكيف يمكنك العثور على العنصر المطلوب بأسرع ما يمكن؟ في الحوسبة الكلاسيكية، إذا كانت البيانات غير مرتّبة ولا يوجد هيكل لاستغلاله، فإن أفضل نهج هو التحقق من كل عنصر واحدًا تلو الآخر، مما يؤدي إلى تعقيد استعلام يبلغ — في المتوسط، ستحتاج إلى التحقق من نحو نصف العناصر قبل العثور على الهدف.

خوارزمية غروفر، التي قدّمها Lov Grover عام 1996، توضّح كيف يمكن للحاسوب الكمومي حلّ هذه المشكلة بكفاءة أعلى بكثير، إذ لا يحتاج سوى خطوة للعثور على العنصر المحدَّد باحتمالية عالية. وهذا يمثّل تسريعًا تربيعيًا مقارنةً بالأساليب الكلاسيكية، وهو أمر مهم للغاية مع مجموعات البيانات الكبيرة.
تعمل الخوارزمية في السياق التالي:
- إعداد المشكلة: لديك دالة تُرجع 1 إذا كان هو العنصر الذي تبحث عنه، و0 في غير ذلك. كثيرًا ما تُسمّى هذه الدالة أوراك ل أو صندوق أسود، لأنك لا تستطيع معرفة البيانات إلا عبر الاستعلام عن .
- فائدة الحوسبة الكمومية: في حين تتطلّب الخوارزميات الكلاسيكية لهذه المشكلة في المتوسط استعلامًا، تستطيع خوارزمية غروفر إيجاد الحلّ في ما يقارب استعلامًا، وهو أسرع بكثير عند قيم الكبيرة.
- كيف تعمل (على مستوى عالٍ):
- يُنشئ الحاسوب الكمومي أوّلًا تراكبًا لجميع الحالات الممكنة، ممثِ ّلًا جميع العناصر المحتملة في آنٍ واحد.
- ثم يُطبّق بشكل متكرّر سلسلة من العمليات الكمومية (تكرار غروفر) التي تُضخّم احتمالية الإجابة الصحيحة وتُخفّض الإجابات الأخرى.
- بعد عدد كافٍ من التكرارات، يُعطي قياس الحالة الكمومية الإجابة الصحيحة باحتمالية عالية.
هذا مخطط بسيط جدًا لخوارزمية غروفر يتجاوز الكثير من التفاصيل الدقيقة. للاطلاع على مخطط أكثر تفصيلًا، انظر هذه الورقة البحثية.

بعض الملاحظات المهمة حول خوارزمية غروفر:
- هي الأمثل للبحث غير المنظّم: لا توجد خوارزمية كمومية قادرة على حلّ المشكلة بأقل من استعلامًا.
- توفّر تسريعًا تربيعيًا فحسب، لا أسيًا — على عكس بعض الخوارزميات الكمومية الأخرى (مثل خوارزمية Shor للتحليل إلى عوامل أولية).
- لها تطبيقات عملية، كاحتمالية تسريع هجمات القوة الغاشمة على الأنظمة التشفيرية، وإن كان التسريع لا يكفي وحده لكسر معظم تقنيات التشفير الحديثة.
بالنسبة لطلاب الجامعات الملمّين بمفاهيم الحوسبة الأساسية ونماذج الاستعلام، تقدّم خوارزمية غروفر توضيحًا واضحًا لكيفية تفوّق الحوسبة الكمومية على الأساليب الكلاسيكية في مسائل بعينها، حتى حين يكون التحسين "مجرد" تسريع تربيعي. كما تُعدّ بوابةً لفهم الخوارزميات الكمومية الأكثر تقدمًا والإمكانات الأشمل للحوسبة الكمومية.
تضخيم السعة (Amplitude amplification) هو خوارزمية كمومية للأغراض العامة، أو روتين فرعي، يمكن استخدامه للحصول على تسريع تربيعي على عدد من الخوارزميات الكلاسيكية. كانت خوارزمية غروفر أوّل من أثبت هذا التسريع على مشاكل البحث غير المنظّم. تتطلّب صياغة مشكلة بحث غروفر دالة أوراكل تُعلّم حالة أساس حسابية واحدة أو أكثر باعتبارها الحالات التي نسعى إلى إيجادها، ودائرة تضخيم تزيد سعة الحالات المعلَّمة وبالتالي تُقلّل الحالات المتبقية.
نوضّح هنا كيفية بناء أوراكلات غروفر واستخدام GroverOperator من مكتبة دوائر Qiskit لإعداد نموذج بحث غروفر بسهولة. يتيح البدائي Sampler في وقت التشغيل تنفيذ دوائر غروفر بسلاسة.
الرياضيات
لنفترض وجود دالة تربط السلاسل الثنائية بمتغير ثنائي واحد، أي
مثال على ذلك المعرَّف على :
ومثال آخر معرَّف على :
مهمّتك هي إيجاد الحالات الكمومية المقابلة لتلك الوسائط في التي تُطابق القيمة 1. بعبارة أخرى، أوجد جميع بحيث (أو أبلّغ إن لم يكن هناك حلّ). سنُشير إلى عدم الحلول بـ. وبطبيعة الحال، سنجري ذلك على حاسوب كمومي باستخدام الحالات الكمومية، لذا من المفيد التعبير عن هذه السلاسل الثنائية كحالات: