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