طريقة ديكسون للتحليل إلى عوامل

في نظرية الأعداد ، تُعدّ طريقة ديكسون للتحليل إلى عوامل (وتُعرف أيضًا بطريقة ديكسون للمربعات العشوائية [ 1 ] أو خوارزمية ديكسون ) خوارزمية عامة لتحليل الأعداد الصحيحة إلى عواملها الأولية ؛ وهي النموذج الأمثل لطريقة التحليل القائمة على العوامل . وعلى عكس طرق التحليل القائمة على العوامل الأخرى، فإنّ حدّ زمن تشغيلها يأتي مصحوبًا ببرهان دقيق لا يعتمد على تخمينات حول خصائص سلاسة القيم التي تأخذها متعددة الحدود.

تم تصميم الخوارزمية بواسطة جون د. ديكسون ، وهو عالم رياضيات في جامعة كارلتون ، ونُشرت في عام 1981. [ 2 ]

الفكرة الأساسية

تعتمد طريقة ديكسون على إيجاد تطابق بين مربعات الأعداد بتردد العدد الصحيح N المراد تحليله. سنشرح الفكرة الأساسية هنا من خلال وصف طريقة فيرما للتحليل أولاً ، ثم كيف تختلف طريقة ديكسون عنها.

تجد طريقة فيرما للتحليل إلى عوامل مثل هذا التطابق عن طريق اختيار قيم x عشوائية أو شبه عشوائية ، على أمل أن يكون العدد الصحيح mod N مربعًا كاملاً غير تافه (في الأعداد الصحيحة):  

x2y2(تعديل شمال)،x±y(تعديل شمال).{\displaystyle x^{2}\equiv y^{2}\quad ({\hbox{mod }}N),\qquad x\not \equiv \pm y\quad ({\hbox{mod }}N).}

على سبيل المثال، إذا كان N = 84923 ، (بالبدء من 292، وهو أول عدد أكبر من جذر والعد تصاعديًا) فإن 505² mod 84923 هو 256، وهو مربع العدد 16. إذن (505 - 16)(505 + 16) = 0 mod 84923. بحساب القاسم المشترك الأكبر لـ 505 - 16 و N باستخدام خوارزمية إقليدس، نحصل على 163 ، وهو أحد عوامل N.

من الناحية العملية، سيستغرق اختيار قيم x عشوائية وقتًا طويلاً بشكل غير عملي للعثور على تطابق المربعات، نظرًا لوجود √N مربعًا أقل من N فقط .

تستبدل طريقة ديكسون الشرط "مربع كامل غير تافه" بالشرط الأضعف بكثير "له عوامل أولية صغيرة فقط"؛ على سبيل المثال، هناك 292 مربعًا أصغر من 84923؛ و662 عددًا أصغر من 84923 عواملها الأولية هي 2 أو 3 أو 5 أو 7 فقط؛ و4767 عددًا عواملها الأولية جميعها أقل من 30. (تسمى هذه الأعداد 7-smooth و30-smooth، على التوالي، لأنها B-smooth بالنسبة إلى حد ما B. )

بمجرد العثور على عدد كافٍ من هذه القيم السلسة من النوع B ، يمكن استخدام الجبر الخطي للبحث عن مربعات كاملة غير تافهة لطريقة فيرما للتحليل إلى عوامل. إذا كان هناك العديد من الأعدادأ1...أن{\displaystyle a_{1}\ldots a_{n}}والتي يمكن تحليل مربعاتها إلى عواملها الأولية كما يلي:أأنا2تعديلشمال=ج=1مبجهـأناج{\displaystyle a_{i}^{2}\mod N=\prod _{j=1}^{m}b_{j}^{e_{ij}}}لمجموعة ثابتةب1...بم{\displaystyle b_{1}\ldots b_{m}}من الأعداد الأولية الصغيرة، الجبر الخطي modulo 2 على المصفوفةهـأناج{\displaystyle e_{ij}}سيعطي مجموعة فرعية منأأنا{\displaystyle a_{i}}التي تتحد مربعاتها لتشكل ناتج ضرب أعداد أولية صغيرة مرفوعة إلى قوة زوجية - أي مجموعة جزئية منأأنا{\displaystyle a_{i}}والتي تضرب مربعاتها في مربع عدد (نأمل أن يكون مختلفًا) mod N.

طريقة

لنفترض أننا نحلل العدد المركب N إلى عوامله الأولية. نختار الحد B ، ونحدد أساس العوامل (الذي يُسمى P )، وهو مجموعة جميع الأعداد الأولية الأصغر من أو تساوي B. بعد ذلك، نبحث عن أعداد صحيحة موجبة z بحيث يكون mod N  دالة سلسة بالنسبة إلى B. لذلك ، يمكننا كتابة المعادلة التالية، لأسس مناسبة aᵢ : 

z2 تعديل شمال=صأناPصأناأأنا{\displaystyle z^{2}{\text{ mod }}N=\prod _{p_{i}\in P}p_{i}^{a_{i}}}

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

z12z22zك2صأناPصأناأأنا،1+أأنا،2++أأنا،ك (تعديلشمال)(أين أأنا،1+أأنا،2++أأنا،ك0(تعديل2)){\displaystyle {z_{1}^{2}z_{2}^{2}\cdots z_{k}^{2}\equiv \prod _{p_{i}\in P}p_{i}^{a_{i,1}+a_{i,2}+\cdots +a_{i,k}}\ {\pmod {N}}\quad ({\text{حيث ​​}}a_{i,1}+a_{i,2}+\cdots +a_{i,k}\equiv 0{\pmod {2}})}}

ينتج عن ذلك تطابق مربعات على الصورة (mod N والذي يمكن تحويله إلى تحليل للمتغير N ، حيث N = gcd ( a + b , N ) × ( N /gcd( a + b , N )). قد يكون هذا التحليل بسيطًا (أي N = N × 1 )، وهو ما لا يحدث إلا إذا كان a ≡ ± b (mod N وفي هذه الحالة يجب إجراء محاولة أخرى باستخدام مجموعة مختلفة من العلاقات؛ ولكن إذا تم التوصل إلى زوج غير بسيط من عوامل N ، فإن الخوارزمية تتوقف.

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

هذا القسم مأخوذ مباشرة من ديكسون (1981).

خوارزمية ديكسون

التهيئة. ليكن L قائمة من الأعداد الصحيحة في النطاق [1، n ]، وليكن P = { p1 , ..., ph } قائمة الأعداد الأولية hv . وليكن B و Z قائمتين فارغتين في البداية ( سيتم فهرسة Z بواسطة B ).

الخطوة 1. إذا كانت L فارغة، فاخرج (فشلت الخوارزمية). وإلا، فخذ الحد الأول z من L ، واحذفه من L ، ثم انتقل إلى الخطوة 2.

الخطوة 2. احسب w كأصغر باقي موجب لـ mod n . حلل w إلى:

w=wأناصأناأأنا{\displaystyle w=w'\prod _{i}p_{i}^{a_{i}}}

حيث لا يوجد عامل لـ w في P. إذا كانت w = 1، فانتقل إلى الخطوة 3؛ وإلا، فارجع إلى الخطوة 1.

الخطوة 3. ليكن a ← ( a 1 , ..., a h ). أضف a إلى B و z إلى Z. إذا كان B يحتوي على h عنصر على الأكثر ، فارجع إلى الخطوة 1؛ وإلا، فانتقل إلى الخطوة 4.

الخطوة 4. أوجد أول متجه c في B يكون تابعًا خطيًا (mod 2) على المتجهات السابقة في B. ثم احذف c من B وzج{\displaystyle z_{c}}من Z. احسب المعاملاتوب{\displaystyle f_{b}}بحيث:

جببوبب(تعديل2){\displaystyle \mathbf {c} \equiv \sum _{b\in B}f_{b}\mathbf {b} {\pmod {2}}}

يُعرِّف:

د=(د1،...،دن)12(ج+وبب){\displaystyle \mathbf {d} =(d_{1},\dots ,d_{n})\gets {\frac {1}{2}}\left(\mathbf {c} +\sum f_{b}\mathbf {b} \right)}

انتقل إلى الخطوة 5.

الخطوة 5. الحساب:

xzجبzبوب،yأناصأنادأنا{\displaystyle x\gets z_{c}\prod _{b}z_{b}^{f_{b}},\quad y\gets \prod _{i}p_{i}^{d_{i}}}

لهذا السبب:

x2أناصأنا2دأنا=y2تعديلن.{\displaystyle x^{2}\equiv \prod _{i}p_{i}^{2d_{i}}=y^{2}\mod n.}

لوxy{\displaystyle x\equiv y}أوx-y(تعديلن){\displaystyle x\equiv -y{\pmod {n}}}، ارجع إلى الخطوة 1. وإلا، فارجع:

القاسم المشترك الأكبر(ن،x+y){\displaystyle \gcd(n,x+y)}

مما يوفر عاملاً غير تافه لـ n ، وينتهي بنجاح.

مثال خطوة بخطوة

في هذا المثال، نحلل العدد ( ن = ٨٤٩٢٣) باستخدام خوارزمية ديكسون. هذا المثال مقتبس بتصرف من مجموعة LeetArxiv الفرعية. [ ٣ ] يُنسب الفضل إلى المؤلف الأصلي.

  • التهيئة :
    • حدد قائمة من الأرقام L ، تتراوح من 1 إلى 84923:
ل={1،...،84923}{\displaystyle L=\{1,\dots ,84923\}}
  • حدد قيمة v ، وهي عامل النعومة:
v=7{\displaystyle v=7}
  • عرّف قائمة P تحتوي على جميع الأعداد الأولية الأقل من أو تساوي v :
P=2،3،5،7{\displaystyle P={2,3,5,7}}
  • عرّف B و Z ، وهما قائمتان فارغتان. B هي قائمة قوى الأعداد، بينما Z هي قائمة الأعداد الصحيحة المقبولة:
ب=[]{\displaystyle B=[]}
Z=[]{\displaystyle Z=[]}
  • الخطوة 1 : التكرارz{\displaystyle z}قيم
    • ابدأ حلقة تكرارية تقوم بفهرسة القائمةل{\displaystyle L}العنصر الحالي فيل{\displaystyle L}يُصنف على أنهz{\displaystyle z}. تنتهي حلقة for عند نهاية القائمة، أو عندما تكسر الخطوة 5 الحلقة.
int n = 84923 ; for ( int i = 1 ; i <= n ; i ++ ) { int z = i ; // الخطوات المتبقية هنا. // الخطوة 4 قد تُفعّل الخطوة 5. // الخطوة 5 قد تُنهي الحلقة. }
  • الخطوة الثانية : الحوسبةz2تعديلن{\displaystyle z^{2}\mod n}والتحليل إلى عوامل أولية سلسة
    • للمتابعة، احسبz2تعديل84923{\displaystyle z^{2}\mod 84923}لكل قيمة من قيم z ، ثم قم بالتعبير عن النتيجة كتحليل إلى عوامل أولية.
12تعديل849231تعديل84923=20305070تعديل84923{\displaystyle 1^{2}\mod 84923\equiv 1\mod 84923=2^{0}\cdot 3^{0}\cdot 5^{0}\cdot 7^{0}\mod 84923}
{\displaystyle \vdots }
5132تعديل84923=8400تعديل84923=24315271تعديل84923{\displaystyle 513^{2}\mod 84923=8400\mod 84923=2^{4}\cdot 3^{1}\cdot 5^{2}\cdot 7^{1}\mod 84923}
{\displaystyle \vdots }
5372تعديل84923=33600تعديل84923=26315271تعديل84923{\displaystyle 537^{2}\mod 84923=33600\mod 84923=2^{6}\cdot 3^{1}\cdot 5^{2}\cdot 7^{1}\mod 84923}
5382تعديل84923=34675تعديل84923=52191731تعديل84923{\displaystyle 538^{2}\mod 84923=34675\mod 84923=5^{2}\cdot 19^{1}\cdot 73^{1}\mod 84923}
تستمر هذه الخطوة لجميع قيم z في النطاق.
  • الخطوة 3 : إلحاق نتائج التنعيم الرأسي
    • لوz2تعديل84923{\displaystyle z^{2}\mod 84923}إذا كان سلسًا بسبع درجات، فأضف قدراته إلى القائمةب{\displaystyle B}وألحقz{\displaystyle z}لإدراجZ{\displaystyle Z}.
    • لوب{\displaystyle B}لديه على الأكثرح=4{\displaystyle h=4}إذا كانت العناصر غير موجودة، فارجع إلى الخطوة 1. وإلا، فانتقل إلى الخطوة 4.
    • على سبيل المثال، بعد 537 تكرارًا، نحصل على:
Z={1،...،513،537}{\displaystyle Z=\{1,\ldots ,513,537\}}
ب={[0،0،0،0]،...،[4،1،2،1]،[6،1،2،1]}{\displaystyle B=\{[0,0,0,0],\ldots ,[4,1,2,1],[6,1,2,1]\}}
وننتقل إلى الخطوة الرابعة حيث سيكون لدينا أكثر منح=4{\displaystyle h=4}المتجهات فيب{\displaystyle B}.
  • الخطوة الرابعة : تنقسم هذه الخطوة إلى جزأين.
    • الجزء الأول : العثورب{\displaystyle B}modulo 2
ب=(000041216121)تعديل2ب=(000001010101){\displaystyle B={\begin{pmatrix}0&0&0&0\\4&1&2&1\\6&1&2&1\end{pmatrix}}\mod 2\equiv B={\begin{pmatrix}0&0&0&0\\0&1&0&1\\0&1&0&1\end{pmatrix}}}
  • الجزء الثاني : إيجاد توليفة صفوف منب{\displaystyle B}مجموعها أعداد زوجية
على سبيل المثال، جمع الصف2{\displaystyle 2}والصف3{\displaystyle 3}يعطينا متجهًا من الأعداد الزوجية.
R2={0،1،0،1}{\displaystyle R_{2}=\{0,1,0,1\}}وR3={0،1،0،1}{\displaystyle R_{3}=\{0,1,0,1\}}
ثم
R2+R3={0،1،0،1}+{0،1،0،1}{\displaystyle R_{2}+R_{3}=\{0,1,0,1\}+\{0,1,0,1\}}
R2+R3={0،2،0،2}{\displaystyle R_{2}+R_{3}=\{0,2,0,2\}}.

  • الخطوة 5 : تنقسم هذه الخطوة إلى أربعة أجزاء.
    • الجزء الأول : حساب x
      • اضرب المقابلz{\displaystyle z}قيم الصفوف التي تم العثور عليها في الخطوة 4 ، modن{\displaystyle n}للحصول علىx{\displaystyle x}.
الصفان 2 و3 يتطابقان مع 513 و537، لذلكx=(513537)=20712تعديل84923{\displaystyle x=(513\cdot 537)=20712\mod 84923}
  • الجزء الثاني : الحوسبةy{\displaystyle y}
  • أضف الصفوف الموجودة في الخطوة 4 .
  • اقسم على 2. (بما أن هذه تمثل أسسًا، فإن هذا يأخذ الجذر التربيعي فعليًا.)
  • تُطبق كأسس على الأعداد الأولية فيP{\displaystyle P}للحصول علىy{\displaystyle y}.
  • ارجع إلى الخطوة 1 إذاx=±y{\displaystyle x=\pm y}.
أوجد نصف مجموع الصفين 2 و 3:
4121+612110242÷25121{\displaystyle {\begin{array}{ccccc}&4&1&2&1\\+&6&1&2&1\\\hline &10&2&4&2\\\div 2\\\hline &5&1&2&1\end{array}}}
قم بتطبيقها كأسس لـP={2،3،5،7}{\displaystyle P=\{2,3,5,7\}}:
y=25315271=16800{\displaystyle y=2^{5}\cdot 3^{1}\cdot 5^{2}\cdot 7^{1}=16800}
  • منذx±y{\displaystyle x\neq \pm y}ننتقل الآن إلى الجزء الثالث .
  • الجزء الثالث : الحوسبةx+y{\displaystyle x+y}وx-y{\displaystyle x-y}أينx=20712{\displaystyle x=20712}وy=16800{\displaystyle y=16800}
x+y=20712+16800=37512{\displaystyle x+y=20712+16800=37512}
x-y=20712-16800=3912{\displaystyle x-y=20712-16800=3912}
  • الجزء الرابع : الحوسبةالقاسم المشترك الأكبر(x+y،ن){\displaystyle \gcd(x+y,n)}والقاسم المشترك الأكبر(x-y،ن){\displaystyle \gcd(x-y,n)}أينن=84923{\displaystyle n=84923}،x+y=292281{\displaystyle x+y=292281}وx-y=258681{\displaystyle x-y=258681}
القاسم المشترك الأكبر(37512،84923)=521القاسم المشترك الأكبر(3912،84923)=163{\displaystyle {\begin{array}{ll}\gcd(37512,84923)=521\\\gcd(3912,84923)=163\end{array}}}

يُظهر فحص سريع84923=521163{\displaystyle 84923=521\cdot 163}.

تشير الشفرة الزائفة إلى أنه يجب حساب فقطx+y{\displaystyle x+y}والعودةالقاسم المشترك الأكبر(x+y،ن){\displaystyle \gcd(x+y,n)}وذلك لأنه أسرع في حساب القاسم المشترك الأكبر، وبمجرد الحصول عليه، يصبح القسمة أسهل.ن{\displaystyle n}والنتيجة أسرع من الحسابالقاسم المشترك الأكبر(x-y،ن){\displaystyle \gcd(x-y,n)}.

التحسينات

المنخل التربيعي هو تحسين لطريقة ديكسون. يختار قيم x قريبة من الجذر التربيعي لـ N بحيث يكون modulo N صغيرًا، مما يزيد بشكل كبير من فرصة الحصول على عدد سلس.

تشمل الطرق الأخرى لتحسين طريقة ديكسون استخدام خوارزمية أفضل لحل معادلة المصفوفة، والاستفادة من خاصية التباعد في المصفوفة: لا يمكن أن يتجاوز عدد عناصر المصفوفة z حدًا معينًا.سجل2z{\displaystyle \log _{2}z}العوامل، لذا فإن كل صف من المصفوفة يتكون تقريبًا من أصفار. عمليًا، تُستخدم خوارزمية لانكزوس الكتلية غالبًا. كما يجب اختيار حجم قاعدة العوامل بعناية: فإذا كان صغيرًا جدًا، سيصعب إيجاد أعداد قابلة للتحليل الكامل إليها، وإذا كان كبيرًا جدًا، فسيتعين جمع المزيد من العلاقات.

تحليل أكثر تعقيدًا، باستخدام التقريب القائل بأن جميع العوامل الأولية للعدد أقل منشمال1/أ{\displaystyle N^{1/a}}باحتمالية حواليأ-أ{\displaystyle a^{-a}}(تقريب لدالة ديكمان-دي بروين )، يشير إلى أن اختيار قاعدة عوامل صغيرة جدًا أسوأ بكثير من اختيار قاعدة عوامل كبيرة جدًا، وأن حجم قاعدة العوامل المثالي هو قوة ما منخبرة(سجلشمالسجلسجلشمال){\displaystyle \exp \left({\sqrt {\log N\log \log N}}\right)}.

التعقيد الأمثل لطريقة ديكسون هو

يا(خبرة(22سجلنسجلسجلن)){\displaystyle O\left(\exp \left(2{\sqrt {2}}{\sqrt {\log n\log \log n}}\right)\right)}

باستخدام ترميز Big-O ، أو

لن[1/2،22]{\displaystyle L_{n}[1/2,2{\sqrt {2}}]}

في تدوين L.

مراجع

  1. كلاينجونج، ثورستن؛ وآخرون  (2010). "تحليل معامل RSA ذي 768 بت". التطورات في علم التشفير - CRYPTO 2010. سلسلة محاضرات في علوم الحاسوب. المجلد  6223. الصفحات 333-350 . doi : 10.1007/978-3-642-14623-7_18 . ISBN  978-3-642-14622-0. S2CID 11556080 . 
  2. ديكسون، جيه دي (1981). "التحليل السريع تقاربياً للأعداد الصحيحة" (ملف PDF) . الرياضيات الحاسوبية 36 (153): 255-260 . doi : 10.1090/S0025-5718-1981-0595059-1 . JSTOR 2007743 . 
  3. كيبتشو، موراج (2025). التنفيذ على الورق المكتوب بخط اليد : التحليل السريع تقاربياً للأعداد الصحيحة.