Algorithm
文章平均质量分 80
致守
这个作者很懒,什么都没留下…
展开
-
深度学习(1): 深度学习简介
从 2007 年 NVIDIA 公司发布了第一个支持 CUDA 的 GPU 后, GPU 的应用范围不断拓展,从政府实验室、大学、企业的大型数据中心,到现今非常火热的人工智能汽车、无人驾驶飞机和机器人等嵌入式平台, GPU 都发挥着巨大的作用。GPU是图形处理器,一般GPU就是焊接在显卡上的,大部分情况下,我们所说GPU就等于指显卡,但是实际情况是GPU是显示卡的“心脏”,是显卡的一个核心零部件,核心组成部分。CPU 拥有复杂的系统指令,能够进行复杂的任务操作和调度,两者是互补关系,而不能相互代替。转载 2024-03-05 20:31:16 · 17 阅读 · 0 评论 -
什么是P问题、NP问题和NPC问题
这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接下来你可以看到,把NP问题当成是 NPC问题是一个多大的错误。转载 2024-03-05 20:29:51 · 27 阅读 · 0 评论 -
C++进阶——STL源码之红黑树(_Rb_tree)
Rb_tree_node的实现如下,几个实现也很简单,在_Rb_tree_node中定义了结点数据域,在基类_Rb_tree_node_base中分别定义了left、right、parent,另外还有一个表示颜色的标记常量。通过获取_M_impl的构造器来完成节点的创建和销毁,这里和我们之前看到的是一致的,内存分配和构造是分开的,在_M_create_node中,先通过构造器去分配,然后通过construct来构造。_Rb_tree_impl还负责红黑树的初始化操作与内存管理。转载 2023-07-14 20:28:54 · 503 阅读 · 0 评论 -
【PID控制原理及其算法】
环节特点比例偏差一产生,控制器立即做出响应,产生控制作用,使控制量向减少偏差的方向变化积分消除系统的静态误差;但同时会降低系统的响应速度,增加超调量;积分时间越长,积分的积累作用越弱,消除静态误差的时间会变长;但系统过渡时不会产生振荡,可以减少超调量,提高系统的稳定性微分加快调节过程,阻止偏差的变化;有助于减少超调量,克服振荡,使系统趋于稳定。转载 2023-04-03 00:01:18 · 3466 阅读 · 0 评论 -
位置式PID与增量式PID区别浅析
增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作 影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作。增量型 PID,是对位置型 PID 取增量,这时控制器输出的是相邻两次采样时刻所计算的位置值之差,得到的结果是增量,即在上一次的控制量的基础上需要增加(负值意味减少)控制量。增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。转载 2023-04-02 23:55:38 · 353 阅读 · 0 评论 -
pid控制三个参数(PID原理和调试口诀详解)
3、比例微分控制规律(PD):微分具有超前作用,对于具有容量滞后的控制通道,引入微分参与控制,在微分项设置得当的情况下,对于提高系统的动态性能指标,有着显著效果。微分,反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。4、例积分微分控制规律(PID):PID控制规律是一种较理想的控制规律,它在比例的基础上引入积分,可以消除余差,再加入微分作用,又能提高系统的稳定性。转载 2023-04-02 23:52:24 · 10921 阅读 · 0 评论 -
通俗易懂的PID知识
第一部分啥是PID?PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。PID已经有107年的历史了。它并不是什么很神圣的东西,大家一定都见过PID的实际应用。比如四轴飞行器,再比如平衡小车......还有汽车的定速巡航、3D打印机上的温度控制器....就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。那么问题来了:比如,我想转载 2023-04-02 23:47:15 · 6043 阅读 · 2 评论 -
【 PID 算法 】PID 算法基础
这两天打算找个实习,奈何感觉自己有点菜,所以,就补习了一下知识,说一下,这个PID算法吧。PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法,该控制算法出现于20世纪30至40年代,适用于对被控对象模型了解不清楚的场合。转载 2023-04-02 22:41:32 · 943 阅读 · 0 评论 -
轨迹跟踪_预描点寻找
1] 赵凯, 朱愿, 冯明月, et al. 基于多点序列预瞄的自动驾驶汽车路径跟踪算法研究 [J]. 汽车技术, 2018, 11): 1-5.即,该点与车辆后轴中心在车辆纵轴上的距离小于预瞄距离,而该点下一个点与车辆后轴中心在车辆纵轴上的距离大于预瞄距离。当所有点到后轴中心的距离都大于预瞄距离时,选择最近的点;当所有点到后轴中心的距离都小于预瞄距离时,选择最远的点;为局部坐标系在全局坐标系下的角度,逆时针为正。为局部坐标系原点在全局坐标系下的坐标;为点在局部坐标系下的坐标;为点在全局坐标系下的坐标;转载 2023-02-23 15:23:48 · 614 阅读 · 0 评论 -
【自动驾驶轨迹规划之RRT算法】
天下武功唯快不破,转载 2022-08-12 10:18:47 · 1470 阅读 · 0 评论 -
动态分区分配算法(First Fit,Next Fit,Best Fit,Worst Fit)
1.首次适应算法(First Fit)2.循环首次适应算法(Next Fit)3.最佳适应算法(Best Fit)4.最坏适应算法(Worst Fit)1.首次适应算法(First Fit)2.循环首次适应算法(Next Fit)3.最佳适应算法(Best Fit)4.最坏适应算法(Worst Fit)1.首次适应算法(First Fit)2.循环首次适应算法(Next Fit)3.最佳适应算法(Best Fit)4.最坏适应算法(Worst Fit)(488条消息) 动态分转载 2022-06-15 09:54:16 · 9603 阅读 · 1 评论 -
intel dpdk api ring 模块源码详解
声明:此文档只做学习交流使用,请勿用作其他商业用途author:朝阳_tonyE-mail : [email protected] Date: 2013-8-5 19:31:33 MondayLast Change: 2013-8-6 14:33:21 Tuesday转载请注明出处:http://blog.csdn.net/linzhaolover此文请结合intel dpdk源码去阅读,源码可以去DPDK网页中下载;更多官方文档请访问http://dpdk.or.转载 2022-03-22 08:41:29 · 245 阅读 · 0 评论 -
无锁环形缓冲区队列 kfifo
kfifo的移植两个月前,我花了两天时间,查找Linux内核里kfifo的相关资料,将其从内核层移植到应用层,并成功应用于多线程CAN总线采集程序(一个线程接收/一个线程输出)。kfifo.c是从Linux 5.3 stable内核代码里复制出来的,路径是lib/kfifo,对应的kfifo.h路径是include/linux/kfifo.h。由于kfifo是内核里的代码,应用层无法直接使用,我做了如下修改: 注释掉无关的或不必要的代码,如对内核头文件的引用,如涉及dma、sgl的代码转载 2022-03-22 08:40:43 · 493 阅读 · 0 评论 -
巧夺天工的kfifo(修订版)
多年以前写了篇《巧夺天工的kfifo》文章,最近有好位网友发消息讨论kfifo实现细节。发现原文有些细节没有说得很清楚,甚至有点啰嗦,于是趁今晚有空修订一下。Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特性。kfifo就是这样的一类优美代码,它十分简洁,绝无多余的一行代码,却.转载 2022-03-21 17:56:12 · 148 阅读 · 0 评论 -
并发无锁队列学习(概念介绍)
1、前言 队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据处理压力。结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现。根据操作队列的场景分为:单生产者——单消费者、多生产者——单消费者、单生产者——多消费者、多生产者——多消费者四大模型。其实后面三种的队列,可以归纳为一种多对多。根据队列中数据分为:队列中的数据是定长的、队列中的数据是变长的。2、队列操作模型(1转载 2022-03-21 17:51:45 · 249 阅读 · 0 评论 -
高精度除法
794. 高精度除法 - AcWing题库 #include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> div(vector<int> &A,int b,int &r) { vector<int> C; r=0;转载 2022-03-21 13:34:39 · 71 阅读 · 0 评论 -
判断线段与圆弧的交点
最近项目中用到需要判断线段与圆弧的相交性问题,上网查找了下竟然发现没有相关的文章或代码,苦苦探索了下,想了个可行的方法,项目中使用到直线段由两个点表示,圆弧是由3个点按照逆时针的顺序给出。基本思路如下:1. 通过圆弧的3点可以求出圆弧所在圆的圆心与半径,从而确定圆C。2. 我们可以先判断线段与圆C有没有交点,如果没有说明没有相交,如果有转到3。3.如果有交点,先分别求出由圆心与圆弧起始点构成的向量A,圆心与圆弧结束点构成的向量B以及每个交点与圆心构成的向量Ci,接着求出AB的倒角 α 以及A转载 2022-01-20 10:32:26 · 813 阅读 · 0 评论 -
无人机飞控三大算法汇总
无人机飞控三大算法:捷联式惯性导航系统、卡尔曼滤波算法、飞行控制PID算法。一、捷联式惯性导航系统说到导航,不得不说GPS,他是接受卫星发送的信号计算出自身位置的,但是当GPS设备上方被遮挡后,GPS设备无法定位了。比如在室内、隧道内、地下等场所,基本收不到GPS信号。语录:任何一款有缺点的产品,必然成就了另一款能克服其缺点的产品。另一种导航方式是不依赖外界信息的,这种导航叫做惯性导航。那什么是惯性导航呢?他就是利用载体上的加速度计、陀螺仪这两种惯性远见,去分别测出飞行器的角运动转载 2021-12-17 10:02:23 · 8555 阅读 · 0 评论 -
层次分析法原理及计算过程详解
写在前面:层次分析法是一个很早的决策算法了,它能够处理多目标多准则的决策问题,思维方式却很简单。由于其系统性等优点,后续很多算法都有借鉴,所以这里写一写。网上关于该方法的讲解很多也很详细,所以本篇都是在前辈的基础上进行整理加工。文章尽量详细,然后加上一些我自己的理解,希望后面看到的人能够读起来更轻松,更容易接受。注意:文中说的判断矩阵,又称成对比较阵目录:1.层次分析法概论1.1 什么是层次分析法1.2什么是决策1.3决策分析法原理2.层次分析法的基本步骤2.1...转载 2021-12-01 13:12:20 · 8378 阅读 · 1 评论 -
翻译:如何在多因素影响下做出正确的决策--层次分析法
**层次分析法(AHP)是一种比较实用的决策方法。在实际情况中我们可能需要考虑问题所涉及的多个因素,这导致我们很难做出清晰的判断。AHP帮助我们结构化和量化的来思考这些因素,做出合理的决策。除此,AHP提出了一种透明可重复的决策方案,这样所有利益相关者可以了解这个决策产生的所有细节,这样我们就可以得出让人信服的决策结果。国内实际有很多对于层次分析法的介绍,但是过于偏重于理论。这些介绍中往往夹杂大量的计算方法说明,然而这些根本不是层次分析法的核心所在(层次分析法中涉及的计算问题通过第三方的工具即可解决),本转载 2021-12-01 11:41:09 · 736 阅读 · 0 评论 -
计算几何-经典算法-凸包
在学习了一些有关计算机几何的基础知识和一些基本工具之后要快速的解决一些简单的几何问题,如两点之间的距离、两线段的交点个数等等是可以轻松应付的,但是对于复杂点的几何问题,我们还是要有更好的算法,这样才可以更高效的解决它。在这一篇中来总结 平面凸包 的 Graham算法;http://www.cnblogs.com/jbelial/平面凸包 :定义: 对一个简单多边形来说,如果给定其边界上或内部的任意两个点,连接这两个点的线段上的所有点都被包含在该多边形的边界上或内部的话,则该多边形为凸多...转载 2021-11-16 14:20:39 · 325 阅读 · 0 评论 -
二维图形裁剪篇
小白谈计算机图形学(三)二维图形裁剪篇之Cohen-Sutherland代码裁剪算法,中点分割裁剪算法,Liang-Barsky算法详解引言 如何裁剪 Cohen-Sutherland代码裁剪算法 基本思想 Cohen-Sutherland操作步骤 中点分割裁剪算法(对分法) 基本思想 线段和窗口有交点情况 Liang-Barsky算法 Liang的初发现 如何判断入边出边?如何判断u uu值? Liang-Barsky算法特点 超链接引..转载 2021-11-16 14:17:30 · 1318 阅读 · 0 评论 -
全覆盖路径规划算法(CCPP)
1.基本概念CCPP: Complete Coverage Path Planning CCPP需解决的关键问题: 遍历工作区域内除障碍物以外的全部区域 在遍历过程中有效避开所有障碍物 在遍历过程中要尽量避免路径重复,缩短移动距离 CCPP技术指标: 区域覆盖率 路径重复率 总行程 死区:是指它的周边相邻区域,或者是边界,或者是障碍物,或者是已覆盖过的区域 全覆盖路径规划问题本质:在栅格地图中,全覆盖路径规划问题就演变为寻找机器人的下一个移动位置,只有准确找出了该位置转载 2021-10-30 17:49:41 · 7006 阅读 · 0 评论 -
一文搞懂极大似然估计
极大似然估计,通俗理解来说,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。可能有小伙伴就要说了,还是有点抽象呀。我们这样想,一当模型满足某个分布,它的参数值我通过极大似然估计法求出来的话。比如正态分布中公式如下:如果我通过极大似然估计,得到模...转载 2020-04-03 11:45:21 · 1510 阅读 · 0 评论 -
模拟退火算法(Simulated Annealing,SA)的全面讲解及python实现
https://blog.csdn.net/Trisyp/article/details/104953406抽象来源:美国物理学家Metropolis等人在1953年发表研究复杂系统,计算其中能量分布的文章时,使用蒙特卡洛模拟法计算多分子系统中分子能量分布。Kirkpatrick等人受其启发而发明了“模拟退火”这个名词,它模仿冶金过程中的退火原理,因为寻找问题的最优解(最值)即类似寻找系统的最低能量。因此系统降温时,能量也逐渐下降,而同样意义地,问题的解也“下降”到最值 核心思想:在冶金退火过程中,退转载 2021-09-14 16:34:03 · 2288 阅读 · 0 评论 -
混合A*算法研究
目的 看了一些介绍“混合A星”的博客,写的都太业余了。本文从专业的角度探讨一下无人车运动规划中著名的混合A星(Hybrid A Star)方法,首先我们最关心的两个问题是: ● 混合A星适用于什么场景? 存在障碍物的环境,低速、有运动约束的机器人或无人车。在无人驾驶上具体可以用于停车场的自动泊车的路径规划。 这里的关键词是“约束”,如果你看到有人把混合A星用在差速机器人或者全向机器人上,那你就可以得出判断:使用者不懂混合A星。因为,如果机器人没有运动约束,那么完全没有必要用混合A星。转载 2021-08-27 10:21:03 · 5114 阅读 · 1 评论 -
数学软件四大家族——Maple、MATLAB、MathCAD和Mathematica优缺点比较
目前在科技和工程界上比较流行和著名的数学软件主要有四个,分别是Maple、MATLAB、MathCAD和Mathematica。它们在各自针对的目标都有不同的特色。Maple V 系统Maple V是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。它还提转载 2021-08-27 09:43:21 · 19038 阅读 · 0 评论 -
Dijkstra算法及A*(Astar)实现最短路径
最短路径问题下面这份代码完全是基于邻接矩阵实现Dijkstra算法,算法竞赛的实现方法,原作者是Acwing大佬y神//稠密图:邻接矩阵#include <iostream>#include <algorithm>#include <cstring>#include <iomanip>#include <cstdlib>using namespace std;const int N = 510;int g[N][N];转载 2021-07-23 13:28:30 · 774 阅读 · 1 评论 -
A*算法(超级详细讲解,附有举例的详细手写步骤)
背景:项目需要接触此算法,以下是一些自学成果,如有不足之处,欢迎指出,必虚心接受。做了一份PPT来汇报,此处直接使用自己PPT的截图。部分图片来源网络,如有侵权立马删除,以下博文仅作为学习笔记。后期又新增了完整PPT。https://blog.csdn.net/dujuancao11/article/details/114842884目录A*寻路算法A*算法解决什么问题A*算法的基本原理A*算法的详细原理A*算法的详细原理之定义A*算法的详...转载 2021-07-23 13:26:01 · 7135 阅读 · 0 评论 -
A*,那个传说中的算法
周日的下午,微信simplemain,老王又来找大伙儿聊技术了~~今天想跟大家聊的,是我们经常用到,但是却让大家觉得十分神秘的那个算法:A* 。想必大家都玩儿过对战类的游戏,老王读书那会儿,中午吃完饭就会跟几个好哥们儿一起来两局红警。后来升级了,玩儿星际(是不是暴露年龄了,哈哈~~)。玩儿的时候,就会发现这里面的兵(为了方便描述,把坦克、飞艇、矿车、龙骑等统称为兵),你只要指定好地点,他们就会自己朝目的地进发,最终去向你指定的地点。不过红警的实现似乎要差一点,经常走绕路..转载 2021-07-23 11:26:34 · 169 阅读 · 0 评论 -
手把手教用matlab做无人驾驶(三)-路径规划A*算法
这里,我们更新主程序如下:% editor: Robert.Cao% 2018.9.1clcclear allclose alldisp('A Star Path Planing start!!')p.start=[1,1]; %起始点p.goal=[10,3]; %目标点p.XYMAX=11; obstacle=GetBoundary(p);%得到边界数据nObstacle=20;obstacle=GetObstacle(nObstacle,obstacle,p)转载 2021-07-23 11:21:32 · 1851 阅读 · 0 评论 -
一种实用的popcount实现方法
population count,简称popcount或叫sideways sum。是计算一个数的二进制表示有多少位是1。例子:数字13,二进制表示是1101 (前面28个0没写出来),有3个‘1’,所以popcount(13)=3。C语言实现代码如下:#include <stdio.h> const unsigned char __popcount_tab[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,...转载 2021-06-25 15:15:46 · 709 阅读 · 0 评论 -
popcount 算法分析
popcount[1](population count),也叫 sideways sum,是计算一个整数的二进制表示有多少位是1。在一些场合下很有用,比如计算0-1稀疏矩阵(sparse matrix)或位数组(bit array)中非零元素个数、比如计算两个字符串的汉明距离(Hamming distance)。 Intel 在2008年的Nehalem架构的处理器 Core i7 引入了SSE4.2指令集,其中有 CRC32 和 POPCNT 指令,POPCNT可以处理16, 32, 64...转载 2021-06-25 15:14:04 · 1178 阅读 · 0 评论 -
对于qsort和sort使用效率的详细对比
测试环境 VS2017思路:用qsort与sort分别对有n个随机数的数组进行m次排序。平台:x64sort:头文件: algorithm函数原型:template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last,转载 2021-06-11 22:04:21 · 656 阅读 · 0 评论 -
模糊综合评价法资料连接
常见的模糊综合评价法.ppt-原创力文档 (book118.com)原创 2021-06-10 11:25:24 · 124 阅读 · 0 评论 -
数模系列(3):模糊综合评价法
1.引子:好模糊啊,擦擦干净1.1. 先来瞎扯扯以前大三时,修过一门课,叫《模糊数学》,当时给我们上课的老师还是本科学院里传闻相对比较厉害的老师,但是总体给我和其他同学的感觉就是他一直在扯淡,啥都没学到,他自己还很自我感觉良好!回到模糊综合评价(Fuzzy Comprehension Evaluation Method),由于这种评价类的方法,有些较为主观,比如像层次分析法里的成对比较阵,需要将一些“砖家”主观上的想法转化为数字去处理,这样“砖家”的作用就很重要了,但是像我们这种真正的砖家去处理转载 2021-06-10 11:23:10 · 2810 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历迭代实现
二叉树的前序、中序、后序遍历迭代实现二叉树的前序遍历,迭代实现 根-左-右思路:1、 借用栈的结构2、 先push(root)3、 node = pop()3.1、list.add( node.val )3.1、push( node.right )3.3、push( node.left )4、循环步骤3直到栈空肯定很难理解,我们一步步执行下,请看图我们来实现一下代码public List<Integer> preorderTraversal(TreeNode转载 2021-05-08 13:32:45 · 163 阅读 · 0 评论 -
线段树介绍
文章目录1 线段树介绍1.1 线段树的结构及性质1.2 建树2 区间查询3 单点更新4 区间更新5 线段树的优缺点后记1 线段树介绍 线段树,我刚开始听到这个名字的时候,感觉就是高大上,怕难度会很大,但是实际学起来的时候,会发现还是挺好理解的,很亲民→_→ 扯远了,先盗个图抛个问题: 图中的RMQ指的是(Range Minimum Query)问题(区间最值查询)。按暴力法直接一个for循环过去查询,每次查询的时间复杂度为O(N),频繁查询就是O(MN)了,性能上肯定要爆转载 2021-04-30 18:00:53 · 362 阅读 · 1 评论 -
求最大公约数(辗转相除法)
最大公约数(Greatest Common Divisor)指两个或多个整数共有约数中最大的一个。也称最大公因数、最大公因子,a, b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个 整数的最大公约数也有同样的记号。求最大公约数有多种 方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的 最小公倍数记为[a,b]。再来介绍一下辗转相除法:辗转相除法又叫欧几里得算法,是欧几里得最先提出来的.辗转相除法...转载 2021-04-30 16:30:49 · 695 阅读 · 1 评论 -
树的三种存储结构
树的三种存储结构一、双亲表示法用一组连续的空间存储树的结点。每个节点中,除了有数据域,还附加一个指示数,指向其双亲结点在链表中的位置/************************************************************************//* 树的双亲表示存储结构 *//********************************************...转载 2021-04-30 10:07:41 · 4359 阅读 · 0 评论