Вопрос

У меня есть список времени начала и окончания сеанса в следующем формате:

23/11/09 15:18:32, 23/11/09 15:18:40
23/11/09 15:20:02, 23/11/09 15:20:32
23/11/09 15:20:10, 23/11/09 15:20:40

На данный момент это в Excel: начало даты и времени в одном столбце, конец даты и времени в другом.

По сути, я хочу выполнить постобработку этих данных.Я пока не уверен, что использовать: разработать собственное приложение или просто использовать Excel, и именно здесь я надеялся на помощь.

По сути, я хочу потренироваться, скажем, в течение периода времени x, скажем для простоты, часа с 15:00 до 16:00.На основе этих сеансов я хочу подсчитать, сколько одновременных подключений за этот час.

Есть идеи, предложения, как, что использовать?превосходить?vs2008?

Думаю, единственное преимущество сохранения данных в Excel — это то, что я могу легко создавать диаграммы и т. д.и мне всегда было трудно работать с объектами datetime в vs.

Это было полезно?

Решение

Я считаю, что это не простая проблема. Позвольте мне переформулировать вашу проблему: вы можете рассматривать каждое соединение как сегмент на линии с начальным и конечным значениями. То, что вы пытаетесь найти, - это наибольшее подмножество сегментов, которые имеют ненулевое пересечение; количество элементов в этом подмножестве - это количество одновременных соединений. Если вы можете решить эту проблему, поиск ответа в течение ограниченного промежутка времени должен быть тривиальным (просто «обрезайте» каждое соединение, чтобы, если начальное значение было до начала периода, соединение начинается в начале периода).
Причина, по которой я думаю, что это сложно, состоит в том, что если вы берете три сегмента, скажем, с 1:00 до 2:00, с 1:00 до 1:15 и с 1:45 до 2:00, все 3 перекрываются, но у вас есть только 2 одновременных соединения. Так что простой проверки того, сколько других соединений перекрывают каждое соединение, будет недостаточно, вам придется на самом деле рассмотреть, так сказать, перекрытия, так сказать.
Большинство вещей можно сделать в Excel, по крайней мере, если вы используете VBA, так что я не думаю, что это действительно ваша проблема - проблема в самом алгоритме.
Изменить . Я быстро покопался, и похоже, что алгоритм Марзулло близко к тому, что вы пытаетесь сделать. Я выкопаю еще немного, но это может дать вам отправную точку.
Изменить 2 один " дешевый " способ получить достойный ответ / приближение состоял бы в том, чтобы разбить период, который вы рассматриваете, в небольших последовательных интервалах (например, перерыв один час в 5-минутных сегментах) и для каждого сегмента подсчитать соединения, которые перекрываются. Это должно быть намного быстрее, чем пытаться определить сегмент, где пересекается большинство сегментов!

Другие советы

Я предполагаю, что действительно неэффективным методом было бы пройти через начальное значение вызова, проверяя КАЖДОЕ конечное значение вызова, которое больше, увеличивая счетчик, если он больше (одновременный вызов)

тогда в определенный момент я мог бы сказать, сколько у них одновременных подключений...

не думаю, что мне очень поможет, если я захочу сказать что-то вроде того, сколько часов одновременно с 14:00 до 15:00

ах

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top