480 likes | 676 Views
Abstract State Machines. נתחיל בהגדרות. אלגברה יהי סט U , ותהי f: U n -> U . במידה ו- n=0 , fϵU היא למעשה קבוע בשפה. n תקרא ה- arity של הפונקציה F . יהיו n 1 ,…., n k ϵN . אזי לכל i =1,…,k תהי f i פונק' מעל U עם arity n i . אזי
E N D
נתחיל בהגדרות אלגברה • יהי סט U, ותהי f: Un -> U. במידה ו-n=0, fϵU היא למעשה קבוע בשפה. n תקרא ה- arity של הפונקציה F. • יהיו n1,….,nkϵN. אזי לכל i=1,…,k תהי fi פונק' מעל U עם arityni. אזי S = (U, f1,…,fk) תקרא אלגברה. Uהוא התחום שלה (קבוצת הערכים הסמנטיים שלה),ו- ni הם הסוג שלה.
סיגנטורה • נותנת שמות לפונק' של האלגברה. יהיו f1,…,fk סמלים ו- n1,….,nkϵ N. אזי Σ = (f1,…,fk, n1,….,nk) היא סיגנטורה. כאשר לכל i, ni הוא ה-arity של fi. אם ה-arity הוא 0, אזי מדובר בסמל קבוע.
Σ-אלגברה • כל סיגנטורה מגדירה אוסף של סיגמות-אלגברות. תהי Σ = (f1,…,fk, n1,….,nk)סיגנטורה. • כל אלגברה S = (U, g1,…,gk)עם arity(n1,….,nk)תקרא סיגמא- אלגברה. לעיתים S תקרא אינטרפרטציה של Σ. Giתכתב לעיתים fisכדי לסמן שהיא האינטרפרטציה של fiב-S. • סימון: נסמן ב- algΣ את קבוצת כל הסיגמות- אלגברות.
שמות עצם [Σ-ground terms] • מוגדר רקורסיבית: • כל סימן עם arity=0 הוא שם עצם. • כל פונקציה על שמות עצם היא גם שם עצם. • סימון: נסמן את קבוצת שמות העצם ב- TΣ.
לרוב מניחים סימונים כלשהם של מצבים ופעולות. • לפי המודל של יורי גורביץ',כל מבנה מתמטי (לוגי מסדר ראשון) יכול לשמש כמצב. • מודל חישובי זה הוא חזק יותר ואוניברסלי יותר מהמודלים הסטנדרטיים. • נציג את מודל מכונות המצבים האבסטרקטיות כסוג של מערכות מעברים (transition systems).
הגדרה: מערכת מעברים דטרמיניסטית מאותחלת • השלשה: C=(Q,I,F). כאשר: • Q– אוסף של מצבים • I≤Q אוסף המצבים ההתחלתיים • F:Q->Q פונק' המעברים • בנוסף, מניחים קיום קבוצת מצבים "סופיים" Ω, עבורם מתקיים F(q) = q לכל qϵΩ. אלה בעצם fix-points של F.
הגדרה - רצף חישובי של C: רצף x0x1x2… של מצבים xiϵQ, כאשר x0ϵI, xi+1 = F(xi) לכל i. • הרצף הנ"ל ייקרא "סופי" אם Ω xkϵ עבור k כלשהו. • Cייקרא אלגוריתם אם כל רצף חישובי של C הוא סופי.
מתודה אפקטיבית: מתודה ששווה (בכוח החישוב שלה) למכונת טיורינג או לכל מכניזם לפונק' חישוביות. כיום, לזה בד"כ מתכוונים כשאומרים "אלגוריתם". • אנחנו נשתמש במושג "מערכת מעברים" במקום "מתודה חישובית", ו"מערכת מעברים אפקטיבית" במקום "מתודה חישובית אפקטיבית".
בהמשך השיעור ננסה להבין למה מכונות מצבים אבסטרקטיות הן למעשה יותר אוניברסליות ממודלים חישוביים סטנדרטיים. כמו כן, נספק סיבות אינטואיטיביות להצלחת מכונות המצבים האבסטרקטיות. נתחיל מהצגת דוגמא.
בדוגמא הבאה ננסה להראות אלגוריתם שמוגדר ע"י מצבים שלא יכולים להיות מיוצגים ע"י סמלים. תהי augment פונק' שמקבלת שני ארגומנטים: הראשון קבוצה כלשהי, והשני אובייקט. לקבוצה M ואובייקט m נגדיר: augment(M, m) =def M U {m}. נרצה לכתוב אלגוריתם שמאחד שני אלמנטים לקבוצה אחת, תוך שימוש בפונק' augment.
נרצה לבנות מערכת מעברים C0 = (Q0, I0, F0), כך שכל קבוצה M ביחד עם שני אלמנטים m, n יהוו מצב סופי xM,m,n. רצף חישובי שמתחיל ברצף xM,m,n צריך להסתיים במצב שמייצג את הקבוצה M U {m, n}. כעת נבחר משתנים שיתארו את האלגוריתם. X ישתנה עם הקבוצות – במצב התחלתי xM,m,nשל C0 הערך של X הוא M.
את הצעדים של C0 נתאר ע"י אלגוריתם P0: P0 :begin X := augment(X,m); X := augment(X, n) end. • ע"פ האלגוריתם P0: S0 מצב התחלתי של C0, שמוביל למצב S1, שמציב את הקבוצה M U {m} ב-X. לאחר מצב S1, מגיע מצב S2 שמציב את M U {m, n} ב-X. S2 הוא מצב סופי של C0.
בתיאור הפונקציה השתמשנו בסימנים "X", "begin", "end", ";" , ":=", באובייקטים m, n ובפונק' augment. נעדיף כעת ייצוג שכולו עם סימנים. נשיג זאת ע"י הוספת שני משתנים, x, y, וסימן אופרטור בינארי, g. במצב התחלתי xM,m,n של C0 נניח שהערך של X, x, y הוא M, m ,n בהתאמה, והערך של האופרטור g הוא הפונקציה augment.
נייצג זאת כך: P1 : begin X := g(X, x); X := g(X, y) end. הייצוג של מצבים עדיין כולל סימנים כמו M, m, n augment, M U {m, n} . נרצה גם ייצוג בסימנים למצבים. ייצוג כזה יכלול רצף של סימנים מעל אלף-בית סופי כלשהו, Σ. אבל יש רק מספר בן מנייה של מילים מעל Σ, והרבה יותר ממספר בן-מנייה של קבוצות.
לכן, זה בלתי אפשרי לייצג את כל המצבים הללו באמצעות סימנים. בלתי אפשרי להגדיר השמה של ערכים למשתנים באמצעות סימנים. ? לסיכום, פונק' המעברים יכולה להיות מיוצגת ע"י סימנים, בעוד המצבים עצמם לא יכולים.
הדוגמא הקודמת לא מתאימה להגדרה ה"מוכרת" של מודל חישובי, היא מתאימה למודל חישובי כללי יותר. • כדי להדגיש את ההבדל, תהי C = (Q, I, F) מערכת מעברים דטרמיניסטית מאותחלת. • נניח ש-C היא מערכת מעברים אפקטיבית. • נניח שכל מצב S ϵ Qמיוצג ע"י רצף סופי של סימנים. המצב העוקב F(S) גם הוא מיוצג ע"י רצף של סימנים, שונה מזה שמייצג את S. • לסיכום, ארגומנטים ותוצאות הפעלת פונק' המעברים הם רצף סופי של סימנים, לכן קיים ייצוג סופי בסימנים של פונק' המעברים F.
כעת נניח ש-C היא מערכת מעברים ע"פ המודל הכללי יותר. מצב S ב-C לא מיוצג ע"י סימנים, אלא הוא אובייקט סמנטי. הוא מכיל קבוצה U (ייתכן אינסופית), מספר סופי של אלמנטים u1,…,uk ב-U ומספר סופי של פונקציות g1,…,gk מעל U, כך שלכל פונק' gi ה-arity שלה הוא ui. • בכל מצב S, משתנה xi מסמן אובייקט ui. לכן נסמן xis עבור ui. נסמן בהתאם ב- fjs את הפונק' gj.
לכל המצבים במערכת מעברים אותם סימני משתנים ופונקציות, שמשמשים כדי לייצג את פונק' המעברים F של C. • טכנית, הסימנים הללו מהווים סיגנטורה Σ, כל מצב ב-C הוא Σ-אלגברה. משתנים בד"כ מסומנים כקבועים, או פונק' עם arity=0.
נגדיר כעת את פונק' המעברים. נסמן השמה כך: x := t. סימן ההשמה בעצם אומר שבמצב הבא, F(S), מתקיים xf(s) = ts. • השמות לא מוגדרות רק לקבועים, אלא לכל סימני היחס בשפה. נסמן השמה כללית לסימן יחס כך: f(t1,…,tn) := t0– בעצם מעדכנת את הפונקציה f כך שבמצב העוקב, F(S), יתקיים fF(s)(t1s,…,tns) = t0s. • נאפשר שתי השמות על אותה פונק' בו זמנית, רק בהנתן שהן קונסיסטנטיות.
הגדרה פורמלית: תהי Σ סיגנטורה. • יהיו t,t0 ϵ TΣ כאשר t = f(t1,…,tk). אזי f(t1,…,tk) := t0 היא סיגמא-השמה. • יהי S ϵ algΣ. שתי סיגמא-השמות f(t1,…,tk) := t0 , f(t1',…,tk') := t0' ייקראו קונסיסטנטיות ב-Sאם"ם f(t1s,…,tks) = (t1s',…,tks') גורר ש: t0s' = t0s. • סט של סיגמא-השמות ייקרא קונסיסטנטי ב-S אם"ם האיברים שלו קונסיסטנטיים ב-S בזוגות.
אנחנו מתעסקים בסיגנטורות שכוללות את הסימנים: true, false, undefined, ואת הסימנים הרגילים ל"וגם", "או" ו- "not". זו תהיה סיגנטורת ASM.
הגדרה:תהי Σ סיגנטורת ASM. • הקבוצה guardΣ היא הקבוצה הקטנה ביותר של תנאים כך שלכל t, t' ϵ TΣ (= שמות עצם) מתקיים: 1. t=t' ϵ guardΣ. 2. לכל b,b' ϵ guardΣ מתקיים ̚ b ϵ guardΣוגם b˄b'ϵ guardΣ. • תהי r Σ-השמה ותהי b ϵ guardΣ. אזי "אם b אז r" היא sigma- guarded assignment. • יהיו q1,…,qmsigma-guarded assignments. אזי "par q1,…,qmendpar" היא תכנית ASM סדרתית חסומה מעל Σ.
הגדרה: תהי Σ סיגנטורה, S סיגמא-אלגברה עם עולם U, ויהי Z סט של סיגמא-השמות, קונסיסטנטיות ב-S. • עבור סמל k-ary, Σ f ϵ : FZ,S : Uk-> U (t1s,…,tks) -> t0iff f(t1,…,tk) := t0 ϵ Z U -> fs(u) , otherwise • תהי R = defsemz(S)סיגמא-אלגברה עם עולם U, מגדירה כל סימן Σ f ϵ כך: fR = fZ,S. כלומר R הוא המצב הבא אחרי הפעלת F על S.
הגדרה: תהי Σ סיגנטורת ASM. • יהי b ϵ guardΣ, S ϵ algΣ. אזי bs = true אם"ם b = (t = t') וגם ts = t's, או אם b = ̚ b' וגם לא b's = true, או אם b = b' ˄ b'' וגם b's = b''s = true. [זו סמנטיקה שמוכרת לנו משיעורי לוגיקה]
תהי M תכנית ASM מעל Σ: Par: If b1 then r1 …. If bm then rmendpar. אזי הפונקציה הסמנטית semM : algΣ -> algΣמוגדרת כך: עבור S ϵ algΣיהי Z := {ri | bis = true , 1 ≤ i ≤ m}. אזי SemM(S) := { semZ(S) if Z is consistent on S {S otherwise
תכנית ASM, M מעל סיגנטורה Σ יכולה לשמש כפונק' המעברים של מערכת מעברים שמגדירה סיגמות- אלגברות כמצב: • הגדרה: תהי Σ סיגנטורת ASM, ותהי M תכנית ASM מעל Σ ותהי A = (Q, I, F) מערכת מעברים עם Q ≤ algΣ, ו- F = semM. אזי A היא מערכת מעברים ASM.
נזכר בתכנית P1: P1 : begin X := g(X, x); X := g(X, y) end היא לא נראית כמו תכנית ASM, אך יש טריק שיהפוך אותה לתכנית ב"פורמט" הרצוי.
לצורך כך נגדיר משתנה נוסף, l, שיאותחל להיות 0 במצב ההתחלתי S0 : If l=0 then X := g(X, x); If l=0 then l:=1; If l=1 then X := g(X, y); If l=0 then l:=2;
כוח החישוב של מערכת מעברים ASMסדרתית
מערכות מעברים ASM הן בעלות כוח חישוב חזק מאוד. • אינטואיטיבית, כל מערכת מעברים עם פונק' מעברים שמיוצגת ע"י סימנים, יכולה להיות מיוצגת כ-ASM. • ראשית נתאר את פונק' המעברים F לכל מצב S ע"י ה"הבדל" בין המצב S למצב העוקב F(S). ההבדל הוא קבוצת עדכונים (f, u, v) כאשר f הוא סימן של פונקציה, u הוא n-tuple של אלמנטים כאשר n = arity של f, ו- v הוא אלמנט יחיד. בצירוף עם מצב S, עדכון שכזה בעצם אומר ש: fF(S)(u) = v.
הגדרה: תהי Σ סיגנטורה, f סימן פונקציה ב- Σ עם arity – n, יהי U עולם ויהיו u ϵ Un, v ϵ U. אזי (f, u, v) הוא Σ-עדכון מעל U. • לדוגמא, העדכון (X, (), M U {m}) מתאר את המעבר מ- S0 ל-S1. פונק' המעברים F בד"כ מעדכנת יותר מפונקציה אחת ביותר ממקום אחד בכל צעד.
הגדרה: תהי A=(Q, I, F) מערכת מעברים דטרמיניסטית מאותחלת עם Q ≤ algΣ וסיגנטורה Σ. יהי S ϵ Q. אזי: • Σ-עדכון (f, u, v) הוא F-עדכון של S אם"ם fs(u) != fF(S)(u) = v. • נסמן ב- ∆(F, S) הסט של כל ה-F-עדכונים של S.
לכל S, הסט ∆(F, S) ביחד מהווה את F. לכן, F יכולה להיות מאופיינת ע"י הסט ∆(F, S), כלומר ע"י הייצוג שלו בסימנים. ייצוג כזה בסימנים חייב לקיים את התנאים הבאים: • אם לשני מצבים R, Sמתקיים ∆(F, S) != ∆(F, R), אז לפחות תנאי אחד t ϵ TΣ מהווה את ההבדל ביניהם, כלומר ts != tr. • בנוסף, מכיוון שייצוג בסמלים הוא תמיד סופי, מספר סופי של t כאלה יספיקו לכל המצבים. F נקראת bounded explorationבמקרה הזה.
הגדרה: תהי A=(Q, I, F) מערכת מעברים דטרמיניסטית מאותחלת עם Q ≤ algΣ וסיגנטורה Σ. יהי T≤ TΣ כך שלכל המצבים R,S ϵ Q : אם לכל t ϵTומתקיים ts = tr, אזי ∆(F, S) = ∆(F, R). במקרה כזה, T תקרא characteristic ל-F. F היא bounded exploration אם קיים characteristic סופי, סט T של תנאים ל-F. אינטואיטיבית: ב-T ישנם משתנים שכל המצבים מסכימים על הפירוש הסמנטי שלהם. לכן כאשר התכנית מסתכלת על המשתנים האלה, היא תפעל באופן זהה בכל אחד מהמצבים.
ההגדרה הזו ל-F, bounded exploration, היא מאפיין הכרחי ל-F על מנת שתוכל להיות מיוצגת ע"י תכנית ASM. דרישה נוספת: מצבים ומצבים התחלתיים סגורים תחת איזומורפיזם, ופונק' המעברים F אינווריאנטית תחת איזומורפיזם. הדרישות הללו קיימות בגלל האבחנה שייצוג של תנאי לא יכול להבדיל בין מבנים איזומורפיים. זאת מכיוון שפונקציית המעברים מתעניינת בייצוג הסינטקטי בלבד.
הגדרה: תהי סיגנטורה Σ ותהי A=(Q, I, F) מערכת מעברים דטרמיניסטית מאותחלת עם Q ≤ algΣ כך שלכל R,S ϵ Q ולכל איזומורפיזם h: R -> S. אם מתקיים: • R ϵ Q אם"ם S ϵ Q, וגםR ϵ I אם"ם S ϵ I • h: F(R) -> F(S)הוא גם איזומורפיזם. אזי Aסגורה לאיזומורפיזם.
הטענה הבאה מתארת את הכוח החישובי של מערכת מעברים ASM: טענה: תהי סיגנטורה Σ ותהי A=(Q, I, F)מערכת מעברים דטרמיניסטית מאותחלת וסגורה לאיזומורפיזם עם Q ≤ algΣ, ותהי F bounded exploration. אז קיימת תכנית ASM עם F=semM.
המושג AST מתייחס לרעיון המהפכני שמצב הוא מבנה מתמטי. דנו בגרסה הכי אלמנטרית של ASM מזווית סינטקטית. באופן כללי, הסינטקס של ASM אינו יחיד, יש כמה גרסאות שיעבדו. • יש הרחבות מספיקות לגרסה האלמנטרית של ASM כפי שהוצג בנייר הזה:
פונק' המעברים הדטרמיניסטית F יכולה להיות מוחלפת בפונק' לא דטרמיניסטית. • ההתנהגות של תכנית ASM יכולה להיות ממודלת ע"י צעדים xixi+1 שאינם מבוצעים ע"י אותה התכנית, אלא ע"י העולם החיצון. • וכן הלאה...
סיגמא- אלגברה היא המבנה המתמטי הטבעי ביותר. לכן היא מהווה את האמצעי הגמיש ביותר למדל מצבים של מערכות. לכן לגישה של ה-ASM יש היכולת לבנות אלגוריתם שרירותי ברמת האבסטרקציה הטבעית שלה, בלי לממש אותו. למעשה, הדרישה הליברלית ממצבים וצעדים מסתגלת בקלות לכל סוג אלגוריתם, ובמיוחד ל- high-level system design.
ASMמוצלח במיוחד לתיאור הסמנטיקה של שפות תכנות: סמנטיקה שמתמודדת עם מגוון עשיר של מבנים מתמטיים שלא דורשים ייצוג סינטקטי. זה בדיוק מה ש-ASM מספק. • הפורמליזם של ASM יושם בהצלחה בכל תחומי התוכנה.
אלגוריתם הוא אפקטיבי אם הוא יכול להיות מבוצע בצורה מכנית. הדרישות שהצגנו קודם לכן מספיקות על מנת שנוכל לייצג תכנית ע"י ASM. • דורשים שמצב התחלתי יהיה מלוגיקה מסדר ראשון, אך הוא עדיין יכול להכיל פעולות שאינן computable למשל כמו halting function, ופעולות על מספרים ממשיים. • כדי למנוע מצב כזה, נדרוש שהמצבים ההתחלתיים יהיו ניתנים לייצוג סופי בדרך כלשהי (למשל ע"י תכניות אחרות), מה שאומר שניתן לבצע אותן בצורה מכנית כלשהי.
יודעים שפונק' המעברים ניתנת לייצוג ע"י תכנית, וכעת הראינו שהמצבים ההתחלתיים גם הם יכולים להיות מיוצגים ע"י רשימה סופית של זוגות <מיקום , ערך> ותכניות כלשהן לפעולות ההתחלתיות. • לכן אפשר להשתמש באינטרפרטר, שייקח את הייצוג של מצב ויחשב את המצב הבא. את האינטרפרטר ניתן לפתח בכל שפת תכנות.