SlideShare a Scribd company logo
ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ, 
Е-НЭЭЛТТЭЙ ИНСТИТУТ 
Бусад стандарт алгоритм, 
хэрэглээ, тэдгээрийг ашиглан 
асуудлыг шийдвэрлэх 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
www.emust.edu.mn 
Лекц – 15
Агуулга: 
01 
Комбинаторикийн алгоритм 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
www.emust.edu.mn 
01 
02 
02 
Сэлгэмэл байгуулах арга 
03 
Буцаалттай түүврийн алгоритм 
04 Дэд мөрийг хайх аргууд
Судлах зүйл: 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Эрэмбэлэлт, хайлтаас бусад алгоритм 
Комбинаторикийн алгоритм, программууд 
Алгоритм ба программчлалын зарим бодлогуудыг бодоход өгсөн 
олонлогийн түүврүүдийг байгуулах шаардлага гардаг. Төгсгөлөг 
тооны элементтэй олонлогийн элементүүдээр тодорхой дүрмээр 
төгслөг тооны элемент бүхий дэд олонлог байгуулах аргуудыг 
хослолын онолд авч үздэг. Байгуулж байгаа дэд олонлогт өгсөн 
олонлогийн элементүүд давхардаж орохгүй гэсэн нөхцөлтэйгээр 
үүсэх дэд олонлогуудыг буцаалтгүй түүвэр гэнэ. 
Буцаалтгүй түүврийн энгийн хэлбэрүүд нь сэлгэмэл, хэсэглэл, 
гүйлгэмэл юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Тодорхойлолт 1. n элементтэй олонлогийн n элементтэй 
эрэмбэлэгдсэн дэд олоногийг сэлгэмэл гэнэ. 
Тодорхойлолт 2. n элементтэй олонлогийн m элементтэй дэд 
олонлогийн хэсэглэл гэнэ. 
Тодорхойлолт 3. n элементтэй олонлогийн m элементтэй 
эрэмбэлэгдсэн дэд олонлогийг гүйлгэмэл гэнэ. 
N элементтэй олонлогийн сэлгэмэл, хэсэглэл, гүйлгэмэлийг 
байгуулах асуудал нь 1-ээс n хүртэлх натурал тоонуудаас зохиосон 
сэлгэмэл, хэсэглэл, гүйлгэмлийг байгуулах асуудалд шилждэг. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Сэлгэмэл байгуулах аргууд 
1-р арга. Энэ аргын үндсэн санаа нь дараах хоёр үйлдэл юм. 
1-р үе шат. Байгуулах сэлгэмэлийн a(1), a(2), …. , a(I-1) 
элементүүдэд тодорхой утгуудыг олгосон, харин a(I), …, a(n) 
элементүүдэд утга олгоогүй гэж үзээд дараах алхмуудыг гүйцэтгэнэ. 
2-р үе шат. Нэгэн сэлгэмлийг байгуулсны дараа шинэ сэлгэмлийг 
байгуулахын тулд дараах алхамуудыг гүйцэтгэнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хэсэглэл байгуулах аргууд 
Алгоритм, программчлалд өгсөн олонлогоос тодорхойлох тооны 
элемент бүхий дэд олонлогуудыг байгуулах бодлого өргөн 
тохиолддог. Ийм бодлогуудыг бодох асуудал нь 1-ээс n хүртэлх 
натурал тоонуудын олонлогоос зохиосон m элементтэй дэд 
олонлогуудыг байгуулах бодлогод шилждэг тул натурал 
тоонуудаас зохиосон хэсэглэлийг байгуулах хоёр хялбар аргыг авч 
үзье. 
1-р арга 1-ээс n хүртэлх натурал тоонуудаас зохиосон m 
элементтэй нэгэн хэсэглэлийг хадгалах хүснэгтийг a(1...m)-ээр 
тэмдэглээд дараах алхмуудыг гүйцэтгэнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Эхлээд a[I]=I үйлдлийг давтан {1,2, …, m} хэсэглэлийг 
байгуулна. 
2. Өмнөх алхамд гарсан хэсэглэлийн a(m) элементийн утгыг 1 
алхамтайгаар n хүртэл нэмэгдүүлж дараачийн хэсэглэлүүдийг 
байгуулна. Энэ алхмыг гүйцэтгэснээр зөвхөн эцсийн элеметээрээ 
ялгаатай n-m ширхэг хэсэглэлүүд гарна. 
3. 2-р алхмын эцэст гарсан хэсэглэлийн a(m-1) элементийн утгыг 1 
алхамтайгаар n хүртэл нэмэгдүүдэх бүрт а(m)-д эхлээд a(m-1)+1 
утгыг өгч 2-р алхмын үйлдлийг давтан гүйцэтгэнэ. Үүний дүнд 
сүүлийн элементээрээ ялгаатай хэсэглэлүүд гарна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
4. 3-р алхмын эцэст гарсан a(m-2) элементийн утгыг мөн 1 
алхамтайгаар n хүртэл нэмэгдүүлэх бүрт өмнөх хоёр алхамын 
үйлдлүүдийг давтан хийнэ. Үүний дүнд сүүлийн гурван 
элементээр ялгаатай хэсэглэлүүд үүснэ. Цааш нь дээр дээр 
дурьдсантай адилаар дараа дараачийн бүлэг хэсэглэлүүдийг 
байгуулах бөгөөд хамгийн эцэст {n-m+1, n-m+2, n-1, n} хэсэглэл 
үүсч бодолт дуусна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
2-р арга. Өгсөн n элементтэй олонлогийн хэсэглэлийн тоо нь 1-ээс 
n хүртэлх натурал тоонуудаас зохиосон m элементтэй өсөх 
дараалал харгалзуулж болно. Үнэндээ 1-ээс n хүртэлх натурал 
тоонуудаас зохиосон m элементтэй хэсэглэлүүдийг өсөх 
дарааллуудыг байгуулах асуудал болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Буцаалттай түүврийн алгоритм, програм 
Өгсөн олонлогийн элементүүд нь давтагдаж болох эрэмбэлэгдсэн дэд 
олонлогийг буцаалттай түүвэр гэнэ. Буцаалттай түүврүүд нь 
элементүүдийн бүрэлдэхүүнээр эсвэл элементүүдийнхээ байрлалаар 
ялгаатай байна. 
Жишээ нь (a,b) олонлогийн 2 элементтэй буцаалттай түүврүүд 
нь (a,a), (a,b), (b,a), (b,b) гэсэн түүврүүд байна. Хослолын онол ёсоор 
n элемент бүхий олонлогийн элементүүдээр байгуулсан m 
элементтэй буцаалттай түүврийн нийт тоо нь nm-байна. Энд n ба m 
хүрэлцээтэй их тоо үед бүх түүврийг байгуулах нь санах ой болон 
хугацааны хувьд хүндрэлтэй асуудал бөгөөд үүний биелэгдэх хугацаа 
нь nm-тэй ижил эрэмбийн хэмжигдэхүүн байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Энд n ба m хүрэлцээтэй их тоо үед бүх түүврийг байгуулах нь санах ой 
болон хугацааны хувьд хүндрэлтэй асуудал бөгөөд буцаалттай түүвэр 
байгуулах алгоритмын биелэгдэх хугацаа нь nm-тэй ижил эрэмбийн 
хэмжигдэхүүн байдаг. Ийм шинж чанартай бодлогуудыг олон 
гишүүнтийн бус (NP-nonpolynominal) эрэмбийн бодлого гэдэг. Харин 
алгоритмын биелэгдэх хугацаа нь n-ийн тогтмол зэрэгтээр 
илэрхийлэгдэж байгаа алгоритмыг олон гишүүнтийн эрэмбийн 
алгоритм гэж ярьдаг. Хэдийгээр буцаалттай түүвэр байгуулах нь NP 
эрэмбийн асуудал боловч буцаалттай түүвэр байгуулах алгоритмууд 
байдаг гэдгийг харуулахын үүднээс буцаалттай түүврийн нэгэн 
алгоритмыг авч үзье. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хэрвээ {1,2,....,n} олонлогийн m элементтэй буцаалттай бүх 
түүврийг байгуулчихсан гэж үзвэл эдгээр түүвэр бүрийн хувьд 
түүврийн элементүүдтэй дугаар нь тэнцүү байх элементүүдийг 
өгсөн олонлогоос түүж авах замаар өгсөн олонлогийн 
буцаалттай бүх түүврүүдийг олж болно. Иймээс эхлээд n 
хүртэлх натурал тоонуудаас зохиосон m элемент бүхий 
буцаалттай түүврүүдийг байгуулъя. Үүний тулд n хүртэлх 
натурал тоонуудын олонлогоос байгуулсан ямар нэгэн 
буцаалттай түүврийг хадгалах хүснэгтийг b(1..m) гэж 
тэмдэглээд энэ хүснэгтийн бүх элементүүдэд 1 гэсэн утгыг 
олгон дараах үйлдлүүдийг гүйцэтгэе. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Түүврийн зөвхөн m-р элементийн утгыг 1 алхамтайгаар n 
хүртэл өөрчилнө. Ингэхэд m-р элементээрээ ялгаатай n ширхэг 
түүвэр үүснэ. 
2. 1-р алхмын эцэст гарсан түүврийн m-р элементийн утгыг 1 
болгоод (m-1)-р элементийн утгыг мөн n хүртэл 1 алхмаар 
нэмэгдүүлэх бүрт 1-р алхамыг давтана. Үүний үр дүнд сүүлчийн 2 
элементээрээ ялгаатай түүврүүд гарна. 
3. 2-р алхамын төгсгөлд гарсан түүврийн (m-1) ба m-р 
элементүүдийг буцааж 1-ээр солиод (m-2)-р элементийн утгыг n 
хүртэл 1 алхамтайгаар ихэсгэх болгонд өмнөх алхмуудыг эхнээс 
нь давтана. Ингэснээр сүүлчийн 3 элементээрээ ялгаатай түүврүүд 
гарна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Дэд дарааллыг байгуулах 
Алгоритм, программ зохиоход өгсөн дарааллын бүх дэд дарааллыг 
байгуулан бодох бодлогууд нэлээд тохиолддог. Бид n элементтэй 
дарааллын дэд дарааллуудын нийт тоо нь 2n-1 байна гэдгийг харж 
болно. Нөгөө талаас {0,1} олонлогийн ядаж нэг элемент нь тэгээс 
ялгаатай бөгөөд n элементтэй буцаалттай түүврүүдийн нийт тоо 
нь дээрх тоотой тэнцүү байна. Иймээс дэд дарааллууд ба 
буцаалттай түүврүүдийн хооронд харилцан нэгэн утгатай 
харгалзааг тогтоож болно. 
Текст боловсруулах 
Энэ сэдэвт текстээс мөр хайх, текстийг шахаж хадгалах 
зарим алгоритмыг авч үзэх болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Дэд мөрүүдийг хайх аргууд 
Текст боловсруулах явцад текстээс үг, өгүүлбэр хайх шаардлага 
өргөн тохиолддог. Ийм бодлогыг дэд мөр хайх бодлого гэдэг ба 
энэ нь текст боловсруулах сонгомол бодлогуудын нэг юм. Дэд мөр 
хайх Шууд хайлтын, Кнут-Моррис-Праттын, Рабины, Симоны гэх 
мэт сонгомол аргууд байдаг бөгөөд эдгээрээс эхний 2 аргыг авч 
үзье. 
1-р арга. Энэ аргын үндсэн санаа бол 2-р мөрийн тэмдэгтүүдийг 
дэс дараалан 1-р мөрийн тэмдэгтүүдтэй жиших явдал юм. 2-р 
мөртэй тэнцүү байгаа 1-р мөрийн дэд мөрийн эхний тэмдэгтийн 
дугаарыг олж хэвлэх ёстой. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Ийм дугаарууд хэд хэд байж болохын зэрэгцээ дэд мөр огт 
байхгүй байж болно. 2-р мөрийг s-ээр, уртыг м-ээр, түүний 
дурын тэмдэгтийн дугаар ыг J-ээр,1-р мөрийг T-ээр, уртыг 
нь n-ээр, 1-р мөрөнд байгаа 2-р мөрийн тоог к-ээр тус тус 
хаяглав. Тэгвэл I<= I<=T, I<=J<=n-m+1 байх ба I,J-ийн 
эдгээрийг утгуудад T(I+J-1)=S(I) жиших үйлдлийг хийнэ. Энэ 
үйлдлийг (n-m+1)m удаа хийнэ гэдгийг харж болно. Эндээс 
алгоритмыг дараах хэлбэрээр бичиж чадна. Энэ алгоритмд 
хийх гол үйлдэл бол мөрүүдийн тэмдэгтүүдийг хооронд нь 
жиших үйлдэл бөгөөд энэ үйлдлийн тоо нь (n-m+1)m гэдгийг 
дээр тэмдэглэсэн билээ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
2-р арга. Префикс функцийн чанар дээр тулгуурлан текстээс мөр 
хайх нэгэн аргыг Кнут, Моррис, Пратт нар болвсруулсан байдаг. 
Кнут-Моррис-Праттын алгоритмд дараах ойлголтуудыг хэрэглэн 
өгсөн мөрийн префикс функцыг байгуулдаг. 
Тодорхойлолт 1. Хэрвээ S,X-мөрүүдийн хувьд S мөр нь X мөр 
дээр хоосон биш ямар нэгэн мөрийг нэмсэнтэй тэнцүү байвал X- 
мөрийг S мөрийн угтвар гэж нэрлээд X|-S гэж тэмдэглэнэ. 
Мөр ба түүний угтварын уртыг харгалзан n,m гэж тэмдэглэвэл 
0<=m<=n байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хоосон мөр нь аливаа мөрийн угтварболно. Ганц тэмдэгтээс 
тогтох мөрийн угтвар нь хоосон мөр байна. 
Жишээ нь: ababcde = aba+bcde тул aba нь aba нь ababcde мөрийн 
нэгэн угтвар болно. Бас ababcde= ab+abcde тул ав нь уг мөрийн 
бас нэг өөр угтвар болно. 
Тодорхойлолт 2: Хэрвээ S,Y мөрүүдийн хувьд S мөр нь хоосон 
биш ямар нэгэн мөр дээр Y мөрийг нэмсэнтэй тэнцүү байвал Ү- 
ийг S мөрийн төгсгөл гэж нэрлээд Y -| S гэж тэмдэглэдэг. 
Жишээ нь ababcde=ab+abcde тул abcde нь ababcde мөрийн нэгэн 
төгсгөл болно. Бас ababcde = abab+cde тул cde нь ababcde мөрийн 
бас нэг төгсгөл болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
S мөрийн эхний k ширхэг тэмдэгтээс тогтох дэд мөрийг Si-ээр, Sk- 
ийн төгсгөл бөгөөд S мөрийн угтвар болж байгаа хамгийн урт 
мөрийг Sik-ээр тус тус тэмдэглэе. 
Тодорхойлолт 3. Sk дэд мөрийн урт k бүрт Sik дэд мөрийн урт I-ийг 
харгалзуулан харгалзуулан харгалзааг S мөр дээр тодорхойлогдсон 
префикс функц гэнэ. Префикс функцийн утгыг f(k) гэж 
тэмдэглэнэ. 
Жишээ нь: Дээр авч үзсэн ababcde мөрийн хувьд S1=a, S2=ab, 
S3=aba, S4=abab, S5=ababc, S6=ababcd, S7=ababcde байна. Тэгвэл S1 
дэд мөрийн төгсгөл, өгсөн S мөрийн угтвар мөр нь ердөө хоосон 
мөр тул f(1)=0 байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Цааш нь S2 дэд мөрийн хувьд f(2)=0 гэдгийг хялбархан олж 
чадна. Харин S3-ийн төгсгөл бөгөөд анхны мөрийн угтвар болдог 
мөрүүд нь хоосон мөр, a гэсэн 2 мөр байна. Эдгээрээс хамгийн 
урт мөр нь S1 байна. Иймээс f(3)=1 болно. Цааш нь S4 дэд 
мөрийн төгсгөл бөгөөд анхны мөрийн угтвар болдог мөр нь 
хоосон, мөн S2 буюу ab гэсэн мөр байна. Эдгээрийн хамгийн урт 
мөр нь ab тул f(4) =2 байна. Цааш нь эдгээртэй адилаар f(5)=0, 
f(6)=0, f(7)=0 гэж олж болно. Аливаа мөрийн префикс функцийн утгууд 
нь тухайн мөр дотор давтагдан орсон угтваруудын тухай мэдээллийг 
илэрхийлдэг гэж хэлж болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Нөгөө талаар префикс функцын утгууд нь текстээс мөр хайж 
олох бодлогыг бодох нэгэн арга замыг дам байдлаар зааж өгнө. 
Тухайлбал дээрх жишээний хувьд f(4)=2 байгаа нь уг мөрийн 
эхний 4 тэмдэгтээс тогтох дэд мөр дотор давтагдаж орсон 
мөрүүдийн хамгийн урт нь 2 гэсэн хэрэг юм. Энэ нь ямар нэгэн 
текстээс уг мөрийг хайж олоход уг мөрийн тэмдэгт бүрийг хайх 
хэрэггүй бөгөөд зөвхөн эхний 2 тэмдэгтийг л текстээс хайж 
олох хэрэгтэй гэдгийг илэрхийлнэ. Энэ санаан дээр тулгуурлан 
текстээс мөр хайх алгоритм нь мөрийн префикс функцийн 
утгуудыг олох, мөр хайх гэсэн 2 хэсгээс тогтоно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Өгсөн мөрийн уртыг m-р, өгсөн мөрөөс сонгож авах дэд 
мөрийн тэмдэгтийн тоог k-р, префикс функцийн энэ тоонд 
харгалзах утга буюу f[k]-д олгох утгыг j-р тус тус тэмдэглэе. 
Өгсөн мөрийн эхний ганц тэмдэгтээс тогтох дэд мөрийн угтвар 
бөгөөд төгсгөл болдог хамгийн урт мөр нь хоосон мөр тул f(1)=0 
байна. Эдгээр тэмдэглэгээг хэрэглээд өгсөн мөрийн префикс 
функцийн утгуудыг олох дэд алгоритмыг дараах хэлбэрээр зохиож 
болно. Мөрийн префикс функцийн утгыг олох алгоритмын 
биелэгдэх хугацаа нь мөрийн тэмдэгтүүдийг хооронд нь жиших 
үйлдлийн тооноос хамаарна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Тэмдэгтүүдийг жиших үйлдлийн тоо нь мөрийнхөө уртаар 
тодорхойлогдох тул m тэмдэгт бүхий мөрийн префикс функцийн 
утгуудыг олох алгоритмын биелэгдэх хугацаа нь m-тэй ижил 
эрэмбийн байна. 
2. Өгсөн мөрийн префикс функцийн утга f(k) нь өгсөн мөрийн эхний 
k ширхэг тэмдэгтүүдээс тогтох мөрийн төгсгөл бөгөөд өгсөн мөрийн 
эхлэл болдог хамгийн урт дэд мөрийн тэмдэгтүүдийн тоог 
илэрхийлнэ. Иймээс префикс функцийн утгыг ашиглавал өгсөн 
мөрийн тэмдэгт бүрийг текстээс хайх шаардлагагүй юм. Бид өгсөн 
мөрийн префикс функцийн утгуудыг олох дээрх дэд алгоритмыг 
хэрэглээд текстээс мөр хайж олох алгоритмыг дараах хэлбэрээр 
зохиож чадна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ

More Related Content

What's hot

U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
Badral Khurelbaatar
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
Khuder Altangerel
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
Muuluu
 

What's hot (20)

It101 lec6 10.06
It101 lec6 10.06It101 lec6 10.06
It101 lec6 10.06
 
U.cs101 алгоритм программчлал-1(1)
U.cs101   алгоритм программчлал-1(1)U.cs101   алгоритм программчлал-1(1)
U.cs101 алгоритм программчлал-1(1)
 
U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
 
Лекц 2 (Блок схем)
Лекц 2 (Блок схем)Лекц 2 (Блок схем)
Лекц 2 (Блок схем)
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
 
Lab3 it101
Lab3 it101Lab3 it101
Lab3 it101
 
мэдээллийн технологи 1 тест
мэдээллийн технологи 1 тестмэдээллийн технологи 1 тест
мэдээллийн технологи 1 тест
 
Systemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lektsSystemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lekts
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
 
алгоритм үндсэн ойлголт
алгоритм үндсэн ойлголталгоритм үндсэн ойлголт
алгоритм үндсэн ойлголт
 
It101 9
It101 9It101 9
It101 9
 
Лекц 4 (Тооллын Систем)
Лекц 4 (Тооллын Систем)Лекц 4 (Тооллын Систем)
Лекц 4 (Тооллын Систем)
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Smallbasic
SmallbasicSmallbasic
Smallbasic
 
Тоон электроник /монгол/
Тоон электроник /монгол/Тоон электроник /монгол/
Тоон электроник /монгол/
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
 
C cons
C consC cons
C cons
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2т
 

Similar to U.cs101 алгоритм программчлал-15

U.cs101 алгоритм программчлал-9
U.cs101   алгоритм программчлал-9 U.cs101   алгоритм программчлал-9
U.cs101 алгоритм программчлал-9
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-13
U.cs101   алгоритм программчлал-13U.cs101   алгоритм программчлал-13
U.cs101 алгоритм программчлал-13
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-5
U.cs101   алгоритм программчлал-5U.cs101   алгоритм программчлал-5
U.cs101 алгоритм программчлал-5
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-14
U.cs101   алгоритм программчлал-14U.cs101   алгоритм программчлал-14
U.cs101 алгоритм программчлал-14
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
Badral Khurelbaatar
 
Dadlagyn xotolbor zagvar
Dadlagyn xotolbor zagvarDadlagyn xotolbor zagvar
Dadlagyn xotolbor zagvar
dagiisangir
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
swf_cloud
 

Similar to U.cs101 алгоритм программчлал-15 (20)

U.cs101 алгоритм программчлал-9
U.cs101   алгоритм программчлал-9 U.cs101   алгоритм программчлал-9
U.cs101 алгоритм программчлал-9
 
U.cs101 алгоритм программчлал-13
U.cs101   алгоритм программчлал-13U.cs101   алгоритм программчлал-13
U.cs101 алгоритм программчлал-13
 
U.cs101 lection-8
U.cs101  lection-8 U.cs101  lection-8
U.cs101 lection-8
 
U.cs101 алгоритм программчлал-5
U.cs101   алгоритм программчлал-5U.cs101   алгоритм программчлал-5
U.cs101 алгоритм программчлал-5
 
U.cs101 алгоритм программчлал-14
U.cs101   алгоритм программчлал-14U.cs101   алгоритм программчлал-14
U.cs101 алгоритм программчлал-14
 
Pp Lect9 10 1
Pp Lect9 10 1Pp Lect9 10 1
Pp Lect9 10 1
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
 
Pp Lect10 11
Pp Lect10 11Pp Lect10 11
Pp Lect10 11
 
1
11
1
 
It101-1
It101-1It101-1
It101-1
 
It101 lects 2
It101 lects 2It101 lects 2
It101 lects 2
 
It101-2
It101-2It101-2
It101-2
 
Mathcad beginning-appendix
Mathcad beginning-appendixMathcad beginning-appendix
Mathcad beginning-appendix
 
U.cs101 lecture 6
U.cs101   lecture 6U.cs101   lecture 6
U.cs101 lecture 6
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 
Лекц №4
Лекц №4Лекц №4
Лекц №4
 
Dadlagyn xotolbor zagvar
Dadlagyn xotolbor zagvarDadlagyn xotolbor zagvar
Dadlagyn xotolbor zagvar
 
Laboratory 2
Laboratory 2Laboratory 2
Laboratory 2
 
Mathcad beginning-part1
Mathcad beginning-part1Mathcad beginning-part1
Mathcad beginning-part1
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
 

U.cs101 алгоритм программчлал-15

  • 1. ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ, Е-НЭЭЛТТЭЙ ИНСТИТУТ Бусад стандарт алгоритм, хэрэглээ, тэдгээрийг ашиглан асуудлыг шийдвэрлэх Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ www.emust.edu.mn Лекц – 15
  • 2. Агуулга: 01 Комбинаторикийн алгоритм Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ www.emust.edu.mn 01 02 02 Сэлгэмэл байгуулах арга 03 Буцаалттай түүврийн алгоритм 04 Дэд мөрийг хайх аргууд
  • 3. Судлах зүйл: Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 4. Эрэмбэлэлт, хайлтаас бусад алгоритм Комбинаторикийн алгоритм, программууд Алгоритм ба программчлалын зарим бодлогуудыг бодоход өгсөн олонлогийн түүврүүдийг байгуулах шаардлага гардаг. Төгсгөлөг тооны элементтэй олонлогийн элементүүдээр тодорхой дүрмээр төгслөг тооны элемент бүхий дэд олонлог байгуулах аргуудыг хослолын онолд авч үздэг. Байгуулж байгаа дэд олонлогт өгсөн олонлогийн элементүүд давхардаж орохгүй гэсэн нөхцөлтэйгээр үүсэх дэд олонлогуудыг буцаалтгүй түүвэр гэнэ. Буцаалтгүй түүврийн энгийн хэлбэрүүд нь сэлгэмэл, хэсэглэл, гүйлгэмэл юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 5. Тодорхойлолт 1. n элементтэй олонлогийн n элементтэй эрэмбэлэгдсэн дэд олоногийг сэлгэмэл гэнэ. Тодорхойлолт 2. n элементтэй олонлогийн m элементтэй дэд олонлогийн хэсэглэл гэнэ. Тодорхойлолт 3. n элементтэй олонлогийн m элементтэй эрэмбэлэгдсэн дэд олонлогийг гүйлгэмэл гэнэ. N элементтэй олонлогийн сэлгэмэл, хэсэглэл, гүйлгэмэлийг байгуулах асуудал нь 1-ээс n хүртэлх натурал тоонуудаас зохиосон сэлгэмэл, хэсэглэл, гүйлгэмлийг байгуулах асуудалд шилждэг. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 6. Сэлгэмэл байгуулах аргууд 1-р арга. Энэ аргын үндсэн санаа нь дараах хоёр үйлдэл юм. 1-р үе шат. Байгуулах сэлгэмэлийн a(1), a(2), …. , a(I-1) элементүүдэд тодорхой утгуудыг олгосон, харин a(I), …, a(n) элементүүдэд утга олгоогүй гэж үзээд дараах алхмуудыг гүйцэтгэнэ. 2-р үе шат. Нэгэн сэлгэмлийг байгуулсны дараа шинэ сэлгэмлийг байгуулахын тулд дараах алхамуудыг гүйцэтгэнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 7. Хэсэглэл байгуулах аргууд Алгоритм, программчлалд өгсөн олонлогоос тодорхойлох тооны элемент бүхий дэд олонлогуудыг байгуулах бодлого өргөн тохиолддог. Ийм бодлогуудыг бодох асуудал нь 1-ээс n хүртэлх натурал тоонуудын олонлогоос зохиосон m элементтэй дэд олонлогуудыг байгуулах бодлогод шилждэг тул натурал тоонуудаас зохиосон хэсэглэлийг байгуулах хоёр хялбар аргыг авч үзье. 1-р арга 1-ээс n хүртэлх натурал тоонуудаас зохиосон m элементтэй нэгэн хэсэглэлийг хадгалах хүснэгтийг a(1...m)-ээр тэмдэглээд дараах алхмуудыг гүйцэтгэнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 8. 1. Эхлээд a[I]=I үйлдлийг давтан {1,2, …, m} хэсэглэлийг байгуулна. 2. Өмнөх алхамд гарсан хэсэглэлийн a(m) элементийн утгыг 1 алхамтайгаар n хүртэл нэмэгдүүлж дараачийн хэсэглэлүүдийг байгуулна. Энэ алхмыг гүйцэтгэснээр зөвхөн эцсийн элеметээрээ ялгаатай n-m ширхэг хэсэглэлүүд гарна. 3. 2-р алхмын эцэст гарсан хэсэглэлийн a(m-1) элементийн утгыг 1 алхамтайгаар n хүртэл нэмэгдүүдэх бүрт а(m)-д эхлээд a(m-1)+1 утгыг өгч 2-р алхмын үйлдлийг давтан гүйцэтгэнэ. Үүний дүнд сүүлийн элементээрээ ялгаатай хэсэглэлүүд гарна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 9. 4. 3-р алхмын эцэст гарсан a(m-2) элементийн утгыг мөн 1 алхамтайгаар n хүртэл нэмэгдүүлэх бүрт өмнөх хоёр алхамын үйлдлүүдийг давтан хийнэ. Үүний дүнд сүүлийн гурван элементээр ялгаатай хэсэглэлүүд үүснэ. Цааш нь дээр дээр дурьдсантай адилаар дараа дараачийн бүлэг хэсэглэлүүдийг байгуулах бөгөөд хамгийн эцэст {n-m+1, n-m+2, n-1, n} хэсэглэл үүсч бодолт дуусна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 10. 2-р арга. Өгсөн n элементтэй олонлогийн хэсэглэлийн тоо нь 1-ээс n хүртэлх натурал тоонуудаас зохиосон m элементтэй өсөх дараалал харгалзуулж болно. Үнэндээ 1-ээс n хүртэлх натурал тоонуудаас зохиосон m элементтэй хэсэглэлүүдийг өсөх дарааллуудыг байгуулах асуудал болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 11. Буцаалттай түүврийн алгоритм, програм Өгсөн олонлогийн элементүүд нь давтагдаж болох эрэмбэлэгдсэн дэд олонлогийг буцаалттай түүвэр гэнэ. Буцаалттай түүврүүд нь элементүүдийн бүрэлдэхүүнээр эсвэл элементүүдийнхээ байрлалаар ялгаатай байна. Жишээ нь (a,b) олонлогийн 2 элементтэй буцаалттай түүврүүд нь (a,a), (a,b), (b,a), (b,b) гэсэн түүврүүд байна. Хослолын онол ёсоор n элемент бүхий олонлогийн элементүүдээр байгуулсан m элементтэй буцаалттай түүврийн нийт тоо нь nm-байна. Энд n ба m хүрэлцээтэй их тоо үед бүх түүврийг байгуулах нь санах ой болон хугацааны хувьд хүндрэлтэй асуудал бөгөөд үүний биелэгдэх хугацаа нь nm-тэй ижил эрэмбийн хэмжигдэхүүн байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 12. Энд n ба m хүрэлцээтэй их тоо үед бүх түүврийг байгуулах нь санах ой болон хугацааны хувьд хүндрэлтэй асуудал бөгөөд буцаалттай түүвэр байгуулах алгоритмын биелэгдэх хугацаа нь nm-тэй ижил эрэмбийн хэмжигдэхүүн байдаг. Ийм шинж чанартай бодлогуудыг олон гишүүнтийн бус (NP-nonpolynominal) эрэмбийн бодлого гэдэг. Харин алгоритмын биелэгдэх хугацаа нь n-ийн тогтмол зэрэгтээр илэрхийлэгдэж байгаа алгоритмыг олон гишүүнтийн эрэмбийн алгоритм гэж ярьдаг. Хэдийгээр буцаалттай түүвэр байгуулах нь NP эрэмбийн асуудал боловч буцаалттай түүвэр байгуулах алгоритмууд байдаг гэдгийг харуулахын үүднээс буцаалттай түүврийн нэгэн алгоритмыг авч үзье. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 13. Хэрвээ {1,2,....,n} олонлогийн m элементтэй буцаалттай бүх түүврийг байгуулчихсан гэж үзвэл эдгээр түүвэр бүрийн хувьд түүврийн элементүүдтэй дугаар нь тэнцүү байх элементүүдийг өгсөн олонлогоос түүж авах замаар өгсөн олонлогийн буцаалттай бүх түүврүүдийг олж болно. Иймээс эхлээд n хүртэлх натурал тоонуудаас зохиосон m элемент бүхий буцаалттай түүврүүдийг байгуулъя. Үүний тулд n хүртэлх натурал тоонуудын олонлогоос байгуулсан ямар нэгэн буцаалттай түүврийг хадгалах хүснэгтийг b(1..m) гэж тэмдэглээд энэ хүснэгтийн бүх элементүүдэд 1 гэсэн утгыг олгон дараах үйлдлүүдийг гүйцэтгэе. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 14. 1. Түүврийн зөвхөн m-р элементийн утгыг 1 алхамтайгаар n хүртэл өөрчилнө. Ингэхэд m-р элементээрээ ялгаатай n ширхэг түүвэр үүснэ. 2. 1-р алхмын эцэст гарсан түүврийн m-р элементийн утгыг 1 болгоод (m-1)-р элементийн утгыг мөн n хүртэл 1 алхмаар нэмэгдүүлэх бүрт 1-р алхамыг давтана. Үүний үр дүнд сүүлчийн 2 элементээрээ ялгаатай түүврүүд гарна. 3. 2-р алхамын төгсгөлд гарсан түүврийн (m-1) ба m-р элементүүдийг буцааж 1-ээр солиод (m-2)-р элементийн утгыг n хүртэл 1 алхамтайгаар ихэсгэх болгонд өмнөх алхмуудыг эхнээс нь давтана. Ингэснээр сүүлчийн 3 элементээрээ ялгаатай түүврүүд гарна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 15. Дэд дарааллыг байгуулах Алгоритм, программ зохиоход өгсөн дарааллын бүх дэд дарааллыг байгуулан бодох бодлогууд нэлээд тохиолддог. Бид n элементтэй дарааллын дэд дарааллуудын нийт тоо нь 2n-1 байна гэдгийг харж болно. Нөгөө талаас {0,1} олонлогийн ядаж нэг элемент нь тэгээс ялгаатай бөгөөд n элементтэй буцаалттай түүврүүдийн нийт тоо нь дээрх тоотой тэнцүү байна. Иймээс дэд дарааллууд ба буцаалттай түүврүүдийн хооронд харилцан нэгэн утгатай харгалзааг тогтоож болно. Текст боловсруулах Энэ сэдэвт текстээс мөр хайх, текстийг шахаж хадгалах зарим алгоритмыг авч үзэх болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 16. Дэд мөрүүдийг хайх аргууд Текст боловсруулах явцад текстээс үг, өгүүлбэр хайх шаардлага өргөн тохиолддог. Ийм бодлогыг дэд мөр хайх бодлого гэдэг ба энэ нь текст боловсруулах сонгомол бодлогуудын нэг юм. Дэд мөр хайх Шууд хайлтын, Кнут-Моррис-Праттын, Рабины, Симоны гэх мэт сонгомол аргууд байдаг бөгөөд эдгээрээс эхний 2 аргыг авч үзье. 1-р арга. Энэ аргын үндсэн санаа бол 2-р мөрийн тэмдэгтүүдийг дэс дараалан 1-р мөрийн тэмдэгтүүдтэй жиших явдал юм. 2-р мөртэй тэнцүү байгаа 1-р мөрийн дэд мөрийн эхний тэмдэгтийн дугаарыг олж хэвлэх ёстой. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 17. Ийм дугаарууд хэд хэд байж болохын зэрэгцээ дэд мөр огт байхгүй байж болно. 2-р мөрийг s-ээр, уртыг м-ээр, түүний дурын тэмдэгтийн дугаар ыг J-ээр,1-р мөрийг T-ээр, уртыг нь n-ээр, 1-р мөрөнд байгаа 2-р мөрийн тоог к-ээр тус тус хаяглав. Тэгвэл I<= I<=T, I<=J<=n-m+1 байх ба I,J-ийн эдгээрийг утгуудад T(I+J-1)=S(I) жиших үйлдлийг хийнэ. Энэ үйлдлийг (n-m+1)m удаа хийнэ гэдгийг харж болно. Эндээс алгоритмыг дараах хэлбэрээр бичиж чадна. Энэ алгоритмд хийх гол үйлдэл бол мөрүүдийн тэмдэгтүүдийг хооронд нь жиших үйлдэл бөгөөд энэ үйлдлийн тоо нь (n-m+1)m гэдгийг дээр тэмдэглэсэн билээ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 18. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 19. 2-р арга. Префикс функцийн чанар дээр тулгуурлан текстээс мөр хайх нэгэн аргыг Кнут, Моррис, Пратт нар болвсруулсан байдаг. Кнут-Моррис-Праттын алгоритмд дараах ойлголтуудыг хэрэглэн өгсөн мөрийн префикс функцыг байгуулдаг. Тодорхойлолт 1. Хэрвээ S,X-мөрүүдийн хувьд S мөр нь X мөр дээр хоосон биш ямар нэгэн мөрийг нэмсэнтэй тэнцүү байвал X- мөрийг S мөрийн угтвар гэж нэрлээд X|-S гэж тэмдэглэнэ. Мөр ба түүний угтварын уртыг харгалзан n,m гэж тэмдэглэвэл 0<=m<=n байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 20. Хоосон мөр нь аливаа мөрийн угтварболно. Ганц тэмдэгтээс тогтох мөрийн угтвар нь хоосон мөр байна. Жишээ нь: ababcde = aba+bcde тул aba нь aba нь ababcde мөрийн нэгэн угтвар болно. Бас ababcde= ab+abcde тул ав нь уг мөрийн бас нэг өөр угтвар болно. Тодорхойлолт 2: Хэрвээ S,Y мөрүүдийн хувьд S мөр нь хоосон биш ямар нэгэн мөр дээр Y мөрийг нэмсэнтэй тэнцүү байвал Ү- ийг S мөрийн төгсгөл гэж нэрлээд Y -| S гэж тэмдэглэдэг. Жишээ нь ababcde=ab+abcde тул abcde нь ababcde мөрийн нэгэн төгсгөл болно. Бас ababcde = abab+cde тул cde нь ababcde мөрийн бас нэг төгсгөл болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 21. S мөрийн эхний k ширхэг тэмдэгтээс тогтох дэд мөрийг Si-ээр, Sk- ийн төгсгөл бөгөөд S мөрийн угтвар болж байгаа хамгийн урт мөрийг Sik-ээр тус тус тэмдэглэе. Тодорхойлолт 3. Sk дэд мөрийн урт k бүрт Sik дэд мөрийн урт I-ийг харгалзуулан харгалзуулан харгалзааг S мөр дээр тодорхойлогдсон префикс функц гэнэ. Префикс функцийн утгыг f(k) гэж тэмдэглэнэ. Жишээ нь: Дээр авч үзсэн ababcde мөрийн хувьд S1=a, S2=ab, S3=aba, S4=abab, S5=ababc, S6=ababcd, S7=ababcde байна. Тэгвэл S1 дэд мөрийн төгсгөл, өгсөн S мөрийн угтвар мөр нь ердөө хоосон мөр тул f(1)=0 байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 22. Цааш нь S2 дэд мөрийн хувьд f(2)=0 гэдгийг хялбархан олж чадна. Харин S3-ийн төгсгөл бөгөөд анхны мөрийн угтвар болдог мөрүүд нь хоосон мөр, a гэсэн 2 мөр байна. Эдгээрээс хамгийн урт мөр нь S1 байна. Иймээс f(3)=1 болно. Цааш нь S4 дэд мөрийн төгсгөл бөгөөд анхны мөрийн угтвар болдог мөр нь хоосон, мөн S2 буюу ab гэсэн мөр байна. Эдгээрийн хамгийн урт мөр нь ab тул f(4) =2 байна. Цааш нь эдгээртэй адилаар f(5)=0, f(6)=0, f(7)=0 гэж олж болно. Аливаа мөрийн префикс функцийн утгууд нь тухайн мөр дотор давтагдан орсон угтваруудын тухай мэдээллийг илэрхийлдэг гэж хэлж болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 23. Нөгөө талаар префикс функцын утгууд нь текстээс мөр хайж олох бодлогыг бодох нэгэн арга замыг дам байдлаар зааж өгнө. Тухайлбал дээрх жишээний хувьд f(4)=2 байгаа нь уг мөрийн эхний 4 тэмдэгтээс тогтох дэд мөр дотор давтагдаж орсон мөрүүдийн хамгийн урт нь 2 гэсэн хэрэг юм. Энэ нь ямар нэгэн текстээс уг мөрийг хайж олоход уг мөрийн тэмдэгт бүрийг хайх хэрэггүй бөгөөд зөвхөн эхний 2 тэмдэгтийг л текстээс хайж олох хэрэгтэй гэдгийг илэрхийлнэ. Энэ санаан дээр тулгуурлан текстээс мөр хайх алгоритм нь мөрийн префикс функцийн утгуудыг олох, мөр хайх гэсэн 2 хэсгээс тогтоно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 24. 1. Өгсөн мөрийн уртыг m-р, өгсөн мөрөөс сонгож авах дэд мөрийн тэмдэгтийн тоог k-р, префикс функцийн энэ тоонд харгалзах утга буюу f[k]-д олгох утгыг j-р тус тус тэмдэглэе. Өгсөн мөрийн эхний ганц тэмдэгтээс тогтох дэд мөрийн угтвар бөгөөд төгсгөл болдог хамгийн урт мөр нь хоосон мөр тул f(1)=0 байна. Эдгээр тэмдэглэгээг хэрэглээд өгсөн мөрийн префикс функцийн утгуудыг олох дэд алгоритмыг дараах хэлбэрээр зохиож болно. Мөрийн префикс функцийн утгыг олох алгоритмын биелэгдэх хугацаа нь мөрийн тэмдэгтүүдийг хооронд нь жиших үйлдлийн тооноос хамаарна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 25. Тэмдэгтүүдийг жиших үйлдлийн тоо нь мөрийнхөө уртаар тодорхойлогдох тул m тэмдэгт бүхий мөрийн префикс функцийн утгуудыг олох алгоритмын биелэгдэх хугацаа нь m-тэй ижил эрэмбийн байна. 2. Өгсөн мөрийн префикс функцийн утга f(k) нь өгсөн мөрийн эхний k ширхэг тэмдэгтүүдээс тогтох мөрийн төгсгөл бөгөөд өгсөн мөрийн эхлэл болдог хамгийн урт дэд мөрийн тэмдэгтүүдийн тоог илэрхийлнэ. Иймээс префикс функцийн утгыг ашиглавал өгсөн мөрийн тэмдэгт бүрийг текстээс хайх шаардлагагүй юм. Бид өгсөн мөрийн префикс функцийн утгуудыг олох дээрх дэд алгоритмыг хэрэглээд текстээс мөр хайж олох алгоритмыг дараах хэлбэрээр зохиож чадна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 26. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ

Editor's Notes

  1. Cover 1