Miklix

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

פורסם: 16 בפברואר 2025 בשעה 20:09:35 UTC

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

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

Eller's Algorithm Maze Generator

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

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

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


צור מבוך חדש








על האלגוריתם של אלר

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

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

איך האלגוריתם של אלר עובד עבור דור מבוך

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

על המחבר

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