離散數(shù)學(xué)及其在計算機科學(xué)中的應(yīng)用(英文版)
定 價:99 元
叢書名:經(jīng)典原版書庫
- 作者:Cliff L Stein, Robert Drysdale, Kenneth Bogart
- 出版時間:2017/10/10
- ISBN:9787111580973
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:O158;TP3
- 頁碼:508
- 紙張:膠版紙
- 版次:1
- 開本:16K
本書專為計算機科學(xué)專業(yè)的學(xué)生而設(shè)計,不僅提供學(xué)生必需的離散數(shù)學(xué)知識,而且能夠啟發(fā)后續(xù)專業(yè)課程的學(xué)習(xí)興趣。本書主要內(nèi)容涵蓋計數(shù)、密碼學(xué)與數(shù)論、邏輯與證明、歸納法、遞歸、概率以及圖論,推導(dǎo)嚴謹、代碼清晰、練習(xí)豐富。本書不僅適合作為高校計算機相關(guān)專業(yè)離散數(shù)學(xué)課程的教材,也適合從事計算機行業(yè)的技術(shù)人員參考。
課程動機與目標很多學(xué)院與大學(xué)都開設(shè)了離散數(shù)學(xué)這門課程。上這些課程的學(xué)生來自多個學(xué)科,其中最多的是來自計算機科學(xué)的學(xué)生。由國家科學(xué)基金會支持,作為達特茅斯(Dartmouth)學(xué)院跨學(xué)科數(shù)學(xué)項目的一部分,我們提出創(chuàng)建一門離散數(shù)學(xué)課程來直接解決計算機科學(xué)學(xué)生的需求。計算機科學(xué)的學(xué)生需要知道哪些離散數(shù)學(xué)知識?為什么需要知道這些知識?關(guān)于這兩個問題,我們的看法如下。
第一,我們認為一些知識對于計算機科學(xué)很重要,但是傳統(tǒng)的離散數(shù)學(xué)課程常常不會透徹地講授這些知識。這些知識包括:遞歸樹和解決遞推關(guān)系的主定理,計算平均運行時間和分析隨機算法的概率理論,以及強歸納法和結(jié)構(gòu)歸納法。
第二,我們認為對于計算機科學(xué)的學(xué)生而言,那些重要的離散數(shù)學(xué)知識在計算機科學(xué)里對應(yīng)著一些頗有啟發(fā)性的問題,并且只具備一兩門計算機科學(xué)入門課程水平的學(xué)生也能夠理解。這樣有可能回答一屆又一屆學(xué)生在應(yīng)用數(shù)學(xué)課程中的疑問:“為什么我們必須學(xué)習(xí)這個?”因此,我們選擇寫一本針對計算機科學(xué)學(xué)生的教科書,為他們提供必要的數(shù)學(xué)基礎(chǔ),并且通過他們在起步階段就能夠理解的計算機科學(xué)問題來啟發(fā)學(xué)習(xí)興趣。
在計算機科學(xué)系,離散數(shù)學(xué)通常是學(xué)生的專業(yè)首選課之一,甚至是第一門計算機科學(xué)課程的先修課。在這種情況下,教師面臨著兩難困境:是講授純數(shù)學(xué)概念,幾乎不涉及計算機應(yīng)用,還是講授計算機科學(xué)的例子,從而營造一種針對計算機科學(xué)學(xué)生的教學(xué)環(huán)境。第一種講課方式讓學(xué)生們抱怨在學(xué)習(xí)第一門計算機科學(xué)課程之前,被迫學(xué)習(xí)太多“不相干的”數(shù)學(xué)。第二種講課方式讓教授們(通常是數(shù)學(xué)家)嘗試給可能從來沒有寫過程序的學(xué)生解釋相當(dāng)高級的計算機科學(xué)知識,比如散列、二叉樹和循環(huán)程序等。即使在最好的情況,這種方法也明顯降低了數(shù)學(xué)的深度。我們的分析產(chǎn)生了一種不同的講課方式,創(chuàng)設(shè)一門出現(xiàn)在學(xué)生稍后學(xué)習(xí)過程中的課程。盡管我們不強制要求學(xué)生已經(jīng)上過微積分,但是我們假定學(xué)生了解并且能夠熟練使用加和符號、對數(shù)和指數(shù)函數(shù),因此對于微積分學(xué)前課程的內(nèi)容有很深的了解是很有幫助的。這意味著要讓學(xué)生在一門計算機科學(xué)的導(dǎo)論課程中先了解遞歸程序,然后再學(xué)習(xí)這門課。最好可以和數(shù)據(jù)結(jié)構(gòu)課程一起或者在其之后學(xué)習(xí),不過我們會通過例子解釋書中所使用的數(shù)據(jù)結(jié)構(gòu),因此數(shù)據(jù)結(jié)構(gòu)不是這門課的先導(dǎo)課程。
我們覺得這樣安排離散數(shù)學(xué)這門課程有幾個優(yōu)勢,下面列舉幾個特別的例子:學(xué)生已經(jīng)有了較為深入的問題求解、算法和代碼的經(jīng)驗。
學(xué)生已經(jīng)學(xué)習(xí)過或者在準備學(xué)習(xí)一些重要的計算機科學(xué)概念,比如散列、遞歸、排序、搜索以及基本的數(shù)據(jù)結(jié)構(gòu)。
學(xué)生已經(jīng)知道足夠的計算機科學(xué)知識,包括一些啟發(fā)性的例子,或者其他容易理解的簡單例子。例如:m散列可以用于啟發(fā)關(guān)于概率的學(xué)習(xí)。
m分析遞歸程序(比如并歸和快速排序)可以用于啟發(fā)關(guān)于遞歸關(guān)系及其解決方法的學(xué)習(xí)。
m在尋找隊列中最小元素的過程中,分析我們期望多久找到一個新的最小值,可以用來啟發(fā)關(guān)于期望的線性性質(zhì)和調(diào)和數(shù)的學(xué)習(xí)。
m二叉樹可以用來講解結(jié)構(gòu)遞歸法,也可以啟發(fā)作為圖的特例的樹的學(xué)習(xí)。
在我們自己的講課經(jīng)驗中,這門課是算法課的前導(dǎo),并且學(xué)生經(jīng)常在結(jié)束離散數(shù)學(xué)課程不久后就學(xué)習(xí)算法。這樣,他們會發(fā)現(xiàn)自己可以直接使用剛剛學(xué)過的離散數(shù)學(xué)知識。
我們的教育哲學(xué)這本教科書是以教學(xué)活動為驅(qū)動的,并且包含豐富的練習(xí)題。通過對這些活動的解釋和擴展,教學(xué)素材得以不斷充實。對于學(xué)生最有效的方法是嘗試認真完成學(xué)生活動,而先不閱讀那些教學(xué)活動后面的解釋。我們最初設(shè)計這些教學(xué)活動是想讓學(xué)生在課堂中以小組的形式來完成,因此,如果需要在課外開展教學(xué)活動,建議學(xué)生組建小組一起完成。我們采用這種方式來設(shè)計這門課程以及這本教材,希望借此幫助學(xué)生們養(yǎng)成自己的數(shù)學(xué)思維習(xí)慣。我們仔細研究了本科學(xué)生應(yīng)當(dāng)怎樣學(xué)習(xí)數(shù)學(xué),得到了以下幾個結(jié)論:如果學(xué)生能夠主動發(fā)現(xiàn)他們正在學(xué)習(xí)的是什么(經(jīng)常被稱為“主動學(xué)習(xí)”),往往比那些被動學(xué)習(xí)的學(xué)生能夠更長久地記住這些概念,也更有可能在學(xué)習(xí)環(huán)境之外運用這些概念。
當(dāng)學(xué)生在一個小組中和同學(xué)一起學(xué)習(xí),而不是在由導(dǎo)師帶領(lǐng)的一個更大的班級中時,他們更有可能提出問題,直到徹底理解某個主題。(然而,這一點不總是成立。很多學(xué)生需要在小組中感到舒適之后才敢提出的問題,因為他們擔(dān)心自己的提問會耽誤別人的學(xué)習(xí)速度。我們嘗試提高課程中的舒適度,方法是允許學(xué)生自由選擇學(xué)習(xí)小組,并且根據(jù)出席模式允許或者要求學(xué)生在不同的天數(shù)后更換不同的小組。)最后,學(xué)生在給別人解釋概念的時候能夠更有效地組織自己腦中的想法,同時能夠熟悉數(shù)學(xué)語言。
本書內(nèi)容足夠支撐一門四學(xué)期學(xué)時的課程。在達特茅斯學(xué)院,我們使用這本書來上一門快節(jié)奏的課程,一周上三天且僅僅上九周,并且覆蓋了本書除了最后幾個章節(jié)和一部分帶星號的內(nèi)容之外的所有內(nèi)容。
證明的作用我們寫這本書的目的之一是給學(xué)生們提供一些關(guān)于證明的背景知識,在以后的計算機科學(xué)課程中,他們將需要理解并且寫出證明。
Contents
CHAPTER1 Counting 31
1.1 Basic Counting 31
The Sum Principle 31
Abstraction 33
Summing Consecutive Integers 33
The Product Principle 34
Two-Element Subsets 36
Important Concepts, Formulas, and Theorems 37
Problems 38
1.2 Counting Lists, Permutations, and Subsets 40
Using the Sum and Product Principles 40
Lists and Functions 42
The Bijection Principle 44
k-Element Permutations of a Set 45
Counting Subsets of a Set 46
Important Concepts, Formulas, and Theorems 48
Problems 50
1.3 Binomial Coeffiients 52
Pascal’s Triangle 52
A Proof Using the Sum Principle 54
The Binomial Theorem 56
Labeling and Trinomial Coefficient 58
Important Concepts, Formulas, and Theorems 59
Problems 60
1.4 Relations 62
What Is a Relation? 62
Functions as Relations 63
Properties of Relations 63
Equivalence Relations 66
Partial and Total Orders 69
Important Concepts, Formulas, and Theorems 71
Problems 72
1.5 Using Equivalence Relationsin Counting 73
The Symmetry Principle
Equivalence Relations 75
The Quotient Principle 76
Equivalence Class Counting 76
Multisets 78
The Bookcase Arrangement Problem 80
The Number of k-Element Multisets of an n-Element Set 81
Usingthe Quotient Principle to Explain a Quotient 82
Important Concepts, Formulas, and Theorems 83
Problems 84
CHAPTER2 Cryptography and Number Theory 89
2.1 Cryptography and Modular Arithmetic 89
Introduction to Cryptography 89
Private-Key Cryptography 90
Public-Key Cryptosystems 93
Arithmetic Modulo n 95
Cryptography Using Addition mod n 98
Cryptography Using Multiplication mod n 99
Important Concepts, Formulas, and Theorems 101
Problems 102
2.2 Inverses and Greatest Common Divisors 105
Solutions to Equations and Inverses mod n 105
Inverses mod n 106
Converting Modular Equations to Normal Equations 109
Greatest Common Divisors 110
Euclid’s Division Theorem 111
Euclid’s GCD Algorithm 114
Extended GCD Algorithm 115
Computing Inverses 118
Important Concepts, Formulas, and Theorems 119
Problems 120
2.3 The RSA Cryptosystem 123
Exponentiation mod n 123
The Rules of Exponents 123
Fermat’s Little Theorem 126
The RSA Cryptosystem 127
The Chinese Remainder Theorem 131
Important Concepts, Formulas, and Theorems 132
Problems 134
2.4 Details of the RSA Cryptosystem 136
Practical Aspects of Exponentiation mod n 136
How Long Does It Take to Use the RSA Algorithm? 139
How Hard Is Factoring? 140
Finding Large Primes 140
Important Concepts, Formulas, and Theorems 143
Problems 144
CHAPTER3 Reflectionon Logic and Proof 147
3.1 Equivalence and Implication 147
Equivalence of Statements 147
Truth Tables 150
DeMorgan’s Laws 153
Implication 155
If and Only If 156
Important Concepts, Formulas, and Theorems 159
Problems 161
3.2 Variables and Quantifier 163
Variables and Universes 163
Quantifier 164
Standard Notation for Quantificatio 166
Statements about Variables 168
Rewriting Statements to Encompass Larger Universes 168
Proving Quantifie Statements Trueor False 169
Negation of Quantifie Statements 170
Implicit Quantificatio 173
Proof of Quantifie Statements 174
Important Concepts, Formulas, and Theorems 175
Problems 177
3.3 Inference 179
Direct Inference (Modus Ponens) and Proofs 179
Rules of Inference for Direct Proofs 181
Contrapositive Ruleof Inference 183
Proof by Contradiction 185
Important Concepts, Formulas, and Theorems 188
Problems 189
CHAPTER4 Induction, Recursion, and Recurrences 191
4.1 Mathematical Induction 191
Smallest Counterexamples 191
The Principle of Mathematical Induction 195
Strong Induction 199
Induction in General 201
A Recursive Viewof Induction 203
Structural Induction 206
Important Concepts, Formulas, and Theorems 208
Problems 210
4.2 Recursion, Recurrences, and Induction 213
Recursion 213
Examples of First-Order Linear Recurrences 215
Iteratinga Recurrence 217
Geometric Series 218
First-Order Linear Recurrences 221
Important Concepts,