['   \n  \n ["ਪ੍ਰੋਗਰਾਮ ਤਿਆਰ ਕਰੋ ਜਿਸ ਦਾ ਹੇਠ ਦਿੱਤਾ ਇਰਾਦਾ ਹੋਵੇਃ \\n\\n ਇਹ \'ਨਾਮ _ 1\' ਕਲਾਸ ਦੀ ਬਣਤਰ ਹੈਃ \\n" \\n ਕਲਾਸ ਨਾਮ _ 1: \\n ਡਿਫ _ _ ਇਨਿਟ _ (\\n ਸੈਲਫ, \\n)ਮੁੱਲ = ਕੋਈ ਨਹੀਂ, \\n ਉੱਤਰਾਧਿਕਾਰੀ = ਕੋਈ ਨਹੀਂ, \\n ਉੱਤਰਾਧਿਕਾਰੀ = [], \\n ਪੂਰਵਗਾਮੀ = [], \\n ਆਉਣ ਵਾਲੇ _ ਨੋਡਸ = [], \\n ਬਾਹਰ ਜਾਣ ਵਾਲੇ _ ਨੋਡਸ = [], \\n: \\n self.value = ਮੁੱਲ \\n self.successor= ਉੱਤਰਾਧਿਕਾਰੀ \\n self.successors = ਉੱਤਰਾਧਿਕਾਰੀ\\n self.predecessors = ਪੂਰਵਗਾਮੀ\\n self.incoming_nodes = ਆਉਣ ਵਾਲੇ _ ਨੋਡਸ\\n self.outgoing_nodes =ਆਊਟਗੋਇੰਗ _ ਨੋਡਸ \\n "\\n\\n ਤੁਹਾਡੇ ਦੁਆਰਾ ਦਿੱਤਾ ਗਿਆ ਪ੍ਰੋਗਰਾਮ ਡੂੰਘਾਈ-ਪਹਿਲੀ ਖੋਜ (ਡੀ. ਐੱਫ. ਐੱਸ.) ਐਲਗੋਰਿਦਮ ਦਾ ਇੱਕ ਸਧਾਰਨ ਲਾਗੂਕਰਨ ਹੈ। ਡੀ. ਐੱਫ. ਐੱਸ. ਇੱਕ ਗ੍ਰਾਫ ਟ੍ਰੈਵਰਸਲ ਹੈ।ਐਲਗੋਰਿਦਮ ਜੋ ਇੱਕ ਗ੍ਰਾਫ ਨੂੰ ਇੱਕ ਯੋਜਨਾਬੱਧ ਤਰੀਕੇ ਨਾਲ ਪਾਰ ਕਰਦਾ ਹੈ, ਅਗਲੇ ਵੱਲ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਨਾਮ _ 1 ਅਤੇ ਇਸਦੇ ਸਾਰੇ ਨਾਲ ਲੱਗਦੇ ਨੋਡਾਂ ਦੀ ਪਡ਼ਚੋਲ ਕਰਦਾ ਹੈ। ਇਰਾਦਾਪ੍ਰੋਗਰਾਮ ਦਾ ਇੱਕ ਦਿੱਤੇ ਗਏ ਸ਼ੁਰੂ ਤੋਂ ਇੱਕ ਮਾਰਗ ਲੱਭਣਾ ਹੈ ਨਾਮ _ 1 ਇੱਕ ਟੀਚੇ ਲਈ ਨਾਮ _ 1, ਜੇ ਇਹ ਮੌਜੂਦ ਹੈ. \\n\\n ਨਾਮ _ 1 ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਇੱਕ ਨਾਮ _ 1 ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈਗਰਾਫ਼, ਜਿਸ ਵਿੱਚ ਹਰੇਕ ਨਾਮ _ 1 ਦਾ ਇੱਕ ਮੁੱਲ, ਇੱਕ ਉੱਤਰਾਧਿਕਾਰੀ ਨਾਮ _ 1, ਅਤੇ ਉੱਤਰਾਧਿਕਾਰੀ ਨੋਡਾਂ ਦੀ ਇੱਕ ਸੂਚੀ ਹੁੰਦੀ ਹੈ।ਇੱਕ ਦਿੱਤਾ ਹੋਇਆ ਸਟਾਰਟ ਨਾਮ _ 1 ਇੱਕ ਟੀਚੇ ਲਈ ਨਾਮ _ 1. ਫੰਕਸ਼ਨ ਇੱਕ ਸੈੱਟ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕੇ ਕਿ ਕਿਹਡ਼ੇ ਨੋਡ ਪਹਿਲਾਂ ਹੀ ਵੇਖੇ ਜਾ ਚੁੱਕੇ ਹਨ, ਅਤੇ ਇਹ ਹਰੇਕ ਨੂੰ ਵਾਰ-ਵਾਰ ਖੋਜਦਾ ਹੈ।ਨਾਮ _ 1 ਦੇ ਉੱਤਰਾਧਿਕਾਰੀ ਜਦੋਂ ਤੱਕ ਇਹ ਟੀਚਾ ਨਾਮ _ 1 ਨਹੀਂ ਲੱਭ ਲੈਂਦੇ ਜਾਂ ਇਹ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰਦੇ ਕਿ ਕੋਈ ਮਾਰਗ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। \\n\\n ਪ੍ਰੋਗਰਾਮ ਦਾ ਇਰਾਦਾ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ ਹੈ।ਸ਼ੁਰੂ ਤੋਂ ਹੀ ਨਾਮ _ 1 ਤੋਂ ਲੈ ਕੇ ਟੀਚੇ ਤੱਕ ਨਾਮ _ 1 ਲਈ ਡੀ. ਐੱਫ. ਐੱਸ. ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਪ੍ਰੋਗਰਾਮ ਦੀ ਵਰਤੋਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਇੱਕ ਵਿੱਚ ਦੋ ਨੋਡਾਂ ਵਿਚਕਾਰ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ।ਗ੍ਰਾਫ, ਇੱਕ ਦਿੱਤੇ ਗਏ ਨਾਮ _ 1 ਤੋਂ ਗ੍ਰਾਫ ਵਿੱਚ ਹੋਰ ਸਾਰੇ ਨੋਡਾਂ ਲਈ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ, ਜਾਂ ਇੱਕ ਦਿੱਤੇ ਗਏ ਨਾਮ _ 1 ਤੋਂ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਲਈ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾਨਾਮ _ 1. \\n "] ', 'ਪ੍ਰੋਗਰਾਮ ਤਿਆਰ ਕਰੋ ਜਿਸ ਦਾ ਹੇਠ ਦਿੱਤਾ ਇਰਾਦਾ ਹੋਵੇਃ ਇਹ \'ਨਾਮ _ 1\' ਕਲਾਸ ਦੀ ਬਣਤਰ ਹੈਃ "ਕਲਾਸ ਨਾਮ _ 1: ਡਿਫ _ _ init _ (ਸਵੈ, ਮੁੱਲ = ਕੋਈ ਨਹੀਂ,ਉੱਤਰਾਧਿਕਾਰੀ = ਕੋਈ ਨਹੀਂ, ਉੱਤਰਾਧਿਕਾਰੀ = [], ਪੂਰਵਗਾਮੀ = [], ਆਉਣ ਵਾਲੇ _ ਨੋਡਸ = [], ਬਾਹਰ ਜਾਣ ਵਾਲੇ _ ਨੋਡਸ = [],): self.value = ਮੁੱਲ self.successor = ਉੱਤਰਾਧਿਕਾਰੀ self.successors= ਉੱਤਰਾਧਿਕਾਰੀ self.predecessors = ਪੂਰਵਗਾਮੀ self.incoming_nodes = ਆਉਣ ਵਾਲੇ _ ਨੋਡਸ self.outgoing_nodes = ਬਾਹਰ ਜਾਣ ਵਾਲੇ _ ਨੋਡਸ "" ਤੁਹਾਡੇ ਕੋਲ ਪ੍ਰੋਗਰਾਮ ਹੈ।ਦਿੱਤਾ ਗਿਆ ਡੂੰਘਾਈ-ਪਹਿਲੀ ਖੋਜ (ਡੀ. ਐੱਫ. ਐੱਸ.) ਐਲਗੋਰਿਦਮ ਦਾ ਇੱਕ ਸਧਾਰਨ ਲਾਗੂਕਰਨ ਹੈ। ਡੀ. ਐੱਫ. ਐੱਸ. ਇੱਕ ਗ੍ਰਾਫ ਟ੍ਰੈਵਰਸਲ ਐਲਗੋਰਿਦਮ ਹੈ ਜੋ ਇੱਕ ਗ੍ਰਾਫ ਵਿੱਚ ਇੱਕ ਗ੍ਰਾਫ ਨੂੰ ਪਾਰ ਕਰਦਾ ਹੈ।ਯੋਜਨਾਬੱਧ ਤਰੀਕੇ ਨਾਲ, ਅਗਲੇ \'ਤੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਨਾਮ _ 1 ਅਤੇ ਇਸ ਦੇ ਸਾਰੇ ਨਾਲ ਲੱਗਦੇ ਨੋਡਾਂ ਦੀ ਪਡ਼ਚੋਲ ਕਰਨਾ। ਪ੍ਰੋਗਰਾਮ ਦਾ ਉਦੇਸ਼ ਇੱਕ ਤੋਂ ਇੱਕ ਮਾਰਗ ਲੱਭਣਾ ਹੈਇੱਕ ਟੀਚੇ ਲਈ ਸ਼ੁਰੂ ਨਾਮ _ 1 ਦਿੱਤਾ ਗਿਆ ਹੈ, ਨਾਮ _ 1, ਜੇਕਰ ਇਹ ਮੌਜੂਦ ਹੈ। ਨਾਮ _ 1 ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਗ੍ਰਾਫ ਵਿੱਚ ਇੱਕ ਨਾਮ _ 1 ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਹਰੇਕ ਨਾਮ _ 1 ਦਾ ਇੱਕ ਮੁੱਲ ਹੁੰਦਾ ਹੈ, aਉੱਤਰਾਧਿਕਾਰੀ ਨਾਮ _ 1, ਅਤੇ ਉੱਤਰਾਧਿਕਾਰੀ ਨੋਡਾਂ ਦੀ ਸੂਚੀ। ਸਰਚ _ ਫਰੌਮ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਇੱਕ ਦਿੱਤੇ ਗਏ ਸ਼ੁਰੂ ਨਾਮ _ 1 ਤੋਂ ਇੱਕ ਟੀਚੇ ਨਾਮ _ 1 ਤੱਕ ਇੱਕ ਮਾਰਗ ਦੀ ਖੋਜ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।ਫੰਕਸ਼ਨ ਇਹ ਟਰੈਕ ਕਰਨ ਲਈ ਇੱਕ ਸੈੱਟ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਕਿ ਕਿਹਡ਼ੇ ਨੋਡ ਪਹਿਲਾਂ ਹੀ ਵੇਖੇ ਜਾ ਚੁੱਕੇ ਹਨ, ਅਤੇ ਇਹ ਹਰੇਕ NAME _ 1 ਦੇ ਉੱਤਰਾਧਿਕਾਰੀਆਂ ਦੀ ਵਾਰ-ਵਾਰ ਖੋਜ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਇਹ ਟੀਚਾ ਨਹੀਂ ਲੱਭ ਲੈਂਦਾਨਾਮ _ 1 ਜਾਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ ਕੋਈ ਮਾਰਗ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। ਪ੍ਰੋਗਰਾਮ ਦਾ ਉਦੇਸ਼ ਸ਼ੁਰੂ ਤੋਂ ਨਾਮ _ 1 ਤੋਂ ਟੀਚੇ ਨਾਮ _ 1 ਤੱਕ ਦਾ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ ਹੈ।ਡੀ. ਐੱਫ. ਐੱਸ. ਪ੍ਰੋਗਰਾਮ ਦੀ ਵਰਤੋਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਇੱਕ ਗਰਾਫ਼ ਵਿੱਚ ਦੋ ਨੋਡਾਂ ਵਿਚਕਾਰ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ, ਇੱਕ ਦਿੱਤੇ ਗਏ ਮਾਰਗ ਤੋਂ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ।ਗ੍ਰਾਫ ਵਿੱਚ ਹੋਰ ਸਾਰੇ ਨੋਡਾਂ ਲਈ ਨਾਮ _ 1, ਜਾਂ ਇੱਕ ਦਿੱਤੇ ਗਏ ਨਾਮ _ 1 ਤੋਂ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਨਾਮ _ 1 ਤੱਕ ਦਾ ਸਭ ਤੋਂ ਛੋਟਾ ਮਾਰਗ ਲੱਭਣਾ। \n ']