מבני נתונים ואלגוריתמים - מחברת קורס/גרפים/אלגוריתמי זרימה/תרגילים/יריד תעסוקה 1/שאלה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

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

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

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

  1. אם הזוג (i, j) מופיע בW', אז הוא גם מופיע בW.
  2. אם הזוג (i, j) מופיע בW', אז אין זוג אחר בW' שאברו הראשון .
  3. אם הזוג (i, j) מופיע בW', אז אין זוג אחר בW' שאברו השני .


רמז

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