לדלג לתוכן

אוטומט סופי – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
מ בוט החלפות: חמישייה, \1ייתכן, \1על ידי
 
(27 גרסאות ביניים של 19 משתמשים אינן מוצגות)
שורה 1: שורה 1:
[[תמונה:Automat1.JPG|ממוזער|שמאל|250px| נורה כאוטומט סופי]]
[[קובץ:Automat1.JPG|ממוזער|250px| מנגנון [[ממשק משתמש|ממשק]] [[מפסק|מתג]] להדלקה וכיבוי של [[נורה חשמלית|נורה]] מתואר כאוטומט סופי (בייצוגו כ[[גרף מכוון]]).]]
בתורת ה[[חישוביות]] ב[[מדעי המחשב]], '''אוטומט סופי''' הוא [[מכונה מופשטת]] בעלת זיכרון מוגבל בגודלו המגדירה [[שפה פורמלית]] [[שפה רגולרית|רגולרית]].
בתורת ה[[חישוביות]] ב[[מדעי המחשב]], '''אוטומט סופי''' (או '''מכונת מצבים''') הוא [[מכונה מופשטת]] בעלת זיכרון מוגבל בגודלו, המגדירה [[שפה פורמלית]] [[שפה רגולרית|רגולרית]].


==הגדרה==
קיימים שני סוגים של אוטומטים סופיים – [[אוטומט סופי דטרמיניסטי]] (DFA –{{כ}} Deterministic Finite Automaton) ו[[אוטומט סופי לא דטרמיניסטי]] (NFA –{{כ}} Nondeterministic Finite Automaton).
קיימים שני סוגים של אוטומטים סופיים:
* '''[[אוטומט סופי דטרמיניסטי]]''' – {{כ}}אס"ד (DFA –{{כ}} Deterministic Finite Automaton)
* '''[[אוטומט סופי לא דטרמיניסטי]]''' – {{כ}}אסל"ד (NFA –{{כ}} Nondeterministic Finite Automaton)


ניתן לתאר אוטומט סופי דטרמיניסטי באמצעות [[קבוצה סופית]] של מצבים, המשמשים את האוטומט והוא עובר בהם לפי כללים קבועים מראש במהלך קריאת מילת קלט. חלק ממצבי האוטומט הם '''מצבים מקבלים'''. אם בסוף קריאת המילה מגיע האוטומט למצב מקבל, המילה שייכת לשפה המוגדרת על ידיו, אחרת לא. הכללים למעבר ממצב למצב מוגדרים ע"י פונקציה שמגדירה עבור כל מצב <math>q</math> ואות <math>\sigma</math> מצב יחיד <math>q'</math> (ייתכן ש <math>q'=q</math>) אליו עובר האוטומט כאשר הוא נמצא במצב <math>q</math> והאות שהוא קרא מן הקלט היא <math>\sigma</math>.
'''אוטומט סופי דטרמיניסטי''' מוגדר על ידי החמישייה <math>A=(Q, q_0, \Sigma, \delta, F)</math>, כלומר, [[קבוצה סופית]] <math>Q</math> של [[מצב (מדעי המחשב)|מצב]]ים המשמשים את האוטומט, והוא עובר בהם החל במצב ההתחלתי <math>q_0</math>, לפי כללים קבועים מראש, במהלך קריאת מילת קלט ([[מחרוזת (מדעי המחשב)|מחרוזת]] תווים/סמלים מה[[אלפבית (שפה פורמלית)|אלפבית]] <math>\Sigma</math>). חלק ממצבי האוטומט הם "מצבים מקבלים" (<math>F</math>). אם בסוף קריאת המילה מגיע ועוצר האוטומט במצב מקבל, משמעות הדבר היא שהמילה שייכת לשפה שהוא מגדיר; אחרת, המילה אינה שייכת לשפה.


הכללים למעבר ממצב למצב מוגדרים על ידי [[פונקציית מעברים]] (<math>\delta</math>), שמגדירה עבור כל מצב <math>q</math> ואות <math>\sigma</math> מצב '''יחיד''' <math>q'</math> (ייתכן ש <math>q'=q</math>), אליו עובר האוטומט, כאשר הוא נמצא במצב <math>q</math> והאות שהוא קרא מן הקלט היא <math>\sigma</math>.
אוטומט סופי לא־דטרמיניסטי דומה לאוטומט הדטרמיניסטי, רק שמכל מצב יכולים להיות מספר מסלולים למצב אחר עבור אות קלט, או שאין אף מסלול אפשרי ממצב מסוים עבור אות קלט מסוימת. מבחינה פורמלית, מילה תתקבל אם ורק אם קיים מסלול עבורה מהמצב ההתחלתי עד למצב מקבל כלשהו.


'''אוטומט סופי לא־דטרמיניסטי''' מוגדר באופן דומה לאוטומט הדטרמיניסטי, על ידי החמישייה <math>N=(Q, Q_0, \Sigma, \delta, F)</math>. בשונה מקודמו, במקום מצב התחלתי <math>q_0</math> ישנה קבוצת מצבים התחלתיים <math>Q_0</math>. כמו כן, מכל מצב יכולים להיות מספר מעברים למצבים אחרים עבור אותה אות קלט; וייתכן אף מסלול עבור קלט ריק - כלומר, שינוי מצב מבלי לקרוא דבר - קשת כזו נקראת "מעבר-<math>\varepsilon</math>". ישנו גם מצב בו לא הוגדר אף מסלול אפשרי ממצב מסוים עבור אות קלט מסוימת ([[קונבנציה|מוסכם]] שבמקרה זה קריאת אות זו מהקלט תוביל ל[[בור דוחה]], כלומר מצב המכוּנה <math>q_{rej}</math>, שהמעברים היחידים ממנו הם לעצמו, ואיננו מצב מקבל).
ניתן להוכיח כי כל אוטומט סופי לא־דטרמיניסטי שקול לאוטומט סופי דטרמיניסטי. כלומר, היעדר ה[[דטרמיניזם]] אינו מוסיף לכוחו החישובי של האוטומט הסופי (בשונה מב[[אוטומט מחסנית]], לדוגמה).


מבחינה פורמלית, באוטומט כזה, מילה תתקבל [[אם ורק אם]] '''קיים''' עבורה (עבור קריאה מלאה שלה) מסלול חוקי ממצב התחלתי כלשהו למצב מקבל כלשהו.
שפות המתקבלות על ידי אוטומט סופי נקראות [[שפה רגולרית|שפות רגולריות]] ונוצרות על ידי [[דקדוק רגולרי|דקדוקים רגולריים]].


ניתן להוכיח, כי כל אוטומט סופי לא־דטרמיניסטי [[שקילות (מודלים חישוביים)|שקול]] לאוטומט סופי דטרמיניסטי. כלומר, היעדר ה[[דטרמיניזם]] אינו מוסיף ל[[חישוביות|כוחו החישובי]] של האוטומט הסופי (בשונה מ[[אוטומט מחסנית]], לדוגמה). לפיכך, שפה <math>L</math> היא רגולרית אם ורק אם קיים עבורה אוטומט סופי לא-דטרמיניסטי, שזה מתקיים אם ורק אם קיים עבורה אוטומט סופי דטרמיניסטי.
ניתן להתייחס גם לריצות של אוטומטים סופיים על מילים אינסופיות (סדרות אינסופיות של אותיות מה[[אלפבית]]). ניתן להגדיר תנאים שונים להגדרת קבלת מילים במקרה זה. למשל, באוטומט בוקי (Büchi) ריצה תקרא מקבלת אם היא מבקרת במצב מקבל אינסוף פעמים.


[[שפה (מדעי המחשב)|שפות]] המתקבלות על ידי אוטומט סופי נקראות [[שפה רגולרית|שפות רגולריות]] ונוצרות על ידי [[דקדוק רגולרי|דקדוקים רגולריים]].
==לקריאה נוספת==

* {{פא"ר|מספר=93|שם הספר=אוטומטים ושפות פורמליות|כותב=שמואל זקס ונסים פרנסיז|שנה=2000}}
שפות אלה הן קבוצה 'פשוטה' יחסית מתוך כלל ה[[שפה חופשית הקשר|שפות חסרות ההקשר]], ומסתפקות בזיכרון סופי לצורך יצירת השפה. כל שפה רגולרית היא גם חסרת-הקשר, כלומר, ניתן לבטאה על ידי דקדוק חסר הקשר במקום על ידי אוטומט סופי; אך לא כל שפה חסרת-הקשר היא רגולרית. דרך קלה להבחין בכך ששפה אינה רגולרית היא על ידי שימוש ב[[למת הניפוח לשפות רגולריות]]. בשל פשטותן, שפות רגולריות [[סגירות (אלגברה)|סגורות]] תחת פעולת [[חיתוך (מתמטיקה)|חיתוך]], לעומת שפות חסרות-הקשר שאינן סגורות לחיתוך.

==להרחבה==
* בנוסף למודלים הנזכרים לעיל, המזהים שפות רגולריות - דקדוק רגולרי, אוטומט סופי דטרמיניסטי ואי-דטרמיניסטי; [[משפט מייהיל-נרוד]] מספק לנו מודל חישובי נוסף המזהה אם שפה היא רגולרית אם לאו: שפה <math>L</math> היא רגולרית אם ורק אם היא בעלת מספר סופי של [[מחלקות שקילות]] מייהיל-נרוד.

* ניתן להתייחס גם לריצות של אוטומטים סופיים על מילים אינסופיות (סדרות אינסופיות של אותיות מהאלפבית). ניתן להגדיר תנאים שונים לקבלת מילים, במקרה זה. למשל, באוטומט בוקי (Büchi) ריצה תיקרא מקבלת, אם היא מבקרת במצב מקבל אינסוף פעמים.

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


==ראו גם==
==ראו גם==
שורה 23: שורה 34:
*[[אוטומט מחסנית]]
*[[אוטומט מחסנית]]
*[[מכונת טיורינג]]
*[[מכונת טיורינג]]
* [[שפה רקורסיבית]]


==לקריאה נוספת==
[[קטגוריה:אוטומטים]]
* {{פא"ר|מספר=418|שם הספר=אוטומטים ושפות פורמליות א|כותב=שמואל זקס ו[[נסים פרנסיז]]|שנה=2000|גוגל=3paJMQ-S6CYC&hl}}
* {{פא"ר|מספר=419|שם הספר=אוטומטים ושפות פורמליות ב|כותב=שמואל זקס ו[[נסים פרנסיז]]|שנה=2000|גוגל=xLDP7O1oRr8C}}


== קישורים חיצוניים ==
{{Link GA|es}}


* [https://gadial.net/2009/08/30/finite_automata_and_regular_languages/ אוטומטים סופיים ושפות רגולריות], בבלוג "לא מדויק" של גדי אלכסנדרוביץ', 30 באוגוסט 2009
[[en:Finite-state machine]]

[[bg:Краен автомат]]
{{בקרת זהויות}}
[[ca:Autòmat finit]]

[[cs:Konečný automat]]
[[קטגוריה:אוטומטים]]
[[de:Endlicher Automat]]
[[es:Autómata finito]]
[[fa:ماشین‌های حالات متناهی]]
[[fi:Äärellinen automaatti]]
[[fr:Automate fini]]
[[gl:Autómata finito]]
[[hr:Konačni automat]]
[[it:Automa a stati finiti]]
[[ja:有限オートマトン]]
[[ko:유한 상태 기계]]
[[lt:Baigtinis automatas]]
[[lv:Galīgs automāts]]
[[mk:Конечен автомат]]
[[nl:Eindigetoestandsautomaat]]
[[pl:Automat skończony]]
[[pt:Máquina de estados finitos]]
[[ro:Automat finit]]
[[ru:Конечный автомат]]
[[sh:Konačni automat]]
[[sk:Konečný automat]]
[[sr:Коначан аутомат]]
[[sv:Ändlig automat]]
[[th:เครื่องสถานะจำกัด]]
[[tr:Sonlu durum makinası]]
[[uk:Скінченний автомат]]
[[zh:有限状态自动机]]

גרסה אחרונה מ־05:04, 1 באוגוסט 2024

מנגנון ממשק מתג להדלקה וכיבוי של נורה מתואר כאוטומט סופי (בייצוגו כגרף מכוון).

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

קיימים שני סוגים של אוטומטים סופיים:

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

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

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

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

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

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

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

  • בנוסף למודלים הנזכרים לעיל, המזהים שפות רגולריות - דקדוק רגולרי, אוטומט סופי דטרמיניסטי ואי-דטרמיניסטי; משפט מייהיל-נרוד מספק לנו מודל חישובי נוסף המזהה אם שפה היא רגולרית אם לאו: שפה היא רגולרית אם ורק אם היא בעלת מספר סופי של מחלקות שקילות מייהיל-נרוד.
  • ניתן להתייחס גם לריצות של אוטומטים סופיים על מילים אינסופיות (סדרות אינסופיות של אותיות מהאלפבית). ניתן להגדיר תנאים שונים לקבלת מילים, במקרה זה. למשל, באוטומט בוקי (Büchi) ריצה תיקרא מקבלת, אם היא מבקרת במצב מקבל אינסוף פעמים.
  • נציין כי המילה סופי בשמו של האוטומט מציינת שמספר המצבים באוטומט הוא סופי. אוטומט בעל מספר מצבים אינסופי יגרום למודל להיות חזק יותר ממכונת טיורינג, ולמעשה – כל יכול מבחינה חישובית.[דרושה הבהרה]

לקריאה נוספת

[עריכת קוד מקור | עריכה]

קישורים חיצוניים

[עריכת קוד מקור | עריכה]