ரிகர்சிவ் பேக்டிராக்கர் பிரமை ஜெனரேட்டர்
வெளியிடப்பட்டது: 16 பிப்ரவரி, 2025 அன்று பிற்பகல் 6:22:52 UTC
பிரமை ஜெனரேட்டர் ஒரு சரியான பிரமை உருவாக்க recursive backtracker அல்காரிதம் பயன்படுத்துகிறது. இந்த வழிமுறை நீண்ட, முறுக்கு தாழ்வாரங்கள் மற்றும் மிக நீண்ட, முறுக்கு தீர்வுடன் பிரமைகளை உருவாக்க முனைகிறது.Recursive Backtracker Maze Generator
ரிகர்சிவ் பேக்டிராக்கர் அல்காரிதம் உண்மையில் ஒரு பொது நோக்கத்திற்கான ஆழம்-முதல் தேடலாகும். பிரமை உருவாக்கத்திற்குப் பயன்படுத்தும்போது, சீரற்ற பாதையைத் தேர்ந்தெடுப்பதற்கு இது சற்று மாற்றியமைக்கப்பட்டது, அதேசமயம் உண்மையான தேடல் நோக்கங்களுக்காகப் பயன்படுத்தப்பட்டால், ஒருவர் பொதுவாக ஒவ்வொரு மட்டத்தையும் நேரியல் வரிசையில் தேடுவார். இது நீண்ட, முறுக்கு தாழ்வாரங்கள் மற்றும் மிக நீண்ட, முறுக்கு தீர்வுடன் பிரமைகளை உருவாக்க முனைகிறது.
ஒரு சரியான பிரமை என்பது ஒரு பிரமை, அதில் பிரமையின் எந்தப் புள்ளியிலிருந்தும் மற்றொரு புள்ளிக்கு சரியாக ஒரு பாதை இருக்கும். அதாவது நீங்கள் வட்டங்களில் சுற்றிச் செல்ல முடியாது, ஆனால் நீங்கள் அடிக்கடி முட்டுச்சந்துகளைச் சந்திப்பீர்கள், இதனால் நீங்கள் திரும்பிச் செல்ல வேண்டிய கட்டாயம் ஏற்படும்.
இங்கே உருவாக்கப்பட்ட பிரமை வரைபடங்கள் தொடக்க மற்றும் முடிவு நிலைகள் இல்லாத இயல்புநிலை பதிப்பைக் கொண்டுள்ளன, எனவே அவற்றை நீங்களே தீர்மானிக்கலாம்: பிரமையின் எந்தப் புள்ளியிலிருந்தும் வேறு எந்தப் புள்ளிக்கும் ஒரு தீர்வு இருக்கும். நீங்கள் உத்வேகம் விரும்பினால், பரிந்துரைக்கப்பட்ட தொடக்க மற்றும் முடிவு நிலையை நீங்கள் இயக்கலாம் - மேலும் இரண்டிற்கும் இடையிலான தீர்வைக் கூட பார்க்கலாம்.
ரிகர்சிவ் பேக்ட்ராக்கர் அல்காரிதம் என்பது சரியான பிரமைகளை உருவாக்குவதற்கான ஆழம்-முதல் தேடல் முறையாகும் (சுழல்கள் இல்லாத பிரமைகள் மற்றும் எந்த இரண்டு புள்ளிகளுக்கும் இடையில் ஒரு பாதை). இது எளிமையானது, திறமையானது மற்றும் நீண்ட, முறுக்கு தாழ்வாரங்களுடன் பார்வைக்கு ஈர்க்கும் பிரமைகளை உருவாக்குகிறது.
அதன் பெயர் இருந்தபோதிலும், இது ரிகர்ஷனைப் பயன்படுத்தி செயல்படுத்தப்பட வேண்டிய அவசியமில்லை. இது பெரும்பாலும் LIFO வரிசையைப் பயன்படுத்தி (அதாவது ஒரு அடுக்கு) ஒரு செயல்முறை அணுகுமுறையில் செயல்படுத்தப்படுகிறது. மிகப் பெரிய பிரமைகளுக்கு, நிரலாக்க மொழி மற்றும் கிடைக்கக்கூடிய நினைவகத்தைப் பொறுத்து, ரிகர்ஷனைப் பயன்படுத்துவது அழைப்பு அடுக்கு வழிதல் ஏற்பட வாய்ப்புள்ளது. ஒரு LIFO வரிசையை பெரிய அளவிலான தரவைக் கையாள்வதற்கு எளிதாக மாற்றியமைக்க முடியும், கிடைக்கக்கூடிய நினைவகம் போதுமானதாக இல்லாவிட்டால் வட்டில் அல்லது தரவுத்தளத்தில் வரிசையை வைத்திருப்பது கூட.
எப்படி இது செயல்படுகிறது
அல்காரிதம் ஒரு அடுக்கு அடிப்படையிலான ஆழம்-முதல் தேடல் அணுகுமுறையைப் பயன்படுத்தி செயல்படுகிறது. படிப்படியான முறிவு இங்கே:
- தொடக்க நுண்ணறையைத் தேர்ந்தெடுத்து, அதைப் பார்வையிட்டதாகக் குறிக்கவும்.
- பார்வையிடப்படாத செல்கள் இருக்கும்போது:
- இதுவரை பார்வையிடப்படாத அண்டை செல்களைப் பாருங்கள்.
- குறைந்தபட்சம் ஒரு பார்வையிடப்படாத அண்டை இருந்தால்:
- தோராயமாக பார்வையிடப்படாத அண்டை நாடுகளில் ஒன்றைத் தேர்வுசெய்க.
- தற்போதைய கலத்திற்கும் தேர்ந்தெடுக்கப்பட்ட அண்டை வீட்டிற்கும் இடையில் உள்ள சுவரை அகற்றவும்.
- தேர்ந்தெடுக்கப்பட்ட அண்டை வீட்டாருக்குச் சென்று பார்வையிட்டதாகக் குறிக்கவும்.
- தற்போதைய கலத்தை அடுக்கில் தள்ளவும்.
- பார்வையிடப்படாத அண்டை வீட்டார் இல்லை என்றால்:
- அடுக்கிலிருந்து கடைசி கலத்தை பாப் செய்வதன் மூலம் பின்வாங்கவும்.
- அடுக்கு காலியாக இருக்கும் வரை இந்த செயல்முறையைத் தொடரவும்.
இந்த அல்காரிதத்தைப் பற்றிய ஒரு சுவாரஸ்யமான உண்மை என்னவென்றால், இது ஒரு பிரமை ஜெனரேட்டராகவும், பிரமை தீர்வாளராகவும் செயல்படுகிறது. நீங்கள் ஏற்கனவே உருவாக்கப்பட்ட பிரமை மீது அதை இயக்கினால், நீங்கள் தீர்மானிக்கப்பட்ட இறுதி புள்ளியைத் தாக்கும்போது நிறுத்தினால், அடுக்கில் பிரமைக்கு தீர்வு இருக்கும்.
இந்த தளத்தில் இந்த வழிமுறையின் இரண்டு பதிப்புகள் என்னிடம் உள்ளன: இந்த பக்கத்தில் பிரமைகளை உருவாக்குவதற்கான ஒரு LIFO வரிசை மற்றும் பிரமைகளைத் தீர்ப்பதற்கான ஒரு ரிகர்ஷன் அடிப்படையிலான ஒன்று, பிற வழிமுறைகளால் உருவாக்கப்பட்ட பிரமைகள் (தீர்வுகளுடன் வரைபடங்கள் எவ்வாறு தயாரிக்கப்படுகின்றன). இரண்டு வெவ்வேறு பதிப்புகளைக் கொண்டிருப்பது விளையாட்டுக்கு மட்டுமே, ஏனென்றால் நான் அதை சுவாரஸ்யமாகக் கண்டுபிடிக்கும் ஒரு முட்டாள், இருவருக்கும் வேலை செய்திருக்கலாம் ;-)