Saat ini saya sedang mengerjakan tesis master saya, dan ini tentang pengelompokan pada grafik. Saya bekerja dengan ide menggunakan semut untuk menyelesaikan masalah. Saat ini saya sedang mengerjakan implementasinya dan saya bertanya-tanya seberapa baik merepresentasikan tepi grafik.
Setiap sisi ditambah dengan informasi tertentu seperti nilai feromonnya dan berapa kali semut mengunjungi tepi itu. Saya akan bekerja dengan grafik tidak terarah, yang akhirnya menjadi sangat besar (lebih dari satu juta simpul) dan saya bertanya-tanya apa cara paling efisien bagi saya untuk menyimpan ujung-ujungnya dan mencarinya? Saya berpikir untuk tetap pada konvensi dan menyimpan titik akhir sesuai dengan yang memiliki id simpul lebih rendah untuk dan yang lebih tinggi untuk ( dan adalah titik akhir tepi dalam struktur data). Tapi saya bertanya-tanya bagaimana saya melakukan pencarian dalam kasus ini?
Ada pemetaan yang saya buat dari matriks adjacency ke array edge, tetapi itu hanya berfungsi jika grafik yang mendasarinya adalah grafik yang lengkap. Jadi saya datang ke sini untuk beberapa saran tentang bagaimana saya harus melanjutkan karena saya perlu pencarian saya menjadi efisien sementara pada saat yang sama saya tidak ingin meledakkan ruang penyimpanan untuk tepi karena grafik akan sangat besar.
Jawaban:
Jika grafik Anda jarang, maka Anda harus menyimpannya menggunakan "daftar" kedekatan, meskipun Anda mungkin menginginkan sesuatu yang lebih efisien daripada daftar (atau mungkin tidak, tergantung penggunaan). Ini paling sederhana jika Anda menyimpan setiap sisi di kedua titik akhir. Ini dapat diimplementasikan dalam banyak cara, misalnya Anda dapat menyimpan semua data dalam beberapa array besar, dan menyimpan hanya pointer di "daftar" kedekatan.
sumber