当前位置: 首页 > news >正文

西安地区专业做网站公司查看网站备案号

西安地区专业做网站公司,查看网站备案号,百科网站推广,深圳网页制作服务商KD树#xff08;K-Dimensional Tree#xff09;是一种用于多维空间的二叉树数据结构#xff0c;旨在提供高效的数据检索。KD树在空间搜索和最近邻搜索等问题中特别有用#xff0c;允许在高维空间中有效地搜索数据点。 重要性质 1.分割K维数据空间的数据结构 2.是一颗二叉树…KD树K-Dimensional Tree是一种用于多维空间的二叉树数据结构旨在提供高效的数据检索。KD树在空间搜索和最近邻搜索等问题中特别有用允许在高维空间中有效地搜索数据点。 重要性质 1.分割K维数据空间的数据结构 2.是一颗二叉树 3.切分维度上左子树值小于右子树值 #include iostream #include vector #include algorithm #include cmath// 定义二维点的结构体 struct Point2D {double x;double y;Point2D(double _x, double _y) : x(_x), y(_y) {} };// 定义KD树节点 struct KDTreeNode {Point2D point;KDTreeNode* left;KDTreeNode* right;KDTreeNode(Point2D _point) : point(_point), left(nullptr), right(nullptr) {} };class KDTree { private:KDTreeNode* root;// 构建KD树的递归函数KDTreeNode* buildKDTree(std::vectorPoint2D points, int depth) {if (points.empty()) {return nullptr;}// 选择轴线交替选择x和y坐标int axis depth % 2;// 按轴线排序点if (axis 0) {std::sort(points.begin(), points.end(), [](const Point2D a, const Point2D b) {return a.x b.x;});} else {std::sort(points.begin(), points.end(), [](const Point2D a, const Point2D b) {return a.y b.y;});}// 选择中间点作为节点int median points.size() / 2;KDTreeNode* node new KDTreeNode(points[median]);// 递归构建左子树和右子树std::vectorPoint2D leftPoints(points.begin(), points.begin() median);std::vectorPoint2D rightPoints(points.begin() median 1, points.end());node-left buildKDTree(leftPoints, depth 1);node-right buildKDTree(rightPoints, depth 1);return node;}// 在KD树中查找最近邻点的递归函数KDTreeNode* findNearestNeighbor(KDTreeNode* node, Point2D target, int depth, KDTreeNode* best, double bestDistance) {if (node nullptr) {return best;}// 计算当前节点到目标点的距离double currentDistance distance(node-point, target);// 更新最近邻点和距离if (currentDistance bestDistance) {best node;bestDistance currentDistance;}// 选择子树int axis depth % 2;KDTreeNode* nearSubtree;KDTreeNode* farSubtree;if (axis 0) {if (target.x node-point.x) {nearSubtree node-left;farSubtree node-right;} else {nearSubtree node-right;farSubtree node-left;}} else {if (target.y node-point.y) {nearSubtree node-left;farSubtree node-right;} else {nearSubtree node-right;farSubtree node-left;}}// 递归搜索更近的子树best findNearestNeighbor(nearSubtree, target, depth 1, best, bestDistance);// 如果可能搜索更远的子树if (shouldSearchFarSubtree(node, target, bestDistance)) {best findNearestNeighbor(farSubtree, target, depth 1, best, bestDistance);}return best;}// 计算两点之间的欧几里得距离double distance(Point2D a, Point2D b) {double dx a.x - b.x;double dy a.y - b.y;return std::sqrt(dx * dx dy * dy);}// 检查是否需要搜索更远的子树bool shouldSearchFarSubtree(KDTreeNode* node, Point2D target, double bestDistance) {int axis node-point.x target.x ? 0 : 1; // 如果轴线是x则比较x坐标如果轴线是y则比较y坐标double nodeDistance axis 0 ? node-point.x - target.x : node-point.y - target.y;return nodeDistance * nodeDistance bestDistance;}public:KDTree(std::vectorPoint2D points) {root buildKDTree(points, 0);}// 查找最近邻点Point2D findNearestNeighbor(Point2D target) {double bestDistance std::numeric_limitsdouble::max();KDTreeNode* bestNode findNearestNeighbor(root, target, 0, nullptr, bestDistance);return bestNode-point;} };int main() {// 创建一些二维点std::vectorPoint2D points {{2.0, 3.0},{5.0, 4.0},{9.0, 6.0},{4.0, 7.0},{8.0, 1.0},{7.0, 2.0}};// 构建KD树KDTree kdTree(points);// 查找最近邻点Point2D target(9.0, 2.0);Point2D nearestNeighbor kdTree.findNearestNeighbor(target);std::cout The nearest neighbor to ( target.x , target.y ) is ( nearestNeighbor.x , nearestNeighbor.y ) std::endl;return 0; }
http://www.dnsts.com.cn/news/108265.html

相关文章:

  • iis 发布网站 500企业机房建设公司
  • 深圳网咯鸟网站建设公司怎么样注册公司最少需要多少钱
  • 公司建设网站费用吗深圳做网站龙华新科
  • 深圳做英文网站的公司互动平台网站建设
  • 用哪个网站做相册视频个人网站制作基本步骤
  • 做内容网站现在还做响应式网站吗
  • 网站文件解压网站建设 ader
  • 上海好的网站设计公司一个公司可以做两个网站不
  • 深圳市公司网站建设价格陕西省建设信息网站
  • 上海黄浦区网站建设登录浙江省建设信息港
  • 已备案网站域名青岛电子商务的网站建设
  • 河南移动商城网站建设动画设计专业好的学校
  • 简洁大气公司网站天长市城乡规划建设局网站
  • 冀州做网站的公司百度搜索引擎网址格式
  • 上国外网站用什么机箱好一个人做网站原型
  • 国外私人网站二级域名免费分发
  • 上海网站建设技术托管wordpress 火车头
  • wordpress 站内信 群发常州网站建设价位
  • 网站怎么发外链安卓app市场
  • 建设 信用中国 网站外包的优缺点
  • 如何做自己微网站北京seo顾问服务公司
  • 电脑pc端网站建设是什么意思济南网站制作软件
  • 网站维护外包方案重庆选科网站
  • wordpress怎样搭建外贸网站网址导航系统
  • 网站关键词排名优化价格网络游戏传奇
  • 杭州平台网站建设wordpress漫画主题推荐
  • 子网站建设工作运营推广培训课程
  • 网站建设方案预算费用预算聚美优品网站建设导向
  • 唐山做网站公司建e设计网
  • 汕头市做网站深圳龙岗区地图全图