الگوریتم تعمیم‌یافته اقلیدس کیست؟ توضیح بده.
در علم حساب و برنامه نویسی کامپیوتر الگوریتم تعمیم یافته اقلیدس تعمیمی بر الگوریتم اقلیدس است که در کنار محاسبه بزرگترین مقسوم علیه مشترک دو عدد صحیح a,b ضرایب قضیه بزو را هم محاسبه می‌کند(x,y اعداد صحیح اند): formula_1 همچنین می‌توان بدون هزینهٔ اضافی خارج قسمت a,b را با بزرگترین مقسوم علیه مشترک محاسبه کرد.الگوریتم تعمیم یافته اقلیدس به الگوریتمی بسیار مشابه به الگوریتمی برای محاسبه بزرگترین مقسوم علیه مشترک چندجمله ای و ضرایب قضیه بزو از دو چندجمله‌ای با یک متغیر، ارجاع دارد. الگوریتم تعمیم یافته اقلیدس زمانی که a و b نسبت به هم اولند مفید تر است. چون x برابر وارون ضربی پیمانه‌ای a به پیمانه b و y برابر وارون ضربی پیمانه‌ای b به پیمانه a است. در الگوریتم اقلیدس برای چندجمله‌ای می‌توان وارون ضربی را در بسط‌های میدان جبری محاسبه کرد. که از آن نتیجه می‌شود هردو نوع الگوریتم اقلیدسی تعمیم یافته (معمولی و چندجمله‌ای) کاربردی گسترده در رمزنگاری دارند. به خصوص در محاسبه وارون ضربی پیمانه‌ای در روش RSA یک گام ضروریست. توضیح الگوریتم.در الگوریتم اقلیدسی معمولی فقط باقی‌مانده‌ها نگاه داشته می‌شوند و خارج قسمت استفاده نمی‌شود. اما در الگوریتم تعمیم یافته خارج قسمت‌های متوالی استفاده می‌شوند. به‌طور دقیقتر در الگوریتم تعمیم یافته که a، b را به عنوان ورودی می‌گیرد، دنبالهٔ formula_2 از خارج قسمت‌ها و دنبالهٔ formula_3 از باقی‌مانده‌ها را شامل می‌شود.مهمترین ویژگی تقسیم اقلیدسی نامساوی سمت راست است که formula_5 را متفاوت از formula_6 و formula_7 تعریف می‌کند. وقتی باقی‌مانده به صفر رسید محاسبه متوقف می‌شود، بزرگترین مقسوم علیه مشترک آخرین باقی‌مانده غیر صفر است. الگوریتم تعمیم یافته اقلیدسی روشی مشابه دارد با این تفاوت که دو دنبالهٔ زیر نیز به آن اضافه می‌شود:در این الگوریتم هم وقتی formula_9 میشود کار الگوریتم به اتمام می‌رسد. formula_15formula_16 و formula_17 به علاوه اگر a و b هردو مثبت باشند داریم: که این یعنی جفت ضرایب بزو که از این الگوریتم به دست می‌آیند یکی از کمترین جفت ضرایب بزو هستند. مثال.جدول زیر رویه الگوریتم تعمیم یافته اقلیدسی را برای46 و240 را نشان می‌دهد. بزرگترین مقسوم علیه مشترک برابر ۲ است. محاسبه در سطر ۶ متوقف می‌شود، چون باقی‌مانده صفر می‌شود. ضرایب بزو هم در دو ستون آخر از سطر آخرند. تحقیق رابطه -9*240+47*46=2 راحت است. و سرانجام -120 و 23 بدون توجه به علامت برابر تقسیم ۲۴۰ و ۴۶ بر بزرگترین مقسوم علیه مشترک یعنی ۲ هستنداثبات.چون formula_19 و دنبالهٔ باقی‌مانده‌ها یک دنبالهٔ نزولی غیر منفی است در نتیجه باید حتماً با formula_20 متوقف شود. این نشان می‌دهد که الگوریتم متوقف می‌شود و کار به اتمام می‌رسد.چون formula_21 در نتیجه بزرگترین مقسوم علیه مشترک formula_22 و formula_23برابر است. که از ان نتیجه می‌شود بزرگترین مقسوم علیه مشترک formula_24 برابر است با بزرگترین مقسوم علیه مشترک formula_25 وهمچنین نشان می‌دهد که formula_26 بزرگترین مقسوم علیه مشترک a و b است که آن را d می‌نامیم.formula_27 و formula_28 که برای i=0,1داریم: formula_29 برای هر i رابطهٔ بازگشتی خطی برقرار است بخصوص برای i=k که formula_30 نشان میدهیم که formula_31 ضرایب بزواند. ماتریس زیر را در نظر بگیرید رابطهٔ بازگشی را به شکل ماتریسی می‌نویسیم ماتریس formula_34 ماتریس واحد است و دترمینان آن برابر ۱ است. دترمینان ماتریس سمت راست برابر -1 است که نتیجه می‌شود دترمینان formula_35 برابر formula_36 است و برای حالت خاص i=k+1 داریم formula_37 که نشان می‌دهد formula_38 و formula_39 نسبت بهم اولند. رابطهٔ formula_40 که در بالا اثبات شد و لم اقلیدس نشان می‌دهد که formula_38 مقسوم علیه b و formula_39 مقسوم علیه a‌اند. چون آن‌ها نسبت بهم اولاً بدون در نظر گرفتن علامتشان برابر خارج قسمت تقسیم a و b بر d می‌شوند.الگوریتم اقلیدسی برای چندجمله‌ای.برای یک چندجمله‌ای با ضریب در یک میدان همه چیز مشابه حالت قبل است (تقسیم اقلیدسی، قضیه بزو، و تعمیم الگوریتم اقلیدس). اولین تفاوت در تقسیم اقلیدسی و الگوریتم، جایگذاری formula_43 بجای formula_44 است. بقیه مشابه حالت قبل باقی میماند. تفاوت دوم در محدودیتی است که بر اندازهٔ ضرایب بزو که از تعمیم الگوریتم اقلیدس به دست میاید وجود دارد، که در مورد چندجمله‌ای دقیق تر است. اگر a و b دو چند جملۀ غیر صفر باشند الگوریتم تعمیم یافته (s,t) را به گونه‌ای به دست میاورد که در شرایط زیر صدق کند: و تفاوت سوم در این است که بزرگترین مقسوم علیه مشترک فقط به صورت ضرب یک ثابت غیر صفر تعریف می‌شود. راه‌های مختلفی برای تعریف بزرگترین مقسوم علیه مشترک به صورت غیر مبهم وجود دارد. در ریاضیات معمولاً به چندجمله‌ای که ب.م.م همهٔ ضریب‌هایش یک هست نیاز است. برای رسیدن به این مقصود کافیست هر خروجی را بر ضریب بزرگترین توان formula_47 تقسیم کنیم. اگر a و b نسبت به هم اول باشند در سمت راست نامساوی بزو یکی ۱ می‌شود، در غیر این صورت یکی ممکن است هر مقدار ثابت غیر صفر شود. در جبر کامپیوتر، چندجمله‌ای معمولاً ضرایب صحیح را می‌پذیرد، و این راه ساده‌سازی بزرگترین مقسوم علیه مشترک برای سهولت تعداد بسیار زیادی بخش ایجاد می‌کند. راه دوم ساده‌سازی بزرگترین مقسوم علیه مشترک در حالت چندجمله‌ای با ضرایب صحیح تقسیم بر بزرگترین عمل مشترک بین ضرایب formula_48 برای رسیدن به چندجمله‌ای اصلی (یعنی چندجمله‌ای که بزرگترین عامل مشترک ضرایبش ۱ است). اگر چند جمله‌ی‌های ورودی نسبت به هم اول باشند این نرمال‌سازی بزرگترین مقسوم علیه مشترک را یک می‌دهد. اشکال این روش محاسبه، وجود زیر مسئله‌های زیاد است که باید محاسبه و ساده شوند. روش سوم شامل تعمیم الگوریتم subresultant pseudo-remainder sequences که مشابه تعمیم الگوریتم اقلیدسی به الگوریتم تعمیم یافته‌است. این روش این امکان را فراهم می‌کند که وقتی با چندجمله‌ای با ضرایب صحیح شروع می‌کنیم هر چندجمله‌ای که بدست میاید ضرایبش، صحیح باشد. علاوه بر این هر باقی‌مانده محاسبه شده یک چندجمله‌ای subresultant است. در حالت خاص اگر چند جمله‌ی‌های ورودی نسبت به هم اول باشند آنگاه طبق قضیه بزو می‌شود: که formula_50 برابر resultant، a,bاست. در این فرم قضیه بزو مقسوم علیه دیده نمی‌شود. اگر همه چیز را بر resultant تقسیم کنیم قضیه کلاسیک بزو بدست می‌آید ، با یک مقسوم علیه مشترک ساده برای اعداد گویایی که در آن ظاهر می‌شوند. شبه‌کد.برای پیاده‌سازی الگوریتمی که در بالا ذکر شد،اولاً باید توجه داشت که در هر مرحله تنها نیاز به نگهداری دو مقدار نهایی متغیرهای شاخص‌گذاری شده، هست. بنابراین برای صرفه جویی در حافظه هر متغیر شاخص‌گذاری شده باید با تنها دو متغیر جایگزین شود. برای راحتی کار در الگوریتم زیر(و بقیهٔ الگوریتم‌ها در این مقاله) از مقداردهی موازی استفاده می‌شود.در زبانهای برنامه نویسی که از مقداردهی موازی پشتیبانی نمی‌کنند، باید اینکار را با کمک یک متغیر کمکی شبیه سازی کرد.برای مثال (old_r, r) := (r, old_r - quotient *r) برابر هست باprov := r; r := old_r - quotient * prov; old_r := prov;و مشابهاً برای بقیهٔ استفاده‌ها از مقداردهی موازی هم باید چنین کاری کرد.که اینکار به کد زیر می انجامد:function extended_gcd(a, b) s := 0; old_s := 1 t := 1; old_t := 0 r := b; old_r := a while r ≠ 0 quotient := old_r div 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) output "Bézout coefficients:", (old_s, old_t) output "greatest common divisor:", old_r output "quotients by the gcd:", (t, s)باید به این نکته توجه داشت که خارج قسمت‌های a و b در تقسیم بر ب.م.م، که خروجی این الگوریتم هست، ممکن هست علامت نادرستی داشته باشند. رفع این مشکل در انتهای محاسبات بسیار ساده هست، اما در اینجا به دلیل سادگی کد بیان نشده‌است. مشاب‌ها اگر یکی از دو مقدار a یا b منفی و دیگری صفر باشد، ب.م.م، که خروجی این الگوریتم هست، منفی می‌شود و باید علامت خروجی تغییر کند.محاسبه ی وارون ضربی در ساختارهای پیمانه ای.الگوریتم تعمیم یافتهٔ اقلیدس وسیلهٔ اصلی برای محاسبهٔ وارون ضربی در ساختارهای پیمانه‌ای هست و اغلب در حساب پیمانه‌ای اعداد صحیح و تعمیم‌های میادین جبری به کار می‌آید.یک نمونهٔ مهم از مورد آخر میدان‌های متناهی با order غیر اول هست. حساب پیمانه‌ای اعداد صحیح.اگر n یک عدد صحیح مثبت باشد، حلقهٔ Z/nZ ممکن هست توسط مجموعه {0, 1, ..., n} از باقی‌مانده‌های تقسیم اقلیدسی بر n قابل شناسایی باشد،عمل جمع و ضرب همان محاسبه ی، باقی‌ماندهٔ نتیجهٔ جمع و ضرب اعداد صحیح، بر n هست.یک عضو از Z/nZ یک وارون ضربی دارد(اگر چنین باشد، به آن unit میگویند) اگر نسبت به n اول باشد.در حالت خاص اگر n اول باشد a وارون ضربی دارد،اگر مخالف صفر باشد(باقی‌مانده اش بر n).بنابراین Z/nZ یک میدان هست اگر و تنها اگر n اول باشد. قضیه بزو بیان می‌کند که a و n نسبت به هم اولند اگر و تنها اگر اعداد صحیحی مانند s و t وجود داشته باشند که که اگر از دوطرف بر n باقی‌مانده بگیریم: بنابراین t یا، به‌طور دقیقتر، باقی‌ماندهٔ تقسیم t بر n، همان وارون ضربی a در پیمانهٔ n هست. برای تطبیق دادن الگوریتم تعمیم یافتهٔ اقلیدس به نحوی که این مسئله را حل کند، باید در نظر داشته باشیم که نیازی به محاسبهٔ ضرایب بزو ی n نیست.همچنین برای اینکه نتیجه مثبت و کمتر از n باشد، باید از این موضوع که t همواره در رابطهٔ |t| &lt; n صدق می‌کند،استفاده کرد. اگر t &lt;0 در انتهای کار می‌توان با جمع کردن آن با n آن را مثبت کرد.این تغییرات را در شبه کد زیر آورده ایم که در آن n یک عدد صحیح بزرگتر از یک هست. function inverse(a, n) t := 0; newt := 1; r := n; newr := a; while newr ≠ 0 quotient := r div newr (t, newt) := (newt, t - quotient * newt) (r, newr) := (newr, r - quotient * newr) if r&gt; 1 then return "a is not invertible" if t &lt;0 then t := t + n return t بسط‌های میدان جبری ساده.الگوریتم پیشرفتهٔ اقلیدس همچنین ابزار اصلی برای محاسبهٔ وارون ضربی در تعمیم‌های میدان جبری ساده هست.یک نمونهٔ مهم که به‌طور گسترده‌ای در رمزنگاری و نظریه کدگذاری استفاده می‌شود میدان‌های جبری با اندازه (order) غیر اول هست.در واقع اگر p یک عدد اول باشد و q = pd، میدان با اندازه(order) q یک تعمیم سادهٔ جبری از میدان اول p عضو ، هست، که توسط یک ریشهٔ معادله چندجمله‌ای کاهش ناپذیر از درجه d ساخته شده‌است. یک بسط سادهٔ جبری L از یک میدان K که توسط ریشه یک چندجمله‌ای کاهش ناپذیر از درجه d ساخته شده‌است، ممکن است توسط حلقهٔ خارج قسمت‌های formula_53 به‌طور یکتا شناسایی شود، و اعضایش در یک رابطهٔ یک به یک و و پوشا با چندجمله‌ای‌هایی با درجات کمتر از d هستند.عمل جمع در L همان جمع چندجمله‌ای ها است.عمل ضرب در L باقی‌ماندهٔ تقسیم اقلیدسی بر، p حاصلضرب چندجمله ای‌ها است.بنابراین برای تکمیل اعمال حسابی در L تنها کافیست نحوهٔ محاسبهٔ وارون ضربی را تعریف کنیم.که آن با استفاده از الگوریتم تعمیم یافتهٔ اقلیدسی انجام می‌شود. این الگوریتم بسیار شبیه الگوریتمی است که در بالا برای محاسبهٔ وارون ضربی پیمانه‌ای بیان شده‌است.در اینجا دو تفاوت مهم وجود دارد:اولاً اینکه به خط آخر نیازی نیست، چون ضریب بزو همیشه یک درجه کمتر از d دارد. دوم اینکه ب.م.م ای که بدست آمده‌است، وقتی که چندجمله‌ای‌های ورودی نسبت به هم اولند، ممکن هست هر عضو غیرصفری از K باشند، بنابراین ضریب بزو (یک چندجمله‌ای با درجهٔ مثبت) باید در وارون این عضو از K ضرب شود. در شبه کد زیر p یک چندجمله‌ای از درجه بزرگتر از یک هست و a یک چندجمله‌ای هست.علاوه بر این div یک تابع کمکی است که خارج قسمت تقسیم اقلیدسی را حساب می‌کند. function inverse(a, p) t := 0; newt := 1; r := p; newr := a; while newr ≠ 0 quotient := r div newr (r, newr) := (newr, r - quotient * newr) (t, newt) := (newt, t - quotient * newt) if degree(r)&gt; 0 then return "Either p is not irreducible or a is a multiple of p" return (1/r) * tمثال.برای مثال اگر چندجمله‌ای که برای تعریف میدان متناهی GF(28) بکار میرود p = x8 + x4 + x3 + x + 1 باشد و a = x6 + x4 + x + 1 عضوی باشد که وارونش مطلوب ماست، نتایج اجرای هر مرحله از الگوریتم در جدول زیر مشاهده می‌شود.با توجه به اینکه میدان با order 2n برای هر عضو z عضو -z = z و z + z = 0را هم دارد.توجه کنید که 1 تنها عضو غیرصفری از GF(2)هست که برایش تغییرات در خط آخر شبه کد مورد نیاز نبوده‌است. بنابراین وارون مطلوب x7 + x6 + x3 + xهست، و می‌شود با انجام عمل ضرب دو عضو در هم و گرفتن باقی‌مانده بر pبه صحت آن پی برد.الگوریتم تعمیم یافته اقلیدس برای بیش از دو عدد.ما می‌توانیم در موردی که تعداد اعداد بیش از دو تا هست، به‌طور پشت سر هم(دو تا باهم و سپس حاصل آن‌ها با عدد بعدی) از این الگوریتم استفاده کنیم.اول باید اثبات کنیم که formula_54.برای این اثبات اگر formula_55باشد،طبق تعریف می‌توان گفت که d مقسوم علیه مشترک a و b هست.بنابراین برای یک مقدار خاص k داریمformula_56 .مشاب‌ها d مقسوم علیه c هم هست، پس برای یک مقدار خاصی ازj formula_57.اگر formula_58 با این تعریف ما از u، formula_59 اما چون d بزرگترین مقسوم علیه هستu وارون ضربی دارد.(unit هست.) بنابراین اگر formula_60 پس مقادیر x و y وجود دارند به‌طوری‌که formula_61. بنابراین معادلهٔ نهایی به شکل : formula_62 خواهد بود. پس اگر ما آن را با استقرا روی n عدد انجام دهیم به معادلهٔ زیر میرسیم که همان چیز مورد انتظار ما هست.