خوارزمية إقليدية موسعة

في الحساب وبرمجة الحاسوب ، تُعد خوارزمية إقليدس الموسعة امتدادًا لخوارزمية إقليدس ، وهي تحسب، بالإضافة إلى القاسم المشترك الأكبر (gcd) للأعداد الصحيحة a و b ، معاملات متطابقة بيزو ، وهي أعداد صحيحة x و y بحيثأx+بy=القاسم المشترك الأكبر(أ،ب){\displaystyle ax+by=\gcd(a,b)}ويُشار إليه عمومًا بـxgcd(أ،ب){\displaystyle \operatorname {xgcd} (a,b)}.

هذه خوارزمية تحقق ، لأن القاسم المشترك الأكبر هو العدد الوحيد الذي يمكنه في آنٍ واحد تحقيق هذه المعادلة وقسمة المدخلات. [ 1 ] كما أنها تسمح بحساب ناتج قسمة a و b على قاسمهما المشترك الأكبر، بتكلفة إضافية شبه معدومة.

يشير مصطلح "الخوارزمية الإقليدية الموسعة" أيضًا إلى خوارزمية مشابهة جدًا لحساب القاسم المشترك الأكبر لكثير الحدود ومعاملات هوية بيزو لكثيري حدود أحاديي المتغير .

تُعدّ خوارزمية إقليدس الموسّعة مفيدةً للغاية عندما يكون a و b عددين أوليين فيما بينهما . في هذه الحالة، يكون x هو المعكوس الضربي المعياري لـ a بتردد b ، ويكون y هو المعكوس الضربي المعياري لـ b بتردد a . وبالمثل، تسمح خوارزمية إقليدس الموسّعة متعددة الحدود بحساب المعكوس الضربي في امتدادات الحقول الجبرية ، وخاصةً في الحقول المنتهية ذات الرتبة غير الأولية. ونتيجةً لذلك، تُستخدم كلتا خوارزميتي إقليدس الموسّعتين على نطاق واسع في علم التشفير . وعلى وجه الخصوص، يُعدّ حساب المعكوس الضربي المعياري خطوةً أساسيةً في اشتقاق أزواج المفاتيح في طريقة تشفير المفتاح العام RSA .

وصف

تعتمد خوارزمية إقليدس القياسية على سلسلة من عمليات القسمة الإقليدية التي لا تُستخدم نواتجها، بل يُحتفظ فقط بالبواقي . أما في الخوارزمية الموسعة، فتُستخدم نواتج القسمة المتتالية. وبشكل أدق، تتكون خوارزمية إقليدس القياسية، عند إدخال a و b ، من حساب سلسلة من العمليات.q1،...،qك{\displaystyle q_{1},\ldots ,q_{k}}من نواتج القسمة ومتتاليةر0،...،رك+1{\displaystyle r_{0},\ldots ,r_{k+1}}من البواقي بحيث

ر0=أر1=برأنا+1=رأنا-1-qأنارأناو0رأنا+1<|رأنا|(هذا يحدد qأنا){\displaystyle {\begin{aligned}r_{0}&=a\\r_{1}&=b\\&\,\,\,\vdots \\r_{i+1}&=r_{i-1}-q_{i}r_{i}\quad {\text{and}}\quad 0\leq r_{i+1}<|r_{i}|\quad {\text{(this defines }}q_{i})\\&\,\,\,\vdots \end{aligned}}}

تتمثل الخاصية الرئيسية للقسمة الإقليدية في أن المتباينات على اليمين تحدد بشكل فريدqأنا{\displaystyle q_{i}}ورأنا+1{\displaystyle r_{i+1}}منرأنا-1{\displaystyle r_{i-1}}ورأنا.{\displaystyle r_{i}.}

تتوقف العملية الحسابية عند الوصول إلى باقي القسمةرك+1{\displaystyle r_{k+1}}وهو صفر؛ القاسم المشترك الأكبر هو آخر باقي غير صفريرك.{\displaystyle r_{k}.}

تتبع خوارزمية إقليدس الموسعة نهجًا مشابهًا، ولكنها تضيف سلسلتين أخريين، كما يلي

ر0=أر1=بs0=1s1=0ت0=0ت1=1رأنا+1=رأنا-1-qأنارأناو 0رأنا+1<|رأنا|(هذا يحدد qأنا)sأنا+1=sأنا-1-qأناsأناتأنا+1=تأنا-1-qأناتأنا{\displaystyle {\begin{aligned}r_{0}&=a&r_{1}&=b\\s_{0}&=1&s_{1}&=0\\t_{0}&=0&t_{1}&=1\\&\,\,\,\vdots &&\,\,\,\vdots \\r_{i+1}&=r_{i-1}-q_{i}r_{i}&{\text{and }}0&\leq r_{i+1}<|r_{i}|&{\text{(this defines }}q_{i}{\text{)}}\\s_{i+1}&=s_{i-1}-q_{i}s_{i}\\t_{i+1}&=t_{i-1}-q_{i}t_{i}\\&\,\,\,\vdots \end{aligned}}}

تتوقف العملية الحسابية أيضًا عندمارك+1=0{\displaystyle r_{k+1}=0}ويعطي

  • رك{\displaystyle r_{k}}هو القاسم المشترك الأكبر للمدخلاتأ=ر0{\displaystyle a=r_{0}}وب=ر1.{\displaystyle b=r_{1}.}
  • معاملات بيزو هيsك{\displaystyle s_{k}}وتك،{\displaystyle t_{k},}إنهالقاسم المشترك الأكبر(أ،ب)=رك=أsك+بتك{\displaystyle \gcd(a,b)=r_{k}=as_{k}+bt_{k}}
  • ناتج قسمة a و b على قاسمهما المشترك الأكبر يُعطى بالصيغة التالية:sك+1=±بالقاسم المشترك الأكبر(أ،ب){\displaystyle s_{k+1}=\pm {\frac {b}{\gcd(a,b)}}}وتك+1=أالقاسم المشترك الأكبر(أ،ب){\displaystyle t_{k+1}=\mp {\frac {a}{\gcd(a,b)}}}( اللافتة){\displaystyle \mp }عكس±{\displaystyle \pm }).

علاوة على ذلك، إذا كانت كل من a و b موجبة والقاسم المشترك الأكبر(أ،ب)مين(أ،ب){\displaystyle \gcd(a,b)\neq \min(a,b)}، ثم

|sأنا|ب2القاسم المشترك الأكبر(أ،ب)و|تأنا|أ2القاسم المشترك الأكبر(أ،ب){\displaystyle |s_{i}|\leq \left\lfloor {\frac {b}{2\gcd(a,b)}}\right\rfloor \quad {\text{and}}\quad |t_{i}|\leq \left\lfloor {\frac {a}{2\gcd(a,b)}}\right\rfloor }

ل0أناك،{\displaystyle 0\leq i\leq k,}أينx{\displaystyle \lfloor x\rfloor }يشير إلى الجزء الصحيح من x ، أي أكبر عدد صحيح لا يزيد عن x .

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

وهذا يعني أيضًا أنه إذا كان a و b مناسبين لنوع بيانات عدد صحيح غير موقع ، فيمكن لبرنامج الكمبيوتر حساب معاملات بيزو في نوع العدد الصحيح الموقع المقابل دون حدوث تجاوز في عدد صحيح .

أمثلة

يوضح الجدول التالي كيفية عمل خوارزمية إقليدس الموسعة مع المدخلين 240 و 46 . القاسم المشترك الأكبر هو آخر عنصر غير صفري، وهو 2 في عمود "الباقي". تتوقف العملية الحسابية عند الصف 6، لأن الباقي فيه يساوي صفرًا . تظهر معاملات بيزو في العمودين الأخيرين من الصف قبل الأخير. في الواقع، من السهل التحقق من أن −9 × 240 + 47 × 46 = 2. أخيرًا، العنصران الأخيران 23 و −120 من الصف الأخير هما، مع مراعاة الإشارة، ناتج قسمة المدخلين 46 و 240 على القاسم المشترك الأكبر 2 .

الفهرس iخارج القسمة q i −1الباقي ر يs iتي آي
024010
14601
2240 ÷ 46 = 5240 - 5 × 46 = 1015 × 0 = 10 − 5 × 1 = −5
346 ÷ 10 = 446 - 4 × 10 = 604 × 1 = −41 − 4 × −5 = 21
410 ÷ 6 = 1101 × 6 = 411 × −4 = 5-5 - 1 × 21 = -26
56 ÷ 4 = 161 × 4 = 2-4 - 1 × 5 = -921 − 1 × −26 = 47
64 ÷ 2 = 242 × 2 = 052 × −9 = 23-26 - 2 × 47 = -120

يستخدم المثال التالي رمزًا أكثر اختصارًا. القاسم المشترك الأكبر لـأ=68{\displaystyle a=68}وب=30{\displaystyle b=30}يمكن حسابها على النحو التالي:

ز=زجد(68،30)--(-2)=زجد(8،30)(-3)--{\displaystyle g=\mathrm {gcd} {\underset {\color {Green}\scriptstyle \;\;^{\uparrow }\!\!-\!-\!(-2)}{(68,30)}}=\mathrm {gcd} {\underset {\color {Green}\scriptstyle \!(-3)\!-\!\!-\!^{\uparrow }\;\;}{(8,30)}}}=زجد(8،6)--(-1)=زجد(2،6)(-3)--=زجد(2،0)=2،{\displaystyle =\mathrm {gcd} {\underset {\color {Green}\scriptstyle \;^{\uparrow }\!\!-\!\!-\!(-1)\!\!}{(8,\,6)}}=\mathrm {gcd} {\underset {\color {Green}\scriptstyle \!\!(-3)\!-\!\!-\!^{\uparrow }\;}{(2,\,6)}}=\mathrm {gcd} (2,0)=2,}

أين--(-2){\displaystyle \color {Green}\scriptstyle \,^{\uparrow }\!\!-\!-\!(-2)}الخطوة الأولى تعني أن-2{\displaystyle -2}أوقات30{\displaystyle 30}يُضاف إلى68{\displaystyle 68}(لا يتغير القاسم المشترك الأكبر عند إضافة مضاعف لأحد الأرقام إلى الآخر).

خوارزمية إقليدية موسعة لإيجاد القاسم المشترك الأكبر لـ 𝑔 = gcd(68,30)
خوارزمية إقليدية موسعة لإيجاد القاسم المشترك الأكبر لـ 𝑔 = gcd(68,30)

بتطبيق عمليات الجمع المشار إليها باللون الأخضر للمضاعفات بشكل مماثل للمعادلات، بدءًا منأ=1أ+0ب{\displaystyle a=1a+0b}وب=0أ+1ب،{\displaystyle b=0a+1b,}يؤدي إلىز=4أ-9ب،{\displaystyle g=4a-9b,}وفقًا للحسابات المجاورة (يستخدم الجدول المقابل في أقصى اليمين عمليات الصفوف).

دليل

منذ0رأنا+1<|رأنا|{\displaystyle 0\leq r_{i+1}<|r_{i}|}، التسلسلرأنا{\displaystyle r_{i}}هي متتالية متناقصة تمامًا من الأعداد الصحيحة غير السالبة، لـأنا2{\displaystyle i\geq 2}لذا، يجب أن يتوقف الأمر عند حد مارك+1=0{\displaystyle r_{k+1}=0}وهذا يثبت أن الخوارزمية تتوقف في النهاية.

من المعادلةرأنا+1=رأنا-1-رأناqأنا{\displaystyle r_{i+1}=r_{i-1}-r_{i}q_{i}}ويترتب على ذلك أنالقاسم المشترك الأكبر(رأنا-1،رأنا)=القاسم المشترك الأكبر(رأنا،رأنا+1){\displaystyle \gcd(r_{i-1},r_{i})=\gcd(r_{i},r_{i+1})}ونتيجة لذلك،القاسم المشترك الأكبر(أ،ب)=القاسم المشترك الأكبر(ر0،ر1)=القاسم المشترك الأكبر(رك،رك+1)=القاسم المشترك الأكبر(رك،0)=رك{\displaystyle \gcd(a,b)=\gcd(r_{0},r_{1})=\gcd(r_{k},r_{k+1})=\gcd(r_{k},0)=r_{k}}. حتى هذه النقطة، يكون البرهان هو نفسه برهان خوارزمية إقليدس الكلاسيكية.

العلاقات التكرارية، على سبيل المثالأنا0{\displaystyle i\geq 0}،

{رأنا=أsأنا+بتأنا(-1)أنا=sأناتأنا+1-تأناsأنا+1{\displaystyle {\begin{cases}r_{i}&=as_{i}+bt_{i}\\(-1)^{i}&=s_{i}t_{i+1}-t_{i}s_{i+1}\end{cases}}}

يمكن إثبات ذلك بالاستقراء. في الواقع، بالنسبة لـأنا=0{\displaystyle i=0}وتتقلص إلى

{ر0=أ=أs0+بت01=(-1)0=11-00=s0ت1-ت0s1{\displaystyle {\begin{cases}r_{0}&=a=as_{0}+bt_{0}\\1&=(-1)^{0}=1\cdot 1-0\cdot 0=s_{0}t_{1}-t_{0}s_{1}\end{cases}}}

بافتراض أنهم راضون عن بعضأنا{\displaystyle i}المعادلات الخاصة بـأنا+1{\displaystyle i+1}يتبع ذلك من الحساب

{رأنا+1=رأنا-1-رأناqأنا=(أsأنا-1+بتأنا-1)-(أsأنا+بتأنا)qأنا=(أsأنا-1-أsأناqأنا)+(بتأنا-1-بتأناqأنا)=أsأنا+1+بتأنا+1(-1)أنا+1=-(sأناتأنا+1-تأناsأنا+1)=sأنا+1(تأنا-qأنا+1تأنا+1)-تأنا+1(sأنا-qأنا+1sأنا+1)=sأنا+1تأنا+2-تأنا+1sأنا+2{\displaystyle {\begin{cases}r_{i+1}&=r_{i-1}-r_{i}q_{i}=(as_{i-1}+bt_{i-1})-(as_{i}+bt_{i})q_{i}=(as_{i-1}-as_{i}q_{i})+(bt_{i-1}-bt_{i}q_{i})=as_{i+1}+bt_{i+1}\\(-1)^{i+1}&=-(s_{i}t_{i+1}-t_{i}s_{i+1})=s_{i+1}(t_{i}-q_{i+1}t_{i+1})-t_{i+1}(s_{i}-q_{i+1}s_{i+1})=s_{i+1}t_{i+2}-t_{i+1}s_{i+2}\end{cases}}}

وعلى وجه الخصوص، المعادلةsأناتأنا+1-تأناsأنا+1=(-1)أنا{\displaystyle s_{i}t_{i+1}-t_{i}s_{i+1}=(-1)^{i}}يُظهر ذلك أنsك+1{\displaystyle s_{k+1}}وتك+1{\displaystyle t_{k+1}}هي أعداد أولية فيما بينها .

الضرب0=رك+1=أsك+1+بتك+1{\displaystyle 0=r_{k+1}=as_{k+1}+bt_{k+1}}بواسطةsك{\displaystyle s_{k}}وهذا يعني أن

0=أsك+1sك+بتك+1sك=أsك+1sك+ب((-1)ك+تكsك+1){\displaystyle 0=as_{k+1}s_{k}+bt_{k+1}s_{k}=as_{k+1}s_{k}+b((-1)^{k}+t_{k}s_{k+1})}

لذلك،ب=(-1)ك+1(تك-أsك)sك+1{\displaystyle b=(-1)^{k+1}(t_{k}-as_{k})s_{k+1}}ومن ثم يترتب على ذلك أنsك+1{\displaystyle s_{k+1}}يقسمب{\displaystyle b}ونتيجة لذلك، يوجد عدد صحيحد{\displaystyle d}بحيثب=دsك+1{\displaystyle b=ds_{k+1}}القسمة علىsك+1{\displaystyle s_{k+1}}العلاقةأsك+1+بتك+1=0{\displaystyle as_{k+1}+bt_{k+1}=0}أعطِأ=-دتك+1.{\displaystyle a=-dt_{k+1}.}لذلك،sك+1{\displaystyle s_{k+1}}و-تك+1{\displaystyle -t_{k+1}}هي أعداد صحيحة أولية فيما بينها، وهي ناتج قسمةأ{\displaystyle a}وب{\displaystyle b}بواسطة عامل مشترك، وهو بالتالي أكبر قاسم مشترك بينهما أو عكسه .

لإثبات الادعاء الأخير، افترض أنأ{\displaystyle a}وب{\displaystyle b}كلاهما إيجابي والقاسم المشترك الأكبر(أ،ب)مين(أ،ب){\displaystyle \gcd(a,b)\neq \min(a,b)}. ثم،أب{\displaystyle a\neq b}وإذاأ<ب{\displaystyle a<b}يتضح أن متتاليتي s و t للحالة ( a , b ) في ظل نظرية EEA، حتى الصفر والواحد الأوليين، هما متتاليتي t و s للحالة ( b , a ). وتُبين التعريفات أن الحالة ( a , b ) تُختزل إلى الحالة ( b , a ). لذا، افترض أنأ>ب{\displaystyle a>b}دون فقدان للعمومية .

يمكن ملاحظة ذلكs2{\displaystyle s_{2}}هو 1 وs3{\displaystyle s_{3}}(التي توجد بواسطةالقاسم المشترك الأكبر(أ،ب)مين(أ،ب){\displaystyle \gcd(a,b)\neq \min(a,b)}) عدد صحيح سالب. بعد ذلك،sأنا{\displaystyle s_{i}}تتبادل في الإشارة وتزداد بشكل صارم في المقدار، وهو ما يتبع استقرائيًا من التعريفات وحقيقة أنqأنا1{\displaystyle q_{i}\geq 1}ل1أناك{\displaystyle 1\leq i\leq k}القضيةأنا=1{\displaystyle i=1}لذلك لأنأ>ب{\displaystyle a>b}وينطبق الأمر نفسه علىتأنا{\displaystyle t_{i}}بعد الفصول القليلة الأولى، وللسبب نفسه. علاوة على ذلك، من السهل ملاحظة ذلك.qك2{\displaystyle q_{k}\geq 2}(عندما تكون قيمتا a و b موجبتين والقاسم المشترك الأكبر(أ،ب)مين(أ،ب){\displaystyle \gcd(a,b)\neq \min(a,b)}وبالتالي، لاحظ أن|sك+1|=|sك-1|+qك|sك|{\displaystyle |s_{k+1}|=|s_{k-1}|+q_{k}|s_{k}|}، نحصل |sك+1|=|بالقاسم المشترك الأكبر(أ،ب)|2|sك|و|تك+1|=|أالقاسم المشترك الأكبر(أ،ب)|2|تك|.{\displaystyle |s_{k+1}|=\left|{\frac {b}{\gcd(a,b)}}\right|\geq 2|s_{k}|\qquad {\text{and}}\qquad |t_{k+1}|=\left|{\frac {a}{\gcd(a,b)}}\right|\geq 2|t_{k}|.}

هذا بالإضافة إلى حقيقة أنsك،تك{\displaystyle s_{k},t_{k}}أكبر من أو تساوي في القيمة المطلقة أي قيمة سابقةsأنا{\displaystyle s_{i}}أوتأنا{\displaystyle t_{i}}أكملوا البرهان على التوالي.

خوارزمية إقليدية موسعة متعددة الحدود

بالنسبة لكثيرات الحدود أحادية المتغير ذات المعاملات في حقل ، تعمل جميع الطرق بشكل مشابه، من القسمة الإقليدية إلى متطابقة بيزو والخوارزمية الإقليدية الموسعة. يتمثل الاختلاف الأول في أن المتباينة في القسمة الإقليدية والخوارزمية0رأنا+1<|رأنا|{\displaystyle 0\leq r_{i+1}<|r_{i}|}يجب استبدالها بمتباينة على الدرجاتدرجةرأنا+1<درجةرأنا.{\displaystyle \deg r_{i+1}<\deg r_{i}.}بخلاف ذلك، يبقى كل ما سبق في هذه المقالة كما هو، ببساطة عن طريق استبدال الأعداد الصحيحة بكثيرات الحدود.

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

إذا كان a و b كثيرتي حدود غير صفريتين، فإن خوارزمية إقليدس الموسعة تنتج زوجًا فريدًا من كثيرات الحدود ( s , t ) بحيث

أs+بت=القاسم المشترك الأكبر(أ،ب){\displaystyle as+bt=\gcd(a,b)}

و

درجةs<درجةب-درجة(القاسم المشترك الأكبر(أ،ب))،درجةت<درجةأ-درجة(القاسم المشترك الأكبر(أ،ب)).{\displaystyle \deg s<\deg b-\deg(\gcd(a,b)),\quad \deg t<\deg a-\deg(\gcd(a,b)).}

ثمة فرق ثالث يتمثل في أنه في حالة كثيرات الحدود، يُعرَّف القاسم المشترك الأكبر فقط حتى الضرب بثابت غير صفري. وهناك عدة طرق لتعريف القاسم المشترك الأكبر تعريفًا لا لبس فيه.

في الرياضيات، من الشائع اشتراط أن يكون القاسم المشترك الأكبر متعدد حدود أحادي . ولتحقيق ذلك، يكفي قسمة كل عنصر من عناصر الناتج على المعامل الرئيسي لـرك.{\displaystyle r_{k}.}يسمح هذا بأنه إذا كان a و b عددين أوليين فيما بينهما، نحصل على 1 في الطرف الأيمن من متباينة بيزو. وإلا، فقد نحصل على أي ثابت غير صفري. في الجبر الحاسوبي ، عادةً ما تكون معاملات كثيرات الحدود أعدادًا صحيحة، وهذه الطريقة لتطبيع القاسم المشترك الأكبر تُدخل عددًا كبيرًا جدًا من الكسور مما يجعلها غير عملية.

الطريقة الثانية لتطبيع القاسم المشترك الأكبر في حالة كثيرات الحدود ذات المعاملات الصحيحة هي قسمة كل ناتج على محتوىرك،{\displaystyle r_{k},}للحصول على قاسم مشترك أكبر أولي . إذا كانت كثيرات الحدود المدخلة أولية فيما بينها، فإن هذا التوحيد يوفر أيضًا قاسمًا مشتركًا أكبر يساوي 1. لكن يعيب هذه الطريقة ضرورة حساب وتبسيط العديد من الكسور أثناء العملية الحسابية.

يتمثل النهج الثالث في توسيع خوارزمية متواليات الباقي الزائفة الناتجة بطريقة مشابهة لتوسيع خوارزمية إقليدس إلى خوارزمية إقليدس الموسعة. وهذا يسمح بأنه عند البدء بكثيرات حدود ذات معاملات صحيحة، فإن جميع كثيرات الحدود التي يتم حسابها لها معاملات صحيحة. علاوة على ذلك، فإن كل باقي محسوبرأنا{\displaystyle r_{i}}هي متعددة حدود فرعية . على وجه الخصوص، إذا كانت متعددات الحدود المدخلة أولية فيما بينها، فإن متطابقة بيزو تصبح

أs+بت=ريس(أ،ب)،{\displaystyle as+bt=\operatorname {Res} (a,b),}

أينريس(أ،ب){\displaystyle \operatorname {Res} (a,b)}يرمز إلى محصلة a و b . في هذا الشكل من متطابقة بيزو، لا يوجد مقام في الصيغة. إذا قسمنا كل شيء على المحصلة، نحصل على متطابقة بيزو الكلاسيكية، مع وجود مقام مشترك صريح للأعداد النسبية التي تظهر فيها.

الشفرة الزائفة

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

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

(old_r, r) := (r, old_r - quotient × r)

يعادل

prov := r; r := old_r - quotient × prov; old_r := prov;

وينطبق الأمر نفسه على عمليات التعيين المتوازية الأخرى. وهذا يؤدي إلى الكود التالي:

دالة extended_gcd(a, b) (old_r, r) := (a, b) (old_s, s) := (1, 0) (old_t, t) := (0, 1) بينما r ≠ 0، قم بما يلي: ÷ r القديمة ÷ r (old_r, r) := (r, old_r − quotient × r) (old_s, s) := (s, old_s − quotient × s) (old_t, t) := (t, old_t − quotient × t) إخراج "معاملات بيزو:", (old_s, old_t) إخراج "القاسم المشترك الأكبر:", old_r إخراج "ناتج القسمة على القاسم المشترك الأكبر:", (t, s)

قد يكون ناتج قسمة a و b على قاسمهما المشترك الأكبر، والذي يُخرَج في البرنامج، ذا إشارة خاطئة. من السهل تصحيح ذلك في نهاية العملية الحسابية، ولكن لم يتم ذلك هنا لتبسيط الكود. وبالمثل، إذا كان أحد a أو b يساوي صفرًا والآخر سالبًا، فسيكون القاسم المشترك الأكبر الناتج سالبًا، ويجب تغيير جميع إشارات الناتج.

وأخيرًا، لاحظ أنه في هوية بيزو،أx+بy=القاسم المشترك الأكبر(أ،ب){\displaystyle ax+by=\gcd(a,b)}يمكن للمرء أن يحلهاy{\displaystyle y}منحأ،ب،x،القاسم المشترك الأكبر(أ،ب){\displaystyle a,b,x,\gcd(a,b)}وبالتالي، فإن تحسين الخوارزمية المذكورة أعلاه يتمثل في حساب فقطsك{\displaystyle s_{k}}المتتالية (التي تُنتج معامل بيزو)x{\displaystyle x}ثم احسبy{\displaystyle y}في نهايةالمطاف:

دالة extended_gcd(a, b) s := 0; old_s := 1 r := b; old_r := a بينما r ≠ 0، قم بما يلي: ÷ r القديمة ÷ r (old_r, r) := (r, old_r − quotient × r) (old_s, s) := (s, old_s − quotient × s) إذا كان b ≠ 0، فإن bezout_t := (old_r − old_s × a) divوإلا bezout_t := 0 إخراج "معاملات بيزو:", (old_s, bezout_t) إخراج "القاسم المشترك الأكبر:", old_r

مع ذلك، في كثير من الحالات، لا يُعدّ هذا تحسينًا حقيقيًا: فبينما لا تتأثر الخوارزمية السابقة بتجاوز السعة عند استخدامها مع الأعداد الصحيحة للآلة (أي الأعداد الصحيحة ذات الحد الأعلى الثابت للأرقام)، فإن عملية ضرب old_s × a في حساب bezout_t قد تؤدي إلى تجاوز السعة، مما يحدّ من هذا التحسين للمدخلات التي يمكن تمثيلها بأقل من نصف الحجم الأقصى. عند استخدام أعداد صحيحة ذات حجم غير محدود، يزداد الوقت اللازم للضرب والقسمة تربيعيًا مع حجم الأعداد الصحيحة. هذا يعني أن "التحسين" يستبدل سلسلة من عمليات الضرب/القسمة لأعداد صحيحة صغيرة بعملية ضرب/قسمة واحدة، والتي تتطلب وقتًا حسابيًا أكبر من العمليات التي تستبدلها مجتمعة.

تبسيط الكسور

يكون الكسر a / b في صورته المبسطة القياسية إذا كان a و b عددين أوليين فيما بينهما وكان b موجبًا. ويمكن الحصول على هذه الصورة المبسطة القياسية باستبدال أسطر الإخراج الثلاثة للرمز الزائف السابق بـ

إذا كانت قيمة s تساوي صفرًا، فسيتم طباعة "القسمة على صفر" . إذا كانت قيمة s أقل من صفر، فسيتم تعيين قيمة s إلى -s وقيمة t إلى -t ( لتجنب المقامات السالبة ). إذا كانت قيمة s تساوي واحدًا، فسيتم طباعة -t ( لتجنب المقامات التي تساوي واحدًا). ​​سيتم طباعة -t / s .

يعتمد برهان هذه الخوارزمية على حقيقة أن s و t عددان صحيحان أوليان فيما بينهما بحيث يكون s + bt = 0 ، وبالتاليأب=-تs{\displaystyle {\frac {a}{b}}=-{\frac {t}{s}}}للحصول على الشكل المبسط المتعارف عليه، يكفي تحريك علامة السالب للحصول على مقام موجب.

إذا كان b يقسم a بالتساوي، فإن الخوارزمية تُنفذ دورة واحدة فقط، ويكون s = 1 في نهاية الخوارزمية. هذه هي الحالة الوحيدة التي يكون فيها الناتج عددًا صحيحًا.

حساب المعكوسات الضربية في الهياكل المعيارية

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

الأعداد الصحيحة المعيارية

إذا كان n عددًا صحيحًا موجبًا، فيمكن تعريف الحلقة Z / n Z بأنها مجموعة بواقي القسمة الإقليدية على n ، حيث تمثل عملية الجمع والضرب باقي قسمة عدد صحيح على n. للعنصر a في Z / n Z معكوس ضربي (أي أنه عنصر محايد) إذا كان أوليًا نسبيًا مع n . وبالتحديد ، إذا كان n عددًا أوليًا ، فإن a له معكوس ضربي إذا لم يكن صفرًا ( باقي القسمة على n ) . وبالتالي، فإن Z / n Z حقل إذا وفقط إذا كان n عددًا أوليًا.

تنص متطابقة بيزو على أن a و n أوليان فيما بينهما إذا وفقط إذا وُجد عددان صحيحان s و t بحيث

نs+أت=1{\displaystyle ns+at=1}

يؤدي اختزال هذه الهوية بتردد n إلى

أت1تعديلن.{\displaystyle at\equiv 1\mod n.}

وبالتالي فإن t ، أو بشكل أدق، باقي قسمة t على n ، هو المعكوس الضربي لـ a modulo n .

لتكييف خوارزمية إقليدس الموسعة مع هذه المسألة، تجدر الإشارة إلى أن معامل بيزو لـ n غير مطلوب، وبالتالي لا داعي لحسابه. كذلك، للحصول على نتيجة موجبة وأقل من n ، يمكن الاستفادة من حقيقة أن العدد الصحيح t الذي توفره الخوارزمية يحقق الشرط | t | < n . أي، إذا كان t < 0 ، يجب إضافة n إليه في النهاية (يمكن الاطلاع على مثال في مقالة " المعكوس الضربي المعياري "). ينتج عن ذلك الشفرة الزائفة ، حيث يكون المدخل n عددًا صحيحًا أكبر من 1.

دالة معكوسة (أ، ن) t := 0; newt := 1 r := n; newr := a بينما newr ≠ 0 حاصل القسمة := r div newr (t, newt) := (newt, t − ÷ient × newt) (ص، نيور) := (نيور، ص - حاصل الضرب × نيور) إذا كانت قيمة r أكبر من 1، فأرجع "المصفوفة a غير قابلة للعكس". إذا كانت قيمة t أقل من 0، t := t + n أعد t

امتدادات الحقول الجبرية البسيطة

تُعدّ خوارزمية إقليدس الموسّعة الأداة الرئيسية لحساب المعكوسات الضربية في امتدادات الحقول الجبرية البسيطة . ومن الحالات المهمة، والتي تُستخدم على نطاق واسع في علم التشفير ونظرية الترميز ، حالة الحقول المنتهية ذات الرتبة غير الأولية. في الواقع، إذا كان p عددًا أوليًا، و q = p d ، فإن الحقل من الرتبة q هو امتداد جبري بسيط للحقل الأولي ذي p عنصرًا، مُوَلَّد بواسطة جذر لكثير حدود غير قابل للاختزال من الدرجة d .

يمكن تعريف الامتداد الجبري البسيط L للحقل K ، المتولد بواسطة جذر متعدد الحدود غير القابل للاختزال p من الدرجة بأنه حلقة القسمةك[X]/ص،{\displaystyle K[X]/\langle p\rangle ,}وعناصرها تتطابق تقابلاً ثنائياً مع كثيرات الحدود من الدرجة الأقل من d . الجمع في L هو جمع كثيرات الحدود. الضرب في L هو باقي قسمة حاصل ضرب كثيرات الحدود على p في الفضاء الإقليدي. بالتالي، لإكمال العمليات الحسابية في L ، يبقى فقط تحديد كيفية حساب المعكوسات الضربية. ويتم ذلك باستخدام خوارزمية إقليدية موسعة.

تتشابه الخوارزمية إلى حد كبير مع تلك المذكورة أعلاه لحساب المعكوس الضربي المعياري. ثمة فرقان رئيسيان: أولًا، السطر قبل الأخير غير ضروري، لأن معامل بيزو المُعطى يكون دائمًا من درجة أقل من d . ثانيًا، القاسم المشترك الأكبر المُعطى، عندما تكون كثيرات الحدود المدخلة أولية فيما بينها، قد يكون أي عنصر غير صفري من K ؛ وبالتالي، يجب ضرب معامل بيزو هذا (وهو عادةً كثير حدود من درجة موجبة) في معكوس هذا العنصر من K. في الشفرة الزائفة التالية، p كثير حدود من درجة أكبر من واحد، و a كثير حدود.

دالة معكوسة (أ، ص) t := 0; newt := 1 r := p; newr := a بينما newr ≠ 0 حاصل القسمة := r div newr (ص، نيور) := (نيور، ص - حاصل الضرب × نيور) (t, newt) := (newt, t − ÷ient × newt) إذا كانت درجة (r) > 0 ، فأرجع " إما أن p غير قابل للاختزال أو أن a من مضاعفات p".إرجاع (1/r) × t

مثال

على سبيل المثال، إذا كانت كثيرة الحدود المستخدمة لتعريف الحقل المنتهي GF(2 ^n ) هي p = x ^n + x ^4 + x ^3 + x^4 + 1 ، وكان a = x ^n + x ^ 4 + x^4 + 1 هو العنصر المطلوب إيجاد معكوسه، فإن تطبيق الخوارزمية ينتج عنه الحساب الموضح في الجدول التالي. تجدر الإشارة إلى أنه في الحقول من الرتبة 2^ n ، يكون لدينا −z = z و z + z = 0 لكل عنصر z في الحقل. وبما أن 1 هو العنصر الوحيد غير الصفري في GF(2^n)، فلا حاجة للتعديل في السطر الأخير من الشفرة الزائفة.

خطوةناتج القسمةr، أحدثأخبارت، نيوت
p = x 8 + x 4 + x 3 + x + 110
أ = س 6 + س 4 + س + 101
1x 2 + 1x 2 = p a ( x 2 + 1)1x² + 1 = 0 1 · ( + 1 )
2x 4 + x 2x + 1 = a x 2 ( x 4 + x 2 )x 4 + x 2 = 0 1( x 4 + x 2 )x 6 + x 2 + 1 = 1 ( x 4 + x 2 ) ( x 2 + 1)
3س + 11 = ( x + 1)( x + 1)x 5 + x 4 + x 3 + x 2 +1 = 1 ( x +1)( x 4 + x 2 )x 7 + x 6 + x 3 + x = ( x 2 + 1) ( x + 1) ( x 6 + x 2 + 1)
4س + 10 = ( x + 1) 1 × ( x + 1)x 6 + x 4 + x + 1 = ( x 4 + x 2 ) ( x +1)( x 5 + x 4 + x 3 + x 2 +1)

وبالتالي، فإن المعكوس هو x 7 + x 6 + x 3 + x ، كما يمكن التأكد من ذلك عن طريق ضرب العنصرين معًا ، وأخذ الباقي على p من النتيجة.

حالة وجود أكثر من رقمين

يمكن معالجة حالة وجود أكثر من عددين بشكل تكراري. أولاً، سنوضح أنالقاسم المشترك الأكبر(أ،ب،ج)=القاسم المشترك الأكبر(القاسم المشترك الأكبر(أ،ب)،ج){\displaystyle \gcd(a,b,c)=\gcd(\gcd(a,b),c)}لإثبات ذلك، لنفترضد=القاسم المشترك الأكبر(أ،ب،ج){\displaystyle d=\gcd(a,b,c)}بحسب تعريف القاسم المشترك الأكبرد{\displaystyle d}هو قاسم لـأ{\displaystyle a}وب{\displaystyle b}. هكذاالقاسم المشترك الأكبر(أ،ب)=كد{\displaystyle \gcd(a,b)=kd}بالنسبة للبعضك{\displaystyle k}. بصورة مماثلةد{\displaystyle d}هو قاسم لـج{\displaystyle c}لذاج=جد{\displaystyle c=jd}بالنسبة للبعضج{\displaystyle j}. يتركu=القاسم المشترك الأكبر(ك،ج){\displaystyle u=\gcd(k,j)}من خلال بنائه لـu{\displaystyle u}،uد|أ،ب،ج{\displaystyle ud|a,b,c}لكن منذ ذلك الحيند{\displaystyle d}هو القاسم الأكبرu{\displaystyle u}هي وحدة . وبما أنuد=القاسم المشترك الأكبر(القاسم المشترك الأكبر(أ،ب)،ج){\displaystyle ud=\gcd(\gcd(a,b),c)}لقد ثبتت النتيجة.

لذلك إذانأ+مب=القاسم المشترك الأكبر(أ،ب){\displaystyle na+mb=\gcd(a,b)} ثم هناكx{\displaystyle x}وy{\displaystyle y}بحيثxالقاسم المشترك الأكبر(أ،ب)+yج=القاسم المشترك الأكبر(أ،ب،ج){\displaystyle x\gcd(a,b)+yc=\gcd(a,b,c)}إذن ستكون المعادلة النهائية هي

x(نأ+مب)+yج=(xن)أ+(xم)ب+yج=القاسم المشترك الأكبر(أ،ب،ج).{\displaystyle x(na+mb)+yc=(xn)a+(xm)b+yc=\gcd(a,b,c).\,}

ثم نستخدم الاستقراء لتطبيقه على الأعداد n

القاسم المشترك الأكبر(أ1،أ2،...،أن)=القاسم المشترك الأكبر(أ1،القاسم المشترك الأكبر(أ2،القاسم المشترك الأكبر(أ3،...،القاسم المشترك الأكبر(أن-1،أن)))،...)،{\displaystyle \gcd(a_{1},a_{2},\dots ,a_{n})=\gcd(a_{1},\,\gcd(a_{2},\,\gcd(a_{3},\dots ,\gcd(a_{n-1}\,,a_{n}))),\dots ),}

مع المعادلات التي تليها مباشرة.

انظر أيضاً

مراجع

  1. ماكونيل، روس؛ ميلهورن، كورت؛ ناهر، ستيفان؛ شفايتزر، باسكال. "خوارزميات التصديق" (ملف PDF) . تم الاطلاع عليه بتاريخ 29 سبتمبر 2024 .