Masalah grafik isomorfisme untuk grafik berlabel

11

Dalam kasus grafik yang tidak berlabel, masalah grafik isomorfisme dapat diatasi dengan sejumlah algoritma yang berkinerja sangat baik dalam praktiknya. Artinya, meskipun waktu berjalan terburuk adalah eksponensial, biasanya ada waktu menjalankan polinomial.

Saya berharap bahwa situasinya serupa dalam kasus grafik berlabel. Namun, saya memiliki waktu yang sangat sulit untuk menemukan referensi yang mengusulkan algoritma "praktis efisien".

Catatan: Di sini, kami mensyaratkan bahwa isomorfisme mempertahankan label. Yaitu, isomorfisme antara dua istilah aljabar automata / proses terbatas akan menyiratkan bahwa automata / istilah pada dasarnya "sama dengan mengubah nama node".

Satu-satunya referensi yang saya temukan adalah yang ada di Wikipedia yang menyatakan bahwa masalah isomorfisme pada grafik berlabel dapat direduksi secara polinomi menjadi pada grafik biasa. Makalah yang mendasari, bagaimanapun, lebih banyak tentang teori kompleksitas daripada algoritma praktis.

Saya kehilangan sesuatu, atau apakah memang benar bahwa tidak ada algoritma "heuristik" yang efisien untuk memutuskan apakah dua grafik berlabel adalah isomorfik?

Setiap petunjuk atau referensi akan sangat bagus.

Maks
sumber
3
Akan menyenangkan untuk memberikan referensi ke artikel wikipedia dan kertas yang Anda temukan, untuk menyelamatkan kami dari masalah.
babou
1
Apa yang Anda maksud dengan isomorfisme yang "mempertahankan label"? Dalam konteks otomat, label vertex berbeda. Oleh karena itu, setiap isomorfisme sepele "mempertahankan label" dalam arti bahwa dua simpul dalam sumber yang memiliki label berbeda harus memiliki label berbeda dalam gambar, juga. Masalah itu identik dengan masalah isomorfisme grafik biasa. Jika maksud Anda isomorfisma harus memetakan titik ke satu dengan label yang sama, algoritme itu sepele ketika label titik selalu berbeda: cukup periksa bahwa peta identitas pada label adalah isomorfisme.
David Richerby
Jika Anda bermaksud mempertimbangkan kasus di mana beberapa simpul mungkin memiliki label yang sama dan gambar sebuah simpul harus memiliki label yang sama dengan yang asli, yang sering disebut sebagai isomorfisme antara grafik berwarna . Dalam hal ini, ada pengurangan sederhana untuk GI umum dengan mengganti warna dengan gadget. Anda mungkin bisa mendapatkan algoritma praktis yang layak dengan menerapkan gadget yang dipilih dengan cermat dan kemudian menggunakan algoritma GI standar.
David Richerby
Apakah Anda benar-benar tidak ingin menganggap dua digraf berlabel tepi sebagai isomorfik jika ada isomorfisma digraf biasa yang juga mempertahankan kelas label ekivalensi? Dalam contoh Anda, menganggap keduanya sebagai FA, bahasa yang diterima oleh dan S , walaupun berbeda (mungkin), benar-benar hanya gambar homorfik satu sama lain dengan pergantian a c , b d . SSac,bd
Rick Decker
4
Masalahnya adalah GI-sepele lengkap (cukup pilih grafik di mana semua tepi memiliki label yang sama). Untuk menunjukkan bahwa tidak lebih sulit daripada grafik isomorfisma, membangun 1: Peta 1 dari label untuk bilangan bulat ( Dan menambahkan di tengah-tengah setiap tepi diberi label dengan simbol s grafik lengkap pada g ( s ) simpul ( K g ( s )g:a1,b2,c3,...)sg(s)Kg(s)) ditambah simpul tambahan di sisi panah tepi. Grafik yang dihasilkan adalah isomorfik jika dan hanya jika automata asli adalah isomorfik.
Vor

Jawaban:

5

Anda mungkin tertarik dengan makalah ini:

Aidan Hogan: Skolemising Nodes Kosong sambil Memelihara Isomorfisme. WWW 2015: 430-440

Ini memiliki algoritma (berdasarkan Nauty) untuk menguji isomorfisme grafik RDF, yang pada dasarnya diarahkan grafik berlabel yang mungkin berisi label tetap. Algoritme memperhitungkan label untuk mempersempit ruang pencarian.

Jika Anda dapat merepresentasikan grafik berlabel input Anda sebagai grafik RDF, Anda dapat mencoba menggunakan paket perangkat lunak terkait " blabel" untuk menguji isomorfisma.

badroit
sumber
4

Saya menemukan bahwa algoritme tersebut termasuk dalam kategori algoritma k-dimensi Weisfeiler-Lehman, dan gagal dengan grafik biasa. Untuk lebih lanjut di sini:

http://dabacon.org/pontiff/?p=4148

Pos asli berikut:

Bertahun-tahun yang lalu, saya membuat algoritma yang sederhana dan fleksibel untuk masalah ini (grafik isomorfisme dengan label).

Saya menamainya "Powerhash", dan untuk membuat algoritma itu diperlukan dua wawasan. Yang pertama adalah algoritma grafik iterasi daya, juga digunakan dalam PageRank. Yang kedua adalah kemampuan untuk menggantikan fungsi langkah dalam iterasi daya dengan apa pun yang kita inginkan. Saya menggantinya dengan fungsi yang melakukan hal berikut pada setiap iterasi, dan untuk setiap node:

  • Urutkan hash (dari iterasi sebelumnya) dari simpul tetangga
  • Hash hash diurutkan disatukan
  • Ganti hash simpul dengan hash yang baru dihitung

Pada langkah pertama, hash sebuah node dipengaruhi oleh tetangga langsungnya. Pada langkah kedua, hash sebuah node dipengaruhi oleh lingkungan 2-hop darinya. Pada langkah ke-N, hash node akan dipengaruhi oleh lingkungan N-hop di sekitarnya. Jadi Anda hanya perlu melanjutkan menjalankan Powerhash untuk N = langkah-langkah graph_radius. Pada akhirnya, hash simpul pusat grafik akan dipengaruhi oleh seluruh grafik.

Untuk menghasilkan hash terakhir, urutkan hash simpul langkah terakhir dan menyatukannya. Setelah itu, Anda dapat membandingkan hash terakhir untuk menemukan apakah dua grafik isomorfik. Jika Anda memiliki label, kemudian tambahkan label (pada iterasi pertama) di hash internal yang Anda hitung untuk setiap node.

Untuk lebih lanjut tentang ini, Anda dapat melihat posting saya di sini:

https://plus.google.com/114866592715069940152/posts/fmBFhjhQcZF

Algoritma di atas diimplementasikan di dalam database relasional fungsional "madIS". Anda dapat menemukan kode sumber algoritme di sini:

https://github.com/madgik/madis/blob/master/src/functions/aggregate/graph.py

estama
sumber
Hanya peringatan bahwa algoritme Anda polinomial dan jika selesai, Anda baru saja memecahkan masalah terbuka lama di CS tentang GI yang ada di P. :) (Ada berbagai kasus di mana algoritme yang Anda gambarkan akan memberikan hasil positif palsu. .)
badroit
Algoritma ini perkiraan dan tentu saja tidak lengkap (saya katakan juga di posting blog). Alasan kerjanya adalah bahwa hash yang dibuatnya sangat besar, jadi dalam database jutaan bahkan grafik kemungkinan tabrakan hash positif palsu akan sangat kecil. Jika Anda berhasil menemukan kasus tabrakan hash positif palsu saya akan sangat tertarik untuk mengetahuinya. Alasannya (saat menggunakan hash kriptografi) adalah, Anda akan berhasil "memecah" fungsi hash kriptografis.
estama
Untuk menguraikan seberapa kecil kemungkinan tabrakan hash. Saya akan mempertimbangkan hash kriptografi 256bit lebih dari cukup untuk memastikan bahwa semua file yang berbeda di dunia tidak memiliki hash dengan nilai yang sama (git misalnya menggunakan SHA-1 yang 160 bit untuk menjamin itu). Hash dari Powerhash akan menjadi 128bits * graph_node_count (menggunakan hash MD5). Jadi praktis, Anda tidak akan pernah bisa membuat grafik yang cukup (di alam semesta ini) untuk menemukan tabrakan hash di antara mereka.
estama
1
Saya maksudkan algoritma Anda akan memberikan hasil positif palsu dengan asumsi tidak ada tabrakan hash. Banyak algoritma waktu polinomial telah diusulkan untuk isomorfisme grafik dalam literatur dan semuanya memberikan hasil positif palsu. Pertanyaan terkait di sini: cs.stackexchange.com/questions/50939/… .
badroit
1
Terima kasih atas diskusi. Dengan beberapa penelitian lebih lanjut saya telah menemukan bahwa algoritma di atas adalah dalam kategori k-dimensi Weisfeiler-Lehman, dan gagal dengan grafik biasa. Untuk lebih lanjut di sini: dabacon.org/pontiff/?p=4148
estama