Алгоритм поиска самого загруженного периода?

У меня есть некоторые данные вроде этого:

1: 2 - 10
2: 3 - 15
3: 4 - 9
4: 8 - 14
5: 7 - 13
6: 5 - 10
7: 11 - 15

Я попытаюсь представить представление, чтобы сделать его более ясным:

        1     2     3     4     5     6     7     8     9     10     11     12     13     14     15
1             |--------------------------------------X---------|
2                   |--------------------------------X--------------------------------------------|
3                         |--------------------------X---|
4                                                  |-X-------------------------------------|
5                                           |--------X------------------------------|
6                               |--------------------X----------|
7                                                                     |---------------------------|

Итак, в данном примере 8-9 является критическим периодом, если используется вторая схема, потому что все точки активны. Как быстро и хорошо решить эту проблему в Python? Я думаю об использовании динамического программирования, но есть ли другие подходы, которые предлагаются?

Мой подход до сих пор:

Я больше думал с точки зрения реального времени. Итак, всякий раз, когда я получаю новую точку, я делаю следующее: Предположим, у меня уже есть 2-10 , и я получаю 3-15 , затем я выбираю максимум начала и минимум конца, поэтому в данном случае это 3-10 и увеличиваем счетчик этого интервала до 2. Затем появляется третья точка в 4-9 , выберите максимальное значение, равное 4, а минимальное - 9, и обновите значение 3-10 до 4-9 и обновите счет до 3. Теперь, когда приходит 8-14 , я выбираю начало этого интервала больше 4-9 , а конец этого интервала меньше 4-9 . В данном случае это неправда, поэтому я создам новую корзину 8-14 и поставлю счет на 1. Это не весь алгоритм, но он должен дать общее представление о том, кто я. делать здесь. Я посмотрю, смогу ли я набросать псевдокод.

24
задан Legend 24 April 2011 в 04:59
поделиться