Primary tabs
6.2 தீர்வுநெறிகள் (Algorithms)
தருக்க ரீதியான படிநிலைகளில் (Logical Steps) நெறிப்படுத்தி வரையறுக்கப் பட்ட வழிமுறைகளைக் கொண்ட, சிக்கலைத் தீர்ப்பதற்கான செயல்முறையே ‘தீர்வுநெறி’ (Algorithm) எனப்படும். தீர்வுநெறி என்பது புரிந்துகொள்ள எளிமையானதாய், தெளிவாய், துல்லியமாய் வரையறுக்கப்பட வேண்டும். ஒரு சிக்கலுக்கு ஒன்றுக்கு மேற்பட்ட தீர்வுநெறிகள் இருப்பின் சிறந்ததையே தேர்வு செய்ய வேண்டும். தீர்வுநெறி பற்றி இப்பாடப் பிரிவில் விரிவாகக் காண்போம்.
6.2.1 சிக்கலும் தீர்வுநெறியும்
ஓர் இலக்கை அடைய ஒன்றுக்கு மேற்பட்ட திசைவழிகள் (routes) இருக்க முடியும். மேலே கண்ட எடுத்துக்காட்டில் நகராட்சி அலுவலகம் செல்ல ஒன்றுக்கு மேற்பட்ட பாதைகள் இருக்க முடியும். ஒன்று நேர் பாதையாகவும் மற்றொன்று சுற்றுப் பாதையாகவும் இருக்கலாம். அதுபோலவே ஒரு சிக்கலைத் தீர்ப்பதற்கும் ஒன்றுக்கு மேற்பட்ட தீர்வுநெறிகள் இருக்க முடியும். நகராட்சி அலுவகத்துக்குச் செல்லும் பாதையைப் போலவே தீர்வுநெறியிலும் ஒன்று சுருக்கமாய் நேரடியாகச் செய்து முடிப்பதாக இருக்கலாம். மற்றது சுற்றி வளைத்துச் செய்து முடிப்பதாய் இருக்கலாம். கச்சிதமான தீர்வுநெறியே திறன்மிக்க நிரலுக்கு அடிப்படையாய் அமையும். சில சிக்கல்களையும் அவற்றுக்கான தீர்வுநெறிகளையும் காண்போம்.
(அ)மூன்று முழுஎண்களின் சராசரியைக் கண்டறியவும்:இக்கணக்கீட்டுக்கான தீர்வுநெறியை நான்கு படிநிலைகளில் இவ்வாறு எழுதலாம்:[1]மூன்று முழுஎண்களை (A, B, C) உள்ளீடாகப் பெறவும்.[2]மூன்று எண்களின் கூட்டுத் தொகை S=A+B+C காணவும்.[3]சராசரி D=S/3 காணவும்.[4]D-ஐ வெளியிடவும்.இதுபோல் சிக்கல் எளிதானதாக இருந்தால் தீர்வுநெறியும் எளிதானதாகவே இருக்கும்.
(ஆ)100-க்குள் ஓர் எண்ணைப் பகாஎண்ணா எனக் கண்டறி்:1 மற்றும் அதே எண் ஆகிய இரண்டு எண்களால் மட்டுமின்றி, வேறெந்த எண்ணாலும் மீதியின்றி வகுபடாத எண்ணே பகாஎண் ஆகும். N என்ற எண் பகாஎண்ணா என்றறிய அந்த எண்ணை 2, 3, ... N-1 வரை ஒவ்வோர் எண்ணாலும் வகுத்துப் பார்க்க வேண்டும். எந்த எண்ணாவது மீதியின்றி வகுக்குமெனில் அந்த எண் பகாஎண் அன்று. எந்த எண்ணும் மீதியின்றி வகுக்கவில்லை எனில் அந்த எண் பகாஎண். இதன் அடிப்படையில் தீர்வுநெறியை எழுதலாம்:தீர்வுநெறி -1:[1]100-க்குள் ஓர் எண்ணை (N) உள்ளீடாகப் பெறு.[2]D=2 என வைத்துக்கொள்.[3]N-ஐ D-ஆல் வகு; மீதி 0 எனில் [6]-க்குப் போ.[4]D=D+1 என D-யின் மதிப்பை ஒன்று மிகுத்துக் கொள்.[5]D=N எனில் [7]-க்குப் போ; இல்லையேல் [3]-க்குப் போ.[6]N பகாஎண் இல்லை என வெளியிட்டு [8]-க்குப் போ.[7]N பகாஎண் என வெளியிடு.[8]முடிவு.இந்தத் தீர்வுநெறியில் ஒரு குறைபாடு உள்ளது. N-ஐ N-1 வரை வகுத்துப் பார்க்க வேண்டியதில்லை. N/2 வரை வகுத்துப் பார்த்தால் போதும். எனவே தீர்வுநெறியை இவ்வாறு எழுதலாம்.
தீர்வுநெறி -2:[1]100-க்குள் ஓர் எண்ணை (N) உள்ளீடாகப் பெறு.[2]M=N/2 காண்.[3]D=2 என வைத்துக்கொள்.[4]N-ஐ D-ஆல் வகு; மீதி 0 எனில் [7]-க்குப் போ.[5]D=D+1 என D-யின் மதிப்பை ஒன்று மிகுத்துக் கொள்.[6]D>M எனில் [8]-க்குப் போ; இல்லையேல் [4]-க்குப் போ.[7]N பகாஎண் இல்லை என வெளியிட்டு [9]-க்குப் போ.[8]N பகாஎண் என வெளியிடு.[9]முடிவு.இந்தத் தீர்வுநெறியும் சிறப்பானது என்று கூறமுடியாது. N-ஐ N/2 வரை வகுத்துப் பார்க்க வேண்டியதில்லை. HN (N-ன் வர்க்கமூலம்) வரை வகுத்துப் பார்த்தால் போதும். எனவே தீர்வுநெறியை இவ்வாறு திருத்தி எழுதலாம்:
தீர்வுநெறி -3:படிநிலை [2]-ஐ இவ்வாறு மாற்றி எழுதவும்:.[2] M=HN காண்.பிற படிநிலைகளை அப்படியே எழுதிக்கொள்ளவும்.உள்ளீடாகப் பெற்ற எண் 97 எனில் அது பகாஎண் என்றறிய முதல் தீர்வுநெறியில் 95 வகுத்தல்கள் செய்ய வேண்டும். இரண்டாவது தீர்வுநெறியில் 47 வகுத்தல்களைச் செய்ய வேண்டும். மூன்றாவது தீர்வுநெறியில் 8 வகுத்தல்கள் செய்தால் போதும்.நான்காவதாக மிகச் சிறந்த தீர்வுநெறியும் உள்ளது. அதாவது, ஓர் எண் பகாஎண் என அறிய அந்த எண்ணின் வர்க்க மூலத்தைவிடச் சிறிய பகாஎண்களால் மட்டும் வகுத்துப் பார்த்தால் போதும். 97-ஐ 2, 3, 5, 7 ஆகிய நான்கு எண்களால் மட்டும் வகுத்துப் பார்த்தால் போதும்.ஒரு சிக்கலுக்கு ஒன்றுக்கு மேற்பட்ட தீர்வுநெறிகள் இருக்க முடியும். அவற்றுள் சிறந்த தீர்வுநெறியே திறன்மிக்க நிரலுக்கு அடிப்படையாய் அமையும்.
6.2.2 தீர்வுநெறியின் அடிப்படை விதிகள்
சிக்கலுக்கான தீர்வுநெறி சிக்கலைத் தீர்த்து வைக்கும் திறவுகோளாய் இருக்க வேண்டும். சிக்கலை மேலும் சிக்கலாக்கும் செயல்முறையாய் இருந்துவிடக் கூடாது. ஒரு தீர்வுநெறி எப்படி அமைய வேண்டும் என்கிற இலக்கணத்தைப் பார்ப்போம்:
-
தீர்வுநெறியில் வரம்புக்கு உட்பட்ட எண்ணிக்கையிலான படிநிலைகள் (finite number of steps) இருக்க வேண்டும்.
-
ஒவ்வொரு படிநிலையும் எவ்விதக் குழப்பமுமின்றிச் செயல்படுத்தும் நிலையில் தெளிவானதாய் (unambiguous) இருக்க வேண்டும்.
-
ஒவ்வொரு படிநிலையும் கணிப்பொறியில் குறிப்பிட்ட அளவு நினைவகப் பகுதியைப் (finite memory space) பயன்படுத்தி, குறிப்பிட்ட நேரத்துக்குள் (finite time) செய்து முடிக்கும்படி இருக்க வேண்டும்.
-
மொத்தச் செயல்பாடும் குறிப்பிட்ட கால வரம்புக்குள் (finite time) செய்து முடிக்கப்படுவதாய் இருக்க வேண்டும்.
தீர்வு நெறியை முடிவு செய்யும்போது, மேற்கண்ட நான்கு பண்பியல்புகளையும் கொண்டுள்ளதா என்பதைப் பரிசோதித்துப் பார்க்க வேண்டும். நான்கு பண்புகளையும் கொண்ட தீர்வுநெறியே சரியான தீர்வுநெறியாகும்.
கணிப்பொறி மூலம் ஒரு சிக்கலுக்குத் தீர்வு காண ஏதேனும் ஒரு கணிப்பொறி மொழியில் நிரல் எழுத வேண்டும். ஆனால் சிக்கலுக்கான தீர்வினைச் சிந்திக்கும்போது நாம் கணிப்பொறி மொழியில் சிந்திப்பதில்லை. தமிழ், ஆங்கிலம் போன்ற எதேனும் ஓர் இயற்கை மொழியில்தான் சிந்திக்கிறோம். அவ்வாறு சிந்தித்து எடுக்கப்பட்ட முடிவுகளைத்தான் ஒரு கணிப்பொறி மொழியில் நிரலாக எழுதுகிறோம். கணிப்பொறி மொழியின் கட்டளைகளைக் காற்புள்ளி, அரைப்புள்ளி உட்படத் துல்லியமாக மிகுந்த கவனத்துடன் எழுத வேண்டும். எங்கோ ஒரு சிறு பிழை இருப்பினும் நிரல் செயல்படாது. சில வேளைகளில் விபரீதமான விடையைத் தரும்.
ஆனால் நாம் சிந்தித்து எடுத்த முடிவுகளை உள்ளீடு, வெளியீடு, செயலாக்கம் எனப் பகுத்துக் கொண்டு, தீர்வுக்கான செயல்முறையை நம் தாய்மொழியில் எழுதுவது எளிது. அவ்வாறு எழுதும்போது சிக்கலையும் தீர்வையும் தெளிவாகப் புரிந்துகொள்ள முடிகிறது. தீர்வுக்கான செயல்முறை அதாவது தீர்வுநெறி சரியாகச் செயல்படுமா என்பதைப் பரிசோதித்து அறிவதும் எளிதாகும். கணிப்பொறி மொழியில் எழுதும் நிரலை கணிப்பொறியில் செயல்படுத்துவதற்கு முன்பாக அது சரியாகச் செயல்படுமா என்பதைத் தீர்வுநெறியைப் பரிசோதித்துப் பார்ப்பதன்மூலமே அறிந்துகொள்ள முடியும்.
தன் மதிப்பீடு : வினாக்கள் - I1.கணிப்பொறியின் பலம், பலவீனம் யாவை?2.பரமார்த்த குரு கதை மூலமாக அறிவது யாது?3.நிரல் எழுதிச் செயல்படுத்தும் முன்பாகச் செய்ய வேண்டிய முன்னேற்பாடுகள் யாவை? .4.சிக்கலை வரையறுப்பது எவ்வாறு? எடுத்துக்காட்டுத் தருக.5.
சிக்கலின் உள்ளீடு, வெளியீடு, செயலாக்கம் ஆகியவற்றைப் பகுத்தறிய ஓர் எடுத்துக்காட்டுத் தருக.6.
கணிப்பொறி வழியாகச் சிக்கல் தீர்க்கும் நுட்பங்களை வரிசைப்படுத்துக?7.தீர்வுநெறி என்றால் என்ன?8.ஓர் எண் பகாஎண்ணா என அறியும் தீர்வுநெறியை எழுதுக.9.தீர்வுநெறியின் அடிப்படை விதிகளை எழுதுக.10.தீர்வுநெறியின் பயன் யாது?-