Algorithms & Complexity (အယ်လ်ဂိုရီသမ်များနှင့် ရှုပ်ထွေးမှု)
B2.4: Programming algorithms
မြန်မာလို: programming မှာ သုံးတဲ့ algorithm များ
ခြုံငုံ မိတ်ဆက်
အဖြေမှန် ထုတ်ပေးနိုင်တဲ့ program တွေ အများကြီး ရှိနိုင်ပေမယ့် အဖြေမှန်တဲ့ program နှစ်ခုဟာ အမြဲတမ်း တူညီတာ မဟုတ်ပါဘူး။ input (program ထဲ ထည့်ပေးတဲ့ ဒေတာ) များလာတဲ့အခါ တစ်ခုက နောက်တစ်ခုထက် အများကြီး ပိုမြန်နိုင်ပါတယ်။ ဒီအပိုင်းမှာ computer science လေ့လာသူတိုင်း သိထားသင့်တဲ့ အခြေခံ algorithm တွေနဲ့ အဲဒီ algorithm တွေကို တိုင်းတာ နှိုင်းယှဉ်တဲ့ နည်းလမ်းတွေကို လေ့လာပါမယ်။
| # | ခေါင်းစဉ် | Syllabus | အဓိက အယူအဆများ | Level |
|---|---|---|---|---|
| 1 | Searching Algorithms (ရှာဖွေရေး algorithm များ) | B2.4.2 | Linear search (တစ်ခုချင်း ဆက်တိုက် ရှာနည်း) နဲ့ binary search (တစ်ဝက်စီ ခွဲပြီး ရှာနည်း)၊ O(n) / O(log n) | SL + HL |
| 2 | Sorting Algorithms (ဒေတာကို အစဉ်လိုက် စီတဲ့ algorithm များ) | B2.4.3 | Bubble sort (ဘေးချင်းကပ် တန်ဖိုးတွေကို လဲပြီး စီခြင်း) နဲ့ selection sort (အငယ်ဆုံးကို ရှာပြီး နေရာချ စီခြင်း)၊ O(n²) | SL + HL |
| 3 | Big-O Notation (algorithm ရဲ့ ကြာချိန် တိုးနှုန်းကို ပြတဲ့ သင်္ကေတ) | B2.4.1 | Algorithm efficiency (ထိရောက်မှု) နဲ့ growth rate (input ကြီးလာရင် အလုပ် တိုးလာနှုန်း) ကို နှိုင်းယှဉ်ခြင်း | SL + HL |
| 4 | Recursion (method က သူ့ကိုယ်သူ ပြန်ခေါ်ခြင်း) | B2.4.4, B2.4.5 | Base case (recursion ကို ရပ်စေတဲ့ condition)၊ recursive case (သူ့ကိုယ်သူ ပြန်ခေါ်တဲ့ အပိုင်း)၊ recursive call တွေကို trace (တစ်ဆင့်ချင်း လိုက်ကြည့်) လုပ်ခြင်း | HL |
| 5 | Quicksort (pivot နဲ့ ခွဲပြီး မြန်မြန် စီတဲ့ နည်း) | B2.4.4 | Divide and conquer (ပြဿနာကို အပိုင်းလေးတွေ ခွဲပြီး ဖြေရှင်းနည်း)၊ ပျမ်းမျှ O(n log n) | HL |
Syllabus နဲ့ Level ကော်လံတွေက IB Computer Science သင်တန်းအတွက်ပါ။ SL (Standard Level) နဲ့ HL (Higher Level) ဆိုတာ IB သင်တန်းရဲ့ အဆင့်နှစ်ဆင့်ဖြစ်ပြီး HL အပိုင်းတွေက ပိုနက်နက်ရှိုင်းရှိုင်း လေ့လာရတဲ့ အပိုင်းတွေပါ။
အဓိက မေးခွန်း
Algorithm တွေကို ဘယ်လို တိုင်းတာ နှိုင်းယှဉ်ကြမလဲ။ အဓိက သိထားရမှာက input size (input ရဲ့ ပမာဏ) ကြီးလာတဲ့အခါ တချို့ algorithm တွေက နည်းနည်းချင်းပဲ နှေးလာပြီး တချို့ algorithm တွေကတော့ ရပ်သွားသလောက် အရမ်းနှေးသွားတတ်တာပါ။
| Input နှစ်ဆ ဖြစ်လာရင်… | O(1) | O(log n) | O(n) | O(n²) |
|---|---|---|---|---|
| အချိန် ပြောင်းလဲမှု | မပြောင်းပါ | +1 အဆင့် | နှစ်ဆ | လေးဆ |
Big O notation ကို sorting algorithm တွေ ပြီးမှ အသေးစိတ် လေ့လာပါမယ်။ အခုအတွက်တော့ O(n) ဆိုတာ “element (အစုထဲက အချက်) တိုင်းကို တစ်ခါစီ ဝင်ကြည့်တယ်” လို့ အဓိပ္ပာယ်ရပြီး O(log n) ဆိုတာ “အဆင့်တိုင်းမှာ လုပ်ရမယ့် အလုပ်ကို တစ်ဝက် လျှော့တယ်” လို့ အဓိပ္ပာယ်ရတယ်ဆိုတာ သိထားရင် လုံလောက်ပါပြီ။
လေ့လာရမယ့် အစီအစဉ်
Programming ကို လေ့လာတဲ့ အစီအစဉ်မှာ algorithm တွေက တတိယအဆင့်ပါ။ 1D array (တန်းတစ်တန်းတည်းမှာ စီထားတဲ့ ဒေတာအစု) တွေ ပြီးနောက်၊ method (သီးခြား အလုပ်တစ်ခု လုပ်ပေးတဲ့ code အပိုင်း) တွေ မစခင် လေ့လာရပါတယ်။
- Searching algorithm များ (linear search, binary search)
- Sorting algorithm များ (bubble sort, selection sort)
- Big O notation (ဥပမာတွေကို မြင်ပြီးမှ စနစ်တကျ လေ့လာ)
- Recursion နဲ့ quicksort (HL အတွက်သာ၊ method တွေ ပြီးနောက်)