代码改变世界

随笔分类 - Algorithm

Design and Analysis of Algorithms_Decrease-and-Conquer

2015-06-05 15:24 by 星星之火✨🔥, 1969 阅读, 收藏, 编辑
摘要:I collect and make up this pseudocode from the book:> _ Anany LevitinNote that throughout the paper, we assume that inputs to algorithms fall within t... 阅读全文

俄式乘法

2015-06-05 15:01 by 星星之火✨🔥, 479 阅读, 收藏, 编辑
摘要:所谓俄式乘法说白了就是给你两个正整数m 和n,让你计算两者的乘积。如果我们以n 作为输入规模的度量的话(或者以m 作为度量也可以,两者不过是时间复杂度有差异罢了,分别为log 以2 为底n 或m 的对数),那么计算n * m 的值,可以根据n 的奇偶性分成两部分,分别对原来规模一半的n/2 进行处理... 阅读全文

Design and Analysis of Algorithms_Divide-and-Conquer

2015-05-29 21:43 by 星星之火✨🔥, 2909 阅读, 收藏, 编辑
摘要:I collect and make up this pseudocode from the book: > _ Anany Levitin Note that throughout the paper, we assume that inputs to algorithms fall within... 阅读全文

Design and Analysis of Algorithms_Brute Froce

2015-05-27 19:10 by 星星之火✨🔥, 763 阅读, 收藏, 编辑
摘要:I collect and make up this pseudocode from the book: > _ Anany LevitinNote that throughout the paper, we assume that inputs to algorithms fall within ... 阅读全文

Design and Analysis of Algorithms_Fundamentals of the Analysis of Algorithm Efficiency

2015-05-25 20:46 by 星星之火✨🔥, 1325 阅读, 收藏, 编辑
摘要:I collect and make up this pseudocode from the book:> _ Anany LevitinNote that throughout the paper, we assume that inputs to algorithms fall within t... 阅读全文

Design and Analysis of Algorithms_Introduction

2015-05-23 21:16 by 星星之火✨🔥, 874 阅读, 收藏, 编辑
摘要:I collect and make up this pseudocode from the book:> _ Anany LevitinNote that throughout the paper, we assume that inputs to algorithms fall within t... 阅读全文

从顺序查找窥探平均时间复杂度分析的一般化方法

2015-05-18 19:10 by 星星之火✨🔥, 2315 阅读, 收藏, 编辑
摘要:顺序查找是在n 个元素的列表中查找一个给定项(或者说查找键)的一个简单的算法。它会检查列表中的连续元素,直到发现了匹配查找键的元素或者到达了列表的终点。我们假设对输入规模为n 的数据做若干次查找,为了分析该算法的平均时间复杂度,还需要对规模为n 的输入做一些假设。标准的假设是:成功查找的概率是P(0... 阅读全文

我的新发现:AVL树旋转的一个特性

2015-05-12 08:40 by 星星之火✨🔥, 544 阅读, 收藏, 编辑
摘要:关于AVL树旋转的代码网络上铺天盖地。一些经典的实现方法如下:AVLTree SingleLeftRotation(AVLTree A){ AVLTree B = A->left; A->Left = B->Right; B->Right = A; A->Height = M... 阅读全文

Dijkstar算法的数学原理

2015-04-28 16:40 by 星星之火✨🔥, 2213 阅读, 收藏, 编辑
摘要:Dijkstar算法是荷兰数学家迪克斯屈拉(or迪杰斯特拉?)在1959年发现的一个算法。是现有的几个求带权图中两个顶点之间最短通路的算法之一。算是一个相当经典的算法了。迪克斯屈拉算法应用于无向连通简单带权图中,求出顶点a 与z 之间的最短通路的长度。我感觉其算法精髓就是:找到第一个与a 最靠近的顶... 阅读全文

回溯深搜与剪枝初步

2015-04-19 23:31 by 星星之火✨🔥, 4835 阅读, 收藏, 编辑
摘要:回溯算法也称试探法,一种系统的搜索问题的解的方法,是暴力搜寻法中的一种。回溯算法的基本思想是:从一条路往前走,能进则进。回溯算法解决问题的一般步骤:根据问题定义一个解空间,它包含问题的解利用适于搜索的方法组织解空间利用深度优先法搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索回溯法采用试错的思想,... 阅读全文

并查集

2015-04-16 21:53 by 星星之火✨🔥, 271 阅读, 收藏, 编辑
摘要:在一个有n个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按照一定的顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集——顾名思义,'并'即合并两个集合;'查'即查找某个元素属于哪个集合。合并和查找就是并查集常见的两种操作。一般地,在合并操... 阅读全文

妙用生成函数

2015-04-15 23:37 by 星星之火✨🔥, 417 阅读, 收藏, 编辑
摘要:还是从一道题目来开始生成函数的研究吧,下面的题目取自HDU_1028:Problem Description"Well, it seems the first problem is too easy. I will let you know how foolish you are later." f... 阅读全文

素数筛选法

2015-04-13 21:22 by 星星之火✨🔥, 739 阅读, 收藏, 编辑
摘要:素数筛选法是一种快速求某个大整数区间内的所有素数的方法,具体步骤是:找到区间内(例如1~n)除2外所有2的倍数,划掉。然后找到除3外所有3的倍数,划掉。然后5,7,...,续行此法,直到√n为止。这个方法为什么是正确的呢?这样考虑,区间内所有素数都不可能包含其他素因子,因此可以将所有包含素因子的数从... 阅读全文

动态规划初步

2015-04-12 20:19 by 星星之火✨🔥, 814 阅读, 收藏, 编辑
摘要:动态规划是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间远远少于朴素解法。对于一个初学者来说,空洞的理论远不如简单的实践来得直观有趣,因此还是从一道经典的DP问题出发吧,下... 阅读全文

经典贪心法:时间序列问题及其全局最优性证明

2015-04-10 16:25 by 星星之火✨🔥, 1265 阅读, 收藏, 编辑
摘要:贪心算法是指在对问题求解时,总做出在当前看来是最好的选择。也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解。一旦贪心算法求出了一个可行解,就要确定这个算法是否找到了最优解。为此,要么证明这个解是最优的,要么说明一个该算法产生非最优解的反例。 为了更方便的说明问题,我们来拿一个实 阅读全文

白话数论的基石:算术基本定理

2015-03-25 10:53 by 星星之火✨🔥, 1530 阅读, 收藏, 编辑
摘要:算术基本定理,又称唯一分解定理,作为数论的基石,几乎每一个定理都建立在它之上,该定理讲述了一个基本事实:任何大于1的整数都能被唯一分解为若干个素数的乘积,这些素因子以非减序列排列。下面我将尽量以一种通俗易懂的方式或者干脆说是用白话文来证明这个定理。我们从两个方向来归约,即首先证明分解为素因子乘积的存... 阅读全文

算法竞赛入门经典_第二章:循环结构程序设计_上机练习_MyAnswer

2014-12-10 21:48 by 星星之火✨🔥, 1102 阅读, 收藏, 编辑
摘要:习题2-1 位数输入一个不超过109的正整数,输出它的位数。例如12735的位数是5。请不要使用任何数学函数,只用四则运算和循环语句实现。#includeint main(void){ int n; int digit = 0; scanf("%d",&n); whi... 阅读全文