还没有来得及看,但搜索引擎的书不是很好找,先放上,希望对大家能有用
2007-12-27

动态规划 小结

关键字: 动态规划
        动态规划其实质上是通过开辟记录表,记录已求解过的结果,当再次需要求解的时候,可以直接到 那个记录表中去查找,从而避免重复计算子问题来达到降低时间复杂度的效果。实际上是一个空间 换时间的算法。动态规划,通常可以把指数级的复杂度降低到多项式级别。 一般算法书都会讲能不能用动态规划来求解问题,通常是判断有没有最有解结构,通常是通过“剪 切技术”来判断:即证明问题的一个最优解中,使用的子问题的解本身也必须是最优的。通常是假 设一个子问题不是最优的,那么找到一个最优的子问题来替换这个子 ...
问题描述: LITTLE SHOP OF FLOWERS Description You want to arrange the window of your flower shop in a most pleasant way. You have F bunches of flowers, each being of a different kind, and at least as many vases ordered in a row. The vases are glued onto the shelf and are numbered consecutively 1 thro ...
2007-12-23

用动态规划解--滑雪题 算法分析

关键字: 动态规划
问题描述: Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子  1  2  3  4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然 ...
在Java中,循环调用repaint()来显示动画效果,是个很自然的方法, 然而这是不可行的。其实Java有一个GUI (AWT) Thread来负责GUI 事件的分发,这个线程接受输入事件,放入事件队列,从该队列 中拿出一个事件分发出去。而这个线程事实上与GUI component 线程[一般是你应用程序的主线程]是绑定的。也就是说如果当前 的线程休眠,事件分发的线程同样会休眠。试想如果如果不这么 做,事件被分发,而当前线程正在休眠,事件就得不到响应,那么 这个事件就会丢失。 下面看看昨天遇到的一个问题: 昨天gyk同学问我一个动画不能显示,而是立即出来最终的画面, 他就使用循环调用repa ...
分享一个Nutch入门学习的资料,感觉写的还不错.
今天来看看Nutch如何Parse网页的: Nutch使用了两种Html parser工具(NekoHTML和TagSoup)来实现html的提取,这两种工具是可通过配置来选择的。 当然你要自己实现Parser你还可以选择HTMLParser[基于visitor访问者模式同时也提供了Event driver的接口]来 提取网页。如果你用惯了XML一套处理方法,使用NekoHTML和TagSoup应该会比较顺手的。 我们来看看类public class HtmlParser implements Parser的实现: 首先为了更好的理解下面的代码先看看成员变量: private stati ...
2007-12-17

Function Run Fun一个简单的DP问题分析

关键字: 动态规划
问题: We all love recursion! Don't we? Consider a three-parameter recursive function w(a, b, c): if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1 if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) ...
问题描述: People in Silverland use square coins. Not only they have square shapes but also their values are square numbers. Coins with values of all square numbers up to 289 (=172), i.e., 1-credit coins, 4-credit coins, 9-credit coins, ..., and 289-credit coins, are available in Silverland. There are ...
设计要素 nutch包含以下几个部分: 辅助类 Log:记载运行信息; Time:记载时间信息; 协议类 目的:各种进程之间的通信协议 Client和M/R系统通信协议:完成客户端和M/R系统的通信; Job和Task系统通信协议:由于一个任务要分布完成,所以需要任务和子任务之间的通信协议; MapTask和ReduceTask通信协议:由于MAP和REDUCE是一个任务的顺序执行过程,所以需要两者之间的通信协议来对两个步骤进行协调,主要是文件输入输出协调; 进程通信协议:子进程和父进程通信协议;  任务管理    &nb ...
我现在看得源码主要是网页抓取部分,这部分相对比较容易。我首先定位所有与网页抓取部分,大体看了整个流程后,然后几乎看了所有函数的实现,当然也有许多不太明白的,相信随着逐渐对整个代码的熟悉,这些疑问会逐渐解决。现在有一些疑问就是Nutch为什么没有使用异步的Socket和缓冲DNS来提高抓取的效率(或许我还没有找到)。 Nutch的代码整体上写的还算通俗易懂。但Nutch大量使用了Google的Map-Reduce思想,来简化了很多功能模块的设计,这对从来没有接触到Map-Reduce的初学者带来了很陡峭的学习曲线。可以这样说,没有对Map-Reduce的思想的深刻理解,读懂Nutch源码是非常 ...
今天我们看看Nutch网页抓取,所用的几种数据结构: 主要涉及到了这几个类:FetchListEntry,Page, 首先我们看看FetchListEntry类: public final class FetchListEntry implements Writable, Cloneable 实现了Writable, Cloneable接口,Nutch许多类实现了Writable, Cloneable。 自己负责自己的读写操作其实是个很合理的设计方法,分离出来反倒有很琐碎 的感觉。 看看里面的成员变量: public static final String DIR_NAME = "fet ...
今天我们来看看Nutch的源代码中的protocol-http插件,是如何抓取和下载web页面的。protocol-http就两个类HttpRespose和Http类,其中HttpRespose主要是向web服务器发请求来获取响应,从而下载页面。Http类则非常简单,其实可以说是HttpResponse的一个Facade,设置配置信息,然后创建HttpRespose。用户似乎只需要和Http类打交道就行了(我也没看全,所以只是猜测)。 我们来看看HttpResponse类: 看这个类的源码需要从构造函数 public HttpResponse(HttpBase http, URL url, C ...
搜索引擎Nutch源代码研究之一 网页抓取: Nutch的爬虫代码部分主要集中在:package org.apache.nutch.fetcher和插件protocol-file Protocol-ftp protocol-http protocol-httpclient以及相应的Parser插件中: 下面我们先从org.apache.nutch.fetcher开始: 最主要的类是Fetcher类,我们从它入手一步步跟踪整个代码: 我们从run函数入手: 首先: for (int i = 0; i < threadCount; i++) { // spawn thread ...
今天使用SVN去check out  Nutch的源代码,以前没有用过SVN,遇到了一些问题: 开始,安装Eclipse的插件subclipse,update Eclipse后,安装subclipse1.2.x,装完之后怎么也不好使, 找不到透视图,Import也没有那个选项.就以为是版本不对,到官方网站上找,发现subclipse1.2.x是eclipse3.2 以上都可以的,版本没有什么问题.后来试着装subclipse1.0.x,装完之后居然好使了. 然后自己在另外的一个Eclipse3.3里面装subclipse1.2.x插件,装的时候发现有个X号,原来需要subcl ...
本学期读的书,总结一下  : 书名           概述 阅读情况 推荐指数 ...
我们在使用Hibernate的lazy load来优化性能的时候,只要Session关闭后再试图访问未被载入的对象时,就会出现异常。通常使用在事务之内来访问数据是适合的,但是有时候我们需要强制载入这些数据,例如在Web视图中访问这些模型对象。 在业务层强制载入这些数据,通常不是很好的解决方案,因为不同的视图在使用业务方法的时候,需要的数据通常不一样,这样业务方法可能绑定到特定的控制器中。 在业务层上面增加一个Facade层来解决这个问题,同样也会增加一层不太必要的封装,增加了复杂性,POJO in Action一书中的例子就是这么设计的(POJO in Action感觉是本蛮不 ...
当时感觉没什么大不了的事,结果带来的却是痛苦不堪的后果。 这是我在公司实习期间的一段经历: 公司每个月经理都要和职员谈话,谈话内容主要自己的工作情况以及对公司的看法。 那次谈话,我到公司已经三个月了, 谈的第一件事是经理说我写的代码和别人的不一样:事情是这样的,由于当时那个项 目步骤特别固定,只要老手写一个功能的实现,其他人都可以照着这个流程去做。结 果是大家都是直接copy那一份老手写的样例,然后改改了之。其实重复的代码相当多, 我自己作了一个高层的抽象(使用模版方法和回调),避免了大量重复的代码。却被 认为和大家不统一而以后不好维护。而我当时反驳的是我们的代码重复的太多了,缺 少高层的抽象 ...
fuliang
搜索本博客
我的相册
53569b0e-134e-31fa-9555-bdfa6932b0e7-thumb
RSS Reader1
共 6 张
存档
最新评论