張愛華
華中科技大學計算機科學與技術(shù)學院 武漢 430074
離散數(shù)學是信息學科尤其是計算機學科的一門重要的專業(yè)基礎(chǔ)課程,它的主要研究對象是離散結(jié)構(gòu)及其應用,為計算機理論和應用提供必不可少的數(shù)學基礎(chǔ)及思維方法。其理論和方法大量地應用在數(shù)字電路、編譯原理、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、算法的分析與設(shè)計、人工智能、計算機網(wǎng)絡等專業(yè)課程中,同時也為計算機應用提供必要的數(shù)學工具。
然而,該學科的知識點分散、概念抽象,給學生學習和理解帶來很大困難。如何學好這門課,對計算機學科的學生來說顯得特別重要;如何教好離散數(shù)學,從而提高教學質(zhì)量,是有關(guān)教師應該努力探討和研究的。
本文主要探討離散數(shù)學中關(guān)系的教學方法,期望對類似的問題能有參考意義。
關(guān)系是離散數(shù)學中用來刻畫事物之間聯(lián)系的一個重要的概念,在計算機科學與技術(shù)領(lǐng)域中有著廣泛的應用。關(guān)系數(shù)據(jù)庫模型就是以關(guān)系及其運算作為理論基礎(chǔ)的[1]。圖論中的一個圖,實際上也就是相關(guān)對象集合上的一個關(guān)系。正確理解關(guān)系的概念以及關(guān)系模型,對于利用關(guān)系模型來進行數(shù)學建模尤其重要。
定義1:(二元關(guān)系)假設(shè)A和B是兩個集合,A與B的笛卡爾積A×B的一個子集合,叫做一個A到B的二元關(guān)系[2]。
定義2:(多元關(guān)系)假設(shè)A1,A2,…An是n個集合,它們的笛卡爾積A1×A2×…×An的一個子集合,叫做一個A1,A2,…An間的一個n元關(guān)系[3]。
以上的兩個定義分別是二元關(guān)系和多元關(guān)系的定義,但無論是哪個定義,都似乎跟實際中的關(guān)系有很大距離,學生很難想象如何將實際中的關(guān)系跟這些個抽象的定義聯(lián)系起來,他們必然要問:為什么要這樣定義關(guān)系?
現(xiàn)實中的關(guān)系一般指事物之間或者對象之間的某種或者某些聯(lián)系,這些對象之間的關(guān)系,也同樣可以說是集合的元素之間的關(guān)系,以下是一些實際關(guān)系的例子。
【例1】四支球隊a、b、c及d隊,他們之間進行了一些比賽,以下一張表格記錄了他們之間的比賽結(jié)果——勝負關(guān)系:a勝b、b勝c、c勝a、d勝a、d勝b、d又勝了c。為了簡單起見,用(a,b)來表示a勝b,于是可以將所有勝負重新記錄表示成{(a,b),(b,c),(c,a),(d,a),(d,b),(d,c),(d,b)}。這就是一張勝負表,該表清楚地表現(xiàn)了這四個隊a、b、c、d之間的勝負關(guān)系,它就是這四個隊之間的一個關(guān)系——比賽勝負關(guān)系。
當用集合S表示4個隊時,S={a,b,c,d},那么勝負關(guān)系表{(a,b),(b,c),(c,a),(d,a),(d,b),(d,c),(d,b)}就是S與S的笛卡爾積S×S的一個子集。也就是說用這個子集合表示了這四個隊之間的某輪比賽的勝負關(guān)系。
【例2】一個電話號碼簿,它里面記錄了很多單位或個人的一些電話號碼。不難理解,一個號碼本就是一個集合。這個號碼本也就是這個集合表示了人和單位跟一些電話號碼之間的一種關(guān)系,它是一個實實在在的關(guān)系。如果用A表示所有有關(guān)的單位和人的集合,用B表示所有相關(guān)的電話號碼的集合,簡單地用(a,b)表示a的電話號碼是b,其中a∈A,b∈B分別表示A中的一個元素(單位或者人)和B中的一個號碼。那么所有這些有關(guān)的序?qū)Γ╝,b)就構(gòu)成電話號碼本,就構(gòu)成這個號碼集合??梢钥闯鲞@個集合正好是A與B的笛卡爾積A×B的一個子集。當有人或有單位的號碼發(fā)生變化,這個號碼本也相應地發(fā)生變化,變成另外一個號碼本,也就是另外一個集合,另外一個子集合,但仍然是A×B的一個子集。
【例3】(學生、課程、成績之間的關(guān)系)假設(shè)用集合A表示某大學計算機學院的所有學生,B集合表示計算機學院的所有課程,C集合表示不大于100的非負整數(shù)的集合,那么學生張三的離散數(shù)學考試成績是95分,就可以表示成(張三,離散數(shù)學,95)。將計算機學院所有學生所有課程的這樣的記錄放在一起,就是一張成績表,也就是教務管理中的成績庫。那么這個成績庫就是一個集合,這個集合表示的是計算機學院學生,課程和成績?nèi)咧g的一個關(guān)系。而這個集合恰好是集合A、B、C的笛卡爾積A×B×C的一個子集。
以上三個例子都說明了同一個問題:無論是一個集合內(nèi)部元素之間的關(guān)系,還是不同集合的元素之間的關(guān)系,還是多個集合元素之間的關(guān)系,都可以表示成相關(guān)集合的笛卡爾積的子集。把笛卡爾積的子集當成一個數(shù)學模型,那就可以用這個數(shù)學模型來表示關(guān)系,包括二元關(guān)系和多元關(guān)系[4]。
設(shè)集 合 A={a,b,c,d},S={(a,b),(c,d)},顯然 S ? A × A ,那么根據(jù)定義1,S是A集合到A集合自身的一個二元關(guān)系。這個關(guān)系看似是抽象的,但當給a、b、c、d賦予具體的含義,分別表示成張三、李四、王五和趙六4個人,而(x,y)表示為x與y是朋友,那么二元關(guān)系S就表示成4個人之間具有的一個朋友關(guān)系。其中,張三跟李四是朋友,王五跟趙六也是朋友,但其他人之間都不是朋友。即便是空集 φ ?A×A ,即空關(guān)系,在這里可以理解為集合A的人之間沒有人有朋友關(guān)系。
當然根據(jù)不同的情況,也可以給出另外的含義和解釋。比如說a=5、b=10、c=3、d=9,那么上面的關(guān)系S可以解釋為集合A={5,10,3,9}中元素間的整除關(guān)系。
這個例子說明,一些集合的笛卡爾積的任何一個子集,也即任一個關(guān)系,都可以在某些場合中解釋對應為實際的關(guān)系。
綜合上面所述,任何一個現(xiàn)實中的具體的關(guān)系,都可以用一個笛卡爾積的子集這個數(shù)學模型表示出來;任一個抽象的關(guān)系,在給集合的元素賦予具體的含義后,都可以對應地解釋為一個實際問題中的具體關(guān)系。這樣就建立起來笛卡爾積子集跟關(guān)系之間的聯(lián)系,學生再來理解關(guān)系的概念也就不再有難度了。通過這樣講解后,也能給學生如何利用數(shù)學模型、數(shù)學工具表示實際問題的體會。
1)離散數(shù)學概念繁多,而且抽象。教學時,最好多講一些相關(guān)的應用背景知識,提高學生的學習興趣和積極性。然后多舉一些實際的例子,講解從具體實例抽象到數(shù)學模型、數(shù)學概念的演繹過程,對學生學習理解抽象的數(shù)學概念,提高抽象思維能力是很有幫助的,同時對于學生以后學習數(shù)學建模也是很有用的。
2)鼓勵學生自己舉例,能夠加深對知識的理解,同時提高學生應用知識的能力。
[1]屈婉玲,耿素云,張立昂.離散數(shù)學[M].2版.北京:清華大學出版社,2009.
[2]Rosen K H. Discrete mathematics and Its Applications[M].4版.北京:機械工業(yè)出版社,2007.
[3]洪凡.離散數(shù)學基礎(chǔ)[M].3版.武漢:華中科技大學出版社,2008.
[4]Simpson A. Discrete Mathematics by Example[M].McGraw-Hill High Education,2002.