ნებისმიერი ადამიანი თავის ყოველდღიურ ცხოვრებაში იძულებულია გადაწყვიტოს დიდი რაოდენობით სხვადასხვა დავალება. ის არ ფიქრობს ზოგიერთი პრობლემის მოგვარებაზე (”სასურსათო ნივთების ყიდვა”), ზოგი კი სირთულეებსა და დიდხანს ასახვას იწვევს (”რუბიკის კუბის შეგროვება”). მარტივი და რთული ამოცანების ზემოხსენებულ მაგალითებს აქვთ საერთო, რომ ისინი შეიძლება დაიყოს ინდივიდუალურად გასაგებ ნაბიჯებად. ასეთი ნაბიჯების თანმიმდევრობა შეიძლება გამოყენებულ იქნას შეხსენებად, პრობლემის მოგვარებაში. ამ მიმდევრობას შეიძლება ალგორითმი ვუწოდოთ.
რა თქმა უნდა, შეგიძლიათ შეაგროვოთ Rubik- ის კუბი მემორანდუმის გარეშე, უბრალოდ გადაადგილეთ კიდეები შემთხვევითი წესით. მაგრამ შესაძლო ვარიანტების ჩამოთვლა დიდხანს შეიძლება გაგრძელდეს, ეს იქნება არაპროდუქტიული და არაოპტიმალური პროცესი. ბევრად უფრო მოსახერხებელია იმ ნაბიჯების ჩამონათვალი, რომელთა თანმიმდევრული შესრულება ყოველთვის გამოიწვევს დადებით შედეგს. სწორედ ამ პრინციპებმა ჩამოაყალიბა ასეთი ცნება, როგორც”ალგორითმი”.
ალგორითმი არის ინსტრუქციების (ნაბიჯების) ერთობლიობა, რომელიც აღწერს შემსრულებლის ოპერაციების თანმიმდევრობას სასრული რაოდენობის მოქმედებებში პრობლემის გადაჭრის შედეგის მისაღწევად.
რა არის შემსრულებელი?
ზოგადად, ალგორითმის უკეთ გასაგებად, ასევე აუცილებელია განიხილონ ცნება „ალგორითმის შემსრულებელი“. შემსრულებელი ალგორითმის კონცეფციაში ნიშნავს აბსტრაქტულ სისტემას, რომელსაც შეუძლია შეასრულოს ალგორითმით აღწერილი მოქმედებები, აგრეთვე გააჩნია მთელი რიგი მახასიათებლების. როგორც შემსრულებელი, ყველაზე ხშირად იგულისხმება ესა თუ ის ტექნიკური საშუალება (3D პრინტერი, CNC მანქანა, კომპიუტერი), თუმცა უნდა გვესმოდეს, რომ ეს ფართო ცნებაა: შემსრულებელი შეიძლება იყოს, მაგალითად, ადამიანი.
ამის მიუხედავად, შემსრულებელს შეიძლება ეწოდოს მხოლოდ სისტემა, რომელიც ერთდროულად ფლობს მრავალ პარამეტრს:
- გარემო;
- ბრძანებების სისტემა;
- ელემენტარული მოქმედებები;
- უარი, თუ ქმედებების შესრულება შეუძლებელია.
ალგორითმის თვისებები
შეზღუდვები, რომლებიც დაწესებულია "შემსრულებლის" ცნებაზე, იწვევს იმ ფაქტს, რომ თვითონ "ალგორითმის" კონცეფციას აქვს მთელი რიგი თვისებები და შეზღუდვები. ალგორითმები ფართოდ გავრცელდა სწორედ ამ შეზღუდვების გამო, რაც სტანდარტიზაციას უწყობს ხელს. ალგორითმების თვისებებს შორისაა:
- მასიურობა (ალგორითმის უნარი შეინარჩუნოს სწორი შეყვანის მონაცემთა სხვადასხვა ნაკრები);
- დარწმუნებულობა (ალგორითმის ნებისმიერ საფეხურზე შემსრულებელს უნდა ჰქონდეს საკმარისი მონაცემები, რომ შეასრულოს იგი);
- დეტერმინიზმი (შეყვანის მონაცემების იგივე ნაკრები, იგივე შედეგი უნდა იქნას მიღებული);
რატომ არის საჭირო ალგორითმები?
ზემოხსენებული თვისებები უზრუნველყოფს ალგორითმების ფართო გამოყენებას. ასე რომ, ალგორითმები ემსახურება ნებისმიერი პროცესის აღწერის სტანდარტიზაციას. ალგორითმების გარეშე, ნებისმიერი სახის გამოთვლა შეუძლებელი იქნებოდა და ნებისმიერი პრობლემის გადაწყვეტა თავიდანვე დაიწყებოდა - მაშინაც კი, თუ იგი ბევრჯერ მოგვარდებოდა. ალგორითმების გამოყენება საშუალებას გაძლევთ სწრაფად მოაგვაროთ იგივე ტიპის პრობლემები, შეამციროთ გადაჭრის დროს დახარჯული დრო, ავტომატიზიროთ მისი მოძიების პროცესი და ასევე განაწილდეთ ნაპოვნი გამოსავალი სტანდარტიზებული ფორმით, რაც ნიშნავს, რომ ყველას ესმის.