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

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

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

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

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

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