当前位置: 首页 > 科技观察

算法基础学习路线和任性

时间:2023-03-18 15:47:10 科技观察

学习计划(总觉得会被打脸)辞掉了烟台的工作,来到了北京。因为算法太弱,所以一直不敢应聘有难度的工作(算法一直是我的弱项,基本上每个算法学习计划都半途而废/(ㄒoㄒ)/~~.)。事实上,我的工作/学习目标一直围绕着数据,无论是数据抓取、数据处理、分析等等。但始终有两把利剑悬在我的头上——一是数学基础薄弱;二是数学基础薄弱。另一个是可怕的算法技能。我刚刚面试了一家做数据工作的公司。我应聘的是基础资料岗位。我已经通过了两轮技术面试,正在等待第三轮经理面试(希望能通过)。根据两轮技术面试来看,这份工作暂时应该不会用到高难度的技术。无非就是linux系统的一些基本操作,以及一些看文档就可以上手的杂活。但是内功还是要修炼的,否则基本没有提升的空间,也没有机会进一步参与自己比较感兴趣的机器学习和数据挖掘的工作。对于目前的内功问题:数学和算法。我想我应该先从算法开始。毕竟数学离实际工作比较远。算法的学习在工作中可以过渡,数学只能先放下(真的很后悔没学好数学为了考研)。算法基础,找了一些参考书,今天做了一个计划:算法(罗伯特第4版)算法导论算法技术手册算法设计与分析基础(AnannyLevitin)算法设计(王红梅的学校教材)网上流传的文档中散落的《算法导论》比较抽象,有很多数学推理,暂且不看。《算法》和《算法技术手册》都比较工程化,有一定的深度,也比较实用。其中,《算法》是主要的学习参考。《算法设计与分析基础》和《算法设计与分析》另外两本书是算法分析,其中对算法思想的分析比较精彩,学习完《算法设计与分析基础》之后再去学习。其他散落的文档更多的是跟ACM或者OJ相关的,就拿来做最后的练习吧。所以基本路线是:《算法》学习,可以暂时参考《算法技术手册》完成基本算法学习《算法设计与分析》,《算法设计与分析基础》交叉参考完成算法思路分类OJ,工程实践实践算法永远记住:!!!数学是真的很重要;算法真的很重要,!!!高数字不用来买食物,但会决定你在哪里买食物;一般项目用不到算法,但是用到算法的工作总能给你更多薪水基础算法的思考(也是《算法》的框架介绍)1.基础知识(代码工具,算法基础工具)掌握基础算法实现、分析和比较的原理和方法:Java成为模型数据抽象基础数据结构集合类2.排序(很多算法的基础)将序列中的元素有序重排是一个很重要的基础算法,排序算法是也是许多其他算法的基石。插入排序选择排序GreekErr排序快速排序归并排序堆排序排序相关问题(优先队列,选举,合并)3.查找(FinditorIndexit!!!)从BIG中找到指定的entry很重要数据集。二叉搜索树平衡搜索树哈希表方法之间的关系和性能比较4.图(graph,algorithmking)图的主要内容是对象和它们之间的联系,这些联系可能有权重和方向。大量重要和困难的问题可以使用图来建模。图算法的设计非常重要。深度优先搜索广度优先搜索连通性问题Kruskal和Prim最小生成树Dijkstra和Bellman-Ford最短路径算法5.字符串(要和人打交道,做数值处理)字符串是现代应用中重要的数据类型。字符串键排序搜索快速算法子串搜索正则表达式模式匹配算法数据压缩算法6.背景(大力)科学计算概论运筹学概论计算理论概论基于实践的模拟概论B树后缀数组最大流问题搜索问题、问题转化、NP-completeness目标:理解精巧、复杂和困难的算法,熟悉优雅、简单和简单的算法。从算法上思考。