算法学习笔记

算法虐我千百遍,我待算法如初恋  原文出处:https://github.com/nonstriater/Learn-Algorithms


学习方法

  • 把所有经典算法写一遍 
  • 看算法有关源码 
  • 加入算法学习社区,相互鼓励学习 
  • 看经典书籍 刷题

基本数据结构和算法

链表

  • 链表
  • 双向链表

二叉树

  • 二叉树 
  • 二叉查找树 
  • 伸展树(splay tree 分裂树) 
  • 平衡二叉树AVL 
  • 红黑树 
  • B树,B+,B* 
  • R树 
  • Trie树(前缀树) 
  • 后缀树 
  • 最优二叉树(赫夫曼树) 
  • 二叉堆 (大根堆,小根堆) 
  • 二项树 
  • 二项堆 
  • 斐波那契堆(Fibonacci Heap)

哈希表/散列表 (Hash Table)

  • 散列函数 
  • 碰撞解决

字符串算法

  • 排序 
  • 查找
    • BF算法 
    • KMP算法 
    • BM算法
  •  正则表达式
  • 数据压缩

图的算法

  • 图的存储结构和基本操作(建立,遍历,删除节点,添加节点) 
  • 最小生成树 
  • 拓扑排序 
  • 关键路径 
  • 最短路径: Floyd,Dijkstra,bellman-ford,spfa

排序算法

交换排序算法  

  • 冒泡排序 
  • 插入排序 
  • 选择排序 
  • 希尔排序 
  • 快排 
  • 归并排序 
  • 堆排序 

线性排序算法 

  • 桶排序

查找算法 

  • 顺序表查找:顺序查找 
  • 有序表查找:二分查找 
  • 分块查找: 块内无序,块之间有序;可以先二分查找定位到块,然后再到块中顺序查找 
  • 动态查找: 二叉排序树,AVL树,B- ,B+ (这里之所以叫 动态查找表,是因为表结构是查找的过程中动态生成的) 
  • 哈希表: O(1)

15个经典基础算法 

  • Hash 
  • 快速排序
  • 快递选择SELECT 
  • BFS/DFS (广度/深度优先遍历) 
  • 红黑树 (一种自平衡的二叉查找树) 
  • KMP 字符串匹配算法 
  • DP (动态规划 dynamic programming) 
  • A*寻路算法: 求解最短路径 
  • Dijkstra:最短路径算法 (八卦下:Dijkstra是荷兰的计算机科学家,提出”信号量和PV原语“,"解决哲学家就餐问题",”死锁“也是它提出来的) 
  • 遗传算法 
  • 启发式搜索 
  • 图像特征提取之SIFT算法 
  • 傅立叶变换 
  • SPFA(shortest path faster algorithm) 单元最短路径算法

海量数据处理 

  • Hash映射/分而治之 
  • Bitmap 
  • Bloom filter(布隆过滤器) 
  • Trie树 
  • 数据库索引 
  • 倒排索引(Inverted Index) 
  • 双层桶划分 
  • 外排序 
  • simhash算法 
  • 分布处理之Mapreduce 

算法设计思想 

  • 迭代法 
  • 穷举搜索法 
  • 递推法 
  • 动态规划 
  • 贪心算法 
  • 回溯 
  • 分治算法

推荐阅读 

刷题必备 

  • 《剑指offer》 
  • 《编程之美》 
  • 《结构之法:面试和算法心得》 
  • 《算法谜题》 都是思维题

基础 

《编程珠玑》Programming Pearls 
《编程珠玑(续)》 
《数据结构与算法分析》 
《Algorithms》 这本近千页的书只有6章,其中四章分别是排序,查找,图,字符串,足见介绍细致 

算法设计 

《算法设计与分析基础》 
《算法引论》 告诉你如何创造算法 断货 
《Algorithm Design Manual》算法设计手册 红皮书 
《算法导论》 是一本对算法介绍比较全面的经典书籍 
《Algorithms on Strings,Trees and Sequences》 
《Advanced Data Structures》 各种诡异高级的数据结构和算法 如元胞自动机、斐波纳契堆、线段树 600块

延伸阅读 

《深入理解计算机系统》 
《TCP/IP详解三卷》 
《UNIX网络编程二卷》 
《UNIX环境高级编程:第2版》 
《The practice of programming》 Brian Kernighan和Rob Pike 
《writing efficient programs》 优化 
《The science of programming》 证明代码段的正确性 800块一本

参考链接和学习网站 
《数学建模十大经典算法》 
《数据挖掘领域十大经典算法》 
《十道海量数据处理面试题》 
《数字图像处理领域的二十四个经典算法》 
《精选微软等公司经典的算法面试100题》 

基本算法演示

http://sjjg.js.zwu.edu.cn/SFXX/sf1/sfys.html 
http://www.cs.usfca.edu/~galles/visualization/Algorithms.html 

编程网站 

http://leetcode.com/ 
http://openjudge.cn/ 开放在线程序评测平台,可以床架自己的OJ小组 
http://ac.jobdu.com/index.php 九度OJ 这有个ACM训练方案 
http://www.java3z.com/cwbwebhome/article/article19/res041.html

其它 

高级数据结构和算法 北大教授张铭老师在coursera上的课程。完成这门课之时,你将掌握多维数组、广义表、Trie树、AVL树、伸展树等高级数据结构,并结合内排序、外排序、检索、索引有关的算法,高效地解决现实生活中一些比较复杂的应用问题。当然coursera上也还有很多其它算法方面的视频课程。 

算法设计与分析 Design and Analysis of Algorithms 由北大教授Wanling Qu在coursera讲授的一门算法课程。首先介绍一些与算法有关的基础知识,然后阐述经典的算法设计思想和分析技术,主要涉及的算法设计技术是:分治策略、动态规划、贪心法、回溯与分支限界等。每个视频都配有相应的讲义(pdf文件)以便阅读和复习。





内容概要:本文介绍了一个针对电力系统连锁故障传播路径的N-k多阶段双层优化及故障场景筛选模型,该模型基于混合整数线性规划(MILP)方法构建,旨在全面评估电力系统在遭受多重故障时的脆弱性与恢复能力。通过引入故障传播路径的概念,模型能够动态模拟故障在电网中的逐级扩散过程,并结合多阶段优化策略,实现对关键故障场景的有效识别与优先排序。整个框架不仅考虑了初始故障元件的选取,还涵盖了后续因潮流转移引发的级联跳闸行为,从而提升了风险评估的准确性与时效性。该研究已在Matlab平台上完成代码实现,具备良好的可复现性工程应用价值,适用于提升现代电网的安全防御水平。; 适合人群:电力系统、能源安全及相关领域的科研人员、高校研究生以及从事电网规划与运行管理的工程技术人员。; 使用场景及目标:①用于电力系统安全评估中识别最危险的N-k故障组合;②支撑电网应急预案制定与薄弱环节改造;③作为学术研究中关于级联故障建模与优化求解的教学与验证工具;④服务于智能电网背景下抵御蓄意攻击或极端事件的风险防控决策。; 阅读建议:建议读者结合Matlab代码深入理解模型的数学 formulation 与求解流程,重点关注目标函数设计、约束条件构建及双层优化结构的实现逻辑,同时可通过调整系统参数故障设定进行仿真对比分析,以掌握不同因素对连锁故障演化的影响规律。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值