上一页 1 2 3 4 5 6 ··· 18 下一页

2012年12月22日

李德刚刚来到部队,提出...希望有个中国女战士陪他睡觉

摘要: 《一生紧随毛:回忆我的父亲...陈士榘》里记载,“李德刚刚来到部队,提出...希望有个中国女战士陪他睡觉。”康...说:“当时女同志都不愿意嫁给一个不会说中国话的外国人,所以一直找不到合适的对象。”后来找到个“大个子,长得不错的前童养媳。”萧月华1910年8月出生于广东大埔县一个农民家庭。“当组织上动员她给李德做老婆时,她起先表示坚决不干。过了几天,通知她说:“李德是...国际派来帮助......领导干部,给他做老婆,是革命工作的需要,组织已决定你同他结婚。”她勉强服从了这个“组织决定”。婚后,两人关系一直不好。在这次包办婚姻中,萧月华生了个男孩。孩子的肤色黑黑的,更接近中国人而不像白种人。毛 阅读全文

posted @ 2012-12-22 15:35 能发波 阅读(198) 评论(0) 推荐(0) 编辑

2012年12月6日

避免临时对象的字符串加法

摘要: 之前我有一篇文章《C++ 中让对象的拷贝成为 显式 的》,使用类似的技巧,可以避免字符串加法中的临时对象,也许是因为惰性,这个想法一直没有诉诸实现,今天有空把它写了出来。先看看这段代码:std::string a = "A";std::string b = a + "B" + "C" + "D" + "E" + "F";在C++11之前的标准 C++1998/2003 中,为了计算 b,这段代码一共创建了 5 个临时 std::string 对象。实现代码非常简单:#incl 阅读全文

posted @ 2012-12-06 14:04 能发波 阅读(211) 评论(0) 推荐(0) 编辑

2012年9月25日

gold_hash_idx 完成了

摘要: 用在 onfly minimal acyclic DFA construction 上,速度提高了大约28%,内存对每个State节约了4个字节。以后有空再努力一下,把 gold_hash_idx 再深入泛化一步,做成可以更方便地用于 multi_index 。 阅读全文

posted @ 2012-09-25 21:46 能发波 阅读(110) 评论(0) 推荐(0) 编辑

2012年9月23日

gold_hash_map abstract++

摘要: 目前的gold_hash_map 实现中,index和data是耦合在一起的。今天在思考 onfly MinADFA 的进一步优化时,想到了一点:在MinADFA_onfly 中,equivalence_register是一个gold_hash_tab,它以 state_id 为 elem,以StateContent 为key,再深入思考,其实这个state_id 没有存在的必要,equivalence_register中保存 state_id 的数组只要和state 数组平行,这个 state_id 的存储就可以省掉,直接将 state 数组的下标作为 elem就可以了,对每个state可以 阅读全文

posted @ 2012-09-23 10:55 能发波 阅读(101) 评论(0) 推荐(0) 编辑

2012年9月7日

Trie, Hash, MinADFA

摘要: Trie的搜索复杂度是 O(length(strkey))Hash表,计算Hash的复杂度也是O(length(strkey))1. Trie因为每读一个字符,要做一次状态转移,就有一次(随机)访存操作,计算 strkey 的 Hash 不需要每个字符都随机访存,从这一点看,Hash胜出2. Hash 可能会有冲突,而 Trie 没有冲突,这一点,Trie 胜出3. 可以在 Trie 上应用 DFA Minimization 算法,生成一个 Minimum Acyclic DFA,再加一些额外算法,可以节省更多内存(有可能超过100倍),同时可以用 O(length(strkey)) 的时间复 阅读全文

posted @ 2012-09-07 21:25 能发波 阅读(128) 评论(0) 推荐(0) 编辑

2012年9月6日

NFA转化DFA

摘要: NFA转化DFANFA既然和DFA等价,那么,它们之间就存在对应关系,DFA到NFA的转化是自明的:没有空转移,把返回的单个state编程仅包含一个state的集合,就是一个形式上的NFA。但是,NFA到DFA的转化就不是那么简单了,实际上,在计算理论中,它属于ExpSpace问题,是一类比NP问题更难的问题。往简单了说,因为NFA的转移函数的返回值是个state集合,如果NFA的state数目为n,那么这个state集合的集合,就是整数[0,n)的幂集,这个幂集的元素数目是 2^n ,不错,在最坏情况下,包含n个状态的NFA对应的DFA有 2^n 个状态。虽然这个让人很悲观,但是在实际情况中 阅读全文

posted @ 2012-09-06 22:51 能发波 阅读(605) 评论(0) 推荐(0) 编辑

2012年9月5日

DFA的实现

摘要: DFA的实现在工业界,DFA的有效实现一直是一个问题,龙书中提到了一种使用四个数组的通用DFA实现,在汉字分词算法中经常用到double array作为Trie的一种实现。四数组的是通用DFA的实现,双数组的仅能用于实现Trie。并且它们的创建速度慢,难以理解,内存占用也比较多,状态id的值域范围稀疏。我的实现我实现了一种很紧凑的DFA,这在某种程度上源于popcount带来的灵感。当然,我的这种实现也是有局限性的:仅用于字母表为byte的情形,虽然这在绝大多数情况下已经足够,但是作为确定性PushDown Automata的基础DFA时可能就不够了。关于popcount有很多有趣的故事,大家 阅读全文

posted @ 2012-09-05 18:25 能发波 阅读(626) 评论(0) 推荐(0) 编辑

2012年9月4日

Context 终于进 boost 了

摘要: Version 1.51.0New Libraries: ContextBoost.Contextis a foundational library that provides a sort of cooperative multitasking on a single thread. By providing an abstraction of the current execution state in the current thread, including the stack (with local variables) and stack pointer, all register 阅读全文

posted @ 2012-09-04 09:55 能发波 阅读(238) 评论(0) 推荐(0) 编辑

2012年8月31日

自动机的一些算法和应用

摘要: 几个月前实现了一个自动相关的算法,在一个比较乐观的测试中,将一个2.3G的url集合压缩到了27M,同时,key查找的时间复杂度是O(strlen(key))。当然,还有其它一些自动机相关的算法的优化实现,比如Aho-Corasick多模匹配。自动机的实现,这里说的自动机,指确定性的有穷状态自动机(DFA: Deterministic Finite Automata)。关于非确定性的有穷状态自动机(NFA:Non-deterministic Finite Automata),不会做过多介绍。NFA和DFA本质上是等价的,也就是说,它们的表达能力(能识别的语言的集合)是相同的。“语言”这个词,在 阅读全文

posted @ 2012-08-31 19:37 能发波 阅读(407) 评论(0) 推荐(0) 编辑

2012年8月30日

自动机的思维导图

摘要: 自动机有很多用途,不光是编译器会用到,众所周知的还有正则表达式。其他,简单的如字符串搜索,存储等,复杂点的如模型验证,定理证明……最简单的自动机应该算是DFA了,再往简单了说,一个DFA就是一个 map>, 其中 int 是 state id,char是转移标号;如果有人还嫌不够简单,最最简单的那就是 int [][256] 了,就是一个256列的矩阵。就这么简单的一个东西,却蕴含着非常深刻的思想,有着非常广泛的用途。几个月前因为项目需要,再加上自己的兴趣,实现了一系列自动机相关的算法和数据结构(用C++11写的),其结果和成就感远超我当初一开始的想象和预期,因为有好几个算法我的实现远远 阅读全文

posted @ 2012-08-30 20:02 能发波 阅读(209) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 18 下一页

导航