次元 の行列を考えてみましょうNx2
。各行には一様 PDF (つまり、確率密度関数) の下限と上限が含まれます。
オーバーラップの数をカウントしたいのですが、オーバーラップは 2 つの PDF がオーバーラップしている状態として定義されます。
- PDF1:
[2,5]
- PDF2:
[3,6]
- 2 つの PDF は間隔で重なり合っています
[3,5]
。
明らかに、3 つの PDFp1
とが重複p2
している場合、 vs. 、vs. 、vs . の3つのp3
重複をカウントします。p1
p2
p1
p3
p2
p3
オーバーラップをカウントする次の MATLAB コードを作成しました。
for m = 1:N-1
for k = m+1:N
l1 = dataService.getObjectCoordinate(m,1);
l2 = dataService.getObjectCoordinate(k,1);
u1 = dataService.getObjectCoordinate(m,2);
u2 = dataService.getObjectCoordinate(k,2);
if (l1 <= l2 && l2 <= u1) || (l2 <= l1 && l1 <= u2)
numOverlaps = numOverlaps + 1;
end
end
end
しかし、ご想像のO(N^2)
とおり、これは のようになりN
ます。で 3 時間前に実行を開始しましたN=10000
が、まだ実行中です。
アプリオリにいくつかの比較を除外して、提案されたアルゴリズムの複雑さを軽減する方法を提案できますか?
前もって感謝します。