Miklix

Generator labiryntu algorytmów Wilsona

Opublikowano: 16 lutego 2025 19:33:12 UTC
Ostatnia aktualizacja: 12 stycznia 2026 09:03:21 UTC

Generator labiryntów wykorzystujący algorytm Wilsona do tworzenia idealnego labiryntu. Algorytm ten generuje wszystkie możliwe labirynty o danym rozmiarze z tym samym prawdopodobieństwem, więc teoretycznie może generować labirynty o wielu różnych układach. Ponieważ jednak istnieje więcej możliwych labiryntów z krótszymi korytarzami niż z dłuższymi, częściej będziesz je widzieć.

Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

Wilson's Algorithm Maze Generator

Algorytm Wilsona to metoda losowego spaceru z wymazaną pętlą, która generuje jednorodne drzewa rozpinające do tworzenia labiryntów. Oznacza to, że wszystkie możliwe labirynty o danym rozmiarze mają takie samo prawdopodobieństwo wygenerowania, co czyni ją nieobciążoną techniką generowania labiryntów. Algorytm Wilsona można uznać za ulepszoną wersję algorytmu Aldousa-Brodera, ponieważ generuje labirynty o identycznych cechach, ale działa znacznie szybciej, dlatego nie zawracałem sobie głowy implementacją algorytmu Aldousa-Brodera.

Idealny labirynt to labirynt, w którym istnieje dokładnie jedna ścieżka z dowolnego punktu w labiryncie do dowolnego innego punktu. Oznacza to, że nie można kręcić się w kółko, ale często napotyka się ślepe zaułki, które zmuszają do zawrócenia.

Wygenerowane tutaj mapy labiryntu zawierają domyślną wersję bez pozycji początkowej i końcowej, więc możesz sam o tym zdecydować: będzie rozwiązanie z dowolnego punktu w labiryncie do dowolnego innego punktu. Jeśli chcesz się zainspirować, możesz włączyć sugerowaną pozycję początkową i końcową - a nawet zobaczyć rozwiązanie między nimi.


Generowanie nowego labiryntu








O algorytmie Wilsona

Algorytm Wilsona służący do generowania jednorodnych drzew rozpinających przy użyciu losowej ściany wymazanej za pomocą pętli został stworzony przez Davida Bruce'a Wilsona.

Wilson po raz pierwszy wprowadził ten algorytm w 1996 roku, badając losowe drzewa rozpinające i łańcuchy Markowa w teorii prawdopodobieństwa. Chociaż jego praca dotyczyła głównie matematyki i fizyki statystycznej, algorytm ten został od tego czasu szeroko przyjęty do generowania labiryntów ze względu na jego zdolność do generowania idealnie jednorodnych labiryntów.

Jak działa algorytm Wilsona w generowaniu labiryntów

Algorytm Wilsona gwarantuje, że końcowy labirynt będzie w pełni połączony i pozbawiony pętli poprzez iteracyjne tworzenie ścieżek z nieodwiedzanych komórek za pomocą losowych spacerów.

Krok 1: Zainicjuj

  • Zacznij od siatki wypełnionej ścianami.
  • Zdefiniuj listę wszystkich możliwych komórek przejściowych.

Krok 2: Wybierz losową komórkę początkową

  • Wybierz dowolną komórkę i oznacz ją jako odwiedzoną. Będzie ona punktem początkowym labiryntu podczas generowania.

Krok 3: Spacer losowy z kasowaniem pętli

  • Wybierz nieodwiedzaną komórkę i rozpocznij losowy spacer (poruszając się w losowych kierunkach).
  • Jeżeli ścieżka dotrze do już odwiedzonej komórki, usuń wszelkie pętle na ścieżce.
  • Gdy ścieżka dotrze do odwiedzonego regionu, oznacz wszystkie komórki na ścieżce jako odwiedzone.

Krok 4: Powtarzaj, aż odwiedzisz wszystkie komórki:

  • Kontynuuj wybieranie nieodwiedzonych komórek i wykonuj losowe spacery, aż każda komórka będzie częścią labiryntu.

Dalsza lektura

Jeśli podobał Ci się ten wpis, mogą Cię zainteresować również poniższe sugestie:


Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Christensen

O autorze

Mikkel Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.