# 小角色，大心脏

C++博客 首页 新随笔 联系 聚合 管理

2011年6月21日 #

1）http://en.wikipedia.org/wiki/NP-hard上的解释；
2）弄清楚这几个概念：计算复杂性以及其排序和问题规约等；
##计算复杂性

##计算复杂性的排序：

##P 问题：对一个问题，凡是能找到计算复杂度可以表示为多项式的确定算法，这个问题就属于 P (polynomial) 问题。

##NP 问题：
NP 中的 N 是指非确定的(non-deterministic）算法，这是这样一种算法：（1）猜一个答案。（2）验证这个答案是否正确。（3）只要存在某次验证，答案是正确的，则该算法得解。
NP (non-deterministic polynomial)问题就是指，用这样的非确定的算法，验证步骤（2）有多项式时间的计算复杂度的算法。

##问题的归约：

##NP-Hard：

##NP完全问题 (NP-Complete)：

posted @ 2011-06-21 10:05 小角色 阅读(329) | 评论 (0)编辑 收藏

2011年6月1日 #

In computer science, bleeding edge is a term that refers to technology that is so new (and thus, presumably, not perfected) that the user is required to risk reductions in stability and productivity in order to use it. It also refers to the tendency of the latest technology to be extremely expensive. The term was first coined by Peter Barus, a Superbase programmer.

The term is formed as an allusion to "leading edge" and its synonym cutting edge, but implying a greater degree of risk: the "bleeding edge" is in front of the "cutting edge". A technology may be considered bleeding edge under the following conditions:

• Lack of consensus — competing ways of doing some new thing exist and no one really knows for certain which way the market is going to go.
• 没有公认——在达到同一目标的不同的技术道路之中，没有人知道，究竟哪一条路会成为市场的最终选择。
• Lack of knowledge — organizations are trying to implement a new technology or product that the trade journals have not even started talking about yet, either for or against.
• 缺乏认识——当一些机构开始对一项新技术或者新产品进行研发的时候，行业媒体甚至还没有开始对此展开讨论，无论是赞成，还是反对。
• Industry resistance to change — trade journals and industry leaders have spoken against a new technology or product but some organizations are trying to implement it anyway because they are convinced it is technically superior.
• 遭到产业抵制——行业媒体和产业界已经对某项新技术或者新产品进行抨击，但是一些组织和机构因为坚信其技术上的优越性而继续努力完善之。

The rewards for successful early adoption of new technologies can be great; unfortunately, the penalties for "betting on the wrong horse" or choosing the wrong product are equally large. Whenever an organization decides to take a chance on bleeding edge technology there is a good chance that they will be stuck with a white elephant or worse.

Recently however, the term bleeding edge has been increasingly used by the general public to mean "ahead of cutting edge" largely without the negative, risk-associated connotation concurrent with the term's use in more specific fields.

An apt quotation concerning this issue is:"But when you're living on the bleeding edge, you should not be surprised when you do, infact, bleed."

Bleeding

posted @ 2011-06-01 19:26 小角色 阅读(239) | 评论 (0)编辑 收藏

2011年5月28日 #

1）在Cstruct是用来封装数据的，其中不能够有函数成员，变量默认的存取权限是public的；

2）而在C++中集成了在C中的用法并做出改进，那就是允许struct中有成员函数，这纯粹是为了和C兼容，因此如果不需要和C兼容或传递参数给C，建议在C++中不用struct

3）在C++中两者有微小的用法差异：一是class中成员默认的存取权限是private的，而struct中成员默认是public的；二是在用模板的时候只能写成template <class Type>template <typename Type>，而不能写成<struct Type>

4）另外，可以这样说不管定义在基类还是派生类，classdata member 和 非virtual function的存取效率和struct是一样的（或说如果没有多态和虚拟继承，二者存取效率相同）；
PS：如有不恰当之处，望请指教！

posted @ 2011-05-28 10:06 小角色 阅读(228) | 评论 (0)编辑 收藏

2011年5月20日 #

posted @ 2011-05-20 21:43 小角色 阅读(199) | 评论 (0)编辑 收藏

2011年4月16日 #

PS:下面提到的观点并非全部属于自己，很多是来自各技术论坛大牛之作，在此引用，谢过先

Question：编译器会自动创建那些成员函数呢？什么情况下我们不需要自己写这些函数呢？（学生问时，我说了三种，少了assignment operator）
以Human为例：
Human();//默认构造函数
~Human();//析构函数
Human(const Human& p);//复制构造函数
Human & operator = (const Human & lvalue);//赋值操作符函数
学生又问了既然编译器给我们自动创建了这些构造函数，为什么我们还要重新自己定义呢？
晕倒，我问“构造函数的作用是什么呢？” 答曰“初始化数据成员（因为无法在类里面给成员变量赋初值）” “仅仅如此吗，如果需要实现一些功能呢，要不要在构造函数里写？回答是肯定的”。至于其他几个构造函数别有用途，另行讨论；
学生没有示弱的意思，反问道“那什么情况下，我们不需要写这些函数呢”
稍稍考虑了一下，“如果没有写构造函数，编译器会自动生成一个不带参数的构造函数即默认构造函数，析构函数类似”，暂时敷衍了一下。后来又想，至于复制构造函数和赋值呢？查了一下才知道：如果我们只用基本数据类型，而没有用指针或者引用作为数据成员，此时就不需要自己写这些函数。所以一般情况下，我们通常都写上这几个构造函数！
posted @ 2011-04-16 19:00 小角色 阅读(308) | 评论 (0)编辑 收藏

2011年4月12日 #

• 研一下学期要搞点东西，用到C++和linux，顺便兼职C++TA，知识匮乏，前来充电；
• 希望多动脑，多动手，分享资源，共同学习，提高效率；

posted @ 2011-04-12 23:00 小角色 阅读(152) | 评论 (0)编辑 收藏