slack - Algorithms

‫אלגוריתמים‬
‫תכנות לינארי – חלק ב‬
‫נכתב ע"י אדם שפר‬
‫עודכן והורחב ע"י רון שמיר יוני ‪ ,2013‬מאי ‪2014‬‬
‫מקור עיקרי‪ CLRS :‬פרק ‪29‬‬
‫‪1‬‬
‫מה עושים היום?‬
‫‪ ‬היום נלמד על‪:‬‬
‫◦ עוד על תכנות לינארי ועל אלג' סימפלקס‪.‬‬
‫◦ דואליות‪.‬‬
‫‪2‬‬
‫‪Slack Form‬‬
‫‪ ‬צורת ה‪ slack-‬ליצג את בעיית התכנות לינארי‪:‬‬
‫◦ ‪ n‬משתנים לא בסיסיים ו‪ m -‬משתנים בסיסיים‪.‬‬
‫◦ פונקציית מטרה ‪ maximize v   j c j x j‬שמכילה‬
‫רק משתנים לא בסיסיים‪.‬‬
‫◦ אילוצי אי שליליות לכל המשתנים ‪.𝑥𝑗 ≥ 0‬‬
‫◦ לכל משתנה בסיסי קיים שיוויון מהצורה‬
‫‪xk  bi -  aij x j‬‬
‫‪j‬‬
‫משתנים לא בסיסיים‪.‬‬
‫‪3‬‬
‫משתנה בסיסי‪.‬‬
‫תזכורת‪ :‬מעבר בין צורות ‪Slack‬‬
‫פונקציית‬
‫המטרה‪.‬‬
‫‪4‬‬
‫מחליפים בין‬
‫משתנה בסיסי‬
‫ומשתנה לא‬
‫בסיסי‪.‬‬
‫תזכורת‪ :‬שקילות של צורות 𝑘𝑐𝑎𝑙𝑠‬
‫החלפנו בין ‪ 𝑥1‬לבין ‪.𝑥4‬‬
‫‪max 5 + 𝑥2 /2 − 𝑥4 /2‬‬
‫‪𝑥3 = 1 − 3𝑥2 /2 + 𝑥4 /2‬‬
‫‪𝑥1 = 5 − 𝑥2 /2 − 𝑥4 /2‬‬
‫‪𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ≥ 0‬‬
‫‪max 𝑥1 + 𝑥2‬‬
‫‪𝑥3 = 6 − 𝑥1 − 2𝑥2‬‬
‫‪𝑥4 = 10 − 2𝑥1 − 𝑥2‬‬
‫‪𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ≥ 0‬‬
‫המטרה‬
‫האפשריים‪ ,‬ערך‬
‫פתרון אפשרי‬
‫‪‬עבור כל‬
‫ערך של‬
‫פונקציתלאותו‬
‫הבאים יביאו‬
‫הפתרונות‬
‫למשל‪:‬‬
‫הבעיה‪.‬‬
‫‪ SLACK‬של‬
‫פונקציתבכל‬
‫יהיה זהה‬
‫הבעיה‪:‬‬
‫‪ slack‬של‬
‫צורתבכל צורת‬
‫המטרה‬
‫◦ ‪. 𝑥1 = 0, 𝑥2 = 0, 𝑥3 = 6, 𝑥4 = 10‬‬
‫◦ ‪. 𝑥1 = 2, 𝑥2 = 2, 𝑥3 = 0, 𝑥4 = 4‬‬
‫‪5‬‬
‫תזכורת‪ :‬הפתרון המתאים לצורת ‪slack‬‬
‫‪ ‬לכל צורת ‪ slack‬נתאים פתרון באופן הבא‪:‬‬
‫◦ כל המשתנים הלא בסיסיים יקבלו ערך ‪ ,0‬ואז‬
‫האילוצים יקבעו את הערכים של המשתנים הבסיסיים‪.‬‬
‫‪ ‬מהו הערך של הפתרון? ‪27‬‬
‫‪ ‬מתי הפתרון אפשרי? כאשר הקבועים בכל‬
‫‪6‬‬
‫האילוצים הינם אי‪-‬שליליים‪.‬‬
‫תזכורת‪ :‬פיבוט‬
‫‪ ‬צעד של אלגוריתם סימפלקס נקרא פיבוט‪.‬‬
‫‪ ‬כל מה שעושים בצעד כזה הוא לעבור בין שתי‬
‫צורות ‪ slack‬שקולות‪ ,‬כך שהערך של הפתרון‬
‫המתאים אינו יכול לרדת‪.‬‬
‫‪ ‬בשיעור הקודם ראינו שאם נבצע צעד פיבוט על‬
‫צורת ‪ slack‬המתאימה לפתרון אפשרי‪ ,‬צורת‬
‫ה‪ slack-‬שתתקבל תתאים גם היא לפתרון‬
‫אפשרי‪.‬‬
‫‪7‬‬
‫תזכורת‪ :‬פיבוט (המשך)‬
‫‪9 /(1 / 2)  18‬‬
‫‪21 /(5 / 2)  8.4‬‬
‫‪6 / 4  1.5‬‬
‫‪ ‬צריך לבחור את זוג המשתנים שמחליפים ביניהם‪.‬‬
‫‪8‬‬
‫◦ בוחרים משתנה לא בסיסי עם מקדם חיובי בפונקציית‬
‫המטרה‪.‬‬
‫◦ בוחרים אילוץ שמביא למינימום את היחס בין הקבוע‬
‫שבאילוץ לבין מינוס המקדם של המשתנה הלא בסיסי ‪.‬‬
‫שאלה לחימום‬
‫‪ ‬שאלה‪ :‬הסבירו מה קורה בצעד הבא של אלג'‬
‫סימפלקס על צורת ה‪ slack-‬הבאה‪:‬‬
‫‪9‬‬
‫‪ ‬תשובה‪ :‬האלגוריתם יחזיר שהבעיה אינה‬
‫חסומה‪.‬‬
‫עדיין לא הסברנו לגבי סימפלקס‬
‫‪ ‬נושאים שלא הסברנו לגבי סימפלקס בשיעור‬
‫הקודם‪:‬‬
‫◦ כיצד למצוא צורת ‪ slack‬אפשרית התחלתית‪.‬‬
‫◦ כיצד להוכיח שצורת ה‪ slack-‬שסימפלקס עוצר בה‬
‫מתאימה לפתרון האופטימלי‪.‬‬
‫‪10‬‬
‫דוגמא‪ :‬פתרון התחלתי שאינו אפשרי‬
‫צורה סטנדרטית‪.‬‬
‫קיים פתרון אפשרי‬
‫‪𝑥1 = 𝑥2 =1‬‬
‫צורת ‪ slack‬התחלתית‪.‬‬
‫מתאימה לפתרון שאינו‬
‫אפשרי‪.‬‬
‫‪11‬‬
‫‪max 2𝑥1 − 𝑥2‬‬
‫‪2𝑥1 − 𝑥2 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 ≤ −4‬‬
‫‪𝑥1 , 𝑥2 ≥ 0‬‬
‫‪max 2𝑥1 − 𝑥2‬‬
‫‪𝑥3 = 2 − 2𝑥1 + 𝑥2‬‬
‫‪𝑥4 = −4 − 𝑥1 + 5𝑥2‬‬
‫‪𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ≥ 0‬‬
‫שאלה‬
‫‪ ‬איזו תכונה של הצורה הסטנדרטית קובעת האם‬
‫צורת ה‪ slack-‬ההתחלתית הינה אפשרית או לא?‬
‫‪ ‬צורת ה‪ slack-‬ההתחלתית אפשרית אם ורק אם‬
‫כל הקבועים בצורה הסטנדרטית אי שליליים‪.‬‬
‫◦ תזכורת‪ :‬צורת ‪ slack‬מתאימה לפתרון לא אפשרי אם‬
‫ורק אם אחד הקבועים באילוצים שלה שלילי‪.‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑐 ‪𝑗=1‬‬
‫𝑖∀‬
‫‪12‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎 ‪𝑗=1‬‬
‫‪max‬‬
‫‪𝑥𝑛+𝑖 = 𝑏𝑖 −‬‬
‫‪𝑥1 , … , 𝑥𝑛 ≥ 0‬‬
‫בעיית עזר‬
‫‪ ‬נתונה לנו בעיה בצורה סטנדרטית‪.‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑐 ‪𝑗=1‬‬
‫𝑖∀‬
‫𝑖𝑏 ≤‬
‫‪max‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎 ‪𝑗=1‬‬
‫‪𝑥1 , … , 𝑥𝑛 ≥ 0‬‬
‫‪ ‬אם כל הקבועים הינם אי שליליים‪ ,‬סיימנו‪.‬‬
‫‪ ‬אחרת‪ ,‬נוסיף משתנה חדש ‪ 𝑥0‬ונגדיר תוכנית עזר‪:‬‬
‫𝑖∀‬
‫‪max −𝑥0‬‬
‫𝑛‬
‫𝑖𝑏 ≤ ‪𝑗=1 𝑎𝑖𝑗 𝑥𝑗 − 𝑥0‬‬
‫‪𝑥0 , 𝑥1 , … , 𝑥𝑛 ≥ 0‬‬
‫‪13‬‬
‫למה בעיית העזר מעניינת?‬
‫‪ ‬טענה‪ :‬לבעיה המקורית 𝑃 קיים פתרון אפשרי‬
‫אם ורק אם ערך הפתרון האופטימלי של בעיית‬
‫העזר ‪ 𝑃′‬הוא ‪.0‬‬
‫◦ כל פתרון אפשרי של 𝑃 ניתן להמיר לפתרון של ‪𝑃′‬‬
‫שערכו ‪ ,0‬על ידי הצבת ‪( 𝑥0 = 0‬ולהפך‪ :‬אם קיים‬
‫פתרון בשווי ‪ 0‬ל‪ 𝑃′-‬אז הוא גם אפשרי ל‪.)𝑃-‬‬
‫◦ לא קיים ל‪ 𝑃′-‬פתרון שערכו גדול מ‪ .0-‬לכן‪ ,‬הפתרון‬
‫האופטימלי הינו ‪ 0‬אמ"מ קיים פתרון אפשרי ל‪.𝑃′ -‬‬
‫‪′‬‬
‫𝑃‬
‫𝑖∀‬
‫‪14‬‬
‫‪max −𝑥0‬‬
‫𝑛‬
‫𝑖𝑏 ≤ ‪𝑗=1 𝑎𝑖𝑗 𝑥𝑗 − 𝑥0‬‬
‫‪𝑥0 , 𝑥1 , … , 𝑥𝑛 ≥ 0‬‬
‫𝑃‬
‫𝑖∀‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑐 ‪𝑗=1‬‬
‫𝑖𝑏 ≤‬
‫‪max‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎 ‪𝑗=1‬‬
‫‪𝑥1 , … , 𝑥𝑛 ≥ 0‬‬
‫דוגמא‪ :‬בעיית עזר ‪1#‬‬
‫בעיה מקורית‬
‫צורת ה‪ slack-‬ההתחלתית‬
‫אינה מתאימה לפתרון‬
‫אפשרי‪.‬‬
‫בעיית עזר‬
‫קיים פתרון אפשרי שערכו‬
‫אפס‪𝑥0 = 0, 𝑥1 = 1 :‬‬
‫‪ . 𝑥2 = 1‬זהו גם פתרון‬
‫אפשרי לבעיה המקורית‪.‬‬
‫‪15‬‬
‫‪max 2𝑥1 − 𝑥2‬‬
‫‪2𝑥1 − 𝑥2 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 ≤ −4‬‬
‫‪𝑥1 , 𝑥2 ≥ 0‬‬
‫‪max −𝑥0‬‬
‫‪2𝑥1 − 𝑥2 − 𝑥0 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 − 𝑥0 ≤ −4‬‬
‫‪𝑥0 , 𝑥1 , 𝑥2 ≥ 0‬‬
‫דוגמא‪ :‬בעיית עזר ‪2#‬‬
‫בעיה מקורית‬
‫צורת ה‪ slack-‬ההתחלתית‬
‫אינה מתאימה לפתרון‬
‫אפשרי‪.‬‬
‫בעיית עזר‬
‫לא קיים פתרון אפשרי‬
‫שערכו אפס‪ ,‬ולכן אין פתרון‬
‫אפשרי לבעיה המקורית‪.‬‬
‫‪16‬‬
‫‪max 2𝑥1 − 𝑥2‬‬
‫‪2𝑥1 − 𝑥2 ≤ 2‬‬
‫‪𝑥2 − 𝑥1 ≤ −4‬‬
‫‪𝑥1 , 𝑥2 ≥ 0‬‬
‫‪max −𝑥0‬‬
‫‪2𝑥1 − 𝑥2 − 𝑥0 ≤ 2‬‬
‫‪𝑥2 − 𝑥1 − 𝑥0 ≤ −4‬‬
‫‪𝑥0 , 𝑥1 , 𝑥2 ≥ 0‬‬
‫מציאת פתרון אפשרי התחלתי‬
‫‪ ‬אם צורת ה‪ slack-‬ההתחלתית אפשרית‪ ,‬סיימנו‪.‬‬
‫‪ ‬אחרת‪ ,‬נבנה את בעיית העזר ונפתור אותה (למשל‪,‬‬
‫באמצעות הרצת סימפלקס)‪.‬‬
‫◦ אם ערך הפתרון האופטימלי לבעיית העזר קטן מאפס‪,‬‬
‫אין אף פתרון אפשרי לבעיה המקורית‪.‬‬
‫◦ אם ערך הפתרון האופטימלי לבעיית העזר שווה אפס‪,‬‬
‫זהו גם פתרון אפשרי לבעיה המקורית (לא כולל הערך‬
‫של ‪.(𝑥0‬‬
‫‪ ‬מה הבעיה בשיטה הזו?‬
‫‪17‬‬
‫◦ בשביל לפתור את בעיית העזר‪ ,‬צריך למצוא גם לה‬
‫פתרון אפשרי התחלתי‪ .‬בעצם חזרנו לאותה בעיה‪.‬‬
‫דוגמא‪ :‬בעיית עזר ‪( 1#‬עוד פעם)‬
‫בעיה מקורית‬
‫צורת ה‪ slack-‬ההתחלתית‬
‫אינה מתאימה לפתרון‬
‫אפשרי‪.‬‬
‫בעיית עזר‬
‫צורת ה‪ slack-‬ההתחלתית‬
‫אינה מתאימה לפתרון‬
‫אפשרי‪.‬‬
‫‪18‬‬
‫‪max 2𝑥1 − 𝑥2‬‬
‫‪2𝑥1 − 𝑥2 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 ≤ −4‬‬
‫‪𝑥1 , 𝑥2 ≥ 0‬‬
‫‪max −𝑥0‬‬
‫‪2𝑥1 − 𝑥2 − 𝑥0 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 − 𝑥0 ≤ −4‬‬
‫‪𝑥0 , 𝑥1 , 𝑥2 ≥ 0‬‬
‫מציאת פתרון אפשרי לבעיית העזר‬
‫‪ ‬למרות שגם צורת ה‪ slack-‬ההתחלתית של בעית‬
‫העזר אינה אפשרית‪ ,‬ביצוע פיבוט על ‪ 𝑥0‬תמיד‬
‫יביא אותנו לצורת ‪ slack‬אפשרית‪.‬‬
‫‪max −𝑥0‬‬
‫‪ ‬לדוגמא‪,‬‬
‫‪2𝑥1 − 𝑥2 − 𝑥0 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 − 𝑥0 ≤ −4‬‬
‫‪𝑥0 , 𝑥1 , 𝑥2 ≥ 0‬‬
‫‪19‬‬
‫פתרון אפשרי לבעיית העזר‪ :‬הסבר‬
‫‪ ‬על ידי ביצוע פיבוט על ‪ ,𝑥0‬אנו מגדילים את‬
‫הערך של ‪ 𝑥0‬עד שכל האילוצים מתקיימים‪.‬‬
‫‪ ‬בדוגמא‪:‬‬
‫◦ האילוץ של ‪ 𝑥3‬אינו מגביל‬
‫אותנו‪.‬‬
‫◦ האילוץ של ‪ 𝑥4‬דורש‬
‫שיתקיים ‪.𝑥0 ≥ 4‬‬
‫‪20‬‬
‫‪max −𝑥0‬‬
‫‪2𝑥1 − 𝑥2 − 𝑥0 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 − 𝑥0 ≤ −4‬‬
‫‪𝑥0 , 𝑥1 , 𝑥2 ≥ 0‬‬
‫פתרון אפשרי לבעיית העזר‪ :‬הסבר (‪)2‬‬
‫‪ ‬בצעד ה‪-‬פיבוט‪ ,‬נבחר את האילוץ שהקבוע בו‬
‫הינו הקטן ביותר‪ ,‬ונחליף בין ‪ 𝑥0‬לבין המשתנה‬
‫הבסיסי של האילוץ‪.‬‬
‫‪ ‬כלומר‪ ,‬אנו מגדילים את ‪ 𝑥0‬עד שאף משתנה‬
‫בסיסי אינו שלילי‪ .‬לכן‪ ,‬לאחר הצעד לא יהיו‬
‫קבועים שליליים‪ ,‬וצורת ה‪ slack-‬שתתקבל‬
‫אפשרית‪.‬‬
‫𝑖∀‬
‫‪+ 𝑥0‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎 ‪𝑗=1‬‬
‫‪max −𝑥0‬‬
‫‪𝑥𝑛+𝑖 = 𝑏𝑖 −‬‬
‫‪𝑥0 , 𝑥1 , … , 𝑥𝑛+𝑚 ≥ 0‬‬
‫‪21‬‬
‫מציאת פתרון אפשרי התחלתי‪ :‬סיכום‬
‫‪ ‬אם צורת ה‪ slack-‬ההתחלתית אפשרית‪ ,‬סיימנו‪.‬‬
‫‪ ‬אחרת‪ ,‬נבנה את בעיית העזר ונפתור אותה‬
‫(למשל‪ ,‬באמצעות הרצת סימפלקס)‪.‬‬
‫◦ אם ערך הפתרון האופטימלי לבעיית העזר קטן‬
‫מאפס‪ ,‬נודיע שאין פתרון אפשרי לבעיה המקורית‪.‬‬
‫◦ אחרת‪ ,‬נשתמש בפתרון שהתקבל בתור פתרון אפשרי‬
‫התחלתי לבעיה המקורית‪.‬‬
‫‪22‬‬
‫עוד כמה פרטים‬
‫‪ ‬נניח שמצאנו פתרון שערכו ‪ 0‬עבור בעיית העזר‪,‬‬
‫ולכן פתרון אפשרי עבור הבעיה המקורית‪ .‬כיצד‬
‫נמצא צורת ‪ Slack‬המתאימה לפתרון האפשרי‬
‫הזה?‬
‫◦ נמחק את כל המופעים של ‪ 𝑥0‬מצורת ה‪slack-‬‬
‫שהתקבלה‪ .‬זה לא ישפיע על הפתרון כיוון שערכו‬
‫צריך להיות ‪.0‬‬
‫◦ נחזיר את פונקציית המטרה המקורית‪ .‬אם יש בה‬
‫משתנים בסיסיים‪ ,‬נחליף אותם כרגיל באמצעות‬
‫האילוץ המתאים להם‪.‬‬
‫‪23‬‬
‫דוגמא‪ :‬סידור צורת ה‪ slack-‬ההתחלתית‬
‫פונקציית המטרה‬
‫של הבעיה המקורית‪.‬‬
‫‪-‬‬
‫‪24‬‬
1# ‫תכנות לינארי והמלחמה הקרה‬
‫ מתמטיקאי וכלכלן‬.Leonid Kantorovich 
‫ אזרח ברית המועצות היחיד‬.)1912-1986( ‫רוסי‬
.‫שזכה בפרס נובל לכלכלה‬
.)1939-‫◦ כנראה הראשון שניסח תוכנית לינארית (ב‬
‫ נכתב‬,‫◦ בהקדמה למאמר שבו ניסח את הבעיה‬
“I want to emphasize again that the greater
part of the problems of which I shall speak,
relating to the organization and planning of
production, are connected specifically with
the Soviet system of economy and in the
majority of cases do not arise in the economy
of a capitalist society.”
25
‫תכנות לינארי והמלחמה הקרה ‪2#‬‬
‫‪‬‬
‫כאשר התגלה האליפסואיד (האלג' הפולינומיאלי‬
‫הראשון לבעיה)‪ ,‬לקח הרבה זמן עד שהוא הגיע למערב‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪26‬‬
‫תקציר של המאמר התפרסם בעיתון מתמטי רוסי‪.‬‬
‫עותק דהוי של המאמר נשלח בדואר מהאקדמיה הפולנית‬
‫לפרופסור גרמני‪ .‬הפרופ' הביא את העותק לכנס מתמטיקאים‬
‫ושאל אם מישהו שמע על זה משהו‪.‬‬
‫בכנס היה משתתף שידע רוסית והקריא את הכתוב‪ .‬חשבו‬
‫שהדף ללא ההוכחות הוא עוד מקרה של פתרון שגוי‪ ,‬וערכו‬
‫התערבויות לגבי הנכונות שלו‪.‬‬
‫מתמטיקאי אמריקאי לקח את הדף‪ .‬כאשר הוא שהה‬
‫באמסטרדם‪ ,‬הוא ביקש מחבר צ'כי לתרגם אותו לאנגלית ושלח‬
‫אותו למספר חברים‪ .‬עדיין ללא שום תוצאה‪.‬‬
‫רק כאשר המתמטיקאי ההונגרי לזלו לובאש הגיע לביקור‬
‫בארה"ב‪ ,‬הוא הוכיח את הטענות במאמר‪ ,‬והתחילה ההיסטריה‬
‫סביבו‪.‬‬
‫הבעיה הדואלית‬
‫‪ ‬לכל בעיית תכנות לינארי בצורה סטנדרטית‬
‫ניתן להגדיר את הבעיה הדואלית לה‪.‬‬
‫◦ אם בבעיה הפרימאלית יש 𝑛 משתנים ו‪ 𝑚-‬אילוצים‪,‬‬
‫בבעיה הדואלית יהיו 𝑚 משתנים ו‪ 𝑛-‬אילוצים‪.‬‬
‫‪m‬‬
‫‪b y‬‬
‫‪i‬‬
‫‪i‬‬
‫‪minimize‬‬
‫‪i 1‬‬
‫‪for j  1,2,..., n‬‬
‫‪for i  1,2,..., m‬‬
‫‪27‬‬
‫‪n‬‬
‫‪yi  c j‬‬
‫‪m‬‬
‫‪a‬‬
‫‪ij‬‬
‫‪j‬‬
‫‪c x‬‬
‫‪j‬‬
‫‪maximize‬‬
‫‪j 1‬‬
‫‪for i  1,2,..., m‬‬
‫‪i 1‬‬
‫‪for j  1,2,..., n yi  0‬‬
‫‪x j  bi‬‬
‫‪n‬‬
‫‪a‬‬
‫‪ij‬‬
‫‪j 1‬‬
‫‪xj  0‬‬
‫דוגמא‬
‫‪ ‬מה השתנה?‬
‫◦ המקסימום הפך למינימום‪ .‬האי שוויונים התהפכו‪.‬‬
‫◦ החלפנו בין המקדמים של פונקציית המטרה לבין‬
‫הקבועים של האילוצים‪.‬‬
‫◦ ביצענו ‪ transpose‬למטריצת המקדמים‪.‬‬
‫‪28‬‬
‫תרגיל בדואליות‬
?‫ מהי הבעיה הדואלית של הבעיה הדואלית‬:‫תרגיל‬
m
(D)
b y
min
i 1
m
a
yi  c j
ij
i 1
yi  0
i
m
j  1,..., n
i  1,..., m
(P)
n
a
j 1
ij
c z
j 1
j
m
 (a
ij
i 1
i 1
i
yi )  c j
yi  0
i
j  1,..., n
i  1,..., m
dual(D)
min  (ci ) zi
n
j
z j  bi i  1,..., m
zj  0
 (b ) y
(D) max
i
n
max

j  1,..., n
n
 (a
j 1
ij
i 1
z j )  bi i  1,..., m
zi  0
i  1,..., n
29
‫תרגיל בדואליות (‪)2‬‬
‫‪‬‬
‫תרגיל‪ :‬מצאו תוכנית לינארית לבעיה הבאה‪ ,‬והסבירו‬
‫מהי הבעיה המתאימה לתוכנית הדואלית לה‪ :‬נתון גרף‬
‫לא מכוון ) ‪.G  (V , E‬‬
‫◦ רוצים לתת משקל אי שלילי לכל קשת בגרף כך‬
‫שסכום משקלי הקשתות יהיה מקסימלי‪.‬‬
‫◦ השמת המשקלים חייבת לקיים את האילוץ הבא‪.‬‬
‫לכל קודקוד בגרף‪ ,‬סכום משקלי הקשתות הסמוכות‬
‫אליו הינו לכל היותר ‪.1‬‬
‫‪0‬‬
‫‪1/ 2‬‬
‫‪1/ 2‬‬
‫‪30‬‬
‫‪0‬‬
‫‪1/ 2‬‬
‫‪1/ 2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫התוכנית הפרימאלית‬
‫‪ ‬מה המשתנים בתוכנית?‬
‫◦ לכל קשת 𝐸 ∈ 𝑒 ניצור משתנה 𝑒𝑥‪.‬‬
‫‪E‬‬
‫‪x‬‬
‫‪i‬‬
‫‪maximize‬‬
‫‪i 1‬‬
‫‪for j  1,2,..., V‬‬
‫‪for i  1,2,..., E‬‬
‫‪31‬‬
‫‪1‬‬
‫‪x‬‬
‫‪e‬‬
‫‪v j e‬‬
‫‪xi  0‬‬
‫סכום על כל‬
‫הקשתות‬
‫אשר מכילות‬
‫את הקודקוד‪.‬‬
‫התוכנית הדואלית‬
V
E
maximize
x
minimize
for j  1,2,..., V
y
i 1
x
v j e
e
1
xi  0
i
y
j 1
vei
v
1
for i  1,2,..., E y j  0
j
for i  1,2,..., E
for j  1,2,..., V
32
‫הבעיה הדואלית‬
‫‪V‬‬
‫‪j‬‬
‫‪y‬‬
‫‪minimize‬‬
‫‪j 1‬‬
‫‪for i  1,2,..., E‬‬
‫‪for j  1,2,..., V‬‬
‫‪1‬‬
‫‪v‬‬
‫‪y‬‬
‫‪vei‬‬
‫‪yj  0‬‬
‫‪ ‬מה הבעיה שהתוכנית הדואלית פותרת?‬
‫‪33‬‬
‫◦ רוצים לתת משקל אי שלילי לכל קודקוד‪ ,‬כך שסכום‬
‫משקלי כל הקודקודים מינימאלי‪.‬‬
‫◦ עבור כל קשת‪ ,‬סכום משקלי הקודקודים שהיא‬
‫נוגעת בהם נדרש להיות לפחות ‪.1‬‬
‫תכנות בשלמים‬
‫‪V‬‬
‫‪j‬‬
‫‪y‬‬
‫‪minimize‬‬
‫‪j 1‬‬
‫‪for i  1,2,..., E‬‬
‫‪for j  1,2,..., V‬‬
‫‪1‬‬
‫‪v‬‬
‫‪y‬‬
‫‪vei‬‬
‫‪yj  0‬‬
‫‪ ‬איזו בעיה התוכנית הייתה פותרת אם היינו‬
‫דורשים שהמשתנים יכילו רק ערכים שלמים?‬
‫‪34‬‬
‫◦ בפתרון אופטימלי‪ ,‬כל משתנה יקבל ערך ‪.0/1‬‬
‫◦ בעיית ‪ – Vertex Cover‬מציאת קבוצת קודקודים‬
‫קטנה ככל האפשר כך שכל קשת נוגעת בלפחות‬
‫זוהי בעיה קשה! (עברנו ל‪)ILP-‬‬
‫קודקוד אחד מהקבוצה‪.‬‬
‫מסקנה‬
‫‪ ‬כל משתנה בבעיה הפרימלית 𝑃 מתאים לאילוץ‬
‫בבעיה הדואלית 𝐷‪.‬‬
‫◦ בתרגיל‪ ,‬כל משתנה של 𝑃 התאים לקשת כלשהי של‬
‫הגרף‪ .‬ב‪ 𝐷-‬היה אילוץ שהתאים לקשת הזו‪.‬‬
‫‪ ‬כל אילוץ בבעיה הפרימלית 𝑃 מתאים למשתנה‬
‫בבעיה הדואלית 𝐷‪.‬‬
‫◦ בתרגיל‪ ,‬כל אילוץ של 𝑃 התאים לקודקוד כלשהו של‬
‫הגרף‪ .‬ב‪ 𝐷-‬היה משתנה שהתאים‬
‫‪0‬‬
‫לקודקוד הזה‪.‬‬
‫‪1‬‬
‫‪35‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫מה מעניין בדואליות?‬
‫‪ ‬נסמן ב‪ 𝑜𝑝𝑡𝑃 -‬את ערך הפתרון האופטימלי של‬
‫התוכנית 𝑃‪.‬‬
‫‪ ‬משפט הדואליות החלש‪ .‬בהנתן בעיה‬
‫פרימאלית 𝑃 והבעיה הדואלית לה 𝐷‪ ,‬בהכרח‬
‫מתקיים‬
‫𝐷𝑡𝑝𝑜 ≤ 𝑃𝑡𝑝𝑜‬
‫‪36‬‬
‫משפט הדואליות החלש‪ :‬יותר פרטים‬
‫‪ ‬נסמן פתרון אופטימלי של הבעיה הפרימלית‬
‫בתור 𝑛𝑥 ‪.𝑥1 , … ,‬‬
‫‪ ‬נסמן פתרון אופטימלי של הבעיה הדואלית‬
‫בתור 𝑚𝑦 ‪.𝑦1 , … ,‬‬
‫‪ ‬אז לפי המשפט‪ ,‬מתקיים‬
‫𝑚‬
‫𝑖𝑦 𝑖𝑏‬
‫≤ 𝑗𝑥 𝑗𝑐‬
‫‪𝑖=1‬‬
‫‪37‬‬
‫𝑛‬
‫‪𝑗=1‬‬
‫משפט הדואליות החלש‪ :‬הוכחה‬
‫נובע מהאילוצים 𝑗𝑐 ≥‬
‫𝑚‬
‫𝑖𝑦 𝑗𝑖𝑎 𝑖‬
‫𝑛‬
‫𝑗𝑥 𝑖𝑦 𝑗𝑖𝑎‬
‫𝑛‬
‫≤ 𝑗𝑥 𝑗𝑐‬
‫‪𝑖=1‬‬
‫‪𝑗=1‬‬
‫𝑚‬
‫𝑛‬
‫𝑖𝑦 𝑖𝑏‬
‫𝑚‬
‫≤ 𝑖𝑦 𝑗𝑥 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫‪38‬‬
‫‪𝑗=1‬‬
‫=‬
‫‪𝑗=1‬‬
‫‪𝑖=1‬‬
‫נובע מהאילוצים 𝑖𝑏 ≤‬
‫𝑗𝑥 𝑗𝑖𝑎 𝑗‬
‫מסקנות‬
‫‪ ‬הערך של כל פתרון אפשרי לבעיה הפרימלית ≥‬
‫הערך של כל פתרון אפשרי לבעיה הדואלית‪.‬‬
‫‪ ‬הסבר‪:‬‬
‫◦ בבעיה הפרימאלית‪ ,‬ערך הפתרון האופטימלי ‪‬‬
‫מהערכים של כל שאר הפתרונות האפשריים‪.‬‬
‫◦ בבעיה הדואלית‪ ,‬ערך הפתרון האופטימלי ≥ מהערכים‬
‫של כל שאר הפתרונות האפשריים‪.‬‬
‫◦ משפט הדואליות החלש‪ :‬ערך הפתרון האופטימלי‬
‫הפרימלי ≥ ערך הפתרון האופטימלי הדואלי‪.‬‬
‫‪39‬‬
‫מסקנות (‪)2‬‬
‫‪ ‬הערך של כל פתרון אפשרי לבעיה הפרימלית ≥‬
‫הערך של כל פתרון אפשרי לבעיה הדואלית‪.‬‬
‫‪ ‬אם הבעיה הפרימלית אינה חסומה אז לבעיה‬
‫הדואלית אין פתרון אפשרי‪.‬‬
‫‪ ‬הסבר‪:‬‬
‫◦ אם יש פתרון אפשרי לבעיה הדואלית‪ ,‬ערכו יהיה‬
‫גדול מכל הפתרונות לבעיה הפרימלית‪.‬‬
‫◦ אבל הבעיה הפרימלית אינה חסומה‪ ,‬ולכן נוכל לקבל‬
‫פתרון בעל ערך גדול כלל שנרצה עבורה‪.‬‬
‫◦ סתירה! ולכן אין פתרון לבעיה הדואלית‪.‬‬
‫‪40‬‬
‫מסקנות (‪)3‬‬
‫‪ ‬הערך של כל פתרון אפשרי לבעיה הפרימלית ≥‬
‫הערך של כל פתרון אפשרי לבעיה הדואלית‪.‬‬
‫‪ ‬אם הבעיה הפרימלית אינה חסומה אז לבעיה‬
‫הדואלית אין פתרון אפשרי‪.‬‬
‫‪ ‬אם הבעיה הדואלית אינה חסומה‪ ,‬אז לבעיה‬
‫הפרימלית אין פתרון אפשרי‪.‬‬
‫‪41‬‬
‫מסקנות (‪)4‬‬
‫‪ ‬הערך של כל פתרון אפשרי לבעיה הפרימלית ≥‬
‫הערך של כל פתרון אפשרי לבעיה הדואלית‪.‬‬
‫‪ ‬אם נתונים פתרון אפשרי 𝑛𝑥 ‪ 𝑥1 , … ,‬לבעיה‬
‫הפרימלית‪ ,‬ופתרון אפשרי 𝑚𝑦 ‪ 𝑦1 , … ,‬לבעיה‬
‫הדואלית כך שמתקיים‬
‫𝑚‬
‫𝑖𝑦 𝑖𝑏‬
‫𝑛‬
‫= 𝑗𝑥 𝑗𝑐‬
‫‪𝑖=1‬‬
‫‪𝑗=1‬‬
‫אז שני הפתרונות אופטימליים‪.‬‬
‫‪42‬‬
‫◦ לא קיים פתרון פרימלי בעל ערך גדול יותר‪ ,‬כיוון‬
‫שאז הוא יהיה גדול מערך של פתרון דואלי‪.‬‬
‫משפט הדואליות החזק‬
‫‪ ‬עבור כל תוכנית לינארית 𝑃 והתוכנית‬
‫הדואליות שלה 𝐷 בהכרח מתקיים‬
‫𝐷𝑡𝑝𝑜 = 𝑃𝑡𝑝𝑜‬
‫(אלא אם לאחת הבעיות אין פתרונות אפשריים‪).‬‬
‫‪43‬‬
‫משפט הדואליות החזק‪ :‬דוגמא‬
‫פרימאלי‬
‫דואלי‬
‫‪max 𝑥1 − 𝑥2‬‬
‫‪𝑥1 − 𝑥2 ≤ 2‬‬
‫‪𝑥1 − 5𝑥2 ≤ −4‬‬
‫‪𝑥1 , 𝑥2 ≥ 0‬‬
‫‪min 2𝑦1 − 4𝑦2‬‬
‫‪𝑦1 + 𝑦2 ≥ 1‬‬
‫‪−𝑦1 − 5𝑦2 ≥ −1‬‬
‫‪𝑦1 , 𝑦2 ≥ 0‬‬
‫ערך הפתרון האופטימלי‬
‫הינו ‪ .2‬הוא מתקבל למשל‬
‫כאשר ‪. 𝑥1 = 4, 𝑥2 = 2‬‬
‫‪44‬‬
‫ערך הפתרון האופטימלי‬
‫הינו ‪ .2‬הוא מתקבל למשל‬
‫כאשר ‪. 𝑦1 = 1, 𝑦2 = 0‬‬
‫פרימאלי‬
‫אוסף הנקודות‬
‫הנותנות פתרון‬
‫אופטימלי‬
‫‪x1  x2  0‬‬
‫‪x1  x2  1‬‬
‫‪x1  x2  2‬‬
‫דואלי‬
‫‪2 y1  4 y2  2‬‬
‫מסקנות ממשפט הדואליות החזק‬
‫‪ ‬נתונים פתרון אפשרי 𝑛𝑥 ‪ 𝑥1 , … ,‬לבעיה‬
‫הפרימלית‪ ,‬ופתרון אפשרי 𝑚𝑦 ‪ 𝑦1 , … ,‬לבעיה‬
‫הדואלית‪ .‬אז שני הפתרונות אופטימליים אם‬
‫ורק אם מתקיים‬
‫𝑚‬
‫𝑖𝑦 𝑖𝑏‬
‫= 𝑗𝑥 𝑗𝑐‬
‫‪𝑖=1‬‬
‫‪47‬‬
‫𝑛‬
‫‪𝑗=1‬‬
‫◦ רק צד אחד נבע ממשפט הדואליות החלש‪.‬‬
‫◦ דומה לתכונה של רשתות זרימה‪ :‬זרימה היא‬
‫מקסימלית אם ורק אם קיים ברשת חתך באותו‬
‫גודל‪.‬‬
‫עוד קשר בין התוכנית הפרימלית לדואלית‬
‫‪ ‬נתונה תוכנית לינארית‪ .‬נניח שצורת ה‪slack-‬‬
‫המתאימה לפתרון האופטימלי של התוכנית‬
‫הינה‬
‫‪′‬‬
‫𝐵 ∈ 𝑖∀‬
‫𝑗𝑥 𝑗𝑐 𝑁∈𝑗‬
‫‪′‬‬
‫𝑎‬
‫𝑗𝑥 𝑗𝑖 𝑁∈𝑗‬
‫‪max 𝜈 +‬‬
‫‪𝑥𝑖 = 𝑏𝑖′ −‬‬
‫‪𝑥1 , … , 𝑥𝑛+𝑚 ≥ 0‬‬
‫‪ ‬נראה שפתרון אופטימלי לבעיה הדואלית יהיה‬
‫‪′‬‬
‫𝑖‪−𝑐𝑛+‬‬
‫‪if 𝑥𝑛+𝑖 is nonbasic‬‬
‫‪otherwise‬‬
‫‪48‬‬
‫‪0‬‬
‫= 𝑖𝑦‬
‫השארנו את ההוכחה המסובכת לסוף‬
‫‪ ‬כעת נוכיח בבת אחת‪:‬‬
‫◦ את משפט הדואליות החזק‪.‬‬
‫◦ שצורת ה‪ slack-‬שסימפלקס עוצר בה מתאימה‬
‫לפתרון האופטימלי‪.‬‬
‫◦ שההצבה 𝑖𝑦 שראינו הינה פתרון אופטימלי לבעיה‬
‫הדואלית‪.‬‬
‫‪49‬‬
‫משהו מטופש לפני שמתחילים‬
‫‪50‬‬
‫הגדרות להוכחה‬
‫‪ ‬נסמן את צורת ה‪ slack-‬ההתחלתית בתור‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑐 ‪𝑗=1‬‬
‫𝑖∀‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎 ‪𝑗=1‬‬
‫‪max‬‬
‫‪𝑥𝑛+𝑖 = 𝑏𝑖 −‬‬
‫‪𝑥1 , … , 𝑥𝑛+𝑚 ≥ 0‬‬
‫‪ ‬נסמן את צורת ה‪ slack-‬שהאלג' החזיר בתור‬
‫‪′‬‬
‫𝑐‬
‫𝑗𝑥 𝑗 𝑁∈𝑗‬
‫‪′‬‬
‫𝑎‬
‫𝐵 ∈ 𝑖∀ 𝑗𝑥 𝑗𝑖 𝑁∈𝑗‬
‫‪max 𝜈 +‬‬
‫‪𝑥𝑖 = 𝑏𝑖′ −‬‬
‫‪𝑥1 , … , 𝑥𝑛+𝑚 ≥ 0‬‬
‫‪≤0‬‬
‫‪51‬‬
‫‪′‬‬
‫𝑗𝑐‬
‫𝐵 – קבוצת המשתנים הבסיסיים‪.‬‬
‫𝑁 – קבוצת המשתנים הלא בסיסיים‪.‬‬
‫אסטרטגיית ההוכחה‬
‫‪ ‬נוכיח שהערך של הפתרון שמתאים לצורת‬
‫ה‪ slack-‬שהאלג' עוצר בה שווה לערך הפתרון‬
‫הדואלי המוגדר ע"י‪:‬‬
‫‪′‬‬
‫𝑖‪−𝑐𝑛+‬‬
‫‪if 𝑥𝑛+𝑖 is nonbasic‬‬
‫‪otherwise‬‬
‫‪0‬‬
‫= 𝑖𝑦‬
‫‪ ‬ממשפט הדואליות החלש נובע שאם לפתרון‬
‫פרימאלי ולפתרון דואלי יש אותו ערך‪ ,‬שניהם‬
‫אופטימליים‪.‬‬
‫◦ זה יוכיח את שלוש הטענות שלנו‪.‬‬
‫‪52‬‬
‫הוכחה (‪)1‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑐 ‪𝑗=1‬‬
‫התחלתית‬
‫𝑖∀‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎 ‪𝑗=1‬‬
‫‪max‬‬
‫סופית‬
‫‪′‬‬
‫𝑐‬
‫𝑗𝑥 𝑗 𝑁∈𝑗‬
‫‪max 𝜈 +‬‬
‫‪′‬‬
‫𝑎‬
‫𝐵 ∈ 𝑖∀ 𝑗𝑥 𝑗𝑖 𝑁∈𝑗‬
‫‪𝑥𝑛+𝑖 = 𝑏𝑖 −‬‬
‫‪𝑥𝑖 = 𝑏𝑖′ −‬‬
‫‪𝑥1 , … , 𝑥𝑛+𝑚 ≥ 0‬‬
‫‪𝑥1 , … , 𝑥𝑛+𝑚 ≥ 0‬‬
‫‪ ‬שתי צורות ה‪ slack-‬מתארות את אותה הבעיה‪,‬‬
‫ולכן כל הצבה תביא לאותו ערך בשתיהן‪.‬‬
‫‪‬‬
‫נגדיר ‪ . ∀𝑗 ∈ 𝐵 𝑐𝑗′ = 0‬קיבלנו‪:‬‬
‫𝑚‪𝑛+‬‬
‫𝑗𝑥 ‪𝑐𝑗′‬‬
‫‪53‬‬
‫‪𝑗=1‬‬
‫𝑚‬
‫‪′‬‬
‫𝑐‬
‫𝑗‪𝑗=1 𝑛+𝑗 𝑥𝑛+‬‬
‫‪𝑐𝑗′ 𝑥𝑗 = 𝜈 +‬‬
‫𝑛‬
‫‪𝑐𝑗 𝑥𝑗 = 𝜈 +‬‬
‫𝑁∈𝑗‬
‫‪+‬‬
‫𝑛‬
‫‪′‬‬
‫𝑐‬
‫𝑗𝑥 𝑗 ‪𝑗=1‬‬
‫‪=𝜈+‬‬
‫‪.‬‬
‫‪𝑗=1‬‬
‫הוכחה (‪)2‬‬
‫‪′‬‬
‫𝑖‪𝑦𝑖 = −𝑐𝑛+‬‬
‫𝑚‬
‫𝑚‬
‫‪′‬‬
‫𝑖‪𝑐𝑛+‬‬
‫= 𝑖‪𝑥𝑛+‬‬
‫𝑖‪−𝑦𝑖 𝑥𝑛+‬‬
‫‪𝑖=1‬‬
‫𝑛‬
‫𝑗𝑥 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫𝑚‬
‫‪−𝑦𝑖 𝑏𝑖 −‬‬
‫‪𝑗=1‬‬
‫=‬
‫‪𝑖=1‬‬
‫𝑛‬
‫‪𝑥𝑛+𝑖 = 𝑏𝑖 −‬‬
‫𝑗𝑥 𝑗𝑖𝑎‬
‫‪𝑗=1‬‬
‫‪54‬‬
‫הוכחה (‪)3‬‬
‫𝑚‪𝑛+‬‬
‫𝑛‬
‫𝑗𝑥 ‪𝑐𝑗′‬‬
‫‪𝑐𝑗′ 𝑥𝑗 +‬‬
‫‪𝑗=𝑛+1‬‬
‫𝑛‬
‫‪𝑐𝑗 𝑥𝑗 = 𝜈 +‬‬
‫‪𝑗=1‬‬
‫𝑛‬
‫‪𝑗=1‬‬
‫𝑚‬
‫𝑗𝑥 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫𝑚‬
‫𝑛‬
‫‪𝑐𝑗′ +‬‬
‫𝑗𝑥 𝑖𝑦 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫𝑛‬
‫‪𝑐𝑗′ 𝑥𝑗 +‬‬
‫‪−𝑦𝑖 𝑏𝑖 −‬‬
‫‪𝑗=1‬‬
‫‪55‬‬
‫הראינו שני‬
‫שקפים אחורה‪.‬‬
‫‪=𝜈+‬‬
‫‪𝑗=1‬‬
‫𝑚‬
‫‪𝑦𝑖 𝑏𝑖 +‬‬
‫‪𝑗=1‬‬
‫‪= 𝜈−‬‬
‫‪𝑖=1‬‬
‫נובע מהשקף‬
‫הקודם‪.‬‬
‫תוצאות ראשונות‬
‫‪ ‬קיבלנו שלכל הצבת ערכים ל‪ 𝑥1 , … , 𝑥𝑛 -‬מתקיים‬
‫𝑛‬
‫𝑚‬
‫‪𝑐𝑗′ +‬‬
‫𝑗𝑥 𝑖𝑦 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫𝑚‬
‫‪𝑦𝑖 𝑏𝑖 +‬‬
‫‪𝑗=1‬‬
‫𝑛‬
‫‪𝑐𝑗 𝑥𝑗 = 𝜈 −‬‬
‫‪𝑖=1‬‬
‫‪𝑗=1‬‬
‫𝑚 = 𝜈‪.‬‬
‫‪ ‬נציב ‪ , 𝑥𝑗 = 0‬לכל 𝑗 ‪ ,‬ונקבל 𝑖𝑏 𝑖𝑦 ‪𝑖=1‬‬
‫‪ ‬כלומר‪ ,‬הערכים 𝑛𝑦 ‪ 𝑦1 , … ,‬מביאים לפתרון של‬
‫הבעיה הדואלית שערכו גם 𝜈‪.‬‬
‫◦ ממשפט הדואליות החלש נובע ש‪ 𝑦1 , … , 𝑦𝑛 -‬ושהפתרון‬
‫המתאים לצורת ה‪ slack-‬הסופית שניהם אופטמליים‪.‬‬
‫‪ ‬מה עדיין חסר בהוכחה? להראות שהפתרון‬
‫הדואלי אפשרי!‬
‫‪56‬‬
‫בדרך לפתרון אפשרי‬
‫‪ ‬ראינו שלכל הצבת ערכים 𝑛𝑥 ‪ 𝑥1 , … ,‬מתקיים‬
‫𝑛‬
‫𝑛‬
‫‪𝑐𝑗′ +‬‬
‫𝑗𝑥 𝑖𝑦 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫𝑚‬
‫‪𝑦𝑖 𝑏𝑖 +‬‬
‫‪𝑗=1‬‬
‫𝑛‬
‫‪𝑐𝑗 𝑥𝑗 = 𝜈 −‬‬
‫‪𝑗=1‬‬
‫‪𝑖=1‬‬
‫‪ ‬נציב ‪ 𝑥𝑗 = 1‬ואפס בכל שאר המשתנים‪ ,‬ונקבל‪:‬‬
‫𝑛‬
‫𝑖𝑦 𝑗𝑖𝑎‬
‫𝑛‬
‫‪𝑐𝑗 = 𝑐𝑗′ +‬‬
‫≤ 𝑖𝑦 𝑗𝑖𝑎‬
‫‪𝑖=1‬‬
‫‪𝑖=1‬‬
‫‪≤0‬‬
‫‪ ‬כלומר‪ ,‬ערכי 𝑖𝑦 מקיימים את האילוץ ה‪ 𝑗-‬של‬
‫הבעיה הדואלית‪ .‬וזה מתקיים לכל 𝑗‪.‬‬
‫‪57‬‬
‫‪𝑐𝑗′‬‬
‫פתרון אפשרי‬
‫‪ ‬בשקף הקודם הוכחנו שערכי 𝑖𝑦 מקיימים את‬
‫כל האילוצים של הבעיה הדואלית‪ ,‬שאינם‬
‫אילוצי אי שליליות‪.‬‬
‫‪−𝑐 ′‬‬
‫𝑥‬
‫‪ ‬מההגדרה‪∈ 𝑁 :‬‬
‫𝑖‪𝑛+‬‬
‫𝐵 ∈ 𝑖‪𝑥𝑛+‬‬
‫𝑖‪𝑛+‬‬
‫‪0‬‬
‫= 𝑖𝑦‬
‫‪′‬‬
‫𝑖𝑐‬
‫‪ ‬כיוון שמתקיים ‪ ≤ 0‬נובע ‪. 𝑦𝑖 ≥ 0‬‬
‫‪ ‬הפתרון הדואלי אפשרי‪ ,‬ולכן שני הפתרונות‬
‫אופטימליים!‬
‫‪58‬‬
‫∎‬
‫מי גילה את הדואליות?‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪59‬‬
‫ב‪ 1947-‬בא דנציג הצעיר לפרינסטון אל ‪John von‬‬
‫‪ Neumann‬הגדול והציג לו לראשונה את עבודתו‬
‫כתגובה‪ ,‬וון נוימן פרש לפניו במשך שעה וחצי השערה‬
‫שפיתח על המקום על תורת הדואליות‪ ,‬על בסיס עבודתו‬
‫בתורת המשחקים‬
‫דנציג ההמום חזר למשרדו‪ ,‬כתב מאמר שהוכיח את‬
‫הדואליות ‪ -‬אך לא פירסם אותו‬
‫‪ Alan Tucker‬ו‪ David Gale-‬פרסמו הוכחה פורמלית‬
‫ראשונה לדואליות ב‪1951-‬‬
‫כיום נהוג לייחס את התורה לוון נוימן ואת ההוכחה‬
‫לטאקר וגייל‬
‫ולסיום‪ ...‬סקר הוראה‪...‬‬
‫‪60‬‬