Membiarkan menjadi matriks. Kami mengatakan dua entri bertetangga jika berbatasan horizontal atau vertikal, dan kedua entri berbatasanini Seseorang ingin menemukan jumlah minimumuntuk ditambahkan, jadi setiap dapat mencapai yang lain melalui urutan tetangga.
Contoh:
100
000
001
Di sini kita perlu 3 :
100
100
111
Bagaimana kita dapat secara efisien menemukan jumlah minimum untuk ditambahkan, dan di mana?
algorithms
graph-theory
matrices
Chao Xu
sumber
sumber
Jawaban:
Jika Anda memodelkan masalah Anda dengan grafik, masalah Anda seperti masalah Steiner Tree :
Lihat di sini untuk definisi sesederhana mungkin.
Seperti yang Anda lihat itu adalah NPC pada umumnya, tetapi dalam kasus Anda grafik Anda adalah grafik kotak, mungkin Anda dapat menemukan solusi yang baik untuk itu, tetapi untuk contoh Anda saat ini (ketika terminal berada dalam batas) Anda dapat melihat pohon Steiner di kertas grafik grid .
Lagi pula ada heuristik yang sangat baik untuk masalah Steiner Tree, Anda dapat menerapkan pendekatan yang serupa dengan masalah Anda.
PS: Anda dapat mengasumsikan tetangga 1 adalah node yang terhubung, setelah itu Anda dapat mengontrak sisi-sisinya untuk membuat grafik baru, grafik baru yang Anda buat adalah planar, dan jika Anda dapat memecahkan Steiner Tree untuk itu Anda dapat menyelesaikan masalah Anda, tetapi mungkin ada solusi yang baik untuk masalah Anda yang independen dari Steiner Tree.
sumber