Алгоритмын шинжилгээ
        Лекц №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
Багш: Т.Гантөр

Dsi lec1

  • 1.
  • 2.
  • 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 Багш: Т.Гантөр