دالة أكرمان

في نظرية الحوسبة ، تُعد دالة أكرمان ، نسبةً إلى ويلهلم أكرمان ، من أبسط الأمثلة [ 1 ] وأقدمها اكتشافًا لدالة قابلة للحوسبة الكلية وليست دالة تكرارية بدائية . جميع الدوال التكرارية البدائية كلية وقابلة للحوسبة، لكن دالة أكرمان تُبين أن ليس كل الدوال القابلة للحوسبة الكلية تكرارية بدائية. وهي تُبنى أساسًا عن طريق قطريّة سلسلة من الدوال التكرارية البدائية.و1،و2،...{\displaystyle f_{1},f_{2},\dots }مختارة من التسلسل الهرمي لغريغورتشيك . وهذا يجعل دالة أكرمان نقطة النهاية الأولىوω{\displaystyle f_{\omega }}ضمن التسلسل الهرمي سريع النمو .

بعد نشر أكرمان [ 2 ] لدالته (التي تحتوي على ثلاثة وسائط صحيحة غير سالبة)، قام العديد من المؤلفين بتعديلها لتناسب أغراضًا مختلفة، بحيث يُمكن اليوم أن يُشير مصطلح "دالة أكرمان" إلى أيٍّ من المتغيرات العديدة للدالة الأصلية. أحد هذه المتغيرات الشائعة هو دالة أكرمان-بيتر ذات الوسيطين التي طورها روزا بيتر ورافائيل روبنسون . تُعرَّف هذه الدالة من خلال علاقة التكرار.أ(م+1،ن+1)=أ(م،أ(م+1،ن)){\displaystyle \operatorname {A} (m+1,n+1)=\operatorname {A} (m,\operatorname {A} (m+1,n))}مع الحالات الأساسية المناسبة . وتزداد قيمتها بسرعة كبيرة؛ على سبيل المثال،أ(4،2){\displaystyle \operatorname {A} (4,2)}النتائج في265536-3{\displaystyle 2^{65536}-3}، عدد صحيح مكون من 19729 رقمًا عشريًا. [ 3 ]

تاريخ

في أواخر عشرينيات القرن العشرين، كان عالما الرياضيات غابرييل سودان وويلهلم أكرمان ، تلميذا ديفيد هيلبرت ، يدرسان أسس الحوسبة. يُنسب إلى كل من سودان وأكرمان [ 4 ] اكتشاف الدوال القابلة للحساب كليًا (والتي تُسمى ببساطة "التكرارية" في بعض المراجع) والتي لا تُعدّ تكرارية بدائية . نشر سودان دالته الأقل شهرة ، ثم بعد ذلك بفترة وجيزة وبشكل مستقل، في عام 1928، نشر أكرمان دالته.φ{\displaystyle \varphi }(من اليونانية، الحرف فاي ). دالة أكرمان ذات الوسائط الثلاثة،φ(م،ن،ص){\displaystyle \varphi (m,n,p)}، يتم تعريفها بحيث يكون لـص=0،1،2{\displaystyle p=0,1,2}فهو يعيد إنتاج العمليات الأساسية للجمع والضرب والأس كما

φ(م،ن،0)=م+نφ(م،ن،1)=م×نφ(م،ن،2)=من{\displaystyle {\begin{aligned}\varphi (m,n,0)&=m+n\\\varphi (m,n,1)&=m\times n\\\varphi (m,n,2)&=m^{n}\end{aligned}}}

ولـص>2{\displaystyle p>2}إنها توسع هذه العمليات الأساسية بطريقة يمكن مقارنتها بالعمليات الفائقة :

φ(م،ن،3)=م[4](ن+1)φ(م،ن،ص)م[ص+1](ن+1)ل ص>3{\displaystyle {\begin{aligned}\varphi (m,n,3)&=m[4](n+1)\\\varphi (m,n,p)&\gtrapprox m[p+1](n+1)&&{\text{for }}p>3\end{aligned}}}

(بصرف النظر عن دورها التاريخي كدالة قابلة للحساب الكلي ولكنها ليست بدائية متكررة، يُنظر إلى دالة أكرمان الأصلية على أنها توسع العمليات الحسابية الأساسية إلى ما وراء الأس، وإن لم يكن ذلك بسلاسة مثل متغيرات دالة أكرمان المصممة خصيصًا لهذا الغرض - مثل سلسلة العمليات الفائقة لجودستين .)

في كتابه "حول اللانهاية" ، [ 5 ] افترض ديفيد هيلبرت لأول مرة أن دالة أكرمان ليست دالة بدائية تكرارية، ولكن أكرمان، السكرتير الشخصي لهيلبرت وطالبه السابق، هو من أثبت هذه الفرضية في بحثه " حول بناء هيلبرت للأعداد الحقيقية" . [ 2 ] [ 6 ]

قام كل من روزا بيتر [ 7 ] ورافائيل روبنسون [ 8 ] لاحقًا بتطوير نسخة ذات متغيرين من دالة أكرمان والتي أصبحت مفضلة لدى جميع المؤلفين تقريبًا.

متتالية العمليات الفائقة المعممة ، على سبيل المثالجي(م،أ،ب)=أ[م]ب{\displaystyle G(m,a,b)=a[m]b}، وهي أيضاً نسخة من دالة أكرمان. [ 9 ]

في عام 1963، وضع ر. كريتون باك صيغة بديهية ذات متغيرين [ n 1 ]F{\displaystyle \operatorname {F} }حول تسلسل العمليات الفائقة : [ 10 ] [ 11 ]

F(م،ن)=2[م]ن.{\displaystyle \operatorname {F} (m,n)=2[m]n.}

بالمقارنة مع معظم الإصدارات الأخرى، لا تحتوي دالة باك على إزاحات غير ضرورية:

F(0،ن)=2[0]ن=ن+1F(1،ن)=2[1]ن=2+نF(2،ن)=2[2]ن=2×نF(3،ن)=2[3]ن=2نF(4،ن)=2[4]ن=222...2{\displaystyle {\begin{aligned}\operatorname {F} (0,n)&=2[0]n=n+1\\\operatorname {F} (1,n)&=2[1]n=2+n\\\operatorname {F} (2,n)&=2[2]n=2\times n\\\operatorname {F} (3,n)&=2[3]n=2^{n}\\\operatorname {F} (4,n)&=2[4]n=2^{2^{2^{{}^{.^{.^{{}_{.}2}}}}}}\\&\quad \vdots \end{aligned}}}

تم بحث العديد من الصيغ الأخرى لدالة أكرمان. [ 12 ] [ 13 ]

تعريف

التعريف: كدالة من الرتبة m

دالة أكرمان الأصلية ذات الوسائط الثلاثةφ(م،ن،ص){\displaystyle \varphi (m,n,p)}يُعرَّف بشكل تكراري كما يلي للأعداد الصحيحة غير السالبةم،ن،{\displaystyle m,n,}وص{\displaystyle p}:

φ(م،ن،0)=م+نφ(م،0،1)=0φ(م،0،2)=1φ(م،0،ص)=مل ص>2φ(م،ن،ص)=φ(م،φ(م،ن-1،ص)،ص-1)ل ن،ص>0{\displaystyle {\begin{aligned}\varphi (m,n,0)&=m+n\\\varphi (m,0,1)&=0\\\varphi (m,0,2)&=1\\\varphi (m,0,p)&=m&&{\text{for }}p>2\\\varphi (m,n,p)&=\varphi (m,\varphi (m,n-1,p),p-1)&&{\text{for }}n,p>0\end{aligned}}}

من بين النسخ المختلفة ذات الوسيطين، فإن النسخة التي طورها بيتر وروبنسون (والتي يطلق عليها معظم المؤلفين اسم دالة أكرمان) تُعرَّف للأعداد الصحيحة غير السالبة.م{\displaystyle m}ون{\displaystyle n}على النحو التالي:

أ(0،ن)=ن+1أ(م+1،0)=أ(م،1)أ(م+1،ن+1)=أ(م،أ(م+1،ن)){\displaystyle {\begin{array}{lcl}\operatorname {A} (0,n)&=&n+1\\\operatorname {A} (m+1,0)&=&\operatorname {A} (m,1)\\\operatorname {A} (m+1,n+1)&=&\operatorname {A} (m,\operatorname {A} (m+1,n))\end{array}}}

تم التعبير عن دالة أكرمان أيضًا فيما يتعلق بتسلسل العمليات الفائقة : [ 14 ] [ 15 ]

أ(م،ن)={ن+1م=02[م](ن+3)-3م>0{\displaystyle A(m,n)={\begin{cases}n+1&m=0\\2[m](n+3)-3&m>0\\\end{cases}}}

أو مكتوبة باستخدام تدوين كنوت للسهم العلوي (الممتد إلى مؤشرات الأعداد الصحيحة)-2{\displaystyle \geq -2}):

أ(م،ن)={ن+1م=02م-2(ن+3)-3م>0{\displaystyle A(m,n)={\begin{cases}n+1&m=0\\2\uparrow ^{m-2}(n+3)-3&m>0\\\end{cases}}}

أو، بشكل مكافئ، من حيث دالة باك F: [ 10 ]

أ(م،ن)={ن+1م=0F(م،ن+3)-3م>0{\displaystyle A(m,n)={\begin{cases}n+1&m=0\\F(m,n+3)-3&m>0\\\end{cases}}}

بالحث علىم{\displaystyle m}يمكن للمرء أن يثبت ذلكF(م،ن)أ(م،ن){\displaystyle F(m,n)\leq A(m,n)}للجميعم،نشمال0{\displaystyle m,n\in \mathbb {N} _{0}}.

التعريف: كدالة أحادية متكررة

يُعرِّفون{\displaystyle f^{n}}باعتبارها التكرار رقم n منو{\displaystyle f}:

و0(x)=xون+1(x)=و(ون(x)){\displaystyle {\begin{array}{rll}f^{0}(x)&=&x\\f^{n+1}(x)&=&f(f^{n}(x))\end{array}}}

التكرار هو عملية دمج دالة مع نفسها عددًا معينًا من المرات. تركيب الدوال عملية تجميعية ، لذاو(ون(x))=ون(و(x)){\displaystyle f(f^{n}(x))=f^{n}(f(x))}.

بتصور دالة أكرمان كسلسلة من الدوال الأحادية، يمكن للمرء أن يضعأم(ن)=أ(م،ن){\displaystyle \operatorname {A} _{m}(n)=\operatorname {A} (m,n)}.

ثم تصبح الدالة عبارة عن سلسلةأ0،أ1،أ2،...{\displaystyle \operatorname {A} _{0},\operatorname {A} _{1},\operatorname {A} _{2},...}من الدوال الأحادية [ n 2 ] ، المعرفة من التكرار :

أ0(ن)=ن+1أم+1(ن)=أمن+1(1).{\displaystyle {\begin{array}{lcl}\operatorname {A} _{0}(n)&=&n+1\\\operatorname {A} _{m+1}(n)&=&\operatorname {A} _{m}^{n+1}(1)\,.\end{array}}}

حساب

الحساب باستخدام برنامج LOOP

الوظائفأأنا{\displaystyle \operatorname {A} _{i}}تتناسب مع التسلسل الهرمي سريع النمو (FGH) للوظائف (ذات المستوى المحدود) [ 16 ]

FGH0(ن)=ن+1FGHم+1(ن)=FGHمن(ن).{\displaystyle {\begin{array}{lcl}\operatorname {FGH} _{0}(n)&=&n+1\\\operatorname {FGH} _{m+1}(n)&=&\operatorname {FGH} _{m}^{n}(n)\,.\end{array}}}

المتباينة التالية صحيحة: [ 17 ]م>1،ن>1:أم(ن)<FGHم(ن){\displaystyle \forall m>1,\forall n>1:\operatorname {A} _{m}(n)<\operatorname {FGH} _{m}(n)}

للثابتك{\displaystyle k}، الوظيفةFGHك(ن){\displaystyle \operatorname {FGH} _{k}(n)}يمكن حسابها بواسطة برنامج حلقة تكرارية بعمق تداخلك{\displaystyle k}[ 18 ]

# إدخال (ن) حلقة ن : # عمق التداخل: 1 حلقة ن : # عمق التداخل: 2 ... # ... حلقة ن : # عمق التداخل: ك ن += 1 # # إخراج (ن)

الوظيفةأك(ن){\displaystyle \operatorname {A} _{k}(n)}يمكن أيضًا حسابها بواسطة برنامج LOOP-k. [ 19 ] (البرنامج (المخطط) غير مدرج هنا.)

من الواضح أنأ(م،ن){\displaystyle \operatorname {A} (m,n)}، لكونها ليست دالة تكرارية بدائية - انظر أدناه - ، لا يمكن حسابها بواسطة برنامج LOOP.

الحساب عن طريق نظام إعادة كتابة المصطلحات، استنادًا إلى دالة ثنائية.

يمكن تحويل التعريف التكراري لدالة أكرمان بشكل طبيعي إلى نظام إعادة كتابة المصطلحات (TRS) .

يؤدي تعريف دالة أكرمان الثنائية إلى قواعد الاختزال الواضحة [ 20 ] [ 21 ]

(r1)أ(0،ن)S(ن)(r2)أ(S(م)،0)أ(م،S(0))(r3)أ(S(م)،S(ن))أ(م،أ(S(م)،ن)){\displaystyle {\begin{array}{lll}{\text{(r1)}}&A(0,n)&\rightarrow &S(n)\\{\text{(r2)}}&A(S(m),0)&\rightarrow &A(m,S(0))\\{\text{(r3)}}&A(S(m),S(n))&\rightarrow &A(m,A(S(m),n))\end{array}}}

مثال

الحوسبةأ(1،2)*4{\displaystyle A(1,2)\rightarrow _{*}4}

تسلسل الاختزال هو [ n 3 ]

استراتيجية الخطوة الواحدة (من اليسار إلى الخارج) :            استراتيجية من اليسار إلى الداخل (خطوة واحدة) :
أ(S(0)،S(S(0)))_{\displaystyle {\underline {A(S(0),S(S(0)))}}}أ(S(0)،S(S(0)))_{\displaystyle {\underline {A(S(0),S(S(0)))}}}
    ر3أ(0،أ(S(0)،S(0))_){\displaystyle \rightarrow _{r3}{\underline {A(0,A(S(0),S(0))}})}    ر3أ(0،أ(S(0)،S(0))_){\displaystyle \rightarrow _{r3}A(0,{\underline {A(S(0),S(0))}})}
    ر1S(أ(S(0)،S(0))_){\displaystyle \rightarrow _{r1}S({\underline {A(S(0),S(0))}})}    ر3أ(0،أ(0،أ(S(0)،0)_)){\displaystyle \rightarrow _{r3}A(0,A(0,{\underline {A(S(0),0)}}))}
    ر3S(أ(0،أ(S0،0))_){\displaystyle \rightarrow _{r3}S({\underline {A(0,A(S0,0))}})}    ر2أ(0،أ(0،أ(0،S(0))_)){\displaystyle \rightarrow _{r2}A(0,A(0,{\underline {A(0,S(0))}}))}
    ر1S(S(أ(S(0)،0)_)){\displaystyle \rightarrow _{r1}S(S({\underline {A(S(0),0)}}))}    ر1أ(0،أ(0،S(S(0)))_){\displaystyle \rightarrow _{r1}A(0,{\underline {A(0,S(S(0)))}})}
    ر2S(S(أ(0،S(0))_)){\displaystyle \rightarrow _{r2}S(S({\underline {A(0,S(0))}}))}    ر1أ(0،S(S(S(0))))_{\displaystyle \rightarrow _{r1}{\underline {A(0,S(S(S(0))))}}}
    ر1S(S(S(S(0)))){\displaystyle \rightarrow _{r1}S(S(S(S(0))))}    ر1S(S(S(S(0)))){\displaystyle \rightarrow _{r1}S(S(S(S(0))))}

لحسابأ(م،ن){\displaystyle \operatorname {A} (m,n)}يمكن استخدام مكدس ، والذي يحتوي في البداية على العناصرم،ن{\displaystyle \langle m,n\rangle }.

ثم يتم استبدال العنصرين العلويين بشكل متكرر وفقًا للقواعد [ ن 4 ]

(r1)0،ن(ن+1)(r2)(م+1)،0م،1(r3)(م+1)،(ن+1)م،(م+1)،ن{\displaystyle {\begin{array}{lllllllll}{\text{(r1)}}&0&,&n&\rightarrow &(n+1)\\{\text{(r2)}}&(m+1)&,&0&\rightarrow &m&,&1\\{\text{(r3)}}&(m+1)&,&(n+1)&\rightarrow &m&,&(m+1)&,&n\end{array}}}

بشكل تخطيطي، بدءًا منم،ن{\displaystyle \langle m,n\rangle }:

طالما أن طول المكدس لا يساوي 1 { قم بإزالة عنصرين؛ ثم قم بدفع عنصر واحد أو عنصرين أو ثلاثة عناصر، مع تطبيق القواعد r1 و r2 و r3 }

تم نشر الشفرة الزائفة في Grossman & Zeitman (1988) .

على سبيل المثال، عند الإدخال2،1{\displaystyle \langle 2,1\rangle }،

تكوينات المكدس    يعكس التخفيض [ ن 5 ]
2،1_{\displaystyle {\underline {2,1}}}أ(2،1)_{\displaystyle {\underline {A(2,1)}}}
    1،2،0_{\displaystyle \rightarrow 1,{\underline {2,0}}}    ر1أ(1،أ(2،0)_){\displaystyle \rightarrow _{r1}A(1,{\underline {A(2,0)}})}
    1،1،1_{\displaystyle \rightarrow 1,{\underline {1,1}}}    ر2أ(1،أ(1،1)_){\displaystyle \rightarrow _{r2}A(1,{\underline {A(1,1)}})}
    1،0،1،0_{\displaystyle \rightarrow 1,0,{\underline {1,0}}}    ر3أ(1،أ(0،أ(1،0)_)){\displaystyle \rightarrow _{r3}A(1,A(0,{\underline {A(1,0)}}))}
    1،0،0،1_{\displaystyle \rightarrow 1,0,{\underline {0,1}}}    ر2أ(1،أ(0،أ(0،1)_)){\displaystyle \rightarrow _{r2}A(1,A(0,{\underline {A(0,1)}}))}
    1،0،2_{\displaystyle \rightarrow 1,{\underline {0,2}}}    ر1أ(1،أ(0،2)_){\displaystyle \rightarrow _{r1}A(1,{\underline {A(0,2)}})}
    1،3_{\displaystyle \rightarrow {\underline {1,3}}}    ر1أ(1،3)_{\displaystyle \rightarrow _{r1}{\underline {A(1,3)}}}
    0،1،2_{\displaystyle \rightarrow 0,{\underline {1,2}}}    ر3أ(0،أ(1،2)_){\displaystyle \rightarrow _{r3}A(0,{\underline {A(1,2)}})}
    0،0،1،1_{\displaystyle \rightarrow 0,0,{\underline {1,1}}}    ر3أ(0،أ(0،أ(1،1)_)){\displaystyle \rightarrow _{r3}A(0,A(0,{\underline {A(1,1)}}))}
    0،0،0،1،0_{\displaystyle \rightarrow 0,0,0,{\underline {1,0}}}    ر3أ(0،أ(0،أ(0،أ(1،0)_))){\displaystyle \rightarrow _{r3}A(0,A(0,A(0,{\underline {A(1,0)}})))}
    0،0،0،0،1_{\displaystyle \rightarrow 0,0,0,{\underline {0,1}}}    ر2أ(0،أ(0،أ(0،أ(0،1)_))){\displaystyle \rightarrow _{r2}A(0,A(0,A(0,{\underline {A(0,1)}})))}
    0،0،0،2_{\displaystyle \rightarrow 0,0,{\underline {0,2}}}    ر1أ(0،أ(0،أ(0،2)_)){\displaystyle \rightarrow _{r1}A(0,A(0,{\underline {A(0,2)}}))}
    0،0،3_{\displaystyle \rightarrow 0,{\underline {0,3}}}    ر1أ(0،أ(0،3)_){\displaystyle \rightarrow _{r1}A(0,{\underline {A(0,3)}})}
    0،4_{\displaystyle \rightarrow {\underline {0,4}}}    ر1أ(0،4)_{\displaystyle \rightarrow _{r1}{\underline {A(0,4)}}}
    5{\displaystyle \rightarrow 5}    ر15{\displaystyle \rightarrow _{r1}5}

ملاحظات

  • يتم تطبيق استراتيجية أقصى اليسار إلى الداخل في 225 لغة برمجة على برنامج Rosetta Code .
  • للجميعم،ن{\displaystyle m,n}حسابأ(م،ن){\displaystyle A(m,n)}لا يستغرق الأمر أكثر من(أ(م،ن)+1)م{\displaystyle (A(m,n)+1)^{m}}خطوات. [ 22 ]
  • أشار غروسمان وزيتمان (1988) إلى أنه في حسابأ(م،ن){\displaystyle \operatorname {A} (m,n)}أقصى طول للكومة هوأ(م،ن){\displaystyle \operatorname {A} (m,n)}طالمام>0{\displaystyle m>0}.

    تقوم خوارزميتهم الخاصة، وهي بطبيعتها تكرارية، بحسابأ(م،ن){\displaystyle \operatorname {A} (m,n)}داخليا(مأ(م،ن)){\displaystyle {\mathcal {O}}(m\operatorname {A} (m,n))}في الوقت وخلاليا(م){\displaystyle {\mathcal {O}}(m)}فضاء.

الحساب بواسطة TRS، استنادًا إلى دالة أحادية متكررة

يؤدي تعريف دوال أكرمان أحادية الرتبة المتكررة إلى قواعد اختزال مختلفة

(r4)أ(S(0)،0،ن)S(ن)(r5)أ(S(0)،S(م)،ن)أ(S(ن)،م،S(0))(r6)أ(S(S(x))،م،ن)أ(S(0)،م،أ(S(x)،م،ن)){\displaystyle {\begin{array}{lll}{\text{(r4)}}&A(S(0),0,n)&\rightarrow &S(n)\\{\text{(r5)}}&A(S(0),S(m),n)&\rightarrow &A(S(n),m,S(0))\\{\text{(r6)}}&A(S(S(x)),m,n)&\rightarrow &A(S(0),m,A(S(x),m,n))\end{array}}}

بما أن تركيب الدوال ترابطي، فبدلاً من القاعدة r6 يمكن تعريف

(r7)أ(S(S(x))،م،ن)أ(S(x)،م،أ(S(0)،م،ن)){\displaystyle {\begin{array}{lll}{\text{(r7)}}&A(S(S(x)),m,n)&\rightarrow &A(S(x),m,A(S(0),m,n))\end{array}}}

كما هو الحال في القسم السابق، فإن حسابأم1(ن){\displaystyle \operatorname {A} _{m}^{1}(n)}يمكن تنفيذ ذلك باستخدام مكدس.

في البداية، تحتوي المجموعة على العناصر الثلاثة1،م،ن{\displaystyle \langle 1,m,n\rangle }.

ثم يتم استبدال العناصر الثلاثة العلوية بشكل متكرر وفقًا للقواعد [ ن 4 ]

(r4)1،0،ن(ن+1)(r5)1،(م+1)،ن(ن+1)،م،1(r6)(x+2)،م،ن1،م،(x+1)،م،ن{\displaystyle {\begin{array}{lllllllll}{\text{(r4)}}&1&,0&,n&\rightarrow &(n+1)\\{\text{(r5)}}&1&,(m+1)&,n&\rightarrow &(n+1)&,m&,1\\{\text{(r6)}}&(x+2)&,m&,n&\rightarrow &1&,m&,(x+1)&,m&,n\\\end{array}}}

بشكل تخطيطي، بدءًا من1،م،ن{\displaystyle \langle 1,m,n\rangle }:

طالما أن طول المكدس لا يساوي 1 { قم بإزالة 3 عناصر؛ قم بدفع عنصر واحد أو 3 أو 5 عناصر، مع تطبيق القواعد r4 و r5 و r6؛ }

مثال

عند الإدخال1،2،1{\displaystyle \langle 1,2,1\rangle }تكون تكوينات المكدس المتتالية هي

1،2،1_ر52،1،1_ر61،1،1،1،1_ر51،1،2،0،1_ر61،1،1،0،1،0،1_ر41،1،1،0،2_ر41،1،3_ر54،0،1_ر61،0،3،0،1_ر61،0،1،0،2،0،1_ر61،0،1،0،1،0،1،0،1_ر41،0،1،0،1،0،2_ر41،0،1،0،3_ر41،0،4_ر45{\displaystyle {\begin{aligned}&{\underline {1,2,1}}\rightarrow _{r5}{\underline {2,1,1}}\rightarrow _{r6}1,1,{\underline {1,1,1}}\rightarrow _{r5}1,1,{\underline {2,0,1}}\rightarrow _{r6}1,1,1,0,{\underline {1,0,1}}\\&\rightarrow _{r4}1,1,{\underline {1,0,2}}\rightarrow _{r4}{\underline {1,1,3}}\rightarrow _{r5}{\underline {4,0,1}}\rightarrow _{r6}1,0,{\underline {3,0,1}}\rightarrow _{r6}1,0,1,0,{\underline {2,0,1}}\\&\rightarrow _{r6}1,0,1,0,1,0,{\underline {1,0,1}}\rightarrow _{r4}1,0,1,0,{\underline {1,0,2}}\rightarrow _{r4}1,0,{\underline {1,0,3}}\rightarrow _{r4}{\underline {1,0,4}}\rightarrow _{r4}5\end{aligned}}}

المعادلات المقابلة هي

أ2(1)=أ12(1)=أ1(أ1(1))=أ1(أ02(1))=أ1(أ0(أ0(1)))=أ1(أ0(2))=أ1(3)=أ04(1)=أ0(أ03(1))=أ0(أ0(أ02(1)))=أ0(أ0(أ0(أ0(1))))=أ0(أ0(أ0(2)))=أ0(أ0(3))=أ0(4)=5{\displaystyle {\begin{aligned}&A_{2}(1)=A_{1}^{2}(1)=A_{1}(A_{1}(1))=A_{1}(A_{0}^{2}(1))=A_{1}(A_{0}(A_{0}(1)))\\&=A_{1}(A_{0}(2))=A_{1}(3)=A_{0}^{4}(1)=A_{0}(A_{0}^{3}(1))=A_{0}(A_{0}(A_{0}^{2}(1)))\\&=A_{0}(A_{0}(A_{0}(A_{0}(1))))=A_{0}(A_{0}(A_{0}(2)))=A_{0}(A_{0}(3))=A_{0}(4)=5\end{aligned}}}

عند استخدام قاعدة الاختزال r7 بدلاً من القاعدة r6، ستتبع عمليات الاستبدال في المكدس ما يلي:

(r7)(x+2)،م،ن(x+1)،م،1،م،ن{\displaystyle {\begin{array}{lllllllll}{\text{(r7)}}&(x+2)&,m&,n&\rightarrow &(x+1)&,m&,1&,m&,n\end{array}}}

ستكون تكوينات المكدس المتتالية بعد ذلك

1،2،1_ر52،1،1_ر71،1،1،1،1_ر51،1،2،0،1_ر71،1،1،0،1،0،1_ر41،1،1،0،2_ر41،1،3_ر54،0،1_ر73،0،1،0،1_ر43،0،2_ر72،0،1،0،2_ر42،0،3_ر71،0،1،0،3_ر41،0،4_ر45{\displaystyle {\begin{aligned}&{\underline {1,2,1}}\rightarrow _{r5}{\underline {2,1,1}}\rightarrow _{r7}1,1,{\underline {1,1,1}}\rightarrow _{r5}1,1,{\underline {2,0,1}}\rightarrow _{r7}1,1,1,0,{\underline {1,0,1}}\\&\rightarrow _{r4}1,1,{\underline {1,0,2}}\rightarrow _{r4}{\underline {1,1,3}}\rightarrow _{r5}{\underline {4,0,1}}\rightarrow _{r7}3,0,{\underline {1,0,1}}\rightarrow _{r4}{\underline {3,0,2}}\\&\rightarrow _{r7}2,0,{\underline {1,0,2}}\rightarrow _{r4}{\underline {2,0,3}}\rightarrow _{r7}1,0,{\underline {1,0,3}}\rightarrow _{r4}{\underline {1,0,4}}\rightarrow _{r4}5\end{aligned}}}

المعادلات المقابلة هي

أ2(1)=أ12(1)=أ1(أ1(1))=أ1(أ02(1))=أ1(أ0(أ0(1)))=أ1(أ0(2))=أ1(3)=أ04(1)=أ03(أ0(1))=أ03(2)=أ02(أ0(2))=أ02(3)=أ0(أ0(3))=أ0(4)=5{\displaystyle {\begin{aligned}&A_{2}(1)=A_{1}^{2}(1)=A_{1}(A_{1}(1))=A_{1}(A_{0}^{2}(1))=A_{1}(A_{0}(A_{0}(1)))\\&=A_{1}(A_{0}(2))=A_{1}(3)=A_{0}^{4}(1)=A_{0}^{3}(A_{0}(1))=A_{0}^{3}(2)\\&=A_{0}^{2}(A_{0}(2))=A_{0}^{2}(3)=A_{0}(A_{0}(3))=A_{0}(4)=5\end{aligned}}}

ملاحظات

  • عند أي مدخلات معينة، تتقارب أنظمة الاستجابة الزمنية (TRSs) المعروضة حتى الآن في نفس عدد الخطوات. كما أنها تستخدم نفس قواعد الاختزال (في هذه المقارنة، تُعتبر القواعد r1 و r2 و r3 "مماثلة" للقواعد r4 و r5 و r6/r7 على التوالي). على سبيل المثال، اختزالأ(2،1){\displaystyle A(2,1)}يتقارب في 14 خطوة: 6 × r1، 3 × r2، 5 × r3. اختزالأ2(1){\displaystyle A_{2}(1)}يتقارب في نفس الخطوات الـ 14: 6 × r4، 3 × r5، 5 × r6/r7. تختلف خوارزميات TRS في ترتيب تطبيق قواعد الاختزال.
  • متىأأنا(ن){\displaystyle A_{i}(n)}يتم حسابها وفقًا للقواعد {r4، r5، r6}، ويبقى الحد الأقصى لطول المكدس أقل من2×أ(أنا،ن){\displaystyle 2\times A(i,n)}عند استخدام قاعدة الاختزال r7 بدلاً من القاعدة r6، يكون الحد الأقصى لطول المكدس هو فقط2(أنا+2){\displaystyle 2(i+2)}يعكس طول المكدس عمق الاستدعاء الذاتي. وبما أن الاختزال وفقًا للقواعد {r4، r5، r7} يتضمن عمق استدعاء ذاتي أقصى أصغر، [ n 6 ] فإن هذه العملية الحسابية أكثر كفاءة من هذه الناحية.

الحساب بواسطة TRS، استنادًا إلى المؤثرات الفائقة

كما أوضح سوندبلاد (1971) - أو بورتو وماتوس (1980) - بشكل صريح، يمكن التعبير عن دالة أكرمان من حيث متتالية العمليات الفائقة :

أ(م،ن)={ن+1م=02[م](ن+3)-3م>0{\displaystyle A(m,n)={\begin{cases}n+1&m=0\\2[m](n+3)-3&m>0\\\end{cases}}}

أو، بعد إزالة الثابت 2 من قائمة المعاملات، بدلالة دالة باك

أ(م،ن)={ن+1م=0F(م،ن+3)-3م>0{\displaystyle A(m,n)={\begin{cases}n+1&m=0\\F(m,n+3)-3&m>0\\\end{cases}}}

وظيفة باكF(م،ن)=2[م]ن{\displaystyle \operatorname {F} (m,n)=2[m]n}، [ 10 ] يمكن حساب أحد أشكال دالة أكرمان بمفردها باستخدام قواعد الاختزال التالية:

(ب1)F(S(0)،0،ن)S(ن)(ب2)F(S(0)،S(0)،0)S(S(0))(ب3)F(S(0)،S(S(0))،0)0(ب4)F(S(0)،S(S(S(م)))،0)S(0)(ب5)F(S(0)،S(م)،S(ن))F(S(ن)،م،F(S(0)،S(م)،0))(ب6)F(S(S(x))،م،ن)F(S(0)،م،F(S(x)،م،ن)){\displaystyle {\begin{array}{lll}{\text{(b1)}}&F(S(0),0,n)&\rightarrow &S(n)\\{\text{(b2)}}&F(S(0),S(0),0)&\rightarrow &S(S(0))\\{\text{(b3)}}&F(S(0),S(S(0)),0)&\rightarrow &0\\{\text{(b4)}}&F(S(0),S(S(S(m))),0)&\rightarrow &S(0)\\{\text{(b5)}}&F(S(0),S(m),S(n))&\rightarrow &F(S(n),m,F(S(0),S(m),0))\\{\text{(b6)}}&F(S(S(x)),m,n)&\rightarrow &F(S(0),m,F(S(x),m,n))\end{array}}} بدلاً من القاعدة ب6، يمكن تعريف القاعدة

(ب7)F(S(S(x))،م،ن)F(S(x)،م،F(S(0)،م،ن)){\displaystyle {\begin{array}{lll}{\text{(b7)}}&F(S(S(x)),m,n)&\rightarrow &F(S(x),m,F(S(0),m,n))\end{array}}} لحساب دالة أكرمان، يكفي إضافة ثلاث قواعد اختزال.

(r8)أ(0،ن)S(ن)(r9)أ(S(م)،ن)P(F(S(0)،S(م)،S(S(S(ن)))))(r10)P(S(S(S(م))))م{\displaystyle {\begin{array}{lll}{\text{(r8)}}&A(0,n)&\rightarrow &S(n)\\{\text{(r9)}}&A(S(m),n)&\rightarrow &P(F(S(0),S(m),S(S(S(n)))))\\{\text{(r10)}}&P(S(S(S(m))))&\rightarrow &m\\\end{array}}}

تتولى هذه القواعد معالجة الحالة الأساسيةأ(0،ن){\displaystyle A(0,n)}، المحاذاة(ن+3){\displaystyle (n+3)}والفدج (-3).

مثال

الحوسبةأ(2،1)*5{\displaystyle A(2,1)\rightarrow _{*}5}

باستخدام قاعدة الاختزالب7{\displaystyle {\text{b7}}}: [ رقم 5 ]    باستخدام قاعدة الاختزالب6{\displaystyle {\text{b6}}}: [ رقم 5 ]
أ(2،1)_{\displaystyle {\underline {A(2,1)}}}أ(2،1)_{\displaystyle {\underline {A(2,1)}}}
    ر9P(F(1،2،4)_){\displaystyle \rightarrow _{r9}P({\underline {F(1,2,4)}})}    ر9P(F(1،2،4)_){\displaystyle \rightarrow _{r9}P({\underline {F(1,2,4)}})}
    ب5P(F(4،1،F(1،2،0)_)){\displaystyle \rightarrow _{b5}P(F(4,1,{\underline {F(1,2,0)}}))}    ب5P(F(4،1،F(1،2،0)_)){\displaystyle \rightarrow _{b5}P(F(4,1,{\underline {F(1,2,0)}}))}
    ب3P(F(4،1،0)_){\displaystyle \rightarrow _{b3}P({\underline {F(4,1,0)}})}    ب3P(F(4،1،0)_){\displaystyle \rightarrow _{b3}P({\underline {F(4,1,0)}})}
    ب7P(F(3،1،F(1،1،0)_)){\displaystyle \rightarrow _{b7}P(F(3,1,{\underline {F(1,1,0)}}))}    ب6P(F(1،1،F(3،1،0)_)){\displaystyle \rightarrow _{b6}P(F(1,1,{\underline {F(3,1,0)}}))}
    ب2P(F(3،1،2)_){\displaystyle \rightarrow _{b2}P({\underline {F(3,1,2)}})}    ب6P(F(1،1،F(1،1،F(2،1،0)_))){\displaystyle \rightarrow _{b6}P(F(1,1,F(1,1,{\underline {F(2,1,0)}})))}
    ب7P(F(2،1،F(1،1،2)_)){\displaystyle \rightarrow _{b7}P(F(2,1,{\underline {F(1,1,2)}}))}    ب6P(F(1،1،F(1،1،F(1،1،F(1،1،0)_)))){\displaystyle \rightarrow _{b6}P(F(1,1,F(1,1,F(1,1,{\underline {F(1,1,0)}}))))}
    ب5P(F(2،1،F(2،0،F(1،1،0)_))){\displaystyle \rightarrow _{b5}P(F(2,1,F(2,0,{\underline {F(1,1,0)}})))}              ب2P(F(1،1،F(1،1،F(1،1،2)_))){\displaystyle \rightarrow _{b2}P(F(1,1,F(1,1,{\underline {F(1,1,2)}})))}
    ب2P(F(2،1،F(2،0،2)_)){\displaystyle \rightarrow _{b2}P(F(2,1,{\underline {F(2,0,2)}}))}    ب5P(F(1،1،F(1،1،F(2،0،F(1،1،0)_)))){\displaystyle \rightarrow _{b5}P(F(1,1,F(1,1,F(2,0,{\underline {F(1,1,0)}}))))}
    ب7P(F(2،1،F(1،0،F(1،0،2)_))){\displaystyle \rightarrow _{b7}P(F(2,1,F(1,0,{\underline {F(1,0,2)}})))}    ب2P(F(1،1،F(1،1،F(2،0،2)_))){\displaystyle \rightarrow _{b2}P(F(1,1,F(1,1,{\underline {F(2,0,2)}})))}
    ب1P(F(2،1،F(1،0،3)_)){\displaystyle \rightarrow _{b1}P(F(2,1,{\underline {F(1,0,3)}}))}    ب6P(F(1،1،F(1،1،F(1،0،F(1،0،2)_)))){\displaystyle \rightarrow _{b6}P(F(1,1,F(1,1,F(1,0,{\underline {F(1,0,2)}}))))}
    ب1P(F(2،1،4)_){\displaystyle \rightarrow _{b1}P({\underline {F(2,1,4)}})}    ب1P(F(1،1،F(1،1،F(1،0،3)_))){\displaystyle \rightarrow _{b1}P(F(1,1,F(1,1,{\underline {F(1,0,3)}})))}
    ب7P(F(1،1،F(1،1،4)_)){\displaystyle \rightarrow _{b7}P(F(1,1,{\underline {F(1,1,4)}}))}    ب1P(F(1،1،F(1،1،4)_)){\displaystyle \rightarrow _{b1}P(F(1,1,{\underline {F(1,1,4)}}))}
    ب5P(F(1،1،F(4،0،F(1،1،0)_))){\displaystyle \rightarrow _{b5}P(F(1,1,F(4,0,{\underline {F(1,1,0)}})))}    ب5P(F(1،1،F(4،0،F(1،1،0)_))){\displaystyle \rightarrow _{b5}P(F(1,1,F(4,0,{\underline {F(1,1,0)}})))}
    ب2P(F(1،1،F(4،0،2)_)){\displaystyle \rightarrow _{b2}P(F(1,1,{\underline {F(4,0,2)}}))}    ب2P(F(1،1،F(4،0،2)_)){\displaystyle \rightarrow _{b2}P(F(1,1,{\underline {F(4,0,2)}}))}
    ب7P(F(1،1،F(3،0،F(1،0،2)_))){\displaystyle \rightarrow _{b7}P(F(1,1,F(3,0,{\underline {F(1,0,2)}})))}    ب6P(F(1،1،F(1،0،F(3،0،2)_))){\displaystyle \rightarrow _{b6}P(F(1,1,F(1,0,{\underline {F(3,0,2)}})))}
    ب1P(F(1،1،F(3،0،3)_)){\displaystyle \rightarrow _{b1}P(F(1,1,{\underline {F(3,0,3)}}))}    ب6P(F(1،1،F(1،0،F(1،0،F(2،0،2)_)))){\displaystyle \rightarrow _{b6}P(F(1,1,F(1,0,F(1,0,{\underline {F(2,0,2)}}))))}
    ب7P(F(1،1،F(2،0،F(1،0،3)_))){\displaystyle \rightarrow _{b7}P(F(1,1,F(2,0,{\underline {F(1,0,3)}})))}    ب6P(F(1،1،F(1،0،F(1،0،F(1،0،F(1،0،2)_))))){\displaystyle \rightarrow _{b6}P(F(1,1,F(1,0,F(1,0,F(1,0,{\underline {F(1,0,2)}})))))}
    ب1P(F(1،1،F(2،0،4)_)){\displaystyle \rightarrow _{b1}P(F(1,1,{\underline {F(2,0,4)}}))}    ب1P(F(1،1،F(1،0،F(1،0،F(1،0،3)_)))){\displaystyle \rightarrow _{b1}P(F(1,1,F(1,0,F(1,0,{\underline {F(1,0,3)}}))))}
    ب7P(F(1،1،F(1،0،F(1،0،4)_))){\displaystyle \rightarrow _{b7}P(F(1,1,F(1,0,{\underline {F(1,0,4)}})))}    ب1P(F(1،1،F(1،0،F(1،0،4)_))){\displaystyle \rightarrow _{b1}P(F(1,1,F(1,0,{\underline {F(1,0,4)}})))}
    ب1P(F(1،1،F(1،0،5)_)){\displaystyle \rightarrow _{b1}P(F(1,1,{\underline {F(1,0,5)}}))}    ب1P(F(1،1،F(1،0،5)_)){\displaystyle \rightarrow _{b1}P(F(1,1,{\underline {F(1,0,5)}}))}
    ب1P(F(1،1،6)_){\displaystyle \rightarrow _{b1}P({\underline {F(1,1,6)}})}    ب1P(F(1،1،6)_){\displaystyle \rightarrow _{b1}P({\underline {F(1,1,6)}})}
    ب5P(F(6،0،F(1،1،0)_)){\displaystyle \rightarrow _{b5}P(F(6,0,{\underline {F(1,1,0)}}))}    ب5P(F(6،0،F(1،1،0)_)){\displaystyle \rightarrow _{b5}P(F(6,0,{\underline {F(1,1,0)}}))}
    ب2P(F(6،0،2)_){\displaystyle \rightarrow _{b2}P({\underline {F(6,0,2)}})}    ب2P(F(6،0،2)_){\displaystyle \rightarrow _{b2}P({\underline {F(6,0,2)}})}
    ب7P(F(5،0،F(1،0،2)_)){\displaystyle \rightarrow _{b7}P(F(5,0,{\underline {F(1,0,2)}}))}    ب6P(F(1،0،F(5،0،2)_)){\displaystyle \rightarrow _{b6}P(F(1,0,{\underline {F(5,0,2)}}))}
    ب1P(F(5،0،3)_){\displaystyle \rightarrow _{b1}P({\underline {F(5,0,3)}})}    ب6P(F(1،0،F(1،0،F(4،0،2)_))){\displaystyle \rightarrow _{b6}P(F(1,0,F(1,0,{\underline {F(4,0,2)}})))}
    ب7P(F(4،0،F(1،0،3)_)){\displaystyle \rightarrow _{b7}P(F(4,0,{\underline {F(1,0,3)}}))}    ب6P(F(1،0،F(1،0،F(1،0،F(3،0،2)_)))){\displaystyle \rightarrow _{b6}P(F(1,0,F(1,0,F(1,0,{\underline {F(3,0,2)}}))))}
    ب1P(F(4،0،4)_){\displaystyle \rightarrow _{b1}P({\underline {F(4,0,4)}})}    ب6P(F(1،0،F(1،0،F(1،0،F(1،0،F(2،0،2)_))))){\displaystyle \rightarrow _{b6}P(F(1,0,F(1,0,F(1,0,F(1,0,{\underline {F(2,0,2)}})))))}
    ب7P(F(3،0،F(1،0،4)_)){\displaystyle \rightarrow _{b7}P(F(3,0,{\underline {F(1,0,4)}}))}    ب6P(F(1،0،F(1،0،F(1،0،F(1،0،F(1،0،F(1،0،2)_)))))){\displaystyle \rightarrow _{b6}P(F(1,0,F(1,0,F(1,0,F(1,0,F(1,0,{\underline {F(1,0,2)}}))))))}
    ب1P(F(3،0،5)_){\displaystyle \rightarrow _{b1}P({\underline {F(3,0,5)}})}    ب1P(F(1،0،F(1،0،F(1،0،F(1،0،F(1،0،3)_))))){\displaystyle \rightarrow _{b1}P(F(1,0,F(1,0,F(1,0,F(1,0,{\underline {F(1,0,3)}})))))}
    ب7P(F(2،0،F(1،0،5)_)){\displaystyle \rightarrow _{b7}P(F(2,0,{\underline {F(1,0,5)}}))}    ب1P(F(1،0،F(1،0،F(1،0،F(1،0،4)_)))){\displaystyle \rightarrow _{b1}P(F(1,0,F(1,0,F(1,0,{\underline {F(1,0,4)}}))))}
    ب1P(F(2،0،6)_){\displaystyle \rightarrow _{b1}P({\underline {F(2,0,6)}})}    ب1P(F(1،0،F(1،0،F(1،0،5)_))){\displaystyle \rightarrow _{b1}P(F(1,0,F(1,0,{\underline {F(1,0,5)}})))}
    ب7P(F(1،0،F(1،0،6)_)){\displaystyle \rightarrow _{b7}P(F(1,0,{\underline {F(1,0,6)}}))}    ب1P(F(1،0،F(1،0،6)_)){\displaystyle \rightarrow _{b1}P(F(1,0,{\underline {F(1,0,6)}}))}
    ب1P(F(1،0،7)_){\displaystyle \rightarrow _{b1}P({\underline {F(1,0,7)}})}    ب1P(F(1،0،7)_){\displaystyle \rightarrow _{b1}P({\underline {F(1,0,7)}})}
    ب1P(8)_{\displaystyle \rightarrow _{b1}{\underline {P(8)}}}    ب1P(8)_{\displaystyle \rightarrow _{b1}{\underline {P(8)}}}
    ر105{\displaystyle \rightarrow _{r10}5}    ر105{\displaystyle \rightarrow _{r10}5}

المعادلات المتطابقة هي

  • عندما يكون نظام TRS مع قاعدة التخفيضب6{\displaystyle {\text{b6}}}يتم تطبيق ما يلي:

أ(2،1)+3=F(2،4)==F6(0،2)=F(0،F5(0،2))=F(0،F(0،F4(0،2)))=F(0،F(0،F(0،F3(0،2))))=F(0،F(0،F(0،F(0،F2(0،2)))))=F(0،F(0،F(0،F(0،F(0،F(0،2))))))=F(0،F(0،F(0،F(0،F(0،3)))))=F(0،F(0،F(0،F(0،4))))=F(0،F(0،F(0،5)))=F(0،F(0،6))=F(0،7)=8{\displaystyle {\begin{aligned}&A(2,1)+3=F(2,4)=\dots =F^{6}(0,2)=F(0,F^{5}(0,2))=F(0,F(0,F^{4}(0,2)))\\&=F(0,F(0,F(0,F^{3}(0,2))))=F(0,F(0,F(0,F(0,F^{2}(0,2)))))=F(0,F(0,F(0,F(0,F(0,F(0,2))))))\\&=F(0,F(0,F(0,F(0,F(0,3)))))=F(0,F(0,F(0,F(0,4))))=F(0,F(0,F(0,5)))=F(0,F(0,6))=F(0,7)=8\end{aligned}}}

  • عندما يكون نظام TRS مع قاعدة التخفيضب7{\displaystyle {\text{b7}}}يتم تطبيق ما يلي:

أ(2،1)+3=F(2،4)==F6(0،2)=F5(0،F(0،2))=F5(0،3)=F4(0،F(0،3))=F4(0،4)=F3(0،F(0،4))=F3(0،5)=F2(0،F(0،5))=F2(0،6)=F(0،F(0،6))=F(0،7)=8{\displaystyle {\begin{aligned}&A(2,1)+3=F(2,4)=\dots =F^{6}(0,2)=F^{5}(0,F(0,2))=F^{5}(0,3)=F^{4}(0,F(0,3))=F^{4}(0,4)\\&=F^{3}(0,F(0,4))=F^{3}(0,5)=F^{2}(0,F(0,5))=F^{2}(0,6)=F(0,F(0,6))=F(0,7)=8\end{aligned}}}ملاحظات

  • حسابأأنا(ن){\displaystyle \operatorname {A} _{i}(n)}وفقًا للقواعد {b1 - b5, b6, r8 - r10}، فإن التداخل عميق. أقصى عمق للتداخلF{\displaystyle F}s هوأ(أنا،ن)+1{\displaystyle A(i,n)+1}يكمن السبب في ترتيب تنفيذ التكرار:Fن+1(x)=F(Fن(x)){\displaystyle F^{n+1}(x)=F(F^{n}(x))}. الأولF{\displaystyle F}لا يختفي إلا بعد اكتمال التسلسل بأكمله.
  • تُعدّ الحسابات وفقًا للقواعد {b1 - b5, b7, r8 - r10} أكثر كفاءة من هذه الناحية. التكرارFن+1(x)=Fن(F(x)){\displaystyle F^{n+1}(x)=F^{n}(F(x))}يحاكي هذا البرنامج حلقة التكرار على كتلة من التعليمات البرمجية. [ n 7 ] يقتصر التداخل على(أنا+1){\displaystyle (i+1)}مستوى واحد من التكرار لكل دالة متكررة. وقد أظهر ماير وريتشي (1967) هذه العلاقة.
  • تتعلق هذه الاعتبارات بعمق الاستدعاء الذاتي فقط. تؤدي كلتا طريقتي التكرار إلى نفس عدد خطوات الاختزال، وتتضمن نفس القواعد (عندما تُعتبر القاعدتان b6 و b7 "متماثلتين"). اختزالأ(2،1){\displaystyle A(2,1)}على سبيل المثال، يتقارب في 35 خطوة: 12 × b1، 4 × b2، 1 × b3، 4 × b5، 12 × b6/b7، 1 × r9، 1 × r10. يؤثر modus iterandi فقط على ترتيب تطبيق قواعد الاختزال.
  • لا يمكن تحقيق مكسب حقيقي في وقت التنفيذ إلا بتجنب إعادة حساب النتائج الفرعية مرارًا وتكرارًا. التخزين المؤقت هو أسلوب تحسين يتم فيه تخزين نتائج استدعاءات الدوال مؤقتًا وإعادتها عند تكرار نفس المدخلات. انظر على سبيل المثال Ward (1993) . نشر Grossman & Zeitman (1988) خوارزمية ذكية لحسابأ(أنا،ن){\displaystyle A(i,n)}داخليا(أناأ(أنا،ن)){\displaystyle {\mathcal {O}}(iA(i,n))}في الوقت وخلاليا(أنا){\displaystyle {\mathcal {O}}(i)}فضاء.

أعداد هائلة

لتوضيح كيفية حسابأ(4،3){\displaystyle A(4,3)}ينتج عنه العديد من الخطوات وعدد كبير: [ n 5 ]

أ(4،3)أ(3،أ(4،2))أ(3،أ(3،أ(4،1)))أ(3،أ(3،أ(3،أ(4،0))))أ(3،أ(3،أ(3،أ(3،1))))أ(3،أ(3،أ(3،أ(2،أ(3،0)))))أ(3،أ(3،أ(3،أ(2،أ(2،1)))))أ(3،أ(3،أ(3،أ(2،أ(1،أ(2،0))))))أ(3،أ(3،أ(3،أ(2،أ(1،أ(1،1))))))أ(3،أ(3،أ(3،أ(2،أ(1،أ(0،أ(1،0)))))))أ(3،أ(3،أ(3،أ(2،أ(1،أ(0،أ(0،1)))))))أ(3،أ(3،أ(3،أ(2،أ(1،أ(0،2))))))أ(3،أ(3،أ(3،أ(2،أ(1،3)))))أ(3،أ(3،أ(3،أ(2،أ(0،أ(1،2))))))أ(3،أ(3،أ(3،أ(2،أ(0،أ(0،أ(1،1)))))))أ(3،أ(3،أ(3،أ(2،أ(0،أ(0،أ(0،أ(1،0))))))))أ(3،أ(3،أ(3،أ(2،أ(0،أ(0،أ(0،أ(0،1))))))))أ(3،أ(3،أ(3،أ(2،أ(0،أ(0،أ(0،2)))))))أ(3،أ(3،أ(3،أ(2،أ(0،أ(0،3))))))أ(3،أ(3،أ(3،أ(2،أ(0،4)))))أ(3،أ(3،أ(3،أ(2،5))))أ(3،أ(3،أ(3،13)))أ(3،أ(3،65533))أ(3،265536-3)2265536-3.{\displaystyle {\begin{aligned}A(4,3)&\rightarrow A(3,A(4,2))\\&\rightarrow A(3,A(3,A(4,1)))\\&\rightarrow A(3,A(3,A(3,A(4,0))))\\&\rightarrow A(3,A(3,A(3,A(3,1))))\\&\rightarrow A(3,A(3,A(3,A(2,A(3,0)))))\\&\rightarrow A(3,A(3,A(3,A(2,A(2,1)))))\\&\rightarrow A(3,A(3,A(3,A(2,A(1,A(2,0))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(1,A(1,1))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(1,A(0,A(1,0)))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(1,A(0,A(0,1)))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(1,A(0,2))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(1,3)))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,A(1,2))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,A(0,A(1,1)))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,A(0,A(0,A(1,0))))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,A(0,A(0,A(0,1))))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,A(0,A(0,2)))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,A(0,3))))))\\&\rightarrow A(3,A(3,A(3,A(2,A(0,4)))))\\&\rightarrow A(3,A(3,A(3,A(2,5))))\\&\qquad \vdots \\&\rightarrow A(3,A(3,A(3,13)))\\&\qquad \vdots \\&\rightarrow A(3,A(3,65533))\\&\qquad \vdots \\&\rightarrow A(3,2^{65536}-3)\\&\qquad \vdots \\&\rightarrow 2^{2^{65536}}-3.\\\end{aligned}}}

جدول القيم

يمكن إعادة صياغة حساب دالة أكرمان باستخدام جدول لانهائي. أولًا، ضع الأعداد الطبيعية على طول الصف العلوي. لتحديد عدد في الجدول، خذ العدد الموجود مباشرةً على يساره. ثم استخدم هذا العدد للبحث عن العدد المطلوب في العمود الذي يحمل هذا العدد والصف الذي يليه. إذا لم يكن هناك عدد على يساره، فانظر ببساطة إلى العمود الذي يحمل الرقم "1" في الصف السابق. إليك جزء صغير من أعلى يسار الجدول:

قيم A ( m , n ) 
ن
م
01234ن
012345ن+1{\displaystyle n+1}
123456ن+2=2+(ن+3)-3{\displaystyle n+2=2+(n+3)-3}
23579112ن+3=2(ن+3)-3{\displaystyle 2n+3=2\cdot (n+3)-3}
351329611252(ن+3)-3{\displaystyle 2^{(n+3)}-3}
413655332 65536  32265536-3{\displaystyle {2^{2^{65536}}}-3}22265536-3{\displaystyle {2^{2^{2^{65536}}}}-3}222ن+3-3{\displaystyle {\begin{matrix}\underbrace {{2^{2}}^{{\cdot }^{{\cdot }^{{\cdot }^{2}}}}} _{n+3}-3\end{matrix}}}
=2↑ ↑5-3{\displaystyle =2\uparrow \uparrow 5-3}2.003531019728{\displaystyle \approx 2.00353\cdot {10^{19728}}}=2↑ ↑6-3{\displaystyle =2\uparrow \uparrow 6-3}=2↑ ↑7-3{\displaystyle =2\uparrow \uparrow 7-3}
=2↑ ↑(ن+3)-3{\displaystyle =2\uparrow \uparrow (n+3)-3}
5655332↑ ↑65536-3{\displaystyle 2\uparrow \uparrow 65536-3}2↑ ↑ ↑5-3{\displaystyle 2\uparrow \uparrow \uparrow 5-3}2↑ ↑ ↑6-3{\displaystyle 2\uparrow \uparrow \uparrow 6-3}2↑ ↑ ↑7-3{\displaystyle 2\uparrow \uparrow \uparrow 7-3}2↑ ↑ ↑(ن+3)-3{\displaystyle 2\uparrow \uparrow \uparrow (n+3)-3}
62↑ ↑65536-3{\displaystyle 2\uparrow \uparrow 65536-3}2↑ ↑ ↑ ↑4-3{\displaystyle 2\uparrow \uparrow \uparrow \uparrow 4-3}2↑ ↑ ↑ ↑5-3{\displaystyle 2\uparrow \uparrow \uparrow \uparrow 5-3}2↑ ↑ ↑ ↑6-3{\displaystyle 2\uparrow \uparrow \uparrow \uparrow 6-3}2↑ ↑ ↑ ↑7-3{\displaystyle 2\uparrow \uparrow \uparrow \uparrow 7-3}2↑ ↑ ↑ ↑(ن+3)-3{\displaystyle 2\uparrow \uparrow \uparrow \uparrow (n+3)-3}
م(2م-23)-3{\displaystyle (2\uparrow ^{m-2}3)-3}(2م-24)-3{\displaystyle (2\uparrow ^{m-2}4)-3}(2م-25)-3{\displaystyle (2\uparrow ^{m-2}5)-3}(2م-26)-3{\displaystyle (2\uparrow ^{m-2}6)-3}(2م-27)-3{\displaystyle (2\uparrow ^{m-2}7)-3}(2م-2(ن+3))-3{\displaystyle (2\uparrow ^{m-2}(n+3))-3}

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

على الرغم من القيم الكبيرة الواردة في هذا الجزء المبكر من الجدول، فقد تم تعريف بعض الأعداد الأكبر، مثل عدد غراهام ، الذي لا يمكن كتابته باستخدام عدد قليل من أسهم كنوت. يُبنى هذا العدد بتقنية مشابهة لتطبيق دالة أكرمان على نفسها بشكل متكرر.

هذا تكرار للجدول أعلاه، ولكن مع استبدال القيم بالتعبير ذي الصلة من تعريف الدالة لإظهار النمط بوضوح:

قيم A ( m , n ) 
ن
م
01234ن
00+11+12+13+14+1ن + 1
1أ (0، 1)A (0, A (1, 0)) = A (0, 2)A (0, A (1, 1)) = A (0, 3)A (0, A (1, 2)) = A (0, 4)A (0, A (1, 3)) = A (0, 5)A (0, A (1, n −1))
2أ (1، 1)A (1, A (2, 0)) = A (1, 3)A (1, A (2, 1)) = A (1, 5)A (1, A (2, 2)) = A (1, 7)A (1, A (2, 3)) = A (1, 9)A (1, A (2, n −1))
3أ (2، 1)A (2, A (3, 0)) = A (2, 5)A (2, A (3, 1)) = A (2, 13)A (2, A (3, 2)) = A (2, 29)A (2, A (3, 3)) = A (2, 61)A (2, A (3, n −1))
4أ (3، 1)A (3, A (4, 0)) = A (3, 13)A (3, A (4, 1)) = A (3, 65533)A (3, A (4, 2))A (3, A (4, 3))A (3, A (4, n −1))
5أ (4، 1)A (4, A (5, 0))A (4, A (5, 1))A (4, A (5, 2))A (4, A (5, 3))A (4, A (5, n −1))
6أ (5، 1)A (5, A (6, 0))A (5, A (6, 1))A (5, A (6, 2))A (5, A (6, 3))A (5, A (6, n −1))

ملكيات

ملاحظات عامة

  • قد لا يكون من الواضح على الفور أن تقييمأ(م،ن){\displaystyle A(m,n)}تنتهي العملية دائمًا. ومع ذلك، فإن الاستدعاء الذاتي محدود لأنه في كل تطبيق استدعاء ذاتي إمام{\displaystyle m}يتناقص، أوم{\displaystyle m}يبقى كما هو ون{\displaystyle n}يتناقص. في كل مرة يحدث ذلكن{\displaystyle n}يصل إلى الصفر،م{\displaystyle m}يتناقص، لذلكم{\displaystyle m}يصل في النهاية إلى الصفر أيضًا. (بتعبير أدق، في كل حالة الزوج(م،ن){\displaystyle (m,n)}يتناقص الترتيب المعجمي على الأزواج، وهو ترتيب جيد ، تمامًا مثل ترتيب الأعداد الصحيحة غير السالبة المفردة؛ وهذا يعني أنه لا يمكن النزول في الترتيب عددًا لا نهائيًا من المرات المتتالية. ومع ذلك، عندمام{\displaystyle m}لا يوجد حد أقصى لمقدار الانخفاضن{\displaystyle n}يمكن أن يزداد - وغالباً ما سيزداد بشكل كبير.
  • بالنسبة للقيم الصغيرة لـ m مثل 1 أو 2 أو 3، تنمو دالة أكرمان ببطء نسبيًا بالنسبة لـ n ( بشكل أسي على الأكثر ).م4{\displaystyle m\geq 4}إلا أنها تنمو بسرعة أكبر بكثير؛ حتىأ(4،2){\displaystyle A(4,2)}يساوي حوالي 2.00353 × 1019728 ، والتوسع العشري لـأ(4،3){\displaystyle A(4,3)}وهو كبير جدًا بأي مقياس نموذجي، حوالي 2.12004 × 10 6.03123 × 1019727 .
  • من الجوانب المثيرة للاهتمام أن العملية الحسابية الوحيدة التي يستخدمها هي جمع 1. وتعتمد قدرته المتنامية بسرعة على الاستدعاء الذاتي المتداخل فقط. وهذا يعني أيضاً أن وقت تشغيله يتناسب على الأقل مع ناتجه، وبالتالي فهو ضخم للغاية. في الواقع، في معظم الحالات يكون وقت التشغيل أكبر بكثير من الناتج؛ انظر أعلاه.
  • نسخة ذات وسيط واحدو(ن)=أ(ن،ن){\displaystyle f(n)=A(n,n)}وهذا يزيد من كليهمام{\displaystyle m}ون{\displaystyle n}في الوقت نفسه، يتفوق هذا على كل دالة تكرارية بدائية، بما في ذلك الدوال سريعة النمو للغاية مثل الدالة الأسية ، ودالة المضروب، ودوال المضروب المتعدد والمضروب الفائق ، وحتى الدوال المعرفة باستخدام تدوين سهم كنوت الصاعد (باستثناء استخدام السهم الصاعد المفهرس). ويمكن ملاحظة ذلك.و(ن){\displaystyle f(n)}وهو ما يعادل تقريبًاوω(ن){\displaystyle f_{\omega }(n)}في التسلسل الهرمي سريع النمو . يمكن استغلال هذا النمو الهائل لإظهار أنو{\displaystyle f}، والتي من الواضح أنها قابلة للحساب على جهاز ذي ذاكرة لا نهائية مثل آلة تورينج وبالتالي فهي دالة قابلة للحساب ، تنمو بشكل أسرع من أي دالة تكرارية بدائية وبالتالي فهي ليست تكرارية بدائية.

ليس بدائيًا تكراريًا

تنمو دالة أكرمان بشكل أسرع من أي دالة تكرارية بدائية ، وبالتالي فهي ليست دالة تكرارية بدائية بحد ذاتها.

رسم توضيحي :

تُبنى الدوال التكرارية الأولية من الدوال الأساسية باستخدام التركيب والتكرار الأولي، وتنمو جميعها ضمن معدل معين. نُعرّف، بشكل بنائي، تسلسلًا هرميًا للدوال الكلية.FGHك(ن){\displaystyle \operatorname {FGH} _{k}(n)}بواسطة:

FGH0(ن)=ن+1،FGHك+1(ن)=FGHكن(ن){\displaystyle \operatorname {FGH} _{0}(n)=n+1,\quad \operatorname {FGH} _{k+1}(n)=\operatorname {FGH} _{k}^{n}(n)}

أينFGHكن{\displaystyle \operatorname {FGH} _{k}^{n}}يشيرن{\displaystyle n}تكرار ذو -طFGHك{\displaystyle \operatorname {FGH} _{k}}عند الإدخالن{\displaystyle n}[ 23 ] ينمو هذا التسلسل الهرمي بشكل أسرع مع ازديادك{\displaystyle k}وكل دالة تكرارية أولية تكون محدودة في النهاية من الأعلى بواسطة شيء ماFGHك{\displaystyle \operatorname {FGH} _{k}}ويمكن إثبات ذلك عن طريق الاستقراء البنيوي . على تعريفات الدوال التكرارية الأولية.

ومع ذلك، فإن دالة أكرمانأ(م،ن){\displaystyle \operatorname {A} (m,n)}وفي النهاية يتجاوز كلFGHك{\displaystyle \operatorname {FGH} _{k}}لكلك{\displaystyle k}، يوجدم{\displaystyle m}بحيثأ(م،ن)>FGHك(ن){\displaystyle \operatorname {A} (m,n)>\operatorname {FGH} _{k}(n)}لجميع الأحجام الكبيرة بما فيه الكفايةن{\displaystyle n}. هكذا،أ{\displaystyle \operatorname {A} }ينمو بشكل أسرع من أي دالة تكرارية بدائية، وبالتالي فهو ليس دالة تكرارية بدائية.

معكوس

بما أن الدالة f ( n ) = A ( n , n ) المذكورة أعلاه تنمو بسرعة كبيرة، فإن دالتها العكسية f⁻¹ تنمو ببطء شديد. يُرمز عادةً إلى دالة أكرمان العكسية f⁻¹ بالرمز α . في الواقع، α ( n ) أقل من 5 لأي حجم إدخال عملي n ، لأن A (4, 4) من رتبة 5 .222216{\displaystyle 2^{2^{2^{2^{16}}}}}.

يظهر هذا العكس في التعقيد الزمني لبعض الخوارزميات، مثل بنية بيانات المجموعة المنفصلة وخوارزمية شازيل للأشجار الممتدة الدنيا . أحيانًا تُستخدم دالة أكرمان الأصلية أو صيغ أخرى منها في هذه الحالات، لكنها جميعًا تنمو بمعدلات عالية مماثلة. على وجه الخصوص، تُبسط بعض الدوال المُعدلة التعبير بحذف الحد -3 وما شابهه.

يمكن تعريف صيغة متغيرة ذات معلَمين لدالة أكرمان العكسية على النحو التالي، حيثx{\displaystyle \lfloor x\rfloor }هل دالة الأرضية هي :

α(م،ن)=مين{أنا1:أ(أنا،م/ن)سجل2ن}.{\displaystyle \alpha (m,n)=\min\{i\geq 1:A(i,\lfloor m/n\rfloor )\geq \log _{2}n\}.}

تظهر هذه الدالة في تحليلات أكثر دقة للخوارزميات المذكورة أعلاه، وتُعطي حدًا زمنيًا أدق. في بنية بيانات المجموعة المنفصلة، ​​يُمثل m عدد العمليات بينما يُمثل n عدد العناصر؛ وفي خوارزمية الشجرة الممتدة الدنيا، يُمثل m عدد الحواف بينما يُمثل n عدد الرؤوس. توجد عدة تعريفات مختلفة قليلاً لـ α ( m , n ) ؛ على سبيل المثال، يُستبدل log₂n أحيانًا بـ n ، وتُستبدل دالة الجزء الصحيح أحيانًا بدالة الجزء الصحيح . .

قد تُعرّف دراسات أخرى دالة عكسية للواحد حيث يتم تعيين m على قيمة ثابتة، بحيث ينطبق العكس على صف معين. [ 24 ]

إن معكوس دالة أكرمان هو دالة بدائية تكرارية، لأنه دالة بدائية تكرارية في الرسم البياني، وهو محدود من الأعلى بدالة بدائية تكرارية. [ 25 ]

الاستخدام

في التعقيد الحسابي

تظهر دالة أكرمان في التعقيد الزمني لبعض الخوارزميات ، [ 26 ] مثل أنظمة جمع المتجهات [ 27 ] وإمكانية الوصول لشبكة بيتري ، مما يدل على أنها غير مجدية حسابيًا للحالات الكبيرة. [ 28 ]

يظهر معكوس دالة أكرمان في بعض نتائج تعقيد الوقت. على سبيل المثال، تستغرق بنية بيانات المجموعة المنفصلة وقتًا مستهلكًا لكل عملية يتناسب مع معكوس دالة أكرمان، [ 29 ] ولا يمكن تسريعها ضمن نموذج مسبار الخلية لتعقيد الحساب. [ 30 ]

في الهندسة المنفصلة

توجد حدود تعقيد لبعض المسائل في الهندسة المتقطعة المتعلقة بمتتاليات دافنبورت-شينزل، حيث تكون دالة أكرمان العكسيةα(ن){\displaystyle \alpha (n)}يظهر. على سبيل المثال، لـن{\displaystyle n}القطع المستقيمة في المستوى، والوجه غير المحدود لترتيب القطع يتميز بالتعقيديا(نα(ن)){\displaystyle O(n\alpha (n))}وبعض أنظمةن{\displaystyle n}تتمتع القطع المستقيمة بمستوى تعقيد لا حدود لهΩ(نα(ن)){\displaystyle \Omega (n\alpha (n))}[ 31 ]

كمعيار

تُعدّ دالة أكرمان، نظرًا لتعريفها القائم على الاستدعاء الذاتي العميق للغاية، معيارًا لقياس قدرة المُصرّف على تحسين الاستدعاء الذاتي. وقد نُشر أول استخدام لدالة أكرمان بهذه الطريقة عام 1970 بواسطة دراغوش فايدا [ 32 ] ، وفي الوقت نفسه تقريبًا، عام 1971، بواسطة ينجفي سوندبلاد [ 14 ] .

تم تناول ورقة سوندبلاد الرائدة من قبل برايان ويشمان (المؤلف المشارك لمعيار ويتستون ) في ثلاثية من الأوراق التي كتبت بين عامي 1975 و 1982. [ 33 ] [ 34 ] [ 35 ]

انظر أيضاً

ملحوظات

  1. مع عكس ترتيب المعلمات
  2. ' كاري '
  3. في كل خطوة، تتم إعادة كتابة النص الذي تحته خط.
  4. 1 2 هنا: استراتيجية من اليسار إلى الداخل!
  5. 1 2 3 4 لتحسين سهولة القراءة، يُرمز إلى S(0) بالرقم 1،ويُرمز إلى S(S(0)) بالرقم 2،ويُرمز إلى S(S(S(0))) بالرقم 3،وهكذا...
  6. يشير أقصى عمق للتكرار إلى عدد مستويات تفعيل الإجراء الموجودة خلال أعمق استدعاء له. كورنيليوس وكيربي (1975)
  7. كرر n+1 مرة كرر F

مراجع

  1. ^ مونين وهينشي 2003 ، ص. 61.
  2. 1 2 أكرمان 1928 .
  3. "التوسيع العشري للعدد A(4,2)" . kosara.net . 27 أغسطس 2000. مؤرشف من الأصل في 20 يناير 2010.
  4. كالود، ماركوس وتيفي 1979 .
  5. هيلبرت 1926 ، ص 185.
  6. فان هيجينورت 1977 .
  7. بيتر 1935 .
  8. روبنسون 1948 .
  9. ريتشي 1965 ، ص 1028.
  10. 1 2 3 باك 1963 .
  11. ^ ميوسن وزانتيما 1992 ، ص. 6.
  12. مونافو 1999أ .
  13. ريتشي 1965 .
  14. 1 2 Sundblad 1971 .
  15. بورتو وماتوس 1980 .
  16. أوديفردي 1999 ، ص 298.
  17. "التسلسل الهرمي لأكرمان مقابل التسلسل الهرمي سريع النمو" . StackExchange .
  18. المسافة البادئة وفقًا لقاعدة التجاوز ( INDENT ... DEDENT )، كما هو الحال في بايثون :
    for _ in range ( n ): n += 1
  19. ماير وريتشي 1967 .
  20. غروسمان وزيتمان 1988 .
  21. بولسون 2021 .
  22. كوهين 1987 ، ص 56، الاقتراح 3.16 (انظر في البرهان).
  23. سلسلة أخرى من الدوال،هـن{\displaystyle \operatorname {E} _{n}}يُستخدم تعريف التسلسل الهرمي لغريغورتشيك بشكل متكرر لتقسيم الدوال التكرارية الأولية إلى "فئات نمو". ومع ذلك،FGHن{\displaystyle \operatorname {FGH} _{n}}(أوأن{\displaystyle \operatorname {A} _{n}}) وهـن{\displaystyle \operatorname {E} _{n}}لا تتوافق في فهرسة البيانات الخاصة بها.
  24. بيتي 2002 .
  25. ماتوس 2014 .
  26. بروبيكر 2023 .
  27. ^ تشيروينسكي وأورليكوفسكي 2022 .
  28. ليرو 2022 .
  29. تارجان 1975 .
  30. فريدمان وساكس 1989 .
  31. ويرنيك وشارير 1988 .
  32. فايدا 1970 .
  33. ويشمان 1976 .
  34. ويشمان 1977 .
  35. ويشمان 1982 .

فهرس