Miklix

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

Објављено: 16. фебруар 2025. 20:39:12 UTC
Последње ажурирано: 12. јануар 2026. 09:04:32 UTC

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

Ова страница је машински преведена са енглеског како би била доступна што већем броју људи. Нажалост, машинско превођење још увек није усавршена технологија, тако да може доћи до грешака. Ако желите, можете погледати оригиналну енглеску верзију овде:

Eller's Algorithm Maze Generator

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

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

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


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








О Елеровом алгоритму

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

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

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

Елеров алгоритам обрађује један ред истовремено, одржавајући и мењајући скупове повезаних ћелија. Обезбеђује повезаност избегавајући петље и ефикасно проширује лавиринт надоле.

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

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

  • Доделите свакој ћелији у реду јединствени ИД скупа.

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

  • Насумично спојите суседне ћелије тако што ћете их поставити на исти ИД скупа. Ово осигурава да постоје хоризонтални пролази.

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

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

Корак 4: Пређите на следећи ред

  • Пренесите вертикалне везе тако што ћете доделити исти ИД скупа одговарајућим ћелијама испод.
  • Доделите нове ИД-ове скупова свим недодељеним ћелијама.

Корак 5: Понављајте кораке 2–4 док се не дође до последњег реда

  • Наставите са обрадом ред по ред.

Корак 6: Обрада последњег реда

  • Уверите се да све ћелије у последњем реду припадају истом скупу спајањем свих преосталих одвојених скупова.

Даље читање

Ако сте уживали у овом посту, можда ће вам се свидети и ови предлози:


Поделите на БлуескиПоделите на ФејсбукуДелите на ЛинкедИнуПодели на Тумблр-уПодели на КсДелите на ЛинкедИнуПин на Пинтерест-у

Миккел Цхристенсен

О аутору

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