算法

数据结构的基本知识、算法

老子叫甜甜 提交于 2020-01-13 01:01:03
数据结构的基本知识 下面的都是摘自《大话数据结构》书中的内容,记下来可以时时查看: 数据:描述客观事物的符号,计算机可以操作的对象; 数据元素:组成数据的有一定意义的基本单位,作为整体能被计算机处理;人是人类的数据元素,牛马是牲畜类的数据元素 数据项:组成数据元素,人的眼睛耳朵就是人这个数据元素的数据项; 注意:数据项是数据的最小单位,不过讨论问题时数据元素才是数据模型的着眼点。 数据对象:性质相同的数据元素的集合,数据的子集 数据结构:相互存在关系的数据元素的集合。 逻辑结构、物理结构 逻辑结构:是指数据对象中数据元素之间的相互关系 集合结构,线性结构,树形结构,图形结构 物理结构:是指数据的逻辑结构在计算机中的存储形式 顺序存储结构,把数据元素存放在地址连续的存储单元里 链式存储结构,数据元素存储在在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系不能反应逻辑关系,因此需要一个指针存放数据元素的地址。 逻辑结构面向问题,物理结构面向计算机。 抽象数据类型 数据类型:一组性质相同的值的集合及定义在次集合上的一些操作的总称。 抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。 一个抽象数据类型定义了:一个数据对象、数据对象中个数据元素之间的关系及对数据元素的操作。 抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性

服务高可用:流控和熔断机制

空扰寡人 提交于 2020-01-13 00:49:11
流量控制 漏桶算法: 主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。它模拟的是一个漏水的桶,所有外部的水都先放进这个水桶,而这个桶以匀速往外均匀漏水,如果水桶满了,外部的水就不能再往桶里倒了。 这里你可以把这些外部的水想象成原始的请求,桶里漏出的水就是被算法平滑过后的请求。从这里也可以看出来,漏桶算法可以比较好地控制流量的访问速度。 令牌桶算法 控制的是一个时间窗口内通过的数据量。大概实现如下: 1.每1/r秒往桶里放入一个令牌,r是用户配置的平均发送速率(也就是每秒会有r个令牌放入) 2.桶里最多可以放入b个令牌,如果桶满了,新放入的令牌会被丢弃 3.如果来了n个请求,会从桶里消耗n个令牌。 4、如果桶里可用令牌数小于n,那么这n个请求会被丢弃或者等待新的令牌放入。 算法按一定速度均匀往桶里放入令牌,原始请求进入后,根据请求量从令牌桶里取出需要的令牌数,如果令牌数不够,会直接抛弃掉超限的请求或者进行等待,能成功获取到令牌的请求才会进入到后端服务器。 与漏桶算法精确控制速率不太一样的是,由于令牌桶的桶本身具备一定的容量,可以允许一次把桶里的令牌全都取出,因此,令牌桶算法在限制请求的平均速率的同时,还允许一定程度的突发流量。 全局流控 对于单机瓶颈的问题,通过单机版的流控算法和组件就能很好地实现单机保护。但在分布式服务的场景下,很多时候的瓶颈点在于全局的资源或者依赖

北风设计模式课程---模板方法模式与策略模式的区别

我的未来我决定 提交于 2020-01-13 00:30:39
北风设计模式课程---模板方法模式与策略模式的区别 一、总结 一句话总结: 整体替换 >< 特定点替换:策略模式更注重于: 一个“策略”是一个 整体的(完整的) 算法,算法是可以被整体替换的。而模板方法只能被替换其中的特定点,算法流程是固定不可变的。 1、模板方法模式与策略模式的思想的区别? 模板方法模式:算法流程固定,节点替换:定义一个算法流程,将一些特定步骤的具体实现、延迟到子类。使得可以在不改变算法流程的情况下,通过不同的子类、来实现“定制”流程中的特定的步骤。 策略模式:整体替换:使不同的算法可以被相互替换,而不影响客户端的使用。 二、模板方法模式与策略模式的区别 转自或参考:模板方法模式与策略模式的区别 https://blog.csdn.net/hudashi/article/details/50978969 原文: http://www.tuicool.com/articles/6JBN7z3 如果你还不了解 模板方法模式 和 策略模式 ,请先阅读《 策略模式(strategy) 》和《 模板方法模式 》 模板方法模式 的主要思想:定义一个算法流程,将一些特定步骤的具体实现、延迟到子类。使得可以在不改变算法流程的情况下,通过不同的子类、来实现“定制”流程中的特定的步骤。 策略模式的主要思想 :使不同的算法可以被相互替换,而不影响客户端的使用。 在思想和意图上看

聊聊密码学中的DES算法

こ雲淡風輕ζ 提交于 2020-01-12 23:39:24
用心分享,共同成长 没有什么比你每天进步一点点更实在了 <p align="center">本文已经收录至我的github,欢迎大家踊跃star 和 issues。</p> <p align="center"><a href=" https://github.com/midou-tech/articles " target="_blank"> https://github.com/midou-tech/articles</a></p&gt ;  今天要说点和你的隐私有关的事情,在这个信息化的时代,是不是真的有人一手握着你的信息,一手数着钞票呢?答案一定是 当然 。  说到网络安全,我就不得不提一个东西——<font face="宋体" color=blue size=4> 密码学 </font>(是不是听起来头皮发麻心跳加速),稳住稳住,老司机上线带你学。今天给大家say&see什么是密码学中的<font face="宋体" color=orange size=4> DES </font>。 简介   DES : English Name:Data Encrytion Standard 中文名:DES 算法,数据加密标准 是迄今为止世界上最为广泛使用和流行的一种分组密码算法。(听到这里有没有感觉有点东西) 1、参数介绍: data(加解密的数据)

Algorithms_算法思想_递归篇

*爱你&永不变心* 提交于 2020-01-12 21:55:33
文章目录 引导案例 递归的定义 什么样的问题可以用递归算法来解决 递归如何实现以及包含的算法思 斐波那契数列代码实现 递归的时间复杂度(`2^n`)和空间复杂度(`2^n`) 引导案例 案例一: 分销系统的返利: 比如B是A的下线,C是B的下线,那么在分钱返利的时候A可以分B,C的钱,这时候我们是不是就要分别找B,C的最后上级。这个问题我们一般怎么来解决呢? C–>B–>A 案例二: .斐波那契数列: 1 1 2 3 5 8 13 21 . . . . . . 有什么特点? 从第三个数开始 就等于前面两个数相加; 数论思想:利用数学公式或者定理或者规律求解问题; 算法思想中最难的点:递归+动态规划 树论中(比如二叉树,红黑树)和递归密不可分,所以递归一定要弄明白了。 递归的定义 递归算法是一种直接或者间接调用自身函数或者方法的算法。 通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。 举个生活中的例子 比如我们在某窗口排队人太多了,我不知道我排在第几个,那么我就问我前面的人排第几个, 因为知道他排第几我就知道我是第几了。但前面的人也不知道自己排第几那怎么办呢?他也可以继续往前面问, 直到问到第一个人,然后从第一个人一直传到我这里 我就很清楚的知道我是第几了 。 以上这个场景就是一个典型的递归

AStar算法优化

。_饼干妹妹 提交于 2020-01-12 20:27:53
A星算法其实并不是最短路径算法,它找到的路径并不是最短的,它的目标首先是能以最快的速度找到通往目的地的路 A星算法也有很多弊端,就比如如果目的地不能到达 他还是会遍历寻路(可以寻路的时候判断 也可以算的上优化) 其次,如果地图过大,计算起来会很消耗时间,所以可以在计算上进行优化 下面说一下优化的一些可行的方法 一.距离过长时 距离很大,中间有很多障碍物时,A星的算法就会遇到瓶颈,不断加入的可行走点使得排序速度越来越慢,最后可能造成CPU阻塞无法动弹。很影响用户的体验,所以我们可以设置一些常用的路径,在离线下算好放在数据文件中,游戏开启时放在内存里,当需要寻路到那个节点或者那个节点附近时,就可以取出来直接使用,而不再需要计算。可以尝试做一些导航点,当开始计算寻路时优先找到最近的导航点,之后只需要进行到达导航点的路径就可以了 二.优化预测值计算方法 如果预测值只关注在于终点距离最近的点上,那么在寻路过程中的选择点位的顺序就会偏向于与终点更近的点。而如果预测值计算公式,关注的是整个距离较近的点位上,那么在寻路过程中在选择点位上也就会偏向整条路径短的方向上去靠。 预测值算法有很多种,例如 直来直去,可以斜着走,还有按三角形走等 三.排序算法的优化 每次从OpenList中取出最小值时,可以用排序算法事先将集合排序好,这样节省了查找的时间,再每次插入的时候有序的插入.

神经网络反向传播算法

被刻印的时光 ゝ 提交于 2020-01-12 18:36:29
神经网络反向传播算法 这是典型的三层神经网络的基本构成, L a y e r L 1 Layer L_1 L a y e r L 1 ​ 是输入层, L a y e r L 1 Layer L_1 L a y e r L 1 ​ 是隐藏层,, L a y e r L 1 Layer L_1 L a y e r L 1 ​ 是隐含层,我们现在手里有一堆数据{x1,x2,x3,…,xn},输出也是一堆数据{y1,y2,y3,…,yn},现在要他们在隐含层做某种变换,让你把数据灌进去后得到你期望的输出。 以下通过具体的例子说明神经网络算法的正向传播和反向传播过程: 假设存在如上的神经网络模型,期望输出 O 1 O_1 O 1 ​ =0.01, O 2 O_2 O 2 ​ =0.99。以下是训练算法的具体细节: 正向传播 输入层–>隐藏层计算方式,激活函数采用sigmoid: n e t h 1 = w 1 ∗ i 1 + w 2 ∗ i 2 + b 1 = 0.15 ∗ 0.05 + 0.2 ∗ 0.1 + 0.35 = 0.3775 o u t h 1 = 1 1 + e − n e t h 1 = 1 1 + e − 0.3775 = 0.593269992 n e t h 2 = w 3 ∗ i 1 + w 4 ∗ i 2 + b 1 = 0.25 ∗ 0.05 + 0.3 ∗ 0

《智能组卷系统的设计与实现》16

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-12 15:16:44
一、基本信息 标题:《智能组卷系统的设计与实现》 时间:2017 来源:电子科技大学 关键字:智能组卷 、混合粒子群 算法 、算子 、目 标函 数 二、研究内容 问题定义:智能组卷系统是通过计算机技术和智能算法进行试题科学组卷的 。运用 智 能组卷系统可以减轻教师命题组卷的工作量 ,同时与其他组卷方式相较,利用组卷系统采用智能搜索 、匹配试题策略能够最大限度生成满足命题老师要求的试卷 ,实现对考生的科学评估同时保证测试的公平性。 智能组卷问题实质上是满足某些约束条件下的多目标参数寻优问题,常用的组卷算法如随机算法 、蚁群 算法 、遗传算法等算法 ,具有生成试卷质 量不高成功率较低等缺点。 三、流程图 四、总结 由 于组卷问题是由若干个约束条件组成 的 一 个优化问题 , 但是其约束条件的复杂性 ,采用传统的数学方法来求解很难得到比较满意的效果 ,所以随着智能算法在实际问题中应 用 ,智能组卷策略得到了推广。 来源: https://www.cnblogs.com/q1w2e3r4/p/12002843.html

AR中的SLAM(一)

好久不见. 提交于 2020-01-12 15:12:21
写在前面 本系列打算讲讲个人对AR行业和AR中的SLAM算法的一点浅显的看法。才疏学浅,文中必然有很多疏漏和不足,还望能和大家多多讨论。今天先讲讲我对AR的一些认识。 AR的一点理解 AR是什么 AR是人类的第三只眼,让人类在现实世界中看到虚拟物体并与之交互。 VR是人类做梦的一种载体。 AR能做什么 AR有能力将二维交互变成三维交互,能让虚拟物体看起来像真的一样。举几个简单的场景。 你可以拥有一只虚拟宠物。你可以从各个方向观察一个虚拟小猫,绕着它转动。你会发现,走近看会显得大一些,离远了看着会变小。愿意的话,还可以挠挠它,和它玩耍。 你将拥有一个虚拟电视。它可以固定在任何地方(即使你到处走动),也可以随意移动。 你在和家人远程通话时能在自己房间看到家人的全息投影。 你将房间变成虚拟密室。 当然,你可以在任何地方唤醒任何APP。 我觉得,如果未来AR能够发展出更多的外延,那么在消费领域会有机会取代手机 ,然后并在若干年后沦为卖广告赚钱的工具 。而在工业领域,AR也有机会蹦跶几下 ,然后被机器人取代 。 AR怎么实现 目前AR需要通过外部设备来实现。比如在手机上,通过获取摄像头图像并在上面叠加虚拟物体。而专业的AR设备可以将虚拟物体成像在眼睛前面或投射入眼球。 AR需要什么 要实现前面提到的三维交互,AR设备需要具备下面三个功能 自我定位。指定位出自身在空间中的位置

20182318 2019-2020-1 《数据结构与面向对象程序设计》实验九报告

醉酒当歌 提交于 2020-01-12 13:48:01
20182318 2019-2020-1 《数据结构与面向对象程序设计》实验九报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 王振澳 学号:20182318 实验教师:王志强 实验日期:2019年12月2日 必修/选修: 必修 1.实验内容 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分) 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分) 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分) 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分) 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分) PS:本题12分。目前没有明确指明图的顶点和连通边,如果雷同或抄袭,本次实验0分。、 2. 实验过程及结果 生成树 图的遍历 拓扑排序 prim算法 迪杰斯特拉算法 具体代码见码云 3. 实验过程中遇到的问题和解决过程 问题一:实验过程中对图各个边的权值进行赋值的操作问题 问题一解决办法:选择使用二维数组,并将0行和0列设置为0,不使用。便于后面程序编写时的理解,给自己减少负担。这个二维数组需要自己手动写好在代码里。 其他(感悟、思考等) 实验终于做完了,有很多遗憾