Algorithm ya Utafutaji Kulingana na Jimbo (State-Based Search) ndani Java

Kanuni ya Utafutaji Kulingana na Serikali ni mbinu ya utafutaji katika Java upangaji programu ambayo inahusisha kuunda na kupita katika hali zinazowezekana za tatizo. Katika algorithm hii, hali zote zinazowezekana za shida zinawakilishwa kama nodi kwenye grafu au nafasi ya serikali.

Jinsi Algorithm ya Utafutaji Kulingana na Jimbo Inafanya kazi

Algorithm huanza kutoka hali ya awali na hutumia mabadiliko kuunda hali za watoto. Kila hali mpya inayozalishwa inakuwa nodi katika grafu au nafasi ya serikali. Algorithm inapitia majimbo haya, kuangalia ikiwa hali ya lengo ni kati yao. Ikipatikana, algorithm inaisha; vinginevyo, inaendelea kupitia majimbo mengine ya watoto.

Manufaa na Hasara za Algorithm ya Utafutaji Kulingana na Jimbo

Manufaa:

  • Kikamilifu: Algorithm ina uwezo wa kufunika hali zote zinazowezekana za shida.
  • Inatofautiana: Inaweza kutumika kwa aina mbalimbali za matatizo.

Hasara:

  • Uwezekano wa kurudia: Katika baadhi ya matukio, algoriti inaweza kurudia msururu wa majimbo fulani.

Mfano na Ufafanuzi

Mfano wa kielelezo wa Kanuni ya Utafutaji Kulingana na Jimbo ni kutafuta njia kutoka mahali pa kuanzia hadi lengwa kwenye ramani. Wacha tuone jinsi algorithm hii inavyofanya kazi:

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);  
                }  
            }  
        }  
    }  
}  

Katika mfano ulio hapo juu, tunatumia Kanuni ya Utafutaji Kulingana na Jimbo kutafuta njia kutoka hali ya awali hadi hali ya lengo kwenye ramani. Majimbo ya watoto yanazalishwa kwa kufanya vitendo vinavyowezekana kutoka kwa hali ya sasa. Matokeo yake ni kwamba algorithm itapata njia kutoka hali ya kuanzia hadi hali ya lengo.