算法

第03组 Beta冲刺(3/4)

a 夏天 提交于 2020-01-20 01:59:53
队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐、搜索类算法 GitHub签入纪录: 暂无 接下来的计划: 下一周督促负责前端的组员赶快完工,同时开始后端的编写 燃尽图: 还剩下哪些任务: 各模块编码、测试、项目管理同步推进、各模块完成后进行对接 实景测试反馈优化 根据测试反馈优化 遇到哪些困难: 队员对开发软件运用还不熟练 比较多队员没有java的基础,需要临时自学 调整时间安排表比较困难 有哪些收获和疑问: 收获: 可以和队友一起学习新的算法知识、数据库知识,自学了一些有关于团队管理方面的知识。 疑问: 都是一些技术上的疑问 组员二:林家伟 组员二:林家伟 过去两天完成的任务: 文字/口头描述: 完成了数据库的构建 学会了如何构建web框架和前后端交互 GitHub签入纪录: 暂无 接下来的计划: 燃尽图: -实现后端对数据库的操作,并将数据反馈给前端显示 还剩下哪些任务: 真正实现Web框架的构建 完成Python对数据库的操作 遇到哪些困难: 课程压力大,考试较多,时间不足 实践较多,很难进行时间安排 有哪些收获和疑问: 收获: 学会了python的Flask框架 疑问: 需要解决如何在渲染界面的同时完成数据加载 组员三:吴智勇 过去两天完成的任务: 文字/口头描述

第03组 Beta冲刺(3/4)

走远了吗. 提交于 2020-01-20 01:59:06
队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐、搜索类算法 GitHub签入纪录: 暂无 接下来的计划: 下一周督促负责前端的组员赶快完工,同时开始后端的编写 燃尽图: 还剩下哪些任务: 各模块编码、测试、项目管理同步推进、各模块完成后进行对接 实景测试反馈优化 根据测试反馈优化 遇到哪些困难: 队员对开发软件运用还不熟练 比较多队员没有java的基础,需要临时自学 调整时间安排表比较困难 有哪些收获和疑问: 收获: 可以和队友一起学习新的算法知识、数据库知识,自学了一些有关于团队管理方面的知识。 疑问: 都是一些技术上的疑问 组员二:林家伟 组员二:林家伟 过去两天完成的任务: 文字/口头描述: 完成了数据库的构建 学会了如何构建web框架和前后端交互 GitHub签入纪录: 暂无 接下来的计划: 燃尽图: -实现后端对数据库的操作,并将数据反馈给前端显示 还剩下哪些任务: 真正实现Web框架的构建 完成Python对数据库的操作 遇到哪些困难: 课程压力大,考试较多,时间不足 实践较多,很难进行时间安排 有哪些收获和疑问: 收获: 学会了python的Flask框架 疑问: 需要解决如何在渲染界面的同时完成数据加载 组员三:吴智勇 过去两天完成的任务: 文字/口头描述

小目标之读懂jvm—垃圾回收时的对象死亡判定

断了今生、忘了曾经 提交于 2020-01-20 00:09:38
紧接着之前的阅读进度,第三章讲述了GC(垃圾收集)算法与几种垃圾收集器以及对象创建和GC后的内存分配策略。 第二章提到java内存运行区域时包含了程序计数器、虚拟机栈、本地方法栈、java堆和方法区,占用内存的主要是堆和栈,其中栈主要是与运行线程相关,所以线程运行结束,栈也随着消亡。hotspot虚拟机采用了永久代(GC的一种分代概念)去实现了方法区,所以方法区的GC效率很低。因此对于内存分配时的优化就集中在java堆内存中。 垃圾收集自然要涉及到垃圾的认定,java中对象如果不可能再被任何路径使用,则为对象已死,也即为要被回收的垃圾。有点像寻梦环游记中的设定,如果被所有人遗忘了,那就是真正的死去了。有两种方法判定对象是否存活,即引用计数算法和可达性分析算法。引用计数算法就是给对象增加一个引用计数器,每有一个地方引用它,计数器值加一,引用失效时则减一,但是主流java虚拟机并没有采用这种方法,原因是存在对象互相引用的情况,A引用B,B引用A,但是A、B没被任何别的地方引用,采用引用计数算法无法回收A和B。可达性分析算法是通过一系列名为“GC Roots”的对象作为起始点向下搜索,经过引用链(Reference Chain)的遍历到达所有对象,未能到达的对象视为对象不可用也即判定为死亡,类似图论中图的遍历。java中的虚拟机栈引用对象、方法区中类静态属性引用对象、常量引用对象

『网络流算法及其运用』

雨燕双飞 提交于 2020-01-19 23:44:36
本文将重点从运用角度讲解网络流,不会过多阐述网络流基本理论,只讲必要的理论内容,更详细的理论内容可以参考算法导论。 网络流的定义 一个流网络 \(G=(V,E)\) 为一张满足以下条件的 有向图 : 每一条边有一个非负容量,即对于任意 \(E\) 中的 \((u,v)\) , 有 \(c(u,v)≥0\) 。 如果 \(G\) 中存在边 \((u,v)\) ,那么不存在 \((v,u)\) 。我们将图中不存在的边的容量定为 \(0\) 。 图中含有两个特殊节点:源 \(s\) 与汇 \(t\) 。 一个流 \(f\) 是定义在节点二元组 \((u\in V,v\in V)\) 上的 实数函数 ,满足以下两个个性质: 容量限制 :对于任意 \((u,v)\) ,满足 \(0\leq f(u,v)\leq c(u,v)\) 。 流量守恒 :对于任何非源汇的中间节点 \(u\) ,有 \(\sum_{v\in V}f(v,u)=\sum_{v\in V}f(u,v)\) 一个流 \(f\) 的 流量 \(|f|\) 定义为: \(|f|=\sum_{v\in V}f(s,v)-\sum_{v\in V}f(v,s)\) 。 最大流问题 定义 由于图 \(G\) 中不存在反向边,所以在我们一般只关注流量定义式的前半部分,即: \(|f|=\sum_{v\in V}f(s,v)\) 。

(算法练习)——分数的一些计算

不羁岁月 提交于 2020-01-19 21:45:18
《算法笔记》P158 把分数的加减乘除敲了一遍,算是熟悉下结构体 # include <stdio.h> # include <string.h> # include <math.h> # include <algorithm> using namespace std ; //求最大公约数的代码 int gcd ( int a , int b ) { if ( b == 0 ) return a ; else return gcd ( b , a % b ) ; } //定义分数的结构体 struct Fraction { int up , down ; } ; //分数化简 Fraction reduction ( Fraction result ) { if ( result . down < 0 ) { result . up = - result . up ; result . down = - result . down ; } if ( result . up == 0 ) { result . down = 1 ; } else { int d = gcd ( abs ( result . up ) , abs ( result . down ) ) ; result . up / = d ; result . down / = d ; } return result

MATLAB强化学习入门——二、网格迷宫、Q-learning算法、Sarsa算法

浪尽此生 提交于 2020-01-19 20:51:33
一、多步决策问题和网格迷宫 上一篇文章里讨论多臂赌机问题是单步最优决策问题的对应模型。而在这之后,则可以考虑离散的多步决策问题。离散的多步决策问题,对应的典型问题模型则是网格迷宫(Grid World)。 前文中,ε-greedy策略,softmax策略的原理及其特点得到了讨论。而这些策略,可以看作智能体应对某一状态时选择动作的方式。策略应用的前提,则是智能体对于动作的优劣有着某种估计(无论正确与否)。 当策略应用到多步决策问题上时,如果想要令同样的策略产生作用并选择动作,就需要对系统所处的每一个状态以及对应动作的优劣进行估计。状态价值函数 V(x) (state value function)以及状态-动作价值函数Q(x,a) (state-action value function)也就应运而生了。 图1 Windy Grid World 网格迷宫问题可以描述为智能主体在一个类似棋盘的离散网格空间中学习到达目标点的最优策略的问题。在普通的网格中增加一些变化,添加影响小球运动的风速,即得到Windy Grid World,如图一。智能体在该情况下的移动,受到时不变的风速影响。 状态价值函数与动作-状态价值函数之间的关系可以用Bellman方程得到,具体可参看[1]或者浙江大学的机器学习MOOC。而在算法的具体实现上,往往仅仅需要动作-状态价值函数,即Q函数。 总的思路是

聚类算法(二)

北城以北 提交于 2020-01-19 20:31:45
7.算法优化 k-means算法小结 优点: 1.原理简单(靠近中心点),实现容易 2.聚类效果中上(依赖k的选择) 3.空间复杂度o(N), 时间复杂度o(I K N) 缺点: 1.对离群点,噪声敏感 2.很难发现大小差别很大的簇及进行增量计算 3.结果不一定是全局最优,只能保证局部最优(这个与K的个数和初值的选取有关) Canopy算法小结 优点: 1.K-means对噪声抗干扰弱,通过Canopy对比,将较小的NumPoing的Cluster直接去掉有利于抗干扰。 2.Canopy选择出来的k更精准 3.只是针对每个Canopy的内做K-means聚类,减少相似计算的数量 缺点: 算法中T1、T2的确定问题,依然可能落入局部最优解 K-means++ kmeans++目的,让选择的质心尽可能的分散 二分k-means 1.所有点作为一个簇 2.将该簇1分为2 3.选择能最大限度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇 4.重复进行,知道簇的数目等于用给定的数目k为止 隐含的一个原则: 因为聚类的误差平方和能够衡量聚类性能,则该值越小表示数据点越接近质心,聚类效果越好。所以需要对误差平方和最大的簇再进行一次划分,因为误差平方和越大, 表示该簇聚类效果越不好,越有可能是多个簇被当成了一个簇,所以我们首先需要对这个簇进行划分。 二分K均值算法可以加速k

C/C++算法 桶排序

旧街凉风 提交于 2020-01-19 20:31:28
桶排序是最简单的排序方法,其代码如下: # include <stdio.h> using namespace std ; int main ( ) { int book [ 1001 ] , t , n ; for ( int i = 0 ; i <= 1000 ; i ++ ) { book [ i ] = 0 ; } scanf ( "%d" , & n ) ; for ( int i = 1 ; i <= n ; i ++ ) { scanf ( "%d" , & t ) ; book [ t ] ++ ; } for ( int i = 1000 ; i >= 0 ; i -- ) { for ( int j = 1 ; j <= book [ i ] ; j ++ ) { printf ( "%d " , i ) ; } } getchar ( ) ; getchar ( ) ; return 0 ; } 来源: CSDN 作者: 小喵没有小鱼干吃 链接: https://blog.csdn.net/qq_44865242/article/details/104044497

01-简述

耗尽温柔 提交于 2020-01-19 17:26:51
1. 几个经典算法题 字符串匹配 KMP算法(部分匹配表) 汉诺塔 分治算法 八皇后 回溯算法 马踏棋盘(骑士周游) 图的深度优先遍历算法(DFS) + 贪心算法优化 2. 数据结构和算法的关系 2.1 数据结构 解决存储问题 把现实生活中大量而复杂的问题以特定的数据类型(事物)和特定的存储结构(事物的关系)保存到存储器中 数据的存储 = 数据的存储 + 数据关系的存储 2.2 算法 在存储结构的基础上实现某个功能而执行的操作,这个相应的操作也叫做 [算法] // 算法就是对数据的操作 广义 | 狭义 上的算法 狭义的算法:与数据的存储方式密切相关 广义的算法:与数据的存储方式无关 2.3 关系 程序 = 数据结构 + 算法 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言 数据结构是算法的基础 3. 看几个实际编程中遇到的问题 试写出用单链表表示的字符串类及字符串结点类的定义,并依次实现它的构造函数、以及计算串长度、串赋值、判断两串相等、求子串、两串连接、求子串在串中位置等7个成员函数 数据结构:单链表 五子棋程序:如何判断游戏的输赢,并可以完成 {存盘退出} 和 {继续上局} 的功能 存盘退出:棋盘 → 二维数组 → 稀疏数组 → 写入文件 继续上局:读取文件 → 稀疏数组 → 二维数组 → 棋盘 约瑟夫问题(丢手帕问题):设编号为1,2,… n的n个人围坐一圈

最短路算法总结

送分小仙女□ 提交于 2020-01-19 17:08:30
最短路径问题 前言 最短路问题(short-path problem)是网络理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。基本内容是:若网络中的每条边都有一个数值(长度、成本、时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路问题。 存储方式 1.邻接矩阵 2.邻接表 3.链式前向星 无向图 视为正反的 有向图 叠加 算法 一般常用4种方法解决 1.Dijkstra算法 O(N^2) 2.Floyd算法 O(N^3) 3.Bellman-Ford算法 O(NM) 4.SPFA算法 O(NM) 其中由 Bellman-Ford算法衍生出SPFA算法 实质就是 队列优化的 Bellman-Ford 它们具体的原理和实现如下 1. Dijkstra 算法 适用问题 单源最短路径 (一个源点出发) 适用范围 没有负边权 没有负环的图 实现步骤 1.初始化dis[起点]=0 其余节点为无穷大 2.找出未被标记且dis[x]最小的x 再标记x 3.扫描x所有出边(x,y, edge(x,y) )dis[y]=min(dis[y],dis[x]+edge(x,y)) 4.重复2-3到所有节点均被标记 总结:贪心思想 不满足负边( 与贪心思想相矛盾 ) 模板题目 题目描述 输入一个无向网络,输出其中2个顶点之间的最短路径长度 输入