நெறிமுறையின் யுக்திகள் - Study Notes
அத்தியாயச் சுருக்கம்
நெறிமுறையின் யுக்திகள் என்பது ஒரு குறிப்பிட்ட சிக்கலைத் தீர்ப்பதற்கான படிநிலைகளைக் கொண்ட கட்டளைகளின் தொகுப்பாகும். இப்பாடம் நெறிமுறைகளின் கட்டமைப்பு, அவற்றின் செயல்திறனை அளவிடும் நேர மற்றும் இடச் சிக்கல்கள் பற்றி விவரிக்கிறது. மேலும், நேரியல் தேடல், இருமத் தேடல் போன்ற தேடல் நுட்பங்களையும், குமிழி வரிசையாக்கம், தெரிந்தெடுப்பு வரிசையாக்கம் மற்றும் செருகும் வரிசையாக்கம் போன்ற வரிசையாக்க முறைகளையும் விரிவாக விளக்குகிறது. இறுதியாக, சிக்கலான கணக்கீடுகளை எளிமையாக்கும் இறங்கு நிரலாக்கம் மற்றும் நினைவிருத்தல் போன்ற உகந்த யுக்திகளையும் இது உள்ளடக்கியுள்ளது.
கற்றலின் நோக்கங்கள்
- நெறிமுறைகளின் அடிப்படைக் கோட்பாடுகள் மற்றும் அவற்றின் பண்புகளைப் புரிந்து கொள்ளுதல்.
- நெறிமுறையின் செயல்திறனைத் தீர்மானிக்கும் காரணியான நேரம் மற்றும் இட அளவீடுகளை ஆராய்தல்.
- பல்வேறு தேடல் மற்றும் வரிசையாக்க நெறிமுறைகளின் செயல்பாடுகளை ஒப்பிட்டு பகுப்பாய்வு செய்தல்.
- இறங்கு நிரலாக்கத்தின் வழிமுறைகள் மற்றும் அதன் பயன்பாடுகளைக் கற்றறிதல்.
முக்கியக் கருத்துருக்கள் மற்றும் வரையறைகள்
நெறிமுறை (Algorithm)
ஒரு குறிப்பிட்ட சிக்கலைத் தீர்ப்பதற்காக படிநிலைகளாக எழுதப்படும் வரையறுக்கப்பட்ட கட்டளைகளின் தொகுப்பே நெறிமுறை ஆகும். இது எந்தவொரு நிரலாக்க மொழியையும் சாராமல் பொதுவானதாக இருக்கும்.
நேரச் சிக்கல் (Time Complexity)
ஒரு நெறிமுறை தன் முழுச் செயல்பாட்டையும் முடித்து வெளியீட்டைத் தர எடுத்துக்கொள்ளும் மொத்த படிநிலைகளின் எண்ணிக்கை நேரச் சிக்கல் எனப்படும்.
இடச் சிக்கல் (Space Complexity)
ஒரு நெறிமுறை தன் செயல்பாட்டின் போது நினைவகத்தில் எடுத்துக்கொள்ளும் அதிகபட்ச இடத்தின் அளவு இடச் சிக்கல் எனப்படும். இது நிலையான பகுதி மற்றும் மாறும் பகுதி என இரு கூறுகளைக் கொண்டது.
Big O குறியீடு (Asymptotic Notation - Big O)
நெறிமுறையின் மோசமான நிலையை (Worst Case) அல்லது அதன் அதிகபட்ச மேல் எல்லையை விவரிக்கப் பயன்படும் குறியீடாகும்.
இறங்கு நிரலாக்கம் (Dynamic Programming)
ஒரு பெரிய சிக்கலை மிகச் சிறிய துணைச் சிக்கல்களாகப் பிரித்து, அவற்றின் தீர்வுகளை மீண்டும் பயன்படுத்தி ஒட்டுமொத்த சிக்கலுக்கும் உகந்த தீர்வு காணும் வடிவமைப்பு முறையே இறங்கு நிரலாக்கம் ஆகும்.
செயல்முறை விளக்கங்கள்
குமிழி வரிசையாக்கம் (Bubble Sort)
அணியில் உள்ள அடுத்தடுத்த உறுப்புகளை ஒப்பிட்டு, அவை சரியான வரிசையில் இல்லை எனில் இடமாற்றம் செய்யும் எளிய வரிசையாக்க முறையாகும். பட்டியல் முழுமையாக வரிசையாக்கப்படும் வரை இச்செயல் மீண்டும் மீண்டும் நடைபெறும்.
இருமத் தேடல் (Binary Search)
வரிசையாக்கப்பட்ட அணியில் மட்டுமே இது செயல்படும். முதலில் அணியின் மைய உறுப்பைக் கண்டறிந்து, இலக்கு மதிப்புடன் ஒப்பிட வேண்டும். இலக்கு மதிப்பு மைய உறுப்பை விடச் சிறியதாக இருந்தால் இடது துணை அணியிலும், பெரியதாக இருந்தால் வலது துணை அணியிலும் தேடலைத் தொடர வேண்டும்.
பொதுவான தேர்வுத் தவறுகள்
- தவறு: வரிசையாக்கப்படாத அணியில் இருமத் தேடலை நேரடியாகப் பயன்படுத்த முயற்சிப்பது.
திருத்தம்: இருமத் தேடலைத் தொடங்கும் முன் அணி கண்டிப்பாக ஏறுவரிசையிலோ அல்லது இறங்குவரிசையிலோ வரிசையாக்கப்பட்டிருக்க வேண்டும். - தவறு: நேரச் சிக்கலின் சிறந்த நிலை மற்றும் மோசமான நிலைக் குறியீடுகளைக் குழப்பிக் கொள்ளுதல்.
திருத்தம்: சிறந்த நிலைக்கு Big Omega (\(\\Omega\)) குறியீடும், மோசமான நிலைக்கு Big O குறியீடும் பயன்படுத்தப்பட வேண்டும்.
தேர்வு குறிப்புகள்
- தேடல்கள் மற்றும் வரிசையாக்கங்களின் ஒப்பீட்டு அட்டவணையை நன்றாகப் படியுங்கள்; இது தேர்வுகளில் கேட்கப்படும் முக்கியப் பகுதியாகும்.
- இறங்கு நிரலாக்கத்தின் முதன்மைப் பண்புகளான நினைவிருத்தல் (Memoization) மற்றும் ஒன்றோடு ஒன்று ஒன்றிணைந்த துணைச்சிக்கல்கள் பற்றிய வினாக்கள் அடிக்கடி கேட்கப்படுகின்றன.
- நெறிமுறையின் பண்புகளான வரையறுக்கும் தன்மை, எல்லைக்குட்பட்ட தன்மை மற்றும் உள்ளீடு/வெளியீடு ஆகியவற்றின் விளக்கங்களை நினைவில் கொள்ளுங்கள்.