Miklix

엘러의 알고리즘 미로 생성기

게시됨: 2025년 2월 16일 오후 7시 59분 51초 UTC

엘러 알고리즘을 사용하여 완벽한 미로를 만드는 미로 생성기. 이 알고리즘은 현재 행(전체 미로가 아님)만 메모리에 보관하면 되므로 매우 제한된 시스템에서도 매우 매우 큰 미로를 만드는 데 사용할 수 있어 흥미롭습니다.

이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:

Eller's Algorithm Maze Generator

엘러 알고리즘은 행별 접근 방식을 사용하여 완벽한 미로(루프가 없고 두 지점 사이에 단일 경로가 있는 미로)를 효율적으로 생성하는 미로 생성 알고리즘입니다. 크루스칼 알고리즘과 유사한 미로를 생성하지만, 전체 미로를 메모리에 저장할 필요 없이 한 번에 한 행만 생성하여 이를 수행합니다. 따라서 매우 제한된 시스템에서 매우 큰 미로를 생성하고 절차적 콘텐츠를 생성하는 데 유용합니다.

완벽한 미로는 미로의 어느 지점에서 다른 지점까지 정확히 하나의 경로가 있는 미로입니다. 즉, 빙글빙글 돌다가 막다른 골목에 부딪혀 돌아서서 되돌아가야 하는 경우가 종종 있습니다.

여기에서 생성된 미로 지도에는 시작과 끝 위치가 없는 기본 버전이 포함되어 있으므로 미로의 어느 지점에서든 다른 지점으로 가는 해답을 직접 결정할 수 있습니다. 영감을 얻고 싶다면 제안된 시작 및 종료 위치를 활성화하고 두 위치 사이의 해법도 확인할 수 있습니다.


새로운 미로 생성








엘러 알고리즘에 대하여

엘러 알고리즘은 데이비드 엘러가 소개했습니다.

이 알고리즘은 미로 생성에 대한 효율적인 행별 접근 방식으로 유명하여 무한 미로나 실시간으로 생성된 미로에 이상적입니다. 절차적 콘텐츠 생성 및 미로 생성 문헌에서 흔히 인용되지만, 원래 출판에 대한 자세한 내용을 설명하는 기본 출처를 찾을 수 없었습니다.

엘러 알고리즘이 미로 생성에 어떻게 적용되는가

엘러 알고리즘은 한 번에 한 행씩 처리하여 연결된 셀 세트를 유지하고 수정합니다. 루프를 피하면서 연결성을 보장하고 미로를 아래로 효율적으로 확장합니다.

이론적으로는 무한한 미로를 생성하는 데 사용할 수 있지만, 생성된 미로가 실제로 풀릴 수 있도록 하려면 어느 시점에서 "마지막 행" 논리로 전환하여 미로를 완료해야 합니다.

1단계: 첫 번째 행 초기화

  • 행의 각 셀에 고유한 세트 ID를 할당합니다.

2단계: 인접한 셀을 수평으로 결합

  • 인접한 셀을 동일한 세트 ID로 설정하여 무작위로 병합합니다. 이렇게 하면 수평 통로가 있는지 확인할 수 있습니다.

3단계: 다음 행에 대한 수직 연결 만들기

  • 행에 나타나는 각 세트에 대해 적어도 하나의 셀이 아래로 연결되어야 합니다(연결성을 보장하기 위해).
  • 각 집합에서 무작위로 하나 이상의 셀을 선택하여 다음 행에 연결합니다.

4단계: 다음 행으로 이동

  • 동일한 세트 ID를 아래의 해당 셀에 할당하여 수직 연결을 이어갑니다.
  • 할당되지 않은 셀에 새로운 세트 ID를 할당합니다.

5단계: 마지막 행에 도달할 때까지 2~4단계를 반복합니다.

  • 행별로 처리를 계속합니다.

6단계: 최종 행 처리

  • 나머지 별도 세트를 병합하여 마지막 행의 모든 셀이 동일한 세트에 속하도록 합니다.

블루스카이에서 공유하기페이스북에서 공유하기LinkedIn에서 공유하기Tumblr에 공유하기X에서 공유LinkedIn에서 공유하기Pinterest에 고정

미켈 방 크리스텐슨

저자 소개

미켈 방 크리스텐슨
남자 이름은 miklix.com의 창시자이자 소유자입니다. 전문 컴퓨터 프로그래머/소프트웨어 개발자로 20년 이상 경력을 쌓았으며 현재 유럽의 대형 IT 기업에서 정규직으로 근무하고 있습니다. 블로그를 운영하지 않을 때는 여가 시간을 다양한 관심사, 취미, 활동으로 보내며 이 웹사이트에서 다루는 다양한 주제에 어느 정도 반영되어 있습니다.