What Is Algorithm Analysis?

ကၽြန္ေတာ္တို့ေတြ အေနနဲ႕ တစ္ေယာက္ ႏွင့္ တစ္ေယာက္ program ေတြကို ႏိႈင္းယွဥ္ၾကပါတယ္။ ဘယ္ program က ပိုေကာင္းတယ္ ပိုျမန္တယ္လို႕ ယွဥ္တတ္ပါတယ္။ ႏိႈင္းယွဥ္သည့္ အခါမွာေတာ့ ကၽြန္ေတာ္တုိ့ေတြဟာ n integer မ်ား၏ ေပါင္းျပီး ရသည့္ ရလဒ္ေပၚမွာ မူတည္ျပီး ဆံုးျဖတ္ပါတယ္။

def sum_of_n(n): the_sum = 0 for i in range(1,n+1): the_sum = the_sum + i return the_sum print(sum_of_n(10))

အခု code ေလးကို ၾကည့္ရေအာင္။ ပံုမွန္ အားျဖင့္ 1 ကေန စျပီးေတာ့ n အေရအတြက္ ထိ ေပါင္းတာပါ။ ဥပမာ 5 ဆိုရင္ 1+2+3+4+5 ေပါ့။

ဒီ code ဘယ္ေလာက္ၾကာလဲ သိရေအာင္ ကၽြန္ေတာ္တုိ့ေတြ အေနနဲ့ function ျပီးသည့္ အခ်ိန္ထဲက program စသည့္ အခ်ိန္ကို ႏႈတ္ၾကည့္မွ သာ သိႏိုင္ပါလိမ့္မယ္။

import time def sum_of_n(n): start = time.time() the_sum = 0 for i in range(1,n+1): the_sum = the_sum + i end = time.time() return the_sum,end-start for i in range(5): print("Sum is %d , %.7f seconds" % sum_of_n(100000))

အထက္ပါ code မွာ အခ်ိန္ကို တြက္ဖို႕ အတြက္

import time

ဆုိျပီး ထည့္ထားပါတယ္။

return the_sum,end-start

ျပီးေတာ့ sum ရလဒ္ ႏွင့္ ၾကာခ်ိန္ ကို return ျပန္ထားေပးပါတယ္။

for i in range(5):
    print("Sum is %d , %.7f seconds" % sum_of_n(100000))

မွာေတာ့ parameter ၂ ခု return ျပန္ေပးသည့္ value ကို တစ္ခါတည္း ထုတ္ျပထားတာပါ။ %d ကေတာ့ integer value ျဖစ္ျပီးေတာ့ %.7f ကေတာ့ ဒႆမ ကို ၇ ေနရာထိ ယူမယ္လို့ ဆိုတာပါ။ % ကေတာ့ ျပန္လာသည့္ tuple ကို print ထဲမွာ အစား ထိုးဖို႕ပါ။ %d, %.7f ျဖစ္သည့္ အတြက္ tuple ထဲမွာ ရိွသည့္ (sum,time) ၂ ခုမွာ sum က ပထမ ျဖစ္လို႕ %d ထဲ ေရာက္သြားျပီးေတာ့ time က ဒုတိယျဖစ္လို႕ %.7f ေနရာမွာ ေဖာ္ျပမွာပါ။

အခု အဲဒီ program နဲ႕ ေနာက္ထပ္ program တစ္ခု ႏိႈ္င္းယွဥ္ၾကည့္ရေအာင္။

1 + 2 + 3 + 4 +.....+ n

သည္ n * (n+1) / 2 ႏွင့္ တူပါတယ္။

ဒါေၾကာင့္ ကၽြန္ေတာ္တုိ႕ ဟာ program loop မပတ္ေတာ့ပဲ ေအာက္ကလို ျပင္ေရးပါမယ္။

import time def sum_of_n(n): start = time.time() the_sum = n * (n+1) / 2 end = time.time() return the_sum,end-start for i in range(5): print("Sum is %d , %.7f seconds" % sum_of_n(100000))

အေျဖက အတူတူပါပဲ။ သို႕ေပမယ့္ processing time က သိသိသာသာ ကြာသြားတာကို ေတြ႕ႏိုင္ပါတယ္။ ဒီ ၾကာခ်ိန္ ကြာျခား ခ်က္က ဘာကို ေျပာျပ ေနသလဲ ဆိုေတာ့ looping ဟာ မ်ားလာေလေလ အလုပ္လုပ္ရသည့္ အခ်ိန္ ပိုၾကာေလေလ ျဖစ္တာကို ေတြ႕ႏိုင္ပါတယ္။ ဒုတိယ program ဟာ looping မသံုးပဲနဲ႕ သခ်ာၤ equation ကို အသံုးျပဳထားသည့္ အတြက္ အမ်ားၾကီး ပိုမို ျမန္ဆန္ တာကို ေတြ႕ႏိုင္ပါတယ္။ Program တစ္ခုဟာ data မ်ားလာေလေလ ေႏွးလာေလေလ ျဖစ္ႏိုင္သလား ဆိုတာကို သိႏိုင္ဖို့ အတြက္ ကၽြန္ေတာ္တုိ့ေတြဟာ Big O Notation ကို အသံုးျပဳၾကပါတယ္။

results matching ""

    No results matching ""