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

免费制作app软件教程东莞seo排名扣费

免费制作app软件教程,东莞seo排名扣费,哪个免费建站好,网站搭建好了跳转到其他网KD树(K-Dimensional Tree)是一种用于多维空间的二叉树数据结构,旨在提供高效的数据检索。KD树在空间搜索和最近邻搜索等问题中特别有用,允许在高维空间中有效地搜索数据点。 重要性质 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::vector<Point2D>& 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::vector<Point2D> leftPoints(points.begin(), points.begin() + median);std::vector<Point2D> 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::vector<Point2D>& points) {root = buildKDTree(points, 0);}// 查找最近邻点Point2D findNearestNeighbor(Point2D target) {double bestDistance = std::numeric_limits<double>::max();KDTreeNode* bestNode = findNearestNeighbor(root, target, 0, nullptr, bestDistance);return bestNode->point;}
};int main() {// 创建一些二维点std::vector<Point2D> 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.tj-hxxt.cn/news/52693.html

相关文章:

  • 没有网站备案企业推广策略
  • 哈尔滨做网站哪家好百度网站客服电话
  • 网站图标怎么设置刷排名有百度手机刷排名
  • 网站中弹出广告怎么做网络营销战略
  • 如何查看网站关键词关键词排名什么意思
  • 怎么做淘客网站推广黑帽seo教程
  • .net网站开发流程360网站推广登录
  • 手机客户端网站建设seo在线教程
  • 郑州艾特网站建设公司google搜索引擎入口网址
  • 深圳网站建设公司613北京seo排名技术
  • centos6.8 wordpress做抖音seo排名软件是否合法
  • 自助建站系统官方版百度竞价排名名词解释
  • 企业网站备案不通过成都百度推广
  • 网站建设原则如何创建一个app
  • 如何做贴吧类网站多钱北京网络营销推广
  • 网页设计与制作简历seo快速排名
  • 建设一个视频网站的成本厦门seo网站排名优化
  • 盘锦做网站电话怎么做网站主页
  • 企业网站开发实训总结快速提高关键词排名的软件
  • 做地铁建设的公司网站网络优化有前途吗
  • iis怎么创建网站朋友圈广告投放价格表
  • 学做馒头面包哪个网站好网络营销的用户创造价值
  • php培训网站源码网站运营一个月多少钱
  • 怎么做代理网站搜索引擎营销的优势和劣势
  • 辽宁同鑫建设有限公司网站百度排行
  • 一个网站做数据维护3天正常吗seo快速排名软件app
  • wordpress编辑区块报警珠海百度搜索排名优化
  • 中华人民共和国城乡建设部网站首页外链平台
  • 西安网站制作顶尖公司百度平台投诉人工电话
  • 个人建设网站论文设计培训学院