# Way-to-Algorithm **Repository Path**: dirklu/Way-to-Algorithm ## Basic Information - **Project Name**: Way-to-Algorithm - **Description**: Computer Basic Algorithm Tutorial and Source Code - 计算机基础算法教程与源码 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-02-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## ----------------- ##

Way to Algorithm - 算法之路

Computer Basic Algorithm Tutorial and Source Code - 计算机基础算法教程与源码

#### ----------------- ####

Content - 目录结构

* Chapter-1 - Sort   排序
* InsertSort   插入排序
* BubbleSort   冒泡排序
* QuickSort   快速排序
* MergeSort   合并排序
* Chapter-2 - Search   搜索
* BinarySearch   二分查找法
* BruteForce   暴力枚举
* Resursion   递归
* BreadthFirstSearch   广度优先搜索
* BidirectionalBreadthSearch   双向优先搜索
* AStarSearch   A*搜索
* DancingLinks   舞蹈链
* Introduction-AdvancedSearch   高级搜索介绍
* Chapter-3 - DataStructure   数据结构
* Introduction-ClassicDataStructure   经典数据结构介绍
* HashTable   哈希表
* DisjointSet   并查集
* BinaryIndexTree   树状数组
* SegmentTree   线段树
* LeftistTree   左偏树
* PrefixTree   前缀树
* SuffixTree   后缀树
* AVLTree   平衡二叉树
* RedBlackTree   红黑树
* Chapter-4 - DynamicProgramming   动态规划
* Introduction-DynamicProgramming   动态规划介绍
* LinearDP   线性动态规划
* LongestCommonSubsequence   最长公共子序列
* LongestIncreasingSubsequence   最长递增子序列
* LongestIncreasingSubsequenceExtension   最长递增子序列扩展
* BidirectionSubsequence   双向子序列
* KnapsackDP   背包问题
* ZeroOneKnapsack   01背包
* ZeroOneKnapsackExtension   01背包扩展
* CompleteKnapsack   完全背包
* TwoDimensionKnapsack   二维背包
* GroupKnapsack   分组背包
* RegionDynamic   区域动态规划
* MinimumMergeCost   最小合并代价
* MinimumMergeExtension   最小合并扩展
* MaximumBinaryTreeMerge   最大二叉树合并
* TreeDynamic   树形动态规划
* BinaryTree   二叉树
* MultipleTree   多叉树
* Multiple2BinaryTree   多叉树转二叉树
* MultipleTreePath   多叉树路径
* LoopedMultipleTree   带环多叉树
* MultipleTreeTraverse   多叉树遍历
* Chapter-5 - GraphTheory   图论
* Traverse   遍历
* TraverseTree   遍历树
* DepthFirstSearch   深度优先遍历
* BreadthFirstSearch   广度优先遍历
* TopologicalSort   拓扑排序
* EulerLoop   欧拉回路
* HamiltonLoop   汉密尔顿回路
* Kosaraju   Kosaraju算法
* 2-Satisfiability   2-SAT问题
* Tarjan   Tarjan算法
* StrongestConnectedComponent   强连通分支
* Gabow   Gabow算法
* Cut   割
* DoubleConnectedComponent   双连通分支
* LeastCommonAncestor   最近公共祖先
* RangeExtremumQuery   区域最值查询
* MinimumSpanningTree   最小生成树
* Kruskal   Kruskal算法
* Prim   Prim算法
* SecondMinimumSpanningTree   次小生成树
* DegreeBoundedSpanningTree   度限制生成树
* OptimalRatioSpanningTree   最优比率生成树
* ShortestPath   最短路径
* Relaxation   松弛操作
* BellmanFord   BellmanFord算法
* ShortestPathFasterAlgorithm   SPFA最短路径更快算法
* Dijkstra   Dijkstra算法
* Floyd   Floyd算法
* DifferentConstraints   差分约束
* FlowNetwork   网络流
* EdmondsKarp   EdmondsKarp算法
* PushAndRelabel   压入与重标记
* Dinic   Dinic算法
* DistanceLabel   距离标号算法
* RelabelToFront   重标记与前移算法
* HighestLabelPreflowPush   最高标号预留与推进算法
* DistanceLabel_AdjacentListVersion   距离标号算法_邻接表优化版
* DistanceLabel_AdjacentListVersion   距离标号算法_邻接表优化版
* Summary-Maxflow   最大流算法小结
* MinimumCost_Maxflow   最小费用最大流
* MultipleSourceSink_Maxflow   多源点、多汇点最大流
* Connectivity   连通度
* NoSource_NoSink_VolumeBounded_Flow   无源点、无汇点、容量有上下界的流网络
* VolumeBounded_Maxflow   容量有上下界的最大流
* VolumeBounded_Minflow   容量有上下界的最小流
* BinaryMatch   二分匹配
* Hungarian   匈牙利算法
* HopcroftKarp   Hopcroft-Karp算法
* Match2Maxflow   二分匹配转最大流
* KuhnMunkres   Kuhn-Munkres算法
* Introduction-Domination_Independent_Covering_Clique   支配集,独立集,覆盖集与团的介绍
* WeightedCoveringAndIndependentSet   最小点权覆盖和最大点权独立集
* MinimumDisjointPathCovering   最小不相交路径覆盖
* MinimumJointPathCovering   最小可相交路径覆盖
* Coloring   染色问题
* Chapter-6 - LinearAlgebra   线性代数
* Matrix   矩阵
* Strassen   Strassen算法
* GaussElimination   高斯消元法
* LUP   LUP分解
* InverseMatrix   矩阵求逆
* LinearProgramming   线性规划
* Simplex   单纯形算法
* Dinkelback   Dinkelbach算法
* Chapter-7 - Calculation   数学计算
* BasicCalculate   基础计算
* LargeNumber   大数字
* DecimalConversion   数字十进制与其他进制转换
* Exponentiation   幂运算
* CombinatorialMathematics   组合数学
* Introduction-CombinatorialMathematics   组合数学介绍
* FullPermutaion   全排列
* Combination   组合
* PermutationGroup   置换群
* Catalan   卡特兰数
* NumberTheory   数论
* Sieve   筛选算法
* Euclid   Euclid算法
* EuclidExtension   Euclid扩展
* ModularLinearEquation   模线性方程
* ChineseRemainerTheorem   中国剩余定理
* ModularExponentiation   模幂运算
* Chapter-8 - AnalyticGeometry   解析几何
* VectorAndPolygon   向量与多边形
* Cross   叉积
* SegmentIntersection   线段相交
* PointInConvexPolygon   点在凸多边形内
* Sweeping   扫除算法
* ConvexPolygonArea   凸多边形面积
* ConvexPolygonGravityCenter   凸多边形重心
* RayDistinguish   射线判别
* RotatingCalipers   旋转卡壳
* ConvexHull   凸包
* NearestNeighbor   最近点对
* GrahamScan   Graham扫描
* QuickConvexHull   快速凸包算法
* Chapter-9 - String   字符串
* NaiveStringMatch   简单字符串匹配
* KnuthMorrisPratt   KMP算法
* TrieTree   字典树
* AhoCorasickAutomation   AC自动机
* Chapter-10 - GameTheory   博弈论
* BashGame   巴什博弈
* WythoffGame   威佐夫博奕
* NimGame   尼姆博弈
* SpragueGrundy   SG函数
#### ----------------- ####

Introduction - 内容概要

  这是一本关于大学生计算机算法的书籍。之所以称之为“书”而不是“源码”,是因为我发现单纯的代码很难让人学习和理解,我自己在学习的过程中走了不少的弯路。我认为将算法图形化、公式化是最容易让人学习和理解的方式,这样可以从数学角度来准确的描述问题和解法。因此我将这些内容用自己的方式画出来,配合代码和测试,希望给出一个比较令人满意的讲解。
  本书的每一章专门讲解一类算法问题,其中又划分多个小节,专门讲解其中的一个分支或变种。同一章节中各个小节之间会有明显的联系,基础的算法在前面,变种的、高级的算法在后面。每个算法都有讲解、源码和测试三个部分。在编写的过程中,我学习和参考了非常多的资料,有很多都忘记了,记得的我会列在参考资料中。
  后来NEWPLAN同学参加到这本书籍的编写中,他添加了很多内容,我们也欢迎更多的同学来一起丰富这些资料,不过有的时候我会调整一下代码规范,这是为了方便阅读。

作者:
NEWPLAN
林荣彬

西安交通大学计算机系
林荣彬
2014年2月16日

#### ----------------- ####

Reference - 参考资料

* 算法导论 Introduction to Algorithms http://ce.bonabu.ac.ir/uploads/30/CMS/user/file/115/EBook/Introduction.to.Algorithms.3rd.Edition.Sep.2010.pdf

* 背包问题九讲 http://love-oriented.com/pack/