ਰਿਕਰਸਿਵ ਬੈਕਟਰੈਕਰ ਮੇਜ਼ ਜਨਰੇਟਰ
ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 8:33:47 ਬਾ.ਦੁ. UTC
ਇੱਕ ਸੰਪੂਰਨ ਮੇਜ਼ ਬਣਾਉਣ ਲਈ ਰਿਕਰਸਿਵ ਬੈਕਟ੍ਰੈਕਰ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਮੇਜ਼ ਜਨਰੇਟਰ। ਇਹ ਐਲਗੋਰਿਦਮ ਲੰਬੇ, ਘੁੰਮਦੇ ਕੋਰੀਡੋਰਾਂ ਅਤੇ ਇੱਕ ਬਹੁਤ ਲੰਬੇ, ਘੁੰਮਦੇ ਘੋਲ ਦੇ ਨਾਲ ਮੇਜ਼ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ।Recursive Backtracker Maze Generator
ਰਿਕਰਸਿਵ ਬੈਕਟ੍ਰੈਕਰ ਐਲਗੋਰਿਦਮ ਅਸਲ ਵਿੱਚ ਇੱਕ ਆਮ ਉਦੇਸ਼ ਡੂੰਘਾਈ-ਪਹਿਲੀ ਖੋਜ ਹੈ। ਜਦੋਂ ਮੇਜ਼ ਜਨਰੇਸ਼ਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਬੇਤਰਤੀਬ ਢੰਗ ਨਾਲ ਰਸਤਾ ਚੁਣਨ ਲਈ ਥੋੜ੍ਹਾ ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਜੇਕਰ ਅਸਲ ਖੋਜ ਉਦੇਸ਼ਾਂ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਆਮ ਤੌਰ 'ਤੇ ਹਰੇਕ ਪੱਧਰ ਨੂੰ ਰੇਖਿਕ ਕ੍ਰਮ ਵਿੱਚ ਖੋਜਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਲੰਬੇ, ਘੁੰਮਦੇ ਕੋਰੀਡੋਰਾਂ ਅਤੇ ਇੱਕ ਬਹੁਤ ਲੰਬੇ, ਘੁੰਮਦੇ ਹੱਲ ਦੇ ਨਾਲ ਮੇਜ਼ ਪੈਦਾ ਕਰਦਾ ਹੈ।
ਇੱਕ ਸੰਪੂਰਨ ਭੁਲੇਖਾ ਇੱਕ ਭੁਲੇਖਾ ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਭੁਲੇਖੇ ਦੇ ਕਿਸੇ ਵੀ ਬਿੰਦੂ ਤੋਂ ਕਿਸੇ ਹੋਰ ਬਿੰਦੂ ਤੱਕ ਬਿਲਕੁਲ ਇੱਕ ਰਸਤਾ ਹੁੰਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਸੀਂ ਚੱਕਰਾਂ ਵਿੱਚ ਘੁੰਮ ਨਹੀਂ ਸਕਦੇ, ਪਰ ਤੁਸੀਂ ਅਕਸਰ ਮੁਰਦਾ ਸਿਰਿਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰੋਗੇ, ਜਿਸ ਨਾਲ ਤੁਹਾਨੂੰ ਪਿੱਛੇ ਮੁੜਨ ਅਤੇ ਵਾਪਸ ਜਾਣ ਲਈ ਮਜਬੂਰ ਹੋਣਾ ਪਵੇਗਾ।
ਇੱਥੇ ਤਿਆਰ ਕੀਤੇ ਗਏ ਮੇਜ਼ ਨਕਸ਼ਿਆਂ ਵਿੱਚ ਬਿਨਾਂ ਕਿਸੇ ਸ਼ੁਰੂਆਤੀ ਅਤੇ ਸਮਾਪਤੀ ਸਥਿਤੀ ਦੇ ਇੱਕ ਡਿਫੌਲਟ ਸੰਸਕਰਣ ਸ਼ਾਮਲ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਉਹਨਾਂ ਦਾ ਫੈਸਲਾ ਆਪਣੇ ਲਈ ਕਰ ਸਕਦੇ ਹੋ: ਮੇਜ਼ ਦੇ ਕਿਸੇ ਵੀ ਬਿੰਦੂ ਤੋਂ ਕਿਸੇ ਹੋਰ ਬਿੰਦੂ ਤੱਕ ਇੱਕ ਹੱਲ ਹੋਵੇਗਾ। ਜੇਕਰ ਤੁਸੀਂ ਪ੍ਰੇਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇੱਕ ਸੁਝਾਈ ਗਈ ਸ਼ੁਰੂਆਤ ਅਤੇ ਸਮਾਪਤੀ ਸਥਿਤੀ ਨੂੰ ਸਮਰੱਥ ਬਣਾ ਸਕਦੇ ਹੋ - ਅਤੇ ਦੋਵਾਂ ਵਿਚਕਾਰ ਹੱਲ ਵੀ ਦੇਖ ਸਕਦੇ ਹੋ।
ਰਿਕਰਸਿਵ ਬੈਕਟ੍ਰੈਕਰ ਐਲਗੋਰਿਦਮ ਇੱਕ ਡੈਪਥ-ਫਰਸਟ ਸਰਚ ਢੰਗ ਹੈ ਜੋ ਪਰਫੈਕਟ ਮਾਜ਼ (ਮਾਜ਼ ਜਿਸ ਵਿੱਚ ਕੋਈ ਲੂਪ ਨਹੀਂ ਅਤੇ ਕਿਸੇ ਵੀ ਦੋ ਬਿੰਦੂਆਂ ਵਿਚਕਾਰ ਇੱਕ ਹੀ ਰਸਤਾ ਹੁੰਦਾ ਹੈ) ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਸਧਾਰਨ, ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਅਤੇ ਦਿੱਖ ਵਿੱਚ ਮਨਮੋਹਕ ਮਾਜ਼ ਬਨਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਲੰਮੇ ਅਤੇ ਮੋੜ ਵਾਲੇ ਰਾਸ਼ਤੇ ਹੁੰਦੇ ਹਨ।
ਇਸਦੇ ਨਾਮ ਦੇ ਬਾਵਜੂਦ, ਇਸਨੂੰ ਰਿਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਨਹੀਂ ਲਾਗੂ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ। ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਆਈਟੀਰੇਟਿਵ ਢੰਗ ਵਿੱਚ LIFO ਕਿਊ (ਅर्थਾਤ ਸਟੈਕ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਬਹੁਤ ਵੱਡੇ ਮਾਜ਼ਾਂ ਲਈ, ਰਿਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਨਾਲ ਕਾਲ ਸਟੈਕ ਓਵਰਫਲੋ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਅਤੇ ਉਪਲਬਧ ਯਾਦਾਸ਼ਤ 'ਤੇ ਨਿਰਭਰ ਹੈ। ਇੱਕ LIFO ਕਿਊ ਨੂੰ ਵੱਡੇ ਡੇਟਾ ਦੀ ਸੰਭਾਲ ਕਰਨ ਲਈ ਅਸਾਨੀ ਨਾਲ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਇੱਥੇ ਤੱਕ ਕਿ ਜੇ ਯਾਦਾਸ਼ਤ ਅਪਰਯਾਪਤ ਹੋਵੇ ਤਾਂ ਇਸ ਨੂੰ ਡਿਸਕ ਜਾਂ ਡਾਟਾਬੇਸ ਵਿੱਚ ਰੱਖਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ
ਐਲਗੋਰਿਦਮ ਸਟੈਕ-ਆਧਾਰਿਤ ਡੈਪਥ-ਫਰਸਟ ਸਰਚ ਢੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇੱਥੇ ਹੌਲ-ਹੁਣ ਦੀ ਟੁੱਟੀ ਟੁੱਟੀ ਵਿਆਖਿਆ ਹੈ:
- ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਸੈੱਲ ਚੁਣੋ ਅਤੇ ਇਸਨੂੰ ਦੌਰਾ ਕੀਤਾ ਹੋਇਆ ਚਿੰਨ੍ਹਿਤ ਕਰੋ।
- ਜਦੋਂ ਤੱਕ ਕੁਝ ਸੈੱਲ ਨਾ ਹੋਵੇ:
- ਉਹ ਸੈੱਲਾਂ ਵੇਖੋ ਜੋ ਹਾਲੇ ਤੱਕ ਦੌਰੇ ਨਹੀਂ ਕੀਤੇ ਗਏ।
- ਜੇਕਰ ਘੱਟੋ ਘੱਟ ਇੱਕ ਅਣਦੌਰਾ ਕੀਤਾ ਹੋਇਆ ਪੜੋਸੀ ਮੌਜੂਦ ਹੋਵੇ:
- ਯਾਦੋਂ ਦੀਆਂ ਅਣਦੌਰੀਆਂ ਪੜੋਸੀਆਂ ਵਿੱਚੋਂ ਇਕ ਨੂੰ ਰੈਂਡਮ ਚੁਣੋ।
- ਮੌਜੂਦਾ ਸੈੱਲ ਅਤੇ ਚੁਣੇ ਹੋਏ ਪੜੋਸੀ ਵਿਚਕਾਰ ਦੀਆਂ ਦੀਵਾਰ ਹਟਾਓ।
- ਚੁਣੇ ਹੋਏ ਪੜੋਸੀ ਵਿੱਚ ਜਾਓ ਅਤੇ ਇਸਨੂੰ ਦੌਰਾ ਕੀਤਾ ਹੋਇਆ ਚਿੰਨ੍ਹਿਤ ਕਰੋ।
- ਮੌਜੂਦਾ ਸੈੱਲ ਨੂੰ ਸਟੈਕ ਵਿੱਚ ਪਾਓ।
- ਜੇਕਰ ਕੋਈ ਅਣਦੌਰਾ ਕੀਤਾ ਹੋਇਆ ਪੜੋਸੀ ਨਾ ਹੋਵੇ:
- ਸਟੈਕ ਤੋਂ ਆਖਰੀ ਸੈੱਲ ਨੂੰ ਹਟਾ ਕੇ ਵਾਪਸ ਜਾਓ।
ਇਸ ਐਲਗੋਰਿਦਮ ਬਾਰੇ ਇੱਕ ਦਿਲਚਸਪ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਹ ਮਾਜ਼ ਜਨਰੇਟਰ ਅਤੇ ਮਾਜ਼ ਹੱਲ ਕਰਨ ਵਾਲੇ ਦੋਹਾਂ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਪਹਿਲਾਂ ਹੀ ਬਣੇ ਹੋਏ ਮਾਜ਼ 'ਤੇ ਚਲਾਉਂਦੇ ਹੋ ਅਤੇ ਜਦੋਂ ਤੁਸੀਂ ਨਿਰਧਾਰਿਤ ਅੰਤ ਸਥਾਨ 'ਤੇ ਪਹੁੰਚਦੇ ਹੋ ਤਾਂ ਰੁਕ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਸਟੈਕ ਵਿੱਚ ਮਾਜ਼ ਦਾ ਹੱਲ ਮੌਜੂਦ ਹੋਵੇਗਾ।
ਮੈਂ ਇਸ ਸਾਈਟ 'ਤੇ ਇਸ ਐਲਗੋਰਿਦਮ ਦੇ ਦੋ ਵਰਜਨ ਅਸਲ ਵਿੱਚ ਵਰਤ ਰਿਹਾ ਹਾਂ: ਇੱਕ LIFO ਕਿਊ ਆਧਾਰਿਤ ਵਰਜਨ ਜੋ ਇਸ ਪੇਜ 'ਤੇ ਮਾਜ਼ ਜਨਰੇਟ ਕਰਨ ਲਈ ਅਤੇ ਇੱਕ ਰਿਕਰਸ਼ਨ ਆਧਾਰਿਤ ਵਰਜਨ ਜੋ ਮਾਜ਼ ਹੱਲ ਕਰਨ ਲਈ, ਸਾਥੀ ਹੀ ਦੂਜੇ ਐਲਗੋਰਿਦਮ ਦੁਆਰਾ ਬਣਾਏ ਗਏ ਮਾਜ਼ਾਂ (ਇਹੀ ਤਰੀਕਾ ਹੈ ਕਿ ਸਹੀ ਹੱਲ ਨਾਲ ਮਾਪ ਬਣਾਏ ਜਾਂਦੇ ਹਨ)। ਦੋ ਵੱਖ-ਵੱਖ ਵਰਜਨ ਹੋਣ ਦਾ ਕਾਰਨ ਸਿਰਫ ਖੇਡ ਹੈ ਕਿਉਂਕਿ ਮੈਂ ਇੱਕ ਨਰਡ ਹਾਂ ਜੋ ਇਸਨੂੰ ਦਿਲਚਸਪ ਲੱਭਦਾ ਹਾਂ, ਦੋਹਾਂ ਵਿਚੋਂ ਕੋਈ ਵੀ ਦੋਹਾਂ ਲਈ ਕੰਮ ਕਰ ਸਕਦਾ ਸੀ ;-)