SlideShare una empresa de Scribd logo
1 de 54
ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ, 
Е-НЭЭЛТТЭЙ ИНСТИТУТ 
Алгоритм ба програмчлал 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
www.emust.edu.mn 
Лекц - 3
U.CS101- Алгоритм ба програмчлал 
Сэдэв: Алгоритмыг шалгах, шинжлэх, 
боловсруулалт 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
www.emust.edu.mn
Агуулга: 
01 Алгоритмыг шалгах 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
www.emust.edu.mn 
01 
02 
02 Алгоритмыг хүснэгтээр шалгах 
03 Алгоритмын шинжилгээ 
04 Шинжилгээний аргууд 
04 Алгоритмыг шинэчлэх
Судлах зүйл: 
Энэ хичээлээр алгоритмыг шалгах аргууд, тэдгээрийн 
хэрэглээ, алгоритмыг шинжлэх үе шатуудын, шинжилгээний 
аргуудын талаар товч ойлголттой болох юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
3.1. Алгоритмыг шалгах 
Алгоритмчлах ба програмчлах үйл ажиллагааны нэгэн үе шат 
нь алгоритм, програмаа шалгаж зөв гэдгийг нь нотлох үйл 
ажиллагаа байдаг. Ерөнхий тохиолдолд програм хангамжийн 
бүтээгдэхүүн үйлдвэрлэхэд энэ үйл ажиллагааг дараах хоёр 
хэсэгт хувааж үздэг. Хэрэглэгчийн хүссэн зөв бүтээгдэхүүн 
буюу зөв алгоритм, програм зохиож байгаа гэдгийг тогтоох 
үйл ажиллагааг програмыг нягтлаж үзэх (validation) гэнэ. 
Энэ үйл ажиллагаа нь алгоритм, програм зохиох явцын хяналт 
шалгалт бөгөөд ихэвчлэн програмын шаардлага, зохиомжийг 
тодорхойлох, кодчлох үед үзлэг явуулах байдлаар хийгдэнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритм, програм алдаагүй зөв ажиллаж байгааг тогтоох үйл 
ажиллагааг програмыг шалгаж үзэх (verification) гэнэ. Энэ үйл 
ажиллагааг заримдаа програмыг тестлэх гэх ба энэ нь ихэвчлэн 
програмын кодчлол дууссаны дараа түүнийг ажиллуулж үзэн 
алдааг хайх хяналт шалгалт болно. Алгоритм зохиоход эдгээр 
хоёр үйл ажиллагааг хоёуланг хийх нь зүйтэй юм. 
Алгоритмыг нягтлаж үзэхийн тулд бодлогыг бодох арга зөв эсэх, 
хэмжигдэхүүнүүдийн хоорондын хамаарал зөв эсэх, үйлдлүүдийн 
дараалал зөв эсэх гэх мэтийг нягтлах ёстой. 
Алгоритм алдаагүй зөв ажиллана гэдгийг батлах нь ихээхэн 
төвөгтэй, олон талын мэдлэг шаардах үйл ажиллагаа байдаг тул 
практикт алгоритм алдаагүй зөв гэж батлахын оронд алдааг пь 
олж засах аргыг ихэвчлэн хэрэглэдэг. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Үүний тулд алгоритм буруу үр дүн өгөх өгөгдлүудийг олж сонгон 
уг өгөдлүүдийн хувьд алгоритмаа ажиллуулна. Ийм өгөгдлүүдийг 
сөрөг жишээ (counter example) гэж нэрлэнэ. Сөрөг жишээнүүд нь 
дараах чанаруудтай байна. 
Шалгаж болох чанар 
Энэ нь уг алгоритмаар тухайн сөрөг жишээнд харгалзах хариуг 
нь олж болдог бөгөөд зөв хариуг нь олж чадахгүй байх чанар 
юм. 
Энгийн хялбар байх чанар 
Сөрөг жишээ өгөгдөл нь алгоритм яагаад буруу хариуг өгч 
байгааг нь илрүүлж чадах бөгөөд ач холбогдолгүй зүйлс 
агуулаагүй байх ёстой. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Сөрөг жишээг 
дараах алгоритм 
дээр авч үзье. 
Өгсөн натурал тоо 
анхны тоо мөн 
эсэхийг шалгах 
алгоритмыг 
дараахь хэлбэрээр 
зохиосон байг. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Энэ алгоритмд бүхэлээр хуваах үйлдлийг /-ээр, хуваалгын 
бутархай хэсгийг %-ээр тус тус тэмдэглэсэн бөгөөд 1 -ээс 
ялгаатай натурал тоо бүрийг анхны тоо мөн эсэхийг нь 
тогтоож чадна. Харин n=1 тохиолдолд алгоритм буруу үр 
дүнг буюу 1- ийг анхны тоо гэж үзнэ. Иймээс n= 1 нь энэхүү 
алгоритмын сөрөг жишээ юм. 
Алгоритм зөв ажиллахгүй байгаа өгөгдлүүдийг таньж 
мэдснээр холбогдох алдааг нь засах замаар зөв алгоритмыг 
гаргаж авах боломжтой болно. 
Алгоритм болон програмыг шалгахдаа ерөнхий тохиолдолд 
дараах зүйлсийг хийх хэрэгтэй. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Тестийн тохиолдолуудыг тодорхойлох 
Тестийн тохиолдлууд (test case) гэдэг нь алгоритмын аль 
хэсгийг шалгахад ямар ямар оролтууд хэрэгтэй болон уг 
оролтуудад харгалзах гаралтууд нь ямар байхыг 
тодорхойлсон баримт бичиг юм. 
2. Тестийн өгөгдлийг тодорхойлох 
Тестийн өгөгдөл (test data) гэдэг нь тухайн тестийн 
тохиолдлуудыг шалгахад алгоритмд оруулах жинхэнэ утгууд 
юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Аливаа тестийг хийхдээ эхлээд системийн ямар шинж чанарыг 
нь голлон анхаарч шалгахаа тогтож тухайн шинж чанарыг 
өдөөж чадах тестийн өгөгдлүүдээ бэлтгэнэ. Алгоритмын шинж 
чанарыг гаднаас нь шалгадаг буюу тодорхой оролтуудад 
харгалзах гаралтуудыг шалгах замаар хийгддэг тестийг хар 
хайрцагны тест (blackbox testing) гэж нэрлэдэг. Хэрэв 
таамаглаж байснаас өөр буюу тестийн тохиолдолд 
тодорхойлсоноос өөр гаралт гарвал системд ямар нэг алдаа 
байгааг илрүүллээ гэж үздэг. Хар хайрцагны тестийн 
аргуудаас алгоритмыг шалгахад хамгийн тохиромжтой нь 
Тэнцүү хуваах ба захын утгын шинжилгээний арга 
(equivalence partitioning and Boundary value analysis) 
юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритмын тестийн өгөгдлүүд нь ижил байдлаар 
боловсруулалт хийх бүлгүүдэд хуваагддаг тохиолдолд 
тэнцүү хуваах (equivalence partitioning) гэсэн аргыг 
хэрэглэнэ. Өөрөөр хэлбэл алгоритм ижил байдлаар 
боловсруулах бүлэг өгөгдлөөс дор хаяж нэг нэгийг тестийн 
өгөгдөлд оруулж алгоритмыг шалгах хэрэгтэй гэсэн үг юм. 
Тестийн өгөгдлүүд нь тэнцүү хуваагдсан бөгөөд ямар нэг 
байдлаар эрэмбэлэгдсэн тохиолдолд захын буюу хил дээрхи 
утгын шинжилгээ (boundary value analysis) хийх нь 
оновчтой байдаг. Захын утга гэдэг нь тухайн тэнцүү 
хуваагдсан хэсэг бүрийн авч чадах утгууд юм. Учир нь хил 
дээрхи утгуудад сисmемийг тестийн хувьд сонирхож буй 
шинж чанарууд илэрдэг байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Жишээлбэл өгсөн натурал тоо (1<=n<=99) анхны тоо мөн 
эсэхийг тогтоох алгоритмын тестийн өгөгдлүүдийг 1-ээс бага 
байх, өгсөн нөхцөлд тохирох тоо байх, n-ээс их байх гэсэн 
бүлгүүдэд хувааж болно. Иймд тест хийж үзэх өгөгдлүүд нь 
эдгээр хэсгүүдийн хил дээрхи утга буюу 0, 1, 99, 100 байхад 
хангалтай юм. Алгоритмд 0-ийг оруулахад хэтэрхий бага 
утга, 100-г оруулахад хэтэрхий их утга гэсэн алдаа гарч, 1 
болон 99- ийг оруулахад зохих хариуг гардаг байх ёстой. 
Алгоритмын алхамууд эсвэл програмын кодон дотор алдаа 
хайх аргуудыг цагаан хайрцагны (whitebox testing) тестлэх 
аргууд гэдэг. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Эдгээр аргуудыг ашиглахын тулд алгоритм, програмын 
дотоод бүтэц, шинж чанарыг сайн судлах шаарлагатай 
бөгөөд тэдгээр шинж чанаруудыг нээн харуулж чадах 
өгөгдлүүдийг тестийн өгөгдлүүд болгож сонгох хэрэгтэй. 
Цагаан хайрцагны тестийг ерөнхийд нь 2 бүлэгт хуваадаг. 
1. Удирдлагын урсгалын тест (Control-flow testing) 
2. Өгөгдлийн урсгалын тест (Data-flow testing) 
Удирдлагын урсгалын тестийн гол зорилго нь алгоритмын 
алхам бүрийг эсвэл кодон дахь бүх үйлдлийг (statement) 
дор хаяж нэг удаа ажиллуулж үзэх явдал юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Үүний тулд үүний өмнө алгоритм, програмын бодолт хийгдэх 
бүх салаа замууд буюу удирдлагын урсгалын замын тоог 
(cyclomatic complesity - CC) доорхи томъёогоор олно. 
СС = 2n; 
Үүнд n нь нөхцлүүдийн тоо. 
Шугаман алгоритмын хувьд n=0 байна. Удирдлагын 
урсгалын замын тоо нь алгоритм, програмыг хичнээн бүлэг 
өгөгдлүүдийн хувьд шалгахыг ойролцоогоор заадаг. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Жишээлбэл: Евклидийн алгоритм нь нийт хоёр нөхцөлтэй, 
тэдгээр нь давхар байна. Иймд уг алгоритмын удирдлагын 
урсгалын замын тоо нь 4 байна. Энэ нь алгоритмыг шалгах 
өгөгдөл нь 4 бүлэг өгөгдөл байх ёстой гэдгийг илтгэнэ. 
Тухайлбал өгсөн хоёр тоо тэнцүү байх, аль бага нь ерөнхий 
хуваагч байх, харилцан анхны тоонууд байх, тэнцүү биш 
бөтөөд нэгээс ялгаатай ерөнхий үржигдэхүүнтэй байх гэсэн 4 
бүлэг өгөгдлүүдийн хувьд шалгах нь зүйтэй юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Өгөгдлийн урсгалын тестийг, алдааг удирдлагын урсгалын 
тестээр илрүүлэх боломжгүй буюу боловсруулж буй 
өгөгдлүүдтэй холбоотойгоор үүсч болох алдааг олоход 
хэрэглэнэ. Өгөгдлийн урсгалын тестэнд эхлээд шинжлэх гэж 
буй өгөгдлөө сонгоод дараа нь уг өгөгдөл дээрээ DU 
(definition-use) хосуудыг үүсгэнэ. DU хос гэдэг нь тухайн 
хувьсагчад утга олгож байгаа алхамын буюу мөрийн дугаар 
болон уг утгыг ашиглаж буй мөрийн дугаар хоёроос тогтох 
хос тоо юм. Хосуудын нийт тоо нь алгоритм програмыг 
хичнээн өгөгдлийн тохиолдолд шалгах ёстойг илэрхийлнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
DU хосыг тогтоохын тулд эхлээд хувьсагч бүрт утга олгож 
буй болон уг уттуудыг ашиглаж буй мөрүүдийг жагсаан 
бичих нь хос үүсгэх ажлыг хялбарчилдаг байна. Дараа нь уг 
жагсаалтан дээрээ тулгуурлан DU хосуудыг үусгэдэг. Эдгээр 
хосуудыг тогтоосны дараа хосууд биелэгдэж байхаар 
өгөгдлүүдийг сонгож тэдгээр өгөгдлүүдийн хувьд алгоритмаа 
шалгана. DU хосуудыг байгуулах асуудлыг Евклидийн 
алгоритм дээр авч үзье. Уг алгоритмыг дараахь 
хэлбэртэйгээр зохионо. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Өгсөн m,n тоонуудыг оруул 
2. Хэрэв m>n байвал 4-р алхамд, эсрэг тохиолдолд 3-р 
алхамд тус тус шилж 
3. Хэрэв m<n байвал 5-р алхамд, эсрэг тохиолдолд 6-р 
алхамд тус тус шилж 
4. m-д m-n гэсэн утга олгоод 2-р алхамд шилж 
5. n-д n-m гэсэн утга олгоод 2-р алхмад шилж 
6. m-ийг бодлогын хариу болгож хэвлэ. 
Алгоритмын хувьсагчдын нэр, тэдгээрт утга олгож байгаа ба 
уг утгуудыг ашиглаж байгаа мөрүүдийн дугаараар дараахь 
хүснэгтийг зохиож болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хувьсагчдын нэр Утга олгож буй мөр Утгуудын ашиглаж байгаа мөр 
n 1.5 2,3,4,5 
m 1.4 2,3,4,5,6 
Эндээс хувьсагч бүрийн хувьд утга олгож буй ба утгыг ашиглаж 
байгаа мөрүүдийн дугааруудын дараах хосуудыг үүсгэж болно. 
n хувьсагчийн хувьд (1,2), (1,3), (1,4), (1,5), (5,2), (5,3), (5,4), (5,5) 
гэсэн 8 хос үүснэ. 
m хувьсагчийн хувьд (1,2), (1,3), (1,4), (1,5), (1,6), (4,2), (4,3), (4,4), 
(4,5), (4,6) гэсэн 10 хос үүснэ. Энд ижил хосуудаас аль нэгийг нь 
шалгах хэрэгтэй тул шалгагдах (1,2), (1,3), (1,4), (1,5), (5,2), (5,3), 
(5,4), (5,5), (1,2), (1,3), (1,4), (1,5), (1,6), (4,2), (4,3), (4,4), (4,5), 
(4,6) гэсэн 14 хос байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Эдгээр хосууд дээр тулгуурлан алгоритм, програмыг шалгах 
өгөгдлүүдийг сонгож авна. Энэ алгоритмын хувьд өгсөн 
тоонууд тэнцүү байх үед (1,2), (1,3), (1,6) хосууд 
шалгагдана. Харин ерөнхий хуваагч нь аль бага тоо нь байх 
тухайлбал n=2, m=6 эсвэл n=6, m=2 тохиолдолын 
өгөгдлүүдийн хувьд (1,4), (1,5), (5,2), (5,3), (5,5), (4,2), (4,3), 
(4,4) шалгагдана. Хэрвээ өгсөн хоёр тоо харилцан анхны 
тоонууд байвал (5,4),(4,5),(4,6) хосууд хийгдэнэ. 
Алгоритмыг шалгахад хар ба цагаан хайрцагны аргуудын аль 
алиных нь шинж чанарыг агуулсан дараах аргуудыг голлон 
хэрэглэдэг. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
3.2 Алгоритмыг хүснэгтээр шалгах 
Зохиосон алгоритмын үнэн зөвийг шалгахын тулд түүнийг 
програмчлалын аль нэг хэлэнд хөрвүүлж програм бичээд 
түүнийгээ компьютерт оруулж, тохирох анхны өгөгдөл 
мэдээллийг өгч ажиллуулан зөв үр дүнд хүрч байгаа эсэхийг 
тогтоох аргыг хэрэглэдэг. Ингэж компьютер дээр алгоритм, 
програмыг ажиллуулж зөв болох хүртэл засч, шалгах 
ажиллагааг програмыг зүгшрүүлэх процесс гэж ярьдаг. 
Програмыг зүгшрүүлэх тусгай арга техник, ашиглах 
програмын хэрэгсэл байдаг. Энэ аргыг эзэмших, зүгшрүүлэх 
програмыг ашиглаж сурахад нилээн цаг хугацаа 
шаардагдана. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Гэтэл програмчлалын хэл судлаагүй, компьютер ашиглах 
шатанд хүрээгүй байгаа үед юмуу эсвэл ашиглах компьютер 
гарын дор байхгүй тохиолдолд алгоритмыг (заримдаа түүний 
хэсгийг) "гараар" шалгах шаардлага гардаг. 
Мөн түүнчлэн алгоритм зохиох "урлаг", ухаанд эхлэн 
суралцагч алгоритмыг ойлгох, өөртөө итгэл олж авах 
зорилгоор алгоритмыг өөрийн гараар шалгаж үзэх нь онцгой 
ач холбогдолтой байдаг. Ийм учраас алгоритм зөв биелж, 
олох ёстой үр дүнд хүрч байгаа эсэхийг гараар шалгах нэгэн 
аргыг энд үзье. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Нэгдүгээрт: 
Шалгах гэж байгаа 
алгоритмд ашиглагдаж 
байгаа хувьсагчийн тоотой 
тэнцүү тооны баганатай 
хүснэгт зурж, багана бүрийн 
оройд харгалзах 
хувьсагчийн нэрийг бичиж 
тэмдэглэнэ. Жишээлбэл, 
өгөгдсөн натурал тооны 
цифрүүдийн нийлбэр олох 
доорх алгоритмыг шалгах 
гэж байгаа гэе. 
оруул(m); 
s := 0; n := m; 
n > 0 бол_давт 
{s :=s + n10; n :=n/10}; 
гарга(m, s) 
Төгс 
Энд m, s, n гэсэн гурван хувьсагч 
ашигласан байна. Иймд дараахь 
хүснэгтийг зохионо 
m s n 
алг 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
хоёрдугаарт: 
Алгоритмыг эхнээс нь 
биелүүлж эхэлнэ, өөрөөр 
хэлбэл түүний үйлдлүүдийг 
биелэх дарааллаар 
биелүүлнэ. Бидний жишээнд 
эхний үйлдэл нь оруул(m); 
байгаа тул түүнийг 
биелүүлнэ. Энэ үйлдлээр нэг 
натурал тоо оруулж m 
хувьсагчийн утгыг болгон 
санах ёстой. 
Иймд бид m хувьсагчийн утга 
болгож ямар нэг тоог сонгож 
аваад m хувьсагчийн баганад 
бичнэ. Жишээ нь бид 
цифрүүдийн нийлбэр нь 22 
байх m = 4567 тоог өгсөн гэвэл 
хүснэгт дараахь хэлбэртэй 
болно. 
m s n 
4567 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритмын дараачийн 
мөрөнд бичигдсэн байгаа s 
:= 0; n := m хоёр үйлдлийг 
биелүүлэхэд s, m хувьсагчид 
утга олгоно. Иймд олгох 
утгуудыг нь харгалзах 
баганад бичнэ: 
Дараачийн үйлдэл нь n > 0 
нөхцөлтэй давтах үйлдэл 
байгаа тул шалгах нөхцөл ямар 
утгатай байгааг бичиж 
тэмдэглэх нэг баганыг 
хүснэгтэнд нэмж бичээд энэ 
нөхцөл ямар утгатай байгааг 'ү' 
(үнэн) ба 'х' (худал) үсгээр 
товчилж тэмдэглэнэ: 
m s n n>0 
4567 0 4567 y 
m s n 
4567 0 4567 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Өмнөх нөхцөлт давталтын хувьд шалгах нөхцөл 'үнэн' байхад 
түүний бие давтагдаж биелдэг, өөрөөр хэлбэл түүний бие 
биелээд дараа нь нөхцөлөө дахин шалгаж утга нь ямар 
байгаагаас хамааран давталтыг үргэлжлүүлэх юмуу эсвэл 
төгсгөнө. Энэ жишээнд одоо n > 0 нөхцөл биелэгдэж, өөрөөр 
хэлбэл n хувьсагч тэгээс их утгатай байгаа учир давталтын бие 
биелэх ёстой. 
Иймд s := s + n10; n := n/10 үйлдлүүдийг биелүүлж олгох 
утгыг нь харгалзах хувьсагчийн баганад бичнэ. 
Тэгэхдээ s := s + n10 үйлдэл нь s хувьсагчийн утга (одоо 0 
байгаа) дээр n10 илэрхийллийн утгыг нэмж гарсан тоог 
(0+456710=0+7=7 байна) s хувьсагчийн утга болгож сана 
гэсэн утгатай учир s баганы нүдэнд 7 -г бичнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Харин n := n/10 үйлдэл нь n 
хувьсагчийн одоогийн утгыг, өөрөөр 
хэлбэл харгалзах баганад бичээтэй 
байгаа тоог аравт (бүхэл тоог бүхэлд 
хуваахад бүхэл тоо гарна гэсэн 
дүрмийг баримтлан) хувааж гарсан 
утга буюу 456 - г уг хэмжигдэхүүний 
шинэ утга болгон бичнэ. 
m s n n>0 
4567 0 4567 Y 
7 456 
Энд хүснэгтийн эхний 
гурван баганы нүд нь 
хэмжигдэхүүний утгыг 
санаж байгаа үүр, харин 
баганы нэр нь харгалзах 
үүрийн хаяг болно гэж 
ойлгох хэрэгтэй. Үүрт шинэ 
утгыг бичихэд хуучин утга 
нь устаж зөвхөн шинээр 
бичсэн утга үлддэг учраас 
бид зөвхөн одоо байгаа тэр 
утгыг нь тод өнгөөр бичиж 
ялгав. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Давталтын бие биелсний дараа n > 0 
нөхцөлийг дахин шалгаж уг нөхцөл 
биелэхгүй, өөрөөр хэлбэл n хувьсагчийн 
утга тэгээс бага юмуу тэнцүү болтол 
давталтыг үргэлжлүүлнэ: 
m s n n>0 
4567 0 4567 y 
7 456 Y 
13 45 Y 
18 4 Y 
22 0 x 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
Давталтын нөхцөл 'худал' 
болоход давталтын 
үйлдэл биелэгдэж төгсөх 
ба ингэснээр түүний 
дараачийн үйлдэлд 
шилжнэ. Иймд гарга (m, 
s) үйлдэл биелж m, s 
хоёр хувьсагчийн утга 
буюу 4567, 22 гэсэн хоёр 
тоог үр дүн болгон өгнө. 
Алгоритмын дараачийн 
мөр нь төгс байгаа тул 
алгоритмын биелэлт 
төгсөнө.
гуравдугаарт: 
Алгоритмыг биелүүлэх явцад гарч байгаа завсрын үр дүн 
болон гарга үйлдлээр гарах эцсийн үр дүнг шалгах замаар 
алгоритм зөв эсэх тухай дүгнэлт хийнэ. Хэрэв алгоритмыг 
биелүүлэх үед бидний бодож байгаагаас зөрүүтэй буруу үр 
дүн гарч байвал зохиож байгаа хүснэгтийг ашиглан 
алгоритмыг шинжилж ямар алдаа байгааг тогтоох хэрэгтэй. 
Алгоритмыг шалгах зорилгоор зохиож байгаа хүснэгтийг бид 
цаашид алгоритмын утгын хүснэгт гэж нэрлэнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Утгын хүснэгтийн арга (Алгоритмыг хүснэгтээр шалгах) 
Энэ нь алгоритмын өгөгдөл хэмжигдэхүүнүүдэд тодорхой утгуудыг 
өгөөд алгоритмыг биелүүлэх явцдаа алгоритмын бүх 
хэмжигдэхүүнүүдийн утгыг хүснэгтэнд бичиж тэмдэглэх арга юм. 
Хэмжигдэхүүний утгуудыг бичиж тэмдэглэж байгаа хүснэгтийг 
утгын хүснэгт гэнэ. 
Алгоритмын хэмжигдэхүүн бүрт хүснэгтийн нэг, нэг багана 
харгалзана. Хүснэгтийн мөрүүдэд алгоритмыг биелүүлэх явцад 
гарч байгаа хэмжигдэхүүнүүдийн утгуудыг харгалзах багананд нь 
бичнэ. Алгоритмыг энэ аргачлалаар шалгахын тулд өгөгдөл 
хэмжигдэхүүнүүдийн утгуудыг сонгож авна. Сонгон авч байгаа 
утгуудын хувьд үүний өмнө дараах нөхцлүүд биелэгдэж байх 
хэрэгтэй. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
 Өгөгдлүүд нь бодлогын өгсөн нөхцлийг хангадаг байх 
 Тэдгээр өгөгдөлд харгалзах үр дүн мэдэгдэж байх 
 Алгоритмын үйлдлүүдийг хүн гүйцэтгээд бодлогын үр 
дүнг хялбархан олж чаддаг байх 
Утгын хүснэгтийн аргыг өмнө үзсэн, өгсөн бодит х, натурал 
n-ын хувьд 
1+푥/1!+x2/2!+…+xn/n! нийлбэрийг олох алгоритм дээр 
тайлбарлая. 
Уг алгоритмыг x=1, n=1 болох x=0, n=5 байх тохиолдлуудад 
шалгая. Өгсөн 1+x/1!+x2/2!+…+xn/n! илэрхийллийн утга 
эхний тохиолдолд 2, хоёр дахь тохиолдолд 1 байна гэдгийг 
шууд тооцоолж болно. Одоо эдгээр тохиолдлуудад харгалзах 
үр дүнг алгоритмыг гүйцэтгэж ольё. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Бидний алгоритмд 6 хувьсагч хэрэглэгдэх тул утгын хүснэгт 
нь 7 баганатай байна. Хүснэгтийн нэгдүгээр багананд 
алгоритмыг шалгаж байгаа тохиолдлуудын дугаарыг, бусад 
багануудад хувьсагчдын нэрийг тус тус бичнэ. 
Хүснэгтийн мөрийн тоо нь дээрх тохиолдлуудад алгоритмын 
алхамууд хэдэн удаа биелэгдэхээс хамаарах тул одоогоор 
хүснэгтийн мөрийн тоог тогтоох боломжгүй. Алгоритмыг 
гүйцэтгэж эхлээгүй байхад утгын хүснэгт нь дараахь 
хэлбэртэй байна. 
Хувьсагч 
вариант 
x n a k S I 
I 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Утгын хүснэгтэд эхлээд өгөгдлүүд болон хувьсагчдын анхны 
утгуудыг бичнэ. Ингээд өгөгдлүүдэд эхний тохиолдолын 
утгуудыг өгөөд алгоритмын алхамуудыг гүйцэтгэх үед гарч 
байгаа утгуудыг хүснэгтийн харгалзах багананд бичиж 
тэмдэглэе. Тэгвэл эхний тохиолдлын хувьд утгын хүснэгт нь 
дараах хэлбэртэй болно. 
хувьсагч вариант X n а к S I 
I 1 1 1 
1 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
1 
1 
1 
2 
1 
2 
Энэ хүснэгтийн 5 багананд хамгийн сүүлд бичигдсэн 2 гэсэн 
утга нь эхний тохиолдолд харгалзах үр дүн юм.
Энэ үр дүн нь урьдчилан тогтоосон үр дүнтэй ижил учир 
эхний тохиолдлын хувьд алгоритм зөв ажиллаж байна гэж 
ярьж болно. Одоо хоёр дахь тохиолдлын хувьд алгоритмыг 
гүйцэтгэе. Тэгвэл дараах хүснэгт үүснэ. 
хувьсагч вариант X n а к S I 
II 0 5 1 
0 
0 
0 
0 
0 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 
1 
1 
2 
6 
24 
120 
1 
1 
1 
1 
1 
1 
1 
2 
3 
4 
5 
6
Дээрх хүснэгтийн S баганын эцсийн утга 1 нь бодлогын үр 
дүн болно. Энэ утга өмнө урьдчилан тооцоолсон утгатай 
тэнцүү байгаа нь хоёр дахь тохиолдлын хувьд алгоритм зөв 
ажиллаж байгааг илтгэнэ. Хүснэгтийн к нэртэй баганын 
эцсийн утга 120 нь 5-ын факториалыг тодорхойлох бөгөөд I 
хувьсагчийн утга 6 болоход алгоритм биелэгдэж дуусна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
2. Логик шалгалтын арга 
Энэ нь алгоритмын өгөгдөл хэмжигдэхүүнүүдэд тодорхой 
утга өгөлгүйгээр алгоритмын алхамуудыг гүйцэтгэж үр дүнг 
тогтоох аргачлал юм. Ингэж шалгахад алгоритмын үр дүн нь 
тодорхой утга байх албагүй бөгөөд ихэнхидээ илэрхийлэл 
хэлбэрээр гарна. Бид дээрх алгоритмыг гүйцэтгээд а, к, S 
нь харгалзан эхлээд x, 1, 1+x дараа нь x2, 2, 1+x/1+x2/2 гэх 
мэтчилэн хамгийн эцэст xn, n!, 1+x/1!+x2/2!+…+xn/n! болно 
гэдгийг тогтоож чадна. 
Алгоритмыг ингэж шалгахдаа хэмжигдэхүүнүүдийн утгыг 
бичиж тэмдэглэж болох бөгөөд алгоритмын зарим 
хэмжигдэхүүний утга илэрхийлэл хэлбэрээр гарна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
3. Хэсэгчилэн шалгах арга 
Томоохон алгоритмыг шалгахдаа алгоритмыг хэд хэдэн 
хэсэгт хуваагаад хэсэг бүрийг дээрх аргуудын аль нэгээр 
шалгаж болно. Алгоритмыг хэсгүүдэд хуваахдаа алгоритмыг 
анх зохиоход тодорхойлсон алгоритмын бүрэлдэхүүн 
хэсгүүдийн бүтцийг харгалзаж үзэх хэрэгтэй. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритмын шинжилгээ 
Алгоритм ажиллаж зөв үр дүнг өгнө гэдгийг тогтоосны дараа 
алгоритмыг шинжлэнэ. Алгоритмыг шинжлэх гэдэгт дараах 
үзүүлэлтүүдийг тооцоолохыг ойлгоно. 
 Алгоритмын хэмжигдэхүүний нийт тоо буюу санах ойн 
зарцуулалт 
 Алгоритмын биелэгдэх хугацаа 
 Алгоритмыг хэрэгжүүлэх үед гарах зардлын тооцоо 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Нэгдүгээр үзүүлэлтийг хялбархан тооцоолж болох бөгөөд 
хоёрдугаар үзүүлэлтийг бүрэн тооцоолоход бидэнд 
математикийн нэмэлт мэдлэг хэрэгтэй бөгөөд математикийн 
энгийн ойлголтууд дээр тулгуурлаад зарим алгоритмын 
биелэгдэх хугацааг тооцоолон гаргаж болно. Алгоритмын 
биелэгдэх хугацаа нь ерөнхийдөө алгоритмын үр дүнг олох 
хүртэл хийгдэж байгаа үйлдлүүдийн тоогоор 
тодорхойлогдоно. Энд арифметикийн болон хэмжигдэхүүний 
утгуудыг жиших зэрэг алгоритмын биелэгдэх хугацаанд 
нөлөөлөх гол үйлдлүүдийг авч үзэх хэрэгтэй. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритмын хэмжигдэхүүний тоо аль болох цөөн, 
алгоритмын биелэгдэх хугацаа мөн бага байх ёстой. Одоо 
өмнөх сэдэвт авч үзсэн алгоритмын хувьд эхний хоёр 
үзүүлэлтийн шинжилгээг хийе. 
1. Санах ойн шинжилгээ 
Уг алгоритмын хэмжигдэхүүний тоо нь 6 байна. Хэрвээ 
хэмжиг-дэхүүний тоог 6-аас багасгаж чадвал тийм алгоритм 
нь энэ алгоритмаас санах ой зарцуулалтын хувьд илүү сайн 
алгоритм болно. 
2. Биелэгдэх хугацааны шинжилгээ 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Дээрх алгоритмын биелэгдэх хугацаа нь ээлжит 
нэмэгдэхүүний хүртвэр а ба хуваарь к, нийлбэр S-ийг олоход 
хийгдэх үйлдлийн тооноос хамаарна. Хүртвэрийг олох а=а*х 
томъёонд 1 үйлдэл, хуваарийг олох к=k*I томъёонд мөн 1 
үйлдэл, нийлбэрийг олох S=S+a/k томъёонд 2 үйлддэл тус 
тус хийгдэнэ. Эдгээр томъёонуудад хийгдэх үйлдлийн нийт 
тоо 4 болох ба эдгээр томъёонууд нийтдээ n удаа 
давтагдана. Тэгвэл дээрх алгоритмын биелэгдэх хугацаа нь 
4n-тэй пропорционал байна. 
Энэхүү шинжилгээг хийсний үр дүнд алгоритмыг сайжруулах 
буюу дурьдсан хоёр үзүүлэлтээрээ дээрх алгоритмаас илүү 
сайн алгоритмыг зохиох санаа бодол гарч ирнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
1. Дээрх алгоритмд ээлжит нэмэгдэхүүний хүртвэр ба 
хуваарийг өөр өөр хэмжигдэхүүнд хадгалж олоод дараа 
нь тэдгээрийг хувааж ээлжит нэмэгдэхүүнийг олсон 
билээ. Үүний оронд ээлжит нэмэгдэхүүнийг шууд 
тооцоолон гаргахад 
xi/i!=xi-1/(i-1)!*x/i 
гэсэн рекурент томъёог хэрэглэж болно. Ээлжит 
нэмэгдэхүүнийг хадгалах хаягийг b гэвэл энэ томьёо нь 
b=b*x/i гэж бичигдэнэ. Энд b-ийн анхны утга нь 1 байна. 
Энэ томъёог хэрэглэсэн алгоритмын хэмжигдэхүүний тоо нь 
5 болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Хэрвээ ээлжит нэмэгдэхүүнийг b=b*x/i нийлбэрийг S=S+b 
гэсэн томъёонуудаар олвол алгоритмд хийгдэх 
арифметикийн үйлдлийн нийт тоо нь Зn гэдгийг тогтоож 
болно. Эдгээр санаануудыг хэрэглэж зохиосон алгоритмын 
хэмжигдэхүүний тоо 5, биелэгдэх хугацаа нь Зn-тэй 
пропорциональ байна. Үнэндээ дээрх алгоритмаас сайн 
алгоритм зохиох буюу алгоритмыг сайжруулах боломж 
байна гэдэг нь харагдана. Ерөнхий тохиолдолд алгоритмыг 
шинжлэхэд хэрэглэх математикийн ойлголтууд болон 
шинжилгээний аргуудыг авч үзье. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Шинжилгээний аргууд 
Ерөнхий тохиолдолд алгоритмын санах ойн хэмжээ ба 
биелэгдэх хугацааг тооцоолон гаргахад дараах 
аргачлалуудыг хэрэглэнэ. 
Шууд тооцоолох арга 
Тухайн алгоритмын хувьд дээрх үзүүлэлтүүдийг ил хэлбэрээр 
шууд тооцоолон гаргах боломжтой үед энэ аргыг хэрэглэнэ. 
Одоо энэ аргаар хүснэгтийг эрэмбэлэх зарим сонгодог 
аргуудын шинжилгээг хийе. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Сонголттой эрэмбэлэх аргын шинжилгээ 
Энэ арга дахь хүснэгтийн хоёр элементийн байрыг солих 
үйлдлийн нийт тоог T1(n) гэвэл Т1(n) = n-1 байна гэдгийг 
хялбархан харж болно. Элементүүдийг жиших үйлдлийн 
нийт тоог Т2(n) гэвэл Т2(n) = (n-1)+(n-2)+...+1 =n(n-1)/2 
байна. 
Эрэмбэлэлтийг хийхэд зарцуулагдах нийт хугацааг Т(п), 
байр солих нэгэн үйлдэлд зарцуулах хугацааг с1, жиших 
нэгэн үйлдэлд зарцуулах хугацааг с2 гэвэл Т(п) -ийн хувьд 
дараах томъёо хүчинтэй байна. 
Т(n) = с1(n-1)+с2*n(n-1)/2= 0(n2) 
Эндээс харвал сонголттой эрэмбэлэлтийн биелэгдэх хугацаа 
нь n2-тай ижил эрэмбийн хэмжигдэхүүн байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Энэ аргад хэрэглэгдэх санах ойн хэмжээ нь n-тэй ижил 
эрэмбийн хэмжигдэхүүн байх нь ойлгомжтой юм. 
Оруулгын эрэмбэлэх аргын шинжилгээ 
Энэ аргын хувьд байр солих үйлдлийн нийт тоо T1(n) нь 
T1(n)1+2+…+(n-1)=n(n-1)/2, жиших үйлдлийн нийт тоо 
T2(n) нь T2(n) 1+2+…+(n-1)=n(n-1)/2 байна гэдгийг тогтооход 
төвөгтэй биш юм. Тэгвэл энэ аргаар n элементтэй хүснэгтийг 
эрэмбэлэхэд зарцуулагдах хугацааны хувьд дараах үнэлгээ 
үнэн байна. 
T(n)=c1T1(n)+c2T2(n) n(n-1)/2*(c1+c2)=0(n2) 
Өөрөөр хэлбэл энэ аргын биелэгдэх хугацаа нь хамгийн ихдээ 
n2 -тай ижил эрэмбийн хэмжигдэхүүн байна. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Ойролцоогоор үнэлэх арга Энэ аргыг, дурьдсан үзүүлэлтийг 
шууд тооцоолон гаргахад төвөгтэй үед хэрэглэх бөгөөд 
алгоритм хамгийн хурдан (the best case), хамгийн удаан 
(the worst case) ажиллах тохиолдолуудад алгоритмын 
биелэгдэх хугацааны доод ба дээд үнэлгээнүүдийг олно. Мөн 
эндээс эдгээр үнэлгээнүүдийг дундажлан алгоритмын 
биелэгдэх хугацааны дундаж (the average case) 
тохиолдолын үнэлгээг гаргана. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритмын шинжилгээний 3-р үзүүлэлт нь зардал, өртөгийн 
тооцоо юм. Том хэмжээний програм хангамжийн системийг 
бүтээх зардал нь тухайн алгоритмыг хэрэгжүүлэх үед гарах 
зардал, өртөгөөс хамаарна. Энэ үзүүлэлтийг тооцоолохын 
тулд алгоритмын үйлдлүүдэд тооцооны зардал гэж 
нэрлэгдэх хэмжигдэхүүнүүдийг оноож уг зардлын хамгийн 
бага ба их утгыг тооцоолон гарна. Тооцооны зардал нь 
үйлдлийн биелэгдэх хугацаа, үйлдлийн тоо, өгөлдлийн бүтэц 
дээр боловсруулалт хийхэд шаардагдах өртөг зэрэг байж 
болно. Энэ хэлбэрийн шинжилгээнд дараах аргуудыг 
хэрэглэж болно 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Бүлэглэх арга 
Алгоритмыг дараах нөхцлүүдийг хангах дэд хэсгүүдэд 
хувааж хэсэг бүрийн хувьд зардлаа тооцно. 
Хэсэг бүр алгоритмын зардалд нөлөөлөх нэг л үйлдлийг 
агуулсан байна. 
Хэсгийн бусад үйлдлүүд нь дээрх үйлдлээс хурдан 
биелэгддэг байна. 
Нэг хэсэг нь өгөгдлийн нэг л төрлийг агуулдаг байна. Хэрвээ 
хэсэг нь m ширхэг үйлдэлтэй, хамгийн удаан биелэгдэх 
үйлдлийн зардал нь T(m) бол уг хэсгийн зардал нь дээрээсээ 
mT(m) хэмжигдэхүүнээр зааглагдах болно. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Урьдчилгаа төлбөрийн арга 
Өгөгдлийн бүтэцийн үйлдэл бүрт урьдчилсан байдлаар, 
ойролцоогоор тооцооны зардал оноож өгөгдлийн 
бүтэцийнхээ зардлыг тооцож олно. Тооцооны зардал нь 
бодит зардлаасаа их эсвэл бага байж болно. Хэрвээ тухайн 
үйлдлийн зардал бодит зардлаасаа их байвал уг үйлдлийг 
хэрэгжүүлэхэд зардлын хэмнэлт гарсан тул хэмнэсэн 
зардлыг өөр өгөгдлийн бүтэцийн зардалд ашиглаж болох 
юм. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Потенциаларга 
Энэньурьдчилгаатөлбөрийнаргынөргөтгөсөнхэлбэрбөгөөдөгөгдли 
йнбүтэцийнтөлөвбүртоноосонf(Di) 
потенциалаарүйлдэлбүрийнзардлыгдараахтомъёогооролно. 
Ci=ci+f(Di)-f(Di-1) 
Үүнд Di нь 1-р үйлдлийндарааөгөгдлийнбүтэцийноршихтөлөв, D0 
ньөгөгдлийнбүтэцийнанхнытөлөв, f 
ньөгөгдлийнбүтэцийнтөлөвтпотенциалхаргалзуулахфункц, 
сiньугүйлдлийнбодитзардал, 
сiньугүйлдэлдоноосонтооцоонызардал. 
Тухайналгоритмдугүйлдэлn 
удаабиелэгдсэнболугүйлдлийнтооцоонынийтзардалнь 
n 풄풊 = 풊=ퟎ 
i=0 
풏 풄풊 + 풇 푫풏 − 풇(푫ퟎ) 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритмыг шинэчлэх 
Алгоритмын шинжилгээг хийсний дараа юуны түрүүнд санах 
ойн хэмжээ ба биелэгдэх хугацааг багасгах өөр арга замыг 
хайх ёстой. Өөрөөр хэлбэл бодлогыг бодох алгоритмаа 
сайжруулах хэрэгтэй. Алгоритмын давталтын биед байгаа 
а=а*х, к=к*I, s=s+а/к илэрхийллүүдийн утгыг бодоход 4 
үйлдэл хийнэ. Харин ээлжит нэмэгдэхүүнийг олоход f=f*x/I 
томъёог хэрэглэвэл нийлбэрийг s=s+f гэж олж болно. Тэгвэл 
давталтын биеийг f=f*x/I, s=s+f гэж өөрчлөн бичиж болно. 
Эдгээр хоёр нлэрхийллийн утгыг олоход 3 үйлдэл хийнэ. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Иймээс уг алгоритмыг дараах хэлбэрээр сайжруулан зохиож 
болно. 
Ийм өөрчлөлтийг хийснээр алгоритмын биелэгдэх хугацааг 
тодорхойлох үйлдлийн тоо нь 4n-ээс Зn болж n-ээр багасаж 
чадна. 
Ерөнхий тохиолдолд алгоритмыг заавал сайжруулж болно 
гэж үзэж болохгүй. 
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ

Más contenido relacionado

La actualidad más candente

U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10Badral Khurelbaatar
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудБаярсайхан Л
 
мэдээллийн системийн үндэс
мэдээллийн системийн үндэсмэдээллийн системийн үндэс
мэдээллийн системийн үндэсTsetsenkhuu Otgonbayar
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудБаярсайхан Л
 
оролт гаралтын төхөөрөмжүүд
оролт гаралтын төхөөрөмжүүдоролт гаралтын төхөөрөмжүүд
оролт гаралтын төхөөрөмжүүдerdenetuya_glu
 
тооллын систем
тооллын системтооллын систем
тооллын системMunkhuu Buyanaa
 
салаалсан алгоритм
салаалсан алгоритмсалаалсан алгоритм
салаалсан алгоритмBurotino Iosifob
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргуудBayalagmaa Davaanyam
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2тNarantungaa
 
U.cs101 алгоритм программчлал-13
U.cs101   алгоритм программчлал-13U.cs101   алгоритм программчлал-13
U.cs101 алгоритм программчлал-13Badral Khurelbaatar
 

La actualidad más candente (20)

U.cs101 алгоритм программчлал-7
U.cs101   алгоритм программчлал-7U.cs101   алгоритм программчлал-7
U.cs101 алгоритм программчлал-7
 
Лекц 2 (Блок схем)
Лекц 2 (Блок схем)Лекц 2 (Блок схем)
Лекц 2 (Блок схем)
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
 
Smallbasic
SmallbasicSmallbasic
Smallbasic
 
мэдээллийн системийн үндэс
мэдээллийн системийн үндэсмэдээллийн системийн үндэс
мэдээллийн системийн үндэс
 
алгоритм
алгоритмалгоритм
алгоритм
 
Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогууд
 
оролт гаралтын төхөөрөмжүүд
оролт гаралтын төхөөрөмжүүдоролт гаралтын төхөөрөмжүүд
оролт гаралтын төхөөрөмжүүд
 
тооллын систем
тооллын системтооллын систем
тооллын систем
 
салаалсан алгоритм
салаалсан алгоритмсалаалсан алгоритм
салаалсан алгоритм
 
Лекц №4
Лекц №4Лекц №4
Лекц №4
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
 
Лекц 10: (Рекурс)
Лекц 10: (Рекурс)Лекц 10: (Рекурс)
Лекц 10: (Рекурс)
 
5 algorithm
5 algorithm5 algorithm
5 algorithm
 
6 shugaman
6 shugaman6 shugaman
6 shugaman
 
It101 1
It101 1It101 1
It101 1
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2т
 
U.cs101 алгоритм программчлал-13
U.cs101   алгоритм программчлал-13U.cs101   алгоритм программчлал-13
U.cs101 алгоритм программчлал-13
 

Destacado

алгоритмын бодлогууд
алгоритмын бодлогуудалгоритмын бодлогууд
алгоритмын бодлогуудRenchindorj Monkhzul
 
Шугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогуудШугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогуудБаярсайхан Л
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasahBadral Khurelbaatar
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3Khuder Altangerel
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэсGombo Tumuruu
 
алгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжалгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжMijiddorj Renchin-Ochir
 
U.cs101 алгоритм программчлал-5
U.cs101   алгоритм программчлал-5U.cs101   алгоритм программчлал-5
U.cs101 алгоритм программчлал-5Badral Khurelbaatar
 
хиех ба хбех
хиех ба хбеххиех ба хбех
хиех ба хбехHorloo Ebika
 
Medeelel
MedeelelMedeelel
Medeelelhenjii
 
шилжилтийн 7 анхны тоон үржигдэхүүнд задлах
шилжилтийн 7 анхны тоон үржигдэхүүнд задлахшилжилтийн 7 анхны тоон үржигдэхүүнд задлах
шилжилтийн 7 анхны тоон үржигдэхүүнд задлахdelger_9g
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12Badral Khurelbaatar
 
Dsi lec3
Dsi lec3Dsi lec3
Dsi lec3ggmo86
 
U.cs101 алгоритм программчлал-9
U.cs101   алгоритм программчлал-9 U.cs101   алгоритм программчлал-9
U.cs101 алгоритм программчлал-9 Badral Khurelbaatar
 

Destacado (18)

алгоритмын бодлогууд
алгоритмын бодлогуудалгоритмын бодлогууд
алгоритмын бодлогууд
 
Шугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогуудШугаман алгоритмын бодлогууд
Шугаман алгоритмын бодлогууд
 
U.cs101 алгоритм программчлал-4-zasah
U.cs101   алгоритм программчлал-4-zasahU.cs101   алгоритм программчлал-4-zasah
U.cs101 алгоритм программчлал-4-zasah
 
u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
C++
C++C++
C++
 
Programchlaliin c hel
Programchlaliin c helProgramchlaliin c hel
Programchlaliin c hel
 
бодлого C++
бодлого C++бодлого C++
бодлого C++
 
алгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомжалгоритм шинжилгээ зохиомж
алгоритм шинжилгээ зохиомж
 
U.cs101 алгоритм программчлал-5
U.cs101   алгоритм программчлал-5U.cs101   алгоритм программчлал-5
U.cs101 алгоритм программчлал-5
 
хиех ба хбех
хиех ба хбеххиех ба хбех
хиех ба хбех
 
Medeelel
MedeelelMedeelel
Medeelel
 
PL Lecture3
PL Lecture3PL Lecture3
PL Lecture3
 
шилжилтийн 7 анхны тоон үржигдэхүүнд задлах
шилжилтийн 7 анхны тоон үржигдэхүүнд задлахшилжилтийн 7 анхны тоон үржигдэхүүнд задлах
шилжилтийн 7 анхны тоон үржигдэхүүнд задлах
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
U.cs101 lecture 6
U.cs101   lecture 6U.cs101   lecture 6
U.cs101 lecture 6
 
Dsi lec3
Dsi lec3Dsi lec3
Dsi lec3
 
U.cs101 алгоритм программчлал-9
U.cs101   алгоритм программчлал-9 U.cs101   алгоритм программчлал-9
U.cs101 алгоритм программчлал-9
 

Similar a U.cs101 алгоритм программчлал-3

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

U.cs101 алгоритм программчлал-15
U.cs101   алгоритм программчлал-15U.cs101   алгоритм программчлал-15
U.cs101 алгоритм программчлал-15
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
 
Algortmin parametrt dawtalt hicheel
Algortmin parametrt dawtalt  hicheelAlgortmin parametrt dawtalt  hicheel
Algortmin parametrt dawtalt hicheel
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
9 salaalsan algkritm (1)
9 salaalsan algkritm (1)9 salaalsan algkritm (1)
9 salaalsan algkritm (1)
 
U.cs101 алгоритм программчлал-14
U.cs101   алгоритм программчлал-14U.cs101   алгоритм программчлал-14
U.cs101 алгоритм программчлал-14
 
Datastructure algoritm
Datastructure algoritmDatastructure algoritm
Datastructure algoritm
 
Өгөгдлийн бүтэц 1
Өгөгдлийн бүтэц 1Өгөгдлийн бүтэц 1
Өгөгдлийн бүтэц 1
 
It101 lab 4
It101 lab 4It101 lab 4
It101 lab 4
 
It101 lab 4
It101 lab 4It101 lab 4
It101 lab 4
 
It101 lab 4
It101 lab 4It101 lab 4
It101 lab 4
 
It101 9
It101 9It101 9
It101 9
 
алгоритм
алгоритмалгоритм
алгоритм
 
алгоритм
алгоритмалгоритм
алгоритм
 
алгоритм
алгоритмалгоритм
алгоритм
 
Mathcad beginning-part1
Mathcad beginning-part1Mathcad beginning-part1
Mathcad beginning-part1
 
алгоритм
алгоритмалгоритм
алгоритм
 
алгоритм
алгоритмалгоритм
алгоритм
 
энхсаран цахим1
энхсаран цахим1энхсаран цахим1
энхсаран цахим1
 

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

  • 1. ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ, Е-НЭЭЛТТЭЙ ИНСТИТУТ Алгоритм ба програмчлал Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ www.emust.edu.mn Лекц - 3
  • 2. U.CS101- Алгоритм ба програмчлал Сэдэв: Алгоритмыг шалгах, шинжлэх, боловсруулалт Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ www.emust.edu.mn
  • 3. Агуулга: 01 Алгоритмыг шалгах Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ www.emust.edu.mn 01 02 02 Алгоритмыг хүснэгтээр шалгах 03 Алгоритмын шинжилгээ 04 Шинжилгээний аргууд 04 Алгоритмыг шинэчлэх
  • 4. Судлах зүйл: Энэ хичээлээр алгоритмыг шалгах аргууд, тэдгээрийн хэрэглээ, алгоритмыг шинжлэх үе шатуудын, шинжилгээний аргуудын талаар товч ойлголттой болох юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 5. 3.1. Алгоритмыг шалгах Алгоритмчлах ба програмчлах үйл ажиллагааны нэгэн үе шат нь алгоритм, програмаа шалгаж зөв гэдгийг нь нотлох үйл ажиллагаа байдаг. Ерөнхий тохиолдолд програм хангамжийн бүтээгдэхүүн үйлдвэрлэхэд энэ үйл ажиллагааг дараах хоёр хэсэгт хувааж үздэг. Хэрэглэгчийн хүссэн зөв бүтээгдэхүүн буюу зөв алгоритм, програм зохиож байгаа гэдгийг тогтоох үйл ажиллагааг програмыг нягтлаж үзэх (validation) гэнэ. Энэ үйл ажиллагаа нь алгоритм, програм зохиох явцын хяналт шалгалт бөгөөд ихэвчлэн програмын шаардлага, зохиомжийг тодорхойлох, кодчлох үед үзлэг явуулах байдлаар хийгдэнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 6. Алгоритм, програм алдаагүй зөв ажиллаж байгааг тогтоох үйл ажиллагааг програмыг шалгаж үзэх (verification) гэнэ. Энэ үйл ажиллагааг заримдаа програмыг тестлэх гэх ба энэ нь ихэвчлэн програмын кодчлол дууссаны дараа түүнийг ажиллуулж үзэн алдааг хайх хяналт шалгалт болно. Алгоритм зохиоход эдгээр хоёр үйл ажиллагааг хоёуланг хийх нь зүйтэй юм. Алгоритмыг нягтлаж үзэхийн тулд бодлогыг бодох арга зөв эсэх, хэмжигдэхүүнүүдийн хоорондын хамаарал зөв эсэх, үйлдлүүдийн дараалал зөв эсэх гэх мэтийг нягтлах ёстой. Алгоритм алдаагүй зөв ажиллана гэдгийг батлах нь ихээхэн төвөгтэй, олон талын мэдлэг шаардах үйл ажиллагаа байдаг тул практикт алгоритм алдаагүй зөв гэж батлахын оронд алдааг пь олж засах аргыг ихэвчлэн хэрэглэдэг. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 7. Үүний тулд алгоритм буруу үр дүн өгөх өгөгдлүудийг олж сонгон уг өгөдлүүдийн хувьд алгоритмаа ажиллуулна. Ийм өгөгдлүүдийг сөрөг жишээ (counter example) гэж нэрлэнэ. Сөрөг жишээнүүд нь дараах чанаруудтай байна. Шалгаж болох чанар Энэ нь уг алгоритмаар тухайн сөрөг жишээнд харгалзах хариуг нь олж болдог бөгөөд зөв хариуг нь олж чадахгүй байх чанар юм. Энгийн хялбар байх чанар Сөрөг жишээ өгөгдөл нь алгоритм яагаад буруу хариуг өгч байгааг нь илрүүлж чадах бөгөөд ач холбогдолгүй зүйлс агуулаагүй байх ёстой. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 8. Сөрөг жишээг дараах алгоритм дээр авч үзье. Өгсөн натурал тоо анхны тоо мөн эсэхийг шалгах алгоритмыг дараахь хэлбэрээр зохиосон байг. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 9. Энэ алгоритмд бүхэлээр хуваах үйлдлийг /-ээр, хуваалгын бутархай хэсгийг %-ээр тус тус тэмдэглэсэн бөгөөд 1 -ээс ялгаатай натурал тоо бүрийг анхны тоо мөн эсэхийг нь тогтоож чадна. Харин n=1 тохиолдолд алгоритм буруу үр дүнг буюу 1- ийг анхны тоо гэж үзнэ. Иймээс n= 1 нь энэхүү алгоритмын сөрөг жишээ юм. Алгоритм зөв ажиллахгүй байгаа өгөгдлүүдийг таньж мэдснээр холбогдох алдааг нь засах замаар зөв алгоритмыг гаргаж авах боломжтой болно. Алгоритм болон програмыг шалгахдаа ерөнхий тохиолдолд дараах зүйлсийг хийх хэрэгтэй. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 10. 1. Тестийн тохиолдолуудыг тодорхойлох Тестийн тохиолдлууд (test case) гэдэг нь алгоритмын аль хэсгийг шалгахад ямар ямар оролтууд хэрэгтэй болон уг оролтуудад харгалзах гаралтууд нь ямар байхыг тодорхойлсон баримт бичиг юм. 2. Тестийн өгөгдлийг тодорхойлох Тестийн өгөгдөл (test data) гэдэг нь тухайн тестийн тохиолдлуудыг шалгахад алгоритмд оруулах жинхэнэ утгууд юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 11. Аливаа тестийг хийхдээ эхлээд системийн ямар шинж чанарыг нь голлон анхаарч шалгахаа тогтож тухайн шинж чанарыг өдөөж чадах тестийн өгөгдлүүдээ бэлтгэнэ. Алгоритмын шинж чанарыг гаднаас нь шалгадаг буюу тодорхой оролтуудад харгалзах гаралтуудыг шалгах замаар хийгддэг тестийг хар хайрцагны тест (blackbox testing) гэж нэрлэдэг. Хэрэв таамаглаж байснаас өөр буюу тестийн тохиолдолд тодорхойлсоноос өөр гаралт гарвал системд ямар нэг алдаа байгааг илрүүллээ гэж үздэг. Хар хайрцагны тестийн аргуудаас алгоритмыг шалгахад хамгийн тохиромжтой нь Тэнцүү хуваах ба захын утгын шинжилгээний арга (equivalence partitioning and Boundary value analysis) юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 12. Алгоритмын тестийн өгөгдлүүд нь ижил байдлаар боловсруулалт хийх бүлгүүдэд хуваагддаг тохиолдолд тэнцүү хуваах (equivalence partitioning) гэсэн аргыг хэрэглэнэ. Өөрөөр хэлбэл алгоритм ижил байдлаар боловсруулах бүлэг өгөгдлөөс дор хаяж нэг нэгийг тестийн өгөгдөлд оруулж алгоритмыг шалгах хэрэгтэй гэсэн үг юм. Тестийн өгөгдлүүд нь тэнцүү хуваагдсан бөгөөд ямар нэг байдлаар эрэмбэлэгдсэн тохиолдолд захын буюу хил дээрхи утгын шинжилгээ (boundary value analysis) хийх нь оновчтой байдаг. Захын утга гэдэг нь тухайн тэнцүү хуваагдсан хэсэг бүрийн авч чадах утгууд юм. Учир нь хил дээрхи утгуудад сисmемийг тестийн хувьд сонирхож буй шинж чанарууд илэрдэг байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 13. Жишээлбэл өгсөн натурал тоо (1<=n<=99) анхны тоо мөн эсэхийг тогтоох алгоритмын тестийн өгөгдлүүдийг 1-ээс бага байх, өгсөн нөхцөлд тохирох тоо байх, n-ээс их байх гэсэн бүлгүүдэд хувааж болно. Иймд тест хийж үзэх өгөгдлүүд нь эдгээр хэсгүүдийн хил дээрхи утга буюу 0, 1, 99, 100 байхад хангалтай юм. Алгоритмд 0-ийг оруулахад хэтэрхий бага утга, 100-г оруулахад хэтэрхий их утга гэсэн алдаа гарч, 1 болон 99- ийг оруулахад зохих хариуг гардаг байх ёстой. Алгоритмын алхамууд эсвэл програмын кодон дотор алдаа хайх аргуудыг цагаан хайрцагны (whitebox testing) тестлэх аргууд гэдэг. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 14. Эдгээр аргуудыг ашиглахын тулд алгоритм, програмын дотоод бүтэц, шинж чанарыг сайн судлах шаарлагатай бөгөөд тэдгээр шинж чанаруудыг нээн харуулж чадах өгөгдлүүдийг тестийн өгөгдлүүд болгож сонгох хэрэгтэй. Цагаан хайрцагны тестийг ерөнхийд нь 2 бүлэгт хуваадаг. 1. Удирдлагын урсгалын тест (Control-flow testing) 2. Өгөгдлийн урсгалын тест (Data-flow testing) Удирдлагын урсгалын тестийн гол зорилго нь алгоритмын алхам бүрийг эсвэл кодон дахь бүх үйлдлийг (statement) дор хаяж нэг удаа ажиллуулж үзэх явдал юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 15. Үүний тулд үүний өмнө алгоритм, програмын бодолт хийгдэх бүх салаа замууд буюу удирдлагын урсгалын замын тоог (cyclomatic complesity - CC) доорхи томъёогоор олно. СС = 2n; Үүнд n нь нөхцлүүдийн тоо. Шугаман алгоритмын хувьд n=0 байна. Удирдлагын урсгалын замын тоо нь алгоритм, програмыг хичнээн бүлэг өгөгдлүүдийн хувьд шалгахыг ойролцоогоор заадаг. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 16. Жишээлбэл: Евклидийн алгоритм нь нийт хоёр нөхцөлтэй, тэдгээр нь давхар байна. Иймд уг алгоритмын удирдлагын урсгалын замын тоо нь 4 байна. Энэ нь алгоритмыг шалгах өгөгдөл нь 4 бүлэг өгөгдөл байх ёстой гэдгийг илтгэнэ. Тухайлбал өгсөн хоёр тоо тэнцүү байх, аль бага нь ерөнхий хуваагч байх, харилцан анхны тоонууд байх, тэнцүү биш бөтөөд нэгээс ялгаатай ерөнхий үржигдэхүүнтэй байх гэсэн 4 бүлэг өгөгдлүүдийн хувьд шалгах нь зүйтэй юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 17. Өгөгдлийн урсгалын тестийг, алдааг удирдлагын урсгалын тестээр илрүүлэх боломжгүй буюу боловсруулж буй өгөгдлүүдтэй холбоотойгоор үүсч болох алдааг олоход хэрэглэнэ. Өгөгдлийн урсгалын тестэнд эхлээд шинжлэх гэж буй өгөгдлөө сонгоод дараа нь уг өгөгдөл дээрээ DU (definition-use) хосуудыг үүсгэнэ. DU хос гэдэг нь тухайн хувьсагчад утга олгож байгаа алхамын буюу мөрийн дугаар болон уг утгыг ашиглаж буй мөрийн дугаар хоёроос тогтох хос тоо юм. Хосуудын нийт тоо нь алгоритм програмыг хичнээн өгөгдлийн тохиолдолд шалгах ёстойг илэрхийлнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 18. DU хосыг тогтоохын тулд эхлээд хувьсагч бүрт утга олгож буй болон уг уттуудыг ашиглаж буй мөрүүдийг жагсаан бичих нь хос үүсгэх ажлыг хялбарчилдаг байна. Дараа нь уг жагсаалтан дээрээ тулгуурлан DU хосуудыг үусгэдэг. Эдгээр хосуудыг тогтоосны дараа хосууд биелэгдэж байхаар өгөгдлүүдийг сонгож тэдгээр өгөгдлүүдийн хувьд алгоритмаа шалгана. DU хосуудыг байгуулах асуудлыг Евклидийн алгоритм дээр авч үзье. Уг алгоритмыг дараахь хэлбэртэйгээр зохионо. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 19. 1. Өгсөн m,n тоонуудыг оруул 2. Хэрэв m>n байвал 4-р алхамд, эсрэг тохиолдолд 3-р алхамд тус тус шилж 3. Хэрэв m<n байвал 5-р алхамд, эсрэг тохиолдолд 6-р алхамд тус тус шилж 4. m-д m-n гэсэн утга олгоод 2-р алхамд шилж 5. n-д n-m гэсэн утга олгоод 2-р алхмад шилж 6. m-ийг бодлогын хариу болгож хэвлэ. Алгоритмын хувьсагчдын нэр, тэдгээрт утга олгож байгаа ба уг утгуудыг ашиглаж байгаа мөрүүдийн дугаараар дараахь хүснэгтийг зохиож болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 20. Хувьсагчдын нэр Утга олгож буй мөр Утгуудын ашиглаж байгаа мөр n 1.5 2,3,4,5 m 1.4 2,3,4,5,6 Эндээс хувьсагч бүрийн хувьд утга олгож буй ба утгыг ашиглаж байгаа мөрүүдийн дугааруудын дараах хосуудыг үүсгэж болно. n хувьсагчийн хувьд (1,2), (1,3), (1,4), (1,5), (5,2), (5,3), (5,4), (5,5) гэсэн 8 хос үүснэ. m хувьсагчийн хувьд (1,2), (1,3), (1,4), (1,5), (1,6), (4,2), (4,3), (4,4), (4,5), (4,6) гэсэн 10 хос үүснэ. Энд ижил хосуудаас аль нэгийг нь шалгах хэрэгтэй тул шалгагдах (1,2), (1,3), (1,4), (1,5), (5,2), (5,3), (5,4), (5,5), (1,2), (1,3), (1,4), (1,5), (1,6), (4,2), (4,3), (4,4), (4,5), (4,6) гэсэн 14 хос байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 21. Эдгээр хосууд дээр тулгуурлан алгоритм, програмыг шалгах өгөгдлүүдийг сонгож авна. Энэ алгоритмын хувьд өгсөн тоонууд тэнцүү байх үед (1,2), (1,3), (1,6) хосууд шалгагдана. Харин ерөнхий хуваагч нь аль бага тоо нь байх тухайлбал n=2, m=6 эсвэл n=6, m=2 тохиолдолын өгөгдлүүдийн хувьд (1,4), (1,5), (5,2), (5,3), (5,5), (4,2), (4,3), (4,4) шалгагдана. Хэрвээ өгсөн хоёр тоо харилцан анхны тоонууд байвал (5,4),(4,5),(4,6) хосууд хийгдэнэ. Алгоритмыг шалгахад хар ба цагаан хайрцагны аргуудын аль алиных нь шинж чанарыг агуулсан дараах аргуудыг голлон хэрэглэдэг. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 22. 3.2 Алгоритмыг хүснэгтээр шалгах Зохиосон алгоритмын үнэн зөвийг шалгахын тулд түүнийг програмчлалын аль нэг хэлэнд хөрвүүлж програм бичээд түүнийгээ компьютерт оруулж, тохирох анхны өгөгдөл мэдээллийг өгч ажиллуулан зөв үр дүнд хүрч байгаа эсэхийг тогтоох аргыг хэрэглэдэг. Ингэж компьютер дээр алгоритм, програмыг ажиллуулж зөв болох хүртэл засч, шалгах ажиллагааг програмыг зүгшрүүлэх процесс гэж ярьдаг. Програмыг зүгшрүүлэх тусгай арга техник, ашиглах програмын хэрэгсэл байдаг. Энэ аргыг эзэмших, зүгшрүүлэх програмыг ашиглаж сурахад нилээн цаг хугацаа шаардагдана. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 23. Гэтэл програмчлалын хэл судлаагүй, компьютер ашиглах шатанд хүрээгүй байгаа үед юмуу эсвэл ашиглах компьютер гарын дор байхгүй тохиолдолд алгоритмыг (заримдаа түүний хэсгийг) "гараар" шалгах шаардлага гардаг. Мөн түүнчлэн алгоритм зохиох "урлаг", ухаанд эхлэн суралцагч алгоритмыг ойлгох, өөртөө итгэл олж авах зорилгоор алгоритмыг өөрийн гараар шалгаж үзэх нь онцгой ач холбогдолтой байдаг. Ийм учраас алгоритм зөв биелж, олох ёстой үр дүнд хүрч байгаа эсэхийг гараар шалгах нэгэн аргыг энд үзье. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 24. Нэгдүгээрт: Шалгах гэж байгаа алгоритмд ашиглагдаж байгаа хувьсагчийн тоотой тэнцүү тооны баганатай хүснэгт зурж, багана бүрийн оройд харгалзах хувьсагчийн нэрийг бичиж тэмдэглэнэ. Жишээлбэл, өгөгдсөн натурал тооны цифрүүдийн нийлбэр олох доорх алгоритмыг шалгах гэж байгаа гэе. оруул(m); s := 0; n := m; n > 0 бол_давт {s :=s + n10; n :=n/10}; гарга(m, s) Төгс Энд m, s, n гэсэн гурван хувьсагч ашигласан байна. Иймд дараахь хүснэгтийг зохионо m s n алг Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 25. хоёрдугаарт: Алгоритмыг эхнээс нь биелүүлж эхэлнэ, өөрөөр хэлбэл түүний үйлдлүүдийг биелэх дарааллаар биелүүлнэ. Бидний жишээнд эхний үйлдэл нь оруул(m); байгаа тул түүнийг биелүүлнэ. Энэ үйлдлээр нэг натурал тоо оруулж m хувьсагчийн утгыг болгон санах ёстой. Иймд бид m хувьсагчийн утга болгож ямар нэг тоог сонгож аваад m хувьсагчийн баганад бичнэ. Жишээ нь бид цифрүүдийн нийлбэр нь 22 байх m = 4567 тоог өгсөн гэвэл хүснэгт дараахь хэлбэртэй болно. m s n 4567 Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 26. Алгоритмын дараачийн мөрөнд бичигдсэн байгаа s := 0; n := m хоёр үйлдлийг биелүүлэхэд s, m хувьсагчид утга олгоно. Иймд олгох утгуудыг нь харгалзах баганад бичнэ: Дараачийн үйлдэл нь n > 0 нөхцөлтэй давтах үйлдэл байгаа тул шалгах нөхцөл ямар утгатай байгааг бичиж тэмдэглэх нэг баганыг хүснэгтэнд нэмж бичээд энэ нөхцөл ямар утгатай байгааг 'ү' (үнэн) ба 'х' (худал) үсгээр товчилж тэмдэглэнэ: m s n n>0 4567 0 4567 y m s n 4567 0 4567 Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 27. Өмнөх нөхцөлт давталтын хувьд шалгах нөхцөл 'үнэн' байхад түүний бие давтагдаж биелдэг, өөрөөр хэлбэл түүний бие биелээд дараа нь нөхцөлөө дахин шалгаж утга нь ямар байгаагаас хамааран давталтыг үргэлжлүүлэх юмуу эсвэл төгсгөнө. Энэ жишээнд одоо n > 0 нөхцөл биелэгдэж, өөрөөр хэлбэл n хувьсагч тэгээс их утгатай байгаа учир давталтын бие биелэх ёстой. Иймд s := s + n10; n := n/10 үйлдлүүдийг биелүүлж олгох утгыг нь харгалзах хувьсагчийн баганад бичнэ. Тэгэхдээ s := s + n10 үйлдэл нь s хувьсагчийн утга (одоо 0 байгаа) дээр n10 илэрхийллийн утгыг нэмж гарсан тоог (0+456710=0+7=7 байна) s хувьсагчийн утга болгож сана гэсэн утгатай учир s баганы нүдэнд 7 -г бичнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 28. Харин n := n/10 үйлдэл нь n хувьсагчийн одоогийн утгыг, өөрөөр хэлбэл харгалзах баганад бичээтэй байгаа тоог аравт (бүхэл тоог бүхэлд хуваахад бүхэл тоо гарна гэсэн дүрмийг баримтлан) хувааж гарсан утга буюу 456 - г уг хэмжигдэхүүний шинэ утга болгон бичнэ. m s n n>0 4567 0 4567 Y 7 456 Энд хүснэгтийн эхний гурван баганы нүд нь хэмжигдэхүүний утгыг санаж байгаа үүр, харин баганы нэр нь харгалзах үүрийн хаяг болно гэж ойлгох хэрэгтэй. Үүрт шинэ утгыг бичихэд хуучин утга нь устаж зөвхөн шинээр бичсэн утга үлддэг учраас бид зөвхөн одоо байгаа тэр утгыг нь тод өнгөөр бичиж ялгав. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 29. Давталтын бие биелсний дараа n > 0 нөхцөлийг дахин шалгаж уг нөхцөл биелэхгүй, өөрөөр хэлбэл n хувьсагчийн утга тэгээс бага юмуу тэнцүү болтол давталтыг үргэлжлүүлнэ: m s n n>0 4567 0 4567 y 7 456 Y 13 45 Y 18 4 Y 22 0 x Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ Давталтын нөхцөл 'худал' болоход давталтын үйлдэл биелэгдэж төгсөх ба ингэснээр түүний дараачийн үйлдэлд шилжнэ. Иймд гарга (m, s) үйлдэл биелж m, s хоёр хувьсагчийн утга буюу 4567, 22 гэсэн хоёр тоог үр дүн болгон өгнө. Алгоритмын дараачийн мөр нь төгс байгаа тул алгоритмын биелэлт төгсөнө.
  • 30. гуравдугаарт: Алгоритмыг биелүүлэх явцад гарч байгаа завсрын үр дүн болон гарга үйлдлээр гарах эцсийн үр дүнг шалгах замаар алгоритм зөв эсэх тухай дүгнэлт хийнэ. Хэрэв алгоритмыг биелүүлэх үед бидний бодож байгаагаас зөрүүтэй буруу үр дүн гарч байвал зохиож байгаа хүснэгтийг ашиглан алгоритмыг шинжилж ямар алдаа байгааг тогтоох хэрэгтэй. Алгоритмыг шалгах зорилгоор зохиож байгаа хүснэгтийг бид цаашид алгоритмын утгын хүснэгт гэж нэрлэнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 31. 1. Утгын хүснэгтийн арга (Алгоритмыг хүснэгтээр шалгах) Энэ нь алгоритмын өгөгдөл хэмжигдэхүүнүүдэд тодорхой утгуудыг өгөөд алгоритмыг биелүүлэх явцдаа алгоритмын бүх хэмжигдэхүүнүүдийн утгыг хүснэгтэнд бичиж тэмдэглэх арга юм. Хэмжигдэхүүний утгуудыг бичиж тэмдэглэж байгаа хүснэгтийг утгын хүснэгт гэнэ. Алгоритмын хэмжигдэхүүн бүрт хүснэгтийн нэг, нэг багана харгалзана. Хүснэгтийн мөрүүдэд алгоритмыг биелүүлэх явцад гарч байгаа хэмжигдэхүүнүүдийн утгуудыг харгалзах багананд нь бичнэ. Алгоритмыг энэ аргачлалаар шалгахын тулд өгөгдөл хэмжигдэхүүнүүдийн утгуудыг сонгож авна. Сонгон авч байгаа утгуудын хувьд үүний өмнө дараах нөхцлүүд биелэгдэж байх хэрэгтэй. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 32.  Өгөгдлүүд нь бодлогын өгсөн нөхцлийг хангадаг байх  Тэдгээр өгөгдөлд харгалзах үр дүн мэдэгдэж байх  Алгоритмын үйлдлүүдийг хүн гүйцэтгээд бодлогын үр дүнг хялбархан олж чаддаг байх Утгын хүснэгтийн аргыг өмнө үзсэн, өгсөн бодит х, натурал n-ын хувьд 1+푥/1!+x2/2!+…+xn/n! нийлбэрийг олох алгоритм дээр тайлбарлая. Уг алгоритмыг x=1, n=1 болох x=0, n=5 байх тохиолдлуудад шалгая. Өгсөн 1+x/1!+x2/2!+…+xn/n! илэрхийллийн утга эхний тохиолдолд 2, хоёр дахь тохиолдолд 1 байна гэдгийг шууд тооцоолж болно. Одоо эдгээр тохиолдлуудад харгалзах үр дүнг алгоритмыг гүйцэтгэж ольё. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 33. Бидний алгоритмд 6 хувьсагч хэрэглэгдэх тул утгын хүснэгт нь 7 баганатай байна. Хүснэгтийн нэгдүгээр багананд алгоритмыг шалгаж байгаа тохиолдлуудын дугаарыг, бусад багануудад хувьсагчдын нэрийг тус тус бичнэ. Хүснэгтийн мөрийн тоо нь дээрх тохиолдлуудад алгоритмын алхамууд хэдэн удаа биелэгдэхээс хамаарах тул одоогоор хүснэгтийн мөрийн тоог тогтоох боломжгүй. Алгоритмыг гүйцэтгэж эхлээгүй байхад утгын хүснэгт нь дараахь хэлбэртэй байна. Хувьсагч вариант x n a k S I I Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 34. Утгын хүснэгтэд эхлээд өгөгдлүүд болон хувьсагчдын анхны утгуудыг бичнэ. Ингээд өгөгдлүүдэд эхний тохиолдолын утгуудыг өгөөд алгоритмын алхамуудыг гүйцэтгэх үед гарч байгаа утгуудыг хүснэгтийн харгалзах багананд бичиж тэмдэглэе. Тэгвэл эхний тохиолдлын хувьд утгын хүснэгт нь дараах хэлбэртэй болно. хувьсагч вариант X n а к S I I 1 1 1 1 Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 1 1 1 2 1 2 Энэ хүснэгтийн 5 багананд хамгийн сүүлд бичигдсэн 2 гэсэн утга нь эхний тохиолдолд харгалзах үр дүн юм.
  • 35. Энэ үр дүн нь урьдчилан тогтоосон үр дүнтэй ижил учир эхний тохиолдлын хувьд алгоритм зөв ажиллаж байна гэж ярьж болно. Одоо хоёр дахь тохиолдлын хувьд алгоритмыг гүйцэтгэе. Тэгвэл дараах хүснэгт үүснэ. хувьсагч вариант X n а к S I II 0 5 1 0 0 0 0 0 Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 1 1 2 6 24 120 1 1 1 1 1 1 1 2 3 4 5 6
  • 36. Дээрх хүснэгтийн S баганын эцсийн утга 1 нь бодлогын үр дүн болно. Энэ утга өмнө урьдчилан тооцоолсон утгатай тэнцүү байгаа нь хоёр дахь тохиолдлын хувьд алгоритм зөв ажиллаж байгааг илтгэнэ. Хүснэгтийн к нэртэй баганын эцсийн утга 120 нь 5-ын факториалыг тодорхойлох бөгөөд I хувьсагчийн утга 6 болоход алгоритм биелэгдэж дуусна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 37. 2. Логик шалгалтын арга Энэ нь алгоритмын өгөгдөл хэмжигдэхүүнүүдэд тодорхой утга өгөлгүйгээр алгоритмын алхамуудыг гүйцэтгэж үр дүнг тогтоох аргачлал юм. Ингэж шалгахад алгоритмын үр дүн нь тодорхой утга байх албагүй бөгөөд ихэнхидээ илэрхийлэл хэлбэрээр гарна. Бид дээрх алгоритмыг гүйцэтгээд а, к, S нь харгалзан эхлээд x, 1, 1+x дараа нь x2, 2, 1+x/1+x2/2 гэх мэтчилэн хамгийн эцэст xn, n!, 1+x/1!+x2/2!+…+xn/n! болно гэдгийг тогтоож чадна. Алгоритмыг ингэж шалгахдаа хэмжигдэхүүнүүдийн утгыг бичиж тэмдэглэж болох бөгөөд алгоритмын зарим хэмжигдэхүүний утга илэрхийлэл хэлбэрээр гарна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 38. 3. Хэсэгчилэн шалгах арга Томоохон алгоритмыг шалгахдаа алгоритмыг хэд хэдэн хэсэгт хуваагаад хэсэг бүрийг дээрх аргуудын аль нэгээр шалгаж болно. Алгоритмыг хэсгүүдэд хуваахдаа алгоритмыг анх зохиоход тодорхойлсон алгоритмын бүрэлдэхүүн хэсгүүдийн бүтцийг харгалзаж үзэх хэрэгтэй. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 39. Алгоритмын шинжилгээ Алгоритм ажиллаж зөв үр дүнг өгнө гэдгийг тогтоосны дараа алгоритмыг шинжлэнэ. Алгоритмыг шинжлэх гэдэгт дараах үзүүлэлтүүдийг тооцоолохыг ойлгоно.  Алгоритмын хэмжигдэхүүний нийт тоо буюу санах ойн зарцуулалт  Алгоритмын биелэгдэх хугацаа  Алгоритмыг хэрэгжүүлэх үед гарах зардлын тооцоо Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 40. Нэгдүгээр үзүүлэлтийг хялбархан тооцоолж болох бөгөөд хоёрдугаар үзүүлэлтийг бүрэн тооцоолоход бидэнд математикийн нэмэлт мэдлэг хэрэгтэй бөгөөд математикийн энгийн ойлголтууд дээр тулгуурлаад зарим алгоритмын биелэгдэх хугацааг тооцоолон гаргаж болно. Алгоритмын биелэгдэх хугацаа нь ерөнхийдөө алгоритмын үр дүнг олох хүртэл хийгдэж байгаа үйлдлүүдийн тоогоор тодорхойлогдоно. Энд арифметикийн болон хэмжигдэхүүний утгуудыг жиших зэрэг алгоритмын биелэгдэх хугацаанд нөлөөлөх гол үйлдлүүдийг авч үзэх хэрэгтэй. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 41. Алгоритмын хэмжигдэхүүний тоо аль болох цөөн, алгоритмын биелэгдэх хугацаа мөн бага байх ёстой. Одоо өмнөх сэдэвт авч үзсэн алгоритмын хувьд эхний хоёр үзүүлэлтийн шинжилгээг хийе. 1. Санах ойн шинжилгээ Уг алгоритмын хэмжигдэхүүний тоо нь 6 байна. Хэрвээ хэмжиг-дэхүүний тоог 6-аас багасгаж чадвал тийм алгоритм нь энэ алгоритмаас санах ой зарцуулалтын хувьд илүү сайн алгоритм болно. 2. Биелэгдэх хугацааны шинжилгээ Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 42. Дээрх алгоритмын биелэгдэх хугацаа нь ээлжит нэмэгдэхүүний хүртвэр а ба хуваарь к, нийлбэр S-ийг олоход хийгдэх үйлдлийн тооноос хамаарна. Хүртвэрийг олох а=а*х томъёонд 1 үйлдэл, хуваарийг олох к=k*I томъёонд мөн 1 үйлдэл, нийлбэрийг олох S=S+a/k томъёонд 2 үйлддэл тус тус хийгдэнэ. Эдгээр томъёонуудад хийгдэх үйлдлийн нийт тоо 4 болох ба эдгээр томъёонууд нийтдээ n удаа давтагдана. Тэгвэл дээрх алгоритмын биелэгдэх хугацаа нь 4n-тэй пропорционал байна. Энэхүү шинжилгээг хийсний үр дүнд алгоритмыг сайжруулах буюу дурьдсан хоёр үзүүлэлтээрээ дээрх алгоритмаас илүү сайн алгоритмыг зохиох санаа бодол гарч ирнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 43. 1. Дээрх алгоритмд ээлжит нэмэгдэхүүний хүртвэр ба хуваарийг өөр өөр хэмжигдэхүүнд хадгалж олоод дараа нь тэдгээрийг хувааж ээлжит нэмэгдэхүүнийг олсон билээ. Үүний оронд ээлжит нэмэгдэхүүнийг шууд тооцоолон гаргахад xi/i!=xi-1/(i-1)!*x/i гэсэн рекурент томъёог хэрэглэж болно. Ээлжит нэмэгдэхүүнийг хадгалах хаягийг b гэвэл энэ томьёо нь b=b*x/i гэж бичигдэнэ. Энд b-ийн анхны утга нь 1 байна. Энэ томъёог хэрэглэсэн алгоритмын хэмжигдэхүүний тоо нь 5 болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 44. Хэрвээ ээлжит нэмэгдэхүүнийг b=b*x/i нийлбэрийг S=S+b гэсэн томъёонуудаар олвол алгоритмд хийгдэх арифметикийн үйлдлийн нийт тоо нь Зn гэдгийг тогтоож болно. Эдгээр санаануудыг хэрэглэж зохиосон алгоритмын хэмжигдэхүүний тоо 5, биелэгдэх хугацаа нь Зn-тэй пропорциональ байна. Үнэндээ дээрх алгоритмаас сайн алгоритм зохиох буюу алгоритмыг сайжруулах боломж байна гэдэг нь харагдана. Ерөнхий тохиолдолд алгоритмыг шинжлэхэд хэрэглэх математикийн ойлголтууд болон шинжилгээний аргуудыг авч үзье. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 45. Шинжилгээний аргууд Ерөнхий тохиолдолд алгоритмын санах ойн хэмжээ ба биелэгдэх хугацааг тооцоолон гаргахад дараах аргачлалуудыг хэрэглэнэ. Шууд тооцоолох арга Тухайн алгоритмын хувьд дээрх үзүүлэлтүүдийг ил хэлбэрээр шууд тооцоолон гаргах боломжтой үед энэ аргыг хэрэглэнэ. Одоо энэ аргаар хүснэгтийг эрэмбэлэх зарим сонгодог аргуудын шинжилгээг хийе. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 46. Сонголттой эрэмбэлэх аргын шинжилгээ Энэ арга дахь хүснэгтийн хоёр элементийн байрыг солих үйлдлийн нийт тоог T1(n) гэвэл Т1(n) = n-1 байна гэдгийг хялбархан харж болно. Элементүүдийг жиших үйлдлийн нийт тоог Т2(n) гэвэл Т2(n) = (n-1)+(n-2)+...+1 =n(n-1)/2 байна. Эрэмбэлэлтийг хийхэд зарцуулагдах нийт хугацааг Т(п), байр солих нэгэн үйлдэлд зарцуулах хугацааг с1, жиших нэгэн үйлдэлд зарцуулах хугацааг с2 гэвэл Т(п) -ийн хувьд дараах томъёо хүчинтэй байна. Т(n) = с1(n-1)+с2*n(n-1)/2= 0(n2) Эндээс харвал сонголттой эрэмбэлэлтийн биелэгдэх хугацаа нь n2-тай ижил эрэмбийн хэмжигдэхүүн байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 47. Энэ аргад хэрэглэгдэх санах ойн хэмжээ нь n-тэй ижил эрэмбийн хэмжигдэхүүн байх нь ойлгомжтой юм. Оруулгын эрэмбэлэх аргын шинжилгээ Энэ аргын хувьд байр солих үйлдлийн нийт тоо T1(n) нь T1(n)1+2+…+(n-1)=n(n-1)/2, жиших үйлдлийн нийт тоо T2(n) нь T2(n) 1+2+…+(n-1)=n(n-1)/2 байна гэдгийг тогтооход төвөгтэй биш юм. Тэгвэл энэ аргаар n элементтэй хүснэгтийг эрэмбэлэхэд зарцуулагдах хугацааны хувьд дараах үнэлгээ үнэн байна. T(n)=c1T1(n)+c2T2(n) n(n-1)/2*(c1+c2)=0(n2) Өөрөөр хэлбэл энэ аргын биелэгдэх хугацаа нь хамгийн ихдээ n2 -тай ижил эрэмбийн хэмжигдэхүүн байна. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 48. Ойролцоогоор үнэлэх арга Энэ аргыг, дурьдсан үзүүлэлтийг шууд тооцоолон гаргахад төвөгтэй үед хэрэглэх бөгөөд алгоритм хамгийн хурдан (the best case), хамгийн удаан (the worst case) ажиллах тохиолдолуудад алгоритмын биелэгдэх хугацааны доод ба дээд үнэлгээнүүдийг олно. Мөн эндээс эдгээр үнэлгээнүүдийг дундажлан алгоритмын биелэгдэх хугацааны дундаж (the average case) тохиолдолын үнэлгээг гаргана. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 49. Алгоритмын шинжилгээний 3-р үзүүлэлт нь зардал, өртөгийн тооцоо юм. Том хэмжээний програм хангамжийн системийг бүтээх зардал нь тухайн алгоритмыг хэрэгжүүлэх үед гарах зардал, өртөгөөс хамаарна. Энэ үзүүлэлтийг тооцоолохын тулд алгоритмын үйлдлүүдэд тооцооны зардал гэж нэрлэгдэх хэмжигдэхүүнүүдийг оноож уг зардлын хамгийн бага ба их утгыг тооцоолон гарна. Тооцооны зардал нь үйлдлийн биелэгдэх хугацаа, үйлдлийн тоо, өгөлдлийн бүтэц дээр боловсруулалт хийхэд шаардагдах өртөг зэрэг байж болно. Энэ хэлбэрийн шинжилгээнд дараах аргуудыг хэрэглэж болно Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 50. Бүлэглэх арга Алгоритмыг дараах нөхцлүүдийг хангах дэд хэсгүүдэд хувааж хэсэг бүрийн хувьд зардлаа тооцно. Хэсэг бүр алгоритмын зардалд нөлөөлөх нэг л үйлдлийг агуулсан байна. Хэсгийн бусад үйлдлүүд нь дээрх үйлдлээс хурдан биелэгддэг байна. Нэг хэсэг нь өгөгдлийн нэг л төрлийг агуулдаг байна. Хэрвээ хэсэг нь m ширхэг үйлдэлтэй, хамгийн удаан биелэгдэх үйлдлийн зардал нь T(m) бол уг хэсгийн зардал нь дээрээсээ mT(m) хэмжигдэхүүнээр зааглагдах болно. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 51. Урьдчилгаа төлбөрийн арга Өгөгдлийн бүтэцийн үйлдэл бүрт урьдчилсан байдлаар, ойролцоогоор тооцооны зардал оноож өгөгдлийн бүтэцийнхээ зардлыг тооцож олно. Тооцооны зардал нь бодит зардлаасаа их эсвэл бага байж болно. Хэрвээ тухайн үйлдлийн зардал бодит зардлаасаа их байвал уг үйлдлийг хэрэгжүүлэхэд зардлын хэмнэлт гарсан тул хэмнэсэн зардлыг өөр өгөгдлийн бүтэцийн зардалд ашиглаж болох юм. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 52. Потенциаларга Энэньурьдчилгаатөлбөрийнаргынөргөтгөсөнхэлбэрбөгөөдөгөгдли йнбүтэцийнтөлөвбүртоноосонf(Di) потенциалаарүйлдэлбүрийнзардлыгдараахтомъёогооролно. Ci=ci+f(Di)-f(Di-1) Үүнд Di нь 1-р үйлдлийндарааөгөгдлийнбүтэцийноршихтөлөв, D0 ньөгөгдлийнбүтэцийнанхнытөлөв, f ньөгөгдлийнбүтэцийнтөлөвтпотенциалхаргалзуулахфункц, сiньугүйлдлийнбодитзардал, сiньугүйлдэлдоноосонтооцоонызардал. Тухайналгоритмдугүйлдэлn удаабиелэгдсэнболугүйлдлийнтооцоонынийтзардалнь n 풄풊 = 풊=ퟎ i=0 풏 풄풊 + 풇 푫풏 − 풇(푫ퟎ) Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 53. Алгоритмыг шинэчлэх Алгоритмын шинжилгээг хийсний дараа юуны түрүүнд санах ойн хэмжээ ба биелэгдэх хугацааг багасгах өөр арга замыг хайх ёстой. Өөрөөр хэлбэл бодлогыг бодох алгоритмаа сайжруулах хэрэгтэй. Алгоритмын давталтын биед байгаа а=а*х, к=к*I, s=s+а/к илэрхийллүүдийн утгыг бодоход 4 үйлдэл хийнэ. Харин ээлжит нэмэгдэхүүнийг олоход f=f*x/I томъёог хэрэглэвэл нийлбэрийг s=s+f гэж олж болно. Тэгвэл давталтын биеийг f=f*x/I, s=s+f гэж өөрчлөн бичиж болно. Эдгээр хоёр нлэрхийллийн утгыг олоход 3 үйлдэл хийнэ. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
  • 54. Иймээс уг алгоритмыг дараах хэлбэрээр сайжруулан зохиож болно. Ийм өөрчлөлтийг хийснээр алгоритмын биелэгдэх хугацааг тодорхойлох үйлдлийн тоо нь 4n-ээс Зn болж n-ээр багасаж чадна. Ерөнхий тохиолдолд алгоритмыг заавал сайжруулж болно гэж үзэж болохгүй. Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ

Notas del editor

  1. Cover 1