Programmer အတွက် Maths အရေးပါတော်ပုံ

Programmer တစ်ယောက်အနေနဲ့ Maths နဲ့ ကင်းကွာလို့မရပါဘူး။

Algorithm တစ်ခု

၁ ကနေ စပြီး မိမိကြိုက်နှစ်သက်ရာ ကိန်းဂဏိန်း ထိပေါင်းတဲ့ ရလဒ်ကို အဖြေထုတ်နိုင်တဲ့ Algorithm ရေးရမယ် ဆိုပါစို့။

Logical Thinking နဲ့ Computational Thinking ကောင်းတဲ့သူက ဒီလို ရေးမယ်။

function addUpToFirst(n) {
  var total = 0;
  for (var i = 0; i <= n; i++) {
    total += i;
  }
  return total;
}

ဒီ Algorithm ရဲ့ Big O အဖြေက Linear Time - O(n) ဖြစ်ပါလိမ့်မယ်။ Linear Time ဆိုတာ Data Input Size ကြီးလေလေ ကြာချိန်များလေလေပါပဲ။ 

Mathematical Thinking ကောင်းတဲ့သူ (သို့မဟုတ်) Mathematics Background ကနေ လာတဲ့ သူရဲ့ Algorithm ကို ကြည့်မယ်ဆိုရင်တော့ အောက်ပါအတိုင်း ရေးသွားမယ်။

function addUpToSecond(n) {
  return n * (n + 1) / 2;
}

ဒီ Algorithm ရဲ့ အဖြေက Constant - O(1) ပါ။ Constant ဆိုတာ Data Input ဘယ်လောက်ကြီးကြီးသူ့ ကြာချိန်က ပုံသေပဲ ဖြစ်ပါတယ်။

ဒီ Algorithm နှစ်ခုကို ကြည့်မယ်ဆိုရင် ဒုတိယ Algorithm က Math Formula ကို အသုံးပြုသွားပါတယ်။ Maths Background ကြောင့် Algorithm ရေးသားတဲ့နေရာမှာ ပိုသာတယ်လို့ တွေးမိကောင်း တွေးမိပါလိမ့်မယ်။ ဒါပေမဲ့ Computer Science နယ်ပယ်မှာ Algorithm ကောင်းတစ်ခုရဖို့ အဖြေမရှိသေးတဲ့ မပေါ်လာသေးတဲ့ Math Formula တွေ အများကြီး ရှိနေဆဲပါ။ ကိုယ်ကိုယ်တိုင်လည်း ကိုယ်ပိုင် Math Formula ကို အဖြေရှာပြီး Algorithm ရေးရမဲ့ အခြေအနေတွေ အများကြီး တွေ့ကြုံလာပါလိမ့်မယ်။ 

Progammer တစ်ယောက်အနေနဲ့ Algorithm အတွက် Formula အဖြေထုတ်ဖို့က ခက်ခဲပါတယ်။ 

ဒီလိုနေရာမှာ ဘယ်လို တွေးခေါ်ရမလဲ၊ ဘယ်လို အဖြေရှာကြမလဲဆိုတာ အဓိက အချက်ဖြစ်လာပါတယ်။ အဲဒီအတွက် Mathematical Thinking လိုအပ်လာပါတယ်။

Mathematical Thinking ဆိုတာ ၁၉ ရာစုက ပေါ်ပေါက်လာတဲ့ တွေးခေါ်ပုံ တွေးခေါ်နည်း ဖြစ်ပါတယ်။ တွက်ချက်တဲ့ သင်္ချာမဟုတ်ဘဲ သင်္ချာဆိုင်ရာ တွေးခေါ်နည်း ဖြစ်ပါတယ်။

Mathematical Thinking

Mathematical Thinking က အရာအားလုံးကို Pattern နဲ့ စဥ်စားခိုင်းစေပါတယ်။ အရာအားလုံးမှာ ဘုံ Pattern ဆိုတာရှိပါတယ်။

ဥပမာ 

Shape Pattern ရှာဖွေချင်လျှင် Geometry လေ့လာရပါတယ်။

Motion Pattern ကို ရှာဖွေချင်လျှင် Calculus ကို လေ့လာရပါတယ်။ အဲတာကြောင့်လည်း AI မှာ Motion Pattern များတဲ့အတွက် Calculus က မဖြစ်မနေလေ့လာရပါတယ်။

ဘာကြောင့် ဒီလို ဆုံးဖြစ်တယ်၊ ဒါကြောင့် ဒီလို ဆုံးဖြတ်တယ် စသည်ဖြင့် Reasons Pattern ကိုရှာဖွေချင်လျှင် Logic ကို လေ့လာရပါတယ်။ AI မှာ Decision ချခိုင်းတဲ့ နေရာမှာ logic ကို အသုံးပြုရပါတယ်။ 

Chance Pattern ဖြစ်နိုင်ချေ မဖြစ်နိုင်ချေတွက်ချက်တဲ့အခါမှာ Probablity ကို အသုံးပြုရပါတယ်။ 

အရာဝတ္ထု တစ်ခုနဲ့ တစ်ခုရဲ့ တည်နေရာနဲ့ နည်းစပ်မှု ဝေးကွာမှု ပုံစံ Position and Closeness Pattern ကို အဖြေရှာဖွေတဲ့အခါမှာ Topology ကို အသုံးပြုပါတယ်။ ဥပမာ Computer Network Topology, Road Traffic နဲ့ Electric Currency တွေဟာ Water Topology ကို အခြေခံထားပြီး အဖြေထုတ်ရပါတယ်။​ 

ကိန်းဂဏန်တွေရဲ့ ရေတွက်သွားတဲ့ Counting နဲ့ Number Pattern တွေကို အဖြေထုတ်တဲ့အခါမှာ Number Theory နဲ့ Arithematic Theory ကို အသုံးပြုရပါတယ်။

ခုနက Algorithm ကို ကျွန်တော်တို့ သင်္ချာ background မရှိတဲ့သူအတွက် Number Theory နဲ့ Arithmetic Theory အသုံးမချပဲ Mathematical Thinking က ပြောတဲ့ Pattern Thinking နဲ့ပဲ စဥ်စားကြည့်ရအောင်။

Pattern Thinking ဥပမာ

၁ ကနေ ၅ စုစုပေါင်းရင် အဖြေ ဘယ်လောက်ရမလဲဆိုတာ တွက်ကြည့်ရအောင်။

1 + 2 + 3 + 4 + 5 = 15 ဖြစ်ပါတယ်။

1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5 = 15

အပေါ်က တစ်ခုချင်းရဲ့ အဖြေမှာ Series က  1 , 3 , 6 , 10 , 15 ဖြစ်ပါတယ်။

၁ ကနေ ၅ ထိ ပေါင်းလိုက်တာ လွယ်ကူပေးမဲ့ ၁ ကနေ ၁ သောင်းထိ စုစုပေါင်းရင် ဘယ်လောက်ရမလဲ? ဒီအတွက် formula တော့ ထုတ်ဖို့လိုအပ်နေပါပြီ။

၁ ကနေ ၅ ထိ တစ်ဆင့်ချင်းစီ ပေါင်းသွားတဲ့ Series အဖြေတွေကို dot pattern နဲ့ ပဲ စဥ်စားပြီး formula ထုတ်ကြည့်ရအောင်။

ကျွန်တော်တို့ လိုချင်တဲ့ dot pattern က အပေါ်က ပုံစံအတိုင်းဖြစ်ပါတယ်။

နဲ့ n + 1 မြှောက်လိုက်မယ်ဆိုရင် အဲဒီ Rectangle Dot Pattern ထဲမှာ ရှိ Dot အရေအတွက်စုစုပေါင်း (Total) ကို ရမှာ ဖြစ်ပါတယ်။ Total ကို n * (n + 1) နဲ့ အဖြေထုတ်လို့ရပါတယ်။

ကျွန်တော်တို့ လိုချင်တဲ့ Dot Pattern ကို အပြာရောင် Dash Line နဲ့ ခြားထားပါတယ်။ ခြားထားတဲ့ Pattern သည် Rectangle Dot Pattern ရဲ့ တစ်ဝက်ဖြစ်နေပါတယ်။ အဲဒီအတွက် Total ကို 2 နဲ့ စားလိုက်ပါတယ်။

နောက်ဆုံး Formula ကတော့ 

n * (n + 1) / 2 ပဲ ဖြစ်ပါတယ်။ 

ခုနက ၁ က နေ ၁ သောင်းထိ ပေါင်းရင် ဘယ်လောက်ရမလဲဆိုတာရဲ့ အဖြေကို တွက်ကြည့်မယ်ဆိုရင်တော့ 10,000 * ( 10,000 + 1 ) / 2 = 50,005,000 ပဲ ဖြစ်ပါတယ်။ 

စာဖတ်သူအနေနဲ့ ဒီဆောင်းပါလေး သိပ်နားမလည်ဘူးဆိုရင် အောက်ပါ References မှာ ပိုမို၍ လေ့လာနိုင်ပါတယ်။

အမှားပါသော် ခွင့်လွတ် ထောက်ပြစေ။

ကျေးဇူးတင်လျက်။

References

This article was updated on April 13, 2021