Ho orari per l'avvio e l'interruzione e la data del servizio, come questa:
2000-01-01 23:00 23:20
2000-01-01 23:50 00:10
2000-01-01 00:20 00:30
L'ora di fine del secondo periodo e il terzo periodo devono essere spostati al giorno successivo, quindi il risultato sarebbe:
2000-01-01 23:00 2000-01-01 23:20
2000-01-01 23:50 2000-01- 02 00:10
2000-01- 02 00:20 2000-01- 02 00:30
Posso non assumere che le voci siano state inserite nell'ordine in cui i record sono inseriti (quindi la voce 2000-01-01 00:20 00:30
potrebbe non apparire dopo gli altri due, 00:20
potrebbe significare 2000-01-01 00:20
o %codice%). Invece, il mio criterio sarà:
Ridurre al minimo la durata tra il tempo minimo di inizio e il tempo massimo di arresto in ogni giorno.
In questo esempio:
Se supponevo che tutti i tempi siano nel 2000-01-01, la durata tra l'ora di inizio minima e l'ora di fine massima sarebbe di 23 ore (dalle 00:20 alle 23:20). Se sposto il secondo e il terzo periodo come nel mio esempio, la durata tra l'ora di inizio minima e l'ora di fine corsa massima è 1:30 (dalle 23:00 del 01/01 alle 00:30 del 01/02).
Esiste una classe di algoritmi, che coprirebbe questo tipo di ottimizzazione, se non qualche idea da cui partire?