(Greedy Algorithm) ਵਿੱਚ ਲਾਲਚੀ ਐਲਗੋਰਿਦਮ Java: ਉਦਾਹਰਣਾਂ ਨਾਲ ਸਮਝਾਇਆ ਗਿਆ

ਗ੍ਰੀਡੀ ਐਲਗੋਰਿਦਮ Java ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਵਿੱਚ ਇੱਕ ਅਨੁਕੂਲਨ ਤਕਨੀਕ ਹੈ ਜੋ ਭਵਿੱਖ ਨੂੰ ਮੁੜ ਵਿਚਾਰੇ ਜਾਂ ਵਿਚਾਰੇ ਬਿਨਾਂ ਹਰੇਕ ਪੜਾਅ 'ਤੇ ਸਭ ਤੋਂ ਵਧੀਆ ਹੱਲ ਚੁਣ ਕੇ ਦਰਸਾਈ ਗਈ ਹੈ। ਪੂਰੇ ਸਟੇਟ ਸਪੇਸ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਬਜਾਏ, ਇਹ ਅਲਗੋਰਿਦਮ ਸਭ ਤੋਂ ਵਧੀਆ ਮੌਜੂਦਾ ਵਿਕਲਪ ਚੁਣਦਾ ਹੈ ਅਤੇ ਉਮੀਦ ਕਰਦਾ ਹੈ ਕਿ ਇਹ ਇੱਕ ਗਲੋਬਲ ਅਨੁਕੂਲ ਹੱਲ ਵੱਲ ਅਗਵਾਈ ਕਰੇਗਾ.

ਲਾਲਚੀ ਐਲਗੋਰਿਦਮ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ

  1. ਕਦਮ 1: ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ।

  2. ਕਦਮ 2: ਹਰੇਕ ਪੜਾਅ 'ਤੇ, ਐਲਗੋਰਿਦਮ ਮੁਲਾਂਕਣ ਫੰਕਸ਼ਨ ਦੇ ਅਧਾਰ 'ਤੇ ਉਪਲਬਧ ਵਿਕਲਪਾਂ ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਕਲਪ ਚੁਣਦਾ ਹੈ।

  3. ਕਦਮ 3: ਐਲਗੋਰਿਦਮ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਕਲਪ ਚੁਣ ਕੇ ਇੱਕ ਨਵੀਂ ਸਥਿਤੀ ਵਿੱਚ ਜਾਂਦਾ ਹੈ।

  4. ਕਦਮ 4: ਪ੍ਰਕਿਰਿਆ ਉਦੋਂ ਤੱਕ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਸਮਾਪਤੀ ਦੀ ਸ਼ਰਤ ਪੂਰੀ ਨਹੀਂ ਹੋ ਜਾਂਦੀ ਜਾਂ ਚੁਣਨ ਲਈ ਕੋਈ ਹੋਰ ਵਿਕਲਪ ਨਹੀਂ ਹੁੰਦੇ।

  5. ਕਦਮ 5: ਲੱਭਿਆ ਹੱਲ ਵਾਪਸ ਕਰੋ।

ਲਾਲਚੀ ਐਲਗੋਰਿਦਮ ਦੇ ਫਾਇਦੇ ਅਤੇ ਨੁਕਸਾਨ

ਲਾਭ:

  • ਸਾਦਗੀ: ਸਮਝਣ ਅਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਆਸਾਨ.
  • ਕੁਸ਼ਲਤਾ: ਅਕਸਰ ਕੁਝ ਹੋਰ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਐਲਗੋਰਿਦਮ ਦੇ ਮੁਕਾਬਲੇ ਘੱਟ ਗਣਨਾ ਸਮਾਂ ਅਤੇ ਮੈਮੋਰੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
  • ਸਬ-ਅਨੁਕੂਲ ਸਮੱਸਿਆਵਾਂ ਲਈ ਆਦਰਸ਼: ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਲਈ ਉਚਿਤ ਹੈ ਜਿੱਥੇ ਸਾਰੀਆਂ ਸੰਭਾਵਨਾਵਾਂ 'ਤੇ ਵਿਚਾਰ ਕਰਨਾ ਬਹੁਤ ਗੁੰਝਲਦਾਰ ਹੈ।

ਨੁਕਸਾਨ:

  • ਕੋਈ ਗਲੋਬਲ ਅਨੁਕੂਲ ਗਾਰੰਟੀ ਨਹੀਂ: ਐਲਗੋਰਿਦਮ ਗਲੋਬਲ ਸਰਵੋਤਮ ਨੂੰ ਲੱਭੇ ਬਿਨਾਂ ਇੱਕ ਸਥਾਨਕ ਅਨੁਕੂਲ ਹੱਲ 'ਤੇ ਰੁਕ ਸਕਦਾ ਹੈ।
  • ਦੂਰਦਰਸ਼ਿਤਾ ਦੀ ਘਾਟ: ਐਲਗੋਰਿਦਮ ਅਕਸਰ ਪਿਛਲੇ ਫੈਸਲਿਆਂ ਦੇ ਨਤੀਜਿਆਂ 'ਤੇ ਵਿਚਾਰ ਨਹੀਂ ਕਰਦਾ ਹੈ।

ਉਦਾਹਰਨ ਅਤੇ ਵਿਆਖਿਆ

ਲਾਲਚੀ ਐਲਗੋਰਿਦਮ ਦੀ ਇੱਕ ਆਮ ਉਦਾਹਰਣ "Kth ਸਭ ਤੋਂ ਵੱਡਾ ਤੱਤ" ਸਮੱਸਿਆ ਨੂੰ ਲੱਭ ਰਹੀ ਹੈ। ਆਓ ਦੇਖੀਏ ਕਿ ਇਹ ਐਲਗੋਰਿਦਮ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:

import java.util.Arrays;  
  
public class GreedyAlgorithmExample {  
    static int findKthLargest(int[] nums, int k) {  
        Arrays.sort(nums); // Sort the array  
        return nums[nums.length- k]; // Return the kth largest element  
    }  
  
    public static void main(String[] args) {  
        int[] nums = {3, 1, 2, 4, 5};  
        int k = 2;  
        int result = findKthLargest(nums, k);  
        System.out.println("The " + k + "th largest element is: " + result);  
    }  
}  

ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ ਪੂਰਨ ਅੰਕਾਂ ਦੀ ਇੱਕ ਲੜੀ ਵਿੱਚ ਦੂਜਾ ਸਭ ਤੋਂ ਵੱਡਾ ਤੱਤ ਲੱਭਣ ਲਈ ਲਾਲਚੀ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਇਹ ਐਲਗੋਰਿਦਮ ਸਿਰਫ਼ ਐਰੇ ਨੂੰ ਕ੍ਰਮਬੱਧ ਕਰਦਾ ਹੈ ਅਤੇ kth ਸਭ ਤੋਂ ਵੱਡਾ ਤੱਤ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਹਾਲਾਂਕਿ ਇਹ ਗਲੋਬਲ ਸਰਵੋਤਮ ਹੋਣ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਹੈ, ਇਹ ਇਸ ਸਮੱਸਿਆ ਲਈ ਮੁਕਾਬਲਤਨ ਵਧੀਆ ਹੱਲ ਹੈ।