首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

算法设计应该如何学

2012-03-16 
算法设计应该怎么学?算法设计应该怎样学比较好?现在计划用10个月的时间学习算法设计,平均每天为3小时左右,

算法设计应该怎么学?
算法设计应该怎样学比较好?现在计划用10个月的时间学习算法设计,平均每天为3小时左右,学习的目标是能达到百度之星、ACM/ICPC竞赛这样的水平。目前的基础是C语言学得还算比较好,语法应该是没问题的,主要问题是数据结构和算法设计。现在所拥有的资料是《算法导论》(第二版 翻译的),《数据结构》可以从学校图书馆借到,还有就是最近一直在看的《算法艺术与信算学竞赛》这本书。感觉内容有点多,时间有点紧,所以想向各位请教一下经验。望高手多多指教!
  另:是先把《图论》这样的书先看一遍较好,还是直接到POJ,ZOJ上做题,然后对查书找相关资料较好?有这方面经验的高手多给我一些建议呀!
  非常感谢!

[解决办法]
一边看一边做吧。
[解决办法]
ls神童啊 10个月应该可以吧
[解决办法]
《算法导论》(第二版)很好的书,应该把它学透!
[解决办法]
另外,这个站点的acm题不错:http://acm.timus.ru/。
[解决办法]
我觉得下面这些说得足够好了,学习算法,关键是多看,多练,持之以恒~

探讨
在网上搜到了一些,贴出来大家看一下怎么样,该怎样看待别人的经验?
引用如下:
算法学习的轨迹
        对于编程的初学者,可以先通过简单的排序算法了解最简单的ADT线性表的常用操作;然后要重点掌握递归技术,包括递归和递推的相互转换。递归技术非常重要,可以通过递归技术了解ADT栈的操作;接着学习搜索法的初步——回溯法,研究经典问题八皇后问题和走迷宫问题,通过这些经典问题了解深度优先搜索法(DFS)和宽度优先搜索法(BFS)以及ADT栈、ADT队列的操作,要学会利用人工设置堆栈模拟递归;接着可以学习分治法、贪心法这两种常用的策略,并应用到排序、搜索等简单的算法中;这时再开始学习图和树这两种抽象数据类型就应该没有什么难度了。在学习ADT图和ADT树时,要注意结合离散数学中的图论理论知识和搜索法中的DFS,BFS方法,要学会将实际问题转化为图论模型;再下去可以学习各种搜索法的优化算法,启发式搜索、A算法、A*算法或界限剪枝法等;然后是网络流算法,要注意模型的建立;最后学习最优化问题的解法,包括线性规划、动态规划、非线性规划等算法策略,这部分内容主要侧重模型的建立和分析,算法本身并没有难度。这样基本的算法就学习完了。再深入一点可以学习问题的计算复杂性,计算模型,并行算法,神经网络以及各个领域中的算法.


[解决办法]
学习了,顶一下
[解决办法]
探讨
在网上搜到了一些,贴出来大家看一下怎么样,该怎样看待别人的经验?
引用如下:
算法学习的轨迹
        对于编程的初学者,可以先通过简单的排序算法了解最简单的ADT线性表的常用操作;然后要重点掌握递归技术,包括递归和递推的相互转换。递归技术非常重要,可以通过递归技术了解ADT栈的操作;接着学习搜索法的初步——回溯法,研究经典问题八皇后问题和走迷宫问题,通过这些经典问题了解深度优先搜索法(DFS)和宽度优先搜索法(BFS)以及ADT栈、ADT队列的操作,要学会利用人工设置堆栈模拟递归;接着可以学习分治法、贪心法这两种常用的策略,并应用到排序、搜索等简单的算法中;这时再开始学习图和树这两种抽象数据类型就应该没有什么难度了。在学习ADT图和ADT树时,要注意结合离散数学中的图论理论知识和搜索法中的DFS,BFS方法,要学会将实际问题转化为图论模型;再下去可以学习各种搜索法的优化算法,启发式搜索、A算法、A*算法或界限剪枝法等;然后是网络流算法,要注意模型的建立;最后学习最优化问题的解法,包括线性规划、动态规划、非线性规划等算法策略,这部分内容主要侧重模型的建立和分析,算法本身并没有难度。这样基本的算法就学习完了。再深入一点可以学习问题的计算复杂性,计算模型,并行算法,神经网络以及各个领域中的算法.


[解决办法]
探讨
在网上搜到了一些,贴出来大家看一下怎么样,该怎样看待别人的经验?
引用如下:
算法学习的轨迹
        对于编程的初学者,可以先通过简单的排序算法了解最简单的ADT线性表的常用操作;然后要重点掌握递归技术,包括递归和递推的相互转换。递归技术非常重要,可以通过递归技术了解ADT栈的操作;接着学习搜索法的初步——回溯法,研究经典问题八皇后问题和走迷宫问题,通过这些经典问题了解深度优先搜索法(DFS)和宽度优先搜索法(BFS)以及ADT栈、ADT队列的操作,要学会利用人工设置堆栈模拟递归;接着可以学习分治法、贪心法这两种常用的策略,并应用到排序、搜索等简单的算法中;这时再开始学习图和树这两种抽象数据类型就应该没有什么难度了。在学习ADT图和ADT树时,要注意结合离散数学中的图论理论知识和搜索法中的DFS,BFS方法,要学会将实际问题转化为图论模型;再下去可以学习各种搜索法的优化算法,启发式搜索、A算法、A*算法或界限剪枝法等;然后是网络流算法,要注意模型的建立;最后学习最优化问题的解法,包括线性规划、动态规划、非线性规划等算法策略,这部分内容主要侧重模型的建立和分析,算法本身并没有难度。这样基本的算法就学习完了。再深入一点可以学习问题的计算复杂性,计算模型,并行算法,神经网络以及各个领域中的算法.


[解决办法]
上面说得不错
但是个人感觉
递归跟树应该同时学
学了树,对理解递归很有好处

热点排行