ממה שהבנתי, הבדיקה באוטומס הסופי הדטרמיניסטי מסתכלת על המספר האחרון שניתן לה, ומדפיסה True אם הוא זוגי וFalse אם הוא אי זוגי. לכן לא הבנתי למה באינפוט השלישי שמצורף בדוגמא התוכנה תדפיס false.
גם ההסבר של הדוגמא טוען שגם במקרה השני וגם במקרה השלישי הפונקציה מקבלת. האם יש טעות הקלדה? או שלא הבנתי משהו?
תודה מראש
Almog
אתה צודק זאת אכן טעות, היא מופיעה באשכול התיקונים של השבוע הרלוונטי
3 לייקים
asdfg199
תודה! ומכיוון שאני כבר בשוונג אשאל שאלה קצרה נוספת
ברשימת המעברים transitions לא מובן לי, מדוע יש בכלל את המצב הפותח q1. הרי אנחנו הגדרנו שהמצב ההתחלתי הוא q0. האם מדובר בניסיון “לכסות” את כול סוגי המעברים האפשריים, כאשר בפועל הקוד שאכתוב צריך לזרוק את המצב הזה לפח ולעבוד רק עם המצב ההתחלתי שהוגדר? אחלה יום!
Almog
מעתיקה מתוך ההסבר במחברת:
הפסקה השנייה תמיד תראה כך:
הפסקה תמיד תפתח במילה Transitions:, ואחריה רשימה של כללי מעבר.
כל כלל מעבר מורכב מהמצב ממנו יוצאים, המצב אליו מגיעים ומה הקלט ש"מפעיל" את המעבר.
השורה תכתב באופן הבא, כאשר X הוא המצב ממנו יוצאים, Z הוא המצב אליו מגיעים ו־Y היא רשימת הקלטים שמפעילה את מצב המעבר:
X: Y -> Z
לייק 1
asdfg199
למיטב הבנתי, תחת “start” בקובץ המצורף הגדרת שהמצב ההתחלתי הוא q0.
aviadamar
אוטומט סופי דטרמיניסטי - אומר שיש אפשרות מעבר אחת עבור קבוצת אותיות בשפה. (הכוונה שהיא שלמשל עבור 3 לא תוכלי לעבור לשני מצבים שונים אלא רק למצב אחד)
(המעברים מתבצעים עבור “אותיות” השפה של האוטומט במקרה הזה מספרים בין 0 ל 9 )
כלומר ברשימת המצבים יש לך עבור כל אות בשפה מצב מסויים - לאיזה מצב הוא עובר.
במקרה שלנו לq1 יש שתי אופציות של מעבר - עבור שתי קבוצות של מספרים.
כנל עבור q0 במקרה הזה.
המצב ההתחלתי במקרה הזה הוא אכן q0.
לייק 1
asdfg199
כןכן אחי אני מבין אותך, רק מה שלא הבנתי זה למה בקובץ הזה יש מצבים התחלתיים שמיוצגים כq1, (תחת transitions, שתי שורות אחרונות) הרי לפי ההגדרה שלנו המצב ההתחלתי הוא תמיד q0. ייתכן מאוד שהמטרה בtransitions היא לתת את כלל האפשרויות (עוד לפני שבחנו מה המצב ההתחלתי) ועלינו מוטלת החובה למיין ביניהם את מה שרלוונטי, אני רק רוצה לוודא שזו הסיבה.
תודה!
Almog
אוקיי הבנתי את הבעיה, אכן המצב ההתחלתי הוא q0 אבל ההתחלה של transitions לא מבטאת מצב התחלתי אלא מצב קיים
לייק 1
aviadamar
התאור של כל שורה בtransition בא לומר: באיזה מצב אני נמצא - עבור איזה סוג של קלט - אני מגיע למצב אחר.
כלומר העובדה שכתוב q1 בא לומר שמהמצב q1 עוברים למקום אחר עבור קלט מסויים.
אין קשר בין השורות בtransition למה מצב התחלתי.