האחדה (יוניפיקציה)

הצבה היא אוסף של זוגות plot:\[\left\{ {{x_1}/{t_1},...,{x_n}/{t_n}}
 \right\}\] כאשר plot:\[{t_i}\] הם ביטויים ו-plot:\[{x_i}\] הם משתנים ומתקיימים התנאים:

  1. plot:\[{x_i} \ne {x_j}\] לכל plot:\[i \ne j\].
  2. plot:\[{x_i}\] אינו מופיע באף אחד מהביטויים plot:\[{t_1},...,{t_n}\].

ניתן להפעיל הצבה plot:\[\sigma \] על נוסחה plot:\[\varphi \] ולקבל נוסחה חדשה על ידי החלפת כל המשתנים בנוסחה המופיעים בהצבה בביטויים המתאימים. מסמנים את הביטוי החדש ב-plot:\[\varphi \sigma \].

דוגמא: plot:\[P\left( {x,x,y,v} \right)\,\left\{ {x/A,y/F\left( B \right),z/w}
 \right\} = P\left( {A,A,F\left( B \right),v} \right)\].

הרכבה של הצבות: תהי plot:\[\sigma \] הצבה. אם בהצבה plot:\[\tau \] לא מופיעים משתנים המקבלים ערך בהצבה plot:\[\sigma \] ניתן להגדיר את ההרכבה של plot:\[\tau \] על plot:\[\sigma \] בצורה plot:\[\sigma \tau \].

תהי plot:\[\sigma  = \left\{ {{x_1}/{t_1},...,{x_n}/{t_n}}
 \right\}\]. תהי plot:\[\tau \] הצבה כנ"ל, אזי: plot:\[\sigma \tau  = \left\{ {{x_1}/{t_1}\tau ,...,{x_n}/{t_n}\tau } \right\}
 \cup \tau \].

כלומר, מפעילים את plot:\[\tau \] על הביטויים של plot:\[\sigma \] ומוסיפים את הזוגות החדשים לזוגות של plot:\[\tau \]. דוגמא:

plot:\[\left\{
 {w/G\left( {x,y} \right)} \right\}\left\{ {x/A,y/B,z/C} \right\} = \left\{
 {w/G\left( {A,B} \right),x/A,y/B,z/C} \right\}\]

האחדה (unification) של שני ביטויים היא הצבה ההופכת אותם לזהים.



ייתכן יותר ממאחד (הצבה) אחד לשני ביטויים. מאחד plot:\[\gamma \] של פסוקים plot:\[\varphi \] ו-plot:\[\psi \] נקרא המאחד הכללי ביותר אם לכל מאחד plot:\[\sigma \] של שני הביטויים קיימת הצבה plot:\[\delta \] כך ש-plot:\[\varphi \gamma \delta  = \varphi \sigma 
 = \psi \gamma \delta  = \psi \sigma \].

אלגוריתם ליוניפיקציה: plot:\[UNIFY\left( {{L_1},{L_2}} \right)\]

  1. אם plot:\[{L_1} = {L_2}\] החזר NIL.
  2. אם plot:\[{L_1}\] הוא משתנה: אם plot:\[{L_1}\] מופיע ב-plot:\[{L_2}\] החזר FAIL, אחרת החזר plot:\[\left( {{L_1}/{L_2}} \right)\]
  3. אם plot:\[{L_2}\] הוא משתנה: אם plot:\[{L_2}\] מופיע ב-plot:\[{L_1}\] החזר FAIL, אחרת החזר plot:\[\left( {{L_2}/{L_1}} \right)\]
  4. אם plot:\[{L_1}\] או plot:\[{L_2}\] קבועים: אם plot:\[{L_1} = {L_2}\] החזר NIL, אחרת החזר FAIL.
  5. אם ל-plot:\[{L_1}\] ול-plot:\[{L_2}\] מספר ארגומנטים שונה, החזר FAIL.
  6. אתחל את SUBST לערך NIL.
  7. לכל plot:\[i\] החל מ-1 ועד מספר הארגומנטים:
    1. plot:\[S \leftarrow UNIFY\left( {\arg \left(
       {{L_1},i} \right),\arg \left( {{L_2},i} \right)} \right)\].
    2. אם plot:\[S\] הוא FAIL החזר FAIL.
    3. הפעל את plot:\[S\] על שארית plot:\[{L_1}\] ו-plot:\[{L_2}\]
    4. plot:\[{\text{SUBST}} \leftarrow
       APPEND\left( {S,{\text{SUBST}}} \right)\].
  8. החזר את SUBST

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

מאת: אוריה

אבל הוא עדיין לא נפתח...

מאת: אוריה

סליחה, זה ב-9

והקובץ יורד בסדר
מאת: ניר

אני עם אקרובט 8.1.1

הקובץ נפתח בלי שום בעייה
מאת: shoshan

אני מציע שתנסה שוב ב-acrobat 8

כי זה עובד לי בסדר גמור ב-Acrobat 9 וב-Foxit...

יכול להיות שהקובץ ירד לך לא טוב או חתוך או קטן מידי ?
מאת: אוריה

ב-5 זה נפתח

מאת: אוריה

לא נפתח

לא נפתח ב Acrobat Reader 8, הוא כותב שהקובץ לא נתמך או שהוא ניזוק.
שיתוף:
| עוד