ტურინგის მანქანა

**ტიურინგის მანქანა** — ჰიპოთეტური მექანიზმი, რომელიც მანიპულირებას უკეთებს სიმბოლოოებს ფირზე,  შესაბამისი ცხრილის წესების გამოყენებით. მიუხედავად მისი სიმარტივისა, ტიურინგის მანქანას შეუძლია ნებისმიერი კომპიუტერული ალგორითმის ლოგიკის სიმულაცია და ის განსაკუთრებით გამოიყენება პროცესორის ფუნქციების გასამარტად. 

„ტიურინგის“ მანქანა გამოიგონა ალან ტიურინგმა 1936 წელს და მას ა-მანქანა უწოდა(ავტომატური მანქანა). ტიურინგის მანქანა არ შექმნილა პრაქტიკული კომპიუტერული გამოყენებისთვის. მისი შექმნის მიზანი იყო, ყოფილიყო ჰიპოთეტური მექანიზმი, რომელიც კომპიუტერის ანალოგს წარმოადგენდა. ტიურინგის მანქანა ეხმარება მეცნიერებს, გაიგონ მექანიკური შესაძლებლობების საზღვრები. 

ტიურინგმა, 1948 წელს, მის მანქანას მოკლე განმარტება მისცა: „გონივრული მანქანა“ ( "Intelligent Machinery").

ტიურინგის მანქანას, რომელსაც შეუძლია ნებისმიერი სხვა ტიურინგის მანქანის სიმულაცია, უნივერსალური ტიურინგის მანქანა (**UTM**, or simply a **universal machine**) ეწოდება. უფრო მათემატიკურად-ორიენტირებული განსაზღვრება მას მისცა ალონსო ჩარჩმა, რომლის სამუშაო ლამბდა-კალკულუსის შესახებ დაერთო ტიურინგის ოფიციალურ თეორემას და მას ჩარჩ-ტიურინგის თეზისი ეწოდა.  თეზისი ხაზს უსვამს, რომ ტიურინგის მანქანა ნამდვილად ემსახურება ცნებას, ეფექტიანი მეთოდებისა, ლოგიკასა და მათემატიკაში და ეხმარება ალგორითმის ზუსტ განმარტებას. 
 
## არაფორმალური განსაზღვრება
:*ტიურინგის მანქანის გალერეა, ნახეთ აქ Turing machine gallery.*

ტიურინგის მანქნა არის მათემატიკური მოდელი, რომელიც მექანიკურად აკეთებს ოპერაციებს ფირზე. ამ ფირზე არის სიმბოლოები, რომელსაც მანქანა ან წერს ან კითხულობს, ოღონდ სათითაოდ, ფირის თავის გამოყენებით. ოპერაცია განსაზღვრულია ელემენტარული ინსტრუქციების სასრული სიმრავლით. მაგ: „42-მდგომარეობაში თუ შეგხვდება 0, შეცვალე 1-ით; თუ სიმბოლო არის 1, გადადი მე-17 მდგომარებოაში და ა.შ. ორიგინალ სტატიაში ("On computable numbers, with an application to the Entscheidungsproblem") ტიურინგი იგონებს არა მექანიზმს, არამედ ადამიანს, რომელსაც კომპიუტერს არქმევს და რომელიც ასრულებს ამ დეტერმინისტულ ქმედებებს მონურად.

უფრო დაწვრილებით, ტიურინგის მანქანა შედგება:

**ფირით**, რომელიც დაყოფილია უჯრებად ერთი-მეორის მიყოლებით. ყოველი უჯრა შეიცავს სიმბოლოს სასრული ანბანიდან. ანბანი შეიცავს პეციალურ *ცარიელ* სიმბოლოს (ამ შემთხვევაში წერია როგორც ‘0’) და ერთი-ორ სხვა სიმბოლოს. უჯრები რომელშიც არაფერია არ წერია, ვუშვებთ რომ შეიცვას ცარიელ სიმბოლოს.
**თავი**,  რომელიც კითხულობს ან წერს სიმბოლოებს და შემდეგ ფირი გადაადგილდება მარჯვნივ ან მარცხნივ (მხოლოდ ერთი უჯრით). ზოგი მოდელის შემთხვევაში თავი გადაადგილდება და ფირი უძრავია.
**მდგომარეობის შემნახველი**, რომელიც ინახავს ტიურინგის მანქანის მდგომარეობას. ფირზე არის ერთი სპეციალური *საწყისი მდგომარეობა*, სადაც ტიურინგის მანქანა ინიციალიზირდება.
სასრული **ცხრილი** (ხშირად მოიხსენიება, როგორც **მოქმედების ცხრილი** ან **გარდამავალი ფუნქცია**). მაგალითად, მოცემულია *მდგომარეობა*(qi), სადაც მანქანა არის *და* კითხულობს *სიმბოლოს*(aj) , რომელიც ეუბნება შემდეგს:

წაშალოს ან ჩაწეროს სიმბოლო (შეცვალოს aj aj1-ით), შემდეგ
შეიცვალოს მდგომარეობა (გადაადგილდეს მარჯვნიც ან მარცხნივ)

მნიშვნელოვანია ის ფაქტი, რომ ტიურინგის მანქანის ყველა ნაწილი და მოქმედება არის *სასრული*, *დისკრეტული* და *გარჩევადი*. ის არის პოტენციურად ულიმიტო ფირის რაოდენობა, რომელიც იძლევა უსაზღვრო მეხსიერებას.

## ფორმალური განსაზღვრება
ტიურინგის მანქანა ფორმალურად არის განსაზღვრული 7-ნაწილისგან, M= \langle Q, \Gamma, b, \Sigma, \delta, q_0, F \rangle სადაც:

* Q სასრული, არაცარიელი *მდგომარეობების* სიმრავლე
* \Gamma სასრული, არაცარიელი *ფირის ანბანის/სიმბოლოების* სიმრავლე
* b \in \Gamma *ცარიელი სიმბოლო*
* \Sigma\subseteq\Gamma\setminus\{b\} *შემომავალი სიმბოლოების* სიმრავლე
* q_0 \in Q *საწყისი მდგომარეობა*
* F \subseteq Q *საბოლოო* მდგომარეობების სიმრავლე
* \delta: Q \setminus F \times \Gamma \rightarrow Q \times \Gamma \times \{L,R\} *გარდამავალი ფუნქცია*, სადაც L არის მარცხენა გადაადგილება, R-კი მარჯვენა.