آلة البيع

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

تستطيع آلات العدّ المزودة بثلاثة عدادات حساب أي دالة تكرارية جزئية لمتغير واحد. أما آلات العدّ المزودة بعدادين فهي كاملة تورينج : إذ يمكنها محاكاة أي آلة تورينج مشفرة بشكل مناسب. بينما تستطيع آلات العدّ المزودة بعداد واحد فقط التعرف على مجموعة شاملة مناسبة من اللغات المنتظمة ومجموعة جزئية من اللغات الحتمية الخالية من السياق . [ 1 ]

الميزات الأساسية

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

  • CLR (r): مسح السجل r . (ضبط قيمة r إلى الصفر.)
  • INC (r): زيادة محتويات السجل r .
  • DEC (r): قم بإنقاص محتويات السجل r .
  • CPY (r j , rk ) : نسخ محتويات السجل r j إلى السجل r k مع ترك محتويات r j سليمة.
  • JZ (r, z): إذا كان السجل r يحتوي على صفر، فانتقل إلى التعليمات وإلا فاستمر في التسلسل.
  • JE (r j , rk , z): IF the contents of register r j Equals the contents of register r k THEN Jump to instruction z ELSE continue in sequence.

بالإضافة إلى ذلك، تحتوي الآلة عادةً على تعليمات HALT، والتي توقف الآلة (عادةً بعد حساب النتيجة).

باستخدام التعليمات المذكورة أعلاه، ناقش العديد من المؤلفين آلات عدّ معينة:

  • المجموعة 1: { INC (r), DEC (r), JZ (r, z) }, (Minsky (1961, 1967), Lambek (1961))
  • المجموعة 2: { CLR (r), INC (r), JE (r j , r k , z) }, (Ershov (1958), Peter (1958) كما فسرها Shepherdson–Sturgis (1964); Minsky (1967); Schönhage (1980))
  • المجموعة 3: { INC (r)، CPY (r j , r k )، JE (r j , r k , z) }، (Elgot–Robinson (1964)، Minsky (1967))

تتمتع النماذج الأساسية الثلاثة لآلات العدّ بنفس القدرة الحسابية، إذ يمكن اشتقاق تعليمات أي نموذج من تعليمات نموذج آخر. جميعها تُعادل القدرة الحسابية لآلات تورينج . ونظرًا لأسلوب معالجتها الأحادي، فإن آلات العدّ عادةً ما تكون أبطأ بشكل كبير من آلات تورينج المماثلة.

أسماء بديلة، نماذج بديلة

تُعرف نماذج آلات العد بأسماء مختلفة قد تساعد في تمييزها بناءً على خصائصها. فيما يلي، تُعدّ التعليمة "JZDEC ( r )" تعليمة مركبة تختبر ما إذا كان المسجل r فارغًا؛ إذا كان كذلك، فانتقل إلى التعليمة I z ، وإلا فقم بإنقاص محتويات r.

  • آلة مينسكي ، نسبةً إلى مارفن مينسكي (1961) الذي وضع النموذج بشكل رسمي. آلة المعداد ، وهو الاسم الذي أطلقه لامبيك (1961) على تبسيطه لنموذج ميلزاك (1961)، وهو الاسم الذي أطلقه عليه بولوس-بورغيس-جيفري (1974). آلة لامبيك ، وهو اسم بديل أطلقه بولوس-بورغيس-جيفري (1974) على آلة المعداد. عادةً ما تستخدم مجموعة التعليمات (1)، ولكن تنفيذ التعليمات ليس تسلسليًا افتراضيًا، لذا يظهر المعامل الإضافي 'z' لتحديد التعليمات التالية بعد INC، وكبديل في JZDEC.
    { INC ( r, z ), JZDEC ( r, z true , z false ) }
  • آلة البرمجة ، حاسوب البرمجة ، هي الأسماء التي أطلقها مينسكي (1967) على هذا النموذج لأنه، مثل الحاسوب ، تُنفذ تعليماته بالتسلسل ما لم تنجح قفزة شرطية. يستخدم (عادةً) مجموعة التعليمات (1)، ولكن يمكن توسيعه على غرار نموذج شيفيرسون-ستورجيس. غالبًا ما يتم تقسيم JZDEC إلى أجزاء.
    { INC ( r ), CPY ( r s , r d ), JZ ( r, z true )}
  • آلة الخلف ، لأنها تستخدم "عملية الخلف" الخاصة ببديهيات بيانو ، وتشبهها إلى حد كبير . تُستخدم كأساس لنموذج ذاكرة الوصول العشوائي للخلف . تستخدم مجموعة التعليمات (2) التي وضعها شونهاج، على سبيل المثال، كأساس لنموذجي RAM0 وRAM1 اللذين يؤديان إلى نموذج آلة المؤشر SMM الخاص به ، [ 2 ] [ 3 ] والذي ناقشه فان إمده بواس بإيجاز أيضًا: [ 4 ] [ 5 ]
    { CLR ( r )، INC ( r )، JE ( r j , r k , z ) }
  • نموذج إلجوت-روبنسون ، المستخدم لتعريف نموذج RASP الخاص بهم (1964). يتطلب هذا النموذج سجلًا فارغًا واحدًا في البداية (مثلًا [r0] = 0). (قاموا بتطوير النموذج نفسه باستخدام العنونة غير المباشرة من خلال استخدام سجل إضافي يُستخدم كسجل "فهرسة").
    { INC (r), CPY ( r s , r d ), JE ( r j , r k , z ) }
  • آلة شيبردسون-ستورجيس ، لأن هؤلاء المؤلفين قد أوضحوا نموذجهم رسميًا في شرح مبسط (1963). تستخدم مجموعة التعليمات (1) معززة بتعليمات إضافية ملائمة (JNZ تعني "القفز إذا لم يكن صفرًا"، وتُستخدم بدلًا من JZ):
    { INC ( r ), DEC ( r ), CLR ( r ), CPY ( r j , rk ), JNZ ( r, z ), J ( z ) }
  • آلات عدّ أخرى : يُبيّن مينسكي (1967) كيفية بناء النماذج الأساسية الثلاثة (البرنامج/مينسكي/معداد لامبيك، والنموذج اللاحق، وإلغوت-روبنسون) من مجموعة التعليمات المتاحة الموضحة في الفقرة الافتتاحية لهذه المقالة. يختلف نموذج ميلزاك (1961) اختلافًا كبيرًا عن النموذج السابق، إذ يتضمن عمليتي "الجمع" و"الطرح" بدلًا من "الزيادة" و"الإنقاص". تتطلب براهين مينسكي (1961، 1967) التي تُثبت أن سجلًا واحدًا يكفي لإثبات تكافؤ تورينج، استخدام التعليمتين {MULtiply k, وDIV k} لترميز وفك ترميز عدد غودل في السجل الذي يُمثل العملية الحسابية. يُوضح مينسكي أنه في حال توفر سجلين أو أكثر، فإن التعليمات الأبسط مثل INC وDEC كافية (لكن لا يزال عدد غودل مطلوبًا لإثبات تكافؤ تورينج ؛ وقد تم إثبات ذلك أيضًا في إلغوت-روبنسون 1964).

التعريف الرسمي

تتكون آلة العد من:

  1. سجلات ذات قيم عددية صحيحة غير محدودة ومُصنّفة : هي مجموعة محدودة (أو غير محدودة في بعض النماذج) من السجلات r₀ ... rₙ ، حيث يمكن لكل سجل منها أن يحتوي على أي عدد صحيح غير سالب (0، 1، 2، ... - أي غير محدود). تُجري هذه السجلات عملياتها الحسابية الخاصة؛ وقد تحتوي على سجل خاص واحد أو أكثر، مثل "المُجمِّع" (انظر آلة الوصول العشوائي لمزيد من المعلومات حول هذا الموضوع).  
  2. سجل حالة يُخزّن/يُحدّد التعليمات الحالية المراد تنفيذها. هذا السجل محدود ومنفصل عن السجلات المذكورة أعلاه؛ لذا يُعدّ نموذج آلة العدّ مثالًا على بنية هارفارد.
  3. قائمة التعليمات المتسلسلة والمُعَلَّمة : قائمة محدودة من التعليمات I 0  ... I m . لا يقع مخزن البرنامج (تعليمات آلة الحالة المحدودة ) في نفس "الحيز" المادي للمسجلات. عادةً، ولكن ليس دائمًا، كما هو الحال في برامج الحاسوب، تُدرج التعليمات بترتيب تسلسلي؛ ما لم تنجح عملية القفز، يستمر التسلسل الافتراضي بالترتيب العددي. كل تعليمة في القائمة تنتمي إلى مجموعة صغيرة جدًا، ولكن هذه المجموعة لا تشمل التعليمات غير المباشرة. تاريخيًا، استمدت معظم النماذج تعليماتها من هذه المجموعة. 
{ زيادة (r)، إنقاص (r)، مسح (r)؛ نسخ (r j ، r k )، قفزة مشروطة إذا كانت محتويات r=0، قفزة مشروطة إذا كانت r j = r k ، قفزة غير مشروطة، إيقاف }
قامت بعض النماذج إما بتجزئة بعض ما سبق إلى تعليمات بدون معلمات، أو دمجها في تعليمة واحدة مثل "Decrement" مسبوقة بـ "JZ ( r, z )" (قفزة شرطية إذا كانت القيمة صفرًا). لا تُحدث تجزئة التعليمات أو تضمين تعليمات مُيسّرة أي تغيير في القوة المفاهيمية، حيث يمكن ترجمة أي برنامج من أحد النماذج إلى النموذج الآخر بسهولة.
تتم مناقشة مجموعات التعليمات البديلة في الملحق الخاص بنماذج آلة التسجيل .

مثال: انسخ العدد من السجل رقم 2 إلى السجل رقم 3

يوضح هذا المثال كيفية إنشاء ثلاث تعليمات مفيدة أخرى: clear و unconditional jump و copy .

بعد ذلك، سيحتوي r s على عدده الأصلي (على عكس MOVE الذي يفرغ سجل المصدر، أي يمسحه إلى الصفر).

تُستخدم المجموعة الأساسية (1) كما هو مُعرّف هنا:

تعليماتالتأثير على السجل "j"التأثير على سجل عداد التعليمات ICRملخص
INC ( j )[j] +1 → j[IC] +1 → ICقم بزيادة محتويات المسجل j؛ التعليمات التالية
DEC ( j )[j] -1 → j[IC] +1 → ICقم بإنقاص محتويات المسجل j؛ التعليمات التالية
JZ ( j, z)إذا كان [j] = 0 فإن I z → IC، وإلا فإن [IC] + 1 → ICإذا كانت محتويات السجل j تساوي 0، فاستخدم التعليمة z، وإلا فاستخدم التعليمة التالية.
وقف

الشروط الأولية

في البداية، يحتوي السجل رقم ٢ على القيمة "٢". أما السجلات رقم ٠ و١ و٣ فهي فارغة (تحتوي على القيمة "٠"). يبقى السجل رقم ٠ دون تغيير طوال العمليات الحسابية لأنه يُستخدم للقفز غير المشروط. السجل رقم ١ هو سجل مؤقت. يبدأ البرنامج بالتعليمات رقم ١.

الشروط النهائية

يتوقف البرنامج مع وجود محتويات السجل رقم 2 عند قيمتها الأصلية ومحتويات السجل رقم 3 مساوية للمحتويات الأصلية للسجل رقم 2، أي

[2] = [3].

وصف البرنامج على مستوى عالٍ

يتكون البرنامج COPY (#2, #3) من جزأين. في الجزء الأول، ينقل البرنامج محتويات سجل المصدر #2 إلى كل من سجل التخزين المؤقت #1 وسجل الوجهة #3؛ وبالتالي، سيكون #1 و#3 نسختين متطابقتين، بالإضافة إلى نسخة من القيمة الأصلية في #2، ولكن يتم مسح #2 أثناء عملية إنقاصه إلى الصفر. تتم عمليات القفز غير المشروط J(z) عن طريق اختبار السجل #0، الذي يحتوي دائمًا على الرقم 0.

[#2] →#3; [#2] →#1; 0 →#2

في الجزء الثاني، يقوم البرنامج بنقل (إرجاع، استعادة) محتويات لوحة العمل المؤقتة رقم 1 إلى رقم 2، مع مسح لوحة العمل المؤقتة رقم 1 في هذه العملية:

[#1] →#2; 0 →#1

برنامج

يظهر البرنامج، المظلل باللون الأصفر، مكتوباً من اليسار إلى اليمين في الزاوية العلوية اليمنى.

يُعرض أدناه تشغيل البرنامج. يمر الوقت لأسفل الصفحة. التعليمات باللون الأصفر، والسجلات باللون الأزرق. تم قلب البرنامج 90 درجة، مع وجود أرقام التعليمات (العناوين) في الأعلى، ورموز التعليمات أسفل العناوين، ومعاملات التعليمات أسفل الرموز (معامل واحد لكل خلية).

12345678910← رقم التعليمات (العنوان)
جيه زدديسمبرشركةشركةجيه زدجيه زدديسمبرشركةجيه زدح← التعليمات
223101120← رقم التسجيل
61106← الانتقال إلى رقم التعليمات
خطوةICمعهدregJ-addrreg0reg1reg2reg3reg4IC
يبدأ002001انقل [#2] إلى #1 و #3:
11جيه زد26002001→2جيه زدفشل القفز: يحتوي السجل T2 على 2
22ديسمبر20002→1002→3ديسمبرسجل التخفيض رقم 2 من 2 إلى 1
33شركة300010→103→4شركةقم بزيادة قيمة السجل رقم 3 من 0 إلى 1
44شركة1000→11104→5شركةقم بزيادة قيمة السجل رقم 1 من 0 إلى 1
55جيه زد01011105→1جيه زدقفزة يو: السجل رقم 0 فارغ
61جيه زد26011101→2جيه زدفشل القفز: يحتوي السجل رقم 2 على 1
72ديسمبر20011→0102→3ديسمبرقم بإنقاص السجل رقم 2 من 1 إلى 0
83شركة300101→203→4شركةقم بزيادة قيمة السجل رقم 3 من 1 إلى 2
94شركة1001→20204→5شركةقم بزيادة قيمة السجل رقم 1 من 1 إلى 2
105جيه زد01020205→1جيه زدقفزة يو: السجل رقم 0 فارغ
111جيه زد26020201→6جيه زدقفزة  !: السجل رقم 2 فارغ
انتقل [1] إلى 2:
126جيه زد110020206→7جيه زدفشل القفز: يحتوي السجل رقم 1 على 2
137ديسمبر1002→10207→8ديسمبرسجل التخفيض رقم 1 من 2 إلى 1
148شركة20010→1208→9شركةقم بزيادة قيمة المسجل رقم 2 من 0 إلى 1
159جيه زد06011209→6جيه زدقفزة يو: السجل رقم 0 فارغ
166جيه زد110011206→7جيه زدفشل القفز: يحتوي السجل رقم 1 على 1
177ديسمبر1001→01207→8ديسمبرقم بإنقاص قيمة السجل رقم 1 من 1 إلى 0
188شركة20001→2208→9شركةقم بزيادة قيمة السجل رقم 2 من 1 إلى 2
199جيه زد06002209→6جيه زدقفزة يو: السجل رقم 0 فارغ
206جيه زد110002206→10جيه زدقفزة  !: السجل رقم 1 فارغ
2110ح000022010→10حوقف

الدوال التكرارية الجزئية: بناء "تعليمات ملائمة" باستخدام التكرار

يوضح المثال أعلاه كيف يمكن للتعليمات الأساسية الأولى { INC, DEC, JZ } أن تُنشئ ثلاث تعليمات إضافية: القفزة غير المشروطة J، وCLR، وCPY. بمعنى آخر، استخدمت CPY كلاً من CLR وJ بالإضافة إلى مجموعة الأساس. لو كان السجل رقم 3 يحتوي على بيانات في البداية، لكان مجموع بيانات السجلين رقم 2 ورقم 3 قد انتهى به المطاف في السجل رقم 3. لذا، لكي يكون برنامج CPY دقيقًا تمامًا، كان ينبغي أن يسبق حركاته بـ CLR (1) وCLR (3).

مع ذلك، نرى أن عملية الجمع (ADD) كانت ممكنة بسهولة. وفي الواقع، فيما يلي ملخص لكيفية ظهور الدوال التكرارية الأساسية مثل الجمع والضرب والأس. [ 6 ]

  • مجموعة التعليمات الأولية: { DEC, INC, JZ, H }
  • عرّف "القفزة J (z)" غير المشروطة بدلالة JZ ( r0, z ) بشرط أن r0 تحتوي على 0.
{ J, DEC, INC, JZ, H }
  • عرّف "CLeaR ( r )" من حيث ما سبق:
{ CLR, J, DEC, INC, JZ, H }
  • قم بتعريف "CoPY ( r j , rk ) " مع الحفاظ على محتويات r j وفقًا لما سبق:
{ CPY, CLR, J, DEC, INC, JZ, H }
ما سبق هو مجموعة التعليمات الخاصة بـ Shepherdson–Sturgis (1963).
  • قم بتعريف "ADD ( r j , rk , r i )", (ربما مع الحفاظ على محتويات r j و rk ), باستخدام ما سبق:
{ ADD, CPY, CLR, J, DEC, INC, JZ, H }
  • عرّف "MULtiply ( r j , rk , r i )" (MUL) (ربما مع الحفاظ على محتويات r j , rk ) ، من حيث ما سبق:
{ MUL, ADD, CPY, CLR, J, DEC, INC, JZ, H }
  • عرّف "EXPonential ( r j , rk , r i )" (EXP) (ربما مع الحفاظ على محتويات r j , rk ) من حيث ما سبق،
{ EXP, MUL, ADD, CPY, CLR, J, DEC, INC, JZ, H }

بشكل عام، يمكننا بناء أي دالة تكرارية أولية جزئية أو كلية نرغب بها، باستخدام نفس الأساليب. في الواقع، قدم كل من مينسكي (1967)، وشيباردسون-ستورجيس (1963)، وبولوس-بورغيس-جيفري (1974) أمثلة توضيحية لكيفية تكوين "المؤثرات" الخمسة للدوال التكرارية الأولية (1-5 أدناه) من المجموعة الأساسية (1).

لكن ماذا عن التكافؤ الكامل لتورينغ ؟ نحتاج إلى إضافة العامل السادس - العامل μ - للحصول على التكافؤ الكامل، القادر على إنشاء الدوال التكرارية الكلية والجزئية :

  1. الدالة الصفرية (أو الدالة الثابتة )
  2. دالة الخلف
  3. دالة التطابق
  4. دالة التركيب
  5. الاستقراء البدائي (الاستقراء)
  6. عامل μ (عامل البحث غير المحدود)

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

على سبيل المثال، يمكن توسيع التسلسل الهرمي المذكور أعلاه للعوامل التكرارية الأولية ليشمل عمليات الأسهم ذات الرتبة الأعلى في تدوين كنوت للسهم العلوي . لأي قيمة ثابتةك{\displaystyle k}، الوظيفةسؤال(x،y)=xكy{\displaystyle Q(x,y)=x\uparrow ^{k}y}هي دالة تكرارية بدائية، ويمكن تنفيذها كآلة عداد بطريقة مباشرة. لكن الدالةR(ن،x،y)=xنy{\displaystyle R(n,x,y)=x\uparrow ^{n}y}ليست دالة تكرارية بدائية. قد يميل المرء إلى استخدام عامل السهم العلوي.R{\displaystyle R}باستخدام بنية مشابهة لتعليمات اللاحق والجمع والضرب والأس المذكورة أعلاه، من خلال تنفيذ مكدس استدعاء بحيث يمكن تطبيق الدالة بشكل متكرر على قيم أصغر منن{\displaystyle n}هذه الفكرة مشابهة لكيفية تنفيذ الوظيفة عمليًا في العديد من لغات البرمجة. مع ذلك، لا يمكن لآلة العداد استخدام عدد غير محدود من المسجلات في حساباتها، وهو ما يتطلبه تنفيذ مكدس استدعاءات قد ينمو بشكل عشوائي. يمكن تنفيذ عملية السهم لأعلى كآلة عداد لأنها غير تكرارية، ولكن سيتم تنفيذ الوظيفة عن طريق ترميز كمية غير محدودة من المعلومات داخل عدد محدود من المسجلات، كما هو الحال باستخدام ترقيم غودل .

مشاكل في نموذج آلة العد

تُناقش هذه المشكلات بالتفصيل في مقال "آلة الوصول العشوائي ". وتنقسم هذه المشكلات إلى فئتين رئيسيتين، بالإضافة إلى فئة ثالثة تُعرف باسم "فئة الإزعاج".

(1) السعات غير المحدودة للسجلات مقابل السعات المحدودة لتعليمات آلة الحالة: كيف ستنشئ الآلة ثوابت أكبر من سعة آلة الحالة المحدودة الخاصة بها؟

(2) عدد غير محدود من السجلات مقابل عدد محدود من تعليمات آلة الحالة: كيف ستتمكن الآلة من الوصول إلى السجلات ذات أرقام العناوين التي تتجاوز نطاق/قدرة آلة الحالة المحدودة الخاصة بها؟

(3) النماذج المختزلة بالكامل معقدة:

لم يبدِ شيبردسون وستورجيس (1963) أي ندم على مجموعة التعليمات الست التي استخدموها. وقد اتخذوا هذا الاختيار بناءً على "سهولة البرمجة... بدلاً من الاقتصاد" (ص  219، الحاشية 1).

تعليمات شيبردسون وستورجيس ( [r] تشير إلى "محتويات السجل r"):

    • زيادة (r)  ؛ [r] +1 → r
    • إنقاص (r)  ؛ [r] -1 → r
    • مسح ( r )  ؛ 0 → r
    • انسخ ( r s إلى r d )  ؛ [r s ] → r d
    • انتقل إلى التعليمات I z بشكل غير مشروط
    • انتقل إذا كان [r] = 0 إلى التعليمة I z

قام مينسكي (1967) بتوسيع مجموعة التعليمات المكونة من 2 { INC (z), JZDEC (r, I z ) } إلى { CLR (r), INC (r), JZDEC (r, I z ), J (I z ) } قبل إثباته أنه يمكن بناء "آلة برمجة عالمية" باستخدام سجلين فقط (ص  255 وما بعدها).

الآلات ذات العدادين مكافئة لآلة تورينج (مع بعض التحفظات).

لكل آلة تورينج ، توجد آلة 2CM تحاكيها، بشرط أن تكون مدخلات ومخرجات آلة 2CM مشفرة بشكل صحيح. وقد ثبت ذلك في كتاب مينسكي ( الحوسبة ، 1967، ص  255-258)، وفيما يلي برهان بديل مُوجز في ثلاث خطوات. أولًا، يمكن محاكاة آلة تورينج بواسطة آلة حالة محدودة (FSM) مزودة بمكدسين. ثانيًا، يمكن محاكاة المكدسين بواسطة أربعة عدادات. أخيرًا، يمكن محاكاة العدادات الأربعة بواسطة عدادين. تستخدم آلة العدادين مجموعة التعليمات { INC ( r, z ), JZDEC ( r, z true , z false ) }.

الخطوة 1: يمكن محاكاة آلة تورينج بواسطة مجموعتين من الحزم.

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

الخطوة 2: يمكن محاكاة المكدس بواسطة عدادين.

يمكن محاكاة مكدس يحتوي على أصفار ووحدات باستخدام عدادين، حيث تُمثل البتات الموجودة على المكدس عددًا ثنائيًا (البت العلوي في المكدس هو البت الأقل أهمية). إضافة صفر إلى المكدس تُكافئ مضاعفة العدد. إضافة واحد تُكافئ مضاعفة العدد وإضافة واحد. سحب بت يُكافئ القسمة على 2، حيث يكون الباقي هو البت الذي تم سحبه. يمكن لعدادين محاكاة هذا المكدس، حيث يحتوي أحدهما على عدد يُمثل تمثيله الثنائي البتات الموجودة على المكدس، بينما يُستخدم الآخر كمساحة تخزين مؤقتة. لمضاعفة العدد في العداد الأول، يمكن لآلة الحالة المحدودة تهيئة العداد الثاني إلى الصفر، ثم إنقاص العداد الأول مرة واحدة وزيادة العداد الثاني مرتين بشكل متكرر. يستمر هذا حتى يصل العداد الأول إلى الصفر. عندئذٍ، سيحتوي العداد الثاني على العدد المُضاعف. يتم التنصيف عن طريق إنقاص أحد العدادين مرتين وزيادة الآخر مرة واحدة، وتكرار ذلك حتى يصل العداد الأول إلى الصفر. يمكن تحديد الباقي من خلال ما إذا كان قد وصل إلى الصفر بعد عدد زوجي أو فردي من الخطوات، حيث يتم ترميز زوجية عدد الخطوات في حالة آلة الحالة المحدودة.

الخطوة 3: يمكن محاكاة أربعة عدادات بواسطة عدادين.

كما في السابق، يُستخدم أحد العدادين كدفتر ملاحظات. أما الآخر فيحتوي على عدد صحيح تحليله إلى عوامله الأولية هو 2a³b⁵c⁷d . يمكن اعتبار الأسس a و b و c و d بمثابة أربعة عدادات افتراضية مُجمّعة ( باستخدام ترقيم غودل ) في عداد حقيقي واحد. إذا تم ضبط العداد الحقيقي على الصفر ثم زيادته بمقدار واحد، فهذا يُعادل ضبط جميع العدادات الافتراضية على الصفر. إذا تم مضاعفة العداد الحقيقي، فهذا يُعادل زيادة a ، وإذا تم تقسيمه إلى النصف، فهذا يُعادل إنقاص a . وبإجراء مماثل، يمكن ضربه أو قسمته على 3، وهو ما يُعادل زيادة b أو إنقاصه . وبالمثل، يمكن زيادة c و d أو إنقاصهما. للتحقق مما إذا كان عداد افتراضي مثل c يساوي صفرًا، قسّم العداد الحقيقي على 5، ثم احسب الباقي، ثم اضرب الناتج في 5 وأضف الباقي. هذا يُبقي العداد الحقيقي دون تغيير. سيكون الباقي غير صفري إذا وفقط إذا كان c يساوي صفرًا.

نتيجةً لذلك، يمكن لآلة الحالة المحدودة (FSM) المزودة بعدادين محاكاة أربعة عدادات، والتي بدورها تحاكي مكدسين، واللذان يحاكيان آلة تورينج. لذا، فإن آلة الحالة المحدودة المزودة بعدادين لا تقل قوةً عن آلة تورينج. تستطيع آلة تورينج محاكاة آلة الحالة المحدودة المزودة بعدادين بسهولة، وبالتالي فإن الآلتين تتمتعان بقوة متكافئة.

التحذير: *إذا* تم تهيئة عداداته إلى N و 0، فلن يتمكن 2CM من حساب 2N

تظهر هذه النتيجة، إلى جانب قائمة بوظائف أخرى للمتغير N لا يمكن حسابها بواسطة آلة ذات عدادين - عند تهيئتها بقيمة N في أحد العدادين و0 في الآخر - مثل ، وsqrt( N )، وlog² ( N ) ، وما إلى ذلك، في ورقة بحثية لشرويبل (1972). وهذه النتيجة ليست مفاجئة، لأن نموذج الآلة ذات العدادين أثبت (من قبل مينسكي) أنه نموذج عالمي فقط عندما يتم ترميز الوسيط N بشكل مناسب (باستخدام ترميز غودل) لمحاكاة آلة تورينغ التي يحتوي شريطها الأولي على N مُرمّزًا بنظام العد الأحادي؛ علاوة على ذلك، سيتم ترميز مخرجات الآلة ذات العدادين بشكل مماثل. وتُعد هذه الظاهرة نموذجية لقواعد الحساب الصغيرة جدًا التي لا تُثبت عالميتها إلا من خلال المحاكاة (مثل العديد من آلات تورينغ ، وأصغر آلات تورينغ العالمية المعروفة ، وما إلى ذلك).

يسبق البرهان بعض النظريات المثيرة للاهتمام:

  • "نظرية: يمكن لآلة ذات ثلاثة عدادات محاكاة آلة تورينج" (ص  2، انظر أيضًا مينسكي 1967: 170-174)
  • "نظرية: يمكن لآلة العدادات الثلاثية (3CM) حساب أي دالة تكرارية جزئية لمتغير واحد. تبدأ الآلة بالمتغير [أي N ] في عداد، وإذا توقفت، تترك الإجابة [أي F( N )] في عداد آخر." (ص  3)
  • "نظرية: يمكن محاكاة آلة العداد بواسطة 2CM [آلة عدادين]، بشرط قبول ترميز غامض للإدخال والإخراج" [ص  3؛ "الترميز الغامض" هو: 2 W 3 X 5 Y 7 Z حيث العدادات المحاكاة هي W و X و Y و Z]
  • "نظرية: يمكن محاكاة أي آلة عداد بواسطة 2CM، بشرط قبول ترميز غامض للإدخال والإخراج." (ص  3)
    • "النتيجة: مشكلة التوقف بالنسبة لـ 2CMs غير قابلة للحل."
    • "النتيجة: يمكن لآلة 2CM حساب أي دالة تكرارية جزئية ذات وسيط واحد، بشرط أن يتم ترميز المدخلات على أنها 2 N وأن يتم ترميز المخرجات (إذا توقفت الآلة) على أنها 2 answer ." (ص  3)
  • "نظرية: لا توجد آلة عدادين تحسب 2^ N [إذا تمت تهيئة أحد العدادات إلى N ]." (ص  11)

فيما يتعلق بالنظرية الثانية التي تنص على أن "آلة العدّ الثلاثية قادرة على حساب أي دالة تكرارية جزئية"، يطرح المؤلف على القارئ "مسألة صعبة: اضرب عددين باستخدام ثلاثة عدادات فقط" (ص  ٢). ويستند البرهان الرئيسي إلى فكرة أن الآلات ذات العدّين لا تستطيع حساب المتتابعات الحسابية ذات معدلات النمو غير الخطية (ص  ١٥)، أي أن "الدالة ٢ × س تنمو بشكل أسرع من أي متتابعة حسابية " (ص  ١١).

مثال عملي على الحساب عن طريق العد

لم تكن آلة حاسبة فريدن EC-130 مزودة بمنطق جمع بالمعنى المتعارف عليه. كان منطقها تسلسليًا للغاية، حيث تُجرى العمليات الحسابية بالعد. داخليًا، كانت الأرقام العشرية تُحسب بنظام الأساس 1 - على سبيل المثال، كان الرقم 6 يُمثل بست نبضات متتالية ضمن الفترة الزمنية المخصصة له. تحمل كل فترة زمنية رقمًا واحدًا، بدءًا من الأقل أهمية. تُفعّل عمليات الحمل قلابًا، مما يؤدي إلى إضافة عدّة واحدة إلى الرقم في الفترة الزمنية التالية.

كانت عملية الجمع تتم بواسطة عداد تصاعدي، بينما كان الطرح يتم بواسطة عداد تنازلي، مع وجود مخطط مماثل للتعامل مع عمليات الاستلاف.

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

انظر أيضاً

مراجع

فهرس

  • بولوس، جورج ؛ بورغيس، جون بجيفري، ريتشارد (2007) [1974]. الحوسبة والمنطق (الطبعة الخامسة  ). كامبريدج، إنجلترا: مطبعة جامعة كامبريدج . doi : 10.1017/CBO9780511804076 . ISBN 9780521877527.قام بورغيس بتنقيح نص بولوس-جيفري الأصلي بشكل موسع، ليصبح أكثر تقدماً من مجرد كتاب تمهيدي. وقد تم تطوير نموذج "آلة المعداد" بشكل موسع في الفصل الخامس " قابلية حساب المعداد " ؛ وهو أحد ثلاثة نماذج تمت معالجتها ومقارنتها بشكل شامل - آلة تورينج (التي لا تزال في شكلها الأصلي الرباعي لبولوس) والتكرار هما النموذجان الآخران.

للمزيد من القراءة