摘要:
A*算法启发式搜索算法,是一种在平面图形上,有多个结点的路径,求出最低通过成本的算法。参考http://www.java3z.com/cwbwebhome/article/article2/2825.htmlhttp://blog.csdn.net/v_JULY_v/article/details/6093380http://blog.csdn.net/v_JULY_v/article/details/6238029DFS,深度优先搜索,可以使用stack实现,BFS,广度优先搜索,可以使用queue实现,这两种都是盲目型搜索。A*,启发式搜索:在当前搜索结点往下选择下一步结点时,可以通过一个 阅读全文
摘要:
boost memory的gc_allocator的使用首先编译生成boost-memory的库,由于生成的是.so的动态库,所以需要在运行程序之前,将库文件的路径添加到LD_LIBRARY_PATH中。简单使用,auto_alloc比较简单,可以使用默认的存储管理,NS_BOOST_MEMORY::auto_alloc alloc;而scope_alloc稍微复杂一点,使用block_pool管理存储单元。NS_BOOST_MEMORY::block_pool recycle;NS_BOOST_MEMORY::scoped_alloc alloc(recycle);而在为变量申请空间时,使用 阅读全文
摘要:
最开始的时候看到了许式伟的内存管理变革系列,看到性能测试结果的时候,觉得这个实现很不错,没有深入研究其实现。现在想把这个用到自己的一个项目中来,在linux下编译存在一些问题,所以打算深入研究一下。讨论C++内存管理的有两个主要的博客,一个是许式伟的系列,(CSDN: http://blog.csdn.net/xushiweizh/article/details/1388982,许式伟个人空间:http://xushiwei.com/gc-allocator-summary);另一个是CppExplore的一个内存管理系列(http://www.cppblog.com/CppExplore/a 阅读全文
摘要:
C++中的枚举类型C++11提供了更安全的枚举类型,不能再直接把这种枚举值当作整数值来使用。但如果我们想把它作为整数来使用呢?例如enum class ElemType{ CAP, IND, VS};在以前,我们使用枚举类型的时候,没有添加class关键词,可以如下定义,enum ElemTypeOld{ CAP = 1, IND, VS = 3};在定义了某个枚举变量之后,可以将其与整数直接进行比较。但这样做存在一些问题,因为自定义的整数值可能不连续,某个定义了,其它的没有定义等。那么输出ElemTypeOld::IND时,会输出2,但如果把CAP的值改为2,那么IND的值就会是3,这就与V 阅读全文
摘要:
在linux下编写C/C++程序,一般会习惯用Makefile来编译程序。总结一下自己学习使用Makefile的经验。一个C/C++项目,会有多个头文件和源程序文件,有时候还会用多个文件夹来组源代码的结构。文件之间会有依赖关系,当一个被依赖的文件被修改之后,不仅它自己需要重新编译,依赖它的文件也需要重新编译。然而如果一个文件不被其它文件依赖,那么它更改之后,就只需要重新编译自己,然后重新进行链接。当程序的文件比较多的时候,很多时候只有部分文件需要重新编译,不需要整个重新编译,所以这种编译链接的方式,是很有效的。在linux下面,使用make作为程序自动维护的工具。它会检查程序中文件或者模块的修 阅读全文
摘要:
一大早起来就看到Yahoo中国邮箱不能再继续使用了,Yahoo涅磐,本以为邮箱应该会躲过这一劫,没想到还是来了。最简单的方法应该是迁移到yahoo.com吧,但是之前用这个yahoo.cn的邮箱,时不时会出些问题。现在既然要换,就换一个好用一点的吧。Gmail,也会时不时出问题,Hotmail改版为Outlook,垃圾邮件太多,于是注册了一个网易163的邮箱。登陆进去,界面看着还行,好像还可以自己设置导航标签,去掉不想看到的。很想把首页标签去掉,其它标签都可以去掉,但是首页就是去不掉。网易邮箱还有自己的客户端,网易闪电邮,界面看起来很简洁,速度很快。好像可以把yahoo的邮件由客户端下载,那就 阅读全文
摘要:
用到flex和bison,总是会出现一些奇怪的问题,然后网上又查不到直接的解决办法。现在来总结一下遇到的和解决的问题。1. bison的C++接口2. flex的C++接口3. location的使用先说简单一点的,location的使用,在Bison手册里给出的Calculator的例子里面,使用stdin作为输入,在lex文件里定义了# define YY_USER_ACTION yylloc->columns (yyleng);在输出位置信息的时候,行数始终是1,这个对于文件作为输入就需要做些修改了。在http://oreilly.com/linux/excerpts/978059 阅读全文
摘要:
要实现一个类似于matlab可以计算表达式的程序,例如: x = agauss(4, 0.3, 1) /* agauss(u, s, d) 表示产生类似于高斯分布的随机数,u表示平均值,s表示方差sigma,d表示允许的最大偏离值。 */ y = x^2 - x; print eval(y) /* eval(x) 表示对x进行求值 */与一般的计算器不一样,求值不是实时计算,而是先用符号表示,类似于包含未知变量,然后给定未知变量的值,对符号表达式进行计算。程序设计表达式可以用一个类似于二叉树的结构组织起来,比如 a + b, 根节点 +, 包含左右两个节点a, b作为操作数,而agauss这. 阅读全文
摘要:
先回顾一下hash表的相关内容,STL里面的unordered_map和map。使用unordered_map,通过hash函数,将key映射到一个位置,如果这个位置原本没有值,那么就可以将这个key作为唯一的下标来访问这个位置。但是如果这个位置已经被占了,那么就需要比较这个key和已经存在的下标是否一样。所以unordered_map需要提供key的hash和等于函数。由于是使用hash得到的值作为下标,所以会出现不同的key得到相同的下标值,称为冲突。处理冲突的方法,一种是使用一个链表,保存这个位置的key。每次hash到这个位置,就逐次比较链表里的key,以确定这个key是否已经存在。另 阅读全文
摘要:
KNN是最简单的分类方法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。参考,http://www.cnblogs.com/biyeymyhjob/archive/2012/07/24/2607011.htmlhttp://blog.csdn.net/aladdina/article/details/4141127(网上的参考基本上都跟这两个一样,这两个也基本一样)由于KNN方法 阅读全文