(State-Based Search) ਵਿੱਚ ਰਾਜ-ਅਧਾਰਿਤ ਖੋਜ ਐਲਗੋਰਿਦਮ Java

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

ਸਟੇਟ-ਬੇਸਡ ਖੋਜ ਐਲਗੋਰਿਦਮ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ

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

ਸਟੇਟ-ਅਧਾਰਿਤ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੇ ਫਾਇਦੇ ਅਤੇ ਨੁਕਸਾਨ

ਲਾਭ:

  • ਵਿਸਤ੍ਰਿਤ: ਐਲਗੋਰਿਦਮ ਵਿੱਚ ਸਮੱਸਿਆ ਦੀਆਂ ਸਾਰੀਆਂ ਸੰਭਵ ਸਥਿਤੀਆਂ ਨੂੰ ਕਵਰ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਹੈ।
  • ਬਹੁਮੁਖੀ: ਇਸ ਨੂੰ ਕਈ ਤਰ੍ਹਾਂ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਨੁਕਸਾਨ:

  • ਦੁਹਰਾਉਣ ਦੀ ਸੰਭਾਵਨਾ: ਕੁਝ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਐਲਗੋਰਿਦਮ ਕੁਝ ਰਾਜਾਂ ਦੇ ਟਰਾਵਰਸਲ ਨੂੰ ਦੁਹਰਾ ਸਕਦਾ ਹੈ।

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

ਸਟੇਟ-ਅਧਾਰਤ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੀ ਇੱਕ ਉਦਾਹਰਣ ਵਜੋਂ ਇੱਕ ਨਕਸ਼ੇ 'ਤੇ ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਬਿੰਦੂ ਤੋਂ ਇੱਕ ਮੰਜ਼ਿਲ ਤੱਕ ਇੱਕ ਮਾਰਗ ਲੱਭ ਰਿਹਾ ਹੈ. ਆਓ ਦੇਖੀਏ ਕਿ ਇਹ ਐਲਗੋਰਿਦਮ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:

import java.util.*;  
  
public class StateSearchExample {  
    static boolean isGoalState(State state, State goalState) {  
        return state.equals(goalState);  
    }  
  
    static void stateSearch(State initialState, State goalState) {  
        Queue<State> queue = new LinkedList<>();  
        Set<State> visited = new HashSet<>();  
  
        queue.add(initialState);  
        visited.add(initialState);  
  
        while(!queue.isEmpty()) {  
            State currentState = queue.poll();  
  
            if(isGoalState(currentState, goalState)) {  
                System.out.println("Found goal state: " + currentState);  
                return;  
            }  
  
            List<State> nextStates = currentState.generateNextStates();  
            for(State nextState: nextStates) {  
                if(!visited.contains(nextState)) {  
                    queue.add(nextState);  
                    visited.add(nextState);  
                }  
            }  
        }  
    }  
}  

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