Pages

Wednesday, September 30, 2015

සහානුයාතයෙන් අනන්තය වෙත නොයමු!

සහානුයාත ක්‍රමය මුලින්ම මට හමුවෙන්නේ උසස් පෙළ ශුද්ධ ගණිතයේදී.
කොහොමත් මට ව්‍යවහාරික ගණිතය ගැන තිබුණු ඇල්මැරුණු ස්වභාවය ට වඩා උනන්දුවක් ශුද්ධ ගණිතය ගැන තිබුණා.

මම සහානුයාත ක්‍රමය ට ගැටළුවක් විසඳනු බලා සිටි ගුරුතුමී 'ඔයාට හරියන්නේ ප්‍රෝග්‍රැමිං' යැයි පැවසුවත්, ඒ වෙන විට නම් පරිගණක ක්‍රමලේකනයේ සහ සහානුයාතයේ  සම්බන්ධය දැන සිටියේ නැහැ.

සහානුයාත ය නැත්නම් recursion පැහැදිලි කර ගන්න සරල උදාහරණ කිහිපයක් කිව්වොත්:

1) කතන්දරේ - එකමත් එක රටක පොඩි බබෙක්ට නින්ද යන්නේ නැති නිසා එයා නිදි කරවන්න අම්මා ගෙඹි පැටියගේ කතාව කිව්වා.
      ....එකමත් එක රටක ගෙඹි පැටියෙක් හිටියා. ගෙඹි පැටියට නින්ද  යන්නේ නැති නිසා එයා නිදි කරවන්න ගෙඹි අම්මා වලස් පැටියගේ කතාව කිව්වා.
            ... එකමත් එක රටක වලස් පැටියෙක් හිටියා. වලස් පැටියට නින්ද  යන්නේ නැති නිසා එයා නිදි කරවන්න වලස් අම්මා මුගටි පැටියගේ කතාව කිව්වා.
                  ...මුගටි පැටියට නින්ද ගියා.
       ....ඉතින් වලස් පැටියට නින්ද ගියා.
     .....ඉතින් ගෙඹි පැටියට නින්ද ගියා.
ඉතින් බබාට නින්ද ගියා.

2 ) රුසියන් බෝනික්කෝ සෙට් -  මේ පහතින් තියෙන පින්තුරේ තියෙන්නේ රුසියන් බෝනික්කෝ සෙට් එකේ එකක් ඇතුලේ එකක් බෝනික්කෝ තියෙනවා.
පලවෙනි බෝනික්කා ඇතුලේ ඊට පොඩි එකෙක්.
       ඒ බෝනික්කා ඇතුලේ ඊට පොඩි එකෙක්.
            ඒ බෝනික්කා ඇතුලේ ඊට පොඩි එකෙක්.
                ඒ බෝනික්කා ඇතුලේ ඊට පොඩි එකෙක්.....
ඔහොම ගිහින් බෝනික්කෝ 'ස්තර' කීපයක් ගිහින් අතට අහු වෙන නොවෙන ගානේ චූටි ම චූටි බෝනික්කෙක්ගෙන් ඉවර වෙනවා.



රුසියන් බෝනික්කෝ

ඔය උඩ උදාහරණ දෙකේ තියෙන pattern එක ගැන හිතුවොත් තේරේවි සහානුයාත ක්‍රමය කියන්නේ යළි යළිත් ස්වයං අනුරූපීව එකම ක්‍රියාවලියක් (සුත්‍රයක්) සිදු කිරීම කියලා.

මේ 'ස්වයං අනුරූපී' සිංහල වචනය කොච්චර නිවැරදිද කියල දන්නේ නැහැ. අදාළ ඉංග්‍රීසි වචනය self-similarity.


Self similarity

මේක පරිගණක  ක්‍රමලේඛනයේ ගොඩක් ගැටළු විසඳන්න පාවිච්චි කරන්න පුළුවන්.

සහානුයාතයකට තියෙන්න ඕනැ මේ නීති දෙක :
1) පාදම් අවස්තාව : base case එක කියල ඉංග්‍රීසියෙන් හඳුන්වනවා. ඒ කියන්නේ මේ ක්‍රියාවලිය නවතින කොන්දේසියක් නැත්නම් සීමා වක්. මේ කොන්දේසිය නැති උනොත් අනන්ත වාරයක් ක්‍රියාවලිය සිදු වෙමින් පවතීවි. උදාහරනෙකට අර උඩ තියෙන රුසියානු බෝනික්කොන්ගේ පාදම් අවස්තාව තමයි අතට අහු වෙන නොවෙන ගානේ චූටි ම චූටි බෝනික්කා.
2) පාදම් අවස්තාව දක්වා පරිවර්තනය/ඌනනය කෙරෙන නීති: රුසියානු බෝනික්කො උදාහරෙනම බැලුවොත්, එහිදී ලොකුම බෝනික්කා පුංචිම බෝනික්කා වෙන කම් ප්‍රමාණය අඩු වීම තමයි එහි ඌනන නීතිය.

මේ තියෙන්නේ සරලම උදාහරණයක්:
යම් පූර්ණ සංඛ්යාවකක ක්‍රමාරෝපිත අගය හොයන එකයි මෙයින් කෙරෙන්නේ.
(n නම් පූර්ණ සංඛ්‍යවේ ක්‍රමාරෝපිත අගය අපි ලියන්නේ මෙහෙම : n! = n x (n-1) x (n-2) x (n-3) ... x 1
එතකොට අපි හිතමු n = 7 කියලා. එතකොට
7! = 7 x 6 x 5 x 4 x 3 x 2 x 1

ඒක ගණිත සුත්‍රයක් විදියට ලිව්වොත්:


දැන් මේක පරිගණක ක්‍රමලේඛනයක් විදියට ලිව්වොත්...

private int factorial(int n) {
// base case/පාදම් අවස්තාව
if (n == 0) {
return 1;
}
// recursive case/ඌනන අවස්තාව
return (n * factorial(n - 1));
}


සහානුයාත ක්‍රමය වෙනුවට ලූප් එකක් යොදන්නත් පුළුවන්. සහානුයාතය යොදා ගන්නේ විසඳන්න වගේම තේරුම් ගැනීමේ පහසුව තකා. කොහොම උනත් සහානුයාතය නොගැලපෙන තැනුත් තියෙනවා. අදාළ ගැටලුව මත එය රඳා පවතින්නේ.


පින්තුර ගත්තේ විකිපීඩියා වෙන් : https://en.wikipedia.org

Tuesday, September 22, 2015

උදාන!

"උදාන" කියන්නේ ඉතාම පරමෝත්කෘෂ්ට ප්‍රීතියක්...
පිටාර ගලල ගිහින් පිටස්තරයන්වත් ප්‍රබෝධමත් කරන හැඟීමක්!

මහන්සි වෙලා වෙලා උසම උස කන්දක් නැග්ගාම, අමාරුම අමාරු විභාගයක් සමත් උනාම, කට්ට කාල කාල ගොඩ ගියාම, කෑ ගහලා උඩ පනින්න තරම් සතුටක් දැනෙන්නේ, අන්න ඒ උදාන ය!

ඒ උනත් වචන හරි වටිනවා කවියන්ට. මිල වැඩිම කවි සරලයි සුගමයි.

වචනයක සාන්ද්‍රණය හරි ඉහළයි එතකොට.

හරියට මකියාටෝ වීදුරුවක් එක පාරට බිව්වා වගේ...
...හැම පදයක්ම ඇඟට වදිනවා මදි නොකියන්න.

අනේකජාති සංසාරං
සන්ධාවිස්සං අනිබ්බිසං
ගහකාරකං ගවේසන්තෝ
දුක්ඛා ජාති පුනප්පුනං

ගහකාරක දිට්ඨෝ’සි
පුන ගේහං න කාහසි
සබ්බා තේ ඵාසුකා භග්ගා
ගහකූටං විසංඛිතං
විසංඛාරගතං චිත්තං
තණ්හානං ඛයමජ්ඣගා1

Through the round of many births I roamed
without reward,
    without rest,
seeking the house-builder.
Painful is birth
    again & again.

House-builder, you're seen!
You will not build a house again.
All your rafters broken,
the ridge pole destroyed,
gone to the Unformed, the mind
has come to the end of craving2


1 - ධම්මපදය, 153 & 154
2 - Translated by Thanissaro Bhikkhu