羅幼芝
摘要:本文闡述了離散數學的教學中加入實踐環節的必要性,具體介紹了作者在離散數學教學中進行的上機實驗內容。
關鍵詞:離散數學;實驗教學;算法
中圖分類號:D642.4文獻標志碼:A 文章編號:1002—2589(2009)29—0147—01
長期以來,離散數學課程內容概念多、理論性強、高度抽象,致使在實際教學中出現了學生學習興趣不高、學習目的不明確、學習效果不理想等現象,難于激發學生積極思考,不利于學生創新意識和創新能力的培養。
為了改變離散數學教學中的上述狀況,培養學生自主分析問題、解決問題的能力,同時也加深他們對該課程在專業教學中地位的理解和認識,在離散數學的教學過程中,我們嘗試了以課堂教學為主,適當增加上機實驗操作的教學模式。下面是兩個關于離散數學的上機實驗內容。
實驗一:關系傳遞閉包的Warshall算法的上機實驗內容。
設R為n元集上的關系,M 是R的關系矩陣,則
(1)置新矩陣N=M;
(2)置i=l;
(3)對j(1≤J≤n),若N的第j行第i列處為l,則對k=-1,2,? ,n做如下計算:
將N的第j行k列處元素與第i行k列處元素進行邏輯加,然后將結果放到第j行k列處,即
N [j,k]= N [j,k]+N [i,k];
(4)i=i+l;
(5)若i≤n,則轉到步驟(3),否則停止。
最終得到的矩陣N為關系R的傳遞閉包 R的關系矩陣。
對于此類算法,用C語言編寫的具體代碼如下。
#define N 3
main()
{int MINI[N]={{1,0,0},{0,1,0},
{0,1,1}};/}此處可改為由用戶輸入}/
int i,j,k,s;
for(i=0;i for(j 0~j if(a[訂[i]) for(k=0;k {a[jl[k1+-a[il[kI. if(a[jltk1>1)a[il[k]=1; } } 其中集合為{a,b,C},關系R的關系矩陣本例中固定為M,實際運行時也可由用戶輸入,最后再添加上輸出語句即是一完整的程序了。 實驗二:等價關系的算法的上機實驗內容。 等價關系是離散數學的一個重點問題,而等價關系的判定是一個難點。對于某個關系來說,判定它是否等價的過程比較繁瑣。為此給出判斷等價關系的一個充要條件(集臺上A的等價關系的充要條件是:R,R= 且 R)以及用關系矩陣判斷的方法,并用C語言編寫具體代碼如下。 #defineN 12 /★假設集合A臺有l2個元索★/ main() int i,j,k MR[N][N]; printf( 請輸^關系矩陣MR(%d★%d):
,N,N); for(i:0;i lot(j=0;j scanf(“%d ,&MR[i][j]); for(i=0;_ if(!MR[i][i]) 叫ntf( 關系R不是自反的:MR(%d,%d)!=1
”,i+1,i+1); return: for(i=0;i f。r(j=0;j if(MR[i][j]!=MR[j][.]) printf(”關系R不是對稱的:
MR(%d,%d)=MR(%d,%d)
”,i+1,j+1,j+1,i+1); for(i=0;i for(j:0;j if(MR[i][j]) for(k=0;k if(MR[j][k]) if(!MR[i][k])l printf( 關系R不是傳遞的:
~玨 (%d,%d)=1,MR(%d,%d)=, 但MR(%d,%d)=1
”,i+1,j+1,j+1,k+1,i+1,k+1); . retuFn: printf(”二元關系R是等價關系
) 通過給出判定等價關系的一種方法,同時依此給出具體算法在計算機上實現,具有很強的可操作性,可以提高效率。 通過離散數學實驗教學,可以把原本高度抽象的理論與編程等聯系起來,不僅提高了學生學習該課程的興趣,而且增強了學生的動手能力。由于在實驗中還應用到了其他計算機知識,如算法分析(優化程序)、vc++(進行程序設計)等,因此,離散數學實驗教學也培養了學生綜合運用知識的能力,加深了對所學知識的認識。因此,在離散數學教學中增加實驗內容,會取得理想的教學效果。 參考文獻: [1]耿素云.離散數學[M].北京:清華大學出版社,2004. [2]謝緒愷.離散數學基礎[M].北京:機械工業出版社,2005. [3]張忠志.離散數學[M].北京:高等教育出版社,2002. [4]朱文簧“離散數學”的教學實踐和體會[J].高等理科教育,2003,47(1):33~35. [5]陳莉,劉曉霞,張仲選,劉小寧.計算機專業基礎課教學改革探索[J].高等理科教育,2003,54(2):51~55. (責任編輯/彭巍)