Saya punya grafik dan dengan dengan yang lulus pemeriksaan kewarasan seperti lemma tanpa homomorfisme. Apakah ada alat gratis dan mudah digunakan untuk menguji homomorfisme grafik untuk ?
sumber
Saya punya grafik dan dengan dengan yang lulus pemeriksaan kewarasan seperti lemma tanpa homomorfisme. Apakah ada alat gratis dan mudah digunakan untuk menguji homomorfisme grafik untuk ?
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}
Salah satu pendekatan akan menggunakan solver SAT.
Memperkenalkan variabel boolean untuk setiap titik dari dan setiap titik dari . Intuisinya adalah itu akan benar jika peta homomorfisme . (Tentu saja, jika Anda memiliki kandidat set simpul yang lebih kecilbisa 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, tambahkan kendala
(Anda dapat mengonversikan ini ke 3CNF menggunakan transformasi Tseitin standar.)
Tambahkan beberapa klausa untuk mengharuskan setiap simpul dari peta ke tepat satu titik dari . Ada sejumlah metode standar untuk menyandikan batasan ini. Salah satu cara sederhana adalah, untuk setiap simpul, tambahkan klausa
dan klausa
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 adalah klik, whre telah 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.