算法的学习瓶颈和学习思路
14天阅读挑战赛
努力是为了不平庸~
提到算法,有的觉得很难学,一个原因是算法本身就存在一定的复杂性,另外一个原因就是在学习的过程,大部分直接得到结果,然后是基于围绕结果,进行的推理证明,因此在学习算法的时候,经常觉得一切都顺利成章,很容易感到自洽,但在实际解决问题的过程中,没有明确的结果和方法做前提指引,大部分情况下,会觉得无从下手。因此,在学习算法的时候,应该基于现有问题,正向推理,基于已有的算法知识,得到自己的解题思路,然后再与最优算法做对比,分析自己的解题思路和发力方向是否与其一致,见贤思齐,弄清楚算法的来龙去脉,不断总结自己的不足。
算法作为一门学问,其中最主要的两个学习路线就是数据结构和算法策略。
1. 数据结构
数据结构是一种计算机科学技术领域广泛使用的的专业术语,我们可以简单的把它理解为数据和结构。其中数据是描述客观事物的符号,为程序操控,存储的计算机上,结构主要是用来描述数据的逻辑结构和存储结构。
1.1 数据的逻辑结构
逻辑结构主要有四种基本类型:集合结构、线性结构、树形结构和图形结构。
- 集合结构:由若干个元素组成的集合体相互堆积起来的一种结构类型,其最大的特点是,数据元素之间无其他的关系,仅仅是属于一个集合而已。
- 线性结构:数据元素直接存在一定的对应关系,其开始节点和终端节点具有唯一性,除这两个点外,其他元素之间都有唯一的前端节点和后继节点,行程一个完整的线性结构。
- 树形结构: 数据与元素之间存在着一一对应的关系,每个元素都有且只有一个前端节点,有若干个后端节点。
- 图形结构: 数据元素之间存在较多的对应关系,每个节点都有若干个前端节点和后继节点。
1.2数据的存储结构
存储结构描述可数据在计算机内部的存储安排。主要有顺序存储结构、链式存储结构、索引存储结构和哈希存储结构。
- 顺序存储结构:利用物理存储单元之间的连续性,将数据也按照逻辑顺序将其存入具有相同顺序的物理存储单元,节省存储空间,实现对数据的随机存取,每个节点拥有对应的序号,通过序号可以直接计算出对应数据的存储位置。但其明显的缺点就是,对数据的插入和删除不够友好,插入或删除一个元素可能需要移动多个无关元素的位置,降低插入和删除的效率。
- 链式存储结构:逻辑上两个相邻的两个元素在物理空间上不一定相邻,数据之间的相邻都是增加前端节点和后继节点的指针来完成相邻数据元素的访问和修改,这样做的好处就是,插入和删除元素效率很高,但是缺点就是存储空间效率太低,不利于数据的随机存取。
- 索引存储结构:该存储方式最大的特点就是增加了一个附加的索引表,索引表记录每个元素的唯一索引标识和对应元素的地址,当对数据进行插入和删除时,只需要对索引表操作即可,不需要去移动修改真实的数据,大大提高数据元素的查找能力,其缺点就是引入了索引表,增大了数据的存储空间。
- 哈希存储结构:通过哈希函数计算出每个元素关键字唯一对应的数值用作数据元素的存储地址的映射,通过该映射快速获得对应元素的地址。其最大的好处是,能够根据元素关键字立刻计算出该元素的存储位置,但其只能用于数据元素间不存在数据的逻辑关系,适合数据的快速查找和插入场景。
2. 算法策略
算法策略主要有贪心策略、分置策略、动态规划策略和线性策略等。
3. 写在做后
在实际的算法学习过程中,我们需要根据实际问题分析,设计合适的算法策略,然后基于已有的算法知识,选择合适的数据逻辑结构和数据存储结构,将结构和算法策略拧成一条线,得到问题的最优解决和实现方案,体会学习和解决问题的乐趣和节奏感,提高自己的算法实践能力。
算法的学习瓶颈和学习思路相关推荐
- 从起源到具体算法,这篇深度学习综述论文送给你
来源:机器之心 本文共4602字,建议阅读8分钟. 本文为大家从最基础的角度来为大家解读什么是深度学习,以及深度学习的一些前沿发展. 自 2012 年多伦多大学 Alex Krizhevsky 等人提 ...
- 学习C语言基本思路与参考书籍
征得林健入本人的同意,把这篇文章搬到CSDN来,同时也希望和我一样的新人能够少走弯路,在计算机这条道路上能够越走越远. 原文地址:http://zhuanlan.zhihu.com/linjr/196 ...
- DQN相关知识总结及演员-评论员算法介绍(DataWhale组队学习笔记)
DQN基本概念及相关技巧 DQN(Deep Q-network)即深度Q网络,通过结合神经网络技术和价值函数近似,采用目标网络和经历回放的方法来进行网络的训练. 价值函数近似 在面对现实中的强化学习任 ...
- 三维图形几何变换算法实验_基于深度学习的三维重建算法综述
点击上方"计算机视觉life",选择"星标" 快速获得最新干货 00 前言 目前,三维重建技术已在游戏.电影.测绘.定位.导航.自动驾驶.VR/AR.工业制造以 ...
- 一起自学SLAM算法:11.5 强化学习与自主导航
连载文章,长期更新,欢迎关注: 写在前面 第1章-ROS入门必备知识 第2章-C++编程范式 第3章-OpenCV图像处理 第4章-机器人传感器 第5章-机器人主机 第6章-机器人底盘 第7章-SLA ...
- 数据结构与算法的学习——思维的学习与高屋建瓴
数据结构与算法的学习--思维的学习与高屋建瓴 一.算法思维的练习 二.练习过程 1.是什么(WHat) 2.怎么用(How) 三.进阶思考 1.栈的思考 2.树的问题 3.关于递归 (1)排列组合问题 ...
- 【原创】强化学习笔记|从零开始学习PPO算法编程(pytorch版本)
从零开始学习PPO算法编程(pytorch版本)_melody_cjw的博客-CSDN博客_ppo算法 pytorch 从零开始学习PPO算法编程(pytorch版本)(二)_melody_cjw的博 ...
- 数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
文章目录 前言 一.数据结构 1.1 线性结构 1.2 非线性结构 二.数据结构与算法 2.1 两者之间的关系 2.2 两者重要性 三.实际编程中遇到的问题 3.1 单链表问题 3.2 五子棋问题 3 ...
- 【考研初试的准备】复习思路 + 时间线 +专业课学习及资料搜索思路
[考研初试的准备]复习思路 + 时间线 +专业课学习及资料搜索思路 复习思路 英语(一)分值划分 阅读模块 作文模块 翻译模块 完型模块 数学(一)分值划分 政治分值划分 时间节点 ①3 - 6月 ② ...
最新文章
- Delphi判断一个文件是不是JPG图片
- 我利用这几个神器来拯救自己奇丑无比的python代码
- python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】
- Python装饰器(一)
- centos7限制普通用户访问单一目录下的单一文件
- 火线精英手游服务器维护,火线精英手机版登录失败进不去解决办法
- 【报告分享】快手、抖音、视频号对比,竞争趋紧,运营体系成关键.pdf(附下载链接)...
- 从零开始玩人工智能-机器人服务-03
- win7系统的自动更新很长时间,如何关闭
- MySQL binlog相关分析
- ubuntu下点击安装VMware tools,没有压缩包文件
- xpath 查询忽略大小
- 关于alfa无线设备
- html 防网页假死,HTML 5 Web开发:防止浏览器假死的方法
- android dialog遮挡键盘,彻底解决软键盘遮挡DialogFragment
- [python]的functools.partial(偏函数)
- Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)
- 散焦光栅 matlab代码,散焦光栅测量光束漂移的光路设计仿真
- 论文翻译:2021_DeepFilterNet: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on
- 如何在Android中使用离线的谷歌地图Google maps
热门文章
- Linux 上安装 MySQL 客户端
- Eclipse10个最有用的快捷键
- 三国塔防魏传java_三国塔防魏传常见武将配置
- 【美团HD】cell的处理
- 直接作用于治疗环节的可穿戴设备都长什么样
- Multiple Inheritance Considered Useful
- 适配PyTorch FX,OneFlow让量化感知训练更简单
- 小米手机linux自动化测试,【自动化测试怎么样】小米2021年自动化测试前景怎么样-看准网...
- centos7重启网络服务命令
- 2020适合计算机专业的笔记本电脑,2020年,如何选择一款适合自己的笔记本电脑,全面解析指南...