Hallo zusammen,
hier mal eine Frage an die Mathematiker hier: Aktuell habe ich ein Problem beim Gleichverteilen von Terminen in einem Kalender.
Gegeben ist ein Kalender mit den Tagen Montag bis Samstag, und jeden Tag gibt es zwischen 7 und 20 Uhr "Slots" von 1 Stunde länge, das heißt ich kann Termine immer genau auf 8 Uhr, 9 Uhr, 10 Uhr etc. legen.
Für die Termine (die auch immer genau die Länge 1 Stunde haben, sprich genau einen Slot belegen) habe ich für jeden Slot die Information, ob er dort liegen darf, oder nicht. Also eine Art "Öffnungszeiten", zum Beispiel: Termin A darf Montags auf 8, 9, und 10 Uhr und Mittwochs auf 14, 15, und 16 Uhr platziert werden, Termin B dagegen darf Dienstags auf 11, 12, und 13 Uhr, und Donnerstags auf 18, 19 und 20 Uhr platziert werden.
Dabei sind es aber so viele Termine, dass eine Überschneidung der Öffnungszeiten ohne weiteres möglich ist.
Nun ist die Frage, wie bekomme ich per Algorithmus eine Verteilung hin, sodass die maximale Anzahl von Terminen in dem Kalender platziert werden können?
Wenn man das händisch macht, hat man ja ein menschliches Auge, das feststellt, dass z.B. eine Gruppe von Terminen nur Donnerstags platziert werden können und deswegen andere Termine, die andere Möglichkeiten als Donnerstag haben, den Donnerstag nicht belegen sollten. Doch wie löse ich das algorithmisch?
Mein bisheriger Ansatz war, die Termine nach der Anzahl ihrer Platzierungsmöglichkeiten zu sortieren und beginnend beim unflexibelsten nach und nach zum frühstmöglichen Zeitpunkt zu platzieren, doch das führt dazu, dass die ersten 3 Tage recht schnell voll sind und dann Termine, die evtl. nur in den drei Tagen platziert werden dürften, keinen freien Slot mehr finden. Was ein menschliches Auge anders gelöst hätte, weil es nicht frühstmöglich platziert, sondern im Gesamtkontext schaut.
Hat da jemand eine Idee, wie man das algorithmisch umsetzen kann, oder sowas vielleicht schonmal gemacht?
Vielen Dank für eure Hilfe!