Algoritma pencari laluan adalah salah satu algoritma yang biasa digunakan dalam bidang grafik komputer dan kecerdasan buatan, digunakan untuk mengira laluan terpendek atau laluan optimum dari satu titik ke titik lain. Dalam artikel ini, saya akan memperkenalkan secara terperinci dua algoritma pencarian laluan yang biasa digunakan: algoritma Dijkstra dan algoritma A*
Algoritma Dijkstra ialah kaedah keluasan yang digunakan untuk mencari laluan terpendek antara dua titik yang diprioritkan dalam graf algoritma carian. Ia berfungsi seperti berikut:
Kita perlu mencipta set S untuk menyimpan bucu yang telah menemui laluan terpendek
Kita perlu mencipta set Q untuk menyimpan bucu yang belum menemui laluan terpendek
Dalam pemulaan Apabila menggunakan dist tatasusunan jarak, anda perlu menetapkan jarak dari titik permulaan ke titik lain kepada infiniti, dan jarak dari titik permulaan ke dirinya sendiri kepada 0
Ulang langkah berikut sehingga set Q kosong:
Akhir sekali, tatasusunan dist menyimpan laluan terpendek dari titik permulaan ke setiap bucu
Berikut ialah kod sumber algoritma Dijkstra yang ditulis dalam C#:
rreeeAlgoritma ialah algoritma carian heuristik yang digunakan untuk mencari laluan terpendek antara dua titik dalam graf. Idea algoritma adalah seperti berikut:
Buat baris gilir keutamaan openSet untuk menyimpan bucu yang akan diterokai
Kita perlu mencipta tatasusunan bernama gScore untuk menyimpan kos sebenar dari titik permulaan kepada setiap vertex
Kita perlu mencipta tatasusunan bernama fScore untuk menyimpan anggaran kos dari titik permulaan ke titik sasaran
Tambahkan titik permulaan pada openSet, tetapkan gScore[start] kepada 0 dan tetapkan fScore[start ] untuk memulakan Anggaran kos dari titik mula ke titik sasaran
Ulang langkah berikut sehingga openSet kosong:
Jika openSet kosong, ini bermakna titik sasaran tidak boleh dicapai, dan nilai nol dikembalikan
Berikut ialah kod sumber algoritma A* yang ditulis dalam Java:
class DijkstraAlgorithm { private int[,] graph; private int size; public DijkstraAlgorithm(int[,] graph) { this.graph = graph; this.size = graph.GetLength(0); } public int[] FindShortestPath(int start, int end) { int[] dist = new int[size]; bool[] visited = new bool[size]; for (int i = 0; i <span><br> Di atas ialah perbandingan algoritma Dijkstra dan A* Pengenalan terperinci kepada algoritma, termasuk idea algoritma, proses dan kod sumber yang dilaksanakan dalam C# atau Java. Kedua-dua algoritma adalah algoritma pencari laluan yang biasa digunakan dan boleh dipilih dan digunakan mengikut keperluan khusus. </span>Sudah tentu, di bandar hari ini, perisian navigasi boleh merancang sesuatu untuk kita. 🎜
Atas ialah kandungan terperinci Bincangkan analisis perancangan laluan algoritma pencarian laluan dan pelaksanaan kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!