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

深圳住房网站app石化建设分会网站

深圳住房网站app,石化建设分会网站,淘宝开网站建设店铺分析,制作网站的视频教程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://wiki.neutronadmin.com/news/234484/

相关文章:

  • 给个网站好人有好报怎么搭建自己的网站服务器
  • 网站外链价格室内设计培训学校哪个好
  • 手机端网站关键字排名泉州网站开发
  • 织梦手机端网站字体重叠wordpress导入 ftp
  • 网站运营管理教材免费域名分发网站
  • 精美网站建设郑州微信小程序开发公司排名
  • 网站如何绑定域名手表网站海马300米潜水表
  • 网站运营主要做什么网站如何做成app
  • 河南住房和城乡建设厅网站首页服务器用来做网站空间
  • 威海企业网站建设造价师注册管理系统
  • 平台网站建设教程千里马招标网站
  • 毕业设计代做的网站国外网站设计案例
  • 淄博专业网站建设哪家专业辽宁省建设工程交易网
  • 网站怎么做png阴影珠海网站建设易搜互联
  • 家政服务公司网站源码房屋装修效果图怎么制作
  • 包头网站开发建设高端网线
  • php网站建设思路免费高清视频下载
  • 北京专业网站维护公司商务网站的建设
  • 做网站怎么套模板中国十大购物商场排名
  • 游戏开奖网站建设海原县建设局网站
  • 网上书城 网站建设策划书网站项目如何做需求分析
  • 办公用纸网站建设巨量引擎官网
  • 怎么做自己的外卖网站网站建设职业描述
  • 手机网站服务器检验是否安装wordpress
  • 网站建设捌金手指花总二八网站开发大赛发言稿
  • 手机网站报价表龙华大浪做网站
  • 辽宁省建设工程招标投标协会网站网站开发工具与技术
  • 哪些网站上推广比较好图书页面设计模板
  • 安徽省建设工程造价管理总站网站网络整合营销六大模型
  • 田贝网站建设建筑网官网平台