Algoritma Panelusuran Berbasis Negara (State-Based Search) ing Java

Algoritma Panelusuran Berbasis Negara minangka metode telusuran ing Java pemrograman sing kalebu nggawe lan ngliwati kahanan sing bisa ditindakake. Ing algoritma iki, kabeh kemungkinan kahanan masalah dituduhake minangka simpul ing grafik utawa spasi negara.

Cara Kerja Algoritma Panelusuran Berbasis Negara

Algoritma kasebut diwiwiti saka negara wiwitan lan nggunakake transformasi kanggo ngasilake negara anak. Saben negara sing mentas digawe dadi simpul ing grafik utawa spasi negara. Algoritma kasebut ngliwati negara kasebut, mriksa yen negara tujuan ana ing antarane. Yen ditemokake, algoritma mungkasi; digunakake, terus traversing liwat negara anak liyane.

Kaluwihan lan Kaluwihan Algoritma Panelusuran Berbasis Negara

Kaluwihan:

  • Exhaustive: Algoritma nduweni kemampuan kanggo nutupi kabeh kahanan masalah.
  • Versatile: Bisa ditrapake kanggo macem-macem jinis masalah.

Kekurangan:

  • Kemungkinan pengulangan: Ing sawetara kasus, algoritma bisa mbaleni traversal negara tartamtu.

Tuladha lan Panjelasan

Conto ilustrasi saka Algoritma Panelusuran Berbasis Negara yaiku nemokake dalan saka titik wiwitan menyang panggonan ing peta. Ayo ndeleng carane algoritma iki bisa digunakake:

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

Ing conto ing ndhuwur, kita nggunakake Algoritma Panelusuran Berbasis Negara kanggo nemokake dalan saka negara wiwitan menyang negara tujuan ing peta. Negara anak digawe kanthi nindakake tindakan sing bisa ditindakake saka kahanan saiki. Asil kasebut yaiku algoritma bakal nemokake dalan saka negara wiwitan menyang negara tujuan.