Авторы

  • Onarkulov Maksadjon Karimberdiyevich
  • Habibullayev Javohir Odilbek o’g’li

DOI:

https://doi.org/10.71337/inlibrary.uz.esiiw.124736

Ключевые слова:

Knut-Morris-Pratt algoritmi qidiruv algoritmlari substring qidiruvi prefiks-funksiyasi algoritm murakkabligi C# dasturlash matnni qayta ishlash

Аннотация

Mazkur maqolada matn ichida namunaviy qatorni (substring) qidirishda samarali ishlovchi Knut-Morris-Pratt (KMP) algoritmi tahlil qilinadi. Ushbu algoritm klassik qidiruv algoritmlaridan farqli ravishda takroriy taqqoslashlarni kamaytiradi va O(n) 
vaqt murakkabligiga ega. KMP algoritmi matn tahlili, bioinformatika, qidiruv tizimlari va plagiat aniqlash kabi sohalarda keng qo‘llaniladi. Maqolada algoritmning ishlash prinsipi, prefiks-funksiyani qurish bosqichlari va C# tilida dasturlashdagi amaliy 
namunalar keltirilgan. 


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

166

2181-

3187

Knut-Morris-Prat algoritmi

Onarkulov Maksadjon Karimberdiyevich

Farg’ona davlat univarsiteti Amaliy matematika va

informatika kafedrasi dotsenti (PhD)

maxmaqsad@gmail.com

Habibullayev Javohir Odilbek o’g’li

Fargʻona davlat universiteti 2-bosqich talabasi

habibullayevjavohirbek5@gmail.com

Anatatsiya:

Mazkur maqolada matn ichida namunaviy qatorni (substring) qidirishda samarali

ishlovchi Knut-Morris-Pratt (KMP) algoritmi tahlil qilinadi. Ushbu algoritm klassik

qidiruv algoritmlaridan farqli ravishda takroriy taqqoslashlarni kamaytiradi va O(n)

vaqt murakkabligiga ega. KMP algoritmi matn tahlili, bioinformatika, qidiruv tizimlari

va plagiat aniqlash kabi sohalarda keng qo‘llaniladi. Maqolada algoritmning ishlash

prinsipi, prefiks-funksiyani qurish bosqichlari va C# tilida dasturlashdagi amaliy

namunalar keltirilgan.

Kalit so’zlar:

Knut-Morris-Pratt algoritmi, qidiruv algoritmlari, substring

qidiruvi, prefiks-funksiyasi, algoritm murakkabligi, C# dasturlash, matnni qayta

ishlash

Anatation:

This paper analyzes the Knuth-Morris-Pratt (KMP) algorithm, which is an

efficient method for searching substrings within a given text. Unlike traditional string

search algorithms, KMP avoids redundant comparisons by utilizing a preprocessed

prefix function, achieving a time complexity of O(n). The algorithm is widely used in

fields such as text processing, bioinformatics, search engines, and plagiarism detection.

The paper explores the core principles of KMP, details the construction of the prefix

function, and provides practical examples implemented in C#.


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

167

2181-

3187

Keywords:

Knuth-Morris-Pratt algorithm, pattern matching, substring search,

prefix function, algorithm complexity, C# programming, text processing

Аннотация:

В данной статье рассматривается алгоритм Кнута-Морриса-Пратта (КМП),

являющийся эффективным методом поиска подстроки в тексте. В отличие от

традиционных алгоритмов, КМП минимизирует количество ненужных

сравнений за счёт использования заранее вычисленной префикс-функции,

обеспечивая временную сложность O(n). Алгоритм широко используется в

обработке текстов, биоинформатике, поисковых системах и системах

обнаружения плагиата. В статье подробно изложен принцип работы алгоритма,

этапы построения префикс-функции и приведены практические примеры на

языке программирования C#.

Ключевые слова:

Алгоритм Кнута-Морриса-Пратта, поиск шаблонов,

поиск подстроки, префикс-функция, сложность алгоритма, программирование

на C#, обработка текста

Matn ichida ma’lum bir namunani yoki so‘zni qidirish masalasi kompyuter

fanining eng asosiy va keng tarqalgan muammolaridan biridir. Har qanday matnli

ma’lumotlar bazasida, hujjatlarni qayta ishlashda, veb-saytlarda izlash tizimlarida yoki

dasturlash tillarida kod qidirishda samarali va tezkor qidiruv algoritmlari talab qilinadi.

Oddiy, ya’ni naive algoritm har bir pozitsiyadan boshlab satrning har bir belgisi bilan

namunani taqqoslash orqali ishlaydi, ammo bu yondashuv katta hajmdagi matnlarda

sekin va samarasiz bo‘lib qoladi. Ayniqsa, uzun matn va qidirilayotgan namunada ko‘p

takrorlanuvchi belgilar mavjud bo‘lsa, oddiy yondashuv ko‘plab keraksiz

taqqoslashlarga sabab bo‘ladi. Shu nuqtai nazardan, samarali va optimallashtirilgan

algoritmlarga ehtiyoj tug‘iladi. Knut-Morris-Pratt (KMP) algoritmi aynan shunday

masalani hal qilish uchun ishlab chiqilgan. U prefiks-funksiyasi asosida ishlaydi va

keraksiz taqqoslashlarni minimallashtirish orqali qidiruv jarayonini sezilarli darajada

tezlashtiradi. Bu algoritmning samaradorligi va ishonchliligi ko‘plab amaliy sohalarda,

jumladan, matn tahlili, biologik ketma-ketliklarni o‘rganish, plagiat aniqlash va real


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

168

2181-

3187

vaqt tizimlarida keng qo‘llanilishiga olib keldi. Ushbu maqolada KMP algoritmining

nazariy asoslari, ishlash printsiplari va uning amaliy ahamiyati batafsil yoritiladi,

shuningdek, boshqa matn qidiruv algoritmlari bilan solishtirish orqali uning o‘ziga xos

afzalliklari ko‘rsatib beriladi. Maqolaning maqsadi o‘quvchilarga KMP algoritmini

chuqur tushunish va uni samarali qo‘llash bo‘yicha bilim berishdir.

Knut-Morris-Pratt (KMP) algoritmi satrlar ichida namunani (pattern) samarali

izlash uchun ishlab chiqilgan algoritmdir. Uning asosiy afzalligi — har bir belgini faqat

bir marta ko‘rib chiqishi, ya’ni ortiqcha taqqoslashlarni oldini olishi bilan bog‘liq.

KMP algoritmi ikki asosiy bosqichdan iborat: birinchi bosqichda qidirilayotgan

namunaga tegishli maxsus yordamchi massiv — prefiks-funksiyasi (yoki failure

function) quriladi. Ushbu prefiks-funksiyada har bir indeksda o‘sha pozitsiyagacha

bo‘lgan substring ichida qanday qilib o‘zi bilan bir xil boshlanadigan va tugaydigan

eng uzun substring mavjudligi haqida ma’lumot saqlanadi. Bu yordamchi massiv

kelajakdagi qidiruvda qaysi belgidan davom etishni aniqlashda muhim rol o‘ynaydi.

Algoritmning ikkinchi bosqichi — to‘g‘ridan-to‘g‘ri matn ichida namunani izlash

jarayoni hisoblanadi. Bu bosqichda matn va namunadagi belgilar navbatma-navbat

taqqoslanadi. Belgilar bir-biriga mos kelgan holatda ikkala indeks oldinga siljitiladi.

Agar mos kelmaslik aniqlansa, KMP algoritmi prefiks-funksiyadagi qiymatlardan

foydalanib, namunadagi indeksni shunday o‘zgartiradiki, u ilgari tekshirib chiqilgan

mos kelgan belgilarni qayta ko‘rib chiqmaydi. Bu yondashuv natijasida har bir

belgining maksimal bir marta tahlil qilinishi ta’minlanadi, bu esa umumiy ishlash

tezligini O(n + m) — ya’ni matn uzunligi n va namunalar uzunligi m ga bog‘liq bo‘lgan

chiziqli murakkablikda saqlab qoladi.

KMP algoritmining ishlash mantig‘i zamirida optimallik tamoyili yotadi. Oddiy

string qidiruv algoritmlarida biror mos kelmaslik aniqlangach, butun namunani

qaytadan taqqoslashga to‘g‘ri keladi. KMP esa shu bosqichgacha o‘zaro mos kelgan

belgilarni tahlil qilganligi tufayli, mos kelmaslik holida to‘liq qaytish emas, balki faqat

zarur pozitsiyadan davom etishni ta’minlaydi. Bu esa algoritmning samaradorligini

keskin oshiradi. KMP algoritmi nafaqat nazariy jihatdan, balki amaliyotda — masalan,


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

169

2181-

3187

matnli fayllarda ma’lumot izlash, plagiat aniqlash, kodni indekslash kabi vazifalarda

ham keng qo‘llaniladi.

Knut-Morris-Pratt (KMP) algoritmining amaliy qo‘llanilishi juda keng va u turli

sohalarda samarali ishlatiladi. Eng avvalo, matnni tahlil qilish bilan bog‘liq vazifalarda

— masalan, fayllarda yoki hujjatlarda aniq bir ifodani izlashda KMP algoritmi ancha

yuqori samaradorlikka ega. Katta hajmdagi matnlar ustida ishlaydigan dasturlar,

masalan, fayl qidiruv tizimlari, kod indeksatsiyasi yoki oddiy matn muharrirlari

(masalan, Notepad++, VS Code) ushbu algoritmdan foydalanadi. U yerda

foydalanuvchi izlayotgan so‘z yoki ibora minglab sahifalar ichida tez va ishonchli

tarzda aniqlanadi.

KMP algoritmi, shuningdek, biologik ma’lumotlar tahlilida ham keng

qo‘llaniladi. Masalan, DNK yoki RNK ketma-ketliklarida ma’lum bir genetik andozani

(sequence pattern) aniqlashda bu algoritm samarali vosita sifatida ishlaydi. Genom

tadqiqotlarida ma’lum bir fragmentning turli organizmlardagi mavjudligini aniqlash

zarur bo‘lsa, KMP algoritmi yirik genom fayllari ichida ushbu ketma-ketlikni tezlik

bilan topadi.

Bundan tashqari, KMP algoritmi xavfsizlik tizimlarida ham qo‘llaniladi. Masalan,

dasturiy ta’minotlar yoki tizim loglari ichida zararli so‘zlar yoki foydalanuvchi

faoliyatidagi nojo‘ya harakatlarni aniqlash uchun filtr tizimlari matnlar ichida

aniqlovchi izlash mexanizmidan foydalanadi. Shu kabi holatlarda KMP algoritmi

yuqori aniqlik va tezlik bilan ishlaydi. Shu bilan birga, plagiat aniqlash tizimlarida ham

matnlarni o‘zaro taqqoslash orqali bir-biriga o‘xshash segmentlarni aniqlashda

samarali bo‘lib, bir matn ichidan boshqa matn bilan qanchalik o‘xshashlik borligini

topishga yordam beradi.

Dasturlash tillarida KMP algoritmi C#, Java, Python kabi tillarda osonlik bilan

amalga oshiriladi. Turli standart kutubxonalar orqali yoki o‘zi yozilgan funksiyalar

yordamida matn ichida izlashni amalga oshirish mumkin. Dasturchilar bu algoritmni

o‘z ilovalariga integratsiya qilish orqali foydalanuvchilarga tezkor va aniq qidiruv

imkoniyatini yaratadilar. Shu bilan birga, KMP algoritmi real vaqtda ishlaydigan


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

170

2181-

3187

tizimlarda, masalan, chat ilovalari yoki matnni avtomatik tahlil qiluvchi vositalarda

ham qo‘llaniladi. Bu uning universalligini va amaliy qiymatini yana bir bor tasdiqlaydi.

Knut-Morris-Pratt (KMP) algoritmini boshqa matn qidiruv algoritmlari bilan

solishtirganda, uning samaradorligi va ishlash prinsipidagi farqlar yaqqol namoyon

bo‘ladi. Eng oddiy algoritm — bu “naive” yoki to‘g‘ridan-to‘g‘ri izlash algoritmidir.

Unda har bir pozitsiyadan boshlab namunani matn bilan taqqoslash amalga oshiriladi

va mos kelmaslik aniqlansa, keyingi belgidan davom etiladi. Bu yondashuvda eng

yomon holatda algoritmning vaqt murakkabligi O(n·m) bo‘lib, bu esa katta matnlar va

uzun namunalar uchun sekin ishlashga olib keladi. KMP algoritmi esa prefiks-

funksiyasi yordamida ortiqcha taqqoslashlarni cheklaydi va umumiy murakkablikni

O(n + m) ga tushiradi. Bu esa uni samaraliroq va real vaqt tizimlari uchun mosroq

qiladi.

KMP algoritmi Boyer-Moore algoritmi bilan ham ko‘p taqqoslanadi. Boyer-

Moore algoritmi matnni o‘ngdan chapga qarab tahlil qilishi va bir nechta oldindan

hisoblangan qoidalar (bad character va good suffix) asosida belgilarning tahlilini

o‘tkazishi bilan mashhur. U amalda ko‘pincha KMP algoritmidan tezroq natija beradi,

ayniqsa

alohida

strukturalangan

matnlar

uchun.

Biroq

Boyer-Moore’ni

implementatsiya qilish murakkabroq bo‘lib, unga ko‘proq qo‘shimcha yordamchi

massivlar kerak bo‘ladi. KMP esa nisbatan soddaroq tuzilgan va barqaror ishlashni

ta’minlaydi, ayniqsa bir xil yoki takrorlanuvchi belgilar ko‘p bo‘lgan namunalar ustida.

Yana bir mashhur algoritm — Rabin-Karp algoritmidir. U hash funksiyalar

yordamida matnning har bir substringini namunaga mos kelishini tekshiradi. Bu

yondashuv o‘rtacha holatda tez ishlasa ham, eng yomon holatda vaqt murakkabligi

O(n·m) ga yetadi, chunki kolliziyalar (hash qiymatlarining mos kelishi) bo‘lishi

mumkin. KMP algoritmida esa deterministik yondashuv bo‘lgani uchun bunday

noaniqlik yo‘q va har doim barqaror natija beradi.

Umuman olganda, KMP algoritmi barqaror ishlashi, aniq vaqt murakkabligi va

nisbatan soddaligi bilan ajralib turadi. U yirik tizimlar, real vaqt ilovalari yoki resurslar

cheklangan muhitlarda qo‘llanilish uchun juda mosdir. Boyer-Moore murakkabroq


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

171

2181-

3187

bo‘lsa-da, katta matnlar va kam moslik hollari uchun qulay, Rabin-Karp esa hash

funksiyalarga bog‘liq bo‘lgan holatlarda ishlatiladi. Shunday qilib, KMP algoritmi —

bu soddalik va samaradorlikni birlashtirgan muvozanatli yondashuvdir.

Knut-Morris-Pratt (KMP) algoritmi matn ichida namunani izlash masalasida

samarali va ishonchli yechim hisoblanadi. Uning asosiy afzalligi — ortiqcha

taqqoslashlarni kamaytirish orqali qidiruv jarayonini sezilarli darajada tezlashtirishi va

natijada murakkabligini O(n + m) darajasida ushlab turishidir. Bu algoritm nafaqat

nazariy jihatdan mustahkam asosga ega, balki amaliyotda ham keng qo‘llaniladi. Matn

tahlili, bioinformatika, xavfsizlik tizimlari va plagiat aniqlash kabi sohalarda KMP

algoritmining samaradorligi va barqarorligi uning asosiy ustunliklari hisoblanadi. Shu

bilan birga, KMP algoritmini boshqa qidiruv algoritmlari bilan solishtirganda uning

soddaligi va aniq ishlash mexanizmi uni dasturchilar orasida juda mashhur qiladi.

Taklif qilish mumkinki, kelajakda KMP algoritmining imkoniyatlarini

kengaytirish maqsadida, uni parallel hisoblash resurslari yordamida optimallashtirish

yoki boshqa ilg‘or string qidiruv usullari bilan kombinatsiyalash ustida tadqiqotlar olib

borilsin. Shuningdek, yangi dasturlash tillari va platformalarda KMP algoritmining

samarali kutubxonalarini yaratish ham foydali bo‘ladi. Bu nafaqat algoritmni kengroq

auditoriyaga yetkazishga, balki turli muhitlarda uning qo‘llanilishini osonlashtirishga

xizmat qiladi. Umuman olganda, KMP algoritmi hozirgi kunda ham dolzarb mavzu

bo‘lib, matn qidirish sohasida hal qiluvchi rol o‘ynashda davom etmoqda. Shu sababli

uning chuqur tahlili va amaliy qo‘llanilishi bo‘yicha ilmiy izlanishlar davom ettirilishi

lozim.

Foydalanilgan adabiyotlar

1.

Knuth, D. E., Morris, J. H., & Pratt, V. R. (1977).

Fast Pattern Matching in

Strings

. SIAM Journal on Computing.

2.

Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009).

Introduction

to Algorithms

(3rd ed.). MIT Press.

3.

Gusfield, D. (1997).

Algorithms on Strings, Trees, and Sequences

. Cambridge

University Press.


background image

ОБРАЗОВАНИЕ НАУКА И ИННОВАЦИОННЫЕ ИДЕИ В МИРЕ

https://scientific-jl.org/obr

Выпуск журнала №-70

Часть–4_ Мая –2025

172

2181-

3187

4.

Aho, A. V., & Ullman, J. D. (1995).

Foundations of Computer Science

. W. H.

Freeman.

5.

Brassard, G., & Bratley, P. (1996).

Fundamentals of Algorithmics

. Prentice-Hall.

6.

Manber, U. (1989).

Introduction to Algorithms: A Creative Approach

. Addison-

Wesley.

7.

Sedgewick, R., & Wayne, K. (2011).

Algorithms

(4th ed.). Addison-Wesley.

8.

Levitin, A. (2012).

Introduction to the Design and Analysis of Algorithms

.

Pearson.

9.

Skiena, S. (2008).

The Algorithm Design Manual

. Springer.

10.

Gokhale, S. S. (2017).

Data Structures and Algorithms

. University Science

Press.

11.

GeeksforGeeks.

(n.d.).

KMP

Algorithm

for

Pattern

Searching

.

https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/

12.

Rosetta

Code.

(n.d.).

KMP

string

search

.

https://rosettacode.org/wiki/KMP_string_search

13.

Microsoft

Docs.

(n.d.).

String

Searching

Algorithms

in

C#

.

https://docs.microsoft.com

14.

Horowitz, E., Sahni, S., & Rajasekaran, S. (2007).

Fundamentals of Computer

Algorithms

. University Press.

15.

Baeza-Yates, R., & Ribeiro-Neto, B. (2011).

Modern Information Retrieval: The

Concepts and Technology behind Search

. Addison-Wesley.

Библиографические ссылки

Knuth, D. E., Morris, J. H., & Pratt, V. R. (1977). Fast Pattern Matching in

Strings. SIAM Journal on Computing.

Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction

to Algorithms (3rd ed.). MIT Press.

Gusfield, D. (1997). Algorithms on Strings, Trees, and Sequences. Cambridge

University Press.4.

Aho, A. V., & Ullman, J. D. (1995). Foundations of Computer Science. W. H.

Freeman.

Brassard, G., & Bratley, P. (1996). Fundamentals of Algorithmics. Prentice-Hall.

Manber, U. (1989). Introduction to Algorithms: A Creative Approach. Addison

Wesley.

Sedgewick, R., & Wayne, K. (2011). Algorithms (4th ed.). Addison-Wesley.

Levitin, A. (2012). Introduction to the Design and Analysis of Algorithms.

Pearson.

Skiena, S. (2008). The Algorithm Design Manual. Springer.

Press.

Gokhale, S. S. (2017). Data Structures and Algorithms. University Science

GeeksforGeeks.

Rosetta

(n.d.).

KMP Algorithm for Pattern Searching.

Code.

(n.d.).

Microsoft

Docs.

(n.d.).

String

KMP

Searching

string

Algorithms

search.

in

C#.

Horowitz, E., Sahni, S., & Rajasekaran, S. (2007). Fundamentals of Computer

Algorithms. University Press.

Baeza-Yates, R., & Ribeiro-Neto, B. (2011). Modern Information Retrieval: The

Concepts and Technology behind Search. Addison-Wesley.

Наиболее читаемые статьи этого автора (авторов)

Mo’minov Sarvarbek Ulug’bek o’g’li, Yusupov Mirsaid Abdulaziz o‘g‘li, Onarkulov Maksadjon Karimberdiyevich, MIJOZLAR BILAN ISHLASH , Образование наука и инновационные идеи в мире: Том 69 № 4 (2025)

G'offorova Zakhrabonu Ikhtiyorjon qizi-, Onarkulov Maksadjon Karimberdiyevich, Yusupov Mirsaid Abdulaziz oglu, THE “RETURN” OPERATOR: THE MAIN MEANS OF RETURNING RESULTS IN THE PYTHON PROGRAMMING LANGUAGE , Образование наука и инновационные идеи в мире: Том 70 № 3 (2025)