נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
מדעי המחשב
RSS UnderWarrior Forums : RSS מדעי המחשב
נושא

נושא: אלגוריתם minimax

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
אלירן
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 23 February 2009 בשעה 16:52 | IP רשוּם
ציטוט אלירן

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

קראתי את המאמר באתר על בינה מלאכותית ולא הבנתי איך אני אפשר לממש את

האלגוריתם MINIMAX על הדמקה:

התחל מרמת העלים של עץ המשחק.

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

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

בסיום התהליך מסומן שורש העץ בסימון. זהו הערך הטוב ביותר שיכול השחקן להשיג במשחק

אם היריב משחק אופטימלית.

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

אופטימלי נקבל תוצאה טובה יותר.

 

מה הכוונה התחל מרמת העלים של המשחק? לא הבנתי איך ניתן לממש אתזה על דמקה.

אם אפשר הסבר קצת ספציפי לדמקה..

TNX

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

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 23 February 2009 בשעה 23:29 | IP רשוּם
ציטוט ניר

תראה את השרטוט של העץ כאן: http://en.wikipedia.org/wiki/Minimax
זה עונה לך?


__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
אלירן
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 February 2009 בשעה 00:40 | IP רשוּם
ציטוט אלירן

א. לא בדיוק הבנתי מה מייצגים המספרים..

ב.אם אתה יכול לתת הסבר ספציפי לדמקה+אלגוריתם מתאים, כי בכל האתרים ההסבר הוא כללי ולא הבנתי אותו...

תודה מראש

 

 

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 February 2009 בשעה 21:14 | IP רשוּם
ציטוט גד

נסה להבין...

קוד:
MinMax (GamePosition game)
{
    return MaxMove (game);
}
MaxMove (GamePosition game)
{
    if (GameEnded(game))
    {
        return EvalGameState(game);
    }
    else
    {
        best_move <- {};
        moves <- GenerateMoves(game);
        ForEach moves
        {
            move <- MinMove(ApplyMove(game));
            if (Value(move) > Value(best_move))
            {
               best_move <- move;
            }
        }
        return best_move;
    }
}
MinMove (GamePosition game)
{
    best_move <- {};
    moves <- GenerateMoves(game);
    ForEach moves
    {
       move <- MaxMove(ApplyMove(game));
       if (Value(move) > Value(best_move))
       {
          best_move <- move;
       }
    }
    return best_move;
}
]
חזרה לתחילת העמוד הצג את כרטיס החבר של גד חפש הודעות אחרות של גד בקר בדף הבית של גד
 
באתי לעזרת חבר
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 28 February 2009 בשעה 01:28 | IP רשוּם
ציטוט באתי לעזרת חבר

שלום,

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

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

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

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

לדוגמא בדמקה -
בניית העץ -
1. בשורש העץ מופיע מצב הלוח הנוכחי.
2. ניצור את כל המהלכים האפשריים לשחקן המלאכותי כבנים.
3. בעבור כל בן ניצור לו בנים שהם כל המהלכים האפשריים לשחקן היריב. 
4. נחזור על תהליך 2 ו-3 עד גובה קבוע מראש, או עד אשר אין יותר מהלכים לעשות.
הערכה -
1. נבצע הערכה ברמת העלים בלבד.
2. ברמה אחת מעלה כל אב לקבוצת עלים מסויימת הוא בחירה של השחקן היריב, לכן באופן רציונאלי הבחירה תעשה כרעה ביותר מבחינת השחקן המלאכותי. כלומר, הערך שיתקבל בכל אב יהיה זה הנמוך ביותר מבין בניו, ומכאן המיני.
3. כעת כל אב לקבוצת בנים הוא בחירה לשחקן המלאכותי, לכן יבחר הערך הגבוה ביותר מבין הבנים, ומפה המקס.
4. ממשיכים בצעדים 2-3 עד אשר מגיעים לשורש העץ.
בחירה -
בודקים מי מבין הבנים בעבע את ערכו אל שורש העץ ובוחרים בו כמהלך הכדאי ביותר.

זהו זה, פשוט וקל.

שיהיה בהצלחה.

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 28 February 2009 בשעה 01:40 | IP רשוּם
ציטוט באתי לעזרת חבר

תיקון טעות כתיבה, רמת העלים היא לא בתור של שחקן יריב אלא לאחר מהלך של שחקן יריב.

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 March 2010 בשעה 16:22 | IP רשוּם
ציטוט מור

שלום לכולם,

אולי תוכלו לעזור לי ולהסביר על אלגוריתם הMinMax אבל על איקס עיגול...

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

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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