自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 最大流之Ford-Fulkerson算法

参考:《算法导论》第26章最大流网络流性质:1)除了源节点和终结点外,物料在其他节点上只是流过,并不基类或聚集,即物料进入一个节点的速率必须与其离开该节点的速率相等。这个性质称为流量守恒。2)网络流G=(V,E)是一个有向图,图中每条边(u,v)有一个肺腑的容量值c(u,v)>=0.而且,如果边集合E包含一条边(u,v),则图中不存在反向的边(v,u)。当存在多个源节点和汇节点时,

2014-12-30 22:03:49 737

转载 线段树

转自:http://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464583.html线段树(segment tree)线段树在一些acm题目中经常见到,这种数据结构主要应用在计算几何和地理信息系统中。下图就为一个线段树:(PS:可能你见过线段树的不同表示方式,但是都大同小异,根据自己的需要来建就行。)1.线段树基本性质

2014-12-29 21:42:51 437

原创 单源最短路径算法

参考资料:《算法导论》第24章:单源最短路径,《数据结构(C++语言版)》(邓俊辉)第六章:图单源最短路径算法,有两种比较经典的算法:一种是Dijkstra算法,此算法应用有限制,即只能用在图边的权重为正值的情况下,因为如果边权重为负值,则更新一个点的距离有可能需要进行两次访问,而Dijkstra算法对于图中的每个点都只进行了一次访问。时间复杂度为O((V+E)logV),这是在用优先级队

2014-12-29 20:25:46 760 1

转载 机器学习相关数据库(转)

KDD杯的中心,所有的数据,任务和结果。UCI机器学习和知识发现研究中使用的大型数据集KDD数据库存储库。UCI机器学习数据库。AWS(亚马逊网络服务)公共数据集,提供了一个集中的资料库,可以无缝集成到基于AWS的云应用程序的公共数据集。生物测定数据,在 虚拟筛选,生物测定数据,对化学信息学,J.由阿曼达Schierz的,有21个生物测定数据集(有效/无效的化合物)可供下载。加拿大开放数据,许多政

2014-12-29 18:37:41 463

原创 图的最小生成树算法

图的最小生成树有两种算法:一种是Kruscal算法:把图的每个节点看成是不同的集合,把所有的边都放入到优先级队列中去,不断从优先级队列中取出边,如果这个边的两端点属于不同的集合,那么就把这条边加入到最小生成树的边,并且把这两个集合合并,如果这两个边的端点属于同一集合,则相当于是环状,就丢弃当前这条边。用到的主要的数据结构就是优先级队列和一个简单的并查集,优先级队列是用的STL标准库,是用v

2014-12-25 23:13:48 800

原创 机器学习中样本N和hypothesis(H)个数的关系

在机器学习中,只有当N很大,且待选择的基函数M个数不是很多时才有效。例如在一个教室里有150个同学,每个同学抛硬币5次,如果假设H1是抛出硬币是正的,那么150个人里面有99%的概率会至少有一个人抛到5个正面朝上,那么这个同学的Ein就是最小的,是0,但是这个Ein是和Eout相差比较大,因为Eout应该是0.5才对。这里就有问题了:为什么机器学习在这个情景中不适用呢?其实上面150个同学

2014-12-25 19:37:50 1451

原创 图的强连通分量

图的强连通分量:即子图中的所有顶点都能够到当前子图中的任意其它顶点。程序是参考的《算法导论》中图那一张的强连通分量一节。算法思想:先用DFS遍历一遍图,标记其discover时间和finish时间,然后用当前的图创建其转置图,即顶点相同,边的方向相反。然后按照转置图的finish时间从大到小一次遍历,得到的一个森林就是需要的强连通图。代码://GraphMatrix.h#ifndef

2014-12-25 11:37:31 542

原创 图的拓扑排序

拓扑排序的方法有两种(是我知道的有两种):一种是利用深度优先搜索,把节点状态分成未发现(WHITE),发现(GRAY)和其相邻节点被访问完(BLACK)。根据BLACK时间按从大到小的顺序排序,即可以得到拓扑排序。第二种方法是把所有节点的入度做一个小顶堆,然后不断删除一条边,如果度为0了,则出堆,最后能够构成拓扑排序的结果。代码如下://GraphMatrix.h#ifndef __Gr

2014-12-24 20:26:33 472

原创 Windows下python安装matplotlib

一、下载matplotlib安装包:网址http://matplotlib.org/downloads.html我安装的是python3.4,因此选择的是matplotlib-1.4.2.win32-py3.4.exe这个下载的,然后直接点击下一步就行了。二、安装后在IDE下运行import matplotlib,提示No module named 'six'。缺少six模块,然后在https

2014-12-24 19:14:44 5855 2

转载 Coursera台大机器学习课程笔记6 -- The VC Dimension

转自:http://www.cnblogs.com/HappyAngel/p/3633989.html本章的思路在于揭示VC Dimension的意义,简单来说就是假设的自由度,或者假设包含的feature vector的个数(一般情况下),同时进一步说明了Dvc和,Eout,Ein以及Model Complexity Penalty的关系。一回顾  由

2014-12-24 16:36:25 534

转载 Coursera台大机器学习课程笔记5 -- Theory of Generalization

转自:http://www.cnblogs.com/HappyAngel/p/3622333.html本章思路:根据之前的总结,如果M很大,那么无论假设泛化能力差的概率多小,都无法忽略,所以问题转化为证明M不大,然后上章将其转化为证明成长函数:mh(N)为多项式级别。直接证明似乎很困难,本章继续利用转化的思想,首先想想和mh(N)相关的因素可能有哪些?不难想到目前来看只有两个:

2014-12-23 16:52:21 715

原创 图的邻接表表示

图的邻接表表示可以减少存储空间,但是同时增加了访问时间。下面是邻接矩阵和邻接表的适用情况:邻接矩阵:1)经常检测边的存在;2)经常做边的插入/删除操作;3)图规模相对固定4)稠密图邻接表:1)经常计算顶点度数;2)顶点数目不确定;3)经常做遍历;4)稀疏图;对于邻接表的存储,我没有想到什么比较好的办法,就是用vector> V来做的存储,由于存储的不是地

2014-12-22 21:57:01 713

原创 机器学习的可行性

机器学习是根据一些样本的特性,推导出一个可能的公式g使得其与真实的变换f相当接近,这里的g不但要再样本上接近f,即对于任意的x属于D,g(x)=(约等于)f(x),而且不在D范围的的数据,要要满足g(x)约等于f(x)。如何满足这个关系呢?挑选的样本数目为N,待评估的函数几何为H,需要从众多的H中选择一个最接近于f的作为假设g。当然其中会有误差,机器学习的目的就是要找打一个g使得g与f的误差最

2014-12-22 15:33:33 847

原创 linux下空目录与空文件

在Linux先的空目录和空文件占据空间的讨论:在linux系统中,文件系统是由inode和block管理的,每一个文件和目录都有一个唯一与其对应的inode,这个inode中存储了这个文件或者目录的属性。但是文件和目录的内容是由block记录的,目录的block中记录了这个目录下的所有文件及目录的名字和其对应的inode的索引,而文件的block中则是仅仅记录了当前文件中的东西。而新建文件或者

2014-12-22 09:51:26 2352

转载 Linux文件系统十问,你知道吗?

转自:http://djt.qq.com/article/view/620Linux文件系统十问--关于文件系统,你知道吗?   作者:yanfei,腾讯后台架构师,参与项目为搜搜网页开发和搜搜开放平台。   关于文件系统,相信大家都不陌生。身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢。那么让我们一起来看一下下面

2014-12-20 17:10:35 506

转载 机器学习10大经典算法

转自:http://blog.csdn.net/braveheart89/article/details/8142383机器学习10大经典算法机器学习10大经典算法1、C4.5C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.  C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:     1)用信息增益率来选择属性,克

2014-12-20 16:23:51 595

转载 Coursera台大机器学习课程笔记3 – 机器学习的可能性

转自:http://www.cnblogs.com/HappyAngel/p/3495804.html提纲:机器学习为什么可能?引入计算橙球概率问题通过用Hoeffding's inequality解决上面的问题,并得出PAC的概念,证明采样数据学习到的h的错误率可以和全局一致是PAC的将得到的理论应用到机器学习,证明实际机器是可以学习  机器学习的

2014-12-20 16:16:52 629

转载 Coursera台大机器学习基础课程学习笔记2 -- 机器学习的分类

转自:http://www.cnblogs.com/HappyAngel/p/3466527.html总体思路:各种类型的机器学习分类按照输出空间类型分Y按照数据标记类型分yn按照不同目标函数类型分f按照不同的输入空间类型分X按照输出空间类型Y,可以分为二元分类,多元分类,回归分析以及结构化学习等,这个好理解,离散的是分类,连续的是回归,到是结构化的学习

2014-12-20 15:24:00 520

原创 图的邻接矩阵表示

图的表示有两种,一种是邻接矩阵,还有一种是邻接表,下面先讨论邻接矩阵,包括顶点和边的插入和删除,深度优先遍历和广度优先遍历。其实可以不用Vertex和Edge两个结构体,而直接用vector V和vector >E,来表示边,最多为了遍历,加上一个vector visited的向量。就可以完全完成存储,插入,删除和遍历的基本操作了!GraphMatrix.h的内容如下://GraphM

2014-12-19 22:23:44 641

转载 Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法

转自:http://www.cnblogs.com/HappyAngel/p/3456762.html最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正。一机器学习是什么? 感觉和 Tom M. Mitchell的定义几乎一致,A computer program is said to learn from ex

2014-12-19 15:12:44 623

原创 红黑树

一、红黑树可以保证:在每次插入或删除操作之后的重平衡过程中,全书的拓扑结构的更新仅涉及常数个节点。尽管最坏情况下需要多达O(logN)个节点重染色,但就分摊意义而言仅为O(1)!      二、 红黑树的性质(定义):性质1.所有节点不是红色就是黑色性质2. 根是黑色。性质3. 所有外部节点都是黑色(有些地方也叫叶子节点,是NIL节点)。性质4. 每个红色节点必须有两个黑色

2014-12-18 18:55:44 530 1

原创 B树

B树:严格来讲,B树并非BST,但从逻辑上讲,仍然等效于BST。引入B树的目的:弥补不同存储设备访问速度的巨大差异,实现高效的I/O。普遍应用在数据库和文件系统中。B树结构非常适宜于在相对更小的内存中,实现对大规模数据的高效操作。特点:搜索每下降一层,都以“大节点”为单位从外村读取一组(而不是单个)关键码。更为重要的是,这组关键码在逻辑上和物理上都彼此相邻,故可以批量方式从外村中一次性读取

2014-12-15 19:22:41 684

转载 C/C++语言中const的用法

转自:http://www.cnblogs.com/xkfz007/archive/2012/02/27/2370478.html1. const 在C和C++中的区别C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所以在C++中const修饰的量可以用在数组的定义中。

2014-12-12 20:37:09 485

转载 寻找平面中距离最远的点

转自:http://blog.csdn.net/hackbuteer1/article/details/7484746问题给定平面上N个点的坐标,找出距离最远的两个点。分析类似于“最近点对问题”,这个问题也可以用枚举的方法求解,时间复杂度O(n^2)。“寻找最近点对”是用到分治策略降低复杂度,而“寻找最远点对”可利用几何性质。注意到:对于平面上有n个点,这一对最远点必然存在于这

2014-12-12 19:26:40 5492

转载 10个经典的字符串hash函数的C代码实现

以下转自:http://blog.csdn.net/jcwkyl/article/details/4088436以下总共给出了10种字符串hash函数,在上面的链接中可以找到各个Hash函数的描述,以及一些其它的关于hash函数的资料下载。这些hash函数各自的优缺点不详。其中,ELFHash函数是在unix系统中被广泛使用的,也是《算法艺术与信息学竞赛》中作者推荐的一个字符串hash

2014-12-12 16:28:19 532

原创 关于友元函数的总结

转自:http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/04/2535305.html1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员

2014-12-11 14:33:37 547

原创 关于C++中模板例化产生的代码

首先,我先写了一段什么都没有的代码进行编译,运行,如下:int main() { return 0; }代码生成的.exe文件大小为27k。然后我加入了头文件:vector和list,但是没有引入其他元素:#include#include#includeusing namespace std;int main() { return 0;

2014-12-11 14:01:49 1407

原创 AVL树、splay树(伸展树)和红黑树比较

一、AVL树:优点:查找、插入和删除,最坏复杂度均为O(logN)。实现操作简单    如过是随机插入或者删除,其理论上可以得到O(logN)的复杂度,但是实际情况大多不是随机的。如果是随机的,则AVL    树能够达到比RB树更优的结果,因为AVL树的高度更低。如果只进行插入和查找,则AVL树是优于RB树的,因为RB树    更多的优势还是在删除动作上。缺点:1)借助高度或平

2014-12-10 21:58:56 6592 1

原创 二叉搜索树(插入、删除、迭代遍历)

《算法导论》里面的代码真实简洁,看的很舒服,实现也很简单!!!头文件:bst.h#ifndef _BST_#define _BST_struct Node{ int data; Node *parent; Node *lChild; Node *rChild; Node(int d=0,Node* p=nullptr,Node *l=nullptr,Node *r=nul

2014-12-09 21:36:45 814

转载 C++中类定义可以写在.h文件,但函数定义却不行

前两个转自:http://bbs.csdn.net/topics/390542206?page=1#post-395264705一、定义和声明1) 定义就是声明,声明不一定就是定义,声明的意思是已经定义了。   定义是直接说已经定义了,非定义声明,是间接说已经定义了。   声明,不需要明白告诉你,定义成什么样子,你懂得就行。   定义,必须清晰,不能含糊,因为要分配空间。

2014-12-09 21:08:50 10062

原创 最大公约数问题

《编程之美》第2.7节:最大公约数问题方法一:辗转相除法。方法二:不断相减法:为了避免进行求余运算。方法三:不断提出公约数2,如果没有公约数2,则两个数中偶数/2变成奇数,如果二者都为奇数,则进行方法2的运算。#includeusing namespace std;int gcd1(int x,int y){ if(x<y) return gcd1(y,x); wh

2014-12-09 18:52:25 487

原创 STL中关于heap的函数

在STL中,如果要用到堆,则有五个函数,make_heap,pop_heap,push_heap,heap_sort,和is_heap,其中is_heap和heap_sort就是判断容器是否符合堆的条件和把容器中元素进行堆排序。mak_heap是把容器中制定迭代器之间的元素进行建堆操作。push_heap,把容器最末尾的元素进行上调,即相当于是插入一个元素,因此如果要往堆中插入元素,例如v

2014-12-09 16:50:27 813

原创 寻找最大的K个数

《编程之美》2.5:寻找最大的K个数下面的程序写的是寻找的最小的K个数,最大的K个数类似:#include#include#includeusing namespace std;int quickSelect(int A[],int N){ swap(A[0],A[rand()%N]); int k=1; for(int i=1;i<N;i++) { if(A[i]

2014-12-09 16:36:28 491

转载 const_cast的问题

CSDN上有人问到的问题:#include using namespace std;int main(){ const int i = 10; int *pi = const_cast(&i); ++*pi; cout << " i = " << i << ", @" << &i << endl; cout << "*pi = " << *p

2014-12-08 20:21:14 511

原创 1的数目

《编程之美》第2.4节:1的数目题目:给定一个十进制整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。方法一:暴力枚举,肯定能够算出来,但是这样的复杂度为O(NlgN)。方法二:寻找规律,用公式计算,复杂度为O(lgN)。当某一位的数为0时,这个位上出现1的总次数就等于其高位数字乘以其所在位的权重,加入21023,百位为0,则其出现1的个数为21*100,

2014-12-06 16:37:11 489

原创 寻找发帖水王

《编程之美》第2.3节:寻找发帖水王题目一:给定一个数组,共有N个数,其中有一个数出现了超过N/2次,用O(N)的时间找出这个数。解法:不断从数组中删除2个不同的数,这个时候,要求的数仍然占据总数的1/2以上。题目二:给定一个数组,共有N个数,其中有3个数出现了超过1/4次,用O(N)的时间找出这3个数。解法:同上,不断从数组中删除4个不同的数即可。#includeusing

2014-12-04 17:44:16 465

原创 不要被阶乘吓倒

《编程之美》第2.2节:不要被阶乘吓倒问题一:给定一个整数N,那么N的阶乘N!末尾有多少个0?方法一:遍历1-N所有数,求出N!的因式分解时5的个数即可。方法二:求5的个数时,有N/5+N/5^2+N/5^3+……,表示N能够分解成几个5这个因子,因为N/k表时N中有几个数能够被k整除,这样N/5表示N中能被5整除的数,然后N/25表示N中能被25整除的数,此时本应该加两次,但是前面能

2014-12-04 16:48:06 546

原创 二叉树(类模板、函数模板、函数对象、函数指针)

这个二叉树的代码只是简单的实现了一些功能,比如插入和遍历。关键是用到了函数指针和函数对象,还有shared_ptr。其中shared_ptr一定定义在节点中,因为new出来的空间时节点,释放的时候是释放节点。在函数模板中用到函数对象时,如果要传递的是函数指针则必须把函数名和要用的参数T传入,不能只传入函数名,注意这和调用函数模板是不一样。如果传递的是函数对象,需要向构造一个类,重载(),然

2014-12-04 10:08:09 732

转载 C语言中关于.h和.c的问题

简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以

2014-12-04 10:01:31 1341

原创 1 unresolved externals

出现这个问题有一个原因是最为可能的:那就是你调用的函数和声明的不一样,或者函数定义和函数声明不一样,查一下函数就行了。我当时出现的问题原因是:在模板类的外面定义成员函数,没有加BinTree::这个表示类的符号,因此出现了这个提示,修改后即能正常运行了。

2014-12-04 09:54:02 14119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除