لعب الفيزيائي ليف لانداو لعبة عقلية بأرقام سوفيتية [
1 ]. كانت الأقراص في شكل رقمين ، شرطة ، رقمان آخران وبعض الأحرف.
قواعد اللعبة
كانت لعبته هي تطبيق العوامل الرياضية على الأرقام على جانبي الشرطة بحيث يمكن استبدال الشرطة بعلامة مساوية. على سبيل المثال ، إذا أخذت لوحة الأرقام 44-74 ، فسيكون أحد الحلول
4! + 4 = 7 * 4يرجى ملاحظة أنه يمكننا إدراج مشغلين مثل
! و
+ و
* ، ولكن دون إضافة أرقام.
هل هناك حل لكل لوحة ترخيص ممكن؟ يعتمد ذلك على العوامل التي تسمح باستخدامها.
يمكنك تفاهيم اللعبة عن طريق تطبيق عملية الجزء الكسري {x} على كلا الجانبين ، لأن الجزء الكسري من العدد الصحيح هو صفر. يمكنك حظر مشغل الجزء الكسري بحجة أن هذه العملية ليست بوضوح عملية رياضية في المدرسة الثانوية ، أو يمكنك ببساطة حظرها لأنها تجعل اللعبة غير مفيدة.
تم دعم الترجمة بواسطة برنامج EDISON ، والذي يستثمر في الشركات الناشئة الواعدة ، وأيضًا تطوير الخدمات السحابية المختلفة .
حل واحد وقف
اتضح أن هناك حل عالمي ، بدءا من الملاحظة التي
√ (n + 1) = ثانية arctan √ n.
إذا كان أحد الجانبين أكبر من الآخر ، فإن الصيغة أعلاه تعطي حلاً فوريًا. على سبيل المثال ، سيكون حل لوحة رقم السيارة 89-88
√89 = ثانية arctan√88.
إذا كان الفرق أكبر ، يمكن تطبيق الصيغة بشكل متكرر. على سبيل المثال ، يمكننا تطبيق الصيغة مرتين للحصول عليها
√ (n + 2) = ثانية arctan√ (n + 1) = ثانية arctan sec arctan√ n
وبالتالي حل ممكن ل 35-37 هو
ثانية arctan ثانية arctan √35 = √37.
Kolmogorov التعقيد
نظرًا لأن الحل ممكن دائمًا ، يمكننا أن نجعل اللعبة أكثر إثارة للاهتمام من خلال إيجاد أبسط الحلول. لدينا فهم بديهي لما يعنيه هذا. مع مثالنا 44-74 ، الحل الأول
4! + 4 = 7 * 4
أبسط من الحل العالمي
ثانية arctan ثانية arctan ... √44 = √74
الأمر الذي سيتطلب استخدام الثواني والأقواس 30 مرة.
تعقيد Kolmogorov للكائن هو طول أقصر برنامج كمبيوتر لإنشاء كائن. يمكننا حساب تعقيد Kolmogorov للوظائف المطبقة على الأرقام على كل جانب لقياس مدى تعقيد الحل.
لمعرفة ذلك ، نحتاج إلى الإشارة إلى لغة البرمجة التي لدينا ، وهي ليست بهذه البساطة كما تبدو. إذا فكرنا في التدوين الرياضي كلغة برمجة ، فهل نريد أن نعول! مثل شخصية واحدة وأركتان مثل 6 أحرف؟ هذا لا يبدو صحيحا. إذا كتبنا كلمة "arctan" كـ "atn" ، فسنستخدم عددًا أقل من الأحرف دون إنشاء حل آخر.
بيثون رمز التعقيد
لجعل الأمور أكثر موضوعية ، يمكننا النظر في طول برامج الكمبيوتر الحقيقية ، بدلاً من تقديم التدوين الرياضي كلغة برمجة. دعنا نقول اخترنا بيثون. ثم فيما يلي بعض الوظائف التي يحسبها حلولا لوحة الترخيص 44-74.
from math import sqrt, cos, atan def f(): sec = lambda x: 1/cos(x) y = sqrt(44) for _ in range(30): y = sec(atan(y)) return y def g(): return sqrt(77)
يمكننا قياس مدى تعقيد وظائفنا f و g من خلال حساب عدد الأحرف في كل منها. ولكن لا تزال هناك صعوبات.
ماذا عن الواردات؟ يجب أن يحسب طولها بالحرف f لأنه يستخدم جميع العبارات المستوردة ، لكن g يستخدم عبارة أقصر تستورد sqrt فقط. والأهم من ذلك ، هل نحن نخدع حتى باستيراد مكتبة؟
بالإضافة إلى ذلك ، لا تعطي الدالتان المذكورتان أعلاه نفس النتيجة بالضبط بسبب دقة محدودة. يمكننا أن نتخيل أن وظائفنا المستوردة دقيقة للغاية ، لكن بعد ذلك لا نستخدم Python بالفعل ، بل نسخته المثالية من Python.
ماذا عن الحلقة؟ قدم هذا أرقامًا جديدة ، 3 و 0 ، وبالتالي ينتهك قواعد لعبة Landau. لذلك يجب أن نتخلص قبل حساب التعقيد؟
تجربة الفكر
يعد تعقيد Kolmogorov مفهومًا مفيدًا للغاية ، لكنه تجربة عقلية أكثر مما يمكنك حسابه في الممارسة. يمكننا أن نتخيل أن أقصر برنامج لحساب شيء ما ، لكننا نادراً ما نعرف أننا وجدنا مثل هذا البرنامج حقًا. كل ما يمكن أن نعرفه في الممارسة العملية هو الحدود العليا.
من الناحية النظرية ، يمكنك سرد جميع آلات Turing ذات الطول المحدد أو جميع برامج Python ذات الطول المحدد والعثور على أقصر البرامج التي تنفذ هذه المهمة ، لكن القائمة تنمو باطراد مع زيادة الطول.
ومع ذلك ، فمن الممكن حساب مدة برامج محددة إذا كنا نتعامل مع بعض الصعوبات المذكورة أعلاه. يمكننا أن نجعل Landau لعبة لشخصين من خلال رؤية من يمكنه تقديم حل أبسط في فترة زمنية محددة.
العودة إلى لانداو
إذا سمحنا للجيب والشهادة في مجموعتنا من المشغلين ، ثم B.S. Gorobets هو الحل العالمي. ل n ≥ 6 ، ن! مضاعفات 360 ، وهكذا
الخطيئة (ن!) ° = 0.
وإذا كان n أقل من 6 ، يبدأ تمثيله المكون من خانتين من الصفر ، حتى نتمكن من ضرب الأرقام للحصول على صفر.
إذا حظرنا الدوال التجاويفية ، فإننا نحظر خدعة Gorobets ولدينا وظائف يمكننا قياس طولها بشكل موضوعي بلغة برمجة.