何睿
(重慶工程學(xué)院 軟件學(xué)院,重慶 400000)
離散數(shù)學(xué)作為計(jì)算類專業(yè)的核心課程,旨在讓學(xué)生理解并掌握基本理論與方法,培養(yǎng)學(xué)生的抽象能力與邏輯思維能力。通過(guò)對(duì)離散數(shù)學(xué)的學(xué)習(xí),學(xué)生可以使用離散數(shù)學(xué)作為工具,對(duì)軟件工程學(xué)科問(wèn)題進(jìn)行描述、分析、研究,達(dá)到對(duì)軟件工程專業(yè)領(lǐng)域相關(guān)問(wèn)題進(jìn)行離散建模求解的能力目標(biāo)[1]。
國(guó)際工程教育認(rèn)證是推動(dòng)新工科建設(shè)的重要手段。國(guó)際工程教育認(rèn)證標(biāo)準(zhǔn)對(duì)學(xué)生的“工程知識(shí)”提出了“學(xué)以致用”的要求。包括兩個(gè)方面,其一,學(xué)生必須具備解決復(fù)雜工程問(wèn)題所需數(shù)學(xué)、自然科學(xué)、工程基礎(chǔ)和專業(yè)知識(shí);其二,能夠?qū)⑦@些知識(shí)用于解決復(fù)雜工程問(wèn)題。前者是對(duì)知識(shí)結(jié)構(gòu)的要求,后者是對(duì)知識(shí)運(yùn)用的要求[2]。2020版的國(guó)際工程教育認(rèn)證手冊(cè)中,要求舉例說(shuō)明運(yùn)用數(shù)學(xué)知識(shí)解決復(fù)雜工程問(wèn)題的培養(yǎng)環(huán)節(jié),提高了運(yùn)用數(shù)學(xué)知識(shí)的要求。
目前,離散數(shù)學(xué)課程的教學(xué)理念仍側(cè)重于數(shù)學(xué)理論的推導(dǎo)演繹,注重訓(xùn)練學(xué)生的邏輯能力、抽象能力[3],缺少在實(shí)際生活或?qū)I(yè)領(lǐng)域的應(yīng)用案例,對(duì)學(xué)生運(yùn)用知識(shí)解決復(fù)雜工程問(wèn)題的能力培養(yǎng)不夠,導(dǎo)致學(xué)生學(xué)而不知其所用,產(chǎn)生“離散數(shù)學(xué)沒(méi)有用”的疑惑。
按照國(guó)際工程教育的理念和要求,在傳授理論知識(shí)的基礎(chǔ)上,還需要引入軟件工程領(lǐng)域問(wèn)題,尤其是添加以專業(yè)背景的場(chǎng)景案例,并運(yùn)用離散數(shù)學(xué)的知識(shí)分析問(wèn)題,提出解決方案。
在離散數(shù)學(xué)課程中,不僅培養(yǎng)學(xué)生體會(huì)數(shù)學(xué)的抽象、推理、邏輯能力,而且能夠?qū)W以致用,與后續(xù)專業(yè)課程建立聯(lián)系,打通數(shù)學(xué)與軟件專業(yè)課程的任督二脈。
根據(jù)適合的應(yīng)用場(chǎng)景設(shè)計(jì)教學(xué)案例,是實(shí)現(xiàn)這個(gè)課程目標(biāo)的關(guān)鍵。下面以離散數(shù)學(xué)中的特征函數(shù)為例,討論應(yīng)用案例的設(shè)計(jì)思路。
離散數(shù)學(xué)中討論的函數(shù)都是離散函數(shù),主要關(guān)注離散結(jié)構(gòu)之間的函數(shù)關(guān)系。它是定義在離散集合上的特殊關(guān)系,把一個(gè)離散對(duì)象變換成另一個(gè)離散的對(duì)象。離散函數(shù)是開(kāi)關(guān)理論、自動(dòng)機(jī)理論和可計(jì)算理論的基礎(chǔ),在計(jì)算機(jī)、軟件工程等學(xué)科及應(yīng)用領(lǐng)域中有重要的意義[4]。
特征函數(shù)是離散函數(shù)中的教學(xué)內(nèi)容,將離散的對(duì)象映射到0或1,在知識(shí)層面非常簡(jiǎn)單,但能夠解決很多復(fù)雜的問(wèn)題。例如數(shù)據(jù)處理中,對(duì)高維數(shù)據(jù)降維,得到易處理的特征向量,為數(shù)據(jù)運(yùn)算提供支撐;在集合的交、并等運(yùn)算中,避免數(shù)值的多樣性導(dǎo)致數(shù)值的比較變得復(fù)雜的情況。
特征函數(shù)直接定義在集合上,映射到0、1兩個(gè)值,很容易與計(jì)算機(jī)中的二進(jìn)制聯(lián)系,因此,選擇集合的交、并、補(bǔ)等運(yùn)算作為特征函數(shù)的應(yīng)用場(chǎng)景,并按照分析問(wèn)題、提出解決方案、編程實(shí)現(xiàn)的思路設(shè)計(jì)教學(xué)案例。
可將 集合運(yùn)算表示為公式(8)、(9)。
按照上述思路,很容易使用特征函數(shù)表示集合的其他運(yùn)算。
按照表2.1所示的特征函數(shù)映射關(guān)系,可設(shè)計(jì)出特征函數(shù)的算法,特征函數(shù)XA的偽代碼如下所示。
表2.1 特征函數(shù)XA和XB的映射表
算法1:求特征函數(shù)
按照上述方法,也可設(shè)計(jì)出計(jì)算特征函數(shù)的算法。
遍歷全集中的所有元素,并使用作為條件判當(dāng)元素是否為中的元素,設(shè)計(jì)出求交集的算法。
算法2:求交集
按照相同的方法,可設(shè)計(jì)求的算法。
算法3:求并集
按照上述思路,很容易設(shè)計(jì)出其它集合運(yùn)算的算法,這部分內(nèi)容可作為學(xué)生練習(xí)。
在計(jì)算機(jī)中,有很多方法可表示和存儲(chǔ)集合。為了簡(jiǎn)單方便,可選數(shù)組。
const int n = 15;
int E[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int A[]={1,3,5,7,9,11,13,15};
int B[]={1,2,5,8,9,10,13};
也可使用數(shù)組存儲(chǔ)如表2.1所示的特征函數(shù)映射關(guān)系。
int Xa[15], Xb[15];
在計(jì)算特征函數(shù)的算法中,包含了集合的屬于運(yùn)算,可先編寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)此運(yùn)算,其代碼如下。
根據(jù)計(jì)算特征函數(shù)的算法,可編寫(xiě)出計(jì)算特征函數(shù)的程序,其代碼如下。
根據(jù)計(jì)算集合運(yùn)算的算法,可編寫(xiě)出相應(yīng)的程序,如計(jì)算的代碼如下。
上述解決方案中,假設(shè)了母集是已知的,如果不知道母集的元素,怎樣設(shè)計(jì)計(jì)算集合運(yùn)算的解決方案?實(shí)際上,在不知道母集的情況下,運(yùn)用特征函數(shù)解決集合的運(yùn)算問(wèn)題,集合的定義更加復(fù)雜。通過(guò)上述提問(wèn),作為學(xué)術(shù)拓展練習(xí),讓學(xué)生體會(huì)到運(yùn)用特征函數(shù)解決工程問(wèn)題的局限性,明確方法的適用場(chǎng)景。同時(shí),將教學(xué)內(nèi)容延展至算法分析與設(shè)計(jì)的內(nèi)容,與其他專業(yè)課程緊密相連。
本文結(jié)合國(guó)際工程教育認(rèn)證對(duì)新工科建設(shè)方向標(biāo)準(zhǔn),提出在原離散數(shù)學(xué)課程的教學(xué)方法中,添加專業(yè)領(lǐng)域或生活實(shí)際的案例。為與后續(xù)專業(yè)課建立練習(xí),教學(xué)案例的思路按照分析問(wèn)題、提出解決方案、編程實(shí)現(xiàn)進(jìn)行設(shè)計(jì)。
以離散數(shù)學(xué)的特征函數(shù)解決集合的運(yùn)算為例,分析集合運(yùn)算,以特征函數(shù)為解決方案,分析設(shè)計(jì)算法,并提供了使用C語(yǔ)言編程實(shí)現(xiàn)算法的關(guān)鍵代碼。最后討論了特征函數(shù)使用的局限性。