سنحلّل الآن خوارزمية غروفر لنفهم كيف تعمل.
سنبدأ بما يمكن وصفه بالتحليل الرمزي، حيث نحسب كيف تؤثر عملية غروفر G على حالات معينة، ثم سنربط هذا التحليل الرمزي بصورة هندسية تساعدنا على تصوّر آلية عمل الخوارزمية.
المجموعة A1 تحتوي على جميع حلول مسألة البحث لدينا، بينما تحتوي A0 على السلاسل التي ليست حلولاً (ويمكننا الإشارة إليها بـغير الحلول حين يكون ذلك مناسباً).
تحقق هاتان المجموعتان A0∩A1=∅ وA0∪A1=Σn، أي أن هذا تقسيم ثنائي لـΣn.
بعد ذلك سنعرّف شعاعَي وحدة يمثّلان تراكبات متجانسة على مجموعتَي الحلول وغير الحلول.
بصورة دقيقة، كل واحد من هذين الشعاعين لا يُعرَّف إلا حين تكون مجموعته المقابلة غير فارغة، لكننا من الآن فصاعداً سنركّز على الحالة التي لا تكون فيها A0 ولا A1 فارغة.
الحالتان A0=∅ وA1=∅ يمكن معالجتهما بسهولة بشكل منفصل، وسنفعل ذلك لاحقاً.
تجدر الإشارة إلى أن الترميز المستخدم هنا شائع: في كل مرة يكون لدينا مجموعة S منتهية وغير فارغة، يمكننا كتابة ∣S⟩ للدلالة على شعاع الحالة الكمومية المتجانس على عناصر S.
لنعرّف أيضاً ∣u⟩ بوصفه حالة كمومية متجانسة على جميع السلاسل ذات n بت:
∣u⟩=N1x∈Σn∑∣x⟩.
لاحظ أن
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
كذلك لدينا أن ∣u⟩=H⊗n∣0n⟩، لذا فإن ∣u⟩ يمثّل حالة السجل Q بعد التهيئة في الخطوة 1 من خوارزمية غروفر.
هذا يعني أنه قُبيل تكرارات G في الخطوة 2، تقع حالة Q في الفضاء الشعاعي ثنائي الأبعاد المُمتَدّ بـ∣A0⟩ و∣A1⟩، كما أن معاملات هذين الشعاعين أعداد حقيقية.
وكما سنرى، ستحتفظ حالة Q بهذه الخصائص دائماً — أي أنها تظل تركيباً خطياً حقيقياً لـ∣A0⟩ و∣A1⟩ — بعد أي عدد من تكرارات العملية G في الخطوة 2.
تخيّل للحظة أننا استبدلنا الدالة f بتركيبها مع دالة NOT — بمعنى آخر، الدالة التي نحصل عليها بقلب بت الإخراج في f.
سنسمّي هذه الدالة الجديدة g، ويمكن التعبير عنها رمزياً بعدة طرق.
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
لاحظ أن
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
لكل سلسلة x∈Σn، وبالتالي
Zg=−Zf.
هذا يعني أننا لو استبدلنا الدالة f بالدالة g، فلن تتغير خوارزمية غروفر في شيء — لأن الحالات التي نحصل عليها من الخوارزمية في الحالتين متكافئة بالضرورة حتى الطور الكلي.
ليس هذا مشكلة!
بشكل حدسي، الخوارزمية لا تكترث بأي السلاسل حلول وأيها ليس كذلك — بل تحتاج فقط إلى التمييز بين الحلول وغير الحلول كي تعمل بشكل صحيح.