פתרון - Algorithms
Download
Report
Transcript פתרון - Algorithms
תרגול – 13עוד תכנות לינארי
0 .5
0 .3
0 .5
0 .5
0 .5
0
0
0
0
0
0 .4
0 .5
0 .3
0 .4
0 .3
0
0 .3
1
0
0
1
הבעיה הדואלית
n
2
c x
maximize
מתחילים בייצוג הסטנדרטי.
כל אילוץ הופך למשתנה וכל
n
.
לאילוץ
הופך
משתנה
a
x
b
for
i
1
,
2
,...,
m
ij j
i
j 1
מינימיזציה במקום מקסימיזציה.
אי השוויונות משנים כיוון.
xj 0
for j 1,2,...,n
אילוצי החיוביות נשארים ,אבל
בשביל המשתנים החדשים.
j
j
j 1
הבעיה הדואלית
n
maximize
c x
j 1
n
a
j 1
ij
j
m
x j bi for i 1,2,...,m
xj 0
minimize
j
i 1
m
a
i 1
for j 1,2,...,n
b y
ij
i
i
yi c j for j 1,2,...,n
yi 0
for i 1,2,...,m
3
דוגמא
maximizex1 6 x2
x1 3 x2 9
y1
y2
5 x1 4 x2 7
y3
x1 2 x2 18
x1 , x2 0
minimize18y1 9 y2 7 y3
y1 y2 5 y3 1
2 y1 3 y2 4 y3 6
y1 , y2 , y3 0
למטריצת המקדמיםtranspose עשינו
4
שאלה – 1זיווג שברי )(fractional matching
תרגיל :מצאו תוכנית לינארית לבעיה הבאה ,והסבירו מהי
הבעיה המתאימה לתוכנית הדואלית לה :נתון גרף לא מכוון
).G (V , E
◦ אנחנו רוצים לתת משקל אי שלילי לכל קשת בגרף כך
שסכום משקלי הקשתות יהיה מקסימאלי.
◦ לכל קודקוד בגרף ,סכום משקלי הקשתות הסמוכות אליו
הינו לכל היותר .1
5
איזו בעיה התוכנית הייתה פותרת אם היינו דורשים
שהמשתנים יכילו רק ערכים שלמים?
זיווג שברי -דוגמא
0 .5
0 .3
0 .5
0 .5
0 .5
6
0
0
0
0
0
0 .4
0 .5
0 .3
0 .4
0 .3
0
0 .3
1
0
0
1
פתרון – התכנית הפרימאלית
לכל קשת e Eניצור משתנה
לכל קודקוד v Vניצור אילוץ (בהמשך נקרא לו .) yv
.xe
x
e
maximize
eE
for v 1,2,..., V
for i 1,2,..., E
7
1
x
e
v e
xe 0
סכום על כל
הקשתות
אשר מכילות
את הקודקוד.
פתרון – התכנית הדואלית
E
maximize
x
minimize
for v 1,2,...,V
y
e 1
x
ve
e
1
xe 0
V
e
v 1
ve
for e 1,2,..., E
משתנה לכל קשת
אילוץ לכל קודקוד
y
v
1
yv 0
v
for e 1,2,..., E
for v 1,2,...,V
משתנה לכל קודקוד
אילוץ לכל קשת
8
משמעות התכנית הדואלית
V
y
v
minimize
v 1
for e 1,2,..., E
for v 1,2,...,V
1
v
y
ve
yv 0
מה הבעיה שהתוכנית הדואלית פותרת?
9
◦ רוצים לתת משקל אי שלילי לכל קודקוד ,כך שסכום
משקלי כל הקודקודים מינימאלי.
◦ עבור כל קשת ,סכום משקלי הקודקודים שהיא נוגעת
בהם נדרש להיות לפחות .1
משמעות התכנית הדואלית בשלמים
V
איזו בעיה התוכנית הייתה
פותרת אם היינו דורשים
שהמשתנים יכילו רק ערכים
שלמים?
j
y
minimize
j 1
for i 1,2,..., E
for v 1,2,...,V
1
y
v
yv 0
• כל קודקוד מקבל 0או ( 1למה לא יותר מ.)?1-
• לכן כל קודקוד נבחר או לא נבחר.
• מחפשים קבוצה בגודל מינימאלי של קודקודים.
• מה האילוץ? לפחות קודקוד אחד יגע בכל קשת.
• זאת בעיית – Vertex Coverמציאת קבוצה מינימאלית של קודקודים
כך שכל קשת נוגעת בלפחות קודקוד אחד מהקבוצה.
10
vei
משמעות התכנית הדואלית בשלמים
y
v 1
v
• – Vertex Coverמציאת קבוצה
מינימאלית של קודקודים כך שכל קשת
נוגעת בלפחות קודקוד אחד מהקבוצה.
0 .5
11
0 .5
0 .5
0 .5
0 .5
minimize
V
for e 1,2,..., E
for v 1,2,...,V
1
y
ve
v
yv 0
משפט הדואליות
משפט .אם לבעיית תכנות לינארי קיים פתרון פיזיבילי
אופטימאלי ,אז ערך הפתרון האופטימאלי של הבעיה
הפרימאלית יהיה זהה לערך הפתרון האופטימאלי של
.
הדואלית
הבעיה
0 .5
0 .5
0 .5
0 .5
0 .5
0 .5
0 .5
0
0 .5
0
0 .5
0 .5
שאלה – 2פיזיביליות לינארית
פיזיביליות לינארית ( - )LFנתונים mאי-שיוויונים
לינאריים ב n -משתנים .עלינו למצוא הצבה של ערכים
למשתנים אשר תספק את כל האילוצים.
(1נתון אלג' לפתרון בעיות .LPהסבירו כיצד ניתן להשתמש בו
על מנת לפתור בעיית .LF
(2נתון אלג' לפתרון בעיות .LFהסבירו כיצד ניתן להשתמש בו
על מנת לפתור בעיית .LPניתן להניח שקיים לבעיה פתרון
אופטימלי.
13
פתרון סעיף 1
(1נתון אלגוריתם לפתרון בעיות .LPהסבירו כיצד ניתן להשתמש
בו על מנת לפתור בעיית .LF
פתרון :נוסיף לבעיה פונקציית מטרה כלשהי ,ונקבל בעיית
תכנות לינארי.
למשל.Minimize 0 ,
את הבעיה שהתקבלה ניתן לפתור בעזרת האלגוריתם הנתון.
14
פתרון סעיף 2
)2נתון אלגוריתם לפתרון בעיות .LFהסבירו כיצד ניתן להשתמש בו
על מנת לפתור בעיית .LP
פתרון :נשתמש גם באילוצים של התוכנית הפרימאלית וגם
באילוצים של התוכנית הדואלית (כל אחת עם סט
משתנים משלה).
n
m
נוסיף אילוץ
c x by
i
i
i 1
j
j
j 1
כלומר ,אנו דורשים שהפתרון הפרימאלי יהיה שווה לפתרון
הדואלי .זה יתקיים רק עבור הפתרונות האופטימליים.
15
שאלה – 3זרימה
תרגיל :נתונה רשת זרימה . V , E, s, tתהי Pקבוצת כל
המסלולים מ s -ל . t -להלן תוכנית לינארית:
maximize x p
pP
e E
p P
) c (e
p
x
eP
xp 0
◦ מה היא מחשבת?
◦ אם המשתנים בתוכנית הדואלית היו מקבלים רק ערכים
שלמים ,מה היה הפתרון שלה מייצג?
16
שאלה – 3פתרון
maximize x p
pP
e E
) c (e
p P
◦ הערך x pמייצג את כמות הזרימה שאנחנו מעבירים
במסלול . p
◦ האילוצים מוודאים שבכל קשת לא תעבור יותר זרימה
מהקיבול שלה.
◦ אנחנו רוצים למקסם את הזרימה במערכת.
17
p
x
eP
xp 0
– התוכנית הדואלית3 שאלה
maximize x p
minimize c (e) ye
x
y
pP
eP
p
c ( e ) e E
xp 0
eP
p P
eE
e
1
ye 0
p P
e E
18
שאלה – 3התוכנית הדואלית
אם המשתנים בתוכנית הדואלית
היו מקבלים רק ערכים שלמים,
מה הפתרון שלה היה מייצג?
minimize c (e) ye
eE
p P
1
e E
• כל קשת מקבלת 0או ( 1למה לא יותר מ.)?1-
• לכן כל קשת נבחרת או לא נבחרת.
• האילוצים מחייבים שלפחות קשת אחת תיבחר מכל מסלול.
• מנסים להביא למינימום את הקיבולים של הקשתות הנבחרות.
• מה זה מזכיר לנו?
19
e
y
eP
ye 0
שאלה – 3חתך מינימאלי
למה זה חתך?
◦ נקרא לקבוצת הקשתות ש"נבחרו" .C -
◦ נוכל לזרוק את הקשתות ב ,C-להריץ BFSמהמקור ,ולהכניס את
כל הקודקודים שמצאנו ל .S-שאר הקודקודים יהיו ב.T-
◦ מהמינימליות של ,Cלא יהיו קשתות בין שני קודקודים באותו צד
של החתך.
למה החתך מינימלי?
◦ חתך מינימלי הוא פתרון פיזיבילי לבעיה.
◦ לא ייתכן פתרון עם ערך קטן יותר ,כיוון שאז היה קיים חתך קטן
יותר.
20
שאלה – 4צעצועים לחתולים
גליל
עמוד
21
שאלה – 4צעצועים לחתולים
יש לנו מפעל לצעצועי חיות.
אנחנו מוכרים גליל ב ₪ 45ועמוד ב. ₪ 35-
יש לנו 1000מ"ר של בד ,וצריך 10מ"ר לייצר גליל ו 3-מ"ר לעמוד.
יש לנו 250פרחים ,וצריכים 2פרחים לעמוד ופרח אחד לגליל.
יש לנו 500מטר חבל ,וצריך 7מטר חבל לעמוד.
22נרצה למקסם את הרווח.
שאלה – 4צעצועים לחתולים
רווח
בד
פרחים
חבל
maximize45x1 35x2
10x1 3 x2 1000
x1 2 x2 250
גלילים ופרחים
7 x2 500
x1 , x2 0
אנחנו מוכרים גליל ב ₪ 45ועמוד ב. ₪ 35-
יש לנו 1000מ"ר של בד ,וצריך 10מ"ר לגליל ו 3-מ"ר לעמוד.
יש לנו 250פרחים וצריכים 2פרחים לעמוד ופרח אחד לגליל.
יש לנו 500מטר חבל ,וצריך 7מטר חבל לעמוד.
נרצה למקסם את הרווח.
23
– הבעיה הדואלית4 שאלה
maximize45x1 35x2
10x1 3 x2 1000
x1 2 x2 250
7 x2 500
x1 , x2 0
minimize1000y1 250y2 500y3
10 y1 y2 45
3 y1 2 y2 7 y3 35
y1 , y2 , y3 0
24
שאלה – 4הבעיה הדואלית
חידה :כמה יצטרכו לשלם לנו כדי שישתלם לנו למכור?
כמה הוא משלם
minimize1000y1 250y2 500y3
תשלום על 10מ"ר בד +פרח צריך
להיות יותר מ₪ 45-
תשלום על 3מ"ר בד 2 +פרחים 7+
מטר חבל צריך להיות יותר מ₪ 35-
10 y1 y2 45
3 y1 2 y2 7 y3 35
y1 , y2 , y3 0
יחידה אחת מהמשאב
25
שאלה – 4הפרימאלית והדואלית
maximize45x1 35x2
מחיר כפול כמות
10x1 3 x2 1000
כמות כפול מחיר
כמות
minimize1000y1 250y2 500y3
מחיר
10 y1 y2 45
3 y1 2 y2 7 y3 35
y1 , y2 , y3 0
26
x1 2 x2 250
7 x2 500
x1 , x2 0
מחיר ליחידה
שאלה – 4שיוויון הפתרונות
• מתי נסכים למכור?
• אם ישלמו את הרווח המקסימאלי שלנו ומעלה ,ישתלם לנו למכור.
27
ולסיום
בהצלחה בבחינה!