SlideShare a Scribd company logo
Өгөгдсөн нэг     хэмжээст
массиваас хоёр   хэмжээст
массив үүсгэх
Бодлого

n натурол тоо, а[1], а[2], ... ,а[n] бодит тоо өгөгдөв. i<j
үед B[i][j] гэсэн элементийг
B[i][j] =a[i]+a[i+1]+…+a[j] гэсэн томъёогоор
тодорхойлон B[n][n] хоёр хэмжээст массив үүсгэх
алгоритмыг зохиомжлон шинжилгээ хий.




Тайлбар: В массивын бусад элементүүдийг
тодорхойгүй гэж үз.
Алгоритмын зохиомж

Бодох аргачлал
B[i][j] элементийг олох өгөгдсөн томъёог ашиглаж мөр
мөрөөр (мөрийг i гэж үзвэл 1-р мөрөөс n мөр хүртэл буюу
1-c n хүртэл гүйнэ) давталтыг гүйцэтгэх үедээ баганын
дагуу (баганын дугаарыг j гэж үзвэл i+1-с n хүртэл гүйнэ)
давтан B[i][j] элементүүдийг олно.
Алгоритмын зохиомж

Бодох алгоритм

input n ∈ NI, a[1], a[2],…,a[n] ∈ IR
output B[n][n] хоёр хэмжээст массив
for i=1 to n do
  for j=i+1 to n do
   {
    a[i]-ээс a[j] хүртэлх элементийг хооронд нь нэм
    B[i][j]-д нийлбэрийн оноо
   }
  endfor
endfor
Алгоритмыг нэвтрүүлэх(implementation)



a) Хоёр дах давталтыг эхлэхэд S хувьсагчийн утгад 0
   оноож for k=i to j do S=S+a[k] гэж нийлбэрийг олох уг
   олсон нийлбэрийг B[i][j]=S гэж авах

b) Эхний давталт эхлэхэд B[i][i+1]=a[i]+a[i+1] утга
   оноогоод хоёр дахь давталтын давтах тоог бага зэрэг
   өөрчлөөд(j=i+2-с эхлэх) B[i][j]=B[i][j-1]+a[j] гэж
   элементийг олох

Цаашид а) нэвтрүүлэлтийн хувьд шинжилгээг хийе.

Тайлбар: нэвтрүүлэлт гэдэг нь хийгдэх алхамуудыг хэрхэн
   гүйцэтгэхийг тодорхой болгох
Алгоритмын шинжилгээ


Оролтын хэмжээ
Энэ алгоритмын биелэлт юунаас хамаарах вэ? гэвэл
массивын хэмжээ болох n тооноос хамаарах нь тодорхой
байна. Хэрэв n бага бол уг алгоритм цөөн давталт хийгээд
үр дүнг гаргах бол n-н утга их болох тусам олон үйлдэл
хийх нь тодорхой байна.

Иймд алгоритмын биелэлт n –с хамаарах нь.
Алгоритмын шинжилгээ


Алгоритмын үндсэн үйлдэл
Алгоритмын үндсэн үйлдэл гэдэг нь тухайн алгоритмын
хамгийн олон давтагдаж байгаа аль нэг үйлдэл. Хамгийн
олон давтагдах үйлдэл хэд хэд байсан ч бид аль нэгийг нь
сонгоход алгоритмын шинжилгээнд ноцтой сөрөг нөлөө
үзүүлэхгүй. Бидний зохиомжилсон алгоритмын хувьд a[i]-c
a[j] хүртлэх нийлбэрийг олох үед “+” үйлдэл хамгийн олон
удаа хийгдэнэ.

Иймд бид энэ “+” үйлдлийг үндсэн үйлдлээрээ сонгоё.
Алгоритмын шинжилгээ

Оролтын хэмжээ n-с хамаарч үндсэн үйлдэл хэдэн удаа
биелэхийг тооцоолъё. n-с хамааран “+” үндсэн үйлдэл
хийгдэх тоог T(n) гэж тэмдэглэе.

T(n)-г тооцоолохын тулд n=4,5,6,… үед тооцоог хийгээд
ерөнхий тохиолдлын томъёог гаргая.
Алгоритмын шинжилгээ

n=4 үед доорх зургаас нэмэх үйлдлийг тоог харвал
1+2+3+1+2+1=10 ширхэг ө.х T(4)=10. Жишээ нь нэг дугаар
мөрний гурав дугаар баганад a[1]+a[2]+a[3] томъёогоор
B[1][3]-ийг олох тул 2 удаа нэмэх үйлдэл хийгдэх нь. Энд i
ба j давталт хэдэн элементийн утгыг тооцохыг илэрхийлж
байна. Бидний авсан жишээгээр 6 элементийг олж байна.
    1         2               3                   4
          a[1]+a[2]    a[1]+a[2]+a[3]   a[1]+a[2]+a[3]+a[4]
1
        ‘+’ 1 ширхэг    ‘+’ 2 ширхэг        ‘+’ 3 ширхэг
                         a[2]+ a[3]       a[2]+a[3]+a[4]
2
                       ‘+’—1 ширхэг         ‘+’ 2 ширхэг
                                             a[3]+ a[4]
3
                                            ‘+’ 1 ширхэг
4
Алгоритмын шинжилгээ

    n=5 үед доорх зургаас нэмэх үйлдлийг тоог харвал
    1+2+3+4+1+2+3+1+2+1=20 ширхэг байна. Иймд T(5)=20.
    Нийт 10 элементийн утгыг олж байна.
    1         2               3                   4                       5
          a[1]+a[2]    a[1]+a[2]+a[3]   a[1]+a[2]+a[3]+a[4]   a[1]+a[2]+a[3]+a[4]+a[5]
1
        ‘+’ 1 ширхэг    ‘+’ 2 ширхэг        ‘+’ 3 ширхэг            ‘+’ 4 ширхэг
                         a[2]+ a[3]       a[2]+a[3]+a[4]        a[2]+a[3]+a[4]+a[5]
2
                       ‘+’—1 ширхэг         ‘+’ 2 ширхэг            ‘+’ 3 ширхэг
                                             a[3]+ a[4]            a[3]+ a[4]+a[5]
3
                                            ‘+’ 1 ширхэг            ‘+’ 2 ширхэг
                                                                     a[4]+ a[5]
4
                                                                    ‘+’ 1 ширхэг
5
Алгоритмын шинжилгээ
    n=n үед доорх зургаас нэмэх үйлдлийг тоолбол
    1-р мөрөнд 1+2+3+ . . . +n-1=(n-1)n/2 ‘+’ үйлдэл, n-1 элемент
    2-р мөрөнд 1+2+3+ . . . +n-2=(n-2)(n-1)/2 ‘+’ үйлдэл, n-2 элемент
    гэх мэтээр
    n-1 дүгээр мөрөнд 1 ширхэг ‘+’ үйлдэл хийж, 1 элемент олно.
    1        2               3                  4               5     ...       n
          a[1]+a[2]    a[1]+a[2]+a[3]   a[1]+a[2]+a[3]+a[4]           ...
1       ‘+’ 1 ширхэг    ‘+’ 2 ширхэг        ‘+’ 3 ширхэг      ‘+’ 4         ‘+’ n-1

                         a[2]+ a[3]       a[2]+a[3]+a[4]              ...
2                      ‘+’—1 ширхэг        ‘+’ 2 ширхэг       ‘+’ 3         ‘+’ n-2

                                            a[3]+ a[4]                ...
3                                          ‘+’ 1 ширхэг       ‘+’ 2         ‘+’ n-3

4                                                             ‘+’ 1   ...
5                                                                     ...
…            .               .                   .
                                                                 .     .      ‘+’ 1
Алгоритмын шинжилгээ


n-с хамааран “+” үндсэн үйлдэл хийгдэх тоо T(n)-г тооцвол



                      n-1

n үед (n-1)+(n-2)+. . .+2+1=n(n-1)/2 ширхэг элементийн утгыг
олж байна.
Алгоритмын шинжилгээ

Одоо T(n)-г O-р дээрээс нь зааглахдаа бүх
нэмэгдэхүүнийг ихэсгэн n(n-1)/2 утгаар солъё

    ≤
Эндээс T(n)-ийн О –г олвол T(n) ∈O(n3)
Дүгнэлт


Бодлогын алгоритмын “зохиомж шинжилгээ” хийх нь дараах
алхамтай байна.
1.Бодлогын өгүүлбэр буюу бодлогын тавил
2.Алгоритмын зохиомж
   • Бодлогыг бодох бүдүүвч арга
   • Бодох аргын алгоритм
3.Алгоритмын нэвтрүүлэлтийг сонгох
4.Алгоритмын шинжилгээ
   • Оролтын хэмжээг тодорхойлох
   • Үндсэн үйлдлийг сонгох
   • Оролтын хэмжээнээс үндсэн үйлдэл хамаарах T(n)
       функцийг байгуулах
   • T(n) функцийн О үнэлгээг хийх
Дүгнэлт


“Өгөгдсөн нэг хэмжээст массиваас хоёр хэмжээст массив
үүсгэх” бодлогыг бодсон дээрх арга нь О(n3) хугацааны
хүндрэлтэй байна.


Нэвтрүүлэлтийн b) аргын хувьд шинжилгээг хийх, өөр илүү
сайн алгоритм байгаа эсэхийг судлах.

More Related Content

What's hot

Лекц №2
Лекц №2Лекц №2
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Badral Khurelbaatar
 
математик анализ лекц№5
математик анализ лекц№5математик анализ лекц№5
математик анализ лекц№5narangerelodon
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэсenhsaran_tsahim
 
Hnicheel 5
Hnicheel 5Hnicheel 5
Hnicheel 5
Ankhaa
 
C cons
C consC cons
C cons
Onon Tuul
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
Badral Khurelbaatar
 
Funktsin grafik8
Funktsin grafik8Funktsin grafik8
Funktsin grafik8rmarey
 
Олон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциалОлон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциал
Battur
 
функцийн өсөх ба буурах нөхцөл
функцийн өсөх ба буурах нөхцөлфункцийн өсөх ба буурах нөхцөл
функцийн өсөх ба буурах нөхцөлdoogii2335
 
Шугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогуудШугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогуудБаярсайхан Л
 
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээLecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
Энхтамир Ш
 
Тоон цуваа
Тоон цувааТоон цуваа
Тоон цуваа
Battur
 
Комплекс тоо цуврал хичээл-2
Комплекс тоо цуврал хичээл-2Комплекс тоо цуврал хичээл-2
Комплекс тоо цуврал хичээл-2
Март
 
Матриц болон тодорхойлогч, тэдгээрийг бодох нь
Матриц болон тодорхойлогч, тэдгээрийг бодох ньМатриц болон тодорхойлогч, тэдгээрийг бодох нь
Матриц болон тодорхойлогч, тэдгээрийг бодох нь
Battur
 
функцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужфункцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын муж
Horloo Ebika
 
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/ Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Adilbishiin Gelegjamts
 

What's hot (20)

Лекц №2
Лекц №2Лекц №2
Лекц №2
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
математик анализ лекц№5
математик анализ лекц№5математик анализ лекц№5
математик анализ лекц№5
 
Systemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lektsSystemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lekts
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
Lection 4
Lection 4Lection 4
Lection 4
 
Hnicheel 5
Hnicheel 5Hnicheel 5
Hnicheel 5
 
C cons
C consC cons
C cons
 
U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
 
Funktsin grafik8
Funktsin grafik8Funktsin grafik8
Funktsin grafik8
 
Олон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциалОлон хувьсагчтай функцийн уламжлал ба дифференциал
Олон хувьсагчтай функцийн уламжлал ба дифференциал
 
функцийн өсөх ба буурах нөхцөл
функцийн өсөх ба буурах нөхцөлфункцийн өсөх ба буурах нөхцөл
функцийн өсөх ба буурах нөхцөл
 
Шугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогуудШугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогууд
 
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээLecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
 
Тоон цуваа
Тоон цувааТоон цуваа
Тоон цуваа
 
It101 lab 4
It101 lab 4It101 lab 4
It101 lab 4
 
Комплекс тоо цуврал хичээл-2
Комплекс тоо цуврал хичээл-2Комплекс тоо цуврал хичээл-2
Комплекс тоо цуврал хичээл-2
 
Матриц болон тодорхойлогч, тэдгээрийг бодох нь
Матриц болон тодорхойлогч, тэдгээрийг бодох ньМатриц болон тодорхойлогч, тэдгээрийг бодох нь
Матриц болон тодорхойлогч, тэдгээрийг бодох нь
 
функцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын мужфункцийн тодорхойлогдох муж ба утгын муж
функцийн тодорхойлогдох муж ба утгын муж
 
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/ Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
Эрэлт, нийлүүлэлтийн мэдрэмж /орлогын мэдрэмж, солбисон мэдрэмж/
 

алгоритм шинжилгээ зохиомж

  • 1. Өгөгдсөн нэг хэмжээст массиваас хоёр хэмжээст массив үүсгэх
  • 2. Бодлого n натурол тоо, а[1], а[2], ... ,а[n] бодит тоо өгөгдөв. i<j үед B[i][j] гэсэн элементийг B[i][j] =a[i]+a[i+1]+…+a[j] гэсэн томъёогоор тодорхойлон B[n][n] хоёр хэмжээст массив үүсгэх алгоритмыг зохиомжлон шинжилгээ хий. Тайлбар: В массивын бусад элементүүдийг тодорхойгүй гэж үз.
  • 3. Алгоритмын зохиомж Бодох аргачлал B[i][j] элементийг олох өгөгдсөн томъёог ашиглаж мөр мөрөөр (мөрийг i гэж үзвэл 1-р мөрөөс n мөр хүртэл буюу 1-c n хүртэл гүйнэ) давталтыг гүйцэтгэх үедээ баганын дагуу (баганын дугаарыг j гэж үзвэл i+1-с n хүртэл гүйнэ) давтан B[i][j] элементүүдийг олно.
  • 4. Алгоритмын зохиомж Бодох алгоритм input n ∈ NI, a[1], a[2],…,a[n] ∈ IR output B[n][n] хоёр хэмжээст массив for i=1 to n do for j=i+1 to n do { a[i]-ээс a[j] хүртэлх элементийг хооронд нь нэм B[i][j]-д нийлбэрийн оноо } endfor endfor
  • 5. Алгоритмыг нэвтрүүлэх(implementation) a) Хоёр дах давталтыг эхлэхэд S хувьсагчийн утгад 0 оноож for k=i to j do S=S+a[k] гэж нийлбэрийг олох уг олсон нийлбэрийг B[i][j]=S гэж авах b) Эхний давталт эхлэхэд B[i][i+1]=a[i]+a[i+1] утга оноогоод хоёр дахь давталтын давтах тоог бага зэрэг өөрчлөөд(j=i+2-с эхлэх) B[i][j]=B[i][j-1]+a[j] гэж элементийг олох Цаашид а) нэвтрүүлэлтийн хувьд шинжилгээг хийе. Тайлбар: нэвтрүүлэлт гэдэг нь хийгдэх алхамуудыг хэрхэн гүйцэтгэхийг тодорхой болгох
  • 6. Алгоритмын шинжилгээ Оролтын хэмжээ Энэ алгоритмын биелэлт юунаас хамаарах вэ? гэвэл массивын хэмжээ болох n тооноос хамаарах нь тодорхой байна. Хэрэв n бага бол уг алгоритм цөөн давталт хийгээд үр дүнг гаргах бол n-н утга их болох тусам олон үйлдэл хийх нь тодорхой байна. Иймд алгоритмын биелэлт n –с хамаарах нь.
  • 7. Алгоритмын шинжилгээ Алгоритмын үндсэн үйлдэл Алгоритмын үндсэн үйлдэл гэдэг нь тухайн алгоритмын хамгийн олон давтагдаж байгаа аль нэг үйлдэл. Хамгийн олон давтагдах үйлдэл хэд хэд байсан ч бид аль нэгийг нь сонгоход алгоритмын шинжилгээнд ноцтой сөрөг нөлөө үзүүлэхгүй. Бидний зохиомжилсон алгоритмын хувьд a[i]-c a[j] хүртлэх нийлбэрийг олох үед “+” үйлдэл хамгийн олон удаа хийгдэнэ. Иймд бид энэ “+” үйлдлийг үндсэн үйлдлээрээ сонгоё.
  • 8. Алгоритмын шинжилгээ Оролтын хэмжээ n-с хамаарч үндсэн үйлдэл хэдэн удаа биелэхийг тооцоолъё. n-с хамааран “+” үндсэн үйлдэл хийгдэх тоог T(n) гэж тэмдэглэе. T(n)-г тооцоолохын тулд n=4,5,6,… үед тооцоог хийгээд ерөнхий тохиолдлын томъёог гаргая.
  • 9. Алгоритмын шинжилгээ n=4 үед доорх зургаас нэмэх үйлдлийг тоог харвал 1+2+3+1+2+1=10 ширхэг ө.х T(4)=10. Жишээ нь нэг дугаар мөрний гурав дугаар баганад a[1]+a[2]+a[3] томъёогоор B[1][3]-ийг олох тул 2 удаа нэмэх үйлдэл хийгдэх нь. Энд i ба j давталт хэдэн элементийн утгыг тооцохыг илэрхийлж байна. Бидний авсан жишээгээр 6 элементийг олж байна. 1 2 3 4 a[1]+a[2] a[1]+a[2]+a[3] a[1]+a[2]+a[3]+a[4] 1 ‘+’ 1 ширхэг ‘+’ 2 ширхэг ‘+’ 3 ширхэг a[2]+ a[3] a[2]+a[3]+a[4] 2 ‘+’—1 ширхэг ‘+’ 2 ширхэг a[3]+ a[4] 3 ‘+’ 1 ширхэг 4
  • 10. Алгоритмын шинжилгээ n=5 үед доорх зургаас нэмэх үйлдлийг тоог харвал 1+2+3+4+1+2+3+1+2+1=20 ширхэг байна. Иймд T(5)=20. Нийт 10 элементийн утгыг олж байна. 1 2 3 4 5 a[1]+a[2] a[1]+a[2]+a[3] a[1]+a[2]+a[3]+a[4] a[1]+a[2]+a[3]+a[4]+a[5] 1 ‘+’ 1 ширхэг ‘+’ 2 ширхэг ‘+’ 3 ширхэг ‘+’ 4 ширхэг a[2]+ a[3] a[2]+a[3]+a[4] a[2]+a[3]+a[4]+a[5] 2 ‘+’—1 ширхэг ‘+’ 2 ширхэг ‘+’ 3 ширхэг a[3]+ a[4] a[3]+ a[4]+a[5] 3 ‘+’ 1 ширхэг ‘+’ 2 ширхэг a[4]+ a[5] 4 ‘+’ 1 ширхэг 5
  • 11. Алгоритмын шинжилгээ n=n үед доорх зургаас нэмэх үйлдлийг тоолбол 1-р мөрөнд 1+2+3+ . . . +n-1=(n-1)n/2 ‘+’ үйлдэл, n-1 элемент 2-р мөрөнд 1+2+3+ . . . +n-2=(n-2)(n-1)/2 ‘+’ үйлдэл, n-2 элемент гэх мэтээр n-1 дүгээр мөрөнд 1 ширхэг ‘+’ үйлдэл хийж, 1 элемент олно. 1 2 3 4 5 ... n a[1]+a[2] a[1]+a[2]+a[3] a[1]+a[2]+a[3]+a[4] ... 1 ‘+’ 1 ширхэг ‘+’ 2 ширхэг ‘+’ 3 ширхэг ‘+’ 4 ‘+’ n-1 a[2]+ a[3] a[2]+a[3]+a[4] ... 2 ‘+’—1 ширхэг ‘+’ 2 ширхэг ‘+’ 3 ‘+’ n-2 a[3]+ a[4] ... 3 ‘+’ 1 ширхэг ‘+’ 2 ‘+’ n-3 4 ‘+’ 1 ... 5 ... … . . . . . ‘+’ 1
  • 12. Алгоритмын шинжилгээ n-с хамааран “+” үндсэн үйлдэл хийгдэх тоо T(n)-г тооцвол n-1 n үед (n-1)+(n-2)+. . .+2+1=n(n-1)/2 ширхэг элементийн утгыг олж байна.
  • 13. Алгоритмын шинжилгээ Одоо T(n)-г O-р дээрээс нь зааглахдаа бүх нэмэгдэхүүнийг ихэсгэн n(n-1)/2 утгаар солъё ≤ Эндээс T(n)-ийн О –г олвол T(n) ∈O(n3)
  • 14. Дүгнэлт Бодлогын алгоритмын “зохиомж шинжилгээ” хийх нь дараах алхамтай байна. 1.Бодлогын өгүүлбэр буюу бодлогын тавил 2.Алгоритмын зохиомж • Бодлогыг бодох бүдүүвч арга • Бодох аргын алгоритм 3.Алгоритмын нэвтрүүлэлтийг сонгох 4.Алгоритмын шинжилгээ • Оролтын хэмжээг тодорхойлох • Үндсэн үйлдлийг сонгох • Оролтын хэмжээнээс үндсэн үйлдэл хамаарах T(n) функцийг байгуулах • T(n) функцийн О үнэлгээг хийх
  • 15. Дүгнэлт “Өгөгдсөн нэг хэмжээст массиваас хоёр хэмжээст массив үүсгэх” бодлогыг бодсон дээрх арга нь О(n3) хугацааны хүндрэлтэй байна. Нэвтрүүлэлтийн b) аргын хувьд шинжилгээг хийх, өөр илүү сайн алгоритм байгаа эсэхийг судлах.