最近點對問題 分治 蠻力時間效能對比

2021-09-17 22:25:03 字數 2323 閱讀 7281

}int main() ; //測試

srand(int(time(0)));

for (int i = 0; i < 100; i++)

points.push_back();

queryperformancefrequency(&frec);

queryperformancecounter(&start);

pointpair mindis = rude_find(points);

queryperformancecounter(&end);

printf("插入100個隨機座標點:\n\n");

printf("蠻力法求解所需時間為:%d 納秒\n", (end.quadpart - start.quadpart) * 1000000000 / frec.quadpart);

printf("蠻力法求解最近點對分別為:(%d,%d)和(%d,%d)\n", mindis.begin.x, mindis.begin.y, mindis.end.x, mindis.end.y);

printf("蠻力法求解最短距離是:%0.4lf\n\n", mindis.distance);

sort(points.begin(), points.end(), (const point&a, const point&b) ); //排序

queryperformancefrequency(&frec);

queryperformancecounter(&start);

mindis = find(points, 0, points.size() - 1);

queryperformancecounter(&end);

printf("分治法求解所需時間為:%d 納秒\n", (end.quadpart - start.quadpart) * 1000000000 / frec.quadpart);

printf("分治法求解最近點對分別為:(%d,%d)和(%d,%d)\n", mindis.begin.x, mindis.begin.y, mindis.end.x, mindis.end.y);

printf("分治法求解最短距離是:%0.4lf\n", mindis.distance);

return 0;

}

分治 最近點對問題

利用分治方法的經典問題 最近點對問題 closest pair of points problem 問題描述 n個點在公共空間中,求出所有點對的歐幾里得距離最小的點對。問題分析 該題直觀的解決方法便是brute force 暴力求解 利用分治思想進行求解。首先分析題目,符合分治法的適用條件,規模越小...

分治 最近點對問題

最近點對問題 在平面內有點集 s s 包含 n 個點。已知每個點的座標 x,y 求最近的兩點之間的距離 n 2 如果存在重合的兩個點,最近距離記為0。列舉的方法時間複雜度是o n 2 通過分治可以將時間複雜度降為o nlog n 利用一條直線將平面上的所有點集 s 分成兩部分s1 s2,分別計算這兩...

分治法和蠻力法MATLAB求最近點對

主程式 main.m clear clc n 20 隨機生成20個點 a rand n,2 10 將20個點按橫座標公升序排列 a sortrows a,1 蠻力法求隨機點的最近點對 mindist,x1,x2 bcloest a,1,n mindist1,y1,y2 cloest a,1,n 使用...