['   \n  \n ["ਇੱਕ ਪਾਈਥਨ ਪ੍ਰੋਗਰਾਮ ਤਿਆਰ ਕਰੋ ਜਿਸਦਾ ਹੇਠ ਦਿੱਤਾ ਉਦੇਸ਼ ਹੈਃ \\n\\n ਪ੍ਰੋਗਰਾਮ ਦਾ ਉਦੇਸ਼ ਇੱਕ ਦਿੱਤੇ ਗਏ ਸਟਾਰਟ ਨੋਡ ਦੇ ਵਿਚਕਾਰ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ ਹੈ।ਅਤੇ ਇੱਕ ਵਜ਼ਨ ਗ੍ਰਾਫ ਵਿੱਚ ਇੱਕ ਮੰਜ਼ਿਲ ਨੋਡ, ਇੱਕ ਫਿਬੋਨਾਚੀ ਹੀਪ ਡਾਟਾ ਸਟ੍ਰਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ। \\n\\n ਪ੍ਰੋਗਰਾਮ ਲੱਭਣ ਲਈ ਸਭ ਤੋਂ ਛੋਟਾ _ ਪਾਥ _ ਲੰਬਾਈ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈਸਟਾਰਟ ਨੋਡ ਅਤੇ ਮੰਜ਼ਿਲ ਨੋਡ ਦੇ ਵਿਚਕਾਰ ਸਭ ਤੋਂ ਛੋਟੀ ਮਾਰਗ ਲੰਬਾਈ। ਇਹ ਇੱਕ ਫਿਬੋਨਾਚੀ ਢੇਰ (ਅਣਜਾਣ _ ਅੰਕ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ) ਨੂੰ ਕਾਇਮ ਰੱਖ ਕੇ ਅਜਿਹਾ ਕਰਦਾ ਹੈ।ਨੋਡਾਂ ਦੇ ਜੋਡ਼ੇ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਅਨੁਸਾਰੀ ਦੂਰੀਆਂ ਰੱਖਣ ਵਾਲੇ. ਪ੍ਰਾਪਤ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਇੱਕ ਦਿੱਤੇ ਗਏ ਨੋਡ ਅਤੇ ਟੀਚੇ ਦੇ ਵਿਚਕਾਰ ਦੀ ਦੂਰੀ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।ਫਿਬੋਨਾਚੀ ਢੇਰ ਤੋਂ ਨੋਡ. \\n\\n ਸੰਮਿਲਿਤ _ ਜਾਂ _ ਅੱਪਡੇਟ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਫਿਬੋਨਾਚੀ ਢੇਰ ਵਿੱਚ ਇੱਕ ਨੋਡ ਦੀ ਦੂਰੀ ਨੂੰ ਪਾਉਣ ਜਾਂ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀਨੋਡ ਪਹਿਲਾਂ ਹੀ ਢੇਰ ਵਿੱਚ ਹੈ, ਅਤੇ ਜੇ ਇਹ ਹੈ, ਤਾਂ ਇਹ ਦੂਰੀ ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ। ਨਹੀਂ ਤਾਂ, ਇਹ ਨੋਡ ਨੂੰ ਆਪਣੀ ਦੂਰੀ ਦੇ ਨਾਲ ਢੇਰ ਵਿੱਚ ਪਾਉਂਦਾ ਹੈ। \\n\\n ਪ੍ਰੋਗਰਾਮਸ਼ੁਰੂਆਤੀ ਨੋਡ ਅਤੇ ਇਸ ਦੀ 0 ਦੀ ਦੂਰੀ ਨੂੰ ਫਿਬੋਨਾਚੀ ਢੇਰ ਵਿੱਚ ਧੱਕਣ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਇਹ ਫਿਰ ਵਾਰ-ਵਾਰ ਢੇਰ ਤੋਂ ਘੱਟੋ-ਘੱਟ ਦੂਰੀ ਅਤੇ ਨੋਡ ਨੂੰ ਪੌਪ ਕਰਦਾ ਹੈ।ਅਤੇ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਪੌਪਡ ਨੋਡ ਮੰਜ਼ਿਲ ਨੋਡ ਹੈ। ਜੇਕਰ ਇਹ ਹੈ, ਤਾਂ ਫੰਕਸ਼ਨ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੰਬਾਈ ਵਾਪਸ ਕਰਦਾ ਹੈ। \\n\\n ਜੇਕਰ ਮੰਜ਼ਿਲ ਨੋਡ ਨਹੀਂ ਹੈਪੌਪਡ ਨੋਡ, ਪ੍ਰੋਗਰਾਮ ਆਪਣੇ ਉੱਤਰਾਧਿਕਾਰੀਆਂ (ਗੁਆਂਢੀ ਨੋਡਾਂ) ਉੱਤੇ ਦੁਹਰਾਉਂਦਾ ਹੈ ਅਤੇ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਉਹਨਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਵੇਖਿਆ ਗਿਆ ਹੈ। ਜੇ ਨਹੀਂ, ਤਾਂ ਇਹ ਗਣਨਾ ਕਰਦਾ ਹੈਉੱਤਰਾਧਿਕਾਰੀ ਤੋਂ ਮੰਜ਼ਿਲ ਨੋਡ ਤੱਕ ਦੀ ਘੱਟੋ ਘੱਟ ਦੂਰੀ ਅਤੇ ਫਿਬੋਨਾਚੀ ਢੇਰ ਵਿੱਚ ਦੂਰੀ ਨੂੰ ਸ਼ਾਮਲ ਜਾਂ ਅਪਡੇਟ ਕਰਦਾ ਹੈ। \\n\\n ਪ੍ਰੋਗਰਾਮ ਵਾਪਸ ਕਰਦਾ ਹੈਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੰਬਾਈ ਜਦੋਂ ਮੰਜ਼ਿਲ ਨੋਡ ਲੱਭਿਆ ਜਾਂਦਾ ਹੈ, ਜਾਂ ਫਲੋਟ (\'inf\') ਜੇ ਕੋਈ ਮਾਰਗ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। ', "ਇੱਕ ਪਾਈਥਨ ਪ੍ਰੋਗਰਾਮ ਤਿਆਰ ਕਰੋ ਜਿਸਦਾ ਹੇਠ ਦਿੱਤਾ ਉਦੇਸ਼ ਹੈਃ ਪ੍ਰੋਗਰਾਮ ਦਾ ਉਦੇਸ਼ ਇੱਕ ਦਿੱਤੇ ਗਏ ਸਟਾਰਟ ਨੋਡ ਅਤੇ ਇੱਕ ਦੇ ਵਿਚਕਾਰ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ ਹੈ।ਵਜ਼ਨ ਗ੍ਰਾਫ ਵਿੱਚ ਮੰਜ਼ਿਲ ਨੋਡ, ਇੱਕ ਫਿਬੋਨਾਚੀ ਢੇਰ ਡਾਟਾ ਬਣਤਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ। ਪ੍ਰੋਗਰਾਮ ਸਭ ਤੋਂ ਛੋਟਾ _ ਪਾਥ _ ਲੰਬਾਈ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਸਭ ਤੋਂ ਛੋਟਾ ਲੱਭਿਆ ਜਾ ਸਕੇ।ਸਟਾਰਟ ਨੋਡ ਅਤੇ ਮੰਜ਼ਿਲ ਨੋਡ ਦੇ ਵਿਚਕਾਰ ਮਾਰਗ ਦੀ ਲੰਬਾਈ। ਇਹ ਇੱਕ ਫਿਬੋਨਾਚੀ ਢੇਰ (ਅਣਜਾਣ _ ਅੰਕ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ) ਨੂੰ ਕਾਇਮ ਰੱਖ ਕੇ ਅਜਿਹਾ ਕਰਦਾ ਹੈ।ਨੋਡਾਂ ਦੇ ਜੋਡ਼ੇ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਅਨੁਸਾਰੀ ਦੂਰੀਆਂ। ਪ੍ਰਾਪਤ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਦਿੱਤੇ ਗਏ ਨੋਡ ਅਤੇ ਟੀਚੇ ਵਾਲੇ ਨੋਡ ਦੇ ਵਿਚਕਾਰ ਦੀ ਦੂਰੀ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈਫਿਬੋਨਾਚੀ ਢੇਰ। ਸੰਮਿਲਿਤ _ ਜਾਂ _ ਅੱਪਡੇਟ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਫਿਬੋਨਾਚੀ ਢੇਰ ਵਿੱਚ ਇੱਕ ਨੋਡ ਦੀ ਦੂਰੀ ਨੂੰ ਪਾਉਣ ਜਾਂ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਨੋਡ ਹੈਪਹਿਲਾਂ ਹੀ ਢੇਰ ਵਿੱਚ ਹੈ, ਅਤੇ ਜੇ ਇਹ ਹੈ, ਤਾਂ ਇਹ ਦੂਰੀ ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ। ਨਹੀਂ ਤਾਂ, ਇਹ ਢੇਰ ਵਿੱਚ ਆਪਣੀ ਦੂਰੀ ਦੇ ਨਾਲ ਨੋਡ ਪਾਉਂਦਾ ਹੈ। ਪ੍ਰੋਗਰਾਮ ਇਸ ਤਰ੍ਹਾਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈਸ਼ੁਰੂਆਤੀ ਨੋਡ ਅਤੇ ਇਸ ਦੀ 0 ਦੀ ਦੂਰੀ ਨੂੰ ਫਿਬੋਨਾਚੀ ਢੇਰ ਵਿੱਚ ਧੱਕਣਾ। ਇਹ ਫਿਰ ਵਾਰ-ਵਾਰ ਢੇਰ ਤੋਂ ਘੱਟੋ ਘੱਟ ਦੂਰੀ ਅਤੇ ਨੋਡ ਨੂੰ ਪੌਪ ਕਰਦਾ ਹੈ ਅਤੇਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਪੌਪਡ ਨੋਡ ਮੰਜ਼ਿਲ ਨੋਡ ਹੈ। ਜੇ ਇਹ ਹੈ, ਤਾਂ ਫੰਕਸ਼ਨ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੰਬਾਈ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜੇ ਮੰਜ਼ਿਲ ਨੋਡ ਪੌਪਡ ਨਹੀਂ ਹੈਨੋਡ, ਪ੍ਰੋਗਰਾਮ ਆਪਣੇ ਉੱਤਰਾਧਿਕਾਰੀਆਂ (ਗੁਆਂਢੀ ਨੋਡਾਂ) ਉੱਤੇ ਦੁਹਰਾਉਂਦਾ ਹੈ ਅਤੇ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਉਹਨਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਵੇਖਿਆ ਗਿਆ ਹੈ। ਜੇ ਨਹੀਂ, ਤਾਂ ਇਹ ਘੱਟੋ ਘੱਟ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈਉੱਤਰਾਧਿਕਾਰੀ ਤੋਂ ਮੰਜ਼ਿਲ ਨੋਡ ਤੱਕ ਦੀ ਦੂਰੀ ਅਤੇ ਫਿਬੋਨਾਚੀ ਢੇਰ ਵਿੱਚ ਦੂਰੀ ਨੂੰ ਸ਼ਾਮਲ ਜਾਂ ਅਪਡੇਟ ਕਰਦਾ ਹੈ। ਪ੍ਰੋਗਰਾਮ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਵਾਪਸ ਕਰਦਾ ਹੈਲੰਬਾਈ ਜਦੋਂ ਮੰਜ਼ਿਲ ਨੋਡ ਲੱਭਿਆ ਜਾਂਦਾ ਹੈ, ਜਾਂ ਫਲੋਟ ('inf') ਜੇ ਕੋਈ ਮਾਰਗ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। \n "]