Sind alle scheduling-Probleme NP-Hart?
Ich weiß, es gibt einige scheduling-Probleme gibt, sind NP-hart/NP-vollständige ... aber keiner von Ihnen erklärte in einer Weise zu zeigen, diese situation ist auch NP.
Wenn Sie eine Reihe von Aufgaben beschränkt sich auf eine startAfter, startBy, und Dauer alle versuchen, eine einzelne Ressource ... können Sie lösen, einen Zeitplan oder erkennen, dass es nicht gelöst werden kann, ohne eine erschöpfende Suche?
Wenn die Antwort "sorry pal, aber das ist NP-vollständig" was wäre die beste Heuristik(s?) verwenden und gibt es Möglichkeiten, um die Zeit verringern, die es nimmt, um a) zu lösen, einen Zeitplan und b) zu identifizieren, ein unauflöslicher Zeitplan.
Habe ich umgesetzt (in prolog) eine grundlegende Konfliktlösung Ziel durch Rekursion implementiert, dass ein "kleinsten Fenster first" - Heuristik. Diese findet tatsächlich die Lösungen ziemlich schnell, aber ist außergewöhnlich langsam auf der Suche nach ungültigen Zeitpläne. Gibt es eine Möglichkeit dies zu überwinden?
Yay für compound Fragen!
- Denkst du, du wirst noch mehr hinzufügen-Einschränkungen zu diesem problem? Wenn dem so ist, sieht es aus wie ein timetabling-problem, was ist 'normal' gelöst über contraint programming en.wikipedia.org/wiki/Constraint_programming oder auch lineare Programmierung en.wikipedia.org/wiki/Linear_programming werfen Sie einen Blick auf die open-source-Projekt namens unitime.org (constraint programming) und ilog ist der constraint-solver (sehr teuer, aber sehr schnell).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der schwierigste Teil der die meisten scheduling-Probleme in realen Leben ist immer halten Sie von der Zuverlässigkeit und vollständige Satz von Einschränkungen. Nehmen wir das Beispiel der Erstellung einer Universität Zeitplan:
Dann müssen Sie einen Zeitplan-system, die können mit Veränderungen zurecht, so dass wenn eine Einschränkung in letzter minute geändert, die Sie nicht haben, um zu ändern, den kompletten Fahrplan.
Alle der oben genannten ist normalerweise ignoriert, in der Forschung Papiere über scheduling-Systeme. Als mit der NP-Vollständigkeit für ein gegebenes scheduling-problem, in richtigen Leben kümmert man sich nicht als auch wenn es nicht NP-vollständig sind Sie kaum noch in der Lage sein, zu definieren, was die "beste Lösung" ist, also gut genug ist gut genug.
Sehen http://www.asap.cs.nott.ac.uk/watt/resources/university.html für eine Liste von Papieren, die helfen können Sie loslegen; es gibt immer noch zahlreiche Doktoranden in-scheduling-software.
Gibt es oft gute approximation algorithmen für NP-harte/vollständige Optimierung Probleme wie die Terminplanung. Sie vielleicht überfliegen Sie die Kurs Notizen von Ahmed Abu Safia auf Approximation Algorithmen für die Zeitplanung oder verschiedene Papiere.
In einem gewissen Sinne, alle public-key-Kryptographie mit "weniger harten" Problemen, wie z.B. factoring-teilweise deswegen, weil die NP-harte Probleme bieten zu viele einfache Fälle. Es ist das gleiche, NP-Vollständigkeit, das macht Sie "moralisch schwer", das haben Sie auch zu viele einfache Probleme, die oft fallen, die innerhalb einer bestimmten Fehler gebunden ist, optimal.
Gibt es eine tiefere Theorie der Härte der Annäherung erörtert, dass die Grenzen der Annäherung algorithmen obwohl.
Können Sie mit der dynamischen Programmierung zu lösen, sind einige dieser Dinge. Greedy-algorithmen auch in den Sinn kommen. Scheduling-Theorie ist sowohl tief und schön sind, aber diese beiden finde ich löse die meisten Probleme, die ich konfrontiert haben. Vielleicht habe ich Glück gehabt.
Was meinst du mit startBy?
Mit startAfter und wenn es nur eine Ressource, dann eine schnelle Lösung könnte sein, die Nutzung topologische Sortierung. Die Beispiel-Algorithmus läuft in linearer Zeit, schließt aber nicht den Fehler Fall, wenn der graph Zyklen enthält.
Hier ist eine, die nicht.
Planen eine Gruppe von jobs i= 1,2...n auf einer einzigen Maschine, die jeweils die Zeit t(i), so dass die Wartezeit minimiert wird.
Lösung: Sortieren in aufsteigender Reihenfolge von t(i). O(n log n)
Gute Liste hier
Betrachten Sie die scheduling-problem, das in der Klasse P:
Input: Liste von Tätigkeiten, die die Startzeit und die Endzeit.
Art von Endzeit.
Wählen Sie die ersten N Elemente der sortierten Liste zu finden, die maximale Menge von Aktivitäten, die Sie planen, können in einer bestimmten Zeit.
Hinzuzufügen, können Sie Vorsichtsmaßnahmen wie: alle Aktivitäten müssen am Ende 5pm, auch in diesem Fall arbeiten Sie die Liste durch, stoppen, wenn Sie erreichen eine Tätigkeit, die endet nach dieser Zeit.