Miklix

Trình tạo mê cung thuật toán của Eller

Đã xuất bản: lúc 20:09:17 UTC 16 tháng 2, 2025
Cập nhật lần cuối: lúc 09:04:20 UTC 12 tháng 1, 2026

Công cụ tạo mê cung sử dụng thuật toán Eller để tạo ra một mê cung hoàn hảo. Thuật toán này rất thú vị vì nó chỉ yêu cầu lưu giữ hàng hiện tại (chứ không phải toàn bộ mê cung) trong bộ nhớ, do đó nó có thể được sử dụng để tạo ra những mê cung rất, rất lớn ngay cả trên các hệ thống có cấu hình rất hạn chế.

Trang này được dịch máy từ tiếng Anh để có thể tiếp cận được với nhiều người nhất có thể. Thật không may, dịch máy vẫn chưa phải là công nghệ hoàn thiện, do đó có thể xảy ra lỗi. Nếu bạn thích, bạn có thể xem phiên bản tiếng Anh gốc tại đây:

Eller's Algorithm Maze Generator

Thuật toán Eller là một thuật toán tạo mê cung hiệu quả, tạo ra các mê cung hoàn hảo (mê cung không có vòng lặp và chỉ có một đường đi giữa hai điểm bất kỳ) bằng cách tiếp cận từng hàng một. Nó tạo ra các mê cung tương tự như thuật toán Kruskal, nhưng chỉ tạo ra từng hàng một, mà không cần lưu trữ toàn bộ mê cung trong bộ nhớ. Điều này làm cho nó hữu ích để tạo ra các mê cung rất lớn trên các hệ thống có tài nguyên hạn chế và để tạo nội dung theo quy trình.

Một mê cung hoàn hảo là một mê cung mà chỉ có đúng một đường đi từ bất kỳ điểm nào trong mê cung đến bất kỳ điểm nào khác. Điều đó có nghĩa là bạn không thể đi vòng tròn, nhưng bạn sẽ thường gặp ngõ cụt, buộc bạn phải quay lại và quay trở lại.

Bản đồ mê cung được tạo ở đây bao gồm một phiên bản mặc định không có bất kỳ vị trí bắt đầu và kết thúc nào, vì vậy bạn có thể tự quyết định: sẽ có một giải pháp từ bất kỳ điểm nào trong mê cung đến bất kỳ điểm nào khác. Nếu bạn muốn có cảm hứng, bạn có thể bật vị trí bắt đầu và kết thúc được đề xuất - và thậm chí xem giải pháp giữa hai điểm đó.


Tạo mê cung mới








Giới thiệu về thuật toán Eller

Thuật toán Eller được giới thiệu bởi David Eller.

Thuật toán này nổi bật nhờ phương pháp tạo mê cung từng hàng một hiệu quả, lý tưởng cho các mê cung vô hạn hoặc mê cung được tạo ra trong thời gian thực. Nó thường được trích dẫn trong các tài liệu về tạo nội dung theo quy trình và tạo mê cung, nhưng tôi chưa tìm thấy nguồn tài liệu gốc nào nêu chi tiết về ấn phẩm ban đầu của nó.

Cách thuật toán Eller hoạt động để tạo mê cung

Thuật toán Eller xử lý từng hàng một, duy trì và sửa đổi các tập hợp ô được kết nối. Nó đảm bảo tính liên thông đồng thời tránh các vòng lặp và mở rộng mê cung xuống phía dưới một cách hiệu quả.

Về mặt lý thuyết, nó có thể được sử dụng để tạo ra các mê cung vô hạn, tuy nhiên, để đảm bảo rằng mê cung được tạo ra thực sự có thể giải được, cần phải chuyển sang logic "hàng cuối cùng" tại một thời điểm nào đó để hoàn thành mê cung.

Bước 1: Khởi tạo hàng đầu tiên

  • Gán cho mỗi ô trong hàng một mã định danh duy nhất.

Bước 2: Nối một số ô liền kề theo chiều ngang

  • Hợp nhất ngẫu nhiên các ô liền kề bằng cách gán cho chúng cùng một ID tập hợp. Điều này đảm bảo có các lối đi ngang.

Bước 3: Tạo kết nối dọc với hàng tiếp theo

  • Đối với mỗi tập hợp xuất hiện trong hàng, ít nhất một ô phải được kết nối xuống dưới (để đảm bảo tính liên thông).
  • Chọn ngẫu nhiên một hoặc nhiều ô từ mỗi nhóm để kết nối với hàng tiếp theo.

Bước 4: Chuyển sang hàng tiếp theo

  • Tiếp tục duy trì các kết nối dọc bằng cách gán cùng một ID tập hợp cho các ô tương ứng bên dưới.
  • Gán ID bộ dữ liệu mới cho bất kỳ ô nào chưa được gán.

Bước 5: Lặp lại các bước 2–4 cho đến khi hoàn thành hàng cuối cùng.

  • Tiếp tục xử lý từng hàng một.

Bước 6: Xử lý hàng cuối cùng

  • Hãy đảm bảo tất cả các ô trong hàng cuối cùng thuộc cùng một tập hợp bằng cách hợp nhất bất kỳ tập hợp riêng biệt nào còn lại.

Đọc thêm

Nếu bạn thích bài viết này, bạn cũng có thể thích những gợi ý sau:


Chia sẻ trên BlueskyChia sẻ trên FacebookChia sẻ trên LinkedInChia sẻ trên TumblrChia sẻ trên XChia sẻ trên LinkedInGhim trên Pinterest

Mikkel Christensen

Về tác giả

Mikkel Christensen
Mikkel là người sáng lập và chủ sở hữu của miklix.com. Ông có hơn 20 năm kinh nghiệm làm lập trình viên máy tính/nhà phát triển phần mềm chuyên nghiệp và hiện đang làm việc toàn thời gian cho một tập đoàn CNTT lớn của Châu Âu. Khi không viết blog, ông dành thời gian rảnh rỗi cho nhiều sở thích, thú vui và hoạt động, có thể được phản ánh ở một mức độ nào đó trong nhiều chủ đề được đề cập trên trang web này.