أثبتنا أن متجه الحالة للسجل Q في خوارزمية غروفر يبقى في الفضاء الثنائي الأبعاد الممتد بين ∣A0⟩ و∣A1⟩ بمجرد تنفيذ خطوة التهيئة.
الهدف هو إيجاد عنصر x∈A1، وسيتحقق هذا الهدف إذا تمكنا من الحصول على الحالة ∣A1⟩ — لأنه إذا قسنا هذه الحالة، سنحصل بالتأكيد على نتيجة قياس x∈A1.
بما أن حالة Q بعد t تكرار في الخطوة الثانية هي
Gt∣u⟩=cos((2t+1)θ)∣A0⟩+sin((2t+1)θ)∣A1⟩,
ينبغي اختيار t بحيث يكون
⟨A1∣Gt∣u⟩=sin((2t+1)θ)
أقرب ما يمكن إلى 1 بالقيمة المطلقة، لزيادة احتمالية الحصول على x∈A1 من القياس.
لأي زاوية θ∈(0,2π)، تتذبذب قيمة sin((2t+1)θ) كلما زاد t، وإن لم تكن بالضرورة دورية — ولا ضمان بأن نحصل على القيمة نفسها مرتين.
بطبيعة الحال، إضافة إلى جعل احتمالية الحصول على عنصر x∈A1 من القياس كبيرة، نريد أيضًا اختيار t بأصغر قيمة ممكنة، لأن t تطبيقات للعملية G تتطلب t استعلامًا للدالة f.
نظرًا لأننا نسعى إلى جعل sin((2t+1)θ) قريبة من 1 بالقيمة المطلقة، طريقة طبيعية لذلك هي اختيار t بحيث
(2t+1)θ≈2π.
حل هذه المعادلة لإيجاد t يُعطي
t≈4θπ−21.
بالطبع، t يجب أن يكون عددًا صحيحًا، لذا لن نتمكن بالضرورة من الوصول إلى هذه القيمة تمامًا — لكن ما يمكننا فعله هو أخذ أقرب عدد صحيح لهذه القيمة، وهو
t=⌊4θπ⌋.
هذا هو عدد التكرارات الموصى به لخوارزمية غروفر.
مع تقدم التحليل، سنرى أن قرب هذا العدد الصحيح من القيمة المستهدفة يؤثر بشكل طبيعي على أداء الخوارزمية.
(ملاحظة جانبية: إذا كانت القيمة المستهدفة π/(4θ)−1/2 تقع بالضبط في منتصف المسافة بين عددين صحيحين، فإن هذا التعبير لـt ينتج بالتقريب للأعلى. يمكننا بدلًا من ذلك التقريب للأسفل، وهو أمر منطقي لأنه يعني استعلامًا أقل — لكن هذا ثانوي وغير مهم لأغراض هذا الدرس.)
بالتذكر أن قيمة الزاوية θ تُعطى بالصيغة
θ=sin−1(N∣A1∣),
نرى أن عدد التكرارات الموصى به t يعتمد على عدد السلاسل في A1.
هذا يطرح تحديًا إذا لم نعرف عدد الحلول كما سنناقش لاحقًا.
أولًا، لنركز على الحالة التي توجد فيها سلسلة واحدة فقط x بحيث f(x)=1.
بصيغة أخرى، نحن نأخذ بعين الاعتبار نسخة من مسألة البحث الفريد.
في هذه الحالة لدينا
θ=sin−1(N1),
والذي يمكن تقريبه بشكل مناسب بـ
θ=sin−1(N1)≈N1
عندما يصبح N كبيرًا.
إذا عوَّضنا θ=1/N في التعبير
t=⌊4θπ⌋
نحصل على
t=⌊4πN⌋.
بالتذكر أن t ليس فقط عدد مرات تنفيذ العملية G، بل هو أيضًا عدد الاستعلامات للدالة f التي تتطلبها الخوارزمية، نرى أننا في طريقنا نحو الحصول على خوارزمية تتطلب O(N) استعلامًا.
الآن سنتحقق من مدى نجاح الاختيار الموصى به لـt.
يمكن التعبير بصورة صريحة عن احتمالية أن يكشف القياس النهائي عن الحل الفريد على النحو التالي:
p(N,1)=sin2((2t+1)θ).
الوسيطة الأولى، N، تشير إلى عدد العناصر التي نبحث بينها، والوسيطة الثانية، وهي 1 هنا، تشير إلى عدد الحلول.
بعد قليل سنستخدم نفس التدوين بصورة أعم، حيث تتعدد الحلول.
فيما يلي جدول لاحتمالات النجاح مع تزايد القيم N=2n.
لاحظ أن هذه الاحتمالات ليست في تزايد صارم.
بالتحديد، نلاحظ ظاهرة مثيرة للاهتمام عند N=4، حيث نحصل على الحل بيقين تام.
غير أنه يمكن إثبات بصفة عامة أن
p(N,1)≥1−N1
لجميع قيم N، لذا فإن احتمالية النجاح تتجه نحو 1 في النهاية مع تكبُّر N، كما توحي القيم أعلاه.
هذا جيد!
لكن لاحظ أن حتى حدًا ضعيفًا كـp(N,1)≥1/2 يُثبت فائدة خوارزمية غروفر.
لأيِّ نتيجة قياس x نحصل عليها من تشغيل الإجراء، يمكننا دائمًا التحقق من أن f(x)=1 باستعلام واحد لـf.
وإذا فشلنا في الحصول على السلسلة الفريدة x التي يحقق f(x)=1 باحتمالية على الأكثر 1/2 من تشغيل الإجراء مرة واحدة، فإنه بعد m تشغيل مستقل للإجراء سيكون احتمالية فشلنا في الحصول على هذه السلسلة الفريدة x على الأكثر 2−m.
أي باستخدام O(mN) استعلامًا لـf، سنحصل على الحل الفريد x باحتمالية لا تقل عن 1−2−m.
استخدام الحد الأفضل p(N,1)≥1−1/N يكشف أن احتمالية إيجاد x∈A1 باستخدام هذه الطريقة هي في الواقع لا تقل عن 1−N−m.
مع تغيُّر عدد العناصر في A1، تتغير الزاوية θ كذلك، مما قد يؤثر تأثيرًا كبيرًا على احتمالية نجاح الخوارزمية.
للإيجاز، لنكتب s=∣A1∣ لتدل على عدد الحلول، وكما في السابق سنفترض أن s≥1.
كمثال تحفيزي، لنفترض أن لدينا s=4 حلول بدلًا من حل واحد كما تناولنا أعلاه.
هذا يعني أن
θ=sin−1(N4),
وهو تقريبًا ضعف الزاوية في حالة ∣A1∣=1 عندما يكون N كبيرًا.
لنفترض أننا لم ننتبه لذلك، واخترنا نفس قيمة t كما في حالة الحل الفريد:
t=⌊4sin−1(1/N)π⌋.
ستكون النتيجة كارثية كما يكشف الجدول التالي للاحتمالات.
هذه المرة تتجه احتمالية النجاح نحو 0 كلما اتجه N نحو اللانهاية.
يحدث هذا لأننا في الواقع ندور بسرعة ضعف ما كنا ندور في حالة الحل الفريد، فنتخطى الهدف ∣A1⟩ وننتهي قرب −∣A0⟩.
لكن إذا استخدمنا بدلًا من ذلك الاختيار الموصى به لـt، وهو
t=⌊4θπ⌋
من أجل
θ=sin−1(Ns),
فإن الأداء سيكون أفضل.
بدقة أكبر، هذا الاختيار لـt يؤدي إلى النجاح باحتمالية مرتفعة.
حيث نستخدم التدوين المقترح سابقًا: p(N,s) تدل على احتمالية أن تكشف خوارزمية غروفر المُشغَّلة لـt تكرارًا عن حل عندما يوجد s حلًا من بين N احتمالًا.
هذا الحد الأدنى 1−s/N لاحتمالية النجاح غريب قليلًا من حيث إن كثرة الحلول تعني حدًا أدنى أضعف — لكن بافتراض أن s أصغر بكثير من N، نستنتج مع ذلك أن احتمالية النجاح مرتفعة بشكل معقول.
وكما من قبل، مجرد كون p(N,s) كبيرًا بشكل معقول يُثبت فائدة الخوارزمية.
يصادف أيضًا أن
p(N,s)≥Ns.
هذا الحد الأدنى يصف احتمالية أن تكون سلسلة x∈Σn مختارة عشوائيًا بتوزيع منتظم حلًا — لذا فإن خوارزمية غروفر دائمًا تؤدي أداءً أفضل على الأقل من التخمين العشوائي.
(في الواقع، عندما t=0، خوارزمية غروفر هي تخمين عشوائي.)
الآن لنلقِ نظرة على عدد التكرارات (ومن ثمَّ عدد الاستعلامات)
t=⌊4θπ⌋,
من أجل
θ=sin−1(Ns).
لكل α∈[0,1]، يصح أن sin−1(α)≥α،
وبالتالي
θ=sin−1(Ns)≥Ns.
هذا يستلزم أن
t≤4θπ≤4πsN.
وهذا يُترجَم إلى توفير في عدد الاستعلامات كلما زاد s.
بالتحديد، عدد الاستعلامات المطلوبة هو
إذا كان عدد الحلول s=∣A1∣غير معروف، فمطلوب نهج مختلف، إذ ليس لدينا في هذه الحالة معرفة بـs تُرشدنا في اختيار t.
في الواقع، توجد عدة نهج.
نهج بسيط هو اختيار
t∈{1,…,⌊πN/4⌋}
بشكل عشوائي منتظم.
اختيار t بهذه الطريقة يجد دائمًا حلًا (إذا وُجد) باحتمالية تزيد على 40%، وإن كان هذا غير واضح ويستلزم تحليلًا لن نُدرجه هنا.
لكنه منطقي بالنظر إلى الصورة الهندسية:
تدوير حالة Q عددًا عشوائيًا من المرات يشبه اختيار متجه وحدة عشوائي في الفضاء الممتد بـ∣A0⟩ و∣A1⟩، حيث من المرجح أن يكون معامل ∣A1⟩ كبيرًا بشكل معقول.
بتكرار هذا الإجراء والتحقق من النتيجة بنفس الطريقة المذكورة سابقًا، يمكن جعل احتمالية إيجاد الحل قريبة جدًا من 1.
يوجد طريقة مُحسَّنة تجد حلًا حين يوجد باستخدام O(N/s) استعلامًا، حتى حين يكون عدد الحلول s غير معروف، وتتطلب O(N) استعلامًا لتحديد أنه لا توجد حلول حين s=0.
الفكرة الأساسية هي اختيار t بشكل منتظم عشوائي من المجموعة {1,…,T} بصورة تكرارية مع زيادة قيم T.
بالتحديد، يمكننا البدء بـT=1 وزيادتها أسيًا، مع إنهاء العملية فور العثور على حل وتقييد T لتجنب إضاعة الاستعلامات حين لا يوجد حل.
تستفيد هذه العملية من حقيقة أنه كلما زادت الحلول، قلَّت الاستعلامات اللازمة.
غير أن الأمر يستلزم بعض الدقة في الموازنة بين معدل زيادة T واحتمالية النجاح في كل تكرار.
(أخذ T←⌈45T⌉ يجدي مثلًا، كما يُبيِّن التحليل.
أما مضاعفة T فلا يجدي — وهذا يبيَّن أنها زيادة سريعة جدًا.)
افترضنا ضمنيًا أن A0 وA1 كلتيهما غير فارغتين.
هنا سنتناول باختصار ما يحدث حين تكون إحدى هاتين المجموعتين فارغة.
قبل الخوض في التحليل، دعنا نلاحظ الأمر الجلي:
إذا كانت كل سلسلة x∈Σn حلًا، فسنرى حلًا عند القياس؛ وحين لا توجد أي حلول، لن نرى أيًا منها.
لا حاجة في بعض الأحيان للذهاب أبعد من هذا.
يمكننا مع ذلك التحقق سريعًا من الرياضيات لهذه الحالات البديهية.
الحالة التي تكون فيها إحدى A0 وA1 فارغة تحدث حين تكون f ثابتة؛
A1 فارغة حين f(x)=0 لكل x∈Σn، وA0 فارغة حين f(x)=1 لكل x∈Σn.
هذا يعني أن
Zf∣u⟩=±∣u⟩,
وبالتالي
G∣u⟩=(2∣u⟩⟨u∣−I)Zf∣u⟩=±(2∣u⟩⟨u∣−I)∣u⟩=±∣u⟩.
إذن، بصرف النظر عن عدد التكرارات t التي نُجريها في هذه الحالات، ستكشف القياسات دائمًا عن سلسلة عشوائية منتظمة x∈Σn.