Registriert seit: 23. Jan 2008
3.686 Beiträge
Delphi 2007 Enterprise
|
AW: Größte Menge von parallelen Zeiträumen in einem Zeitraum ermitteln
3. Sep 2018, 18:08
Eventuell auch "schmutzig" numerisch lösbar, wenn man voraussetzen kann, dass ein Termin garantiert eine gewisse Länge nicht überschreitet: (Ich gehe mal davon aus, dass ein Termin durch Start- und Endzeitpunkt definiert wurde.)
Vom neuen Terminzeitpunkt ausgehend die maximale Termindauer zurückrechnen, und von da an alle Termine bis zum neuen durchgehen. Wenn ein Termin anfängt einen Zähler erhöhen, wenn einer endet einen weiteren Zähler erhöhen - dieser kann aber niemals größer als der dann gerade aktuelle Start-Zähler sein (passiert wenn man End-Zeiten von Terminen erreicht, die zum Durchlaufanfangszeitpunkt schon liefen.) Diesen also begrenzen.
Die Differenz der zwei Zähler ist dann die Anzahl der aktiven Termine zum Zeitpunkt des neuen Termins.
Man kann noch weiter gehen, denn es könnten ja Termine SPÄTER anfangen als der neue, und der neue würde dann das Limit sprengen, wenn der neue dann noch läuft. Daher also das obige bis zum ENDE des neuen Termins laufen lassen, und wenn die Differenz in diesem Schritt jemals größer wird als die maximale Terminanzahl, dann ist der Zeitraum abzuweisen.
Das zumindest wäre mein ad hoc Gedanke dazu.
Einzige Hürde: Man muss die Termin-Start- und Endzeitpunkte des Suchzeitraums in eine gemeinsame chronologische Liste bringen, und dort auch markieren was ein Start- und was ein Endpunkt ist. Das sollte sich aber relativ einfach machen lassen und kostet auch nicht arg viel Rechenleistung.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
Geändert von Medium ( 3. Sep 2018 um 18:13 Uhr)
|