Saya mendapatkan yang ini dari milis. Pemotretan * berbasiskan tepi, jadi ia berpindah dari tepi ke tepi sementara A * dan Dijkstra beralih dari titik ke titik. Dengan demikian Anda memerlukan struktur data yang menjaga semua tepi yang berdekatan untuk setiap tepi grafik Anda. Ini juga dapat dilakukan dengan membuat grafik garis (http://en.wikipedia.org/wiki/Line_graph) dari jaringan jalan asli Anda. Dan kemudian Anda dapat menetapkan biaya bagian ujung ke ujung (sebagai atribut khusus dari struktur tepi yang berdekatan atau sebagai biaya grafik garis) yang sebenarnya mewakili segala jenis batasan atau penalti untuk berpindah dari satu sisi ke sisi lainnya - seperti sebagai pembatasan belokan dalam kasus belokan atau jenis pembatasan lainnya seperti lampu lalu lintas. Dengan ini, Anda dapat menggunakan A * atau algoritma jalur terpendek lainnya menggunakan tepi sebagai simpul.
Jadi, itulah ide di balik Penembakan *.
Dan saya mendapatkan yang ini dari Anton Patrushev:
http://download.osgeo.org/pgrouting/forum/pgrouting.postlbs.org/discussion/topic/276.html . Anda menulis seperti ini: Di A * kami menggunakan sesuatu yang mirip dengan fungsi Manhattan (| Dx | + | Dy |) / 2 http://pgrouting.postlbs.org/browser/trunk/core/src/astar_boost_wrapper.cpp#L75
Di sana Anda akan melihat upaya lain dikomentari. Kami mencoba fungsi berbeda OK. Mungkin, itu alasan historis. fungsi heuristik dan untuk beberapa alasan (saya tidak ingat sekarang) memutuskan bahwa untuk jaringan jalan umum ini Dalam Pemotretan * kami menggunakan jarak Euclidian. http://pgrouting.postlbs.org/browser/trunk/core/src/shooting_star_boost_wrapper.cpp#L100 .
Rumus lain: - Jarak Euclidean> Sqrt (Dx² + Dy² + Dz²); - Manhattan jarak> | Dx | + | Dy | + | Dz | ; - Jarak maksimum> Max (| Dx |, | Dy |, | Dz |).
Saya masih tidak mengerti tentang semua. Teman, Bisakah Anda ceritakan secara singkat dan detail tentang proses pengambilan gambar algoritma bintang?