離散數學及其應用 ch7 高階計數

2021-06-25 13:31:18 字數 2352 閱讀 3228

在第五章學習了基本的組合計數知識後,我們終於在第七章迎來了更高階的組合計數知識,把這章介紹的內容與第五章的內容合併起來,就形成了我們的組合數學工具箱,可以解決一大堆計數問題了,在計算機程式設計過程中很多問題其實都可以用計數模型進行建模,那麼乙個好的組合計數基本功當然是必不可少的了。下面我們就來總結一下這章都講了哪些內容吧,這章的主題是三個基本方面:(1)遞迴關係;(2)生成函式;(3)容斥原理。

先來看看遞迴關係,遞迴關係定義的是一串數列,它用數列的前幾項來定義數列的通項。很多問題都可以用遞迴關係來建模,比如問一段時間後島上兔子個數的斐波拉契數列,關心盤子移動次數的漢諾塔問題,以不同方式上樓的階梯問題以及著名的約瑟夫問題等,都是用遞迴關係式來建模的。當我們得到遞迴關係的數學模型之後該怎麼推導閉形式從而快速地得到問題的解呢?這裡就涉及到乙個解遞迴關係式的問題,有一類常見的「常係數線性遞迴關係」可以用系統的方法進行求解,常係數線性遞迴關係有兩種,基本的是「常係數齊次線性遞迴關係」,這個概念要分解地看才能理解它的意義:「常係數」是指每乙個項的係數都是常數;「齊次」是指每一項都是ai的倍數;「線性」則是指遞迴式是數列各項的線性組合。要解這個遞迴關係,首先要得到特徵方程,由特徵方程的根以及根的重數來得到遞迴關係式的通解公式,然後再用初始條件來確定通解公式中的待定係數,最後得到通解。更複雜一些的是「常係數非齊次線性遞迴關係」,這個關係式中存在不是ai倍數的項,該項通常是n的函式,記為f(n),因此解法就比齊次關係要麻煩一些,我們先把f(n)去掉得到相應的齊次線性遞迴關係,用上面介紹的方法解出其通解an(h),然後根據f(n)的形式得到特解an(p)的形式,將特解代入非齊次線性遞迴求得特解,由此得到非齊次線性遞迴關係an=

an(h)+

an(p)

,然後再用初始條件去確定待定係數得到最後的解(注意通解定理的證明思路要好好掌握)。學習了線性遞迴關係如何解,下面我們就將遞迴模型和演算法設計聯絡起來,看看電腦科學解決問題的一種基本思路——分治策略,又稱為「divide & conquer」,也就是說,我們把乙個規模為n的問題分為a個,每個問題大小變為n/b,遞迴地解決它們,然後再用額外的g(n)操作將這a個子問題的解合併為最終問題的解,如果用f(n)來表示當問題規模為n時的總操作次數,那麼就得到公式f(n) = af(n/b) + g(n)。這個公式被稱為「分治遞迴關係」,用分治策略設計的演算法複雜度都是以這種形式表示的,如二叉查詢、快速矩陣乘法和歸併排序等等。因此解這個遞迴式存在著廣泛的應用,對於這種型別的遞迴式,我們通常用主方法進行證明(同樣地,熟練掌握主方法及其特殊情況定理的證明)。最後,書中還介紹了乙個比較複雜的計算幾何問題——最臨近點對問題,它的演算法也是用分治思想設計的。

然後就是大名鼎鼎的「生成函式」了,生成函式似乎在離散數學中是乙個非常強大的工具,堪稱****,好多問題都可以用生成函式來求解或證明,這其中甚至包含概率論(概率生成函式)。生成函式強大就強大在它將乙個無窮數列表示成乙個單一的形式冪級數,這個多項式的每一項都是ak乘以x的k次方,跟生成函式打交道,少不了要求閉形式,這裡閉形式有兩個概念要區分,乙個是生成函式g(x)的閉形式,是指g(x)的表示式中不包含省略號和求和符號;另乙個是ak的閉形式,這個在我們用生成函式求遞迴式中經常用到,二者有很大的聯絡,我們常常是通過求g(x)的閉形式來求ak的閉形式。從形式冪級數的角度來看,我們要熟悉生成函式的加法和乘法,特別是乘法,它和乙個叫「卷積」的概念有關聯。然後就是擴充套件的二項式係數以及由此產生的擴充套件二項式定理,它們在生成函式的各種應用中都扮演著重要角色(特別是解決計數問題時)。本章介紹的生成函式主要用在三個方面,首當其衝的是計數問題,什麼不定方程整數解的個數、給小朋友分甜餅、自動販賣機和湊零錢(由波利亞提出)等問題,都可以用生成函式建模求解,特別是湊零錢問題要引起重視,要考慮順序相關和順序無關兩種情況。它的解決非常的優美,並由此引出了關於整數劃分的問題。然後是解遞迴式的問題,我們先求g(x)的閉形式,然後由閉形式套用常用形式冪級數來求ak的閉形式。最後是組合恒等式的證明,這是除了組合證明方法之後的又一種方法。

本章最後討論的是容斥原理,首先是容斥原理的基本形式和證明,證明主要是通過集合論的韋恩圖來闡述的,容斥原理被用來解決與有限個有限集合的並集中元素個數有關的計數問題。但它的應用並不僅僅侷限於此,容斥原理還有乙個變形式,用於求集合中不滿足一系列性質p1,p2…pn的元素的個數。常見的應用有埃拉託色尼素數篩選演算法、求映上函式個數問題,和錯位排列問題。很多數學問題都可以抽象為求映上函式個數的問題,假設m大於等於n,從m個元素的集合a到n個元素的集合b的映上函式個數公式可由容斥原理求出。它的數學模型是「將m個可區分的物體放入n個不可區分的盒子中,其中沒有乙個盒子為空,然後再為盒子編號1,2…n」。因此映上函式的個數等於n!s(m,n),s(m,n)為第二類stirling數,代表將m個物體放入n個盒子,使得沒有乙個盒子為空時的方式數,通過這個模型又可以解決一類計數問題了。最後介紹的容斥原理應用是「錯位排列」,它是指將n個元素重新排列,使得每個元素都不在它原先位置的方式數,這個模型用於解決帽子問題。現在手裡多了這麼多組合計數的工具,以後在演算法設計的學習過程中,要善於應用這些知識解決實際問題。

離散數學及其應用 ch5 基本組合計數

第五章介紹了基本的組合計數知識,組合數學是研究如何對物件進行安排的學科,最早誕生於賭博遊戲,因此也是概率論的基礎,這章介紹的基本知識點涉及如下幾個方面 基本計數原理,鴿巢原理,基本排列和組合,二項式定理和廣義排列和組合。先來看看基本計數原理,基本計數原理可以說是組合計數的基礎,為什麼這麼說呢?因為很...

離散數學及其應用 前言

1.書中原話什麼是離散數學?離散數學是數學中研究離散物件的部分。這裡 離散 的含義是 由不同的或不相連的元素組成 離散數學解決的問題包括 你們將學習解決諸如以上問題要用到的離散結構和技術。更一般地,在對物件進行技術時要用到離散數學,研究兩個有限 或可數 集合之間的關係是要用到理順數學,分析只含有限步...

離散數學及其應用 ch1邏輯與證明

邏輯與證明 這一章就講了三個故事 命題邏輯 謂詞邏輯和數學證明。邏輯是數學推理的基礎,也是這門學科的基礎,以後我們在演算法和電腦程式中會大量用到證明,這章主要介紹邏輯和證明的各種工具,方法,策略。一.命題邏輯 1.1節和1.2節介紹了命題邏輯,首先我們要搞清楚 命題 的概念,命題 是一種宣告性的句子...