යම්කිසි කාර්යයක් කරන්න අනුපිලිවෙලට පිළිපදින්න ඕනි පියවරවල් ටිකකින් සමන්විත උපදෙස් වලට අපි ඇල්ගොරිතම් එකක් කියලා කියනවා. මොකක්හරි ප්රශ්නයකට හදපු Algorithm එක හැමතිස්සෙම ඒ ප්රශ්නෙට හරිම උත්තරය ලබා දෙනවා.
මේ ටික කියද්දී මතක් කරන්නම ඕනි heuristics ගැන. heuristic එකක් කියන්නේ අවශ්ය වැඩේ කරගන්න ඒ අවස්තාවට හරියන ක්රමෝපායකට. heuristic එකක් සමහරවිට algorithm එකකට වඩා වේගවත් සහ කාර්යක්ෂම වෙන්න පුළුවන් ඒ අදාළ කාර්යයට. නමුත් මේක හැම වෙලේම හැම case එකටම හරියනව කියලා සහතික වෙන්න බැහැ. ඒ අතින් algorithm එකක් හැම case එකටම වැඩ කරනවා.
එක එක වර්ගයේ ගැටළු විසඳන්න එක එක වර්ගයේ algorithms නිර්මාණය වෙලා තියෙනවා. මම මේ article එකේදී මූලිකවම බලන්නේ දෙයක් හොයාගන්න (searching algorithms), යමක් අනුපිලිවෙලට සකසන්න (sorting algorithms) සහ optimum path එකක් හොයාගන්න ගන්න algorithms ගැන. ඊටපස්සේ පස්සේ අමතරව තව විශේෂ algorithms ටිකක් ගැනත් කතා කරමු.
Linear search:
මේක හරියට ඔයා අතුරුදහන් වුණු යතුරක් හොයනවා වගේ. කාමරේ එක පැත්තක ඉඳන් අනිත් පැත්ත වෙනකම් හැම තැනම බලනවා. සෑම දෙයක්ම එකින් එක පරීක්ෂා කරනවා යතුර හම්බ වෙනකම්.
Binary search:
මේක අකුරු පිළිවෙලට සකස් කරපු ශබ්ද කෝෂයකින් වචනයක් හොයනවා වගේ. මැද පිටුව අරින් පටන් ගන්නවා. ඊට පස්සේ ඔයා හොයන වචනය ඉස්සරහින්ද පස්සෙන්ද කියලා බලලා, ඒ පැත්තට යනවා. ඊටපස්සේ ඒ කොටස ආපහු දෙකට බෙදල බලනවා අඩු පැත්තේද වැඩි පැත්තේද හොයන දේ තියෙන්නේ කියලා. මේ විදිහට අඩක් අඩක් ගානෙ කපාගෙන යනවා හොයන දේ හම්බවෙනකම්.
Jump search:
මේක හරියට පොතක පටුන බලලා අවශ්ය පරිච්ඡේදය හොයාගන්නවා වගේ. මුලින්ම යම් දුරක් පනිනවා, ඊට පස්සේ ඒ අවට බලනවා. මේ විදිහට වේගයෙන් හොයාගන්න පුළුවන්.
Bubble sort:
මේකේඩී ළඟ ළඟ(අනුයාත) තියන දේවල් දෙක දෙක බලලා, වැරදි පිළිවෙලට තියනවා නම් ඉන්න තැන් දෙක මාරු කරනවා. (swap කරනවා)
Quick sort:
මේක හරියට සෙට් එකක ඉන්න උන්ව උසේ පිළිවෙලට හදනවා වගේ එකක්. එක අයෙක් ව (pivot) තෝරගෙන, ඌට වඩා අඩු අය එක පැත්තකට, වැඩි අය අනිත් පැත්තට යවනවා. ආපහු ඒ එක side එකක් අරන් ඒකෙ ඉන්න තව එකෙක්ව තෝරාගෙන ඒ විදිහටම කරනවා. මේ විදිහට කුඩා කණ්ඩායම් වලට බෙදලා, ඒවා ඇතුලෙ පිළිවෙල හදනවා. ඊට පස්සේ ඔක්කොම එකතු කරනවා.
Merge sort:
මේක ලොකු ගැටළුව පොඩි පොඩි කෑලි වලට කඩලා විසඳනවා වගේ. මුලින්ම ලැයිස්තුව පොඩි පොඩි කොටස් වලට කඩනවා. ඊට පස්සේ ඒ කොටස් දෙක දෙක බැගින් එකතු කරමින් පිළිවෙලට සකස් කරනවා. අන්තිමට ඔක්කොම එකතු වෙලා පිළිවෙලට සැකසුණු ලැයිස්තුවක් ලැබෙනවා.
Selection Sort:
මේක හරියට ඔයා කාඩ් බෙදනවා වගේ. මුළු ලැයිස්තුවෙන්ම හොයලා ඉතාම කුඩා අංකය තෝරගන්නවා. ඊට පස්සෙ ඒක මුලටම දානවා. ඊළඟට ඉතුරු ටිකෙන් ඉතාම කුඩා එක හොයලා දෙවැනි තැනට දානවා. මේ විදිහට කරගෙන යනවා ඔක්කොම පිළිවෙලට එනකම්.
මිනිස්සු මේක පාවිච්චි කරනවා:
- පොත් රාක්කයක පොත් අකුරු පිළිවෙලට සැකසීමට
- කාඩ් කෙළියේදී අතේ තියෙන කාඩ් පිළිවෙලට සැකසීමට
AI/LLM/programs මේක පාවිච්චි කරනවා:
- පොඩි දත්ත කට්ටල පිළිවෙලට සැකසීමට
- සරල රොබෝ අත් වල ක්රියාකාරිත්වය සඳහා
Insertion Sort:
මේක හරියට ඔයා අතේ තියෙන කාඩ් ටික පිළිවෙලට හදාගන්නවා වගේ. එක එක කාඩ් එක අරගෙන, ඒක තියෙන්න ඕනෙ හරියටම කොතනද කියලා හොයලා, අනිත් ඒවා පැත්තකට කරලා ඒක ඒ තැනට දානවා.
මිනිස්සු මේක පාවිච්චි කරනවා:
- කාඩ් ගහද්දි කාඩ් පිළිවෙලට හදාගන්න
- ලිපිගොනු කැබිනට් එකක ගොනු අකුරු පිළිවෙලට සැකසීමට
AI/LLM/programs මේක පාවිච්චි කරනවා:
- Online streaming services වල ඔයා බලපු ෆිල්ම්ස් ලැයිස්තුව පිළිවෙලට සැකසීමට
Dijkstra's algorithm:
මේක ගමනක් යද්දි හොඳම මාර්ගය හොයාගන්නවා වගේ. හැම පාරකටම cost එකක් දෙනවා - ඒ කියන්නෙ දුර, කාලය, හෝ මිල වගේ දෙයක්. ඊට පස්සේ සෑම තැනකටම යන්න පුළුවන් ලාභම මාර්ගය හොයනවා.
Kruskal's algorithm:
මේකෙදි වෙන්නේ family tree හදනවා වගේ වැඩක්. සෑම කෙනෙක්ම තනි පවුලක් විදිහට පටන් අරන්, ක්රමක්රමයෙන් අඩුම cost එකක් තියන සම්බන්ධතා එකතු කරගෙන යනවා. අන්තිමට හැමෝම එකම පවුලක් වෙනවා, නමුත් අඩුම පිරිවැයෙන්.
Floyd's algorithm:
මේක හරියට සෑම නගරයකටම යන්න තියන කෙටිම මාර්ග සියල්ලම එක පාරට හොයනවා වගේ. හැම නගර දෙකකටම යන්න පුළුවන් හොඳම මාර්ගය මොකද්ද කියලා බලනවා - පටන් ගන්න නගරයේ ඉදන් ඕනි නගරෙට කෙලින්ම යනවද, නැත්නම් වෙන නගරයක් හරහා යනවද කියලා.
1. Bloom Filter Algorithm:
මේක හරියට ඔයාගෙ කාමරේ තියන බඩු ලැයිස්තුවක් හදාගන්නවා වගේ. හැබැයි මේකෙන් හැම බඩුවක්ම මතක තියාගන්නෙ නෑ, ඒ වෙනුවට "මේක තිබ්බා වගෙයි" කියලා විතරයි මතක තියාගන්නෙ. ඉතින් යමක් හොයද්දි "මේක නෑ" කියලා ඉක්මනට කියන්න පුළුවන්, ඒත් "මේක ඇති" කියලා කිව්වොත් ඒක හරියටම හරි නැති වෙන්න පුළුවන්.
මේක පාවිච්චි කරලා ඔයාට පුළුවන් වෙයි ඉක්මනට තීරණ ගන්න - උදාහරණයක් විදියට ඊමේල් inbox එකේ spam ඊමේල් තියනවද කියලා බලන්න.
2. Monte Carlo Algorithm:
මේක හරියට සූදු කෙළින්නා වගේ. නිවැරදි උත්තරය හොයන්න බැරි තරම් ටාස්ක් එකක් තියනවා නම්, මේකෙන් කරන්නෙ අහඹු ලෙස උත්තර කිහිපයක් උත්සාහ කරලා බලනවා. ගොඩක් වාර ගණනක් මේක කරලා, වැඩිපුර ලැබෙන උත්තරය ගන්නවා.
මේක පාවිච්චි කරලා ඔයාට පුළුවන් සංකීර්ණ ගැටළු වලට ඉක්මන් විසඳුම් හොයාගන්න - උදාහරණයක් විදියට ලොකු සාප්පුවක අඩුම තදබදය තියන වෙලාව හොයාගන්න.
3. Hungarian Algorithm:
මේක හරියට ක්ලාස් එකේ කණ්ඩායම් ව්යාපෘතියකට සාමාජිකයන් තෝරනවා වගේ. කවුරුත් කැමති වැඩ ටික කරන්න ලැබෙන විදියට, හැකි උපරිම කාර්යක්ෂමතාවෙන් වැඩ බෙදා දෙනවා.
මේක පාවිච්චි කරලා ඔයාට පුළුවන් කාර්යාලයේ වැඩ කාර්යක්ෂමව බෙදාගන්න, එතකොට හැමෝටම තමන් කැමති වැඩ ලැබෙනවා.
4. PageRank Algorithm:
මේක තමයි Google search engine එක පාවිච්චි කරන ප්රධාන algorithm එක. මේකෙන් කරන්නෙ වැදගත්ම තොරතුරු මොනවද කියලා හොයාගන්න එක. හරියට ෆේස්බුක් වල ජනප්රියම පෝස්ට් එක හොයනවා වගේ.
මේක පාවිච්චි කරලා ඔයාට පුළුවන් ඔයාගෙ ඊමේල් inbox එකේ වැදගත්ම ඊමේල් ටික හොයාගන්න, නැත්නම් ඔයාගෙ to-do list එකේ වැදගත්ම දේවල් මොනවද කියලා හොයාගන්න.
5. Diffie-Hellman Key Exchange Algorithm:
මේක හරියට දෙන්නෙක් රහසක් බෙදාගන්නවා වගේ, හැබැයි කවුරුත් අහගෙන ඉන්න පුළුවන් තැනක. ඒත් ඒ අහගෙන ඉන්න කෙනාට රහස තේරුම් ගන්න බෑ.
මේක පාවිච්චි කරලා ඔයාට පුළුවන් online shopping කරද්දි ඔයාගෙ credit card details ආරක්ෂිතව යවන්න.
හරි එහෙනම් අපි දැන් බලමු AI, සහ රොබෝල පාවිච්චි කරන විශේෂ algorithms ගැන. මේවා මිනිස්සු කරන වැඩ වඩා කාර්යක්ෂමව කරන්න උපකාරී වෙනවා.
1. ඉක්මනට දේවල් හඳුනාගැනීම (Fast Object Recognition):
මිනිස්සු: අපි දේවල් හඳුනාගන්නෙ ඒවා දැකලා, හිතලා බලලා.
රොබෝ: Convolutional Neural Networks (CNN) කියන algorithm එක පාවිච්චි කරනවා. මේක හරියට රොබෝගෙ ඇස් වගේ. තත්පරයකින් කොටසකින් දහස් ගණන් රූප හඳුනාගන්න පුළුවන්.
උදාහරණයක්: සුපිරි වෙළඳසැල් වල බඩු ගණන් කරන්න, නැත්නම් කර්මාන්තශාලා වල නිෂ්පාදන වල තත්ත්වය පරීක්ෂා කරන්න මේක පාවිච්චි කරනවා.
2. මාර්ග සැලසුම් කිරීම (Path Planning):
මිනිස්සු: අපි මාර්ග තීරණය කරන්නෙ අත්දැකීම් අනුව, සමහර වෙලාවට වැරදි තීරණ ගන්නවා.
රොබෝ: A* (A-Star) Algorithm එක පාවිච්චි කරනවා. මේක හරියට සුපිරි GPS එකක් වගේ. හැම විකල්පයක්ම බලලා, හොඳම මාර්ගය හොයාගන්නවා.
උදාහරණයක්: ගබඩාවල රොබෝ ට්රක් මෙහෙයවීම, නැත්නම් ඩ්රෝන් යාත්රා කිරීම වගේ දේවල් වලට මේක පාවිච්චි කරනවා.
3. පෙර අනාවැකි කීම (Predictive Analysis):
මිනිස්සු: අපි අනාගතය ගැන හිතන්නෙ අතීත අත්දැකීම් මත පදනම් වෙලා.
රොබෝ: Machine Learning Algorithms වගේ දේවල් පාවිච්චි කරනවා. මේවා විශාල දත්ත ප්රමාණයක් විශ්ලේෂණය කරලා රටා හඳුනාගන්නවා.
උදාහරණයක්: බැංකු වල ණය අනුමත කිරීම, හෝ සුපිරි වෙළඳසැල් වල ඉදිරි ඉල්ලුම තක්සේරු කිරීම වගේ දේවල් වලට මේක පාවිච්චි කරනවා.
4. සංකීර්ණ ගණිත ගැටලු විසඳීම (Complex Mathematical Problem Solving):
මිනිස්සු: අපි ගණන් හදන්නෙ පියවරෙන් පියවර, සමහර වෙලාවට වැරදි වෙනවා.
රොබෝ: Numerical Methods Algorithms පාවිච්චි කරනවා. මේවා සංකීර්ණ ගණිත ප්රශ්න ඉතා වේගයෙන් විසඳනවා.
උදාහරණයක්: අභ්යවකාශ යානා සැලසුම් කිරීම, හෝ මූල්ය වෙළඳපොළ විශ්ලේෂණය වගේ දේවල් වලට මේක පාවිච්චි කරනවා.
5. භාෂා පරිවර්තනය (Language Translation):
මිනිස්සු: අපි වචන එකින් එක පරිවර්තනය කරනවා, සමහර වෙලාවට අර්ථය නිවැරදිව ගන්න අමාරුයි.
රොබෝ: Neural Machine Translation (NMT) Algorithms පාවිච්චි කරනවා. මේවා මුළු වාක්යයම එක පාර බලලා, අදහස නිවැරදිව පරිවර්තනය කරනවා.
උදාහරණයක්: Google Translate වගේ සේවා මේ ක්රමය පාවිච්චි කරනවා.
6. රටා හඳුනාගැනීම (Pattern Recognition):
මිනිස්සු: අපි රටා හඳුනාගන්නෙ දිගු කාලයක් නිරීක්ෂණය කරලා.
රොබෝ: Machine Learning Algorithms වගේ දේවල් පාවිච්චි කරනවා. මේවා විශාල දත්ත ප්රමාණයක් ඉතා වේගයෙන් විශ්ලේෂණය කරලා රටා හඳුනාගන්නවා.
උදාහරණයක්: වෛද්ය විද්යාවේ රෝග විනිශ්චය කිරීම, හෝ මූල්ය වංචා හඳුනාගැනීම වගේ දේවල් වලට මේක පාවිච්චි කරනවා.
මේ algorithms නිසා රොබෝවරුන්ට පුළුවන් මිනිස්සුන්ට වඩා වේගයෙන්, නිවැරදිව, සහ කාර්යක්ෂමව වැඩ කරන්න. ඒත් මතක තියාගන්න, මිනිස්සුන්ට තියන නිර්මාණශීලීත්වය සහ හැඟීම් තේරුම් ගැනීමේ හැකියාව රොබෝවරුන්ට නෑ. ඒ නිසා මිනිස් බුද්ධිය සහ කෘතිම බුද්ධිය එකට එකතු වුණාම තමයි හොඳම ප්රතිඵල ලැබෙන්නෙ.