0

次のような形式で、セッションの開始時間と終了時間のリストがあります。

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にあり、一方の列でdatetimeを開始し、もう一方の列でdatetimeを終了します。

基本的に私がやりたいことは、このデータの後処理です。独自のアプリケーションを開発するか、単に Excel を使用するか、何を使用すればよいかまだわかりません。これは私が助けを求めていた場所です。

基本的に私がやりたいことは、x の期間、簡単にするために 15:00 - 16:00 の時間にワークアウトすることです。これらのセッションに基づいて、その時間の同時接続数を計算したいと思います。

アイデアの提案、どのように、何を使用するのですか? エクセル?vs2008?

それをExcelに保存することの1つの良い点は、グラフなどを簡単に作成できることだと思います...そして、私は常にvs.

4

2 に答える 2

2

これは決して簡単な問題ではないと思います。問題をもう一度述べさせてください。各接続を、開始値と終了値を持つ線上のセグメントと見なすことができます。あなたが見つけようとしているのは、ヌルでない交差を持つセグメントの最大のサブセットです。そのサブセット内の要素の数は、同時接続の数です。それを解決できれば、限られた期間の答えを見つけるのは簡単です (開始値が期間の開始前にある場合、期間の開始時に接続が開始されるように、各接続を「切り捨てる」だけです)。
これが難しいと思う理由は、たとえば 1:00 から 2:00、1:00 から 1:15、1:45 から 2:00 の 3 つのセグメントを使用すると、3 つすべてが重なるが、 2 つの同時接続。したがって、各接続が重複している他の接続の数を確認するだけでは十分ではありません。いわば、重複がどのように重複しているかを実際に考慮する必要があります。
少なくとも VBA を使用している場合は、ほとんどのことを Excel で実行できます。そのため、それが実際の問題ではないと思います。問題はアルゴリズム自体です。
編集:私はいくつかの簡単な調査を行いました.Marzulloのアルゴリズムはあなたがやろうとしていることに近いようです. もう少し掘り下げますが、それが出発点になるかもしれません。
編集 2まともな答え/概算を得る 1 つの「安上がりな」方法は、考慮している期間を連続した小さな間隔 (例: 1 時間を 5 分のセグメントに分割) に分割し、各セグメントについて、重複する接続をカウントすることです。これは、ほとんどのセグメントが交差するセグメントを明示的に特定しようとするよりもはるかに高速です。

于 2009-12-01T05:30:01.213 に答える