Թյուրինգի մեքենան ստեղծվել է մաթեմատիկոս Ալան Թjուրինգի կողմից 1936 թվականին: Չնայած նրա պարզությանը, մեքենան կարող է մոդելավորել ցանկացած համակարգչային ալգորիթմ, ինչքան էլ բարդ լինի այն:
Ալան Թյուրինգը խաղացել է շատ կարևոր դեր առաջին անգլիական էլեկտրոնային համակարգիչների ստեղծման մեջ: Երկրորդ Համաշխարհային պատերազմի ժամանակ, նա աշխատում էր Բրիտանիա կոդ-ջարդող կենտրոնում: Նա մշակել է բազում տեխնիկաներ գերմանական գաղտնագրերը կոտրելու համար, և Գորդոն Վելչմանի հետ միասին ստեղծել էին Բոմբի՝ գերմանական Էնիգմա սարքի կարգավորումները գտնող մեքենայի ավելի կատարելագործված տեսակը: Հետագայում Թյուրինը մշակել է տեխնիկա Լորենզ գաղտնագիրը կոտրելու համար , որը օգտագործում էր գերմանացիների նոր Geheimschreiber մեքենան:
1936-ին իր դոկտորայինի համար Պրինցետոնի համալասարանում սովորելիս, անգլիացի մաթեմատիկոս Ալան Թյուրնգը հրատարակեց մի հոդված “Հաշվելի թվերի մասին, Էնտսչեինդունգի խնդրի դիման հետ”, որը դարձավ համակարգչային գիտության հիմքը: Այնտեղ Թյուրինգը ներկայացնում էր վերացական մեքենա, որը կարող էր լուծել ցանկացած խնդիր, որը կարելի էր բացատրել թղթե ժապավենի վրա կոդավորված պարզ հրահանգներով: Մի Թյուրինգի մեքենան կարող էր հաշվել թվերի քառակուսիները, քանի դեռ մյուսը կարող էր Սուդոկու փազլներ լուծել: Թյուրինգը ներկայացրեց, որ հնարավոր է կառուցել մեկ Ունիվերսալ Մեքենա, որ կարող է մոդելավորել ցանկացած Թյուրինգ մեքենա: Մի մեքենա, որը լուծում է ցանկացած խնդիր, կատարում է ցանկացած առաջադրանք, որի համար հնարավոր է ծրագիր գրել: Ծանոթ է՞ թվում: Նա հայտնագործել էր համակարգիչը:
Վերևում ներկայացված է Թյուրինգ մեքենայի շատ պարզ օրինակ: Այն բաղկացած է անվերջ երկար ժապավենից, որը աշխատում է ինչպես սովորական համակարգչի հիշողությունը, կամ ուրիշ ինֆորմացիան պահելու տեսակ: Ժապավենի վրայի քառակուսիները սկզբում սովորաբար դատարկ են և կարող են գրվել նշաններով: Այս դեպքում, մեքենան մենակ կարող է մշակել 0, 1 և ” “(դատարկ) նշանները, և այսպիսով համարվում է 3-նշանի Թյուրինգ մեքենա:
Մեքենան ունի գլխիկ, որը տեղադրված է ժապավենի քառակուսիներից մեկի վրա: Նրա գլխիկով մեքենան կարող է կատարել երեք հիմնական գործողություն՝ կարդալ գլխիկի տակի քառակուսու նշանը, փոխել նշանը,գրելով նորը կամ ջնջելով այն, և տեղափոխել ժապավենը աջ կամ ձախ, որպեսզի մեքենան կարողանա կարդալ հարևան քառակուսիները:
Որպես սովորական օրինակ այս գործողությունները ներկայացնելու համար, եկեք փոձենք տպել “1 1 0” նշանները ի սկզբանե դատարկ ժապավենի վրա:
Առաջինը, մենք գրում ենք 1 գլխիկի տակի քառակուսու վրա:
Հետո, տեղափոխում ենք ժապավենը ձախ մեկ քառակուսով:
Հիմա, գրում ենք 1 գլխիկի տակի նոր քառակուսու վրա:
Հետո մենք էլի տեղափոխում ենք ժապավենը ձախ մեկ քառակուսով:
Եվ վերջապես գրում ենք 0:
Ժապավենի վրա տպված “1 1 0” նշաններով եկեք փորձենք փոխել 1-երը 0-ների և հակառակը: Սա կոչվում է բիտերի հակադարձում, քանի որ 1-երը և 0-երը երկուական համակարգում բիտեր են: Սա կարելի է անել փոխանցելով Թյուրինգ մեքենային հետևյալ հրահանգները:
Կարդացվող նշանը | Գրելու հրահանգները | Շարժվելու հրահանգները |
---|---|---|
Դատարկ | Ոչինչ | Ոչինչ |
0 | Գրիր 1 | Տեղափոխիր ժապավենը աջ |
1 | Գրիր 0 | Տեղափոխիր ժապավենը աջ |
Մեքենան սկզբում կկարդա գլխիկի տակի նշանը, կգրի համապատասխան նոր նշանը, հետո կտեղափոխի ժապավենը աջ կամ ձախ ինչպես, որ հրանգված է և հետո կրկին կկրկնի կարդալու-գրելու-շարժվելու հերթականությունը:
Հիմա եկեք տեսնենք, թե ինչ է անում այս ծրագիրը մեր ժապավենի հետ:
Գլխիկի տակի նշանը 0 է, այսպիսով մենք գրում ենք 1 և տեղափոխում ենք ժապավենը աջ:
Հիմա կարդացվող նշանը 1 է, այսպիսով մենք գրում ենք 0 և տեղափոխում ենք ժապավենը աջ:
Նմանապես, կարդացվող նշանը 1 է, այսինքն մենք կրկնում են նույն հրահանգները:
Վերջապես, “դատարկ” նշանն է կարդացվում և մեքենան ոչինչ չի անում բացի դատարկ նշանը շարունակաբար կարդալուց, քանի որ մենք նրան հրահանգել են կրկնել կարդալ-գրել-շարժվել հերթականությւնը առանց կանգնելու:
Փաստացի, ծրագիրը անավարտ է: Ինչպե՞ս է մեքենան անվերջ կրկնում հերթականությունը և ինչպե՞ս է մեքենան կանգնեցնում ծրագիրը: Ծրագիրը ասում է նրան մեքենայական դրության գաղափարի միջոցով:
Որպեսզի ավարտենք ծրագիրը, նրա աշխատանքի ընթացքում մեքենայի դրությունները պետք է հաշվի առնվեն: Նշված փոփոխությունները պետք է ավելացվեն մեր աղյուսակին, որը հիմա կարող է անվանվել դրության աղյուսակ:
Դրություն | Կարդացվող նշանը | Գրելու հրահանգներ | Շարժվելու հրահանգներ | Հաջորդ դրություն |
---|---|---|---|---|
Դրություն 0 | Դատարկ | Ոչինչ | Ոչինչ | Կանգնեցրու դրությունը |
0 | Գրել 1 | Տեղափոխիր ժապավենը աջ | Դրություն 0 | |
1 | Գրել 0 | Տեղափոխիր ժապավենը աջ | Դրություն 0 |
Մենք հատկացնում ենք նախորդ հրահանգների շարքը մեքենայական դրության, որպեսզի մեքենան կատարի հրահանգները, երբ այն հատուկ դրության մեջ է:
Ամեն մի հրահանգից հետո, մենք նաև նշում ենք դրություն, որին մեքենան պետք է տեղափոխվի: Օրինակում, մեքենան վերահղվում է իր օրիգինալ դրությանը՝ դրություն 0-ին, որպեսզի կրկնի կարդալ-գրել-շարժվել հերթականություն, բացառությամբ երբ դատարկ նշան է կարդացվում: Երբ մեքենան կարդում է դատարկ նշան, մեքենան ուղղորդվում է կանգառի դրության և ծրագիրը ավարտվում է:
Եկեք հիմա ավելացնենք հավելյալ դրություն մեր ծրագրին, որ փոխված բիտերը “0 0 1” ետ է վերադարձնում բնօրինակին՝ “1 1 0”: Ներքևում թարմացված աղյուսակն է: Թյուրինգ մեքենան հիմա վարվում է ինչպես վերջավոր դրություններով մեքենա, երկու դրությունով: Սրանք կոչվում են երեք-նշանի, երկու դրությամբ Թյուրինգ մեքենաներ:
Դրություն | Կարդացվող նշան | Գրելու հրահանգներ | Շարժվելու հրահանգներ | Հաջորդ դրություն |
---|---|---|---|---|
Դրություն 0 | Ոչինչ | Գրիր դատարկ | Տեղափոխիր ժապավենը ձախ | Դրություն 1 |
0 | Գրիր 1 | Տեղափոխիր ժապավենը աջ | Դրություն 1 | |
1 | Գրիր 0 | Տեղափոխիր ժապավենը աջ | Դրություն 0 | |
Դրություն 1 | Ոչինչ | Գրիր դատարկ | Տեղափոխիր ժապավենը աջ | Կանգեցման դրությունը |
0 | Գրիր 1 | Տեղափոխիր ժապավենը ձախ | Դրություն 1 | |
1 | Գրիր 0 | Տեղափոխիր ժապավենը ձախ | Դրություն 1 |
Գրելու հրահանգներում “Ոչինչը” փոխվել է “Գրիր դատարկի” միօրինակության համար (որ միայն մեքենայի հրահանգներն օգտագործվեն), և պետք է նշվի, որ նրանք նույնն են:
Հիմա, ոչինչ անելու և կանգնելու փոխարեն, երբ մեքենան հանդիպում է դատարկ նշան մենք հրահանգում ենք նրան տեղափոխել ժապավենը ձախ Դրություն 1 տեղափոխվելուց առաջ, որտեղ այն վերադարձնում է բիտերի հակադարձումը:
Հետո, մենք էլի հակադարձում ենք բիտերը, այս անգամ ժապավենը աջի տեղը ձախ տեղափոխելով:
Վերջապես, դատարկ նշան է կարդացվում և մենք տեղափոխում ենք ժապավենը աջ, որպեսզի վերադառնանք սկզբնական դիրքին և կանգնեցնենք ծրագիրը:
Մեր ծրագրին ավել դրություններ ներկայացնելով, մենք կարող ենք Թյուրինգ մեքենային հրահանգել կատաել ավելի բադ ֆունկցիաներ և այդպիսով աշխատեցնել ցանկացած ալգորիթմ, որ ժամանակակից համակարգիչը կարող է անել:
Հիմա կանյենք, թե ինչպես կարելի է կատարել գումարում Թյուրինգի մեքենայով:
Տարբեր մեքենաներում թիվը ներկայացված է երկուական ձևաչաթով: Օրինակ 5-ը ներկայացված է, որպես 101, բայց Թյուինգի մեքենան օգտագործելիս օգտագործվում է անարական ձևաչափը: Անարական ձևաչափում թիվը ներկայացված է կամ լրիվ մեկերով կամ լրիվ զրներով: Օրինակ, հինգը կլինի 00000:
Թյուրինգի մեքենայով 2 թվերի գումարում անելիս, այդ երկու թվերը մուտքագրում ենք Թյուրինգի մեքենային “c”-ով բաժանված:
Օրինակ՝ 2+3 կլինի 0 0 c 0 0 0:
Գումարումը անելու համար պետք է հետևենք այս քայլերին.
Քայլ 1: Փոխիր 0-ն X-ի և գնա քայլ 2: Եթե նշանը “c” է, ապա դարձրու այն դատարկ, տեղափոխվիր աջ և գնա քայլ 6:
Քայլ 2: Շարունակիր 0-ները անտեսելով և տեղափոխվիր աջ: Անտեսի “c”-ն, տեղափոխվի աջ և գնա քայլ 3:
Քայլ 3: Շարունակիր անտեսել 0-ները և տեղափոխվիր աջ: Փոխիր դատարկը 0-ի, տեղափոխվիր ձախ և գնա քայլ 4:
Քայլ 4: Շարունակի անտեսել 0-ները և տեղափոխվիր ձախ: ԱՆտեսի “c”-ն, գնա ձախ և գնա քայլ 3:
Քայլ 5: Շարունակիր անտեսել 0-ները և շարժվիր ձախ: Անտեսիր X-ը, տեղափոխվիր ձախ և գնա քայլ 1:
Քայլ 6: Վերջ
Թյուրինգի ժառանգությունը անավարտ է: 1950 թվականին նա հրապարակեց հոդված կոչված “Հաշվարկելով մեքենաներ և ինտելեկտ”: Նա միտք ուներ, որ համակարգիչներն այնքան հզոր կդառնան, որ նրանք ունակ կլինեն մտածելու: Նա նախատեսեց մի ժամանակ երբ արհեստական ինտելեկտը կլինի իրականություն: Բայց, ինչպե՞ս կիմանաս, թե մեքենան ինտելեկտ ունի: Նա մշակել է Թյուրինգ թեստ; Դատողը նստած համակարգչի մոտ հարցեր է տալիս երկու սուբյեկտների, մեկը մարդ, մյուսը համակարգիչ: Դատողը որոշում է, որ սուբյեկտն է մարդ և որը համակարգիչ: Եթե դատողը սխալվում է, ուրեմն համակարգիչը անցել է Թյուրինգ թեստը և ինտելեկտուալ է:
Չնայած որ Թյուրինգի ԱԻ-ն դեռ ոչ ոք չի հասել, արհեստական ինտելեկտը ավելի և ավելի շատ է ընդգրկվում մեր առօրյա կյանքում: Մեքենաների արբանյակային նավարկման համակարգերը և Google-ի որոնման ալգորիթմները օգտագործում են ԱԻ: Մեքենաների արտադրողները աշխատում են ինքնավար մեքենաների վրա և Ամերիկայում արդեն աշխատում են այդպիսի մեքենաներին ճանապարհներին թույլատրելու վրա: Թյուրինգի արհեստական ինտելեկտը շուտով իրականություն կդառնա:
Աղբյուրները՝
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/one.html
https://history-computer.com/ModernComputer/thinkers/Turing.html
https://blogs.scientificamerican.com/guest-blog/how-alan-turing-invented-the-computer-age/
http://www.rutherfordjournal.org/article040101.html
https://www.geeksforgeeks.org/turing-machine-for-multiplication/
Հետազոտությունը՝ Նազելի Տեր-Պետրոսյանի