මොඩියුලය 08: දත්ත ව්‍යුහ සහ ඇල්ගොරිතම

කාර්යක්ෂම සහ වේගවත් මෘදුකාංග නිර්මාණයේ හදවත.

මේවා වැදගත් වන්නේ ඇයි?

මේ වන විට, අපි පරිගණකයට උපදෙස් දෙන ආකාරය (Programming) සහ එම උපදෙස් වස්තූන් (Objects) ලෙස සංවිධානය කරන ආකාරය (OOP) ඉගෙන ගෙන අවසන්. නමුත් දත්ත ගබඩා කිරීම පමණක් ප්‍රමාණවත් නොවේ; එය කාර්යක්ෂමව ගබඩා කිරීම සහ වේගවත්ව සැකසීම අත්‍යවශ්‍ය වේ. දක්ෂ මෘදුකාංග ඉංජිනේරුවෙකු සහ සාමාන්‍ය ක්‍රමලේඛකයෙකු අතර ඇති ප්‍රධානතම වෙනස මෙයයි.

මෙය තේරුම් ගැනීමට පුස්තකාලයක් ගැන සිතන්න.

නිවැරදි දත්ත ව්‍යුහය සහ ඇල්ගොරිතමය තෝරා ගැනීම, ඔබගේ මෘදුකාංගයේ වේගය (performance) සහ මතක භාවිතය (memory usage) කෙරෙහි සෘජුවම බලපායි.

පොදු දත්ත ව්‍යුහ (Common Data Structures)

1. ශ්‍රේණිය (Array)

මෙය එකම වර්ගයේ දත්ත, මතකයේ එක ළඟ, පිළිවෙලට ගබඩා කරන ක්‍රමයකි. සෑම දත්තයකටම අංකයක් (index) ඇත. මෙය හරියට එක ළඟ ඇති, අංක යෙදූ තැපැල් පෙට්ටි වැනිය. ඔබට පෙට්ටියේ අංකය জানা থাকলে, කෙලින්ම එම පෙට්ටියට ගොස් ලිපියක් ගත හැක (වේගවත් ප්‍රවේශය - fast access).

2. සම්බන්ධිත ලැයිස්තුව (Linked List)

මෙහිදී දත්ත එක ළඟ ගබඩා නොවේ. සෑම දත්තයක්ම (node) ඊළඟ දත්තය කොහේදැයි දනී (pointer). මෙය හරියට නිධාන සෙවීමක් වැනිය; පළමු ඉඟියෙන් දෙවැන්නත්, දෙවැන්නෙන් තෙවැන්නත් සොයාගත යුතුය. මැදට අලුත් ඉඟියක් එකතු කිරීම හෝ ඉවත් කිරීම පහසුය (flexible size).

3. අට්ටි (Stack)

මෙය "අවසානයට ඇතුල්වූ දේ, පළමුවෙන් පිටවීම" (Last-In, First-Out - LIFO) මූලධර්මය මත ක්‍රියා කරයි. මෙය හරියට එක මත එක තැබූ පිඟන් අට්ටියක් වැනිය. ඔබට අලුත් පිඟානක් තැබිය හැක්කේ උඩින්ම පමණි. පිඟානක් ඉවත් කළ හැක්කේද උඩින්ම පමණි.

4. පෝලිම (Queue)

මෙය "පළමුවෙන් ඇතුල්වූ දේ, පළමුවෙන් පිටවීම" (First-In, First-Out - FIFO) මූලධර්මය මත ක්‍රියා කරයි. මෙය ප්‍රවේශ පත්‍ර කවුන්ටරයක ඇති පෝලිමක් වැනිය. පෝලිමට මුලින්ම පැමිණි පුද්ගලයා, ප්‍රවේශ පත්‍රය මුලින්ම ලබාගෙන පිටවී යයි.

ඇල්ගොරිතම වර්ග

ගැටළු විසඳීම සඳහා ඇති පියවර මාලාව ඇල්ගොරිතම ලෙස හැඳින්වේ. ප්‍රධාන වර්ග දෙකකි:

අවසාන වශයෙන්

දත්ත ව්‍යුහ සහ ඇල්ගොරිතම යනු මෘදුකාංග ඉංජිනේරු විද්‍යාවේ න්‍යායාත්මක පදනමයි. විශාල දත්ත ප්‍රමාණයක් සමග ක්‍රියා කරන (scalable) සහ ඉහළ කාර්යසාධනයක් ඇති මෘදුකාංග නිර්මාණය කිරීමට මෙම දැනුම අත්‍යවශ්‍ය වේ.

මේ දක්වා, අපි වැඩසටහනක් ක්‍රියාත්මක වන විට, එහි මතකයේ (RAM) දත්ත කළමනාකරණය කරන ආකාරය ඉගෙන ගත්තෙමු. නමුත් වැඩසටහන නැවැත්වූ විට එම දත්ත මැකී යයි. දත්ත ස්ථිරව (persistently) ගබඩා කර තබන්නේ කෙසේද? ඒ සඳහා අපට දත්ත සමුදා (Databases) අවශ්‍ය වේ. අපගේ ඊළඟ මොඩියුලයෙන්, "දත්ත සමුදා කළමනාකරණ පද්ධති (DBMS) සහ SQL" පිළිබඳව අපි ඉගෙන ගනිමු.