NP完全性和近似算法
在理解NP完全性之前,笔者想引入关于科学与伪科学的定义。凡可接受实践检验、可被证实和被否正的为科学,相反之为非科学,而伪科学是非科学之子集,与科学相对立,认定非科学为科学的即是伪科学。三者关系可简化为:科学相反于非科学、对立于非科学子集伪科学。集合的运算关系见公式(1),科学定义为、非科学定义为、伪科学定义为。
(1)
算法是用来解决问题的,一个问题能否在多项式时间内完...
分类:
编程语言 时间:
2016-05-06 16:04:10
阅读次数:
301
装配线调度: 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 int e1,e2,x1,x2,a1[7],a2[7]; 9 int f[2][7],fe,le,l[2][7 ...
分类:
编程语言 时间:
2016-05-06 00:37:14
阅读次数:
211
插入排序源码: 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 void insert_sort(int a[]) 7 { 8 for(int j=1;j<10;j++) 9 { 10 int key=a[ ...
分类:
编程语言 时间:
2016-05-02 15:28:33
阅读次数:
191
1、 概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。 Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/tra?/ “try”。 Trie树可以利用字符串的公共前缀来节约 ...
分类:
编程语言 时间:
2016-05-02 13:04:44
阅读次数:
1169
题目 假设有1元、2元、5元、10元、20元、50元、100元、200元面额的硬币或者纸币。现在需要N元钱,有多少种零钱组合方式? 解题 DFS比较简单 如上: 1.判断是否是 0 是,保存 2.是否非法 3.遍历组合可能 projecteuler31验证结果正确 当然这样会有许多重合的子问题,更改 ...
分类:
编程语言 时间:
2016-05-01 21:44:21
阅读次数:
1226
选择首尾元素做枢纽元 通常的、没有经过充分考虑的选择是将第一个或最后一个元素用作枢纽元。选择第一个元素作为枢纽元的程序例子可以参考专题的前一篇《快速排序里的学问:霍尔快排的实现》,而选择最后一个元素用作枢纽元的程序例子则可以参考《快速排序里的学问:快速排序的过程》这个算法导论里的例子。 选择最后一个 ...
分类:
编程语言 时间:
2016-04-28 18:20:30
阅读次数:
252
对《大话数据结构》P365~P368—散列表查找实现,进行了自己的理解并完善了代码。 对于P353~P365,散列表概述,散列函数的构造,处理散列冲突的方法,书上讲得比较简单。深入学习还需要看算法导论。 代码和解释如下(VS2012测试通过): 运行结果: ...
分类:
其他好文 时间:
2016-04-28 15:27:48
阅读次数:
191
算法导论 第三版 第二章介绍的 第一个算法 插入排序 C语言实现代码 插入排序是基础中的基础 据这本书说 ...
分类:
编程语言 时间:
2016-04-28 12:07:26
阅读次数:
198
#pragma once #include /*合并两个已经排序好的子序列 两个已经排序好的子序列为src[startIndex]-src[middleIndex];src[middleIndex+1]-src[endIndex] */ template void Merge(T *src, int... ...
分类:
编程语言 时间:
2016-04-24 12:39:14
阅读次数:
151
#pragma once /* 插入排序算法,相当于抓牌时,手里的牌都是已经排序好的,新抓起的牌从右向左依次和手里的牌进行比较 每比较依次都要后移一位多出一个空位,以便新牌插入到正确的位置 */ template void InsertSort(T *src, int length) { for (... ...
分类:
编程语言 时间:
2016-04-24 12:37:37
阅读次数:
158