代码改变世界

实用算法实现-第 16 篇 拓扑排序

2011-10-24 23:19 by myjava2, 149 阅读, 0 推荐, 收藏, 编辑
摘要:16.1 拓扑排序拓扑排序的本质是由某集合上的一个偏序得到该集合上的一个全序。16.1.1实例PKU JudgeOnline, 1094, Sorting It All Out. 16.1.2问题描述给出类似A<B的一系列关系,判断输入第几个关系的时候顺序排定,或者出现环,或者所有输入完成后仍没出现环或者排定顺序。注意:当拓扑排序不唯一(当然也就不确定)的时候 还要判断是否有环。注意:如果前几条不等式可以确定一个序列,那么后面的的都要被忽略,即使加上它们会发生矛盾。16.1.3输入46A<BA<CB<CC<DB<DA<B32A<BB<A26 阅读全文

实用算法实现-第 15 篇 对抗搜索

2011-10-23 23:39 by myjava2, 566 阅读, 0 推荐, 收藏, 编辑
摘要:《人工智能,一种现代方法》对于对抗搜索的介绍非常好。15.1 极小值极大值策略极大值极小值策略是一种最优策略。当对手不犯错误时,最优策略能够导致至少不比其它任何其它策略差的结果。需要注意的是,最优策略针对的是最优化对手:如果使用极大值极小值策略对付非最优化对手,可能没有使用其它策略好,但是使用那些策略对付最优化对手必定要比极大值极小值策略差。极小值极大值策略是指存在两个最优化的博弈对手MIN和MAX,MIN的目的是使得value最小,而MAX则是使得value最大。由于两个对手都不会犯错误,即采用最优策略,故此有如下公式:不难发现使用极小值极大值策略实际完成的是对策略空间的一种深度优先搜索。1 阅读全文

实用算法实现-第 14 篇 启发式搜索

2011-10-23 00:15 by myjava2, 289 阅读, 0 推荐, 收藏, 编辑
摘要:14.1 A*搜索A*(A star)算法是一种很好的树搜索策略,在许多人工智能的书籍中有所介绍。比如《人工智能,一种现代方法》和《人工智能,复杂问题求解的结构和策略》。[i]文介绍到,A*算法使用估价函数F(N)来估算从初始状态S到当前状态N,再到目标状态T需要的最小步数。有公式:F(N) = G(N) + H(N)其中,G(N)是起始状态S到当前状态的实际代价G(N),它比最佳路径的代价G*(N)大。H(N)是从当前状态到目标状态T的实际代价的估算值H*(N),它比实际代价H(N)大。对于一个起始状态到当前状态的实际路径,G(N)是已经决定的。H(N)的选择则至关重要。有两个限制:1. H 阅读全文

实用算法实现-第13篇 搜索(盲目搜索)

2011-10-22 01:17 by myjava2, 669 阅读, 0 推荐, 收藏, 编辑
摘要:在人工智能中,盲目搜索是相对于启发式搜索来说的。13.1 广度优先搜索《算法导论》中,广度优先(Breadth-First)搜索树的伪代码如下:BFS(G,s)1 for each vertex u ∈ V[G] - {s}2 docolor[u] ← WHITE3 d[u] ← ∞4 ∏[u] ← NIL5 color[s] ← GRAY6 d[s] ← 07 ∏[s] ← NIL8 Q ← Ф9ENQUEUE(Q, s)10while Q ≠ Ф11 do u ← head[Q]12 for each v ∈ Adj[u]13 doif color[v] = WHITE14 thencol 阅读全文

实用算法实现-第12篇 不相交集合(并查集)

2011-10-21 12:18 by myjava2, 387 阅读, 0 推荐, 收藏, 编辑
摘要:12.1 不加按秩合并启发式的并查集并查集可以进行两方面的启发式,一种是按秩合并,也就是使得包含较少结点的树的根指向包含较多结点的树的根。另一种是路径压缩,也就是使得查找路径上的每个结点都直接指向根结点。但是有些问题只有使用不加按秩合并启发式的并查集才能够解决,因为按秩合并意味着不能够手动控制集合的合并方向。12.1.1实例PKU JudgeOnline, 1182, 食物链.12.1.2问题描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种 阅读全文

数据流图

2011-10-20 23:13 by myjava2, 1654 阅读, 0 推荐, 收藏, 编辑
摘要:数据流图(Data Flow Diagram,简称DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经历的变换,其既提供了功能建模机制也提供了信息建模机制。是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。一、DFD中的基本符号: 数据流图有四种基本图形符号: →:箭头,表示数据流 〇:圆或椭圆,表示加工,即变换数据的处理 =:双杠(或开口矩形),表示数据存储 □:方框,表示数据的源点或汇点 二、DFD中的4中元素: (1)数据流:数据流是数据... 阅读全文

实用算法实现-第 11 篇 贪心算法

2011-10-20 12:17 by myjava2, 184 阅读, 0 推荐, 收藏, 编辑
摘要:11.1 Huffman编码Huffman设计了一个可以用来构造一种称为Huffman编码的最优前缀码的贪心算法。11.1.1实例PKU JudgeOnline, 1521, Entropy.11.1.2问题描述给定一组ASCII码组成的字符串,求用Huffman编码该字符串所需的长度,及采用该编码带来的压缩比。11.1.3输入AAAAABCDTHE_CAT_IN_THE_HATEND11.1.4输出6413 4.9144 51 2.811.1.5分析采用贪心算法,使用最小堆就可以实现Huffman树的构建。为了便于计算每种字符对应的码的长度,用update()维护depth数组。如果需要求出 阅读全文

android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M的文件

2011-10-19 16:26 by myjava2, 203 阅读, 0 推荐, 收藏, 编辑
摘要:初学android,达人忽略,欢迎扔石头.android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M的文件如果使用SD卡,需要在AndroidManifest.xml中设置权限<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">&l 阅读全文

操作系统 PV原理

2011-10-19 15:30 by myjava2, 489 阅读, 0 推荐, 收藏, 编辑
摘要:PV原理是用来解决操作系统进程之间的同步和互斥的.同步:一补环境下的一组进程因相互制约而发送消息,进行互相合作互相等待.使各个进程按照一定的速度执行.互斥:一组进程因为共享一个公共资源,必需保证同一时刻只有一个进程在使用临界资源.举一个例子就是:互斥就是很多人过一个独木桥,同时只能有一个人使用这个桥同步就是两个人同时过一个桥,一个人骑车,一个人步行.但是两个人必需同时到达.这两个人同时出发,骑车的人的比较快,必需到一段等一下步行的人.保证他们相互制约着到达.信号量:代表并发进程可用资源数,小于零表示正在等待资源的进程数.P操作:将信号量减一,如何信号量(sem)为负数,则调用p操作的进程停止, 阅读全文

程序员的出路

2011-10-19 00:13 by myjava2, 191 阅读, 0 推荐, 收藏, 编辑
摘要:我已经33岁了。程序员这个职业的高薪是很多人的职业梦想,但真正自己进入之后却发觉没有想像中那么美好。 首先是工作强度大,像个编码“机器”;其次技术更新换代快,饭碗不稳定。随着年龄的增长,IT编程员该何去何从?我该何去何从? 大学时代,有2/3的时间是在校园微机房里度过的,当时,我疯狂地迷上了电脑。大学毕业后,被一家跨国公司录用,担任程序员。 刚进IT行业时,我有股火一般的热情,参与了不少项目,而且都成功了。公司对我也很器重,付给我的薪水在当时的同学中可算是天价。在后来的IT泡沫中,我的公司也还算稳定。一晃8年过去了。期间,我曾换了两家公司,虽说薪水越来越高,但我却越来越困惑。今年我已经33岁. 阅读全文
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 52 下一页