SlideShare a Scribd company logo
1 of 18
Алгоритмын шинжилгээ
        Лекц №1   LOGO
Хичээлийн агуулга




Багш: Т.Гантөр
Алгоритмын шинжилгээ

 Аливаа алгоритмыг ямар нэг програмчлалын
  хэлэнд нэвтрүүлэлгүйгээр түүний ажиллах
  хугацааг      тодорхойлоход      алгоритмын
  шинжилгээний гол зорилго оршино.
 Алгоритмыг шинжлэх гол хоѐр шинжүүр нь:
    Алгоритмд шаардагдах зай
    Алгоритмд шаардагдах хугацаа




Багш: Т.Гантөр
Алгоритмын шинжилгээ


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


 Алгоритмд шаардагдах хугацаа нь
 алгоритмд гүйцэтгэгдэх үйлдлийн
 тоогоор тодорхойлогдоно.

Багш: Т.Гантөр
Алгоритмын шинжилгээ
 Аливаа асуудлуудыг шийдвэрлэх олон арга байдаг.




Багш: Т.Гантөр
Алгоритмын шинжилгээ

 Дээрх зураг дээр таныг Joe’s Diner руу аваачих
  хоѐр зам байна.
 Энэ хоѐр зам ижил биш ч, зорилгын хувьд
  хоѐулаа зөв.
 Хэрвээ тодорхой шаардлага хангасан замыг
  хүсвэл аль нэг шийдэл нь бусдаасаа илүү дээр
  байж магадгүй.
 Жишээ шаардлагууд:
     • Joe’s Diner руу хамгийн хурдан очих зам нь аль вэ?
     • Joe’s Diner руу очих хамгийн эвтэйхэн зам нь аль вэ?
     • Аль замаар нь явах дуртай вэ?

Багш: Т.Гантөр
Алгоритмын шинжилгээ

 Ижилхэн үйлдэл гүйцэтгэх хоѐр алгоритмоос
  сонголт хийхдээ програмын тухайн хэсгийн
  шаардлагаас хамааран сонгодог
 Хэрвээ тодорхой шаардлага байхгүй бол тухайн
  програм зохиогчийн өөрийнх нь хэв загвар дээр
  үндэслэж болно.




Багш: Т.Гантөр
Алгоритмын шинжилгээ

 Алгоритмуудаас сонголт хийх нь ихэвчлэн үр
  ашгийн асуудалруу шилждэг.

 Аль алгоритмын тооцоолох хугацаа нь хамгийн
  бага байна вэ?

 Аль алгоритм нь хамгийн бага хөдөлмөрөөр
  ажиллах вэ?




Багш: Т.Гантөр
Алгоритмын шинжилгээ

 Алгоритмыг шинжлэх шинжүүр
   1. Алгоритмын код хэр энгийн, хялбар байх
   2. Ажиллах хугацаа хамгийн бага байх
 Алгоритмыг шинжлэх үзүүлэлт
   1. Биелүүлэх команд болон алхмын тоо
   2. Өгөгдлийн хэмжээ
 Өгөгдлийн хэмжээнээс хамааран алгоритмын
  ажиллах    хугацааг   тодорхойлохдоо     Big-O
  тэмдэглэгээ буюу ач холбогдолын асуудал гэж
  нэрлэгддэг математик тэмдэглэгээг ашиглан
  илэрхийлнэ.
Багш: Т.Гантөр
Алгоритмын шинжилгээ – Big-O тэмдэглэгээ

 Big-O тэмдэглэгээ арга нь аливаа асуудлын
  хэмжээнээс хамааран хамгийн хурдан өсдөг
  функцын    томъѐогоор  тооцоолох  хугацааг
  илэрхийлдэг.

 Ө.х. Тогтмол коэфциентыг орхин, оролтын
  өгөгдлийн    хэмжээний хувьд  алгоритмын
  ажиллах хугацааг хамгийн муу тохиолдолд
  тодорхойлно.



Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ

Жишээ:
 f(N) = N4 + 100N2 + 10N + 50 функцийн хувьд Big-O
  тэмдэглэгээ нь O(N4) болно.

 Учир нь N-ийн хүрэлцээтэй хамгийн их утга нь N4
  байна. Тиймээс 100N2 , 10N , 50 утгууд нь
  тооцоолох хугацаанд нөлөөлж чадахгүй.

 N гэдэг нь тухайн асуудлын өгөгдлийн хэмжээ



Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Ерөнхий Big-O тэмдэглэгээнүүд:
O(1) буюу хязгаартай хугацаа.
 Тухайн ажлын үр дүн нь тухайн асуудлын
  хэмжээнээс      хамаарахгүйгээр тогтмолоор
  тодорхойлогддог.
Жишээ:
 N элемэнттэй массивын i-р элемэнтэд утга
  олгоход O(1) байна. Учир нь массивын
  элемэнтэд түүний индексээр нь шууд хандаж
  болдог.



Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Ерөнхий Big-O тэмдэглэгээнүүд:
O(log2N) буюу логарифм хугацаа.
 Тухайн ажлын үр дүн нь тухайн асуудлын
  хэмжээний логарифмаас хамаарна.
Жишээ:
 Эрэмбэлэгдсэн      элемэнттэй       жагсаалтаас
  хоѐртын хайлтын аргыг ашиглан нэг элемэнт
  хайх алгоритм нь O(log2N) байна. ).




Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Ерөнхий Big-O тэмдэглэгээнүүд:
O(N) буюу шугаман хугацаа.
 Тухайн ажлын үр дүн нь ойролцоогоор тухайн
  асуудлын тогтмол үе бүхий хэмжээгээр
  тодорхойлогдоно.
Жишээ:
 N элемэнттэй жагсаалтын бүх элемэнтүүдийг
  хэвлэхэд O(N) байна
 Эрэмбэлэгдээгүй элемэнттэй жагсаалтаас нэг
  элемэнт хайхад O(N) байна.
 Учир нь элемэнт бүрт дараалан хандана.

Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Ерөнхий Big-O тэмдэглэгээнүүд:
O(N log2N ) буюу N log2N хугацаа.
 Энэ төрлийн алгоритм нь стандартаараа
  логарифм алгоритмыг N удаа хэрэгжүүлснээр
  тодорхойлогдоно.
Жишээ:
 QuickSort, MergeSort, HeapSort гэх мэтийн
  хамгийн сайн эрэмбэлэлтийн алгоритмууд нь
  O(N      log2N)     хугацаанд   эрэмблэгдээгүй
  жагсаалтыг эрэмбэлэгдсэн жагсаалт болгоно.



Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Ерөнхий Big-O тэмдэглэгээнүүд:
O(N2) буюу квадрат хугацаа.
 Энэ төрлийн алгоритм нь стандартаараа
  шугаман алгоритмыг N удаа хэрэгжүүлснээр
  тодорхойлогдоно.
Жишээ:
 Хялбар эрэмбэлэлтийн алгоритмууд нь O(N2)
  байна.




Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Ерөнхий Big-O тэмдэглэгээнүүд:
O(N3) буюу куб хугацаа.
Жишээ:
 Бүхэл тоон элемэнттэй 3 хэмжээст хүснэгтийг
  элемэнтүүдийг      нэмэхэд   O(N3)    хугацаа
  шаардагдана.
O(2N) буюу экспоненциаль хугацаа.
Жишээ:
 Ийм алгоритмууд нь өндөр өртөгтөй байдаг.




Багш: Т.Гантөр
Алгоритмын шинжилгээ - Big-O тэмдэглэгээ
Өсөлтийн үзүүлэлтийн харьцуулалт:
        N        log2N N log2N      N2       N3                    2N
        1            0       1       1        1                     2
        2            1       2       4        8                     4
        4            2       8      16       64                    16
        8            3      24      64      512                   256
       16            4      64     256    4,096                65,536
       32            5     160   1,024   32,768        4,294,967,296
                                                супер компьютерийн
       64           6     384 4,096 262,114
                                               чадлаар нэг сар орчим
     128            7     896 16,384 2,097,152   ойролцоогоор 6 сая
                                                                 жил
     256            8   2,048 65,536 16,777,21      асуух хэрэггүй!!!
                                             6
Багш: Т.Гантөр

More Related Content

Viewers also liked

Dsi lec11
Dsi lec11Dsi lec11
Dsi lec11ggmo86
 
Dsi lec10
Dsi lec10Dsi lec10
Dsi lec10ggmo86
 
Dsi lec4
Dsi lec4Dsi lec4
Dsi lec4ggmo86
 
Dsi lec14
Dsi lec14Dsi lec14
Dsi lec14ggmo86
 
алгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжалгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжMijiddorj Renchin-Ochir
 
Sodko111
Sodko111Sodko111
Sodko111sodko27
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэцMuuluu
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2Badral Khurelbaatar
 

Viewers also liked (10)

Dsi lec11
Dsi lec11Dsi lec11
Dsi lec11
 
Dsi lec10
Dsi lec10Dsi lec10
Dsi lec10
 
Dsi lec4
Dsi lec4Dsi lec4
Dsi lec4
 
Dsi lec14
Dsi lec14Dsi lec14
Dsi lec14
 
алгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжалгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомж
 
Blog ds-tod
Blog ds-todBlog ds-tod
Blog ds-tod
 
Sodko111
Sodko111Sodko111
Sodko111
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 

Dsi lec1

  • 3. Алгоритмын шинжилгээ  Аливаа алгоритмыг ямар нэг програмчлалын хэлэнд нэвтрүүлэлгүйгээр түүний ажиллах хугацааг тодорхойлоход алгоритмын шинжилгээний гол зорилго оршино.  Алгоритмыг шинжлэх гол хоѐр шинжүүр нь:  Алгоритмд шаардагдах зай  Алгоритмд шаардагдах хугацаа Багш: Т.Гантөр
  • 4. Алгоритмын шинжилгээ Алгоритмд шаардагдах зай нь тухайн алгоритм ажиллах үед шаардагдах санах төхөөрөмжүүдийн хэмжээгээр тодорхойлогдоно. Алгоритмд шаардагдах хугацаа нь алгоритмд гүйцэтгэгдэх үйлдлийн тоогоор тодорхойлогдоно. Багш: Т.Гантөр
  • 5. Алгоритмын шинжилгээ  Аливаа асуудлуудыг шийдвэрлэх олон арга байдаг. Багш: Т.Гантөр
  • 6. Алгоритмын шинжилгээ  Дээрх зураг дээр таныг Joe’s Diner руу аваачих хоѐр зам байна.  Энэ хоѐр зам ижил биш ч, зорилгын хувьд хоѐулаа зөв.  Хэрвээ тодорхой шаардлага хангасан замыг хүсвэл аль нэг шийдэл нь бусдаасаа илүү дээр байж магадгүй.  Жишээ шаардлагууд: • Joe’s Diner руу хамгийн хурдан очих зам нь аль вэ? • Joe’s Diner руу очих хамгийн эвтэйхэн зам нь аль вэ? • Аль замаар нь явах дуртай вэ? Багш: Т.Гантөр
  • 7. Алгоритмын шинжилгээ  Ижилхэн үйлдэл гүйцэтгэх хоѐр алгоритмоос сонголт хийхдээ програмын тухайн хэсгийн шаардлагаас хамааран сонгодог  Хэрвээ тодорхой шаардлага байхгүй бол тухайн програм зохиогчийн өөрийнх нь хэв загвар дээр үндэслэж болно. Багш: Т.Гантөр
  • 8. Алгоритмын шинжилгээ  Алгоритмуудаас сонголт хийх нь ихэвчлэн үр ашгийн асуудалруу шилждэг.  Аль алгоритмын тооцоолох хугацаа нь хамгийн бага байна вэ?  Аль алгоритм нь хамгийн бага хөдөлмөрөөр ажиллах вэ? Багш: Т.Гантөр
  • 9. Алгоритмын шинжилгээ  Алгоритмыг шинжлэх шинжүүр 1. Алгоритмын код хэр энгийн, хялбар байх 2. Ажиллах хугацаа хамгийн бага байх  Алгоритмыг шинжлэх үзүүлэлт 1. Биелүүлэх команд болон алхмын тоо 2. Өгөгдлийн хэмжээ  Өгөгдлийн хэмжээнээс хамааран алгоритмын ажиллах хугацааг тодорхойлохдоо Big-O тэмдэглэгээ буюу ач холбогдолын асуудал гэж нэрлэгддэг математик тэмдэглэгээг ашиглан илэрхийлнэ. Багш: Т.Гантөр
  • 10. Алгоритмын шинжилгээ – Big-O тэмдэглэгээ  Big-O тэмдэглэгээ арга нь аливаа асуудлын хэмжээнээс хамааран хамгийн хурдан өсдөг функцын томъѐогоор тооцоолох хугацааг илэрхийлдэг.  Ө.х. Тогтмол коэфциентыг орхин, оролтын өгөгдлийн хэмжээний хувьд алгоритмын ажиллах хугацааг хамгийн муу тохиолдолд тодорхойлно. Багш: Т.Гантөр
  • 11. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Жишээ:  f(N) = N4 + 100N2 + 10N + 50 функцийн хувьд Big-O тэмдэглэгээ нь O(N4) болно.  Учир нь N-ийн хүрэлцээтэй хамгийн их утга нь N4 байна. Тиймээс 100N2 , 10N , 50 утгууд нь тооцоолох хугацаанд нөлөөлж чадахгүй.  N гэдэг нь тухайн асуудлын өгөгдлийн хэмжээ Багш: Т.Гантөр
  • 12. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Ерөнхий Big-O тэмдэглэгээнүүд: O(1) буюу хязгаартай хугацаа.  Тухайн ажлын үр дүн нь тухайн асуудлын хэмжээнээс хамаарахгүйгээр тогтмолоор тодорхойлогддог. Жишээ:  N элемэнттэй массивын i-р элемэнтэд утга олгоход O(1) байна. Учир нь массивын элемэнтэд түүний индексээр нь шууд хандаж болдог. Багш: Т.Гантөр
  • 13. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Ерөнхий Big-O тэмдэглэгээнүүд: O(log2N) буюу логарифм хугацаа.  Тухайн ажлын үр дүн нь тухайн асуудлын хэмжээний логарифмаас хамаарна. Жишээ:  Эрэмбэлэгдсэн элемэнттэй жагсаалтаас хоѐртын хайлтын аргыг ашиглан нэг элемэнт хайх алгоритм нь O(log2N) байна. ). Багш: Т.Гантөр
  • 14. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Ерөнхий Big-O тэмдэглэгээнүүд: O(N) буюу шугаман хугацаа.  Тухайн ажлын үр дүн нь ойролцоогоор тухайн асуудлын тогтмол үе бүхий хэмжээгээр тодорхойлогдоно. Жишээ:  N элемэнттэй жагсаалтын бүх элемэнтүүдийг хэвлэхэд O(N) байна  Эрэмбэлэгдээгүй элемэнттэй жагсаалтаас нэг элемэнт хайхад O(N) байна.  Учир нь элемэнт бүрт дараалан хандана. Багш: Т.Гантөр
  • 15. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Ерөнхий Big-O тэмдэглэгээнүүд: O(N log2N ) буюу N log2N хугацаа.  Энэ төрлийн алгоритм нь стандартаараа логарифм алгоритмыг N удаа хэрэгжүүлснээр тодорхойлогдоно. Жишээ:  QuickSort, MergeSort, HeapSort гэх мэтийн хамгийн сайн эрэмбэлэлтийн алгоритмууд нь O(N log2N) хугацаанд эрэмблэгдээгүй жагсаалтыг эрэмбэлэгдсэн жагсаалт болгоно. Багш: Т.Гантөр
  • 16. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Ерөнхий Big-O тэмдэглэгээнүүд: O(N2) буюу квадрат хугацаа.  Энэ төрлийн алгоритм нь стандартаараа шугаман алгоритмыг N удаа хэрэгжүүлснээр тодорхойлогдоно. Жишээ:  Хялбар эрэмбэлэлтийн алгоритмууд нь O(N2) байна. Багш: Т.Гантөр
  • 17. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Ерөнхий Big-O тэмдэглэгээнүүд: O(N3) буюу куб хугацаа. Жишээ:  Бүхэл тоон элемэнттэй 3 хэмжээст хүснэгтийг элемэнтүүдийг нэмэхэд O(N3) хугацаа шаардагдана. O(2N) буюу экспоненциаль хугацаа. Жишээ:  Ийм алгоритмууд нь өндөр өртөгтөй байдаг. Багш: Т.Гантөр
  • 18. Алгоритмын шинжилгээ - Big-O тэмдэглэгээ Өсөлтийн үзүүлэлтийн харьцуулалт: N log2N N log2N N2 N3 2N 1 0 1 1 1 2 2 1 2 4 8 4 4 2 8 16 64 16 8 3 24 64 512 256 16 4 64 256 4,096 65,536 32 5 160 1,024 32,768 4,294,967,296 супер компьютерийн 64 6 384 4,096 262,114 чадлаар нэг сар орчим 128 7 896 16,384 2,097,152 ойролцоогоор 6 сая жил 256 8 2,048 65,536 16,777,21 асуух хэрэггүй!!! 6 Багш: Т.Гантөр