算法

论文笔记

て烟熏妆下的殇ゞ 提交于 2020-02-18 00:53:35
论文笔记 此篇博文用于记录阅读一些论文之后所得。 Computation Offloading in Multi-access Edge Computing using Deep Sequential Model based on Reinforcement Learning 一、论文解决了什么问题? 由于MEC卸载问题是NP-hard的,现有的卸载策略研究大多都基于启发式算法,但随着MEC应用和无线网络体系结构的日益复杂,任何启发式的卸载策略都很难完全适应MEC中的各种场景。为了解决任务依赖性和适应动态场景的挑战,文中提出了一种新的基于DRL的卸载框架。提出的解决方案可以自动发现各种应用程序背后的通用模式,从而在不同的场景中推断出最优的卸载策略。提出的方案的目标是最小化服务的总体延时。 二、怎么解决的? 在文中用了深度强化学习来解决问题,将状态空间表示为已编码的DAG和卸载计划的组合,S=(G,A1:i),G表示DAG,A1:i表示前i个任务的卸载计划的向量。将动作空间定义为A={1,0},1表示卸载,0表示在本地执行。将奖励定义为做出决定后的延迟估计负增量。 三、有什么亮点? 虽然目前已经有基于DRL的卸载方法,但是它们都假定任务是独立的,在文中考虑了一般任务的依赖关系,并将其建模为有向无环图。这是首次在考虑一般任务的情况下解决MEC中的卸载问题。受以往旅行商问题的启发

.Net Discovery系列之三 深入理解.Net垃圾收集机制(上)

你离开我真会死。 提交于 2020-02-17 23:34:07
前言: 组成.Net平台一个很重要的部分----垃圾收集器(Garbage Collection),今天我们就来讲讲它。想想看没有GC,.Net还能称之为一个平台吗?各种语言虽然都被编译成MSIL,但是运行时的资源回收工作却“各自为战”,这样不但增加了编程难度,也会使内存管理工作变得复杂无比(不同语言处理内存的微小差异,将在回收资源时被放大),更也不利于平台移植。 这篇文章将全面的为大家介绍.Net 垃圾收集的运行方式、算法,以及与垃圾收集相关的关键方法。 说到垃圾收集机制,很少有人知道,垃圾收集并不是伴随Java出现的,早在1958年,图林奖得主John发明的Lisp语言就已经提供了GC的功能,这是GC的第一次出现,是思想的一次闪光!而后,1984年Dave Ungar发明的Small talk语言第一次正式采用了GC机制。 .Net的垃圾回收机制是个很大的话题,如果你没接触过类似C++那样的语言,就很难理解GC是一个多么重要、令人兴奋的东西: 1.提高软件系统的内聚。 2.降低编程复杂度,使程序员不必分散精力去处理析构。 3.不妨碍设计师进行系统抽象。 4.减少由于内存运用不当产生的Bug。 5.成功的将内存管理工作从程序的编写时,脱离至运行时,使不可预估的管理漏洞变为可预估的。 正文: 本文将通过“GC的算法与工作方式”、“GC关键方法解析”两节来讲述.Net垃圾收集机制。

设计模式之策略模式

帅比萌擦擦* 提交于 2020-02-17 23:26:08
定义 策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。是一种对象行为型模式。 动机 完成一件事可以有多种不同的方式可以选择,每一种方式都是一种策略 作用 使得客户端可以根据外部条件选择不同策略来解决不同问题 1.策略模式仅仅封装算法(包括添加 & 删除),但策略模式并不决定在何时使用何种算法,算法的选择由客户端来 2.将算法的责任和本身进行解耦,对算法进行封装,将算法的责任和算法本身分割开,委派给不同的对象管理。 3.让算法和对象分开来,使得算法可以独立于使用它的客户而变化 实例 以我们每天上班打卡为例每个部门的考勤规则 首先有一个打卡接口 public interface Strategy { void ding(); } 然后选择不同部门打卡 public class StrategyA implements Strategy { @Override public void ding() { System.out.println("A ding 了一下!!!!!!!!!"); } } public class StrategyB implements Strategy { @Override public void ding() { System

深度学习实现缺陷检测算法汇总

匆匆过客 提交于 2020-02-17 20:06:24
作者:Tom Hardy Date:2020-1-6 来源: 总结|深度学习实现缺陷检测 前言 缺陷检测是工业上非常重要的一个应用,由于缺陷多种多样,传统的机器视觉算法很难做到对缺陷特征完整的建模和迁移,复用性不大,要求区分工况,这会浪费大量的人力成本。深度学习在特征提取和定位上取得了非常好的效果,越来越多的学者和工程人员开始将深度学习算法引入到缺陷检测领域中,下面将会介绍几种深度学习算法在缺陷检测领域中的应用。 1、A fast and robust convolutional neural network-based defect detection model in product quality control 检测对象:布匹缺陷。 主要思想:这是一篇比较早的文章了,主要通过对输入图像进行切片,然后把切片图像送入深度学习网络中做判断,较为简单。在推理时,通过滑窗检测方式进行逐位置识别。 优缺点: 1、 由于使用分类方式,准确率较为高 2、 由于滑窗遍历,速度慢 2、Automatic Defect Detection of Fasteners on the Catenary Support Device Using Deep Convolutional Neural Network(基于深度卷积网络的接触网支架紧固件缺陷自动检测) 检测对象:紧固件是否缺失。 主要思想

多边形裁剪算法

徘徊边缘 提交于 2020-02-17 11:21:14
多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–Hormann算法 Greiner–Hormann算法的性能要比 Vatti裁剪算法的性能高,但无法处理退化问题,它可以处理自相交和非凸多边形。可以简单地推广计算多边形上的其他布尔运算,例如并集和差集。 我们看如图4的实例,我们的任务是使用用虚线围成的多边形C裁剪我们的虚点围成的多边形S。 我们首先确定S多边形边界的哪些部分位于C多边形内.如图5。 我们可以通过考虑以下类比情况:想象一下沿着S多边形边界推动粉笔车。我们从S多边形的某个顶点开始,如果该顶点位于C多边形内,则在开始处用粉笔画。然后,我们沿着s多边形推动推车,每当我们穿过c多边形的边缘时,就会切换是否用粉笔画(打开/关闭)。当我们到达起始顶点时停止。然后,s多边形中位于c多边形内的部分将用粉笔标记。 完美! 我们使用相同的技术,但这次沿着c多边形运行粉笔车,以发现c多边形中位于s多边形内的那些部分(图6)。

数据结构(8) -- 算法应用实例

陌路散爱 提交于 2020-02-17 09:30:58
文章目录 1.最大子列和问题 算法1: 算法2: 算法3: 算法4,在线处理: 总结: 1.最大子列和问题 算法1: public class Demo5 { static int [ ] list = { - 2 , 11 , - 4 , 13 , - 5 , - 2 } ; //算法1: public static int maxSubseqSum1 ( int [ ] list ) { int length = list . length ; int i , j , k ; int thisSum , maxSum = 0 ; for ( i = 0 ; i < length ; i ++ ) { //i是子列子列左端位置 for ( j = i ; j < length ; j ++ ) { //j是子列右端位置 thisSum = 0 ; //thisSum是list[i]到list[j]的子列和 for ( k = i ; k <= j ; k ++ ) { thisSum += list [ k ] ; if ( thisSum > maxSum ) { maxSum = thisSum ; } } } } return maxSum ; } public static void main ( String [ ] args ) { int i =

基于项目的协同过滤推荐算法原理、过程、代码实现 基于项目评分的协同过滤推荐算法程序 余弦、修正余弦、person皮尔森算法、欧几里得距离公式等相似度算法 movielens电影评分数据集

自古美人都是妖i 提交于 2020-02-16 23:33:13
本文主要介绍基于项目的协同过滤推荐算法的推荐原理、推荐过程、代码实现。 一、基于项目的协同过滤推荐算法推荐原理 基于项目的协同过滤推荐算法也是推荐算法中最基础、最简单、很重要的算法,主要是根据用户对项目的某一种操作行为,构成项目-用户操作行为矩阵,根据操作行为矩阵计算项目之间的相似度,最终为目标用户推荐目标用户有操作行为的预测评分高的项目,作为目标用户感兴趣的项目。 二、基于项目的协同过滤推荐算法推荐过程 基于项目的协同过滤推荐算法推荐过程可分为三个步骤:构建项目-用户操作行为矩阵、计算项目之间似度、获取推荐结果。 1、构建项目-用户操作行为矩阵 我们以用户对项目的评分数据为例,M个项目和N个用户最大有M*N条项目的评分数据,记为矩阵MN,在计算机语言中可以通过一个二维数组来表达array[M][N],项目用数组下标0-M表示,用户用数组下标0-N表示,矩阵MN图形如下所示(0表示用户对项目没有评分): 评分 0 1 2 3 4 5 … N 0 1 0 5 2 0 3 … 5 1 5 2 4 0 0 0 … 0 2 2 5 3 4 2 1 … 4 3 0 4 0 0 4 1 … 2 … … … … … … … … … M 3 0 4 2 3 2 … 1 项目-用户评分矩阵可适用于项目-用户浏览记录矩阵、项目-用户浏览时长矩阵、项目-用户播放次数矩阵、项目-用户播放时长矩阵、项目

小白的树莓派Tensorflow opencv 学习笔记(八)

a 夏天 提交于 2020-02-16 23:24:13
之前想用TensorFlow + OpenCV做目标检测,但是最后因为TF2.0资料属实不多所以夭折了,不过OpenCV还是非常值得学习的。 特征检测算法 OpenCV中比较常用的特征检测和提取算法: Harris:用于角点检测 SIFT:用于斑点检测 SERF:用于斑点检测 FAST:用于角点检测 BRIEF:用于斑点检测 ORB:带方向的FAST算法和具有旋转不变性的BRIEF算法(暴力匹配和基于FLANN的匹配法) 特征 上述算法中提到了角点和斑点,这是两种重要的特征。特征是有意义的图像区域。 cornerHarris角点特征 Harris算法中认为,平坦区域在所有方向上都没有明显的梯度变化,边缘区域在某个方向上有明显的梯度变化,角度边缘则在各个方向都有明显的梯度变化。 下面用一张国际象棋的图片和cornerHarris演示角点识别 import cv2import numpy as npimg = cv2.imread('chess.jpg')gray1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#灰化,可以降低维度,将三通道变为一通道gray = np.float32(gray1)dst = cv2.cornerHarris(gray, 2, 15, 0.04)#参数依次为:输入图像,角点区域大小,求导使用的窗口大小,自由参数取值[0

python常用排序算法

空扰寡人 提交于 2020-02-16 22:55:41
常见排序算法 算法:一个计算过程,解决问题的方法 程序 = 数据结构 + 算法 1.算法基本概念 1.时间复杂度 用什么方式来体现算法运行的快慢? 通过运行的次数表示时间复杂度 示例: print("hello world") print("hello python") print("hello algorithm") #以上时间复杂度O(1) for i in range(n): print("hello world") for j in range(n): print("hello world") #时间复杂度O(n**2) while n>1: print(n) n = n//2 时间复杂度记为O(log 2 n)或O(log n) 当算法过程出现循环折半的时候复杂度式子中会出现log n 时间复杂度小结 时间复杂度是用来计算算法运行的时间的一个式子(单位) 一般来说,时间复杂度高的算法比复杂度低的算法慢。 创建的时间复杂度(按效率排序) O(1) < O(logn) < O(nlogn) < O(n2) < O(n2 log n) < O(n3) 复杂问题的时间复杂度 O(n!) O(2**n) O(n**n) 如何简单快速地判断算法复杂度 快速判断算法复杂度,适用于绝大多数简单情况 确定问题规模n 循环减半过程---> log n k层关于n的循环 --->n**k

NDT算法

﹥>﹥吖頭↗ 提交于 2020-02-16 21:24:44
https://www.cnblogs.com/21207-iHome/p/8039741.html https://blog.csdn.net/qq_23225073/article/details/89221098 来源: CSDN 作者: 自动驾驶小白 链接: https://blog.csdn.net/weixin_40153532/article/details/104339779