整数1维碰撞检测

直接两两检测是n方级别的时间复杂度,其实可以提高的。以下是一种基于排序的方法,针对1维,整数精度的情况,也就是许多整数区间中哪些相交的问题。

基本思想是对所有区间的下界和上届都混在一起进行排序,并记下每个端点的序号,如果某个区间的上界序号不是下界序号+1的话,那就说明发生了相交。在此基础上,可以二分查找和哪些个端点相交了。无碰撞情况时间复杂度是logN(快排,数量很大的话用计数基数排可以进一步降到N) + N(检查)。全碰撞情况时间复杂度是logN + NlogN。这方法在时间和空间上算是做个折中吧。

对于序号相同和排序稳定性引起的可能漏检的问题,比如两个长度为1完全重合的区间,很可能排序成aSt,aEd,bSt,bEd的情况。为此,在排序前先对各区间的范围做个变换使得st一定排在ed前。st‘ = st*2, ed‘=ed*2+1。但还是会可能出现aSt,bSt,bEd,aEd的情况,这时需注意,检测不是双向的,仅有a能检测到b与之相交,b却发现不了包在他外面的a。如果使用稳定的排序算法,或者进一步进行坐标变换,使得st相同时,进一步使用区间的其他稳定可比较信息可以解决。

接下来考虑和基于桶的排序比较下哪种更适用于目前的情况。在做规约冲突的识别。

时间: 2024-07-31 05:27:54

整数1维碰撞检测的相关文章

数据结构——动态规划

前言 “动态规划”在大一时,就知道了这个词,当时觉得好难好高大上,从此心生畏惧,闻词色变,心理阴影一直留存到现在. 在校招时,也多次被问到动态规划相关的题目. 本篇从一道经典动态规划题目说起,慢慢展开. 从题目讲起 [换钱的方法数] 给定数组 arr,arr 中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币都可以使用任意张,再给定一个整数 aim 代表要找的钱数,求换钱有多少种方法. [举例] arr = [5, 10, 25, 1],aim = 15 则组成 15 元的方法

矩阵中的最小路径

package 数阵中的最优路径; import java.util.Scanner; public class Main2 { /** * 数阵中的最小路径搜索 * 1:设计要点 * 应用动态规划设计从右下角逐行至左上角,确定n,m后,随机产生的整数二维数组a(n,m)作矩阵输出同时赋值给部分和数组b(n,m). * 数组b(i,j)为点(i,j)到到右下角的最小数值和stm(i,j)是点(i,j)向右(R)或向下(D)或向右下(0)的路标数组 * 注意到最后一行与最后一列各数只有一个出口,于

20162317 2016-2017-2《程序设计与数据结构》课程总结

20162317 2016-2017-2<程序设计与数据结构>课程总结 总目录 每周作业链接汇总 实验报告链接汇总 团队项目报告链接汇总 代码托管链接 课堂项目实践或课后作业 课堂的收获和不足 问卷调查 每周作业链接汇总 每周作业目录 第一周作业 第二周作业 第三周作业 第四周作业 第五周作业 第六周作业 第七周作业 第八周作业 第九周作业 第十周作业 第十一周作业 返回总目录 第一周作业 这一周我们主要学了: 算法复杂度的定义和计算 算法和效率的关系 算法的特点 时间复杂度和空间复杂度 返回

20162305 2016-2017-2《程序设计与数据结构》课程总结

20162305 2016-2017-2<程序设计与数据结构>课程总结 每周作业链接汇总 第一周作业: 简要内容: 什么是算法 算法的时间复杂度 什么是数据结构 二维码: 第二周作业 简要内容: 泛型的使用 利用Comparable接口进行查找比较 二维码: 第三周作业 简要内容: 查找的两种方法:线性查找和二分查找 排序的五种方法:选择排序.插入排序.冒泡排序.快速排序和归并排序 不同的查找和排序算法的时间复杂度 二维码: 第四周作业 简要内容: 本周我们主要完成了实验一的内容 二维码: 第

2018.1.7 计算机算法课后习题总结

习题解答提要 习题1 1-1 分数分解算法描述 把真分数a/b分解为若干个分母为整数分子为"1"的埃及分数之和: (1) 寻找并输出小于a/b的最大埃及分数1/c: (2) 若c>900000000,则退出: (3) 若c≤900000000,把差a/b-1/c整理为分数a/b,若a/b为埃及分数,则输出后结束. (4) 若a/b不为埃及分数,则继续(1).(2).(3). 试描述以上算法. 解:设 (这里int(x)表示取正数x的整数),注意到 ,有 算法描述:令c=d+1,则

分形几何学

分形几何是真正描述大自然的几何学. 基本思想 分形几何图 分形几何学的基本思想是:客观事物具有自相似的层次结构,局部与整体在形态.功能.信息.时间.空间等方面具有统计意义上的相似性,称为自相似性.例如,一块磁铁中的每一部分都像整体一样具有南北两极,不断分割下去,每一部分都具有和整体磁铁相同的磁场.这种自相似的层次结构,适当的放大或缩小几何尺寸,整个结构不变. 维数 维数是几何对象的一个重要特征量,它是几何对象中一个点的位置所需的独立坐标数目.在欧氏空间中,人们习惯把空间看成三维的,平面或球面看成

认识数学各个分支

数论 人类从学会计数开始就一直和自然数打交道了,后来由于实践的需要,数的概念进一步扩充,自然数被叫做正整数,而把它们的相反数叫做负整数,介于正整数和负整数中间的中性数叫做0.它们和起来叫做整数. 对于整数可以施行加.减.乘.除四种运算,叫做四则运算.其中加法.减法和乘法这三种运算,在整数范围内可以毫无阻碍地进行.也就是说,任意两个或两个以上的整数相加.相减.相乘的时候,它们的和.差.积仍然是一个整数.但整数之间的除法在整数范围内并不一定能够无阻碍地进行. 人们在对整数进行运算的应用和研究中,逐步

学科-几何:分形几何学

ylbtech-学科-几何:分形几何学 分形几何学是一门以不规则几何形态为研究对象的几何学.相对于传统几何学的研究对象为整数维数,如,零维的点.一维的线.二维的面.三维的立体乃至四维的时空.分形几何学的研究对象为非负实数维数,如0.63.1.58.2.72.log2/log3(参见康托尔集).因为它的研究对象普遍存在于自然界中,因此分形几何学又被称为“大自然的几何学”. 一个数学意义上分形的生成是基于一个不断迭代的方程式,即一种基于递归的反馈系统.分形有几种类型,可以分别依据表现出的精确自相似性

结对开发之返回一个二维整数数组中最大联通子数组的和

一.题目要求 输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和 二.解题思路 先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果. 三.程序代码 2 #include<iostream.h> 3 int main(int argc, char* argv[]