Perangkat lunak untuk menguji homomorfisme grafik

8

Saya punya grafik Gk dan Hk dengan |V(Gk)|=|V(Hk)|2k=n2k dengan kNyang lulus pemeriksaan kewarasan seperti lemma tanpa homomorfisme. Apakah ada alat gratis dan mudah digunakan untuk menguji homomorfisme grafikG untuk H?

T ....
sumber

Jawaban:

7

Cara terbaik (dalam hal kemalasan) adalah dengan menggunakan alat Sage yang tersedia secara bebas yang memiliki dukungan terbaik untuk teori grafik.

Contoh

sage: G = graphs.PetersenGraph()
sage: G.has_homomorphism_to(graphs.CycleGraph(5))
False
sage: G.has_homomorphism_to(graphs.CompleteGraph(5))
{0: 0, 1: 1, 2: 0, 3: 1, 4: 2, 5: 1, 6: 0, 7: 2, 8: 2, 9: 1}
Jernej
sumber
5

Salah satu pendekatan akan menggunakan solver SAT.

Memperkenalkan variabel boolean xt,v untuk setiap titik t dari G dan setiap titik v dari H. Intuisinya adalah ituxt,v akan benar jika peta homomorfisme tv. (Tentu saja, jika Anda memiliki kandidat set simpul yang lebih keciltbisa memetakan ke - mungkin dipersempit menggunakan pertimbangan derajat atau kriteria lokal lainnya - maka Anda dapat mengurangi jumlah variabel boolean sesuai. Jenis preprocessing ini dapat meningkatkan efisiensi pendekatan ini secara signifikan.)

Selanjutnya, tambahkan dua jenis klausa / batasan:

  • Tambahkan beberapa klausa yang mengharuskan pemetaan ini membentuk homomorfisme grafik. Khususnya, untuk setiap sisi(t,u)E(G), tambahkan kendala

    (v,w)E(H)(xt,vxu,w).

    (Anda dapat mengonversikan ini ke 3CNF menggunakan transformasi Tseitin standar.)

  • Tambahkan beberapa klausa untuk mengharuskan setiap simpul t dari G peta ke tepat satu titik v dari H. Ada sejumlah metode standar untuk menyandikan batasan ini. Salah satu cara sederhana adalah, untuk setiap simpultV(G), tambahkan klausa

    vV(H)xt,v

    dan klausa

    v,wV(H)(¬xt,v¬xt,w).

Kemudian, Anda dapat menggunakan pemecah SAT standar apa pun. Saya tidak tahu seberapa baik itu akan berhasil dalam prakteknya, tetapi Anda bisa mencobanya dan melihat bagaimana hasilnya.


Dalam literatur penelitian, masalah grafik homomorfisme telah dipelajari secara ekstensif untuk grafik dengan sifat khusus (misalnya, di mana H adalah klik, whre Htelah terikat treewidth, dan sebagainya). Jika Anda mengetahui sesuatu yang istimewa tentang struktur grafik Anda, dimungkinkan untuk menemukan algoritma yang lebih baik untuk masalah Anda. Untuk grafik umum, masalah ini dikenal sebagai NP-hard.

DW
sumber