Miklix

Генератор на лавиринт на алгоритам на Елер

Објавено: 5 март 2025, во 19:51:21 UTC
Последно ажурирано: 12 јануари 2026, во 09:04:35 UTC

Генератор на лавиринти што го користи алгоритмот на Елер за да создаде совршен лавиринт. Овој алгоритам е интересен бидејќи бара само чување на тековниот ред (не целиот лавиринт) во меморијата, така што може да се користи за создавање многу, многу големи лавиринти дури и на многу ограничени системи.

Оваа страница беше машински преведена од англиски за да биде достапна за што повеќе луѓе. За жал, машинското преведување сè уште не е усовршена технологија, така што може да се појават грешки. Ако сакате, можете да ја видите оригиналната англиска верзија овде:

Eller's Algorithm Maze Generator

Елеровиот алгоритам е алгоритам за генерирање лавиринти кој ефикасно произведува совршени лавиринти (лавиринти без јамки и една патека помеѓу кои било две точки) користејќи пристап ред-по-ред. Тој произведува лавиринти слични на Крускаловиот алгоритам, но тоа го прави со генерирање само еден ред истовремено, без потреба од складирање на целиот лавиринт во меморијата. Тоа го прави корисен за генерирање многу големи лавиринти на многу ограничени системи и за генерирање процедурална содржина.

Совршен лавиринт е лавиринт во кој има точно една патека од која било точка во лавиринтот до која било друга точка. Тоа значи дека не можете да завршите да одите наоколу во кругови, но често ќе наидете на ќорсокак, што ќе ве принуди да се свртите и да се вратите назад.

Мапите на лавиринтот генерирани овде вклучуваат стандардна верзија без никакви позиции за почеток и крај, така што можете сами да ги решите тие: ќе има решение од која било точка во лавиринтот до која било друга точка. Ако сакате инспирација, можете да овозможите предложена почетна и завршна позиција - па дури и да го видите решението помеѓу двете.


Создадете нов лавиринт








За алгоритмот на Елер

Елеровиот алгоритам го воведе Дејвид Елер.

Алгоритмот е значаен по својот ефикасен пристап ред по ред кон генерирање лавиринти, што го прави идеален за бесконечни лавиринти или лавиринти генерирани во реално време. Често се цитира во литературата за генерирање процедурална содржина и генерирање лавиринти, но не бев во можност да најдам примарни извори што детално го опишуваат неговото оригинално објавување.

Како функционира алгоритмот на Елер за генерирање лавиринти

Алгоритмот на Елер обработува еден ред истовремено, одржувајќи и модифицирајќи множества поврзани ќелии. Тој обезбедува поврзаност, избегнувајќи јамки и ефикасно го проширува лавиринтот надолу.

Теоретски може да се користи за генерирање на бесконечни лавиринти, меѓутоа, за да се осигури дека генерираниот лавиринт е всушност решлив, потребно е во одреден момент да се премине на логиката на „последен ред“ за да се заврши лавиринтот.

Чекор 1: Иницијализирајте го првиот ред

  • Доделете на секоја ќелија во редот уникатен ID на множество.

Чекор 2: Спојте неколку соседни ќелии хоризонтално

  • Случајно спојувајте соседни ќелии со поставување на истиот ID на множество. Ова осигурува дека има хоризонтални пасажи.

Чекор 3: Креирајте вертикални врски со следниот ред

  • За секој сет што се појавува во редот, барем една ќелија мора да се поврзе надолу (за да се обезбеди поврзаност).
  • Случајно изберете една или повеќе ќелии од секој сет за да ги поврзете со следниот ред.

Чекор 4: Преминете на следниот ред

  • Продолжете ги вертикалните врски со доделување на истиот ID на множеството на соодветните ќелии подолу.
  • Доделете нови ID-а на множества на сите недоделени ќелии.

Чекор 5: Повторете ги чекорите 2–4 додека не се достигне последниот ред

  • Продолжете со обработка ред по ред.

Чекор 6: Обработка на последниот ред

  • Осигурајте се дека сите ќелии во последниот ред припаѓаат на истиот сет со спојување на сите преостанати одделни сетови.

Дополнително читање

Ако ви се допадна овој пост, можеби ќе ви се допаднат и овие предлози:


Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Кристенсен

За авторот

Микел Кристенсен
Микел е креатор и сопственик на miklix.com. Тој има над 20 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.