书上看到一个多线程文件搜索器的例程,如果说这是算法的法,那在WINDOWS里早就用过了,想想用WINDOWS在硬盘上搜索文件,是不是很快?
简单的说,搜索算法有两种,深度优先和广度优先。优先就是说搜索的时候是单线程的,于是就有线程到达结点的先后,根据算法固有的侧重方向不同而分为深度优先和广度优先。深度优先就是递归式,在子结点延伸的结点中搜索的时候,前一搜索器在那里等待它的回溯,回溯后再进行下一枝的搜索,这里的等待是不是在浪费时间?广度优先就是层次式,把同一层次(相同父结点的子结点)的结点一齐压入队列,从外面看就像是一层一层按广度从上往下‘铺’开来搜索的,但事实上处于同一层的结点往下‘铺’的时候,并不是同时的,虽然处于同一层,但入队的时机不同,因此也可以看成是有时间停滞。
如果在这里应用多线程的思想,那情况会不会更好呢?在每一个非叶子结点上都启动一个线程,该线程负责往下搜索,原线程处于等待状态,当下一级的搜索线程完成后,回调搜索的结果。整体思路是这样的,感觉有点像深搜也有点像广搜,如果不考虑创建线程的时间,认为线程是同步启动的话,那整个程序将会在最快的时间内到达全部结点。
呵呵~只是一种想法,不知道这样做会不会时间重叠,这样的东西我也不好说时间复杂度了,如果有重叠那会是有所提高的,如果没有,算法就没有提高,同样是O(n)。只是笔者的设想而已。
正文
多线程可否应用在搜索算法上?2006-03-29 23:10:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/rickone/11612.html
阅读(6818) | 评论(6)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论