我们正在努力恢复Google Play商店上的Unionpedia应用程序
🌟我们简化了设计以优化导航!
Instagram Facebook X LinkedIn

分治法和算法

快捷方式: 差异相似杰卡德相似系数参考

分治法和算法之间的区别

分治法 vs. 算法

在计算机科学中,分治法是建基於多項分支遞歸的一种很重要的算法範式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 这个技巧是很多高效算法的基础,如排序算法(快速排序、归并排序)、傅立叶变换(快速傅立叶变换)。 另一方面,理解及設計分治法算法的能力需要一定時間去掌握。正如以歸納法去證明一個理論,為了使遞歸能夠推行,很多時候需要用一個較為概括或複雜的問題去取代原有問題。而且並沒有一個系統性的方法去適當地概括問題。 分治法這個名稱有時亦會用於將問題簡化為只有一個細問題的算法,例如用於在已排序的列中尋找其中一項的折半搜索算法(或是在數值分析中類似的勘根算法)。這些算法比一般的分治算法更能有效地執行。其中,假如算法使用尾部遞歸的話,便能轉換成簡單的迴圈。但在這廣義之下,所有使用遞歸或迴圈的算法均被視作「分治算法」。因此,有些作者考慮「分治法」這個名稱應只用於每個有最少兩個子問題的算法。而只有一個子問題的曾被建議使用減治法這個名稱。 分治算法通常以數學歸納法來驗證。而它的計算成本則多數以解遞迴關係式來判定。. -- 算法(algorithm),在數學(算學)和電腦科學之中,為任何良定义的具體計算步驟的一个序列,常用於計算、和自動推理。精確而言,算法是一個表示爲有限長列表的。算法應包含清晰定義的指令用於計算函數。 算法中的指令描述的是一個計算,當其時能從一個初始狀態和初始輸入(可能爲空)開始,經過一系列有限而清晰定義的狀態最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化算法在内的一些算法,包含了一些隨機輸入。 形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,並在其后尝试定义或者中成形。这些尝试包括库尔特·哥德尔、雅克·埃尔布朗和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義爲形式化算法的情況。.

之间分治法和算法相似

分治法和算法有(在联盟百科)9共同点: 并行计算C语言計算複雜性理論高德纳计算机科学輾轉相除法递归排序算法最大公因數

并行计算

并行计算(parallel computing)一般是指许多指令得以同时进行的计算模式。在同時進行的前提下,可以將計算的過程分解成小部份,之後以並行方式來加以解決。 電腦軟體可以被分成數個運算步驟來執行。為了解決某個特定問題,軟體採用某個演算法,以一連串指令執行來完成。傳統上,這些指令都被送至單一的中央处理器,以循序方式執行完成。在這種處理方式下,單一時間中,只有單一指令被執行(processor level: 比较微处理器,CISC, 和RISC,即流水线Pipeline的概念,以及后来在Pipeline基础上以提高指令处理效率为目的的硬件及软件发展,比如branch-prediction, 比如forwarding,比如在每个运算单元前的指令堆栈,汇编程序员对programm code的顺序改写)。平行運算採用了多個運算單元,同時執行,以解決問題。.

分治法和并行计算 · 并行计算和算法 · 查看更多 »

C语言

C是一种通用的程式語言,广泛用于系统软件与应用软件的开发。于1969年至1973年間,為了移植與開發UNIX作業系統,由丹尼斯·里奇與肯·汤普逊,以B语言为基础,在贝尔实验室設計、开发出來。 C语言具有高效、灵活、功能丰富、表达力强和較高的可移植性等特点,在程式設計中备受青睐,成为最近25年使用最为广泛的编程语言。目前,C语言編譯器普遍存在於各種不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了众多後來的程式語言,例如C++、Objective-C、Java、C#等。 二十世纪八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言訂定了一套完整的國際標準語法,稱為ANSI C,作為C語言的標準。二十世纪八十年代至今的有关程式開發工具,一般都支持符合ANSI C的語法。.

C语言和分治法 · C语言和算法 · 查看更多 »

計算複雜性理論

计算复杂性理论(Computational complexity theory)是理论计算机科学和数学的一个分支,它致力于将可计算问题根据它们本身的复杂性分类,以及将这些类别联系起来。一个可计算问题被认为是一个原则上可以用计算机解决的问题,亦即这个问题可以用一系列机械的数学步骤解决,例如算法。 如果一个问题的求解需要相当多的资源(无论用什么算法),则被认为是难解的。计算复杂性理论通过引入数学计算模型来研究这些问题以及定量计算解决问题所需的资源(时间和空间),从而将资源的确定方法正式化了。其他复杂性测度同样被运用,比如通信量(应用于通信复杂性),电路中门的数量(应用于电路复杂性)以及中央处理器的数量(应用于并行计算)。计算复杂性理论的一个作用就是确定一个能或不能被计算机求解的问题的所具有的实际限制。 在理论计算机科学领域,与此相关的概念有算法分析和可计算性理论。两者之间一个关键的区别是前者致力于分析用一个确定的算法来求解一个问题所需的资源量,而后者则是在更广泛意义上研究用所有可能的算法来解决相同问题。更精确地说,它尝试将问题分成能或不能在现有的适当受限的资源条件下解决这两类。相应地,在现有资源条件下的限制正是区分计算复杂性理论和可计算性理论的一个重要指标:后者关心的是何种问题原则上可以用算法解决。.

分治法和計算複雜性理論 · 算法和計算複雜性理論 · 查看更多 »

高德纳

德納(Donald Ervin Knuth,音譯:唐納德·爾文·克努斯,),出生於美国密尔沃基,著名计算机科学家,斯坦福大学计算机系榮譽退休教授。高德纳教授為现代计算机科学的先驅人物,創造了演算法分析的領域,在數個理論計算機科學的分支做出基石一般的貢獻。在计算机科学及数学领域发表了多部具广泛影响的论文和著作。1974年圖靈獎得主。 高德纳最為人知的事蹟是,他是《计算机程序设计艺术》的作者。此書是計算機科學界最受高度敬重的參考書籍之一。此外還是排版軟件tex和字型設計系統Metafont的发明人。提出文学编程的概念,並創造了WEB與CWEB軟體,作為文學編程開發工具。.

分治法和高德纳 · 算法和高德纳 · 查看更多 »

计算机科学

计算机科学用于解决信息与计算的理论基础,以及实现和应用它们的实用技术。 计算机科学(computer science,有时缩写为CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何与应用的实用技术的学科。 它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;有些强调特定结果的计算,比如计算机图形学;而有些是探討计算问题的性质,比如计算复杂性理论;还有一些领域專注于怎样实现计算,比如程式語言理論是研究描述计算的方法,而程式设计是应用特定的程式語言解决特定的计算问题,人机交互则是專注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。 有时公众会误以为计算机科学就是解决计算机问题的事业(比如信息技术),或者只是与使用计算机的经验有关,如玩游戏、上网或者文字处理。其实计算机科学所关注的,不仅仅是去理解实现类似游戏、浏览器这些软件的程序的性质,更要通过现有的知识创造新的程序或者改进已有的程序。 尽管计算机科学(computer science)的名字里包含计算机这几个字,但实际上计算机科学相当数量的领域都不涉及计算机本身的研究。因此,一些新的名字被提议出来。某些重点大学的院系倾向于术语计算科学(computing science),以精确强调两者之间的不同。丹麦科学家Peter Naur建议使用术语"datalogy",以反映这一事实,即科学学科是围绕着数据和数据处理,而不一定要涉及计算机。第一个使用这个术语的科学机构是哥本哈根大学Datalogy学院,该学院成立于1969年,Peter Naur便是第一任教授。这个术语主要被用于北欧国家。同时,在计算技术发展初期,《ACM通讯》建议了一些针对计算领域从业人员的术语:turingineer,turologist,flow-charts-man,applied meta-mathematician及applied epistemologist。 三个月后在同样的期刊上,comptologist被提出,第二年又变成了hypologist。 术语computics也曾经被提议过。在欧洲大陆,起源于信息(information)和数学或者自动(automatic)的名字比起源于计算机或者计算(computation)更常见,如informatique(法语),Informatik(德语),informatika(斯拉夫语族)。 著名计算机科学家Edsger Dijkstra曾经指出:“计算机科学并不只是关于计算机,就像天文学并不只是关于望远镜一样。”("Computer science is no more about computers than astronomy is about telescopes.")设计、部署计算机和计算机系统通常被认为是非计算机科学学科的领域。例如,研究计算机硬件被看作是计算机工程的一部分,而对于商业计算机系统的研究和部署被称为信息技术或者信息系统。然而,现如今也越来越多地融合了各类计算机相关学科的思想。计算机科学研究也经常与其它学科交叉,比如心理学,认知科学,语言学,数学,物理学,统计学和经济学。 计算机科学被认为比其它科学学科与数学的联系更加密切,一些观察者说计算就是一门数学科学。 早期计算机科学受数学研究成果的影响很大,如Kurt Gödel和Alan Turing,这两个领域在某些学科,例如数理逻辑、范畴论、域理论和代数,也不断有有益的思想交流。.

分治法和计算机科学 · 算法和计算机科学 · 查看更多 »

輾轉相除法

在数学中,辗转相除法,又称欧几里得算法(Euclidean algorithm),是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。 两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21();因为,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数。由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,如。这个重要的結論叫做貝祖定理。 辗转相除法最早出现在欧几里得的《几何原本》中(大约公元前300年),所以它是现行的算法中歷史最悠久的。这个算法原先只用来处理自然数和几何长度(相當於正實數),但在19世纪,辗转相除法被推广至其他类型的數學對象,如高斯整数和一元多项式。由此,引申出欧几里得整环等等的一些现代抽象代数概念。后来,辗转相除法又扩展至其他数学领域,如纽结理论和多元多项式。 辗转相除法有很多应用,它甚至可以用来生成全世界不同文化中的传统音乐节奏。在现代密码学方面,它是RSA算法(一种在电子商务中广泛使用的公钥加密算法)的重要部分。它还被用来解丢番图方程,比如寻找满足中国剩余定理的数,或者求有限域中元素的逆。辗转相除法还可以用来构造连分数,在施图姆定理和一些整数分解算法中也有应用。辗转相除法是现代数论中的基本工具。 辗转相除法处理大数时非常高效,如果用除法而不是减法实现,它需要的步骤不会超过较小数的位数(十进制下)的五倍。拉梅于1844年证明了这点,同時這也標誌著计算复杂性理论的開端。.

分治法和輾轉相除法 · 算法和輾轉相除法 · 查看更多 »

递归

递归(Recursion),又译为--,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。.

分治法和递归 · 算法和递归 · 查看更多 »

排序算法

在計算機科學與數學中,一個排序算法(Sorting algorithm)是一種能將一串資料依照特定排序方式进行排列的一種算法。最常用到的排序方式是數值順序以及字典順序。有效的排序算法在一些算法(例如搜尋算法與合併算法)中是重要的,如此這些算法才能得到正確解答。排序算法也用在處理文字資料以及產生人類可讀的輸出結果。基本上,排序算法的輸出必須遵守下列兩個原則:.

分治法和排序算法 · 排序算法和算法 · 查看更多 »

最大公因數

数学中,兩個或多個整數的最大公因數(greatest common factor,hcf)指能够整除这些整数的最大正整数(这些整数不能都为零)。例如8和12的最大公因数为4。最大公因数也称最大公约数(greatest common divisor,gcd)。 整数序列a的最大公因数可以記為(a_1, a_2, \dots, a_n)或\gcd(a_1, a_2, \dots, a_n)。 求兩個整數最大公因數主要的方法:.

分治法和最大公因數 · 最大公因數和算法 · 查看更多 »

上面的列表回答下列问题

分治法和算法之间的比较

分治法有32个关系,而算法有88个。由于它们的共同之处9,杰卡德指数为7.50% = 9 / (32 + 88)。

参考

本文介绍分治法和算法之间的关系。要访问该信息提取每篇文章,请访问: