Numpy介绍
NumPy是Python的一种开源的数值计算扩展,这种工具可用来存储和处理大型矩阵,专为进行严格的数字处理而产生。
Scikit-Learn库自2007年发布以来,已经称为最受欢迎的机器学习库之一,基于广受欢迎的Numpy和Scipy库构建,能够提供用于机器学习的算法,数据预处理等功能。
Linear Programming:线性规划,是运筹学中的一个重要分支,研究线性约束条件下线性目标函数的极值问题的数学理论和方法,能从各种限制条件的组合中,选择出最为合理的计算方法,建立线性规划模型,从而求得最佳结果。广泛应用于军事作战、经济分析、经营管理和工程技术等方面。为合理地利用有限的人力、物力、财力等资源作出的最优决策,提供科学的依据。
Union Find:并查集,是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并。
Bit Operation:位运算,程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算就是直接对整数在内存中的二进制位进行操作,所以运算速度相对较快。位运算主要包括**按位与(&)、按位或(|)、按位异或(^)、取反()、左移(<<)**、**右移(>>)**这几种,其中除了取反()以外,其他的都是二目运算符,即要求运算符左右两侧均有一个运算量。
Breadth-First-Search(BFS):深度优先搜索,属于图算法的一种,是一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。在树搜索算法中,从上到下为纵,从左向右为横,纵向搜索为深度优先,而横向搜索是广度优先。简言之就是先访问图的顶点,然后优先访问其邻接点,然后再依次进行被访问点的邻接点,一层一层访问,直至访问完所有点,遍历结束,通常根据队列的先进先出性质将各结点遍历。
Depth-First-Search(DFS):深度优先搜索,属于图算法的一种,是一种盲目搜寻法,从初始状态出发,当搜索到某一步时,发现原先选择并不是最优或达不到目标,就退回一步重新选择。根据产生子节点的条件约束,搜索问题的最优解。因此又名回溯法,是一种能进则进,进不了则换,换不了则退的搜索方法。
Dynamic Programming(DP):动态规划,是运筹学的一个分支,是求解决策过程最优化的数学方法。于1957年被Richard Bellman(理查德·贝尔曼)提出。其中的Programming不是编程的意思,而是指一种表格处理法,把每一步得到的子问题的结果存储在表格里,每次遇到子问题时不需要再求解一遍。其本质也是一种分治算法,其不同点在于分治算法将原问题分解为若干子问题,自顶向下求解各子问题,再合并子问题的解。动态规划也是把原问题分解为若干子问题,然后自底向上,先求解最小的子问题,把结果存储起来,求解大问题时直接查询小问题的解,避免了大量的重复计算,提高了算法效率。其本质为:递归+记忆化
Divide and Conquer:分治算法,分而治之。山高皇帝远,治理国家,不可能所有的事情都由皇帝解决,国家分省、市、县、镇、村,层层管理,最终汇总合并到皇帝。借鉴于这种思想,将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同(如果子问题的规模仍然不够小,则再继续划分),然后递归求解这些问题,最好用适当的方法将各子问题的解合并成原问题的解。
Greedy:贪心算法,又称贪婪算法,人要活在当下,看清楚眼前,这种思想就是贪心思想。是指在对问题求解时,总是做出当前最好的选择,不从整体最优上加以考虑。也就是说,它期望通过局部最优选择从而得到全局最优的解决方案。