徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
下载
比浏览器更快的访问!
 

计算机程序设计艺术

指数 计算机程序设计艺术

《计算机程序设计艺术》(The Art of Computer Programming),簡稱TAOCP,是高德纳编著的关于计算机程序设计的七卷本著作。作者並因此获得美国计算机协会1974年图灵奖。.

25 关系: 字体排印学密尔沃基伪随机性具體數學倒排索引离散数学算法算法分析罗伯特·弗洛伊德随机数生成高德纳记数系统輾轉相除法艾迪生韦斯利MebibyteSoundexTetraVexTeX树的遍历歐拉-馬斯刻若尼常數水塘抽樣最邻近搜索斐波那契数列拉丁方陣0-1原理

字体排印学

字体排印学(typography)又称为文字设计,是通过排版使得文字易认、可读和优美的技艺。排版,即安排活字的方式,包括字体与字号的选取、栏宽与行高的设定以及字距的调整等。在西方设计领域,这项技艺常常被喻为“二维的建筑”。字体排印侧重于对不同样式与大小的活字进行安排;与之相近的设计门类字体设计(type design),则是对字体本身形状的描绘。尽管字体设计有时也被视为字体排印的一部分,然而不同分工的设计师对“字体排印师(typographer)”和“字体设计师(type designer)”并没有相互认同。 印刷技术的演进对字体排印的传统与发展有着重要影响。排版的对象是活字。桌面出版技术引入的数字字体,又可以视作是数码活字。在桌面出版时代和计算机普及之前,印刷文字的排版一直由专门人员完成,如排字工人、字体排印师、平面设计师、漫画家等等。现代的文字编码与字体技术使得排版作为一项技艺的门槛降低。正如英国平面设计院院长,David Jury所言:“字体排印现已成为每个人都在做的事情。”.

新!!: 计算机程序设计艺术和字体排印学 · 查看更多 »

密尔沃基

密尔沃基(Milwaukee)是一座位于美国威斯康辛州密尔沃基县密歇根湖畔的城市,是该州最大的城市,也是密尔沃基县的县府所在。 威斯康辛州面积约140672平方千米,居全国第26位。位于美国中北部,夹在苏必利尔湖及密歇根湖之间。1643年法国探险家让·尼克莱成为第一个到达这里的欧洲人。1763年归英国。1783年归属美国。1836年建边区。1848年加入联邦,成为美国第30个州。 密尔沃基位于威斯康辛州东南的密歇根湖畔。1846年建市。19世纪的移民中,以德国移民人数最多。他们建设了剧场、音乐厅、体育馆等等。很快本城以“社会主义”思想出了名,并被称为“德国的雅典”。20世纪,德国的影响逐渐减少。本城成为全州最大的港口、工商中心及谷物市场。.

新!!: 计算机程序设计艺术和密尔沃基 · 查看更多 »

伪随机性

伪随机性(Pseudorandomness)是一个过程似乎是随机的,但实际上并不是。例如伪随机数是使用一个确定性的算法计算出来的似乎是随机的数序,因此伪随机数实际上并不随机。在计算伪随机数时假如使用的开始值不变的话,那么伪随机数的数序也不变。伪随机数的随机性可以用它的统计特性来衡量,其主要特征是每个数出现的可能性和它出现时与数序中其它数的关系。伪随机数的优点是它的计算比较简单,而且只使用少数数值很难推算出计算它的算法。一般人们使用一个假的随机数,比如電腦上的時間作为计算伪随机数的开始值。.

新!!: 计算机程序设计艺术和伪随机性 · 查看更多 »

具體數學

《具體數學:計算機科學中的一塊基石》(Concrete Mathematics: A Foundation for Computer Science),簡稱《具體數學》,是由葛立恆、高德納及歐倫·帕塔許尼克共同編著的一本被許多資訊科系廣泛使用的數學教科書。此書講解了許多計算機科學中用到的數學知識及技巧,並特別著墨於算法分析方面。 根據此書原序,書名Concrete Mathematics中的Concrete係由連續(CONtinuous)配上離散(disCRETE)所組成的詞,真正含意並非字面所翻譯的「具體」,而是指該書講述的數學實質上就是由連續數學與離散數學共同構成的。特別地,微積分在此書的講解及習題常被用到。另外,concrete mathematics也意味著對於抽象數學(abstract mathematics)的補充。 此書係建立在高德納於1970年代在史丹佛大學的上課講義。此書實質上是對Knuth的名著《计算机编程設計藝術》(The Art of Computer Programming)一書中預備數學知識的擴充。因此,一些讀者將本書作為「计算机编程設計藝術」的入門。 本書寫作風格不十分嚴肅正式,行文帶有幽默風格。 如同高德納的其他書籍,高德納鼓勵讀者抓錯,無論是學術性的、歷史性的、打字的或政治方面的錯誤,抓到錯誤者高德納會給予獎賞。 此書推廣了許多數學記號,諸如:艾佛森括號、下取整符号與上取整符号、以及用階乘冪來表示連續遞增(或遞減)數列的連乘積。.

新!!: 计算机程序设计艺术和具體數學 · 查看更多 »

倒排索引

倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。 有两种不同的反向索引形式:.

新!!: 计算机程序设计艺术和倒排索引 · 查看更多 »

离散数学

离散数学(Discrete mathematics)是数学的几个分支的总称,研究基于离散空间而不是连续的数学结构。与連續变化的实数不同,离散数学的研究对象——例如整数、图和数学逻辑中的命题——不是連續变化的,而是拥有不等、分立的值。因此离散数学不包含微积分和分析等「连续数学」的内容。离散对象经常可以用整数来枚举。更一般地,离散数学被视为处理可数集合(与整数子集基数相同的集合,包括有理数集但不包括实数集)的数学分支。 。但是,“离散数学”不存在准确且普遍认可的定义。实际上,离散数学经常被定义为不包含连续变化量及相关概念的数学,甚少被定义为包含什么内容的数学。 离散数学中的对象集合可以是有限或者是无限的。有限数学一词通常指代离散数学处理有限集合的那些部分,特别是在与商业相关的领域。 隨著電腦科學的飛速發展,離散數學的重要性則日益彰顯。它為許多資訊科學課程提供了數學基礎,包括資料結構、演算法、資料庫理論、形式語言與作業系統等。如果沒有離散數學的相關數學基礎,學生在學習上述課程中,便會遇到較多的困難。此外,離散數學也包含了解決作業研究、化學、工程學、生物學等眾多領域的數學背景。由於運算對象是離散的,所以電腦科學的數學基礎基本上也是離散的。我們可以說電腦科學的數學語言就是離散數學。人們會使用離散數學裡面的槪念和表示方法,來研究和描述電腦科學下所有分支的對象和問題,如電腦運算、程式語言、密碼學、自動定理証明和軟件開發等。相反地,计算机的應用使離散數學的概念得以應用於日常生活當中(如運籌學)。 虽然离散数学的主要研究对象是离散对象,但是连续数学的分析方法往往也可以采用。数论就是离散和连续数学的交叉学科。同样的,有限拓扑(对有限拓扑空间的研究)从字面上可看作离散化和拓扑的交集。.

新!!: 计算机程序设计艺术和离散数学 · 查看更多 »

算法

-- 算法(algorithm),在數學(算學)和電腦科學之中,為任何良定义的具體計算步驟的一个序列,常用於計算、和自動推理。精確而言,算法是一個表示爲有限長列表的。算法應包含清晰定義的指令用於計算函數。 算法中的指令描述的是一個計算,當其時能從一個初始狀態和初始輸入(可能爲空)開始,經過一系列有限而清晰定義的狀態最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化算法在内的一些算法,包含了一些隨機輸入。 形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,並在其后尝试定义或者中成形。这些尝试包括库尔特·哥德尔、雅克·埃尔布朗和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義爲形式化算法的情況。.

新!!: 计算机程序设计艺术和算法 · 查看更多 »

算法分析

在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程。算法的效率或复杂度在理论上表示为一个函数。其定义域是输入数据的长度(通常考虑任意大的输入,没有上界),值域通常是执行步骤数量(时间复杂度)或者存储器位置数量(空间复杂度)。算法分析是计算复杂度理论的重要组成部分。 理论分析常常利用渐近分析估计一个算法的复杂度,并使用大O符号、大Ω符号和大Θ符号作为标记。举例,二分查找所需的执行步骤数量与查找列表的长度之对数成正比,记为 O(\log n),简称为「对数时间」。通常使用渐近分析的原因是,同一算法的不同具体实现的效率可能有差别。但是,对于任何给定的算法,所有符合其设计者意图的实现,它们之间的性能差异应当仅仅是一个系数。 精确分析算法的效率有时也是可行的,但这样的分析通常需要一些与具体实现相关的假设,称为计算模型。计算模型可以用抽象机器来定义,比如图灵机。或者可以假设某些基本操作在单位时间内可完成。 假设二分查找的目标列表总共有 n 个元素。如果我们假设单次查找可以在一个时间单位内完成,那么至多只需要 \log n + 1 单位的时间就可以得到结果。这样的分析在有些场合非常重要。 算法分析在实际工作中是非常重要的,因为使用低效率的算法会显著降低系统性能。在对运行时间要求极高的场合,耗时太长的算法得到的结果可能是过期或者无用的。低效率算法也会大量消耗计算资源。.

新!!: 计算机程序设计艺术和算法分析 · 查看更多 »

罗伯特·弗洛伊德

罗伯特·W·弗洛伊德(Robert W Floyd,)是一个知名的计算机科学家,1978年图灵奖得主。.

新!!: 计算机程序设计艺术和罗伯特·弗洛伊德 · 查看更多 »

随机数生成

随机数生成器(Random number generator)是通过一些算法、物理訊號、環境噪音等来产生看起來似乎沒有關聯性的數列的方法或裝置。丟硬幣、丟骰子、洗牌就是生活上常見的隨機數產生方式。 大部分计算机上的偽随机数,并不是真正的随机数,只是重复的周期比较大的數列,是按一定的算法和种子值生成的。.

新!!: 计算机程序设计艺术和随机数生成 · 查看更多 »

高德纳

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

新!!: 计算机程序设计艺术和高德纳 · 查看更多 »

记数系统

记数系统,或称记数法或数制(numeral system、system of numeration),是使用一组數字符号来表示數的体系。 一个理想的记数系统能够:.

新!!: 计算机程序设计艺术和记数系统 · 查看更多 »

輾轉相除法

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

新!!: 计算机程序设计艺术和輾轉相除法 · 查看更多 »

艾迪生韦斯利

艾迪生维斯理(Addison-Wesley),位于美國马塞诸塞州波士顿的图书出版商,以其出版的计算机科学领域教科书而广为人知。除了图书,Addison-Wesley还通过Safari Books Online发行相关技术领域的电子书。目前Addison-Wesley是培生教育图书的一个系列。.

新!!: 计算机程序设计艺术和艾迪生韦斯利 · 查看更多 »

Mebibyte

“mebibyte”是数字信息中的一个字节数单位。前缀“mebi”等于220,1 mebibyte等于1,048,576字节。“mebibyte”记作“MiB”, 由国际电工委员会(IEC)于1998年制定。这个单位被设计用来某些时候替代MB(megabyte),因为在计算机相关内容中MB有可能被用来等于220,虽然数值很相近,但MiB与国际单位制(SI)中的MB(106)还是有严格的区别。 MiB已经被所有主要的标准组织接受使用,但在真正的计算机工业中使用比较少。MB还是经常被当成这个单位在使用,虽然有可能与1,000,000 bytes搞混。.

新!!: 计算机程序设计艺术和Mebibyte · 查看更多 »

Soundex

Soundex是一种语音算法,利用英文字的读音计算近似值,值由四个字符构成,第一个字符为英文字母,后三个为数字。在拼音文字中有时会有会念但不能拼出正确字的情形,可用Soundex做类似模糊匹配的效果。例如Knuth和Kant二个字符串,它们的Soundex值都是「K530」。其在電腦大師高德納名著《計算機程序設計藝術》都有詳細的介紹。.

新!!: 计算机程序设计艺术和Soundex · 查看更多 »

TetraVex

TetraVex是一个益智游戏,最初出现在Windows Entertainment Pack 3中出现,后来出现多个类似作品。.

新!!: 计算机程序设计艺术和TetraVex · 查看更多 »

TeX

(/tɛx/,音译“泰赫”,文本模式下写作TeX),是一个由美国计算机教授高德纳(Donald Ervin Knuth)编写的功能强大的排版软件。它在学术界十分流行,特别是数学、物理学和计算机科学界。被普遍认为是一个优秀的排版工具,特别是在处理复杂的数学公式时。利用诸如是LaTeX等终端软件,就能够排版出精美的文本以幫助人們辨認和尋找。 的MIME类型为application/x-tex。是自由软件。.

新!!: 计算机程序设计艺术和TeX · 查看更多 »

树的遍历

在计算机科学里,树的遍历(也称为树的搜索)是圖的遍歷的一种,指的是按照某种规则,不重复地访问某种樹的所有节点的过程。具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。以下虽然描述的是二叉树的遍历算法,但它们也适用于其他树形结构。.

新!!: 计算机程序设计艺术和树的遍历 · 查看更多 »

歐拉-馬斯刻若尼常數

歐拉-馬斯刻若尼常數是一个数学常数,定义为调和级数与自然对数的差值: \sum_^n \frac \right) - \ln(n) \right.

新!!: 计算机程序设计艺术和歐拉-馬斯刻若尼常數 · 查看更多 »

水塘抽樣

水塘抽樣是一系列的隨機算法,其目的在於從包含n個項目的集合S中選取k個樣本,其中n為一很大或未知的數量,尤其適用於不能把所有n個項目都存放到内存的情況。最常見例子為Jeffrey Vitter在其論文中所提及的算法R。 參照Dictionary of Algorithms and Data Structures所載的O(n)算法,包含以下步驟(假設数组S以0開始標示):.

新!!: 计算机程序设计艺术和水塘抽樣 · 查看更多 »

最邻近搜索

最邻近搜索(Nearest Neighbor Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺度空间中寻找最近点的优化问题。问题描述如下:在尺度空间M中给定一个点集S和一个目标点q ∈ M,在S中找到距离q最近的点。很多情况下,M为多维的欧几里得空间,距离由欧几里得距离或曼哈顿距离决定。 高德纳在《计算机程序设计艺术》(1973)一书的第三章中称之为邮局问题,即居民寻找离自己家最近的邮局。.

新!!: 计算机程序设计艺术和最邻近搜索 · 查看更多 »

斐波那契数列

--(意大利语:Successione di Fibonacci),又譯為費波拿契數列、費波那西數列、費氏數列、黃金分割數列。 在數學上,費波那契數列是以遞歸的方法來定義:.

新!!: 计算机程序设计艺术和斐波那契数列 · 查看更多 »

拉丁方陣

拉丁方陣(Latin square)是一種 n × n 的方陣,在這種 n × n 的方陣裡,恰有 n 種不同的元素,每一種不同的元素在同一行或同一列裡只出現一次。以下是兩個拉丁方陣舉例: \begin \end \begin \end 拉丁方陣有此名稱是因為瑞士數學家和物理學家欧拉使用拉丁字母來做為拉丁方陣裡的元素的符號。.

新!!: 计算机程序设计艺术和拉丁方陣 · 查看更多 »

0-1原理

0-1原理(0-1 Principle)是由美国斯坦福大学著名的计算机教授高德纳(Donald Ervin Knuth)提出来的,他在《计算机程序设计艺术》的第三卷:排序与选择中,提出并论证了这个原理。 0-1原理:如果一个排序网络能够正确地对任何0-1序列排序,那么它就能对任意数组成的任意序列正确排序。 这条原理的作用是很大的,为了验证一个n输入排序网络的正确性,我们不必检验所有数字构成的任意长为n的序列,而只需检验 2^n个0-1序列就足以验证排序网络是否能正确排序了。 Category:数据结构 en:Sorting network#Zero-one principle.

新!!: 计算机程序设计艺术和0-1原理 · 查看更多 »

重定向到这里:

TAOCPThe Art of Computer Programming計算機程序設計藝術

传出传入
嘿!我们在Facebook上吧! »