لقد انجذبت إلى مهام مثل مشكلة Collatz. من السهل صياغة وتدريب رأسك بشكل مثالي ، وخاصة التفكير الخوارزمي ، وهو أمر مفيد جدًا للمبرمج.
تتم صياغة المهمة ببساطة شديدة:
خذ أي رقم طبيعي ن. إذا كان زوجيًا ، فقم بتقسيمه على 2 ، وإذا كان غريبًا ، فاضربه في 3 وأضف 1 (نحصل على 3n + 1). نقوم بتنفيذ نفس الإجراءات على الرقم الناتج ، وهكذا.
فرضية كولاتز هي أنه بغض النظر عن الرقم الأولي الذي نأخذه ، فسوف نحصل عليه عاجلاً أم آجلاً.
خوارزميات ، يبدو هذا:
while (number > 1) { if (number % 2 === 0) number = number / 2; else number = 3 * number +1; }
كمثال ، خذ ن = 5. إنه أمر غريب ، مما يعني أننا نؤدي الإجراء على الفردي ، أي 3n + 1 => 16. 16 حتى ، وهذا يعني أننا نؤدي الإجراء على الزوج ، أي n / 2 => 8 => 4 => 2 => 1.
التسلسل المتكون من n = 5: 16 ، 8 ، 4 ، 2 ، 1.
أطلب منك أن تسامحني على حسابي ، أعلمني إذا أخطأت في مكان ما.دعونا نفرز العدد الإجمالي للمعلومات عن الوحدة والعدد الحقيقي للمعلومات عن الوحدة. تشير إلى هذه الخطوات.
خذ بعين الاعتبار تسلسل n = 7:
22 ، 11 ، 34 ، 17 ، 52 ، 26 ، 13 ، 40 ، 20 ، 10 ، 5 ، 16 ، 8 ، 4 ، 2 ، 1.
هناك 16 خطوة في المجموع ،
والخطوات الحقيقية التي تم طرحها بالفعل في مجموعة أرقام أخرى هي 5 منها:
7 ، 11 ، 17 ، 13 ، 5.
الخطوة الحقيقية Sa (n) هي عدد العمليات
3n + 1 على العدد الضروري للوصول إلى الوحدة.
يتم توضيح الفكرة بوضوح من خلال مثال الجدول:
سن (0) | سن (1) | سن (2) | سن (3) | سن (4) | سن (5) | سن (6) | سن (7) | سن (8) | سن (9) | سن (10) | سن (11) | سن (12) |
---|
2 | 5 | 3 | 17 | 11 | 7 | 9 | 25 | 33 | 43 | 57 | 39 | 105 |
4 | 10 | 6 | 34 | 22 | 14 | 18 | 49 | 65 | 86 | 59 | 78 | 203 |
8 | 20 | 12 | 35 | 23 | 15 | 19 | 50 | 66 | 87 | 114 | 79 | 209 |
16 | 21 | 13 | 68 | 44 | 28 | 36 | 51 | 67 | 89 | 115 | 153 | 210 |
32 | 40 | 24 | 69 | 45 | التاسع والعشرون | 37 | 98 | 130 | 182 | 118 | 156 | 211 |
64 | 42 | 26 | 70 | 46 | 30 | 38 | 99 | 131 | 173 | 119 | 157 | 406 |
128 | 80 | 48 | 75 | 88 | 56 | 72 | 100 | 132 | 174 | 228 | 158 | 407 |
256 | 84 | 52 | 136 | 90 | 58 | 74 | 101 | 133 | 177 | 229 | 305 | 409 |
512 | 85 | 53 | 138 | 92 | 60 | 77 | 102 | 134 | 178 | 230 | 306 | 418 |
في مثل هذا الجدول ، يكون الترتيب ونمطه مرئيًا بالفعل.
كما ترون ، فإن قوة الاثنين لن تصبح غريبة أبدًا ، لذلك يتعلق الأمر بتقسيم بسيط.
يتكون تسلسل Sa (0) من صيغة واحدة فقط.
لا يلزم اتخاذ خطوات حقيقية ؛ فبالتقسيم البسيط ، سيتم اختزال كل شيء إلى الوحدة.
بمعرفة هذا ، يمكنك أن تسقط من الجدول جميع الأرقام التي هي مضاعفات اثنين.
سن (0) | سن (1) | سن (2) | سن (3) | سن (4) | سن (5) | سن (6) | سن (7) | سن (8) | سن (9) | سن (10) | سن (11) | سن (12) |
---|
| 5 | 3 | 17 | 11 | 7 | 9 | 25 | 33 | 43 | 57 | 39 | 105 |
| 21 | 13 | 35 | 23 | 15 | 19 | 49 | 65 | 87 | 59 | 79 | 203 |
| 85 | 53 | 69 | 45 | التاسع والعشرون | 37 | 51 | 67 | 89 | 115 | 153 | 209 |
| 341 | 113 | 75 | 93 | 61 | 77 | 99 | 131 | 173 | 119 | 157 | 211 |
| 1365 | 213 | 141 | 181 | 117 | 81 | 101 | 133 | 177 | 229 | 305 | 407 |
الآن أصبح التقاط النمط أكثر صعوبة ، ولكن هناك نمط. الشيء الأكثر إثارة للاهتمام الآن هو تشكيل التسلسل. ليس هذا فقط ، الرقم التالي بعد 5 هو 21 ، وبعد 85.
في الواقع ،
Sa (1) هو التسلسل
A002450 (0 ، 1 ، 5 ، 21 ، 85 ، 341 ، 1365 ، 5461 ، 21845 ، 87381 ...). يتكون من الصيغة:
يمكن وصف نفس التسلسل بواسطة صيغة تعاودية:
وهكذا ...
تم بناء سلسلة من الخطوة الأولى ، على الرغم من أنها يمكن أن تستمر إلى أجل غير مسمى. دعنا ننتقل إلى الخطوة الثانية. يمكن التعبير عن صيغة الانتقال إلى الخطوة 2 من صيغة فردية.
مع العلم أننا سوف نشارك النتيجة
عدة مرات يمكن كتابتها
أين
- عدد الأقسام.
تأخذ الصيغة النهائية الشكل التالي:
نقدم أيضا تعديل
مثل
بحيث يحدث خيار قسمة الرقم ليس مضاعف 3 في 3.
دعونا نتحقق من الصيغة ، نظرًا لأن ألفا غير معروفة ، تحقق من 5 ألفا متتالية:
وهكذا ، يبدأ تسلسل الخطوة الثانية في التكوين. ومع ذلك ، يمكن ملاحظة أن 113 ليس في تسلسل ، من المهم أن نتذكر أن الصيغة قد تم حسابها
من 5 .
ن = 113 في الواقع:
لتلخيص:
الكثير من ولدت عن طريق الوظيفة من كل عنصر في المجموعة .
بعد معرفة ذلك ، لا يزال بإمكانك تقصير الجدول عن طريق إزالة جميع مضاعفات ألفا.
سن (0) | سن (1) | سن (2) | سن (3) | سن (4) | سن (5) | سن (6) | سنيور (7) ... |
---|
| 5 | 3 | 17 | 11 | 7 | 9 | ... |
| | 113 | 75 | 201 | 267 | 715 | ... |
| | 227 | 151 | 401 | 1073 | 1425 | ... |
لتوضيح الأمر ، إليك مثال لكيفية عناصر من مجموعة
توليد عناصر المجموعة من
لألفا من 0 إلى 4.
ع (ك) = 3 | ع (ك) = 113 | ع (ك) = 227 |
---|
3 من α = 0 يولد: لا شيء
13 من α = 1 ينتج: 17 69 277 1109 4437
53 من α = 2 يولد: 35 141 565 2261 9045
213 من α = 3 ينتج: لا شيء
853 من α = 4 ينتج: 1137 4549 18197 72789 291157
| 113 من α = 0 يولد: 75 301 1205 4821 19285
453 من α = 1 ينتج: لا شيء
1813 من α = 2 يولد: 2417 9669 38677 154709 618837
7253 من α = 3 ينتج: 4835 19341 77365 309461 1237845
29013 من α = 4 ينتج: لا شيء
| 227 من α = 0 يولد: 151 605 2421 9685 38741
909 من α = 1 ينتج: لا شيء
3637 من α = 2 ينتج: 4849 19397 77589 310357 1241429
14549 من α = 3 ينتج: 9699 38797 155189 620757 2483029
58197 من α = 4 يولد: لا شيء
|
من خلال الجمع بين هذه المجموعات ، نحصل على المجموعة من Sa (3):
17 ، 35 ، 69 ، 75 ، 141 ، 151 ، 277 ، 301 ، 565 ، 605 ، 1109 ، 1137 ، 1205 ، 2261 ، 2275 ، 2417 ، 2421 ، 4437 ، 4549 ، 4821 ، 4835 ، 4849 ، 9045 ، 9101 ، 9669 ، 9685 ، 9699 ، 17749 ، 18197 ، 19285 ، 19341 ، 19397 ، 19417 ...
علاوة على ذلك ، إزالة الدرجة
نحصل على:
17 ، 75 ، 151 ...
أي أن الأمر يتعلق بما يلي:
لماذا في مكان ما وفي مكان ما ؟؟؟الرجوع إلى التسلسل A002450. هناك تبعية مثيرة للاهتمام:
- لا ينتج تسلسل فرعي.
- ينتج تسلسل تابع عندما
.
- ينتج تسلسل تابع عندما
.
هناك 3 صفائف طفل محتملة فقط لرقم.
إذا تم تطبيقه على صيغة تعاودية ، فعندئذٍ:
الوظيفة أين - أي عدد مضاعف لـ 3 يشكل مجموعة فارغة ⨂.
الوظيفة أين - أي رقم تم إنشاؤه في تشكل مجموعة الأعداد K التي تنتمي إلى مجموعة الأعداد الطبيعية N.
الوظيفة في تشكل مجموعة الأعداد L التي تنتمي إلى مجموعة الأعداد الطبيعية N.
من الواضح أنه يمكن اختزال هذا بطريقة أو بأخرى إلى صيغة أكثر صرامة وقائمة على الأدلة.
في الواقع ، هذه هي الطريقة التي تتشكل بها التسلسلات في فرضية Collatz.
هناك تفاصيل واحدة متبقية. من الضروري استعادة مجموعات كاملة من الخطوات المطلقة من المجموعات التي حصلنا عليها.
صيغة الغريب:
بالإضافة إلى تلك الفردية ، تحتاج إلى استعادة الكثير منها. للقيام بذلك ، تذكر الصيغة:
يبقى فقط لربط كل شيء معًا:
النسخة النهائية:
وبالتالي ، يمكن لأي k توليد تسلسل.
هل العكس صحيح أن أيًا من الأعداد الطبيعية ينتمي بالتأكيد إلى أي تسلسل من ؟؟؟
إذا كان الأمر كذلك ، فمن المحتمل تمامًا أن Collatz كان على حق.
للحصول على المثال الأخير لتنفيذ وظيفة جافا سكريبت:
function collatsSequence( number, sequenceLength, alpha, epsilon ) {