Miklix

Generator Labirin Pelacak Balik Rekursif

Diterbitkan: 16 Februari 2025 pukul 18.16.10 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 09.02.09 UTC

Generator labirin menggunakan algoritma backtracker rekursif untuk membuat labirin yang sempurna. Algoritma ini cenderung menciptakan labirin dengan koridor panjang dan berkelok-kelok serta solusi yang sangat panjang dan berbelit-belit.

Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

Recursive Backtracker Maze Generator

Algoritma backtracker rekursif sebenarnya adalah pencarian mendalam (depth-first search) serbaguna. Ketika digunakan untuk pembuatan labirin, algoritma ini sedikit dimodifikasi untuk memilih jalur secara acak, sedangkan jika digunakan untuk tujuan pencarian sebenarnya, biasanya setiap level akan dicari secara linear. Algoritma ini cenderung menghasilkan labirin dengan koridor panjang dan berliku-liku serta solusi yang sangat panjang dan berbelit-belit.

Labirin yang sempurna adalah labirin yang hanya memiliki satu jalan dari titik mana pun di dalam labirin ke titik lainnya. Itu berarti Anda tidak bisa berputar-putar, tetapi Anda akan sering menemui jalan buntu, memaksa Anda untuk berbalik dan kembali.

Peta labirin yang dibuat di sini termasuk versi default tanpa posisi awal dan akhir, sehingga Anda dapat menentukannya sendiri: akan ada solusi dari titik mana pun di dalam labirin ke titik lainnya. Jika Anda menginginkan inspirasi, Anda dapat mengaktifkan posisi awal dan akhir yang disarankan - dan bahkan melihat solusi di antara keduanya.


Membuat labirin baru








Algoritma backtracker rekursif adalah metode pencarian mendalam untuk menghasilkan labirin sempurna (labirin tanpa lingkaran dan hanya memiliki satu jalur antara dua titik). Algoritma ini sederhana, efisien, dan menghasilkan labirin yang menarik secara visual dengan koridor panjang dan berkelok-kelok.

Meskipun namanya demikian, metode ini tidak harus selalu diimplementasikan menggunakan rekursi. Metode ini sering diimplementasikan dengan pendekatan iteratif menggunakan antrian LIFO (yaitu tumpukan). Untuk labirin yang sangat besar, penggunaan rekursi lebih cenderung menyebabkan luapan tumpukan panggilan (call stack overflow), tergantung pada bahasa pemrograman dan memori yang tersedia. Antrian LIFO lebih mudah diadaptasi untuk menangani sejumlah besar data, bahkan menyimpan antrian di disk atau di basis data jika memori yang tersedia tidak mencukupi.


Cara Kerjanya

Algoritma ini beroperasi menggunakan pendekatan pencarian mendalam berbasis tumpukan (stack-based depth-first search). Berikut adalah uraian langkah demi langkahnya:

  1. Pilih sel awal dan tandai sebagai sel yang telah dikunjungi.
  2. Selama masih ada sel yang belum dikunjungi: Lihat sel-sel tetangga yang belum dikunjungi. Jika setidaknya ada satu tetangga yang belum dikunjungi: Pilih salah satu tetangga yang belum dikunjungi secara acak. Hapus dinding antara sel saat ini dan tetangga yang dipilih. Pindah ke tetangga yang dipilih dan tandai sebagai telah dikunjungi. Dorong sel saat ini ke tumpukan. Jika tidak ada tetangga yang belum dikunjungi: Lakukan penelusuran balik dengan mengeluarkan sel terakhir dari tumpukan.
  3. Lanjutkan proses ini hingga tumpukan kosong.

Fakta menarik tentang algoritma ini adalah bahwa ia berfungsi baik sebagai generator labirin maupun sebagai pemecah labirin. Jika Anda menjalankannya pada labirin yang sudah dibuat dan berhenti ketika mencapai titik akhir yang ditentukan, tumpukan akan berisi solusi untuk labirin tersebut.

Sebenarnya saya memiliki dua versi algoritma ini yang digunakan di situs ini: versi berbasis antrian LIFO untuk menghasilkan labirin di halaman ini dan versi berbasis rekursi untuk memecahkan labirin, termasuk labirin yang dihasilkan oleh algoritma lain (itulah cara peta dengan solusi dibuat). Memiliki dua versi berbeda hanya untuk bersenang-senang karena saya seorang kutu buku yang menganggapnya menarik, salah satunya bisa saja berfungsi untuk keduanya ;-)

Bacaan Lebih Lanjut

Jika Anda menikmati postingan ini, Anda mungkin juga menyukai saran berikut:


Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Christensen

Tentang Penulis

Mikkel Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.