Nehmen wir an, wir haben n Zeitpläne. Jeder Zeitplan i hat ein Gewicht w (i), eine Vorbereitungszeit prep (i) und eine Ruhezeitruhe (i).Gewichtete Aktivitätsauswahl mit teilweise Überlappungszeiten
Die Vorbereitungszeit bedeutet, dass wir, wenn wir Zeitplan i wählen, keine Zeitpläne wählen müssen i - prep (i), i - prep (i) + 1 ... i - 1.
Ruhezeit bedeutet, dass, wenn wir shedule i wählen, sind wir nicht verpflichtet, shedules zu wählen i + 1, i + 2 ... i + Rest (i)
Unsere Aufgabe ist es entsprechende Zeitpläne zur Auswahl nach Die obigen Einschränkungen, um zu maximieren.
Hinweis: Für i = 1, ignorieren wir prep (i) .Wir gehen davon aus, dass wir bereits vorbereitet sind.Für i = n wh ignoriert Rest (i).
Einschränkung: Die Vorbereitungszeit eines Zeitplans kann sich mit der Ruhezeit eines anderen Zeitplans überschneiden. Um ein Beispiel zu geben, wenn wir Ruhe (5) = 2, prep (8) = 2 haben, können wir beide Zeitpläne wählen. rest (5) = 2 bedeutet, dass wir, wenn wir 5 wählen, 6 und 7 nicht wählen dürfen. Prep (8) = 2 bedeutet, dass wir, wenn wir 8 wählen, nicht 6 und 7 wählen dürfen. So können wir sowohl 5 als auch 8 wählen.
Was ist der am besten geeignete Algorithmus für diese Aufgabe?
Wenn es nicht für die Beschränkung wäre, könnten wir sagen, dass jeder Zeitplan die Startzeit i - prep (i) und die Endzeit i + rest (i) hat. Wir hätten ein gewichtetes Aktivitätsauswahlproblem, so dass wir mit einem Greedy-Algorithmus ein optimales O (nlogn) erhalten hätten. Aber die Beschränkung verdirbt meinen Plan.