數學建模 | 用“雙射”的思想解決排列組合問題

⚠警告:本期極度無聊,非專業人士迅速離開。

“雙射”(bijective)其實是個比較土味的數學名詞,因爲在關係代數中我們更喜歡稱它爲“一一映射”。關係代數是研究集合之間“映射關係”的數學分支,然後集合的概念抽象到別的學科上就產生了各種細分理論,上一篇《VLQ偏移自然數》也是圍繞“雙射”這個主題展開的,即編碼與自然數一一映射。

其實在高中數學“排列組合”中就已經介紹了各種“雙射”的思想來解決實際問題,比如有100個球隊,兩兩進行淘汰賽,最後產生一名冠軍隊,請問要進行多少場比賽(無平局)?

按照常規思路,應該這樣分析:

  1. 第一輪要進 行 50 場 比賽 , 留下50 隊 ; 

  2. 第 二輪 要進 行 25 場 比 賽 , 留下 25 隊 ;

  3. 第三輪 要進 行 12 場 比 賽 , 留下 13 隊 ; 

  4. 第四 輪 要進 行 6 場比賽 , 留下 7 隊 ;

  5. 第五 輪要進 行 3 場 比賽 , 留下 4 隊 ;

  6. 第六輪 要進 行 2 場 比賽 , 留下 2 隊 ;

  7. 第七輪 是 一場決 賽 , 產生一 名冠 軍 隊;

因此總共進行了50 + 25 + 12 + 6 + 3 + 2 + 1 = 99 場 比賽。

我相信,當看到“99”這個答案,你會意識到一定有更簡單的算法。。我們換個思路分析一下,每進行一場比賽一定淘汰掉一個隊:【一場比賽】和【淘汰一個隊】一一對應,那想要淘汰掉99個隊有且只有進行99場比賽。這種算法立即得到答案,比前面的“直覺式迭代”簡便得多,這道題類似於“空瓶換水問題”:好像是2個空瓶可以換1瓶水,然後問能買多少水來着,解題思路都是通過一一映射轉換問題,避免嘗試性解題。

排列組合公式

我們再看一道題:把 7 本 不 同的書 , 分給 甲 2 本 , 乙 1 本 , 丙 4 本 , 問有多少種 分 法?

這裏再介紹一種解題習慣:分而治之,即把大問題拆分爲可以獨立考慮的不同階段,本題中,可以先把乙和丙看成整體,問題變成:7本書分甲2本,其他人5本,有多少種分法?這樣直接調用無序組合數公式即可:C(7,2)=21種。

組合數公式是指從n個不同元素中,任取m(m≤n)個元素併成無序的一組,求得組合的總數量。

組合數公式:

在以上的21種分法中,無論剩下的5本書如何分配給乙和丙,都不影響已經分給甲的書,所以這21種情況是對稱的。然後分而治之的子問題就成了:把5本不同的書分給乙1本,分給丙4本,總共是C(5,1)=5本。再把問題整合起來,7本書分給甲乙丙2、1、4本共C(7,2)*C(5,1)=21*5=105種分法。

上面我們介紹了排列組合公式、分而治之和一一映射的技巧,下面綜合這些方法挑戰更難的問題。

數學建模

某城有 7 條 南北街 , 5 條東西街,共4*6=24個街區,某人 要從城 的西南角走 到東北角 , 問最短的 走法 有幾種?

街區:以四條街道爲邊圍成的區域。


此題有多種解法,但使用一一映射的思想來建模是最簡單的,首先我們把問題轉換成上面這個座標系,從O點走到A點的最短路徑有多少條,這一看就是道排列組合題,我們設每走過一個街區消耗1步,向右走記作x,向上走記作y。

無論怎麼走,總要向x軸方向走6步,向y軸方向走4步,總共走10步,但x和y出現的順序可以是任意的比如xxxyyyyxxx,每一種組合和一條最短路徑一一映射,設一個長度爲10的數組,數組中任取4個位置設爲x,剩下的爲y,總數量就是C(10,4)=210種。

“ 一一對應” 解題思路的關鍵是 建立 怎樣 的 “ 對應” 關 系 , 才 能方便 地達 到 解題 目的,這 是 一個技 巧 問題。

高中數學老師留給我映像最深刻的一句話是:數學應該越學越簡單,因爲你掌握的方法越來越多了。這句話真的是god damn right。

嚴格遞增數列

本期分享一共4道初等排列組合問題,難度依次遞增,下面利用之前所學的所有技巧挑戰最後一道題:

我們都知道在1,2,3,...,n這n個元素的數列中任取r個元素【無重複,r≤n】可以取到C(n,r)種不同的組合,也就是上面的組合數公式。那如果允許重複選取,比如全選1【r可以大於n】,有多少種組合?

解:

和排列數不同,組合數沒有順序(順序沒有意義),也就是說我們可以給它們強行排序。我們取一組實例:X1 ≤ X2 ≤ ... ≤ Xr,這是一組遞增數列

下面,我們要把遞增數列映射到嚴格遞增數列,就是想辦法把所有“≤”變成“<”。爲啥?因爲嚴格遞增數列可以直接套用組合數公式呀!

我們從X1到Xr,分別加上0,1,2,...,r-1,得到Y1 < Y2 < ... <Yr,如下圖:

我們成功地把遞增的X數列一一映射成了嚴格遞增的數列Y,現在只要統計數列Y的數量就是數列X的數量。顯然【萬惡的顯然成立】每一個Y都不重複,而Yr ≤ n+r-1,此時的情況相當於從1,2,3,...,n+r-1中任取r個不重複的元素(每個元素只能選1次),可想而知,答案是C(n+r-1, r)。

從小學到大學,從初等數學到高等數學,考試成績總是兩極分化,其根本原因在於:幾乎每道題都有捷徑可走。如果觀察過考試題的答案就會發現,答案的形式總是異常簡單,都是簡短的表達式和數字,老師也不喜歡結果複雜的題目:即使題目很複雜,“解”總是很精簡。

於是有了一種逆向思維:既然已知結果的形式很簡單,那一定有簡單的算法。而“一一映射”就是這種數學捷徑之一:通過將原始問題映射到更簡單的模型。而這種映射總是能找到,在爭分奪秒考場上敢於“冒險”花時間尋找這種映射的學生成了學霸。這就是數學考試兩極分化的原因。

<完>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章