Introduction to algorithms
Algorithms ဆိုတာ problem တစ်ခုကို ဖြေရှင်းဖို့ သက်မှတ်နည်းလမ်း တစ်ခု့ဖြစ်တယ်။ Algorithms တွေကို project အသေးလေးတွေက အစ အကြီးတွေမှာပါ တွေ့ရလိမ့်မယ်။ Sorting, Searching, Routing တွေမှာ algorithms တွေအများဆုံးသုံးကြတယ်။ အလုပ် interview တွေ မှာလဲ algorithm နဲ့ပတ်သက်တဲ့ problems တွေ မေးလေ့မေးထရှိတဲ့ အတွက် career အတွက်အလွန်အရေးပါတဲ့အရာဖြစ်တယ်။
What is algorithms
Algorithm တွေကဘယ်လောက်အရေးပါလဲ။
Algorithm ကောင်းတွေက ဘယ်လောက်အရေးပါလဲဆို algorithm ဘယ်လောက်ကောင်းလဲပေါ်မူတည်ပြီး algorithm တွေရဲ့ running time အရမ်းကွာသွားနိုင်တယ်။ ကိုယ်က ဘယ်လောက် performance မြင့်တဲ့ language ကြီးနဲ့ပဲ ရေးရေး algorithm မကောင်းရင် ကြာမှာပဲ။
Algorithms တွေကိုဘယ်လိုတိုင်းတာမလဲ
ကျွန်တော်တို့ algorithm တွေကိုတိုင်းတာရာမှာ algorithm ရဲ့ time complexity and space complexity ဆိုပြီး တိုင်းတာလို့ရတယ်။
Time complexity ဆိုတာ algorithm ရဲ့ running time ကို တိုင်းတာတာဖြစ်ပီး Space complexity ဆိုတာ algorithm ရဲ့ run နေတဲ့အချိန် memory ပေါ်မှာ data ဘယ် လောက် နေရာယူနေလဲ + Lines of code (LOC) ကိုတိုင်းတာတာဖြစ်တယ်။ များသောအားဖြင့်တော့ algorithms တွေကို time complexity တိုင်းကြတယ်။ ဘာလို့လဲဆိုတော့ space complexity က resource က limit ရှိတဲ့အခြေအနေမျိုးတွေမှာ ဥပမာ small IOT တွေတို့ မော်ဒယ်နိမ့်တဲ့ mobile device တွေတို့လို device တွေရဲ့ resource ကို တိုးလို့မလွယ်တဲ့အချိန်မှာ ပိုအရေးပါတယ်။
Time complexity ကိုဘယ်လိုတိုင်းတာမလဲ
Algorithms တွေက data ပေါ်မူတည်ပီးတော့လဲ time complexity နဲ့ space complexity ကွာခြားနိုင်တယ်
ဥပမာ - စီပြီးသားဖြစ်နေတဲ့ ဖြစ်နေတဲ့ dataset တခုမှာ အမျိုးတူတာကို စုတဲ့ (sorting) algorithm X ကို run တာနဲ့ လုံးဝပြောင်းပြန်ဖြစ်နေတဲ့ dataset မှာ run တာနဲ့ running time ကော space ကောကွာနိုင်တယ်။
ဒီတော့ ကျွန်တော်တို algorithm ကိုတိုင်းတာတဲ့အချိန်မှာ ၃ ခုတိုင်းတာ လိုရတယ်။
- Worst case scenario ( Big O ) O(n)
- Average case scenario ( Big Theta ) Θ(n)
- Best case scenario ဆိုပီး အဆိုးဆုံးဆိုဘယ်လောက် ကြာမလဲ အကောင်းဆုံးဆိုဘယ်လောက် ကြာမလဲတိုင်းတာကြတယ် ( Big Omega ) Ω(n)
ကျွန်တော် တို့ နောက် Blog post တွေမှာ Algorithm ၁ ခု ချင်းစီကို အသေးစိတ် ထပ် ရှင်းပြပါမယ်။