ஒரு எந்திரன் தன்னியக்கமாக புதிர் பாதையில் இருந்து வெளியேறும் வழியைக் கண்டுபிடிப்பதைத்தான் புதிர்பாதைக்குத் தீர்வு காண்பது என்கிறோம். சீரற்ற சுட்டி (random mouse), சுவர் பின்பற்றல் (wall follower), பிளெட்ஜ் (Pledge), மற்றும் ட்ரெமாக்ஸ்(Trémaux’s) ஆகியவை ஒரு எந்திரனோ அல்லது ஆளோ முன்பின் தெரியாத புதிர் பாதையில் உள்ளே மாட்டிக் கொண்டால் வெளியேறும் வழியைக் கண்டு பிடிப்பதற்கான வினைச்சரங்கள்.
முட்டு சந்துகளை நிரப்புதல் (dead-end filling)
ஆனால் நீங்கள் முழு புதிர் பாதையையும் மேலிருந்து பார்க்க முடியும் என்று வைத்துக் கொள்வோம். இதற்கு முட்டு சந்துகளை நிரப்புதல் போன்ற வினைச்சரத்தைப் பயன்படுத்தலாம். எல்லா முட்டு சந்துகளையும் நிரப்பிவிட்டால், மீதம் இருப்பது நாம் வெளியே செல்லும் வழி தானே?
ஆழம்-முதல் தேடல் (Depth-first Search)
புதிர்பாதைக்குத் தீர்வு காணும் வினைச்சரம் உருவாக்க நீங்கள் அதை ஒரு கிளைப்படமாக உருவகிக்கலாம். இதற்குத் தீர்வு காண ஆழம்-முதல் தேடல் உண்மையில் ஒரு நல்ல மீள்சுருள் தேடல் தான். இதன் விதிமுறை என்னவென்றால் முதலில் வலது கோடியில் உள்ள கிளையைப் பின்பற்றுவோம். அதில் வெளியேறும் வழி கிடைக்கவில்லை என்றால் திரும்பி வருவோம். திரும்பி வரும் வழியில் நமக்கு கிடைக்கும் இடது பக்கமோ அல்லது நேராகவே செல்லும் முதல் வாய்ப்பை எடுத்துக் கொள்வோம். அங்கிருந்து திரும்பவும் வலது கோடியில் உள்ள கிளையைப் பின்பற்றுவோம். இம்மாதிரி ஒவ்வொரு கிளையையும் அதன் முழு ஆழத்துக்குச் சென்று பார்த்து விடுவதால் இதை ஆழம்-முதல் தேடல் என்று கூறுகிறோம்.
அகலம்-முதல் தேடல் (Breadth-first search)
இதற்கு மாறாக அகலம்-முதல் தேடல் வழிமுறையில் ஒரு படியில் இருக்கும் எல்லா கிளைகளையும் முயற்சி செய்த பின்னர்தான் அடுத்த படிக்கு இறங்கிச் செல்வோம்.
தொடரற்ற புதிர் பாதைகளுக்கு சுவரை ஒட்டிச் செல்லும் முறையில் தீர்வு காணலாம். ஆனால் உள்ளே செல்லும் வழியும் வெளியேறும் வழியும் புதிர் பாதையின் வெளிச்சுவர்களில் இருக்க வேண்டும். எந்திரன் புதிர்பாதையின் உட் பக்கத்தில் இருந்து தொடங்கி, வெளியே செல்லும் வழி தொடரற்ற பகுதியில் இருந்தால் உள்ளேயே சுற்றிச் சுற்றி வரக் கூடும். பிளெட்ஜ் வினைச்சரம் (Pledge algorithm) மூலம் இதற்குத் தீர்வு காணலாம்.
குழியிலிருந்து தப்பித்தல்
எந்திரன் திறனளவிடல் (Robot Benchmark) என்ற இந்த இணைய தளத்தில் நாம் இதற்கு முந்தைய பயிற்சிகளைச் செய்தபின்னர் இதைச் செய்வது நன்று. பிபி-8 என்பது ஸ்டார் வார்ஸ் (Star Wars) படங்களில் வரும் ஒரு எந்திரன் பாத்திரம் ஆகும். இது 2015 ஸ்டார் வார்ஸ்: த ஃபோர்ஸ் அவேகன்ஸ் (The Force Awakens) மற்றும் 2017 ஸ்டார் வார்ஸ்: தி லாஸ்ட் ஜெடி (The Last Jedi) ஆகியவற்றிலும் வருகிறது. இது கோளவுருவான உடலும் தளையற்று இயங்கும் குவிமாடத் தலையும் கொண்ட எந்திரன். இது எந்திரன் பொம்மையாகத் தற்போது சந்தையில் கிடைக்கிறது. இந்த பொம்மையைக் கைக்கணினி அல்லது திறன்பேசி மூலம் இயக்கலாம்.
நமது பாவனையாக்கியில் BB-8 எந்திரன் ஒரு பாலைவனத்தில் குழியில் மாட்டிக்கொண்டிருக்கிறது. இதை விரைவாகக் குழியிலிருந்து வெளியேற வழிசெய்யவேண்டும் என்பதுதான் சவால். ஒரு நிமிடத்திற்கும் அதிகமான நேரத்தை எடுத்துக் கொண்டால் ஆட்டம் நின்றுவிடும்.
எந்திரனைக் குழியிலிருந்து எவ்வளவு விரைவாக வெளியேற்றினீர்கள் என்பதை அடிப்படையாக வைத்து மதிப்பெண் கொடுக்கிறார்கள். தப்பவில்லையெனில், தப்பிக்க எவ்வளவு அருகில் நெருங்கி வந்தீர்கள் என்பதை வைத்து மதிப்பெண் கிடைக்கும்.
தப்பினால் மதிப்பெண் 50% முதல் 100% வரை கிடைக்கும். அக்கணமே தப்பித்தால் 100% கிடைக்கும். இருக்கும் ஒரு நிமிடத்தின் கடைசி விநாடியில் தப்பித்தால் 50% தான் கிடைக்கும். தப்பவில்லையெனில் குழியின் விளிம்பிலிருந்து எட்டிய தூரத்துக்கு நேரியல் தொடர்பாக 0% முதல் 50% வரை மதிப்பெண் கிடைக்கும்.
பைதான் நிரலாக்க மொழியைப் பயன்படுத்தி செயல்திறனை மேம்படுத்துவது எப்படி? குழியின் சாய்வு அதிகமாக இருப்பதால் எந்திரன் முன்னும் பின்னும் ஓடுவதில் வெளியே வற முடியாது போலிருக்கிறது. ஆகவே ஒரு பக்கம் மேல்நோக்கி ஓடித் திரும்பி குழிக்குள் உருண்டு மறுபக்கம் ஏறும் உந்துவேகத்தைப் பயன்படுத்த வழிபார்க்க வேண்டும். சரியான தருணங்களில் திசையை மாற்றினால் எந்திரன் தப்பிப்பதற்கு வாய்ப்பிருக்கிறது. நீங்கள் எந்திரனின் தற்போதைய திசைவேகத்தை அளவிடுவதற்கு சுழல் காட்டி உணரியைப் (gyro sensor) பயன்படுத்தலாம்.
நன்றி தெரிவிப்புகள்
- Left: Left-hand solver trapped in a maze Right: Pledge algorithm solution by Randomperson321 – Wikimedia Commons
- PNG image: Robot PNG
இத்தொடரில் அடுத்த கட்டுரை: சுவரை ஒட்டியே செலுத்துதல் (Wall Following)
கோட்டின் மேல் செலுத்துதல். சுவரை ஒட்டியே செலுத்துதல். பயனீர் 3-DX எந்திரனை சுவரை ஒட்டியே செலுத்துதல்.