في الرياضيات ونظرية الاعداد , نظرية التطابق الخطية تجيب عن السؤال : هل يمكن حل تطابق خطي ؟ , ومعادلة التطابق الخطي هي من الصورة التالية :
فليكن a,b,n ثلاث اعداد طبيعية مُعروفة المعادلة هي : والمسألة هي ايجاد كل x يحقق المعادلة .
تعريفات
نرمز ب- مولد الزمرة الجزئية ل- التي تتولد بواسطة a . بما انه يتحقق للمعادلة اعلاه يوجد حل فقط إذا . من مبرهنة لاجرانج ينص على يُقسم n . سوف نستخدم المبرهنة التالية لتحديد عدد الحلول للمعادلة وايضا لتحديد إذا ما يمكن حلها اصلا .
مبرهنة
فليكن حينها ولذا
برهان
نبدأ البرهان بأن نبين أنَّ وبما أنَّ لذا فانه حسب نظرية اقليدس الموسعة يوجد x,y عددان صحيحان حيث يتحقق لذا لذا حسب التعريف .
بما أنَّ أيضا كل مضاعفاتها كذلك تابعة ل- وبما ان مضاعفات مضاعفات a هي أيضا مضاعفات a لذا فان يحوي المجموعة وبالتي يتحقق .
يتبقى ان نبرهن أنَّ . إذا حينها يوجد x بحيث يتحقق لذا فانه يوجد عدد صحيح y حيث يتحقق . بما أنَّ وكذلك لذا فانه يتحقق لذا فانه يتحقق .
لذا فانه يتحقق أنَّ . ننتبه إلى انه بين 0 و- n-1 يوجد مضاغفات الرقم d لذا فانه يتحقق :
تحديد إذا ما يوجد حلول وعددها
- المعادلة يوجد لها حل فقط إذا .
- المعادلة يوجد لها d حلول عندما أو لا يوجد حلول البتة
المقولتان 1+2 بالواقع هما استنتاج من المبرهنة اعلاه .
إنتاج الحلول
على الاقل حل واحد
فليكن ولنفرض أنَّ حيث أنَّ x,y عددان صحيحان، إذا d|b حينها أحد الحلول للمعادلة هو .
برهان :
بما أنَّ لذا :
من هذا ينبع أنَّ هو حل كذلك .
إنتاج كل الحلول
لنفرض أن ولنفرض أنَّ هو حل للمسألة، حينها للمعادلة هذه يوجد d حلول التي هي : في حين أنَّ .
خوارزمية حل المعادلات
الان بما انه يمكن إنتاج كل الحلول وقد برهنا على ذلك لذا فاننا الان صار بيدينا كل المقومات لخوارزمية تنتج هذه الحلول وهي كالتالي : (الخوارزمية بلغة MATLAB ) .
% ax=b mod n نريد ان نحل المعادلة
function x=MLES(a,b,n)
% نحسب اولا القاسم المشترك الاكبر حسب الخوارزمية اقليدس الموسعة
[d,x1,y1]=egcd(a,n);
% هذه المصفوفة فيها نحفظ كل الحلول
x=zeros(1,d);
%حينها يوجد حلول b|d اذا تحقق
if mod(b,d)==0
% الحل الاول حسب المبرهنة
x0=mod(x1*b/d,n);
% انتاج باقي الحلول
for k=1:d
x(1,k)=mod(x0+k*(n/d),n);
end
else
% لا يوجد حلول
x=[];
end
end
تعقيد وقت الخوارزمية هو وذلك لاننا استخدمنا خوارزمية اقليدس مرة ثم الحلقة(loop) استخدمناها d مرات.
حالات خاصة
عندما حينها يوجد حل واحد للمعادلة، كما انه يوجد حالة اخرى هي عندما b=1 حينها الحل المطلوب هو مقلوب العدد a ويمكن حسابه بواسطة خوارزمية اقليدس الموسعة فقط وهذا يجعل إنتاجه اسرع .
امثلة
معطاه المعادلة علينا ايجاد كل الحلول :
- نريد ان نحسب والذي هو 5 , كما نحسب x و- y حيث أنَّ 35x+50y=5 , لذا فان قيمتهما هي x=3,y=-2 .
- نفحص هل b|d ? حسب المعادلة b=10 و- d=5 . لذا فان الجواب نعم ولذا يوجد 5 حلول (حسب المبرهنات )
- أول حل هو :
- اما باقي الحلول فهي :
مقالات ذات صلة
مصادر
- introduction to algorithms , CE Leiserson, RL Rivest, C Stein, TH Cormen - 2001
موسوعات ذات صلة :