Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 40

ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ,

Е-НЭЭЛТТЭЙ ИНСТИТУТ

Алгоритм ба програмчлал

Лекц – Алгоритмын
загварчлал

www.emust.edu.mn
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
U.CS101- Алгоритм ба програмчлал

Сэдэв: Алгоритмын загварчлал

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


www.emust.edu.mn
Агуулга:

01 Алгоритмыг шинжлэх нь
01
02
02 Хуваах-ба-эзлэх арга

03 Хуваах-ба-эзлэх алгоритмыг шинжлэх нь

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


www.emust.edu.mn
Алгоритмыг загварчлах нь
Алгоритмыг загварчлах олон арга замууд байдаг.
Олон улсад стандарт болсон сонгодог алгоритмыг үзье.
• Оруулах эрэмбэлэлт нь өсөлттэй арга барилыг ашигладаг бөгөөд
ингэхдээ A[1, j – 1] гэсэн дэд матрицыг эрэмбэлж авахын тулд, A[j]
ганц элементийг өөрийнх нь зохих газарт оруулж, A[1, j] гэсэн дэд
матрицыг гаргаж авдаг.
• Энд алгоритмыг загварчлах сонгодог арга болох "хуваах-ба-эзлэх"
гэж нэрлэгддэг аргыг авч үзье.
• Энэхүү хуваах-ба-эзлэх арга нь алгоритмын хамгийн муу тохиолдлын
ажиллах хугацаанд оруулах эрэмбэлэлтээс илүү бага байх эрэмбэлэх
алгоритмыг загварчилахад ашигладаг.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
Хуваах-ба-эзлэх алгоритмын нэг давуу тал нь тэдгээрийн ажиллах
хугацаанууд нь бусад аргуудыг ашиглан ихэнхдээ илүү хялбар
тодорхойлоход оршино.
• Өгөгдсөн асуудлыг шийдвэрлэх ашигтай алгоритмуудын бүтэцд
рекурс байдаг тул тэдгээр нь хамааралтай дэд асуудлуудыг
шийдэхийн тулд нэг болон түүнээс олон удаагийн рекурсыг дууддаг.
• Эдгээр алгоритмууд нь хуваах-ба-эзлэх аргын дагуу эхлээд
асуудлуудыг үндсэн асуудалтай төстэй хэд хэдэн дэд асуудлуудад
хуваана.
• Гэхдээ бага хэмжээгээр хувааж, тэр дэд асуудлуудыг рекурсээр
шийдсэний дараа үндсэн асуудлыг бодох шийдлийг гаргах зорилгоор
тэдгээр дэд асуудлуудын шийдлүүдийг нэгтгэж өгдөг.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

Рекурсын түвшин бүрт хувааж эзлэх жишээ нь гурван алхмыг


хамардаг. Үүнд:

• *Тухайн асуудлыг хэд хэдэн дэд асуудалд хуваах(divide).


• *Тэдгээрийг рекурсээр шийдсэнээр дэд асуудлуудыг эзлэх(conquer).
Хэрэв тухайн дэд асуудал хангалттай жижиг бол тухайн дэд
асуудлыг шууд аргаар шийдвэрлэх.
• *Дэд асуудлуудын шийдэлийг үндсэн асуудлын шийдэлд
нэгтгэх(combine).

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

Нэгтгэх эрэмбэлэлтийн алгоритмд хуваах-ба-эзлэх загварыг шууд


хэрэглэж боломж сайн байдаг. Энэ дараах байдлаар ажиллана. Үүнд:

Хуваах: эрэмбэлэгдэх n-элемент бүхий дарааллыг тус бүртээ n/2


элемент бүхий 2 дэд дараалалд хуваана.
Эзлэх: Нэгтгэх эрэмбэлэлтийг ашиглан тэр хоёр дэд дарааллыг
эрэмбэлнэ.
Нэгтгэх: Эрэмбэлэгдсэн хариуг гаргаж авахын тулд тэдгээр хоёр
эрэмбэлэгдсэн дэд дарааллуудыг нэгтгэх.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
1 урттай эрэмбэлэгдэх дараалал байгаа үед рекурс нь"хамгийн доод
хязгаартай хүрдэг" ба энэ тохиолдолд 1 урттай дараалал бүр эрэмбэлэгдсэн
дараалалд орсон байдаг тул ямар ч ажил хийгдэх шаардлагагүй.
• Нэгтгэх эрэмбэлэлтийн алгоритмын түлхүүр үйлдэл нь эрэмбэлэгдсэн хоёр
дарааллыг "нийлүүлэх" шатанд нэгтгэх ажиллагаа юм.
• Нэгтгэх үйлдэл хийх функцыг MERGE (A, p, q, r) гэж тодорхойлж
ашигладаг билээ.
• Энд A нь матриц ба p, q болон r нь тухайн матрицын элементүүдийг
дугаарласан индексүүд байх ба энд p ≤ q < r байна.
• Процедур нь A[p , q] ба A[q + 1 , r] дэд матрицуудыг эрэмбэлэгдсэн
дараалалд авч үзнэ.
• Энэ нь тэдгээрийг эрэмбэлсэн A[p, r] дэд матрицд нэгтгэнэ.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

MERGE процедур нь Θ(n) хугацааг зарцуулдаг ба эндээс n = r - p + 1


нь нэгтгэгдэж буй элементүүдйин тоо байх бөгөөд дараах байдлаар
ажиллана.
Бид ширээн дээр хоёр багц хөзөр байна гэж үзье.
• Багц бүрийг эрэмбэлсэн ба хамгийн бага тооны хөзрийг хамгийн
дээр нь тавина.
• Эдгээр хоёр багцийг ширээн дээр доош харуулсан ганцаараа
эрэмбэлэгдсэн багцад тэдгээр хоёр багцыг бид нэгтгэнэ гэж үзье.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

• Бидний үндсэн алхам бол дээш харсан багцын дээр эдгээр 2


хөзөрний арай илүү багыг нь сонгох, өөрийнх нь байгаа багцаас
өөрийг нь авах (хамгийн дээр байх шинэ хөзөр) болон үр дүн болж
гарсан багцан дээр тэр хөзрөө дээш харуулан тавих гэсэн
алхамуудаас бүрдэнэ.
• Энэ алхамыг оролтын багц хоосон болтол нь давтах ба тухай бүр
үлдэж буй оролтын багцыг авч, үр дүн болон гарч байгаа багцын
дээр доош нь харуулан тавина.
• Тооцооллоор бол бид зөвхөн хамгийн дээд талын хоёр хөзөрийг л
шалгаж байгаа учраас үндсэн суурь алхам бүр тогтмол хугацааг
зарцуулдаг.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
• Бид n үндсэн алхмуудын ихэнхид гүйцэтгэдэг ба нэгтгэх үйлдэл нь
Θ(n) хугацааг зарцуулна.
• Жишээ дээрх псевдо код нь дээрх санааг мөн хэрэгжүүлдэг боловч
үндсэн алхам бүрт аль нэг багц хоосон болохыг шалгахаас
зайлсхийж нэмэлт эргэлт хийдэг.
• Санаа нь багц тус бүрийн доод талд бидний кодыг хялбарчлахад
ашигладаг тусгай утгыг агуулдаг таних тэмдэг бүхий хөзрийг
оруулдаг.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

Бид ∞ байх таних тэмдэг бүхий утгыг тэмдэглэж нэг хөзөрт ∞ гэсэн
утга илэрсэн тохиолдол бүрт, хэрэв багцууд хоёул таних тэмдэг бүхий
хөзрийг илрүүлээгүй бол тэр нь арай бага хөзөр нь болж таарахгүй юм.
• Гэвч ийм зүйл тохиолдоход, таних тэмдэг биш бүх хөзөрнүүд үр дүн
болох багцад аль хэдийн байршсан байна.
• Бид яг r - p +1 хөзөрнүүд үр дүнгийн багцанд байршина гэдгийг
урьдчилан мэдэж байгаа учраас тэр тооны үндсэн алхамуудыг
гүйцэтгэсний дараа бид зогсож болох юм.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
MERGE (A, p, q, r)
1. n1 ← q − p + 1
2. n2 ← r − q
3. L[1, n1 +1 ] ба R[1, n2 + 1] гэсэн матрицуудыг бүтээ
4. for i ← 1 to n1
5. do L[i] ← A[p + i - 1]
6. for j ← 1 to n2
7. do R[j] ← A[q + j]
8. L[n1 + 1] ← ∞
9. R[n2 + 1] ← ∞
10. i ← 1
11. j ← 1
12. for k ←p to r
13. do if L[j] ≤ R[j]
14. then A[k] ← L[i]
15. i← i+1
16. else A[k] ← R[j]
17. j← j+1
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хуваах-ба-эзлэх арга
Нарийвчилбал, MERGE ажиллагаа нь дараах байдлаар ажиллана.

• 1-р мөр нь A[p, q] гэсэн дэд матрицын n1 уртыг тооцоолдог ба 2-р


мөр нь A[q + 1, r] гэсэн дэд матрицын n2 уртыг тооцоолдог.
• 3-р мөрөнд тус бүртээ n1 + 1 ба n2 + 1 урттай L ба R ("зүүн" ба
"баруун") гэсэн матрицуудыг бид бүтээдэг.
• 4-оос 5-р мөрнүүдийн давталтанд A[p,q] гэсэн дэд дарааллыг L[1,
n1]-д хуулбарладаг ба харин 6-аас 7-р мөрнүүдийн давталтанд A[q +
1 , r] дэд дарааллыг R[1, n2]-д хуулбарладаг.
• 8-аас 9-р мөрнүүд нь L ба R матрицуудын хувьд таних тэмдэг бүхий
утгыг авдаг байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

• 10-аас 17-р мөрнүүдэд, Зураг 2.3-т үзүүлснээр дараах давталтын


хувьсагчийг хадгалж үлдсэнээр r - p + 1 үндсэн алхмуудыг
гүйцэтгэж болдог байна.
• 12-оос 17-р мөрнүүдийн for давталт дах давталт бүрийн эхэнд A[p,k-
1] гэсэн дэд матрицад L[1, n1+1] ба R[1,n2+1]–ийн хамгийн бага k-p
элементүүдийг эрэмбэлэгдсэн байдлаар хадгалагдана.
• Мөн цаашилбал эдгээр матрицын хамгийн бага элементүүд нь L[i] ба
R[j] байх ба тэдгээрийг A-д буцааж хуулбарлаагүй болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
Зурагт MERGE(A, 9, 12, 16)-ийг дуудаж 10-аас 17-р мөрөнд хийж, энд
A[9,16] дэд матриц нь (2, 4, 5, 7, 1, 2, 3, 6) гэсэн дарааллыг агуулна.
• Таних тэмдэгийг нэмж оруулсны дараа L матриц нь (2, 4, 5, 7, ∞)
дарааллыг агуулна.
• Харин R матриц нь (1, 2, 3, 6, ∞) дарааллыг агуулна.
• А-д байх саарал өнгөөр будсан байрлалуудад тэдгээрийг хамгийн
эцсийн утга байрлах ба L ба R-ийн саарал өнгөөр будсан
байрлалуудад буцаж А-д хуулагдаагүй утгууд агуулагдсан байдаг.
• Хоёуланг нь авч үзвэл, саарал өнгөөр будсан байрлалуудад
анхнаасаа A[9,16]-д байсан утгуудыг хоёр таних тэмдэгийн хамт
үргэлж агуулж байдаг байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
А-д байгаа хараар будсан байршилууд нь хуулбарлагдах утгуудыг
агуулах бол L ба R дах хараар будсан байршилууд нь А-д аль хэдийнэ
хуудагдсан байгаа утгуудыг агуулна.
• (a) - (h) нь 12-оос 17-р мөрний давталтын давталт бүрийн эхэнд A, L
ба R матрицууд болон тэдгээрийн хамаарах индексүүд болох k, i
болон j байна.
• (i) нь ажиллагааг цуцлах үеийн матриц болон индексүүд байна.
• Энэ цэг дээр A[9 ,16] доторх дэд матрицуудыг эрэмбэлэгдсэн байх ба
L ба R-д байгаа таних тэмдэгүүд нь А-д хараахан хуулагдаагүй
байгаа эдгээр матрицууд дах хоёр үлдсэн элементүүд юм.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
Энэхүү давталтын тогтмол нь 12-оос 17-р мөрний давталтан дах эхний
давталтын өмнө хадгалагддаг, мөн давталтын давталт бүрт тэр
тогтмол хадгалагддаг, тэр тогтмол нь давталт цуцлагдахад зөв гэдгийг
харуулахад хэрэгтэй шинж чанар агуулдаг гэдгийг бид харуулах ёстой
юм.

Эхлэл(initialization): Давталтын эхний давталтын өмнө, бидэнд k = p


байх ба ингэснээр A[9 ,k-1] гэсэн дэд матриц хоосон болно.
Энэ хоосон дэд матриц нь А-д хуулагдаагүй байгаа эдгээр матрицуудын
хамгийн бага k–p=0 элементүүдийг агуулна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
Засвар(maintenance): Давталт бүр нь давталтын(гогцооны)
тогтмолыг хадгалдаг гэдгийг харахын тулд, 𝐿 𝑖 ≤ R 𝑖 нь А-д
хуулагдаагүй хамгийн бага элемент байна гэж эхлээд үзье.
• Учир нь A[p,k-1] нь k-p гэсэн хамгийн бага элементүүдийг агуулдаг
ба 14-р мөр L 𝑖 –г A[k] рүү хуулбарласны дараа A[p,k] гэсэн дэд
матриц нь k-p+1 гэсэн хамгийн бага элементүүдийг агуулна.
• Өсч байгаа k (давталтын шинэчлэлд) болон i (15-р мөрөнд) нь
дараагийн давталтанд давталтын(гогцооны) тогтмолыг сэргээж
байдаг.
• Хэрэв оронд нь L[i]>R[j] бол 16-17-р мөр нь давталтын тогтмолыг
хадгалахын тулд зохих ажиллагааг гүйцэтгэдэг.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

Цуцлалт(termination): Цуцлахад, k = r + 1 болно.


Давталтын(гогцоо) тогтмолоор A[p , r] болох A[p, k - 1] дэд матриц нь
эрэмбэлэгдсэн байдлаар L[1 , n1 + 1] ба R[1, n2 + 1]-ийн k-p = r-p + 1
болох хамгийн бага элементүүдийг агуулна.
• L ба R матрицууд нь хамтдаа n1 + n2 + 2 = r - p + 3 элементүүдийг
агуулдаг.
• А-д хуулбарласан хамгийн их хоёр нь буюу тэдгээр хамгийн их хоёр
элементүүд нь таних тэмдэгүүд байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга

• MERGE ажиллагаа 0(n) хугацаанд гүйж байгааг харахын тулд n = r-p


+1 үед 1-3 ба 8-11 мөрнүүд нь 4-7 мөрний давталтанд 0(n1 +n2)=
0(n) хугацааг авдаг үед тус бүр тогтмол хугацааг авдаг.
• 12-17 мөрний давталтанд(гогцоонд) тогтмол хугацааг зарцуулах n
давталттай байна.
• MERGE ажиллагааг нэгтгэн эрэмбэлэх алгоритм дах дэд программ
байдлаар ашиглаж болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
• Хэрэв p > r бол дэд матриц нь MERGE-SORT (A, p, r)
хамгийн ихдээ нэг матрицтай If p<r
байх ба тэр матриц нь аль then q ← [(p + r)/2]
хэдийнэ эрэмбэлэгдсэн байна. MERGE-SORT (A, p, q)
• Өөрөөр хэлбэл, хуваах алхам нь MERGE-SORT (A, q +1, r)
q индексийг тооцоолно. MERGE (A, p, q, r)
• q индекс нь A[p , r] хоёр дэд
матриц болох [n/2]
элементүүдийг агуулсан A[p, q]
матриц ба [n/2] элементүүдийг
агуулсан A[q + 1, r] гэсэн
матрицуудад хуваагдана.[7]

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх арга
A = (A[1], A[2], . . . , A[n]) гэсэн бүхэл дараалалыг эрэмбэлэхийн тулд
эхлээд бид MERGE-SORT (A, 1, length[A]) алхамыг хийх ба length[A] = n
байна.
• Дараагийн зураг дээр n нь 2-ын зэрэг байх үед дээш харуулах
процедурын ажиллагааг зааж байдаг.
• 2-н урттай эрэмбэлэгдсэн дарааллыг 1 зүйлийн дарааллын нэгтгэсэн
хосоос тус алгоритм нь бүрдэнэ
• Ингэхдээ 4 урттай эрэмбэлэгдсэн дарааллыг бүрдүүлэхийн тулд 2
урттай дарааллын хослолыг нэгтгэх замаар цааш явна.
• Дараа нь n/2 урттай дарааллыг хос нь n урттай хамгийн сүүлчийн
эрэмбэлэгдсэн дарааллыг бүрдүүлэх хүртэл нэгтгэх ажиллагааг
явуулна.
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хуваах-ба-эзлэх арга

Зураг 2.4: A =( 5, 2, 4, 7, 1, 3, 2, 6) гэсэн матриц дээрх нэгтгэх эрэмбийн ажиллагаа


нь алгоритм доороосоо дээшээ өсөж байх өсөлтийг харуулсан нэгдэл байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь
Алгоритм рекурс дуудлагыг өөртөө агуулах үед ажиллах хугацааг нь
ихэнхдээ рекурс давталтын тэгшитгэл(recurrence equation) эсвэл
рекурс давталт(recurrence)-аар илэрхийлдэг ба арай бага оролт дээр
ажиллах хугацаатай холбоотойгоор n хэмжээ бүхий асуудал дээр
ажиллах хугацааг дүрслэн харуулж байгаа болно.
• Бид тухайн рекурс давталтыг бодохдоо математик хэрэгслийг
ашиглаж, алгоритмын гүйцэтгэл дээр хязгаар тогтоож болно.
• Хуваах-ба-эзлэх алгоритмын ажиллах хугацаан дах рекурс давталт
нь суурь загварын (paradigm) 3-н алхам дээр суурилагдсан байна.
• Өмнө нь бид n хэмжээний асуудал дээр ажиллах хугацааг T(n) байна
гэж үзье.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь
Хэрэв асуудлын хэмжээ нь жижиг бол, зарим нэг c тогтмолын хувьд n ≤
c байх ба хамгийн шууд шийдэл нь бидний Θ(1) гэж бичдэг тогтмол хугацааг
авдаг. Бидний асуудлын хуваагдахдаа a гэсэн дэд асуудлуудыг гаргасан гэж
үзье. Ингэхдээ дэд асуудал тус бүр анхны асуудлын 1/b хэмжээтэй байна.
Хэрэв бид асуудлуудыг дэд асуудлуудад хуваах хугацааг D(n) гэж үзвэл
анхны асуудлыг шийдэх шийдлийг дэд асуудлуудыг шийдэх шийдэлтэй
нэгтгэх C(n) хугацааны хувьд бид дараах давталттай байна.

Θ 1 𝑖𝑓 𝑛 ≤ 𝑐
𝑇 𝑛 =ቐ 𝑛
𝑎𝑇 +𝐷 𝑛 +𝐶 𝑛 бусад
𝑏

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Элементүүдийн тоо нь тэгш бус байх үед MERGE-SORT эрэмбэлэлтийн
псевдо код нь зөв ажилладаг ба хэрэв бид анхны асуудлын хэмжээ нь
2-н зэрэг байна гэж таамаглавал бидний рекурс давталтанд суурилсан
дүн шинжилгээг илүү хялбаршуулж болно.
• Хуваалтын алхам бүр яг n/2 хэмжээ бүхий хоёр дараалалыг гаргана.
Тодорхой таамаглалаар асуудал өсөх дарааллыг рекурс давталтад
нөлөөлөхгүй гэдгийг харж болно.
• T(n) рекурс давталтын тодорхойлоход n тоон дээр нэгтгэн
эрэмбэлэхэд хамгийн муу тохиолдол бүхий ажиллах хугацаа болох
T(n)-н хувьд дараах нөхцлийг гаргаж тавьж болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Бидэнд n >1 элементүүд байгаа үед, ажиллах хугацааг дараах
байдлаар задлая.

Хуваах: Хуваах алхам нь дэд матрицын гол хэсгийг тооцоолох ба


ингэхдээ тогтмол хугацааг зарцуулна. Иймд D(n) = Θ(1) байна.
Эзлэх: Бид ресурс давталттайгаар тус бүр n/2 хэмжээ бүхий хоёр дэд
асуудлыг шийдэх ба ингэхдээ ажиллах хугацаанд 2T (n/2)-г хувь нэмэр
болгодог.
Нэгтгэх: n-элемент бүхий дэд матриц дээр MERGE ажиллагаа нь Θ(n)
гэсэн хугацааг авдаг ингэснээр C(n) = Θ(n) байна гэдгийг бид аль
хэдийнэ тэмдэглэсэн билээ.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Нэгтгэх эрэмбэлэлтийн дүн шинжилгээнд бид D(n) ба C(n) функцуудыг
нэмэх үед бид Θ(n) гэсэн функц бө Θ(1) гэсэн функц нэмэгдэж байдаг.
Энэ нийлбэр нь Θ(n) гэсэн n-ийн шугаман функц байна. Үүнийг “эзлэх”
алхамаас гарсан 2T (n/2) нөхцөл рүү нэмж өгсөнөөр нэгтгэх
эрэмбэлэлтийн ажиллах хугацаа T(n)-ийн хувьд муу тохиолдол рекурс
давталтыг бий болгож байдаг. Үүнд:

(2.1)
Θ 1 if 𝑛 = 1
T 𝑛 =ቐ 𝑛
2T +Θ 𝑛 if 𝑛 > 1
2

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Мастер онолын талаар үзэх ба онолоор T(n) бол Θ(n lg n) мөн ба энд lg
n гэдэг нь log2 n мөн болохыг харуулах болно.
Учир нь хангалттай их оролтуудын хувьд логарифмын функц нь бусад
шугаман функцаас илүү удаан өсдөг.
Иймд нэгтгэх эрэмбэлэлт нь өөрийн Θ(n lg n) гэсэн ажиллах хугацааны
хувьд оруулах эрэмбэлэлтийг гүйцэтгэх ба хамгийн муу тохиолдол дах
түүний ажиллах хугацаа нь Θ(n2) байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Рекурс давталтыг (2.1) шийдэж байгаа шийдэл яагаад T (n) = Θ(n lg n) вэ
гэдгийг ойлгоход теоромын мэргэжилтэн болох шаардлага байхгүй. Рекурс
давталт (2.1)-г дараах байдлаар дахин бичвэл
(2.2)
C if n = 1
T n =ቐ n
2T +C n if n > 1
2

Энд тогтмол c нь 1 хэмжээ бүхий асуудлуудыг шийдвэрлэхэд шаардлагатай


хугацааг мөн хуваах-ба-эзлэх алхамуудын матрицын элемент тус бүрийн
хугацааг төлөөлөхгүй болно.[8]

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Зураг дээр рекурс давталт (2.2)-ыг хэрхэн шийдэх талаар харуулжээ.

• Тав тухтай байх үүднээс n–ийг яг 2-ийн зэрэг авчээ гэж таамаглая.
• Зурагны (a) хэсэг дээр T (n)-г харуулсан ба (b) хэсэгт рекурс
давталтыг харуулсан адил тэнцүү мод болгон өргөжүүлсэн байна.
• Тус cn нөхцөл нь суурь болох ба (рекурс давталтын хамгийн дэд
түвшин дэх зардал), сууриас гарч байгаа хоёр дэд моднууд нь хоёр
арай бага рекурс давталт болох T (n/2) болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
• (c) хэсэгт T (n/2) өргөжүүлснээр энэ процесс нэг алхамыг
хэрэгжүүлдэг. Реукрс давталтын хоёр дах түвшний хоёр зангилааны
тус бүрийн зардал cn/2.
• Модон доторх зангилаа тус бүрийг рекурс давталтаар
тодорхойлогдсон бүрэлдхүүн хэсгүүдэд хувааж өргөжүүлэхийг
ажиллагааг асуудлын хэмжээ 1 болон буурах хүртэл үргэлжлүүлнэ.
• (d) хэсэгт гарч буй үр дүн бүхий модыг харуулж байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Зурагт Рекурс давталт T(n) = 2T(n/2) + cn–ийн рекурсын модны
байгуулалт.
(a) хэсэгт рекурсын модыг бүрдүүлэхийн тулд (b)-(d)–д аажмаар
өргөжиж байгаа T(n)-г харуулжээ.
(b) (d) хэсэгт бүрэн өргөжсөн мод нь lg n +1 түвшнүүдтэй (ө.х., заасны
дагуу энд lg n гэсэн өндөртэй байна),ба түвшин бүр нь cn-ийн нийт
өртөгт хувь нэмэрээ оруулна.
(c) Түүнчлэн нийт өртөг нь cn lg n + cn, тэр нь Θ(n lg n) ийм болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Дараа нь бид модны түвшин тус бүрт өртөгүүдийг нэмэгдүүлнэ.
• Хамгийн дээд түвшин нь нийт зардал cn байх ба дараагийн түвшинд
нийт өртөг нь c(n/2) + c(n/2) = cn болох ба дараагийн түвшиний
нийт өртөг нь c(n/4) + c(n/4) + c(n/4) + c(n/4) = cn болох ба гэх
мэт үргэлжлэнэ.
• Ерөнхийд нь, хамгийн дээд түвшний доод талын i нь 2i зангилаатай
байх ба тус бүр c(n/2i)-н өртөгийг нэмэгдүүлэх ба ингэснээр дээрээс
i-дах түвшний нийт өртөг нь 2i c(n/2i) = cn байна.
• Хамгийн доод талдын түвшины хувьд с-ийн нэмэгдүүлсэн өртөг бүр,
cn-ийн нийт өртөгтийн хувьд n зангилаатай байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ

• Зураг дах “рекурсын модны” түвшний нийт тоо нь lg n + 1 байна.


• Энэ баримтыг албан бус индукцын аргументаар амархан харж болно.
• n = 1 үед суурь тохиолдол байх ба энэ тохиолдолд энэ зөвхөн
ганцхан түвшин байна. lg 1 = 0 болсноос бидэнд lg n + 1 нь
түвшнүүдийн зөв тоог гаргаж өгнө.
• 2i зангилаанд рекурсын модны түвшнүүдийн тоо нь lg 2i + 1 = i + 1
байгаа гэж таамаглая (i-ийн утга бүрт, бидэнд lg 2i = i байна).

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Хуваах-ба-эзлэх алгоритмын шинжлэх нь.
Нэгтгэх эрэмбэлэлтийн шинжилгээ
Яагаад анхны оролтын хэмжээ 2-ийн зэрэг ба дараагийн авч үзэх
оролтын хэмжээ 2i+1. 2i+1 зангилаатай мод нь 2i зангилааны модноос нэг
илүү түвшинтэй байх ба түвшний нийт тоо нь i + 1 + 1 = lg2i+1 + 1
байна.
• Рекурс давталтаар (2.2) төлөөлүүлсэн нийт өртөгийг тооцохын тулд,
бид зүгээр л бүх түвшний өртөгийг нэмнэ.
• Тус бүр cn өртөг бүхий lg n + 1 тооны түвшинүүд байх ба нийт
өртөгийн хувьд cn(lg n + 1) = cn lg n + cn байна.
• Бага-дарааллын нөхцөлийг үл тоомсорлон тогтмол c–ээр 0(n lg n)
гэсэн хүссэн үр дүн гарч ирнэ.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ

You might also like

  • Lecture 6 2018
    Lecture 6 2018
    Document50 pages
    Lecture 6 2018
    Amarsaikhan Tuvshinbayar
    100% (3)
  • Lecture 11
    Lecture 11
    Document24 pages
    Lecture 11
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Programming Lec 6
    Programming Lec 6
    Document51 pages
    Programming Lec 6
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lec1-1 Corporate Activity Shine
    Lec1-1 Corporate Activity Shine
    Document61 pages
    Lec1-1 Corporate Activity Shine
    Amarsaikhan Tuvshinbayar
    0% (1)
  • Lecture 13
    Lecture 13
    Document46 pages
    Lecture 13
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture - 10
    Lecture - 10
    Document35 pages
    Lecture - 10
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 12
    Lecture 12
    Document34 pages
    Lecture 12
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 9
    Lecture 9
    Document46 pages
    Lecture 9
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 8 2018
    Lecture 8 2018
    Document54 pages
    Lecture 8 2018
    Amarsaikhan Tuvshinbayar
    100% (3)
  • Lecture 7 20108
    Lecture 7 20108
    Document47 pages
    Lecture 7 20108
    Amarsaikhan Tuvshinbayar
    75% (4)
  • Lecture 4 2018
    Lecture 4 2018
    Document47 pages
    Lecture 4 2018
    Amarsaikhan Tuvshinbayar
    100% (4)
  • Lecture 3 2018
    Lecture 3 2018
    Document42 pages
    Lecture 3 2018
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 5 2018
    Lecture 5 2018
    Document54 pages
    Lecture 5 2018
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Koosen 2018 Algorithm 2
    Koosen 2018 Algorithm 2
    Document48 pages
    Koosen 2018 Algorithm 2
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 1 2018
    Lecture 1 2018
    Document39 pages
    Lecture 1 2018
    Amarsaikhan Tuvshinbayar
    100% (6)
  • IT101 Lecture 4
    IT101 Lecture 4
    Document72 pages
    IT101 Lecture 4
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 9
    Programming Lec 9
    Document39 pages
    Programming Lec 9
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 2 2018
    Lecture 2 2018
    Document33 pages
    Lecture 2 2018
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Lecture 3
    Lecture 3
    Document72 pages
    Lecture 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 3
    Lecture 3
    Document72 pages
    Lecture 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Baikal Hotolbor
    Baikal Hotolbor
    Document2 pages
    Baikal Hotolbor
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Baikal Hotolbor
    Baikal Hotolbor
    Document2 pages
    Baikal Hotolbor
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 7
    Programming Lec 7
    Document57 pages
    Programming Lec 7
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 6
    Programming Lec 6
    Document51 pages
    Programming Lec 6
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 8
    Programming Lec 8
    Document32 pages
    Programming Lec 8
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Lecture 2
    Lecture 2
    Document80 pages
    Lecture 2
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • PL - 3
    PL - 3
    Document47 pages
    PL - 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 1
    Lecture 1
    Document54 pages
    Lecture 1
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Koosen 2018 Algorithm Programming 3
    Koosen 2018 Algorithm Programming 3
    Document46 pages
    Koosen 2018 Algorithm Programming 3
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Programming Lec 4
    Programming Lec 4
    Document39 pages
    Programming Lec 4
    Amarsaikhan Tuvshinbayar
    No ratings yet