- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机算法实验报告
实验一 最接近点对问题
实验目的
为进一步学习分治策略的基本思想,本次实验将通过求最接近点对问题来加深我们对分治策略的认识。
实验问题描述
给定平面上N个点,找出其中的一对点,使得在n 个点组成的所有点对中,该点对间的距离最小。
设计思路及步骤
将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求其最接近的点对。
先考虑一维的情形:设计一个求一维点集S的最接近点对的算法
Bool Cpairl(S,d)
{
N=|S|; if(n2) {d=无穷大;return falSe;} m=S中各点坐标的中位数;
构造S1和S2; //S1={x∈S|x=m},S2={x∈S|xm}
Cpairl(S1,d1); Cpairl(S2,d2); p=max(S1); q=max(S2);
D=min(d1,d2,q-p);
return true;
}
由此推广到二维的情形:
若矩形R中有多于6个S中的点,则由鸽舍原理易知,至少有一个(d/2)*(2d/3)的小矩形中有2个以上S中的点。设u,v是位于同一小矩形中的2个点,则
(x(u)-x(v))2+(y(u)-y(v))2=(d/2)2+(2d/3)2=25d2/36
因此 distance(u,v)=5d/6d,与d的意义相矛盾。
算法实现代码
//2d10-2?二维最邻近点对问题???
#includetime.h???
#includeiostream????
#includecmath???
using?namespace?std;??
const?int?M=50;??
//用类PointX和PointY表示依x坐标和y坐标排好序的点???
class?PointX?{??
public:???
int?operator=(PointX?a)const??
{?return?(x=a.x);?}??
int?ID;?//点编号???
float?x,y;?//点坐标????
};??
class?PointY?{???
public:???
int?operator=(PointY?a)const??
{?return(y=a.y);?}??
int?p;?//同一点在数组x中的坐标????
float?x,y;?//点坐标???
};??
float?Random();??
template?class?Type??
float?dis(const?Typeu,const?Typev);???
bool?Cpair2(PointX?X[],?int?n,PointX?a,PointX?b,?float?d);??
void?closest(PointX?X[],PointY?Y[],PointY?Z[],?int?l,?int?r,PointX?a,PointX?b,float?d);??
template?typename?Type???
void?Copy(Type?a[],Type?b[],?int?left,int?right);??
template?class?Type??
void?Merge(Type?c[],Type?d[],int?l,int?m,int?r);??
template?class?Type??
void?MergeSort(Type?a[],Type?b[],int?left,int?right);??
int?main()??
{???
srand((unsigned)time(NULL));??
int?length;??
cout请输入点对数:;??
cinlength;??
PointX?X[M];??
cout随机生成的二维点对为:endl;??
for(int?i=0;ilength;i++)??
{??
X[i].ID=i;??
X[i].x=Random();??
X[i].y=Random();??
cout(X[i].x,X[i].y)?;??
}??
PointX?a,b;???
float?d;??
Cpair2(X,length,a,b,d);???
coutendl;??
cout最邻近点对为:(a.x,a.y)和(b.x,b.y)?endl;??
cout最邻近距离为:?dendl;??
return?0;??
}??
float?Random()??
{??
float?result=rand()%10000;??
return?result*0.01;??
}??
//平面上任意两点u和v之间的距离可计算如下???
templat
您可能关注的文档
- 光纤通信考查报告.doc
- 运动估计算法实现.doc
- 系统的重构.doc
- 重构(zhang).doc
- 嵌入式虚拟仪器模拟通道的远程重构技术.doc
- 中国传媒产业规制的解构与重构.doc
- 动态能力(环境洞察能力、学习吸收能力、变革更新能力、快速反应能力和整合重构能力)测量量表.doc
- 02突围——时下课堂教学的检视与重构(2012.7.22).doc
- JPEG2000图像压缩算法标准.doc
- Opencv2图像算法库分析.doc
- 2025中考数学一轮复习第10讲 一元二次方程(含解析+考点卡片).pdf
- 螃蟹运动健康课件PPT.pptx
- 中药制剂技术试题库+答案(附解析).docx
- 10月机修钳工(设备钳工)习题库含答案(附解析).docx
- 2025中考数学一轮复习第11讲 分式方程(含解析+考点卡片).pdf
- 苏科版2025年新九数学核心考点精讲精练第11讲图形思想课--图形的相似(原卷版+解析).docx
- 苏科版2025年新九数学核心考点精讲精练第12讲图形思想课--相似三角形的判定(原卷版+解析).docx
- 2024年9月茶艺师习题库含答案(附解析).docx
- 2025中考数学一轮复习第12讲 不等式与不等式组(含解析+考点卡片).pdf
- 健康教育高血压课件.pptx
文档评论(0)