算法的起源很早,是一门随着历史不断发展的学科。在计算机和程序设计出现之前,算法停留在演算和手工计算的层面。计算机出现之后,算法在计算机编程领域再次获得了大发展,很多以前不可能实现的算法,现在都可以实现了。
其实,算法是一个扎根于数学和物理的科学。数学和物理学上的新发展往往能够激发一些新的算法应用的产生。
1. 并行算法
我们经常接触的算法模式都是单线程顺序计算的,即使其中采用了if分支语句或者其他跳转语言,也都是按照单一线程,每次仅完成一步操作,这就是串行计算的思想。而现在计算领域正在向并行计算方向发展,例如多核心处理器、多台计算机的分布式并行计算等。在并行计算中,一个任务可以分别在多个线程来同时计算,大大加速了计算的速度。
并行计算的思路不同于传统的串行计算,因此需要一些新的算法来展示并行计算的优势。目前,划分法、分治法、平衡树法、倍增法/指针跳跃法、破对称法等都是常用的并行算法。而且,由于并行计算是一个蓬勃发展的全新计算领域,相应的并行算法都还在不断发展中。
其实,我们在实际应用中已有很多领域开始应用并行算法了,主要体现在如下几个方面:
·我们最常用的计算机已经全面进入双核时代,四核CPU乃至更多核心的CPU也都逐步实用化。
·显卡的GPU是基于并行计算的思路的,目前NVIDIA、AMD等都在大力推广GPU的并行计算能力,并且已在科学研究和工程计算领域得到了一定的应用。
·硬件电路设计领域,可编程逻辑器件FPGA/CPLD等都是基于并行处理的思想,可以通过VHDL、Verilog等语言来实现并行计算的处理。
2. 遗传与进化算法
遗产算法(Genetic Algorithm)和进化算法(Evolutionary Algorithm)是学科交叉的结果。遗传与进化算法根据生物的遗产、进化和变异的特征,通过模拟自然演化的方法来得到最优解。遗传算法最初由美国Michigan大学的J.Holland教授于1975年首先提出,目前在组合优化、机器学习、信号处理、自适应控制、人工生命和人工智能等领域得到了广泛的引用。
3. 量子算法
量子物理学的发展是近现代物理学领域的最大突破,并提出了一系列颠覆性的概念和方法。量子物理学的发展,使其迅速与信息论和计算相结合,产生了量子信息技术和量子计算。量子计算是一种依靠量子力学理论进行的新型计算,量子计算的基础和原理使其能够大大超越传统的图灵机模式的计算机。
量子计算(quantum computation)的概念最早由IBM的科学教R.Landauer及C.Bennett于20世纪70年代提出。1985年,牛津大学的D.Deutsch提出量子图灵机(quantum Turing machine)的概念,量子计算才开始具备了数学的基本形式。采用量子计算机和相应的量子算法,可以实现超高速并行计算,现成为各国科学家的重要研究方向。
目前,已经发展的量子算法包括量子Shor算法、Grover搜索算法、Hogg搜索算法等。量子算法需要依赖量子计算机来实现。现在都处于刚刚起步阶段,距离使用还有一段距离,但这都代表了高性能计算和算法的一个发展方向。
【转载使用,请注明出处:http://blog.csdn.net/mahoking】
【转载使用,请注明出处:http://blog.csdn.net/mahoking】
原文地址:http://blog.csdn.net/mahoking/article/details/44727791