Algoritma Carian Dinamik (Dynamic Search) dalam Java

Algoritma Carian Dinamik, juga dikenali sebagai Carian Adaptif, ialah teknik carian serba boleh dalam Java pengaturcaraan. Algoritma ini direka khusus untuk mengendalikan senario di mana data yang dicari kerap dikemas kini atau diubah suai.

Cara Algoritma Carian Dinamik Berfungsi

Algoritma Carian Dinamik mengekalkan struktur data dinamik, seperti pepohon seimbang atau jadual cincang, yang menyesuaikan diri dengan perubahan dalam data. Apabila elemen baharu ditambah atau elemen sedia ada dialih keluar, struktur data dikemas kini dalam masa nyata untuk memastikan carian yang cekap. Ini membolehkan operasi carian yang lebih pantas walaupun semasa data sedang berubah-ubah.

Kelebihan dan Kelemahan Algoritma Carian Dinamik

Kelebihan:

  • Penyesuaian Masa Nyata: Algoritma melaraskan struktur datanya kepada perubahan, memastikan prestasi carian optimum dalam senario data dinamik.
  • Kemas Kini Cekap: Data baharu boleh ditambah atau dialih keluar tanpa perlu membina semula keseluruhan struktur data.

Kelemahan:

  • Peningkatan Kerumitan: Melaksana dan mengurus struktur data dinamik boleh menjadi lebih kompleks daripada kaedah carian tradisional.
  • Overhed: Mengekalkan struktur data dinamik mungkin memperkenalkan overhed dari segi memori dan pemprosesan.

Contoh dan Penerangan

Mari kita pertimbangkan contoh menggunakan Algoritma Carian Dinamik untuk mencari perkataan dalam kamus yang kerap dikemas kini dengan perkataan baharu.

import java.util.HashMap;  
import java.util.Map;  
  
public class DynamicSearchExample {  
    public static void main(String[] args) {  
        Map<String, String> dictionary = new HashMap<>();  
        dictionary.put("apple", "a fruit");  
        dictionary.put("banana", "a tropical fruit");  
        dictionary.put("car", "a vehicle");  
  
        String searchWord = "banana";  
        if(dictionary.containsKey(searchWord)) {  
            String definition = dictionary.get(searchWord);  
            System.out.println(searchWord + ": " + definition);  
        } else {  
            System.out.println("Word not found in the dictionary");  
        }  
  
        // Update the dictionary  
        dictionary.put("apple", "a delicious fruit");  
        dictionary.remove("car");  
  
        // Search again  
        searchWord = "apple";  
        if(dictionary.containsKey(searchWord)) {  
            String definition = dictionary.get(searchWord);  
            System.out.println(searchWord + ": " + definition);  
        } else {  
            System.out.println("Word not found in the dictionary");  
        }  
    }  
}  

Dalam contoh ini, kami menggunakan a HashMap sebagai struktur data dinamik untuk menyimpan definisi perkataan. Memandangkan kamus dikemas kini dengan definisi baharu dan penyingkiran perkataan, ia HashMap melaraskan dirinya secara dinamik. Algoritma mencari perkataan tertentu dan memberikan definisinya. Apabila kamus diubah suai, algoritma menyesuaikan diri tanpa perlu membina semula keseluruhan struktur.

Ini menunjukkan cara Algoritma Carian Dinamik cekap mengendalikan perubahan data dengan menggunakan struktur data dinamik, membolehkan carian pantas dan adaptif dalam senario masa nyata.