-
გვჭირდება რიცხვითი პროცედურა,
-
რომელიც ერთი მიმართულებით მარტივია,
მეორე მიმართულებით კი რთული.
-
ამას მივყავართ მოდულურ არითემტიკამდე,
-
რომელიც ასევე ცნობილია
როგორც საათის არითმეტიკა.
-
მაგალითად, 46 mod 12-ის საპოვნელად
-
შეგვიძლია ავიღოთ თოკი სიგრძით 46 ერთეული
-
და შემოვახვიოთ 12 ერთეულიან საათს,
-
რომელსაც მოდული ეწოდება,
-
ხოლო სადაც დასრულდება
თოკი, ის იქნება ამონახსნი.
-
ვამბობთ, რომ 46 mod 12
კონგრუენტულია ათთან. მარტივია.
-
ახლა იმისთვის რომ ამან იმუშაოს,
გამოვიყენოთ მარტივი მოდული,
-
მაგალითად 17. შემდეგ, ვიპოვოთ
17-ის პრიმიტიული ფესვი,
-
ამ შემთხვევაში სამი, რომელსაც
აქვს მნიშვნელოვანი თვისება:
-
როცა ავიყვანთ განსხვავებულ ხარისხებში,
-
ამონახსნები უნიკალურად
გადანაწილდება საათზე.
-
სამი ცნობილია როგორც გენერატორი.
-
თუ სამს რაიმე x ხარისხში ავიყვანთ,
-
მაშინ ამონახსნი დიდი ალბათობით იქნება
რომელიმე მთელი რიცხვი ნულსა და 17-ს შორის.
-
ამ პროცესის შებრუნება რთულია.
-
ვთქვათ, მოცემულია 12. იპოვეთ ხარისხი,
-
რომელშიც უნდა ავიყვანოთ სამი.
-
ამას ეწოდება დისკრეტული
ლოგარითმის პრობლემა.
-
უკვე გვაქვს ცალმხრივი ფუნქცია,
-
რომლის შესრულება
მარტივია, შებრუნება კი რთული.
-
თუ მოცემულია 12, რამდენიმე ცდა მოგვიწევს
შესაბამისი ხარისხების საპოვნელად.
-
რამდენად რთულია ეს?
-
მცირე რიცხვებისთვის ეს მარტივია,
-
მაგრამ მარტივ მოდულს თუ გამოვიყენებთ,
-
რომელიც ასობით სიმბოლოსგან შედგება,
-
ამოხსნა ძალიან არაპრაქტიკული ხდება.
-
მთელ დედამიწაზე არსებულ კომპიუტერებზეც
რომ მიგვიწვდებოდეს ხელი,
-
შესაძლოა ათასობით წელი იყოს საჭირო
ყველა შესაძლო ვარიანტის შესამოწმებლად.
-
ასე რომ, ცალმხრივი ფუნქციის სიძლიერე
-
დამოკიდებულია იმაზე, თუ რა
დროა საჭირო მის შესაბრუნებლად.