Sobes.tech
Junior — Middle

განმარტეთ Knuth-Morris-Pratt-ის ქვესიტყვების ძებნის ალგორითმის მუშაობის პრინციპი.

sobes.tech AI

პასუხი AI-სგან

Knuth-Morris-Pratt (KMP) ალგორითმი შექმნილია იმისთვის, რომ ტექსტში ქვესატყვის ძიება მოხდეს ხაზოვან დროში, თავიდან აიცილოს სიმბოლოების განმეორებითი შედარებები.

ძირითადი იდეაა წინასწარ გამოთვალოს ქვესატყვისთვის პრეფიქსის ფუნქციების მასივი (ან "π-მასივი"), რომელიც აჩვენებს, რამდენი სიმბოლო ემთხვევა ქვესატყვის დასაწყისს არასათანადო შედარების დროს. ეს საშუალებას იძლევა, არასათანადო შემთხვევისას, არ დაბრუნდე ტექსტის დასაწყისში, არამედ გადაადგილო ქვესატყვის ოპტიმალურ რაოდენობაზე.

მაგალითი:

  • ტექსტი: "ABABDABACDABABCABAB"
  • ძიება ქვესატყვისი: "ABABCABAB"

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

ეს უზრუნველყოფს სირთულეს O(n + m), სადაც n — ტექსტის სიგრძეა, m — ქვესატყვისის სიგრძე, და უფრო ეფექტურია, ვიდრე ნაივური ძიება.