
算法
泡泡茶壶Wending
男
展开
-
k-d Tree KD 树 交替建树
总结下:KD树的每个节点都有一个坐标值和子树区域的坐标范围。所以KD树的节点可以表示一个空间范围,并且它本身也是这个范围内的一个样本点。KD查询效率高 就是因为目标点通过估价函数和整个空间范围计算距离,只在距离最近的空间内的点做距离比较,距离远的空间里的点就先被排除了,这就是上面说的通过估价函数做最优性剪枝。最近的点应该位于:以查询点为圆心,以它到近似点的距离为半径的圆域内。例题:给定平面上n个点,找出其中的一对点的距离使得在这n个点的所有点对中,该距离为所有点对中最小的。原创 2023-08-16 01:22:24 · 264 阅读 · 0 评论 -
广度优先搜索(BFS)与深度优先搜索(DFS)
一般来说,能用DFS解决的问题,都能用BFS。 DFS由于其易于编写(递归),易于理解的特点被广泛使用,而且像比如floodfill这种算法来说,DFS的常数时间开销会较少。所以对于一些能用DFS就能轻松解决的,为何要用BFS?杀鸡焉用牛刀? 多数情况下运行BFS所需的内存会大于DFS需要的内存(DFS一次访问一条路,BFS一次访问多条路),DFS容易爆栈(栈不易"控制"),BFS通过控制队列可以很好解决"爆队列"风险。 至于具体取舍,要看具体应用环境,由于搜索顺序不同,即使用相同的剪枝也会导致在不同时原创 2020-08-13 20:12:43 · 321 阅读 · 0 评论 -
高中数学_直线方程一些公式
若直线l与直线3x+4y-1=0平行,且距离为2,则直线l的方程为______ 解析几何中有一个定理: 直线L1:Ax+By+C1=0与直线L2:Ax+By+C2=0的距离为: d=|C1-C2|/√(A^2+B^2). 设直线l的方程:3x+4y+a=0 则d=|a+1|/√(3^2+4^2)=|a+1|/5=2 |a+1|=10 a1=9 , a2=-11 所以直线l的方程为:3原创 2015-04-03 14:28:43 · 2391 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
时间复杂度 时间复杂度简单的理解就是执行语句的条数。如果有循环和递归,则忽略简单语句,直接算循环和递归的语句执行次数。 比如: [java] view plaincopy int x = 1;//时间复杂度为O(1) for(int i=0; i System.out.println(i); }/转载 2015-07-08 00:43:29 · 526 阅读 · 0 评论 -
算法之排列与组合算法
1. 前言 本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等。 2. 排列算法 常见的排列算法有: (A)字典序法 (B)递增进位制数法 (C)递减进位制数法 (D)邻位对换法 (E)递归法 介绍常用的两种: (1) 字典序法 对给定的字符集中的字符规定了一个先后关系,在此基础上按照顺序依次产转载 2015-03-10 11:41:21 · 541 阅读 · 0 评论 -
全排列和全组合实现
全排列 所谓全排列,就是打印出字符串中所有字符的所有排列。例如输入字符串abc,则打印出 a、b、c 所能排列出来的所有字符串 abc、acb、bac、bca、cab 和 cba 。 一般最先想到的方法是暴力循环法,即对于每一位,遍历集合中可能的元素,如果在这一位之前出现过了该元素,跳过该元素。例如对于abc,第一位可以是 a 或 b 或 c 。当第一位为 a 时,第二位再遍历集合,发现 a转载 2015-07-17 00:47:24 · 845 阅读 · 0 评论