(zz)计算复杂性:NP=P?
摘要:NP完全性理论的奠基人—1982年度图灵奖得主斯蒂芬·库克 ---- 加拿大多伦多大学教授斯蒂芬·库克(Stephen Arthur Cook)因其在计算复杂性理论方面的突出贡献,尤其是在奠定NP完全性理论基础上的突出贡献而荣获1982年度的图灵奖。但库克实际上是美国科学家。 ----库克1939年12月14日生于纽约州的布法罗,他的父亲是一名化学家,在著名的联合碳化物公司工作,同时在布法罗大学任...
阅读全文
区间图着色问题
摘要:假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有的活动。请给出一个有效的贪心算法,来确定哪一个活动应该使用哪一个教室。 (这个问题也被称为区间图着色)问题。我们可以作出一个区间图,其顶点为已知的活动,其边连接着不兼容的活动。为使任两个相邻结点的颜色均不同,所需的最少颜色数对应于找出调度给定的所有活动所需的最少教室数。 最优子结构: 设S为原问题所有活动的集合; 设A为原问...
阅读全文
贪心算法基础
摘要:贪心算法是以动态规划算法为基础的。在每一个贪心算法的下面,总是会有一个更加复杂的动态规划解。如何判断某个问题是否可以使用贪心算法呢?关键点就是验证其具有贪心选择性质:一个全局最优解可以通过局部最优选择来达到。真正要做的就是证明将子问题的最优解与所做的贪心选择合并后,的确可以得到原问题的一个最优解。 都知道动态规划算法是贪心算法的基础。那在想使用贪心算法的时候,是不是可以考虑先构造其动态规划算法,然...
阅读全文
经典计算机算法设计方法(4) -- 动态规划之一(学习篇)
摘要:《算法导论》第15章专门介绍动态规划算法,本文结合装配线调度和矩阵链乘法理解动态规划算法的一些基本问题(15.1 – 15.3)。适合采用动态规划方法的最优化问题包含两个要素:最优子结构和重叠子问题。最优子结构如果问题的一个最优解中包含子问题的最优解,则该问题具有最优子结构。要判断问题是否具有最优子...
阅读全文
C++ explicit
摘要:C++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。例如下面例子中C的构造函数C(int i)就是,既可以用来作为构造器,又可以实现隐式转换C c=2;但是有时这并不是我们想要的,就可以将这个构造函数声明为explicit,以避免将构造函数作为隐式类型转换符来使用。Copy constructor也是同样的,如果Copy constructor被声明为explicit,则这个类对象不能用于传参和函数返回值。但是仍然可以直接调用。//spec1_explicit.cpp//compilewith:/EHsc#include<stdio.h
阅读全文
Named Return Value Optimization
摘要:返回值在编译器中如何实现【实现模型1】cfont的实现采用了双阶段转化。1.首先声明一个额外的参数,类型上类对象的引用,用来存放返回结果。2.对这个参数利用返回值进行拷贝初始化。过程类似于参数传递,也是要定义一个临时对象,用来保存返回值,然后在函数内部调用拷贝构造函数用那个return值进行初始化。Xbar(){Xxx;//processxx...returnxx;}编译器转化后//functiontransformationtoreflect//applicationofcopyconstructor//PseudoC++Codevoidbar(X&__result){Xxx;//c
阅读全文
Copy Constructor与赋值运算符
摘要:赋值运算符‘=’的默认行为是数据成员的值的相应赋值,默认行为在类的成员中包含指针时容易出现问题,因为它只是赋值了指针的值,但是指针指向的值并未复制。赋值运算符是可以如同其他运算符一样重载的,重载后的‘=’就可以有定制的行为了。当定义Copy Constructor时一般应该重新定义赋值运算符。Copy Constructor当class object是以“相同class的另一个object“作为初值时,其内部是以所谓的default memberwise initialization手法完成的,也就是把每一个内建的或派生的data member的值,从某个object拷贝一份到另一个objec
阅读全文
Constructor
摘要:C++ Annotated Reference Manual中说“default Constructor 在需要的时候被编译器产生出来”,其关键字就是“需要的时候”,是谁需要呢?创建出来干什么事呢?class Foo {public:int val;Foo *pNext;};void foo_bar(){Foo bar;if(bar.val || bar.pnext)// do something;}在这个例子中,正确的语义是要求Foo有个default Constructor,可以将它的两个members初始化为0。但这段代码并不满足ARM中说的“在需要的时候”,其差别就在于一个是程序的需要
阅读全文
非规格化数字(denormalized numbers)
摘要:In computer science, denormal numbers or denormalized numbers (now often called subnormal numbers) fill the underflow gap around zero in floating point arithmetic: any non-zero number which is smaller than the smallest normal number is 'sub-normal'.In a normal floating point value there are
阅读全文
Kerberos
摘要:Basic Concepts in Kerberos Kerberos client, Kerberos server, application server In Kerberos, all authentication takes place between clients and servers. So in Kerberos terminology, a "Kerberos client"...
阅读全文
C++ Template Metaprogramming.Chapter 2
摘要:在C++中,可以在编译时进行操纵的实体称为元数据,可以分为两个类别:类型和非类型。任何种类的元数据都可以用做模版参数。
阅读全文
C++ Template Metaprogramming.Chapter 1
摘要:元程序(metaprogram) Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime. 所谓元编程就是说写出的程序是用来写程序或者控制程序的,或者在编译时而不是运行时做一些工作。所以各种code generation的工具、C#或者Jav
阅读全文
The Developer-Tester Divide
摘要:And they lived happily ever after So much has been written, discussed and argued about the joint life of developers and testers. It seems whenever these two groups meet, there will be more shouting th...
阅读全文