第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来.
1.最短路(floyd、dijstra,bellmanford) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.bfs、dfs,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段:练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。
5. 熟悉动态规划的各个典型:lcs、最长递增子串、三角剖分、记忆化dp 7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统.
10. 双向广度搜索、a*算法,最小耗散优先. 相关的知识 图论 路径问题
0/1边权最短路径 bfs
非负边权最短路径(dijkstra) 可以用dijkstra解决问题的特征 负边权最短路径 bellman-ford
bellman-ford的yen-氏优化 差分约束系统 floyd
广义路径问题 传递闭包
极小极大距离 / 极大极小距离 euler path / tour 圈套圈算法
混合图的 euler path / tour hamilton path / tour
特殊图的hamilton path / tour 构造 生成树问题 最小生成树 第k小生成树 最优比率生成树
0/1分数规划
度限制生成树 连通性问题 强大的dfs算法 无向图连通性 割点 割边
二连通分支 有向图连通性 强连通分支 2-sat
最小点基 有向无环图 拓扑排序
有向无环图与动态规划的关系 二分图匹配问题
一般图问题与二分图问题的转换思路 最大匹配 有向图的最小路径覆盖 0 / 1矩阵的最小覆盖 完备匹配 最优匹配
稳定婚姻 网络流问题
网络流模型的简单特征和与线性规划的关系 最大流最小割定理 最大流问题
有上下界的最大流问题 循环流 最小费用最大流 / 最大费用最大流 弦图的性质和判定 组合数学 解决组合数学问题时常用的思想 逼近 递推 / 动态规划 概率问题
polya定理 计算几何 / 解析几何 计算几何的核心:叉积 / 面积 解析几何的主力:复数 基本形 点
直线,线段
多边形 凸多边形 / 凸包 凸包算法的引进,卷包裹法 graham扫描法
水平序的引进,共线凸包的补丁 完美凸包算法
相关判定 两直线相交 两线段相交
点在任意多边形内的判定
点在凸多边形内的判定 经典问题 最小外接圆
近似o(n)的最小外接圆算法 点集直径 旋转卡壳,对踵点
多边形的三角剖分 数学 / 数论 最大公约数 euclid算法
扩展的euclid算法
同余方程 / 二元一次不定方程 同余方程组篇二:如何学习算法 发信人: ict (后ict时代), 信区: acmicpc 标 题: acm练习建议(zz)
发信站: 逸仙时空 yat-sen channel (mon mar 29 00:46:08 2010), 转信 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的
,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段:
练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来.
1.最短路(floyd、dijstra,bellmanford) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.bfs、dfs,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort, 技巧很多,慢慢掌握. 9. 任意进制间的转换 第二阶段:
练习复杂一点,但也较常用的算法。 如: 1. 二分图匹配(匈牙利),最小路径覆盖 2. 网络流,最小费用流。 3. 线段树. 4. 并查集。
5. 熟悉动态规划的各个典型:lcs、最长递增子串、三角剖分、记忆化dp
7.最大团,最大独立集。 8.判断点在多边形内。 9. 差分约束系统.
10. 双向广度搜索、a*算法,最小耗散优先. 第三阶段: 前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法 。这就
要平时多做做综合的题型了。 1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。 2. 平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大acm的版主经常说我挑简单
的 来
做:-p ) 3. 多参加网上的比赛,感受一下比赛的气氛,评估自己的实力. 4. 一道题
不要过了就算,问一下人,有更好的算法也打一下。 5. 做过的题要记好 :-)
还有实际问题会大大牵引你前进. 比如,前段时间我想把er图自动生成,就是如何画图的问题; 要找对问题是哪个理论范围内的,图论这个大的肯定是对的,然后下面的分支:无向图 图论-->无向图-->画图算法-->遗传退火 这样到处找论文,逐渐接近目标,恶补你急需的一块,比泛泛的什么都啃要印象深刻. 而
且算法如大海,会把人淹死. 只要有自己的路线就可以了,眼光可以多看,但是大致了解就可以,用的时候再深入挖掘. 不是算法没用,是你没用 在网上搜到了一些,贴出来大家看一下怎么样,该怎样看待别人的经验? 引用如下: 算法学习的轨迹 对于编程的初学者,可以先通过简单的排序算法了解最简单的adt线性表的常用操作;然后要重点掌握递归技术,包括递归和递推的相互转换。递归技术非常重要,可以通过递归技术了解adt栈的操作;接着学习搜索法的初步——回溯法,研究经典问题八皇后问题和走迷宫问题,通过这些经典问题了解深度优先搜索法(dfs)和宽度优先搜索法(bfs)以及adt栈、adt队列的操作,要学会利用人工设置堆栈模拟递归;接着可以学习分治法、贪心法这两种常用的策略,并应用到排序、搜索等简单的算法中;这时再开始学习图和树这两种抽象数据类型就应该没有什么难度了。在学习adt图和adt树时,要注意结合离散数学中的图论理论知识和搜索法中的dfs,bfs方法,要学会将实际问题转化为图论模型;再下去可以学习各种搜索法的优化算法,启发式搜索、a算法、a*算法或界限剪枝法等;然后是网络流算法,要注意模型的建立;最后学习最优化问题的解法,包括线性规划、动态规划、非线性规划等算法策略,这部分内容主要侧重模型的建立和分析,算法本身并没有难度。这样基本的算法就学习完了。再深入一点可以学习问题的计算复杂性,计算模型,并行算法,神经网络以及各
个领域中的算法.篇三:一种深度学习的快速学习算法 一种深度学习的快速学习算法 hinton, g. e., osindero, s. and teh, y. 摘要: 我们展示了如何使用“先验的补充”,以消除解释离开的影响,使在有许多隐藏层密集相连的信念网推理困难。使用互补先验,推导一种快速,贪心算法,可以在一个时间学习深,有向信任网络一层,设置在顶部两层形成一个无向相联存储器。快速,贪心算法被用来初始
化一个较慢的学习过程,使用所述唤醒睡眠算法的对比版本微调的权重。经过微调,有三个隐藏层的网络构成了手写数字图像和它们的标签的联合分布的一个很好的生成模型。这生成模型提供了更好的数字比分类的判别最好的学习方法。低维流形在其上的数字谎言由长沟壑在顶层联存储器的自由能量景观进行建模,这是容易探索这些沟壑通过使用定向的连接,以
显示什么相联存储器具有记。 1.介绍
学习难以在密集连接的,即有许多隐藏层,因为它是难以推断的隐藏活动的条件分布当给定一个数据矢量定向信念网。变分方法使用简单的近似真实条件分布,但近似值可能是差的,特别是在最深隐藏层,其中事先假定独立性。另外,变学习仍然需要所有一起被了解到
的参数,使学习时间差缩放作为参数的数量增加。 我们描述了一种模型,其中,顶部的两个隐藏层形成一个无向关联存储器(见图1)和剩余的隐藏层形成,在相联存储器将观测变量的表示变换如图象的象素的向无环图。这种混
合模式有一些吸引人的特点: 1.有一个快速的,贪婪的学习算法,可以找到一个相当不错的参数集快,即使在深网络
与数以百万计的参数和许多隐藏的图层。 2. 学习算法是无监督,但可以通过学习一个模型,同时生成的标签和数据被施加到标签的数据。
3. 有一个微调算法,学习优良的生成模型优于手写数字的mnist数据库上判别方法。 4. 生成模型可以很容易地理解在深隐层分布式表示。 5. 需要形成一个知觉推理是既快速又准确。 6. 学习算法是本地:调整突触强度只依赖于突触前和突触后神经元的状态。 7. 沟通是简单的:神经元只需要传达他们随机二进制状态。 第2节介绍的想法“互补”之前这正是取消“解释离开”的现象,使推理难以在指挥模式。定向信念网络具有互补先验的一个实例。第3节显示了限制玻耳兹曼机之间和无限向网
络使用权并列的等价性。 第4节介绍了一种快速,贪婪学习算法的时间构建多层向网络一层。使用变约束它表明,因为每个新层添加,整体生成模型提高。贪心算法有某些相似之处,以提高其重复使用相同的“弱”学习的,但不是每个重新加权数据载体,以保证下一步学习新的东西,它会重新代
表它。是,用于构造深定向网的“弱”学习者是本身无向图形模型。 第5节指出由快速贪婪算法产生的权重如何能够进行微调使用“上下”算法。这是唤醒休眠算法顿等人的对比版本。(1995),其不从“模式平均”的问题,可能会导致唤醒睡眠算
法学习差识别权重受损。 第6节显示了一个网络有三个隐藏层并在mnist一套手写数字约为170万权重模式识别性能。当没有知识的几何设置,并且没有特殊的预处理,网络的推广能力是在101.25%的误差; 000数字网络官方测试集。这被击败最好的反向传播网实现时,不手工精制而成,为这个特殊的应用,他们的1.5%。它也比同一任务支持向量机报告decoste和schoelkopf(2002
年)的1.4%的误差略胜一筹。 最后,第7示出当它不被约束通过视觉输入运行在网络的头脑发生了什么。该网络有一
个完整的生成模型,所以很容易寻找到了主意 - 我们只是生成了高级别交涉的图像。 整篇文章,我们会考虑网随机二元变量组成,但思想可以推广到其他车型,其中一个变量的数概率是其直连的邻居状态的附加功能(请参阅附录a了解详细信息)。 图1:用于模拟数字图像和数字标签的联合分布的网络。在本文中,每个训练情况下由图像和显式类标签的,但在正在进行的工作已经表明,同样的学习算法可以如果“标签”是由一个多层通路的输入是从多个不同的扬声器谱图替换使用话说隔离数字。然后,网络学习,