Algoritma kanonisasi grafik sederhana

8

Saya mencari algoritme yang menyediakan string kanonik untuk grafik berwarna yang diberikan. Yaitu. sebuah algoritma yang mengembalikan string untuk grafik, sehingga dua grafik mendapatkan string yang sama jika dan hanya jika mereka isomorfik.

Secara khusus, saya mencari algoritma sederhana yang mudah diimplementasikan dengan kinerja yang masuk akal pada sebagian besar grafik (tentu saja kasus terburuk super-polinomial). Saya mengharapkan grafik kecil, jadi kinerja tidak harus menjadi bintang, cukup baik.

Sayangnya, sebagian besar hal yang saya temukan sangat kompleks dan lebih tertarik untuk mengekspresikan koneksi matematika yang mendalam daripada hanya menggambarkan algoritma. Saya khawatir saya tidak punya waktu untuk menyelam sedalam itu. Adakah yang bisa memberi saya jalan pintas?

Saya berharap untuk sesuatu seperti algoritma Floyd-Warshall. Tidak optimal, tetapi cukup baik, dan mudah diimplementasikan.

Peter
sumber
Apakah grafik diberi label secara konsisten? Jika ya, tuliskan semua tepinya dan urutkan daftar.
adrianN
Ah maaf. Verteks dan tepi diberi label, tetapi tidak unik. Setiap label dapat muncul beberapa kali. Saya kira kalimat matematika "berwarna" daripada berlabel. Saya akan mengedit pertanyaan.
Peter
"NP kasus terburuk, tentu saja" - hanya agar kami jelas: ada algoritma waktu polinomial (deterministik) yang dikenal untuk grafik-isomorfisme, sehingga yang terbaik yang dapat Anda harapkan adalah solusi super-polinomial. Dan ya, masalahnya ada di NP. Lihat di sini untuk perincian tentang pengertian ini.
Raphael
@ Raphael Anda benar, istilah yang lebih tidak tepat. Kasus terburuk adalah super-polinomial. Meskipun demikian, ada algoritma polinomial kasus-rata, sehingga setidaknya harus dapat dicapai.
Peter
@ Raphael Yang terbaik yang dapat Anda harapkan adalah algoritma cepat yang berfungsi untuk sebagian besar grafik.
Yuval Filmus

Jawaban:

3

Brendan McKay dan Adolfo Piperno telah menulis makalah survei tentang pertanyaan ini pada tahun 2013. Mereka menyajikan beberapa program komputer yang efisien yang mengkanonik banyak grafik lebih cepat daripada yang Anda bayangkan. Tidak perlu (dan tidak ada gunanya) dalam mengimplementasikan algoritma ini sendiri - mereka tersedia secara online, bahkan sebagai kode sumber.

Yuval Filmus
sumber
Ada pengurangan antara GI berwarna dan GI (dengan blowup multiplikasi konstan dengan jumlah warna konstan), atau mungkin algoritma itu sendiri dapat dimodifikasi.
Yuval Filmus
Bisakah Anda menggambarkannya di sini untuk memberikan jawaban lengkap?
Raphael
3
Untuk setiap warna, tambahkan simpul tambahan. Hubungkan setiap simpul asli ke simpul yang mewakili warnanya dengan menambahkan tepi. Pastikan derajat simpul "warna" unik - jika ini bukan masalahnya, tambahkan loop atau tepi palsu lainnya. Ngomong-ngomong, saya kurang senang tentang makalah survei McKay / Piperno - ini adalah survei penelitian mereka sendiri, dan perbandingan yang mereka buat dengan alat lain ada pada tolok ukur yang mereka anggap menarik. Mereka menghilangkan perkembangan penting baru-baru ini dan hampir semua tolok ukur berasal dari aplikasi non-teoritis, yang mempengaruhi hasil empiris.
Igor Markov
2

Saya akhirnya mengimplementasikan algoritma Nauty, tetapi dengan melakukannya, saya menemukan jawaban untuk pertanyaan saya sendiri. Nauty memperluas algoritma dasar ini dengan banyak heuristik rumit:

Diberikan grafik kecil G panjang n:

  1. Ulangi semua n! permutasi dari simpulnya.
  2. Hasilkan representasi string masing-masing (satu-ke-satu).
  3. Tetapkan beberapa urutan kanonik string, dan ingat string terkecil yang ditemui.

Algoritma ini adalah O(n!), tetapi untuk grafik kecil itu harus berfungsi dengan baik.

Nauty memperluas algoritma ini terutama dengan memangkas ruang pencarian grafik untuk dipertimbangkan, ketika mencari yang memiliki representasi string terkecil.

Peter
sumber
1
Grafik harus sangat kecil jika pendekatan brute-force ini masuk akal. Bahkan15! lebih besar dari 1012.
David Richerby
1
@ DavidRicherby Tentu Saja. Namun, ada kasus-kasus penggunaan, seperti analisis motif, di mana operasi ini hanya dilakukan pada grafik ukuran 3 atau 4. Bahkan, saya tidak tahu apakah menemukan subgraph isomorfik kanonik dapat dicapai dalam waktu yang wajar sama sekali untuk grafik lebih dari 15 node (bahkan jika isomorfisma subgraph itu sendiri sekarang dikenal sangat dekat dengan polinomial)
Peter