Pada set data yang sangat besar seperti itu, untuk mendapatkan hasil yang begitu cepat, saya merasa lebih baik menggunakan struktur data union-find dengan kompresi jalur. Namun, jika Anda mencari untuk hanya menggunakan algoritma Djikstra dan mengoptimalkannya, itu tergantung pada informasi apa yang dimiliki masing-masing simpul dalam grafik. Kemungkinan besar Anda tidak perlu melakukan semua 1.500 kueri.
Sebagai contoh, perhatikan contoh berikut. Katakanlah saya mencoba untuk menemukan derajat pemisahan antara 2 aktor (nomor Bacon) dan saya ingin menemukan jalur yang paling tidak berbobot (jalur menggunakan film terbaru mungkin). Sekarang, katakanlah saya memiliki fungsi yang dipanggil shortestPath(actor A, actor B);
. Pertimbangkan skenario berikut.
Jika Aktor A telah berakting sejak tahun 1970 dan Aktor B telah berakting sejak tahun 2000, maka mengingat info itu, akan jauh lebih logis untuk menemukan jalur mulai dari film pertama dari Aktor B dan kemudian melintasi jalan Anda ke Aktor A. Sebagai menentang iterasi melalui setiap film yang diperankan oleh Aktor A.
Jadi, intinya adalah bahwa optimalisasi algoritma Djikstra benar-benar tergantung pada apa set data Anda. Anda perlu memberikan lebih banyak informasi tentang apa yang dibutuhkan set data Anda agar kami dapat membantu Anda mengoptimalkan algoritma Anda.
EDIT: Katakanlah Anda mencoba menemukan jalur terpendek antara 2 kota di negara yang sama dan jika negara ini lebih panjang daripada yang lebih luas, misalnya Argentina, maka Anda dapat melakukan kueri berdasarkan garis bujur dan garis lintang negara batas-batas. Kemudian Anda dapat mulai melintasi secara vertikal (menggunakan bujur) sebagai kebalikan dari horizontal. Ofc, perlu ada penanganan pengecualian, tetapi Anda mendapatkan ide umum.