ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-23, Thursday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

🚀 ටොපොලොජිකල් සෝට් ඉගෙන ගන්න: ග්‍රාෆ් එකේ චක්‍රය හඳුනා ගන්න කෙටි මාර්ගය

🚀 ටොපොලොජිකල් සෝට් ඉගෙන ගන්න: ග්‍රාෆ් එකේ චක්‍රය හඳුනා ගන්න කෙටි මාර්ගය

ඔබට වැඩ පිළිවෙළක් නිවැරදිව සැලසුම් කරගැනීමට ග්‍රාෆ් එකේ අන්තර්කලය (dependency) හඳුනාගන්න අවශ්‍යද? Python භාවිතයෙන් Kahn's algorithm සහ DFS (Depth‑First Search) එකතු කරමින්, චක්‍රයක් ඇති ග්‍රාෆ් එකේ නිවැරදි ක්‍රමලේඛනය (topological sort) කෙරෙහි සරළ උදාහරණයක් මෙන්න.

මෙම උදාහරණයේ ග්‍රාෆ් එක parse → typecheck → bundle → parse වැනි සම්බන්ධතා අඩංගු. සාමාන්‍යයෙන්, අධි‑අනුක්‍රම (DAG) ග්‍රාෆ් එකක් නම් Kahn's algorithm එකෙන් සියලු නෝඩ් (node) ගණනාවක් තරමක් පිළිවෙළට ලැයිස්තුගත කළ හැක. නමුත් චක්‍රයක් (cycle) පවතින විට, පූර්ණ ලැයිස්තුවක් ලබා නොදෙයි; ඒ වෙනුවට චක්‍රය කුමක්ද කියා පැහැදිලි කිරීමක් අවශ්‍ය වේ.

ඇයි මෙය වැදගත්? ගොඩනැගීමේ (build) ක්‍රියාවලිය, CI/CD පද්ධති, පෘෂ්ඨ පරිසර (runtime) සැකසීම වැනි තැන්වල, නියමිත පියවරක් අසාර්ථක වීමේ හේතුවක් ඉක්මනින් හඳුනා ගැනීම කාර්ය සාධනය ඉහළ යාමට ඉඩ සලසයි. Kahn's algorithm එක පළමුව චක්‍රයක් පවතින බව පෙන්වයි, පසුගිය DFS පියවර එකක් භාවිතා කරමින් අපට එම චක්‍රයේ නියමිත නෝඩ් එකක් හඳුනාගත හැක.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

ශ්‍රී ලංකාවේ තාක්ෂණික ශිෂ්‍යයින්, සොෆ්ට්වේයාර් සංවර්ධකයින් සහ ව්‍යාපාරිකයින් සඳහා මේ පදනම බොහෝ ප්‍රයෝජන ගෙනදෙනවා:

  • ඉගෙනීමේ පහසුකම: Kahn's algorithm සහ DFS එකතු කරමින් ග්‍රාෆ් චක්‍ර හඳුනා ගැනීමේ ක්‍රමය පළමු වරටම අත්හදා බැලීමට හැකිවේ, එමඟින් algorithms පිළිබඳ මූලික අවබෝධය ගැඹුරු වේ.
  • ප්‍රායෝගික පරිසරය: CI/CD pipeline එකක් සකස් කරන වෙලාවේ, dependency ග්‍රාෆ් එකේ අසමත්තා හඳුනා ගැනීමට මේ කේත කට්ටලය (code snippet) භාවිතා කළ හැක. එමඟින් build failures අඩු වේ.
  • ව්‍යාපාරික වර්ධනය: මොනවාද පළමු කාර්යය, මොනවාද පසුබැසීමේ (bottleneck) අවස්ථා කියා තේරුම් ගැනීමෙන් resource allocation හොඳට කළ හැක, එය ව්‍යාපාරික කාර්යක්ෂමතාව වැඩි කරයි.

මෙම උදාහරණය Python 3.11+ සහ සාමාන්‍ය ලයිබ්‍රරී (standard library) භාවිතා කරයි; අතිරේක packages එකක් අවශ්‍ය නොවේ. කේතයෙහි normalize function එකෙන් සියලු නෝඩ් එකක් graph එකේ ඇතුළත් කරයි, එවිට Kahn's algorithm එකට නිවැරදි in‑degree ගණන ලබාදෙයි.

චක්‍රයක් පවතින අවස්ථාවේ, find_cycle function එක DFS භාවිතා කරමින් “back edge” එකක් සොයා, චක්‍රයේ නියමිත නෝඩ් ලැයිස්තුවක් (list) ආපසු ලබා දෙයි. මෙය developers ලාට debug කිරීමේ වේගය වැඩි කරයි.

අවසන් වශයෙන්, schedule function එක Kahn's algorithm සහ DFS එකතු කරමින්, සාර්ථක order එකක් හෝ චක්‍රය පිළිබඳ විස්තරයක් ලබා දෙන සම්පූර්ණ විසඳුමක් සපයයි. මේ වගේ කුඩා utility එකක්, ඔබේ පෞද්ගලික හෝ කණ්ඩායම් පරිසරයට අත්‍යවශ්‍යයි.

ඉදිරියේදී, මෙවැනි algorithmic concepts ග්‍රාෆ්‑based scheduling, task orchestration, data pipelines වැනි වඩා සංකීර්ණ ක්ෂේත්‍ර වලට පවා යොදා ගැනීමට හැකි වනු ඇත.

💡 ඔබේ පළපුරුද්ද මෙහි comment කරලා බෙදාගන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#topological-sort #graph #python #algorithm #dev