خوارزمية فريفالدز

خوارزمية فريفالدز (نسبةً إلى روسينش مارتينش فريفالدز ) هي خوارزمية احتمالية عشوائية تُستخدم للتحقق من ضرب المصفوفات . بفرض وجود ثلاث مصفوفات من الرتبة n × n  أ{\displaystyle A}،ب{\displaystyle B}، وج{\displaystyle C}تتمثل إحدى المشكلات العامة في التحقق مما إذاأ×ب=ج{\displaystyle A\times B=C}ستقوم خوارزمية بسيطة بحساب الناتجأ×ب{\displaystyle A\times B}قم بتوضيح ذلك وقارن كل حد على حدة لمعرفة ما إذا كان هذا الناتج يساويج{\displaystyle C}ومع ذلك، فإن أفضل خوارزمية معروفة لضرب المصفوفات تعمل فييا(ن2.372){\displaystyle O(n^{2.372})}الوقت. تستخدم خوارزمية فريفالدز العشوائية لتقليل هذا الوقت المحدد لـيا(ن2){\displaystyle O(n^{2})}[ 1 ] باحتمالية عالية. فييا(كن2){\displaystyle O(kn^{2})}الوقت الذي يمكن للخوارزمية فيه التحقق من ضرب المصفوفات باحتمالية فشل أقل من2-ك{\displaystyle 2^{-k}}.

الخوارزمية

مدخل

ثلاث مصفوفات من الرتبة n × n  أ{\displaystyle A}،ب{\displaystyle B}، وج{\displaystyle C}.

الناتج

نعم، إذاأ×ب=ج{\displaystyle A\times B=C}لا، وإلا.

إجراء

  1. قم بتوليد متجه عشوائي من النوع 0/1 بحجم n × 1  ر{\displaystyle {\vec {r}}}.
  2. الحوسبةP=أ×(بر)-جر{\displaystyle {\vec {P}}=A\times (B{\vec {r}})-C{\vec {r}}}.
  3. أخرج "نعم" إذاP=(0،0،...،0)تي{\displaystyle {\vec {P}}=(0,0,\ldots ,0)^{T}}"لا"، وإلا.

خطأ

لوأ×ب=ج{\displaystyle A\times B=C}إذا كان الأمر كذلك، فإن الخوارزمية تُرجع دائمًا "نعم".أ×بج{\displaystyle A\times B\neq C}إذا كان احتمال أن تُرجع الخوارزمية "نعم" أقل من أو يساوي النصف، فإن هذا يُسمى خطأ من جانب واحد .

من خلال تكرار الخوارزمية k مرة وإرجاع "نعم" فقط إذا أسفرت جميع التكرارات عن "نعم"، يكون وقت التشغيل هويا(كن2){\displaystyle O(kn^{2})}واحتمالية الخطأ لـ1/2ك{\displaystyle \leq 1/2^{k}}يتم تحقيق ذلك.

مثال

لنفترض أن المرء يرغب في تحديد ما إذا كان:

أب=[2334][1012]=؟[6587]=ج.{\displaystyle AB={\begin{bmatrix}2&3\\3&4\end{bmatrix}}{\begin{bmatrix}1&0\\1&2\end{bmatrix}}{\stackrel {?}{=}}{\begin{bmatrix}6&5\\8&7\end{bmatrix}}=C.}

يتم اختيار متجه عشوائي مكون من عنصرين، تكون قيم مدخلاته إما 0 أو 1 على سبيل المثال ر=[11]{\displaystyle {\vec {r}}={\begin{bmatrix}1\\1\end{bmatrix}}} - وتستخدم لحساب:

أ×(بر)-جر=[2334]([1012][11])-[6587][11]=[2334][13]-[1115]=[1115]-[1115]=[00].{\displaystyle {\begin{aligned}A\times (B{\vec {r}})-C{\vec {r}}&={\begin{bmatrix}2&3\\3&4\end{bmatrix}}\left({\begin{bmatrix}1&0\\1&2\end{bmatrix}}{\begin{bmatrix}1\\1\end{bmatrix}}\right)-{\begin{bmatrix}6&5\\8&7\end{bmatrix}}{\begin{bmatrix}1\\1\end{bmatrix}}\\&={\begin{bmatrix}2&3\\3&4\end{bmatrix}}{\begin{bmatrix}1\\3\end{bmatrix}}-{\begin{bmatrix}11\\15\end{bmatrix}}\\&={\begin{bmatrix}11\\15\end{bmatrix}}-{\begin{bmatrix}11\\15\end{bmatrix}}\\&={\begin{bmatrix}0\\0\end{bmatrix}}.\end{aligned}}}

ينتج عن هذا المتجه الصفري، مما يشير إلى إمكانية أن يكون AB = C. ومع ذلك، إذا كان المتجه في تجربة ثانيةر=[10]{\displaystyle {\vec {r}}={\begin{bmatrix}1\\0\end{bmatrix}}}عند اختيارها، تصبح النتيجة:

أ×(بر)-جر=[2334]([1012][10])-[6587][10]=[-1-1].{\displaystyle A\times (B{\vec {r}})-C{\vec {r}}={\begin{bmatrix}2&3\\3&4\end{bmatrix}}\left({\begin{bmatrix}1&0\\1&2\end{bmatrix}}{\begin{bmatrix}1\\0\end{bmatrix}}\right)-{\begin{bmatrix}6&5\\8&7\end{bmatrix}}{\begin{bmatrix}1\\0\end{bmatrix}}={\begin{bmatrix}-1\\-1\end{bmatrix}}.}

والنتيجة غير صفرية، مما يثبت أن AB C في الواقع.

يوجد أربعة متجهات ثنائية العناصر من نوع 0/1، ونصفها يعطي المتجه الصفري في هذه الحالة (ر=[00]{\displaystyle {\vec {r}}={\begin{bmatrix}0\\0\end{bmatrix}}}ور=[11]{\displaystyle {\vec {r}}={\begin{bmatrix}1\\1\end{bmatrix}}}وبالتالي، فإن احتمال اختيار هذه القيم عشوائيًا في تجربتين (والاستنتاج الخاطئ بأن AB=C) هو 1/2 أو 1/4. في الحالة العامة، قد تكون نسبة r التي تُعطي المتجه الصفري أقل من 1/2، وسيتم استخدام عدد أكبر من التجارب (مثل 20)، مما يجعل احتمال الخطأ ضئيلاً للغاية.

تحليل الأخطاء

لنفترض أن p تساوي احتمال الخطأ. ندعي أنه إذا كان A × B = C ، فإن p = 0، وإذا كان A × BC ، فإن p ≤ 1/2.    

الحالة أ × ب = ج  

P=أ×(بر)-جر=(أ×ب)ر-جر=(أ×ب-ج)ر=0{\displaystyle {\begin{aligned}{\vec {P}}&=A\times (B{\vec {r}})-C{\vec {r}}\\&=(A\times B){\vec {r}}-C{\vec {r}}\\&=(A\times B-C){\vec {r}}\\&={\vec {0}}\end{aligned}}}

هذا بغض النظر عن قيمةر{\displaystyle {\vec {r}}}لأنه يستخدم ذلك فقطأ×ب-ج=0{\displaystyle A\times B-C=0}وبالتالي فإن احتمال الخطأ في هذه الحالة هو:

برو[P0]=0{\displaystyle \Pr[{\vec {P}}\neq 0]=0}

الحالة أ × بج  

يتركد{\displaystyle D}بحيث

P=د×ر=(ص1،ص2،...،صن)تي{\displaystyle {\vec {P}}=D\times {\vec {r}}=(p_{1},p_{2},\dots ,p_{n})^{T}}

أين

د=أ×ب-ج=(دأناج){\displaystyle D=A\times B-C=(d_{ij})}.

منذأ×بج{\displaystyle A\times B\neq C}لدينا أن بعض عناصرد{\displaystyle D}غير صفري. لنفترض أن العنصردأناج0{\displaystyle d_{ij}\neq 0}بحسب تعريف ضرب المصفوفات ، لدينا:

صأنا=ك=1ندأناكرك=دأنا1ر1++دأناجرج++دأنانرن=دأناجرج+y{\displaystyle p_{i}=\sum _{k=1}^{n}d_{ik}r_{k}=d_{i1}r_{1}+\cdots +d_{ij}r_{j}+\cdots +d_{in}r_{n}=d_{ij}r_{j}+y}.

لبعض الثوابتy{\displaystyle y}باستخدام نظرية بايز ، يمكننا التقسيم علىy{\displaystyle y}:

نستخدم ذلك:

برو[صأنا=0|y=0]=برو[رج=0]=12{\displaystyle \Pr[p_{i}=0|y=0]=\Pr[r_{j}=0]={\frac {1}{2}}}
برو[صأنا=0|y0]=برو[رج=1دأناج=-y]برو[رج=1]=12{\displaystyle \Pr[p_{i}=0|y\neq 0]=\Pr[r_{j}=1\land d_{ij}=-y]\leq \Pr[r_{j}=1]={\frac {1}{2}}}

وبإدخال هذه القيم في المعادلة ( 1 )، نحصل على:

برو[صأنا=0]12برو[y=0]+12برو[y0]=12برو[y=0]+12(1-برو[y=0])=12{\displaystyle {\begin{aligned}\Pr[p_{i}=0]&\leq {\frac {1}{2}}\cdot \Pr[y=0]+{\frac {1}{2}}\cdot \Pr[y\neq 0]\\&={\frac {1}{2}}\cdot \Pr[y=0]+{\frac {1}{2}}\cdot (1-\Pr[y=0])\\&={\frac {1}{2}}\end{aligned}}}

لذلك،

برو[P=0]=برو[ص1=0صأنا=0صن=0]برو[صأنا=0]12.{\displaystyle \Pr[{\vec {P}}=0]=\Pr[p_{1}=0\land \dots \land p_{i}=0\land \dots \land p_{n}=0]\leq \Pr[p_{i}=0]\leq {\frac {1}{2}}.}

وبهذا يكتمل البرهان.

التداعيات

يُظهر تحليل خوارزمي بسيط أن وقت تشغيل هذه الخوارزمية هويا(ن2){\displaystyle O(n^{2})}(باستخدام ترميز Big O ). وهذا يتفوق على وقت تشغيل الخوارزمية الحتمية الكلاسيكية البالغيا(ن3){\displaystyle O(n^{3})}(أويا(ن2.372){\displaystyle O(n^{2.372})}في حالة استخدام ضرب المصفوفات السريع ). كما يُظهر تحليل الخطأ أنه في حالة تشغيل الخوارزميةك{\displaystyle k}في بعض الأحيان، يكون هامش الخطأ أقل من1/2ك{\displaystyle 1/2^{k}}يمكن تحقيق ذلك، وهي كمية صغيرة للغاية. كما أن الخوارزمية سريعة عمليًا نظرًا لتوافر تطبيقات سريعة لضرب المصفوفات في المتجهات. لذلك، يمكن استخدام الخوارزميات العشوائية لتسريع خوارزمية حتمية بطيئة جدًا .

كثيراً ما تظهر خوارزمية فريفالدز في مقدمات الخوارزميات الاحتمالية بسبب بساطتها وكيف توضح تفوق الخوارزميات الاحتمالية عملياً في بعض المشاكل.

انظر أيضاً

مراجع

  1. راغافان، برابهاكار (1997). "الخوارزميات العشوائية" . مجلة ACM Computing Surveys . 28 : 33-37 . doi : 10.1145/234313.234327 . S2CID 207196543 .