← All writing

software-development

AI တွေ ရှိနေပြီပဲ။ Algorithms တွေ လေ့လာဖို့ လိုသေးလား?

· Aung Ko Man

Laptop displaying software code
Illustrative photo by AltumCode on Unsplash.

“Shortest Path ရှာချင်ရင် AI ကို မေးလိုက်လို့ရတယ်။ Traveling Salesman Problem ဖြေရှင်းချင်ရင်လည်း ကုတ်ရေးခိုင်းလို့ရတယ်။

ဒါဆို Algorithms တွေကို နာရီပေါင်းများစွာ အချိန်ပေးပြီး လေ့လာဖို့ လိုသေးလား?”

မေးသင့်တဲ့မေးခွန်းပါ။

အချိန်ဆိုတာ အကန့်အသတ်ရှိပါတယ်။ ဘာကို ကိုယ်တိုင်လေ့လာပြီး ဘာကို Tool ဆီ အပ်မလဲဆိုတာ ဆုံးဖြတ်ရတာလည်း အရည်အချင်းတစ်ခုပါပဲ။

ဒီမေးခွန်းကို နှစ်ဖက်ကနေ ဆွေးနွေးကြည့်ပါမယ်။

ပထမဘက် — အရင်လို အကုန်သိဖို့ မလိုတော့ဘူး

“သုံးဖို့လိုတဲ့ Algorithm တစ်ခုတိုင်းကို ကိုယ်တိုင်အစအဆုံး ရေးတတ်မှ သုံးမယ်ဆိုရင် အချိန်အများကြီး ကုန်မယ်။

ကားမောင်းဖို့ အင်ဂျင်တစ်လုံး ကိုယ်တိုင်ဆောက်တတ်စရာ မလိုသလို ပြဿနာတစ်ခု ဖြေရှင်းဖို့ Algorithm တိုင်းကို အလွတ်ပြန်ရေးတတ်စရာ မလိုဘူး။”

ဒီဘက်ရဲ့ အခိုင်မာဆုံးအကြောင်းပြချက်က Opportunity Cost ပါ။

Algorithm တစ်ခုကို အစအဆုံး လေ့လာနေတဲ့အချိန်မှာ လက်တွေ့ပြဿနာကို နားလည်ဖို့၊ ဒေတာမှန်ကန်မှု စစ်ဖို့နဲ့ အသုံးပြုသူလိုအပ်ချက်ကို လေ့လာဖို့ အချိန်လျော့သွားနိုင်ပါတယ်။

ဥပမာ ပို့ဆောင်ရေးလုပ်ငန်းတစ်ခုမှာ အခက်အခဲက Route ရှာတဲ့ Algorithm ထက် လိပ်စာမပြည့်စုံတာ၊ ဆိုင်ဖွင့်ချိန် မသိတာနဲ့ ပစ္စည်းမပြင်ရသေးတာ ဖြစ်နေနိုင်ပါတယ်။

ဒီလိုအချိန်မှာ Advanced Algorithms တွေပဲ လေ့လာနေခြင်းက လုပ်ငန်းရဲ့ အဓိကပြဿနာကို မဖြေရှင်းပေးနိုင်ပါဘူး။

ပြီးတော့ AI မပေါ်ခင်ကတည်းက လူတွေဟာ Library တွေ၊ Solver တွေနဲ့ အခြားသူတွေ ရေးထားတဲ့ Implementation တွေကို သုံးခဲ့ကြတာပါပဲ။

ကိုယ်တိုင်အစအဆုံး ပြန်မရေးတာကို နားမလည်ဘဲသုံးတာနဲ့ တစ်မျိုးတည်း မယူဆသင့်ပါဘူး။

ဒီဘက်ရဲ့ ရပ်တည်ချက်က—

“Algorithm တိုင်းကို အနက်ရှိုင်းဆုံး လေ့လာဖို့ မလိုဘူး။ လိုအပ်တဲ့အချိန်မှာ လိုအပ်တဲ့အတိုင်း သင်ယူပြီး Tool ကို ထိထိရောက်ရောက် သုံးနိုင်ရင် ရတယ်။”

ဒုတိယဘက် — အဖြေထုတ်ပေးနိုင်တာနဲ့ အဖြေမှန်တာ မတူဘူး

“AI က Algorithm ရေးပေးနိုင်တယ်ဆိုတာကို လက်ခံတယ်။ ဒါပေမယ့် ဘာပြဿနာကို ဖြေရှင်းနေတာလဲဆိုတာ ကိုယ်တိုင်မသိရင် ဘယ်လိုစစ်မလဲ?”

ဒီဘက်ရဲ့ အခိုင်မာဆုံးအကြောင်းပြချက်က အဖြေကို အကဲဖြတ်နိုင်စွမ်း ပါ။

ဥပမာ—

“နေရာခြောက်ခုလုံးကို ဝင်ပြီး မူလနေရာကို ပြန်လာဖို့ အတိုဆုံးလမ်း ရှာပေးပါ”

လို့ ခိုင်းထားမယ်။

AI က နောက်တစ်နေရာကို အနီးဆုံးရွေးသွားတဲ့ Nearest Neighbor နည်းနဲ့ Route ထုတ်ပေးတယ်။

Route က နေရာအားလုံးကို ဝင်တယ်။ မူလနေရာလည်း ပြန်ရောက်တယ်။ ကုတ်လည်း အလုပ်လုပ်တယ်။

ဒါပေမယ့် ဒီ Route က သုံးလို့ရတဲ့အဖြေလား၊ အကောင်းဆုံးဖြစ်ကြောင်း အာမခံနိုင်တဲ့အဖြေလား?

ဒီနှစ်ခုက မတူပါဘူး။

Heuristic နဲ့ Exact Method ရဲ့ ကွာခြားချက်ကို မသိရင် “အဖြေတစ်ခုရပြီ” ဆိုတာကို “အကောင်းဆုံးအဖြေရပြီ” လို့ ယူဆမိနိုင်ပါတယ်။

နောက်ဥပမာတစ်ခုက BFS ပါ။

BFS က Unweighted Graph မှာ Edge အရေအတွက် အနည်းဆုံးလမ်းကို ရှာပေးနိုင်ပါတယ်။ ဒါပေမယ့် လမ်းတစ်ခုချင်းစီရဲ့ ကြာချိန်မတူရင် Edge နည်းတဲ့လမ်းက အချိန်အနည်းဆုံး ဖြစ်ချင်မှဖြစ်ပါမယ်။

Algorithm နာမည်ကို သိတာထက် ဘယ်သတ်မှတ်ချက်အောက်မှာ ဘာအဖြေကို ပေးနိုင်သလဲ ဆိုတာ နားလည်ဖို့ လိုပါတယ်။

ပထမဘက်ရဲ့ ပြန်မေးခွန်း — AI ကိုပဲ ပြန်စစ်ခိုင်းလို့ မရဘူးလား?

“AI ကို ကုတ်ရေးခိုင်းပြီး Test ပါ ရေးခိုင်းမယ်။ နောက် AI တစ်ခုကို Review ခိုင်းမယ်။ နမူနာဒေတာနဲ့လည်း စမ်းမယ်။

ဒါဆို ကိုယ်တိုင် Algorithm သိဖို့ ဘာလို့ မဖြစ်မနေလိုသေးတာလဲ?”

ဒီအကြောင်းပြချက်မှာလည်း အားသာချက်ရှိပါတယ်။

Test၊ Review နဲ့ Result Comparison တွေက အမှားရှာဖို့ ကူညီနိုင်ပါတယ်။ အထူးသဖြင့် အရွယ်အစားသေးတဲ့ ပြဿနာမှာ ဖြစ်နိုင်တဲ့အဖြေအားလုံးကို စမ်းပြီး ရလဒ်နှိုင်းယှဉ်နိုင်ပါတယ်။

ဒါကြောင့် လူတစ်ယောက်က Algorithm တစ်ခုကို အလွတ်ပြန်မရေးတတ်ပေမယ့် စနစ်တကျ စစ်ဆေးပြီး သုံးနိုင်တာ ဖြစ်နိုင်ပါတယ်။

ဒုတိယဘက်ရဲ့ တုံ့ပြန်ချက် — Test က ဘာကိုစစ်ရမလဲဆိုတာ သိဖို့ လိုသေးတယ်

“Route ထဲမှာ နေရာအားလုံး ပါသလား” ဆိုတာ စစ်တဲ့ Test နဲ့ “Route က အကောင်းဆုံးလား” ဆိုတာ စစ်တဲ့ Test က မတူပါဘူး။

လိုအပ်ချက်ကို မှားသတ်မှတ်ထားရင် ကုတ်နဲ့ Test နှစ်ခုလုံးက အဲဒီလိုအပ်ချက်အမှားအတိုင်း ကိုက်ညီနေနိုင်ပါတယ်။

နမူနာသေးသေးမှာ အောင်မြင်တာနဲ့ ဒေတာကြီးလာရင် အချိန်မီအောင် ပြီးမယ်လို့လည်း အာမခံမရပါဘူး။

ဒီနေရာမှာ Input Size၊ Time Complexity နဲ့ Memory အသုံးပြုမှုတို့ကို အနည်းဆုံး ခန့်မှန်းနားလည်ဖို့ လိုလာပါတယ်။

စစ်ဆေးမှုကို AI ဆီ အကူအညီတောင်းနိုင်ပါတယ်။ ဘာကို စစ်ရမလဲဆိုတဲ့ မေးခွန်းကိုတော့ ရှင်းထားဖို့ လိုပါတယ်။

ဒါဆို ဘယ်လောက်အထိ လေ့လာသင့်သလဲ?

နှစ်ဖက်ဆွေးနွေးချက်ကနေ ထွက်လာတဲ့ သဘောထားက “အကုန်လေ့လာ” ဒါမှမဟုတ် “ဘာမှမလေ့လာ” ဆိုတာထက် ပိုလက်တွေ့ကျပါတယ်။

ပထမအဆင့် — ပြဿနာအမျိုးအစား ခွဲတတ်ဖို့။

Shortest Path လား၊ Matching လား၊ Scheduling လား၊ Traveling Salesman Problem လားဆိုတာ ခွဲသိဖို့ လိုပါတယ်။

ဒုတိယအဆင့် — ယူဆချက်နဲ့ အကန့်အသတ်ကို သိဖို့။

Weight တွေ အနုတ်ဖြစ်နိုင်သလား။ အဖြေက Exact လား၊ Approximate လား။ ဒေတာပမာဏ ဘယ်လောက်အတွက် သင့်တော်သလဲဆိုတာ မေးတတ်ဖို့ လိုပါတယ်။

တတိယအဆင့် — သေးငယ်တဲ့ဥပမာကို ကိုယ်တိုင်လိုက်တွက်တတ်ဖို့။

AI ထုတ်တဲ့အဖြေကို အကြောင်းပြချက်နဲ့ လိုက်စစ်နိုင်ဖို့ပါ။ ကုတ်ကို အလွတ်ရေးတတ်တာထက် ပထမဆုံး အသုံးဝင်နိုင်တဲ့ စွမ်းရည်ပါ။

စတုတ္ထအဆင့် — ကိုယ်လုပ်တဲ့အလုပ်အတွက် အနက်ရှိုင်းဆုံးလေ့လာဖို့။

နေ့စဉ် Routing၊ Optimization နဲ့ Algorithm Research လုပ်နေရသူတစ်ယောက်အတွက် လိုအပ်တဲ့အနက်နဲ့ တစ်ခါတလေ အသုံးပြုသူအတွက် လိုအပ်တဲ့အနက် မတူသင့်ပါဘူး။

ဒီ debate ရဲ့ ရပ်တည်ချက်

AI ရှိနေလို့ Algorithm တိုင်းကို ကိုယ်တိုင်အစအဆုံး အကောင်အထည်ဖော်ဖို့ လိုအပ်ချက် လျော့သွားနိုင်ပါတယ်။

ဒါပေမယ့် ကိုယ်မေးနေတဲ့ပြဿနာ၊ လက်ခံနိုင်တဲ့အဖြေနဲ့ အဖြေရဲ့အကန့်အသတ်ကို နားလည်ဖို့ လိုအပ်ချက်က ဆက်ရှိနေပါတယ်။

လေ့လာမှုရဲ့ ရည်မှန်းချက်ကိုလည်း ပြောင်းစဉ်းစားနိုင်ပါတယ်။

“ဒီ Algorithm ကို စာအုပ်မကြည့်ဘဲ ရေးတတ်လား” ဆိုတဲ့မေးခွန်းနဲ့အတူ—

“ဒီအလုပ်အတွက် ဒီ Algorithm ကို ဘာကြောင့်ရွေးတာလဲ။ ရလာတဲ့အဖြေကို ဘယ်လိုစစ်မှာလဲ?”

ဆိုတဲ့မေးခွန်းကိုပါ ဖြေနိုင်ဖို့ လေ့လာပါ။

ဖတ်သူအနေနဲ့ရော ဘယ်လိုယူဆပါသလဲ?

AI နဲ့အလုပ်လုပ်တဲ့အခါ Algorithms ကို ကိုယ်တိုင်အကောင်အထည်ဖော်တတ်ဖို့ ပိုအရေးကြီးသလား၊ မှန်ကန်တဲ့နည်းလမ်းကို ရွေးပြီး ရလဒ်ကို စစ်နိုင်ဖို့ ပိုအရေးကြီးသလား?


ဆက်ဖတ်ရန် — Graph Theory ကို ဘယ်နေရာတွေမှာ အသုံးချနိုင်သလဲ?

ကိုးကားချက် — AI-generated code ကို review/test လုပ်ဖို့လိုကြောင်း GitHub ရဲ့ Responsible Use လမ်းညွှန်ချက် မှာလည်း ဖော်ပြထားပါတယ်။