Miklix

מחולל מבוך אלגוריתם של אלר

פורסם: 16 בפברואר 2025 בשעה 20:09:35 UTC
עודכן לאחרונה: 12 בינואר 2026 בשעה 9:04:22 UTC

מחולל מבוך המשתמש באלגוריתם של אלר ליצירת מבוך מושלם. אלגוריתם זה מעניין מכיוון שהוא דורש רק שמירה על השורה הנוכחית (לא המבוך כולו) בזיכרון, כך שניתן להשתמש בו ליצירת מבוכים גדולים מאוד, אפילו במערכות מוגבלות מאוד.

עמוד זה תורגם במכונה מאנגלית על מנת להנגיש אותו לכמה שיותר אנשים. למרבה הצער, תרגום מכונה עדיין אינו טכנולוגיה משוכללת, ולכן עלולות להתרחש שגיאות. אם אתה מעדיף, תוכל לצפות בגרסה האנגלית המקורית כאן:

Eller's Algorithm Maze Generator

האלגוריתם של אלר הוא אלגוריתם ליצירת מבוכים המייצר ביעילות מבוכים מושלמים (מבוכים ללא לולאות ונתיב יחיד בין שתי נקודות) באמצעות גישת שורה-אחר-שורה. הוא מייצר מבוכים בדומה לאלגוריתם של קרוסקל, אך הוא עושה זאת על ידי יצירת שורה אחת בלבד בכל פעם, ללא צורך באחסון המבוך כולו בזיכרון. זה הופך אותו לשימושי ליצירת מבוכים גדולים מאוד במערכות מוגבלות מאוד וליצירת תוכן פרוצדורלי.

מבוך מושלם הוא מבוך שבו יש בדיוק נתיב אחד מכל נקודה במבוך לכל נקודה אחרת. זה אומר שאתה לא יכול בסופו של דבר להסתובב במעגלים, אבל לעתים קרובות תתקל במבוי סתום, מה שיאלץ אותך להסתובב ולחזור.

מפות המבוך שנוצרות כאן כוללות גרסת ברירת מחדל ללא כל עמדות התחלה וסיום, כך שתוכלו להחליט על אלו בעצמכם: יהיה פתרון מכל נקודה במבוך לכל נקודה אחרת. אם תרצו השראה, תוכלו לאפשר עמדת התחלה וסיום מוצעת - ואפילו לראות את הפתרון בין השניים.


צור מבוך חדש








אודות אלגוריתם אלר

אלגוריתם אלר הוצג על ידי דיוויד אלר.

האלגוריתם בולט בגישתו היעילה של יצירת מבוכים, שורה אחר שורה, מה שהופך אותו לאידיאלי עבור מבוכים אינסופיים או מבוכים שנוצרים בזמן אמת. הוא מצוטט בדרך כלל בספרות על יצירת תוכן פרוצדורלי ויצירת מבוכים, אך לא הצלחתי למצוא מקורות ראשוניים המפרטים את פרסומו המקורי.

כיצד אלגוריתם אלר עובד ליצירת מבוך

האלגוריתם של אלר מעבד שורה אחת בכל פעם, תוך שמירה ומשנה קבוצות של תאים מחוברים. הוא מבטיח קישוריות תוך הימנעות מלולאות, והוא מרחיב ביעילות את המבוך כלפי מטה.

תיאורטית ניתן להשתמש בו כדי ליצור מבוכים אינסופיים, אולם על מנת להבטיח שהמבוך שנוצר אכן ניתן לפתרון, יש צורך לעבור ללוגיקה של "השורה האחרונה" בשלב מסוים כדי לסיים את המבוך.

שלב 1: אתחול השורה הראשונה

  • הקצה לכל תא בשורה מזהה קבוצה ייחודי.

שלב 2: חברו כמה תאים סמוכים אופקית

  • מיזוג אקראי של תאים סמוכים על ידי הגדרתם לאותו מזהה קבוצה. פעולה זו מבטיחה שיהיו מעברים אופקיים.

שלב 3: יצירת חיבורים אנכיים לשורה הבאה

  • עבור כל קבוצה שמופיעה בשורה, לפחות תא אחד חייב להתחבר כלפי מטה (כדי להבטיח קישוריות).
  • בחרו באופן אקראי תא אחד או יותר מכל קבוצה כדי לחבר לשורה הבאה.

שלב 4: מעבר לשורה הבאה

  • המשיכו את החיבורים האנכיים על ידי הקצאת אותו מזהה קבוצה לתאים המתאימים למטה.
  • הקצה מזהי קבוצה חדשים לכל התאים שלא הוקצו.

שלב 5: חזור על שלבים 2-4 עד שתגיע לשורה האחרונה

  • המשך עיבוד שורה אחר שורה.

שלב 6: עיבוד השורה האחרונה

  • ודא שכל התאים בשורה האחרונה שייכים לאותה קבוצה על ידי מיזוג כל הקבוצות הנפרדות שנותרו.

קריאה נוספת

אם נהניתם מהפוסט הזה, אולי תאהבו גם את ההצעות הבאות:


שתפו בבלוסקישתפו בפייסבוקשתפו בלינקדאיןשתפו ב-Tumblrשתפו ב-Xשתפו בלינקדאיןהצמד בפינטרסט

מיקל כריסטנסן

על המחבר

מיקל כריסטנסן
מיקל הוא היוצר והבעלים של miklix.com. יש לו למעלה מ-20 שנות ניסיון כמתכנת מחשבים/מפתח תוכנה מקצועי וכיום הוא מועסק במשרה מלאה בתאגיד IT אירופאי גדול. כשהוא לא כותב בלוג, הוא מבלה את זמנו הפנוי במגוון עצום של תחומי עניין, תחביבים ופעילויות, שעשויים לבוא לידי ביטוי במידה מסוימת במגוון הנושאים המכוסים באתר זה.