Saya mencoba membuat grafik yang diarahkan secara acak untuk tujuan membuat game puzzle yang mirip dengan teka-teki luncur es dari Pokemon.
Ini pada dasarnya adalah apa yang ingin saya hasilkan secara acak: http://bulbanews.bulbagarden.net/wiki/Crunching_the_numbers:_Graph_theory .
Saya harus dapat membatasi ukuran grafik dalam dimensi x dan y. Dalam contoh yang diberikan dalam tautan, itu akan dibatasi ke kisi 8x4.
Masalah yang saya hadapi bukanlah menghasilkan grafik secara acak, tetapi menghasilkan grafik secara acak, yang dapat saya petakan dengan benar dalam ruang 2d, karena saya membutuhkan sesuatu (seperti batu) di sisi yang berlawanan dari sebuah simpul, untuk membuatnya secara visual masuk akal ketika Anda berhenti meluncur. Masalah dengan ini adalah bahwa kadang-kadang batu berakhir di jalur antara dua node lain atau mungkin pada node lain itu sendiri, yang menyebabkan seluruh grafik menjadi rusak.
Setelah membahas masalah tersebut dengan beberapa orang yang saya kenal, kami sampai pada beberapa kesimpulan yang mungkin mengarah pada solusi.
- Termasuk hambatan di grid sebagai bagian dari grafik saat membangunnya.
- Mulailah dengan kisi yang terisi penuh dan gambarkan jalur acak dan hapus blok yang akan membuat jalur itu berfungsi.
Masalahnya kemudian menjadi mencari tahu yang mana yang akan dihapus untuk menghindari memperkenalkan jalur tambahan yang lebih pendek. Kami juga berpikir algoritma pemrograman dinamis mungkin bermanfaat, meskipun tidak ada di antara kita yang terlalu terampil membuat algoritma pemrograman dinamis dari nol. Setiap ide atau referensi tentang apa masalah ini secara resmi disebut (jika ini merupakan masalah grafik resmi) akan sangat membantu.
Berikut adalah beberapa contoh dari apa yang telah saya capai sejauh ini dengan hanya menempatkan blok secara acak dan menghasilkan grafik navigasi dari awal / akhir yang dipilih. Idenya (seperti yang dijelaskan dalam tautan sebelumnya) adalah Anda mulai dari S hijau dan ingin sampai ke F. hijau. Anda melakukan ini dengan bergerak ke atas / bawah / kiri / kanan dan Anda terus bergerak ke arah yang dipilih sampai Anda menekan dinding. Dalam gambar-gambar ini, abu-abu adalah dinding, putih adalah lantai, dan garis ungu adalah panjang minimum dari awal hingga akhir, dan garis-garis hitam dan titik-titik abu-abu mewakili jalur yang mungkin.
Berikut adalah beberapa contoh grafik yang dihasilkan secara acak:
Berikut adalah beberapa contoh grafik yang dihasilkan secara acak (atau tweak tangan):
Saya juga sepertinya memperhatikan yang lebih menantang ketika benar-benar memainkan ini sebagai puzzle adalah puzzle yang memiliki banyak node tingkat tinggi di sepanjang jalur minimum.