﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-健康，快乐，勇敢的宁帅！！-文章分类-经典算法</title><link>http://www.cppblog.com/ningfangli-blog/category/3104.html</link><description>努力、努力、再努力！
没有什么能阻止我对知识的渴望。</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 09:49:45 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 09:49:45 GMT</pubDate><ttl>60</ttl><item><title>Dijkstra算法</title><link>http://www.cppblog.com/ningfangli-blog/articles/15606.html</link><dc:creator>ningfangli</dc:creator><author>ningfangli</author><pubDate>Thu, 23 Nov 2006 17:13:00 GMT</pubDate><guid>http://www.cppblog.com/ningfangli-blog/articles/15606.html</guid><wfw:comment>http://www.cppblog.com/ningfangli-blog/comments/15606.html</wfw:comment><comments>http://www.cppblog.com/ningfangli-blog/articles/15606.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/ningfangli-blog/comments/commentRss/15606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ningfangli-blog/services/trackbacks/15606.html</trackback:ping><description><![CDATA[
		<p>
				<strong>今天晚上学习了这个算法，看了网上的好些资料，用自己的理解记录下来。</strong>
		</p>
		<p>
				<strong>Dijkstra算法</strong>是由荷兰计算机科学家艾兹格·迪科斯彻发现的。算法解决的是有向图或无向图中最短路径问题。<br /><font color="#000080"><strong>算法描述：<br /></strong></font>         这个算法是通过为每个顶点<i>v</i>保留目前为止所找到的从s到v的最短路径来工作的。初始时，源点s的路径长度值被赋为0（<i>d[s]</i>=0）， 同时把所有其他顶点的路径长度设为无穷大，即表示我们不知道任何通向这些顶点的路径（对于<i>V</i>中所有顶点<i>v</i>除<i>s</i>外<i>d[v]</i>= ∞）。当算法结束时，<i>d[v]</i>中储存的便是从<i>s</i>到<i>v</i>的最短路径，或者如果路径不存在的话是无穷大。 Dijstra算法的基础操作是边的拓展：如果存在一条从<i>u</i>到<i>v</i>的边，那么从<i>s</i>到<i>u</i>的最短路径可以通过将边(<i>u</i>,<i>v</i>)添加到尾部来拓展一条从s到v的路径。这条路径的长度是d[u]+w(u,v)。如果这个值比目前已知的<i>d[v]</i>的值要小，我们可以用新值来替代当前<i>d[v]</i>中的值。拓展边的操作一直执行到所有的d[v]都代表从s到v最短路径的花费。这个算法经过组织因而当<i>d[u]</i>达到它最终的值的时候没条边(<i>u</i>,<i>v</i>)都只被拓展一次。<br /><br /><strong><font color="#000080">算法流程：<br /></font></strong>1. 在算法中每个结点中都进行标注，标注分为<font color="#ff0000">临时性标注</font>和<font color="#ff0000">永久性标注</font>； <br />2.<font color="#ff3300">初始时</font>，所有结点都为<font color="#ff0000">临时性标注</font>，<font color="#ff0000">标注值为无穷大</font>；<br />3.将<font color="#ff0000">源结点</font>标注为0，且为永久性标注，并令其为工作结点；<br />4.检查与工作结点<font color="#ff0000">相邻并标注为临时标注的</font>结点，<font color="#ff0000">若该结点到工作结点的距离与工作结点的标注之和小于该结点的标注，则用新计算得到的和重新标注该结点，<font color="#0000ff"><strong>并将工作结点记录为该结点的上一结点</strong></font>；<br /><font color="#000000">5.在</font><strong><font color="#ff0000">整个图</font></strong></font><font color="#000000">中查找具有最小值的临时性标注结点，将其变为永久性结点，并成为下一轮检查的工作结点；<br /><font color="#ff0000">重复第四、五步，直到目的结点成为工作结点</font>。这时目标结点中的标注值就是目标结点到源结点的最短路径值。而回溯<font color="#0000ff"><strong>各结点的上一结点</strong></font>直到源结点。就是最短路径。<br /><br /></font><font color="#000080"><strong>示例：<br /><img onmousewheel="return bbimg(this)" style="ZOOM: 100%" alt="" hspace="0" src="http://www.roboticfan.com/college/UploadFiles_7562/200608/20060823031728751.gif" onload="javascript:resizepic(this)" border="0" /><br /><br />文章资源来源于：<br />1. <a href="http://www.roboticfan.com/college/knowledge/200608/195.shtml">http://www.roboticfan.com/college/knowledge/200608/195.shtml</a><br />2. <a href="http://johnfat.bokee.com/3435427.html">http://johnfat.bokee.com/3435427.html</a></strong></font></p>
<img src ="http://www.cppblog.com/ningfangli-blog/aggbug/15606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ningfangli-blog/" target="_blank">ningfangli</a> 2006-11-24 01:13 <a href="http://www.cppblog.com/ningfangli-blog/articles/15606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20世纪最好的10个算法(转载)---介绍了美国科学家评出的10个算法，感兴趣可以看一看</title><link>http://www.cppblog.com/ningfangli-blog/articles/15595.html</link><dc:creator>ningfangli</dc:creator><author>ningfangli</author><pubDate>Thu, 23 Nov 2006 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/ningfangli-blog/articles/15595.html</guid><wfw:comment>http://www.cppblog.com/ningfangli-blog/comments/15595.html</wfw:comment><comments>http://www.cppblog.com/ningfangli-blog/articles/15595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ningfangli-blog/comments/commentRss/15595.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ningfangli-blog/services/trackbacks/15595.html</trackback:ping><description><![CDATA[
		<p align="center">
				<font face="宋体">
						<span lang="EN-US">20</span>世纪最好的<span lang="EN-US">10</span>个算法</font>
		</p>
		<p align="center">
				<font face="宋体">三镜先生</font>
		</p>
		<p>
				<font face="宋体">一、算法一词的来源</font>
		</p>
		<p>
				<font face="宋体">　　<span lang="EN-US">Algos</span>是希腊字，意思是<span lang="EN-US">“</span>疼<span lang="EN-US">”</span>，<span lang="EN-US">A1gor</span>是拉丁字，意思是<span lang="EN-US">“</span>冷却<span lang="EN-US">”</span>。这两个字都不是<span lang="EN-US">A1gorithm(</span>算法<span lang="EN-US">)</span>一词的词根，<span lang="EN-US">a1gorithm</span>一词却与<span lang="EN-US">9</span>世纪的阿拉伯学者<span lang="EN-US">al-Khwarizmi</span>有关，他写的书《<span lang="EN-US">al-jabr w’al muqabalah</span>》<span lang="EN-US">(</span>代数学<span lang="EN-US">)</span>演变成为现在中学的代数教科书。<span lang="EN-US">Ad-Khwarizmi</span>强调求解问题的有条理的步骤。如果他能活到今天的话，他一定会被以他的名字而得名的方法的进展所感动。</font>
		</p>
		<p>
				<font face="宋体">二、<span lang="EN-US">20</span>世纪<span lang="EN-US">10</span>最好的算法</font>
		</p>
		<p>
				<font face="宋体">　　<span lang="EN-US">20</span>世纪最好的算法，计算机时代的挑选标准是对科学和工程的研究和实践影响最大。下面就是按年代次序排列的<span lang="EN-US">20</span>世纪最好的<span lang="EN-US">10</span>个算法。<span lang="EN-US"></span></font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">1.  Monte Carlo</span>方法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">   1946</span>年，在洛斯阿拉莫斯科学实验室工作的<span lang="EN-US">John von Neumann</span>，<span lang="EN-US">Stan Ulam</span>和<span lang="EN-US">Nick Metropolis</span>编制了<span lang="EN-US">Metropolis</span>算法，也称为<span lang="EN-US">Monte Carlo</span>方法。<span lang="EN-US">Metropolis</span>算法旨在通过模仿随机过程，来得到具有难以控制的大量的自由度的数值问题和具有阶乘规模的组合问题的近似解法。数字计算机是确定性问题的计算的强有力</font>
				<span lang="EN-US">
						<br />
				</span>
				<font face="宋体">工具，但是对于随机性（不确定性）问题如何当时并不知晓，<span lang="EN-US">Metropolis</span>算法可以说是最早的用来生成随机数，解决不确定性问题的算法之一。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">2.  </span>线性规划的单纯形方法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">    1947</span>年，兰德公司的<span lang="EN-US">Grorge Dantzig</span>创造了线性规划的单纯形方法。就其广泛的应用而言，<span lang="EN-US">Dantzig</span>算法一直是最成功的算法之一。线性规划对于那些要想在经济上站住脚，同时又有赖于是否具有在预算和其他约束条件下达到最优化的能力的工业界，有着决定性的影响<span lang="EN-US">(</span>当然，工业中的<span lang="EN-US">“</span>实际<span lang="EN-US">”</span>问题往往是非线性的；使用线性规划有时候是由于估计的预算，从而简化了模型而促成的<span lang="EN-US">)</span>。单纯形法是一种能达到最优解的精细的方法。尽管理论上讲其效果是指数衰减的，但在实践中该算法是高度有效的<span lang="EN-US">——</span>它本身说明了有关计算的本质的一些有趣的事情。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">3.  Krylov</span>子空间叠代法</font>
		</p>
		<p style="TEXT-INDENT: 24pt">
				<font face="宋体">
						<span lang="EN-US">1950</span>年，来自美国国家标准局的数值分析研究所的<span lang="EN-US">Magnus Hestenes, Eduard Stiefel</span>和<span lang="EN-US">Cornelius Lanczos</span>开创了<span lang="EN-US">Krylov</span>子空间叠代法的研制。这些算法处理看似简单的求解形为<span lang="EN-US">   </span></font>
		</p>
		<p style="TEXT-INDENT: 24pt" align="center">
				<span lang="EN-US">
						<font face="宋体">Ax=b</font>
				</span>
		</p>
		<p style="TEXT-INDENT: 24pt">
				<font face="宋体">的方程的问题。当然隐藏的困难在于<span lang="EN-US">A</span>是一个巨型的<span lang="EN-US">n*n </span>矩阵，致使代数解<span lang="EN-US">  </span></font>
		</p>
		<p style="TEXT-INDENT: 24pt" align="center">
				<span lang="EN-US">
						<font face="宋体">x=b/A </font>
				</span>
		</p>
		<p style="TEXT-INDENT: 24pt">
				<font face="宋体">是不容易计算的<span lang="EN-US">(</span>确实，矩阵的<span lang="EN-US">“</span>相除<span lang="EN-US">”</span>不是一个实际上有用的概念<span lang="EN-US">)</span>。叠代法<span lang="EN-US">——</span>诸如求解形为<br /><br /></font>
		</p>
		<p style="TEXT-INDENT: 24pt" align="left">
				<font face="宋体">
						<span lang="EN-US">Kx(k+1)=Kx(k)+b-Ax(k)<br /></span>
						<br />的方程，其中<span lang="EN-US">K </span>是一个理想地<span lang="EN-US">“</span>接近<span lang="EN-US">”A </span>的较为简单的矩阵<span lang="EN-US">——</span>导致了<span lang="EN-US">Krylov</span>子空间的研究。以俄罗斯数学家<span lang="EN-US">Nikolai Krylov</span>命名的<span lang="EN-US">Krylov</span>子空间由作用在初始<span lang="EN-US">“</span>余量<span lang="EN-US">”</span>向量</font>
		</p>
		<p style="TEXT-INDENT: 24pt">
				<font face="宋体">
						<span lang="EN-US">                              r(0)=b-Ax(0)<br /></span>上的矩阵幂张成的。当<span lang="EN-US"> A</span>是对称矩阵时，<span lang="EN-US">Lanczos</span>找到了一种生成这种子空间的正交基的极好的方法。对于对称正定的方程组，<span lang="EN-US">Hestenes </span>和<span lang="EN-US">Stiefel</span>提出了称为共轭梯度法的甚至更妙的方法。过去的<span lang="EN-US">50</span>年中，许多研究人员改进并扩展了这些算法。当前的一套方法包括非对称方程组的求解技巧，像字首缩拼词为<span lang="EN-US">GMRES</span>和<span lang="EN-US">Bi-CGSTAB</span>那样的算法。<span lang="EN-US">(GMRES</span>和<span lang="EN-US">Bi-CGSTAB</span>分别首次出现于<span lang="EN-US">1986</span>和<span lang="EN-US">1992  SIAM journal on Scientific and Statistical computing(</span>美国工业与应用数学学会的科学和统计计算杂志<span lang="EN-US">)</span>。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">4.  </span>矩阵计算的分解方法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">   1951</span>年，橡树岭国家实验室的<span lang="EN-US">A1ston Householder</span>系统阐述了矩阵计算的分解方法。研究证明能把矩阵因子分解为三角、对角、正交和其他特殊形式的矩阵是极其有用的。这种分解方法使软件研究人员能生产出灵活有效的矩阵软件包。这也促进了数值线性代数中反复出现的大问题之一的舍入误差分析问题。<span lang="EN-US"> (1961</span>年伦敦国家物理实验室的<span lang="EN-US">James Wilkinson</span>基于把矩阵分解为下和上三角矩阵因子的积的<span lang="EN-US">LU</span>分解，在美国计算机协会<span lang="EN-US">(ACM)</span>的杂志上发表了一篇题为<span lang="EN-US">“</span>矩阵逆的直接方法的误差分析<span lang="EN-US">”</span>的重要文章。<span lang="EN-US">)</span></font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">5.  Fortran</span>最优编译程序</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">    1957</span>年，<span lang="EN-US">John Backus</span>在<span lang="EN-US">IBM</span>领导一个小组研制<span lang="EN-US">Fortran</span>最优编译程序。</font>
				<span lang="EN-US">
						<br />
						<font face="宋体">Fortran</font>
				</span>
				<font face="宋体">的创造可能是计算机编程历史上独一无二的最重要的事件：科学家<span lang="EN-US">(</span>和其他人<span lang="EN-US">)</span>终于可以无需依靠像地狱那样可怕的机器代码，就可告诉计算机他们想要做什么。虽然现代编译程序的标准并不过分<span lang="EN-US">――Fortran I</span>只包含<span lang="EN-US">23</span>，<span lang="EN-US">500</span>条汇编语言指令<span lang="EN-US">――</span>早期的编译程序仍然能完成令人吃惊的复杂计算。就像<span lang="EN-US">Backus</span>本人在<span lang="EN-US">1998</span>年在<span lang="EN-US">IEEE annals of the History of computing </span>发表的有关<span lang="EN-US">Fortran I</span>，<span lang="EN-US">II, III</span>的近代历史的文章中回忆道：编译程序<span lang="EN-US">“</span>所产生的如此有效的代码，使得其输出令研究它的编程人员都感到吓了一跳。<span lang="EN-US">”</span></font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">6.  </span>矩阵本征值计算的<span lang="EN-US">QR</span>算法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">    1959—61</span>年，伦敦<span lang="EN-US">Ferranti Ltd.</span>的<span lang="EN-US">J.G. F. Francis</span>找到了一种称为<span lang="EN-US">QR</span>算法的计算本征值的稳定的方法。本征值大概是和矩阵相连在<span lang="EN-US">—</span>起的最重要的数了，而且计算它们可能是最需要技巧的。把<span lang="EN-US">—</span>个方阵变换为一个<span lang="EN-US">“</span>几乎是<span lang="EN-US">”</span>上三角的矩阵<span lang="EN-US">――</span>意即在紧挨着矩阵主对角线下面的一斜列上可能有非零元素<span lang="EN-US">――</span>是相对容易的，但要想不产生大量的误差就把这些非零元素消去，就不是平凡的事了。<span lang="EN-US">QR </span>算法正好是能达到这一目的的方法，基于<span lang="EN-US">QR </span>分解，<span lang="EN-US"> A</span>可以写成</font>
				<span lang="EN-US">
						<br />
				</span>
				<font face="宋体">正交矩阵<span lang="EN-US">Q </span>和一个三角矩阵<span lang="EN-US">R </span>的乘积，这种方法叠代地把</font>
				<font face="宋体">
						<span lang="EN-US"> A=Q(k)R(k)<br /></span>变成<span lang="EN-US">A(k+1)==Q(k)R(k) </span>就加速收敛到上三角矩阵而言多少有点不能指望。<span lang="EN-US">20</span>世纪<span lang="EN-US">60</span>年代中期<span lang="EN-US">QR </span>算法把一度难以对付的本征值问题变成了例行程序的计算。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">7.  </span>快速分类法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">   1962</span>：伦敦<span lang="EN-US">Elliott Brothers, Ltd.</span>的<span lang="EN-US">Tony Hoare</span>提出了快速<span lang="EN-US">(</span>按大小<span lang="EN-US">)</span>分类法</font>
				<font face="宋体">
						<span lang="EN-US">.</span>把<span lang="EN-US">n</span>个事物按数或字母的次序排列起来，在心智上是不会有什么触动的单调平凡的事。智力的挑战在于发明一种快速完成排序的方法。<span lang="EN-US">Hoare</span>的算法利用了古老的分割开和控制的递归策略来解决问题：挑一个元素作为<span lang="EN-US">“</span>主元<span lang="EN-US">”</span>、把其余的元素分成<span lang="EN-US">“</span>大的<span lang="EN-US">”</span>和<span lang="EN-US">“</span>小的<span lang="EN-US">”</span>两堆</font>
				<span lang="EN-US">
						<br />
						<font face="宋体">(</font>
				</span>
				<font face="宋体">当和主元比较时<span lang="EN-US">)</span>、再在每一堆中重复这一过程。尽管可能要做受到严厉责备的做完全部<span lang="EN-US">N(N-1)/2 </span>次的比较<span lang="EN-US">(</span>特别是，如果你把主元作为早已按大小分类好的表列的第一个元素的</font>
				<span lang="EN-US">
						<br />
				</span>
				<font face="宋体">话！<span lang="EN-US">)</span>，快速分类法运行的平均次数具有<span lang="EN-US">O(Nlog(N)) </span>的有效性，其优美的简洁性使之成为计算复杂性的著名的例子。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">8.  </span>快速<span lang="EN-US">Fourier</span>变换</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">    1965</span>年，<span lang="EN-US">IBM</span>的<span lang="EN-US">T. J. Watson</span>研究中心的<span lang="EN-US">James Cooley</span>以及普林斯顿大学和<span lang="EN-US">AT</span>＆<span lang="EN-US">T</span>贝尔实验室的<span lang="EN-US">John Tukey</span>向公众透露了快速<span lang="EN-US">Fourier</span>变换<span lang="EN-US">(</span>方法<span lang="EN-US">)(FFT)</span>。应用数学中意义最深远的算法，无疑是使信号处理实现突破性进展的<span lang="EN-US">FFT</span>。其基本思想要追</font>
				<span lang="EN-US">
						<br />
				</span>
				<font face="宋体">溯到<span lang="EN-US">Gauss(</span>他需要计算小行星的轨道<span lang="EN-US">)</span>，但是<span lang="EN-US">Cooley—Tukey</span>的论文弄清楚了<span lang="EN-US">Fourier</span>变换计算起来有多容易。就像快速分类法一样，<span lang="EN-US">FFT</span>有赖于用分割开和控制的策略，把表面上令人讨厌的<span lang="EN-US">O(N*N) </span>降到令人欢乐的<span lang="EN-US">O(Nlog(N)) </span>。但是不像快速分类法，其执行<span lang="EN-US">(</span>初一看<span lang="EN-US">)</span>是非直观的而且不那么直接。其本身就给计算机科学一种推动力去研究计算问题和算法的固有复杂性。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">9.  </span>整数关系侦查算法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">    1977</span>年，<span lang="EN-US">BrighamYoung</span>大学的<span lang="EN-US">Helaman Ferguson </span>和<span lang="EN-US">Rodney Forcade</span>提出了整数关系侦查算法。这是一个古老的问题：给定<span lang="EN-US">—</span>组实数，例如说<span lang="EN-US">x(1),x(2),...,x(n) </span>，是否存在整数<span lang="EN-US">a(1),a(2),..,a(n) </span>（不全为零），使得</font>
				<span lang="EN-US">
						<br />
						<font face="宋体">                     a(1)x(1)+a(2)x(2)+...+a(n)x(n)=0<br /></font>
				</span>
				<font face="宋体">对于<span lang="EN-US">n=2 </span>，历史悠久的欧几里得算法能做这项工作、计算<span lang="EN-US">x(1)/x(2) </span>的连分数展开中的各项。如果<span lang="EN-US">x(1)/x(2) </span>是有理数，展开会终止，在适当展开后就给出了<span lang="EN-US">“</span>最小的<span lang="EN-US">”</span>整数<span lang="EN-US">a(1) </span>和<span lang="EN-US">a(2) </span>。欧几里得算法不终止<span lang="EN-US">——</span>或者如果你只是简单地由于厌倦计算<span lang="EN-US">——</span>那么展开的过程至少提供了最小整数关系的大小的下界。<span lang="EN-US">Ferguson</span>和<span lang="EN-US">Forcade</span>的推广更有威力，尽管这种推广更难于执行<span lang="EN-US">(</span>和理解<span lang="EN-US">)</span>。例如，他们的侦查算法被用来求得逻辑斯谛<span lang="EN-US">(logistic)</span>映射的第三和第四个分歧点，<span lang="EN-US">b(3)=3.544090 </span>和<span lang="EN-US"> b(4)=3.564407</span>所满足的多项式的精确系数。<span lang="EN-US">(</span>后者是<span lang="EN-US">120 </span>阶的多项式；它的最大的系数是<span lang="EN-US">257^30 </span>。<span lang="EN-US">)</span>已证明该算法在简化量子场论中的<span lang="EN-US">Feynman</span>图的计算中是有用的。</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">10. </span>快速多极算法</font>
		</p>
		<p>
				<font face="宋体">
						<span lang="EN-US">    1987</span>年，耶鲁大学的<span lang="EN-US">Leslie Greengard </span>和<span lang="EN-US">Vladimir Rokhlin</span>发明了快速多极算法。</font>
				<font face="宋体">该算法克服了<span lang="EN-US">N</span>体模拟中最令人头疼的困难之一：经由引力或静电力相互作用的<span lang="EN-US">N</span>个粒子运动的精确计算<span lang="EN-US">(</span>想象一下银河系中的星体，或者蛋白质中的原于<span lang="EN-US">)</span>看来需要<span lang="EN-US">O(N*N) </span>的计算量</font>
				<span lang="EN-US">
						<br />
						<font face="宋体">——</font>
				</span>
				<font face="宋体">比较每一对质点需要一次计算。该算法利用多极展开<span lang="EN-US">(</span>净电荷或质量、偶极矩、四矩，等等<span lang="EN-US">)</span>来近似遥远的一组质点对当地一组质点的影响。空间的层次分解用来确定当距离增大时，比以往任何时候都更大的质点组。快速多极算法的一个明显优点是具有严格的误差估计，这是许多算法所缺少的性质。</font>
		</p>
		<p>
				<font face="宋体">三、结束语</font>
				<span lang="EN-US">
						<br />
						<font face="宋体">    <br /></font>
				</span>
				<font face="宋体">　　<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="l" w:st="on"><span lang="EN-US">2l</span></st1:chmetcnv>世纪将会带来什么样的新的洞察和算法？对于又一个一百年完整的回答显然是不知道的。然而，有一点似乎是肯定的。正如<span lang="EN-US">20</span>世纪能够产生最好的<span lang="EN-US">l0</span>个算法一样，新世纪对我们来说既不会是很宁静的，也不会是弱智的。</font>
		</p>
<img src ="http://www.cppblog.com/ningfangli-blog/aggbug/15595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ningfangli-blog/" target="_blank">ningfangli</a> 2006-11-23 20:51 <a href="http://www.cppblog.com/ningfangli-blog/articles/15595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>