Sunday, March 24, 2013

Algorithm အဆင့္ဆင့္တြက္နည္း


 Algorithm ဆိုသည္မွာ

         "Algorithm ဟူသည္မွာ ပုစၧာတစ္ခုကို အဆင့္ဆင့္ တြက္ရာတြင္ လိုက္နာေဆာင္ရြက္ရမည့္ နည္းဥပေဒမ်ားျဖစ္သည္" ဟု ဆရာႀကီးေဒါက္တာ ခင္ေမာင္ဝင္း ၏ ကြန္ပ်ဴတာသုံး သခၤ်ာတြင္  ဆိုထားပါသည္။

         ထိေရာက္ေသာ Algorithm အသစ္ကို တစ္ခုကို တီတြင္လိုက္နိဳင္သည္ နွင့္ ကြန္ပ်ဴတာသည္ အခ်ိန္တိုအတြင္း အေျဖ ထုတ္ေပးနိဳင္ေအာင္ေဆာင္ရြက္ေပးနိဳင္သည္။

ဘာလဲဟဲ Algorithm?

       Algorithm ဆိုတာၾကားစဉ္က ကိုယ္နွင့္ တကယ္ မရင္းနွီးေသာ စာလုံးဟုထင္မိသည္။ ကြန္ပ်ဴတာ နွင့္ ယွဉ္ၿပီး ခ်က္ထိုးလို  တစ္ခါမွမနိဳင္သည္လည္း Algorithm ျဖင့္ပင္ေဆာင္ရြက္ ထားသည္။  Google က ကြၽန္တို့ ရွာခ်င္တာကို လူေလာက္ျပန္ေျဖေပးနိဳင္တာသည္လည္း Algorithm ။
ေတြ့ၿပီးသူဘဲ

အေျခခံ အက်ဆုံး Algorithm သည္ ကြၽတ္ေတာ္တို့ ၆ တန္းက သင္ရေသာ အ​ေပါင္းကိန္းနွစ္ခု၏ အႀကီးဆုံးဘုံဆခြဲကိန္း(Greatest Common Divisor ) ရွာသည့္ နည္းျဖစ္သည္။ မသိလိုသာ မသိရတယ္ ကြန္ပ်ဴသုံးသခၤ်ာကို ေျခာက္တန္းေလာက္တည္းက စတာပါကလား။  အႀကီးဆုံးဘုံဆခြဲကိန္း g.c.d သည္ ကိန္းနွစ္လုံးကို စား၍ ျပတ္ေသာ အႀကီးဆုံးဂဏန္းကို ဆိုလိုသည္။  တီထြင္တာက လြန္ခဲ့တဲ့ နွစ္ေပါင္ ၂၃၀၀ ေလာက္ ယူကလစ္ ဆိုတဲ့ ဘိုးေတာ္ႀကီးက ေတြ့ခဲ့တာ။ ကြန္ပ်ဴတာ ေခတ္အထိ စည္းဝါးကိုက္ အသုံးတဲ့ေနတုန္း။
ယူကလစ္ ၏ ရွာနည္း

ကိန္းနွစ္လုံးကို a နွင့္ b ဟုထားပါ။

အဆင့္ (၁)။ a နွင့္ b ဟုေသာ ကိန္းနွစ္လုံးကို စစ္ေဆးၾကည့္ပါ။ အဆင့္ (၂) ကိုသြားပါ။

အဆင့္ (၂)။ ထိုကိန္းနွစ္လုံးကို နႈိင္းယွဉ္ၾကည့္ပါ။ ျဖစ္နိုင္ေျခ သုံးမ်ိုးရွိသည္။

    a နွင့္ b တူခ်င္တူမည္။

    a သည္ b ေအာက္ ငယ္ခ်င္ငယ္မည္။

    a သည္ b ထက္ႀကီးခ်င္ႀကီးမည္။  အဆင့္(၃)ကိုသြားပါ။

အဆင့္ (၃)။ a နွင့္ b တူခဲ့လ်င္ ၎င္းသည္ g.c.d ျဖစ္သည္။

    အကယ္၍ a နွင့္ b မတူခဲ့လ်င္ အဆင့္(၄) ကိုသြားပါ။

အဆင့္ (၄)။ a သည္ b ေအာက္ ငယ္လ်င္ သူတို့ကို ေနရာေျပာင္းပါ။ (ဆိုလိုသည္မွာ ေစာေစာက a ကိုေရွ့တြင္ထားခဲ့ၿပီး b ကို ေနာက္တြင္ထားခဲ့၏။ အဆင့္(၄) ၏ ဆိုလိုရင္းမွာ ႀကီးေသာကိန္းကို a ဟုျပန္ေခၚ၍ ငယ္ေသာကိန္းကို b ဟု ေခၚရမည္ ဟူ၍ျဖစ္သည္။ ) အဆင့္(၅) သို့သြားပါ။

အဆင့္(၅)။ a ထဲမွ b ကိုနႈတ္ပါ။နႈတ္ခဲ့ေသာကိန္း (b) နွင့္ နႈတ္၍ရေသာ အေျဖ (a-b) တို့ကိုသူပါ။ အဆင့္(၂) သို့ျပန္သြားပါ။

         ဤနည္းျဖင့္ အဆင့္ဆင့္တြက္သြားလ်င္ အဆင့္(၂) သို့ျပန္ေရာက္မည္။ ၿပီးလ်င္ အဆင့္(၃)၊ (၄) သို့ေရာက္မည္။ ေနာက္ဆုံးကိန္း နွစ္လုံးတူသြားလ်င္ အဆင့္ (၃) တြင္ အဆုံးသတ္သည္။
နမူနာ

21 နွင့္ 14 တို့၏ g.c.d ကိုရွာပါ။

အဆင့္(၁) 21, 14

အဆင့္(၂) 21 သည္ 14 ထက္ႀကီးသည္။

အဆင့္(၃) အေျဖမရေသးပါ။

အဆင့္(၄) 21 နွင့္ 14

အဆင့္(၅) 21-14=7

              14 နွင့္ 7 ကိုယူပါ။

အဆင့္(၂) 14 သည္ 7 ထက္ႀကီး၏။

အဆင့္(၃) အေျဖမရေသးပါ။

အဆင့္(၄) 14 နွင့္ 7

အဆင့္(၅) 14 - 7 = 7

အဆင့္(၂) 7 နွင့္ 7 တူ၏။

အဆင့္(၃) g.c.d = 7

အသုံးခ်

          အဲဒီ အႀကီးဆုံးဘုံဆခြဲကိန္းသိေတာ့ဘာလုပ္လိုရလဲ။ ေမးရေပမည္။



Steve Jobs (စတိဗ္ေဂ်ာ့စ္) ကေျပာဖူးသည္ တစ္စုံတရာေသာ ပစၥည္းတစ္ခုကို လူႀကီးေတြက ဒါဘာလဲလို့ ေမးမည္။ လူငယ္ေတြက်ေတာ့ ကြၽန္ေတာ္တို့ ဒါနဲ့ဘာလုပ္လို့ရလဲ ဟု​ဆိုသည္။ ကိုင္း အခုလည္း အႀကီးဆုံးဘုံဆခြဲကိန္းg.c.d သိေတာ့ ဘာလုပ္လို့ရမလဲေမးမည္။

       ဥယ်ာဉ္ၿခံ တစ္ခုသည္ 216 မီတာက်ယ္၍ 240 မီတာအရွည္ရွိသည္။ အဲဒီဥယွဉ္ၿခံကို ၿခံစည္ရိုးခတ္မည္။ ကိုယ္ၿခံကို ကိုယ္ပိုင္ေလယဉ္နွင့္ ျဖစ္ေစ Google earth ကေနျဖစ္ေစ ၾကည့္ရင္ ၿခံစည္းရိုးတိုင္ေတြ ပတ္ပတ္လည္ အကြာအေဝးညီရွိေနေစေအာင္လုပ္သည့္ေနရာတြင္သုံးသည္။

ထိုအတူ ကိုယ္ပိုင္လယ္ကြက္မ်ားကို တူညီေသာ အကြက္မ်ား စိတ္ခ်င္သည့္ အခါသုံးနိဳင္သည္။ ကြၽန္ေတာ္တို့ နိဳင္ငံရွိ လယ္ကြက္မ်ားကို အေပၚစီးမွ ၾကည့္လ်င္ ေအာ္ငါတို့ေတြ မ်ဉ္းေဖ်ာင့္ေအာင္မဆြဲနိဳင္ေသးပါလား လို့ေတာင္ သံသယျဖစ္မိသည္။ ဟုတ္မဟုတ္ကို Google earth မွရႈစားၾကည့္ၾကပါ။

g.c.d ကို python ကြန္ပ်ဴတာ ပရိုဂရမ္းမင္းသုံးၿပီး ရွာနည္းကို ဆက္လက္ေရးသားပါမည္။