中國(guó)著名特級(jí)教師教學(xué)思想錄26
《中國(guó)著名特級(jí)教師教學(xué)思想錄26》由會(huì)員分享,可在線閱讀,更多相關(guān)《中國(guó)著名特級(jí)教師教學(xué)思想錄26(56頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,,*,樹(shù)和圖,,西安交通大學(xué)計(jì)教中心,,,,樹(shù)的遞歸定義:,樹(shù)是由n個(gè)具有相同特性的數(shù)據(jù)元素組成的集合。假設(shè)n=0,那么稱(chēng)其為空樹(shù)。一棵非空樹(shù)T必須滿足:1〕其中有一個(gè)特定的元素稱(chēng)為T(mén)的根root。,,2〕除根以外的集合可被劃分為m個(gè)不相交的子集T1,T2,…,Tm,其中每個(gè)子集都是樹(shù)。它們稱(chēng)為根root的子樹(shù)。,G,A,C,F,D,E,B,樹(shù)的一般形式,,與樹(shù)相關(guān)的術(shù)語(yǔ),,? 結(jié)點(diǎn):在樹(shù)結(jié)構(gòu)中一般把數(shù)據(jù)元素及其假設(shè)干指向子樹(shù)的分支稱(chēng)為結(jié)點(diǎn)。,,? 結(jié)點(diǎn)的度:結(jié)點(diǎn)擁有的非空子樹(shù)的個(gè)數(shù)。,,? 樹(shù)的
2、度:樹(shù)中所有結(jié)點(diǎn)的度的最大值。,,? 葉子結(jié)點(diǎn):沒(méi)有非空子樹(shù)的結(jié)點(diǎn)。,,? 分支結(jié)點(diǎn):至少有一個(gè)非空子樹(shù)的結(jié)點(diǎn)。,,? 孩子結(jié)點(diǎn)和父結(jié)點(diǎn):某結(jié)點(diǎn)所有子樹(shù)的根結(jié)點(diǎn)都稱(chēng)為該結(jié)點(diǎn)的孩子結(jié)點(diǎn),同時(shí)該結(jié)點(diǎn)也稱(chēng)為其孩子結(jié)點(diǎn)的父結(jié)點(diǎn)。,,? 兄弟結(jié)點(diǎn):具有相同父結(jié)點(diǎn)的結(jié)點(diǎn)互為兄弟結(jié)點(diǎn)。,,? 結(jié)點(diǎn)的層次:根結(jié)點(diǎn)的層次為1,其子結(jié)點(diǎn)的層次為2。依次類(lèi)推,子結(jié)點(diǎn)的層次總比父結(jié)點(diǎn)多一層。,,? 樹(shù)的深度:樹(shù)中結(jié)點(diǎn)所在的最大層次。,,? 有序樹(shù)和無(wú)序樹(shù):將樹(shù)中各結(jié)點(diǎn)的子樹(shù)看成自左向右有序的,那么稱(chēng)該樹(shù)為有序樹(shù)。否那么稱(chēng)為無(wú)序樹(shù)。,,? 森林:由零棵或有限棵互不相交的樹(shù)組成的集合。,,二叉樹(shù)的定義,,,二叉樹(shù)可以是空
3、樹(shù),當(dāng)二叉樹(shù)非空時(shí),其中有一個(gè)根元素,余下的元素組成兩個(gè)互不相交二叉樹(shù),分別稱(chēng)為根的左子樹(shù)和右子樹(shù)。二叉樹(shù)是有序樹(shù),也就是說(shuō)任意結(jié)點(diǎn)的左、右子樹(shù)不可交換。而一般樹(shù)的子樹(shù)間是無(wú)序的。,,,特殊形式的二叉樹(shù),滿二叉樹(shù):當(dāng)二叉樹(shù)每個(gè)分支結(jié)點(diǎn)的度都是2,且所有葉子結(jié)點(diǎn)都在同一層上,那么稱(chēng)其為滿二叉樹(shù)。完全二叉樹(shù):從滿二叉樹(shù)葉子所在的層次中,自右向左連續(xù)刪除假設(shè)干葉子所得到的二叉樹(shù)被稱(chēng)為完全二叉樹(shù)。滿二叉樹(shù)可看作是完全二叉樹(shù)的一個(gè)特例。,A,F,C,滿二叉樹(shù),G,D,B,E,A,C,完全二叉樹(shù),D,B,E,,二叉樹(shù)有以下重要性質(zhì):,〔1〕在二叉樹(shù)的第k層上至多有2k-1個(gè)結(jié)點(diǎn)(k≥1),,證明:當(dāng)k=
4、1時(shí),命題顯然成立。假定k=n-1時(shí)命題成立,那么第n層〔k=n〕的結(jié)點(diǎn)數(shù)最多是第n-1層的2倍,所以第n層最多有2*2n-2=2n-1個(gè)結(jié)點(diǎn)。命題成立。,,,〔2〕深度為h的二叉樹(shù)上至多含2h-1個(gè)結(jié)點(diǎn)(h≥1),,證明:根據(jù)性質(zhì)1容易知道深度為h的二叉樹(shù)最多有20+21+…+2h-1個(gè)結(jié)點(diǎn),即最多有2h-1個(gè)結(jié)點(diǎn)。,,〔3〕包含n(n>0)個(gè)結(jié)點(diǎn)的二叉樹(shù)總的分支數(shù)為n-1,,證明:二叉樹(shù)中除了根結(jié)點(diǎn)之外每個(gè)元素有且只有一個(gè)父結(jié)點(diǎn)。在所有子結(jié)點(diǎn)與父結(jié)點(diǎn)間有且只有一個(gè)分支,即除根外每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)分支,因此二叉樹(shù)總的分支數(shù)為n-1。,,,,〔4〕任何一棵二叉樹(shù),假設(shè)含有n0個(gè)葉子結(jié)點(diǎn)、n2個(gè)度
5、為2的結(jié)點(diǎn),那么必存在關(guān)系式n0=n2+1,,證明:設(shè)二叉樹(shù)含有n1個(gè)度為1的結(jié)點(diǎn),那么二叉樹(shù)結(jié)點(diǎn)總數(shù)顯然為:,,n0 + n1 + n2 〔2-2〕,,再看看樹(shù)的分支數(shù),n2個(gè)度為2的結(jié)點(diǎn)必然有2n2個(gè)分支,n1個(gè)度為1的結(jié)點(diǎn)必然有n1個(gè)分支。又因?yàn)槌Y(jié)點(diǎn)外,其余每個(gè)結(jié)點(diǎn)都有一個(gè)分支進(jìn)入。因此二叉樹(shù)的分支數(shù)加1就是結(jié)點(diǎn)總數(shù)。即結(jié)點(diǎn)總數(shù)為:,,1 + n1 + 2n2 〔2-3〕,,由〔2-2〕〔2-3〕兩式可知:n0=n2+1,,〔5〕具有n個(gè)結(jié)點(diǎn)的完全二叉樹(shù)的深度為[log2(n)]+1,,證明:假設(shè)二叉樹(shù)的深度為h,那么必有2h-1-1 6、也就是,,2h-1≤n<2h,從而得到h-1≤log2(n) 7、emType data;,,struct BinTreeNode *leftChild, *rightChild;,,};,,,,這里leftChild和rightChild分別為某一結(jié)點(diǎn)指向其左孩子和右孩子的指針。對(duì)于葉子結(jié)點(diǎn)或一個(gè)新生成的結(jié)點(diǎn)而言,其左孩子和右孩子指針都應(yīng)為空值,。,,二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ),A,,,B,,,C,∧,∧,D,∧,∧,E,∧,∧,利用這種結(jié)點(diǎn)形式存儲(chǔ)的樹(shù)一般稱(chēng)為二叉鏈表。,,從根結(jié)點(diǎn)出發(fā),可以訪問(wèn)二叉樹(shù)的任何結(jié)點(diǎn)。為了能夠訪問(wèn)二叉樹(shù),必須保存指向根結(jié)點(diǎn)的指針。這和單鏈表必須保存頭指針的道理一樣。,,二叉樹(shù)的常用算法包括:獲取根結(jié)點(diǎn)指針、判斷樹(shù)是否為空、插入或刪除結(jié)點(diǎn) 8、、插入或刪除子樹(shù)、二叉樹(shù)遍歷等。,,二叉樹(shù)類(lèi)可描述如下:,,class BinTree {,,public:,,BinTreeNode *root; //定義根結(jié)點(diǎn)指針,,BinTree() { root=NULL; } //構(gòu)造函數(shù),定義空樹(shù),,//判斷樹(shù)是否為空,,bool IsEmpty() { return root==NULL; },,//在葉子結(jié)點(diǎn)p下插入左子樹(shù)q,,void Ins_lchild(BinTreeNode *p,BinTreeNode *q) {,,p->leftChild=q;,,},,( 接下頁(yè)…… ),,( 接上頁(yè) ),,//在葉子結(jié)點(diǎn)p下插入右子樹(shù) 9、q,,void Ins_rchild(BinTreeNode *p,BinTreeNode *q) {,,p->rightChild=q;,,},,//刪除結(jié)點(diǎn)p的左子樹(shù),,void Del_lchild(BinTreeNode *p) { p->leftChild=NULL; },,//刪除結(jié)點(diǎn)p的右子樹(shù),,void Del_rchild(BinTreeNode *p) { p->rightChild=NULL; },,void PreOrder(BinTreeNode *t); //先序遍歷,,void InOrder(BinTreeNode *t); //中序遍歷,,void Post 10、Order(BinTreeNode *t); //后序遍歷,,};,,二叉樹(shù)的遍歷,,,二叉樹(shù)遍歷是只按照某種順序訪問(wèn)二叉樹(shù)的每個(gè)結(jié)點(diǎn),并且每個(gè)結(jié)點(diǎn)只被訪問(wèn)一次。這是二叉樹(shù)中經(jīng)常用到的操作,有三種主要的遍歷算法——先序遍歷、中序遍歷和后序遍歷。,,,〔1〕先序遍歷,,對(duì)一顆非空二叉樹(shù)進(jìn)行先序遍歷時(shí),首先訪問(wèn)根結(jié)點(diǎn),然后按先序遍歷方式訪問(wèn)左子樹(shù),最后按先序遍歷方式訪問(wèn)右子樹(shù)。先序遍歷算法如下:,,void BinTree::PreOrder(BinTreeNode *t),,{,,if (t),,{,,Visit( t ); //訪問(wèn)根結(jié)點(diǎn),,PreOrder( t->leftCh 11、ild ); //遍歷左子樹(shù),,PreOrder( t->rightChild ); //遍歷右子樹(shù),,},,},,〔2〕中序遍歷,,對(duì)一顆非空二叉樹(shù)進(jìn)行中序遍歷時(shí),首先按中序遍歷方式訪問(wèn)左子樹(shù),然后訪問(wèn)根結(jié)點(diǎn),最后按中序遍歷方式訪問(wèn)右子樹(shù)。中序遍歷算法如下:,,void BinTree::InOrder(BinTreeNode *t),,{,,if(t) {,,InOrder( t->leftChild ); // 遍歷左子樹(shù),,Visit( t ); // 訪問(wèn)根節(jié)點(diǎn),,InOrder( t->rightChild ); // 遍歷右子樹(shù),,},,},,〔3〕后序遍 12、歷,,對(duì)一顆非空二叉樹(shù)進(jìn)行中序遍歷時(shí),首先按后序遍歷方式訪問(wèn)左子樹(shù),然后按后序遍歷方式訪問(wèn)右子樹(shù),最后訪問(wèn)根結(jié)點(diǎn)。后序遍歷算法如下:,,void BinTree::PostOrder(BinTreeNode *t),,{,,if(t) {,,PostOrder( t->leftChild ); //遍歷左子樹(shù),,PostOrder( t->rightChild ); //遍歷右子樹(shù),,Visit( t ); //訪問(wèn)根節(jié)點(diǎn),,},,},,圖的根本概念,,,圖,的來(lái),源,:,通信網(wǎng)、交通網(wǎng),等,,它表現(xiàn)了數(shù)據(jù)對(duì)象間多對(duì)多的聯(lián)系。在該結(jié)構(gòu)中,數(shù)據(jù)元素一般稱(chēng)為頂點(diǎn),。,,圖的 13、定義:,,,圖是由頂點(diǎn)集合及頂點(diǎn)間的關(guān)系集合組成的一種數(shù)據(jù)結(jié)構(gòu)。一般記作Graph=( V, E )。其中V是頂點(diǎn)的有限非空集合;E是頂點(diǎn)之間關(guān)系的有限集合。,,以下是圖的相關(guān)術(shù)語(yǔ),,? 邊:假設(shè)頂點(diǎn)x到y(tǒng)是的一條雙向通路,那么稱(chēng)為邊,用(x,y)表示。,,? ?。杭僭O(shè)頂點(diǎn)x到y(tǒng)是的一條單向通路,那么稱(chēng)為弧,用表示。,,? 鄰接點(diǎn):如果(x,y)是圖中的一條邊,那么稱(chēng)x與y互為鄰接點(diǎn);如果是圖中的一條弧,那么稱(chēng)y為x的鄰接點(diǎn)。,,? 頂點(diǎn)的度:一個(gè)頂點(diǎn)v的度是與它相關(guān)聯(lián)的邊的條數(shù)。,,? 無(wú)向圖:假設(shè)圖是由一些頂點(diǎn)和邊構(gòu)成那么稱(chēng)之為無(wú)向圖。,,? 有向圖:假設(shè)圖是由一些頂點(diǎn)和弧構(gòu)成那么稱(chēng)之為有 14、向圖。,,? 權(quán):某些圖的邊或弧具有與它相關(guān)的數(shù),稱(chēng)之為權(quán)。這種帶權(quán)圖叫做網(wǎng)絡(luò)。,,0,,1,,3,,2,5,2,8,1,3,,,,,,0,1,2,3,4,,1,,0,,2,,3,,4,(a)無(wú)向圖 (b)有向圖 (c)網(wǎng)絡(luò),,,? 路徑:在圖中,假設(shè)從頂點(diǎn)vi出發(fā),沿一些邊或弧,經(jīng)過(guò)頂點(diǎn)vp1,vp2,…,vpm,到達(dá)頂點(diǎn)vj。那么稱(chēng)頂點(diǎn)序列( vi,vp1,vp2,…,vpm,vj )為從頂點(diǎn)vi到頂點(diǎn)vj的路徑。假設(shè)路徑上各頂點(diǎn)均不互相重復(fù),那么稱(chēng)這樣的路徑為簡(jiǎn)單路徑。,,? 路徑長(zhǎng)度:非帶權(quán)圖的路徑長(zhǎng)度是指此路徑上邊或弧的條數(shù),帶權(quán)圖的路徑長(zhǎng) 15、度是指路徑上各邊或弧的權(quán)之和。,,? 子圖:設(shè)有兩個(gè)圖G=(V,E)和G′=(V′,E′)。假設(shè)V包含V′且E包含E′,那么稱(chēng)圖G′是圖G的子圖。,,? 連通圖:在無(wú)向圖中,假設(shè)從頂點(diǎn)vi到頂點(diǎn)vj有路徑,那么稱(chēng)頂點(diǎn)vi與vj是連通的。如果圖中任意一對(duì)頂點(diǎn)都是連通的,那么稱(chēng)此圖是連通圖。,,? 強(qiáng)連通圖:在有向圖中,假設(shè)對(duì)于每一對(duì)頂點(diǎn)vi和vj,都存在從vi到vj和從vj到vi的路徑,那么稱(chēng)此圖是強(qiáng)連通圖。,,?,生成樹(shù),:一個(gè)連通圖的生成樹(shù)是它的極小連通子圖。即包含了所有頂點(diǎn)以及最少的邊或弧的子圖,并且這些邊或弧使得任意兩頂點(diǎn)相互連通。在含有n個(gè)頂點(diǎn)的無(wú)向圖中,生成樹(shù)一定有n-1條邊,且生成 16、樹(shù)的形式可能有多個(gè)。,,,圖的存儲(chǔ)方式,,1.鄰接矩陣,,利用數(shù)組實(shí)現(xiàn)的。它利用一維數(shù)組存儲(chǔ)頂點(diǎn)信息,利用二維數(shù)組存儲(chǔ)頂點(diǎn)間邊或弧的信息。此二維數(shù)組又稱(chēng)鄰接矩陣。,,,鄰接矩陣 存儲(chǔ)方式可用于無(wú)向圖或有向圖。無(wú)向圖的鄰接矩陣是對(duì)稱(chēng)的,有向圖的鄰接矩陣可能是不對(duì)稱(chēng)的。,,圖的鄰接矩陣存儲(chǔ)可以用下面的結(jié)構(gòu)體表示:,,#define MAX_NUM 100 // 最大頂點(diǎn)個(gè)數(shù),,typedef struct {,,VertexType vexs[MAX_NUM]; //頂點(diǎn)信息數(shù)組,,ArcType Matrix[MAX_NUM][MAX_NUM]; //鄰接矩陣,,int vexnum, 17、arcnum; //圖的實(shí)際頂點(diǎn)數(shù)和弧(邊)數(shù),,int kind; //圖的種類(lèi)標(biāo)志, 1—有向圖, //2—有向網(wǎng),3—無(wú)向圖,4—無(wú)向網(wǎng),,} MGraph;,,其中ArcType是頂點(diǎn)關(guān)系的數(shù)據(jù)類(lèi)型。VertexType是頂點(diǎn)的數(shù)據(jù)類(lèi)型。MAX_NUM表示最多可存的頂點(diǎn)數(shù)。,,,假設(shè)無(wú)向圖G=(V,E)是一個(gè)有n個(gè)頂點(diǎn)的圖,那么圖的鄰接矩陣A是n階方陣,其內(nèi)容如下:,其中W(i, j)是與邊或弧相關(guān)的權(quán)。,,,對(duì)于含權(quán)的網(wǎng)絡(luò)而言,其鄰接矩陣可定義如下:,,,0,,1,,3,,2,5,2,8,1,3,,,,,,0,1,2,3,4,,1,,0,,2,,3,,4, 18、(a)無(wú)向圖 (b)有向圖 (c)網(wǎng)絡(luò),,,,0,,1,,3,2,,4,,,0,,1,,3,2,,4,,0,,1,,2,,3,,4,,0,,1,,2,,3,,4,,0,,1,,2,,3,,,0,,1,,3,2,(a)無(wú)向圖鄰接矩陣 (b)有向圖鄰接矩陣 (c)網(wǎng)絡(luò)鄰接矩陣,,,2.鄰接表,,鄰接表存儲(chǔ)形式是一種鏈表與數(shù)組結(jié)合的存儲(chǔ)形式。在鄰接表中有兩種結(jié)點(diǎn),一種是頭結(jié)點(diǎn),另一種是表結(jié)點(diǎn)。,,〔1〕頭結(jié)點(diǎn)都存儲(chǔ)一個(gè)頂點(diǎn)的詳細(xì)信息,為了便于管理,所有頭結(jié)點(diǎn)都存放在一個(gè)數(shù)組中。,,〔2〕對(duì)于某個(gè)頂點(diǎn)而言,需要將所有與它鄰接的頂點(diǎn)存 19、儲(chǔ)為表結(jié)點(diǎn)形式,并將它們鏈接成單鏈表,這個(gè)單鏈表就稱(chēng)為該頂點(diǎn)的鄰接表。,,〔3〕還要在每個(gè)頂點(diǎn)的頭結(jié)點(diǎn)中存儲(chǔ)指向其鄰接表首元結(jié)點(diǎn)的指針。,,,,鄰接表的結(jié)點(diǎn)結(jié)構(gòu),(c)網(wǎng)絡(luò)的表結(jié)點(diǎn),info,next,adjvex,next,adjvex,first,data,(,a)頭結(jié)點(diǎn),(b)無(wú)權(quán)圖的表結(jié)點(diǎn),,,,圖的鄰接表描述,,#define MAX_NUM 100 //頂點(diǎn)最大允許數(shù)量,,struct AdjNode { //表結(jié)點(diǎn)類(lèi)型定義,,int adjvex; //該鄰接點(diǎn)在數(shù)組中的位置,,InfoType info; //該弧相關(guān)信息,,struct AdjNode *next; 20、 //指向下一鄰接點(diǎn)的指針,,};,,typedef struct VNode { //頭結(jié)點(diǎn)類(lèi)型定義,,VertexType data; //頂點(diǎn)信息,,AdjNode *first; //指向鄰接表第一個(gè)結(jié)點(diǎn),,} AdjList[MAX_NUM];,,typedef struct {,,AdjList headArray; //頭結(jié)點(diǎn)數(shù)組,,int vexnum, arcnum; //圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù),,int kind; //圖的種類(lèi)標(biāo)志,,} ALGraph;,,,其中AdjNode為表結(jié)點(diǎn),InfoType為與邊相關(guān)信息的數(shù)據(jù)類(lèi)型〔可以包括權(quán)等〕。VN 21、ode為頭結(jié)點(diǎn),VertexType是頂點(diǎn)的數(shù)據(jù)類(lèi)型,MAX_NUM表示最多可以存放的頂點(diǎn)個(gè)數(shù)。,,圖的遍歷方法,,1.深度優(yōu)先搜索,,假定從圖中某個(gè)頂點(diǎn)v 出發(fā)進(jìn)行遍歷,那么首先訪問(wèn)此頂點(diǎn),然后依次從v的各個(gè)未被訪問(wèn)的鄰接點(diǎn)出發(fā),執(zhí)行深度優(yōu)先搜索遍歷,直至圖中所有和v有路徑相通的頂點(diǎn)都被訪問(wèn)到,假設(shè)此時(shí)圖中尚有頂點(diǎn)未被訪問(wèn),那么另選圖中一個(gè)未曾被訪問(wèn)的頂點(diǎn)作起始點(diǎn),重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問(wèn)到為止。,,用非遞歸的方式描述如下:首先訪問(wèn)圖中某一起始頂點(diǎn)v0,由v0出發(fā),訪問(wèn)它的任一鄰接點(diǎn)vi;再?gòu)膙i出發(fā),訪問(wèn)與vi鄰接但還沒(méi)有訪問(wèn)過(guò)的頂點(diǎn)vj;如此進(jìn)行下去,直至到達(dá)某一頂點(diǎn)vt后 22、,發(fā)現(xiàn)vt所有的鄰接頂點(diǎn)都被訪問(wèn)過(guò)。于是從vt退到前一次剛訪問(wèn)過(guò)的頂點(diǎn)vs,看看vs是否還有其他沒(méi)有被訪問(wèn)的鄰接頂點(diǎn)。如果有那么訪問(wèn)此頂點(diǎn),之后再?gòu)拇隧旤c(diǎn)出發(fā),進(jìn)行與前述類(lèi)似的訪問(wèn);如果沒(méi)有,就再退回一步進(jìn)行搜索。重復(fù)上述過(guò)程,直到連通圖中所有頂點(diǎn)都被訪問(wèn)過(guò)為止。,,,bool visited[MAX]; //頂點(diǎn)訪問(wèn)標(biāo)志數(shù)組,,//從第v個(gè)頂點(diǎn)出發(fā)遞歸地深度優(yōu)先遍歷圖G的,,//某個(gè)連通子圖,,void DFS(ALGraph G, int v),,{,,AdjNode *p;,,visited[v] = TRUE;,,cout< 23、// 對(duì)v的尚未訪問(wèn)的鄰接頂點(diǎn)w遞歸調(diào)用DFS,,for(p=G.headArray[v].first; p!=NULL; p=p->next ),,if(!visited[p->adjvex]) DFS(G,p->adjvex);,,},,2.廣度優(yōu)先搜索,,假定從圖中某個(gè)頂點(diǎn)v 出發(fā)進(jìn)行遍歷,那么首先訪問(wèn)此頂點(diǎn),再依次訪問(wèn)v的所有未被訪問(wèn)過(guò)的鄰接點(diǎn),然后按這些頂點(diǎn)被訪問(wèn)的先后次序依次訪問(wèn)它們的鄰接點(diǎn),直至圖中所有和v有路徑相通的頂點(diǎn)都被訪問(wèn)到。假設(shè)此時(shí)圖中尚有頂點(diǎn)未被訪問(wèn),那么另選圖中一個(gè)未曾被訪問(wèn)的頂點(diǎn)作起始點(diǎn),重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問(wèn)到為止。,,以圖(a)為例,假設(shè)從A出 24、發(fā)進(jìn)行廣度優(yōu)先搜索,首先訪問(wèn)A,然后依次訪問(wèn)A的各個(gè)未被訪問(wèn)過(guò)的鄰接頂點(diǎn)B、E、D,再分別從B、E、D出發(fā),訪問(wèn)它們的所有還未被訪問(wèn)過(guò)的鄰接頂點(diǎn)C、F、G。,,,為了實(shí)現(xiàn)逐層訪問(wèn),廣度優(yōu)先搜索算法中使用了一個(gè)隊(duì)列,以記憶正在訪問(wèn)的這一層和上一層的頂點(diǎn),以便于向下一層訪問(wèn),。,,A B E D C F G,,,哈夫曼樹(shù)和哈夫曼編碼,,設(shè)計(jì)二進(jìn)制編碼方案時(shí)要考慮不同字符的使用頻率,使用頻率高的字符編碼應(yīng)當(dāng)盡量短一些。但是僅僅考慮使用頻率也是不夠的。,,例如:某個(gè)文件由A、B、C、D四個(gè)字符組成,其中A用得最多,C次之。,,方案1: A — 1 C — 0 B — 10 D — 25、 11,,那么象1100這樣的二進(jìn)制數(shù)據(jù)具有二義性,既代表AACC,又可代表ABC,還可代表DCC。,,為了不使二進(jìn)制編碼具有二義性,每個(gè)字符編碼都不能與其他字符編碼的前面假設(shè)干位重合。,,B,D,,C,A,,0,0,1,1,A,B,0,1,D,,C,0,0,1,1,,(a)有二義性的編碼系統(tǒng)對(duì)應(yīng)的二叉樹(shù) (b)無(wú)二義性的編碼系統(tǒng)對(duì)應(yīng)的二叉樹(shù),,任何一個(gè)無(wú)二義性的二進(jìn)制字符編碼系統(tǒng)必然與這樣一顆二叉樹(shù)對(duì)應(yīng),該二叉樹(shù)的葉子結(jié)點(diǎn)對(duì)應(yīng)著所有需要轉(zhuǎn)換的字符,并且按照左分支代表0、右分支代表1的規(guī)那么,從根到該葉子的分支對(duì)應(yīng)的0、1序列就構(gòu)成葉子對(duì)應(yīng)字符的二進(jìn)制編碼。,可以利用二叉樹(shù)分析字符編碼問(wèn) 26、題。假設(shè)二叉樹(shù)中的左分支代表0,右分支代表1,那么不管字符是采用何種0、1組合形式構(gòu)成的編碼,它必然對(duì)應(yīng)某個(gè)二叉樹(shù)中一個(gè)結(jié)點(diǎn)。,,1〕假設(shè)每個(gè)字符使用頻率是相等的,那么不同字符的編碼長(zhǎng)度之和就可衡量編碼系統(tǒng)的優(yōu)劣。而某個(gè)字符編碼的長(zhǎng)度就是對(duì)應(yīng)的二叉樹(shù)中根到某個(gè)葉子的分支的數(shù)目〔又稱(chēng)為根到葉子的路徑長(zhǎng)度〕。,,,2〕如果每個(gè)字符使用頻率不相等,那么將不同字符的編碼長(zhǎng)度乘上其使用權(quán)值再加起來(lái),也可衡量編碼系統(tǒng)的優(yōu)劣。也就是用根到每個(gè)葉子的路徑長(zhǎng)度乘以葉子對(duì)應(yīng)字符的使用權(quán)值再加起來(lái)作為衡量標(biāo)準(zhǔn),顯然這種加權(quán)和除以字符總數(shù)就是每個(gè)字符的加權(quán)平均編碼長(zhǎng)度。,,二叉樹(shù)帶權(quán)路徑長(zhǎng)度,:設(shè)二叉樹(shù)有n個(gè)帶有權(quán)值 27、的葉子結(jié)點(diǎn),每個(gè)葉子到根的路徑長(zhǎng)度乘以其權(quán)值之和稱(chēng)為二叉樹(shù)帶權(quán)路徑長(zhǎng)度。一般記作:,,,,,其中,,w,i,為第,i,個(gè)葉子的權(quán)重,,l,i,為第,i,個(gè)葉子到根的路徑長(zhǎng)度。,,哈夫曼樹(shù),:以一些帶有固定權(quán)值的結(jié)點(diǎn)作為葉子所構(gòu)造的,具有,最小,帶權(quán)路徑長(zhǎng)度的二叉樹(shù)稱(chēng)為哈夫曼樹(shù),。,,假定有n個(gè)具有權(quán)值的結(jié)點(diǎn),那么哈夫曼樹(shù)的構(gòu)造算法如下:,,①根據(jù)給定的n個(gè)權(quán)值{w1, w2, …, wn},構(gòu)造n棵二叉樹(shù)的集合F={T1, T2, …, Tn},其中每棵二叉樹(shù)中均只含一個(gè)帶權(quán)值為wi的根結(jié)點(diǎn),其左、右子樹(shù)為空樹(shù);,,②在F中選取其根結(jié)點(diǎn)的權(quán)值為最小的兩棵二叉樹(shù),分別作為左、右子樹(shù)構(gòu)造一棵新的二 28、叉樹(shù),并置這棵新的二叉樹(shù)根結(jié)點(diǎn)的權(quán)值為其左、右子樹(shù)根結(jié)點(diǎn)的權(quán)值之和;,,③從F中刪去這兩棵樹(shù),同時(shí)參加剛生成的新樹(shù);,,④重復(fù)⑵和⑶兩步,直至F中只含一棵樹(shù)為止。,,假定有一段報(bào)文由a、b、c、d四個(gè)字符構(gòu)成,它們的使用頻率比為6﹕4﹕2﹕1,那么用a、b、c、d作為葉子結(jié)點(diǎn)構(gòu)造哈夫曼樹(shù)的過(guò)程如下圖。,假設(shè)二叉樹(shù)中的左分支代表0,右分支代表1,那么a、b、c、d的哈夫曼編碼分別為0、10、110、111。,,【,例2-5,】,假定編碼系統(tǒng)中有五個(gè)字符X、S、D、E、A,它們的使用頻率比為2﹕9﹕5﹕7﹕8,以這些頻率值作葉子的權(quán)構(gòu)造哈夫曼樹(shù),并輸出哈夫曼編碼。,,,最小生成樹(shù),,考慮一個(gè)通信網(wǎng) 29、的建設(shè)問(wèn)題。假定在多個(gè)城市間建立通信網(wǎng)絡(luò),將城市作為頂點(diǎn),將所有可能的通信線路作為邊,就構(gòu)成一個(gè)圖結(jié)構(gòu)。再以通信線路的造價(jià)作為邊的權(quán)重就構(gòu)成一個(gè)無(wú)向網(wǎng)絡(luò)。在保證通信功能的前提下,為了使總造價(jià)最小,需要尋找網(wǎng)絡(luò)中權(quán)重之和最小的連通子圖,。,,,〔1〕普里姆算法,,假定G={ V, E }為連通網(wǎng)絡(luò),其中V為頂點(diǎn)集合,E為帶權(quán)邊集合。設(shè)置生成樹(shù)頂點(diǎn)集合U,最初它只包含某一個(gè)頂點(diǎn)。設(shè)置生成樹(shù)邊集合T,最初為空集。而后考察這樣的邊,它的一個(gè)頂點(diǎn)u∈U,另一個(gè)頂點(diǎn)v∈V-U,每次從所有這樣的邊中選擇權(quán)值最小的邊(u, v)參加集合T,并把頂點(diǎn)v參加到集合U中。如此不斷重復(fù),直到所有頂點(diǎn)都參加到集合U中為 30、止。,,,,〔2〕克魯斯卡爾算法,,假定G={ V, E }為連通網(wǎng)絡(luò),其中V為頂點(diǎn)集合,E為帶權(quán)邊集合。先構(gòu)造一個(gè)包含所有頂點(diǎn),沒(méi)有邊的非連通圖T={ V, {} },圖中每個(gè)頂點(diǎn)自成一個(gè)連通分量。當(dāng)在E中選到一條具有最小權(quán)值的邊時(shí),假設(shè)該邊的兩個(gè)頂點(diǎn)落在T的不同的連通分量上,那么將此邊參加到T中;否那么將此邊舍去,重新選擇一條權(quán)值最小的邊。如此重復(fù)下去,直到所有頂點(diǎn)在同一個(gè)連通分量上為止。,,,K)N@3>7^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF%I(M=27^blfpisQwUAYE!H*L+1~5;8
cmgqOuSxVBZF%J)M=27^blfpj 31、tQwUAYE$I*L+1~5;9 cmgqOuSyVBZF%J)N@26:akeoisPvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=2~5;9 dnhqOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmfpjtRxVBZE$I(M=27^bkeoisQwUAXD!H*L+1~4.8
cmgqjtRxVBZF%I(M=27^blfoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J)M=27^blfpjsQwUAYE$I*L+1~5;9
cmgqOuSyVBZF%J)N=27^bleoisQwUAYD!H*L+1~5.8
32、cmgqOtRxVBZF%J(M=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)N=27^blfpjtQwUAYE$I(L+1~5;9 cmgqOuSyWBZF%J)N@26:akeoisQvTzXD!H*K-0`4.8
clfpjtRxVBYE$I(M=2~5;9 dnhrOuSyWC#G%J)N@3>7^akeoisQwUzXD!H*L+0`4.8
cmgpjtRxVBZE$I(M=27^bleoisQwUAXD!H*L+1~4.8
cmgqOtRxVBZF%I(M=27^blfpisQwUAYE!H*L+1~5;8
cmgqOuRxVBSxVBZF%J 33、)M=27^blfpjtQwUAYE$I*L+1~5;9 cmgqOuSyVBZF%J)N@26:akeoisPvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=2~5;9 dnhqOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmfpjtRxVBZE$I(M=27^bkeoisQwUAXD!H*L+1~4.8
cmgqjtRx$I*L+1~5;9
cmgqOuSyVBZF%J)N@27^blfpjsQw0`4.8^blfpjtRxUA%I(M=27^blfoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J)M=27^blfp 34、jsQwUAYE$I*L+1~5;9
chnhrOuSyWC#G&J)N@3>7^akeoisQwUzXD!H*L+1`4.8
cmgpjtRxVBZF$I(M=27^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF%J(M=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)N=27^blfpjtQwUAYE$I(L+1~5;9 cmgqOuSyWBZF%J)N@27^blfoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J(M=27^blfpjsQwUAYE$H*L+1~5;9
cmgqOuSyVBZF%J)N=27^b 35、leoisQwUAXD!H*L+1~4.8
cmgqOuSxVBZF%J)M=27^bkeoisQwUzXD!H*L+1`4.8
cmgqjtRxVBZF$I(M=26:akeoisQvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=M=2~5;9 dnhrOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmgpjtRxVBZE$I(M=27^bleoisQwUAXD!H*L+1~4.8
cmgqjtRxVBZF%I(M=27^blfoisQwUAYE!H*L+1~5;8
cmOuSyWC#F%J)N@3>7:akeoisQvTzXD!H*L-0 36、`4.8
cmfpjtRxVBYE$I(M=27^bkeoisQwUzXD!H*L+1`4.8
cmgpjtRxVBZF$I(M=27^bleoisQwUAYD!H*L+1~5.8
cmgqOtRxVBZF%J(M=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)N=27^blfpjtQwUAYE$I(L+1~5;9 cmgqOuSyWBZF%J)N@26:aoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J(M=27^blfpjsQwUAYE$H*L+1~5;9
cmgqOuSyVBZF%J)N=27:akeoisQvTzXD!H*L-0` 37、4.8
cmfpjtRxVBYE$I(M=27^bkeoisQwUzXD!H*L+1`4.8
cmgpjtRxVBZF$I(M=27^bleoisQwUAYD!HM+1~5;9 dngqOuSyWCZF%J)N@3>6:akeoisPvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=2~5;9 dnhqOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmfpjtRxVBZE$I(M=27^bkeoisQwUAXD!H*L+1~4.8
cmgqjtRxVBZF%I(M=27^blfoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J 38、)M=27^blfpjsQwUAYI(M=2~5;9 dnhrOuSyWC#G&J)N@3>7^akeoisQwUzXD!H*L+0`4.8
cmgpjtRxVBZF$I(M=27^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF%I(M=27^blfpisQwUAYE!H*L+1~5;8
cmgqOuSxVBZF%J)M=27^blfpjtQwUAYE$I*L+1~5;9 cmgqOuSyVBZF%J)N@27^blfoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J)M=27^blfpjsQwUAYE$I*L+1~5;9
cmgqOuSyVBZF%J 39、)N=27^bleoisQwUAYD!H*L+1~4.8
cmgqOWC#G&K-N@3>7^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF%J(M=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)M=27^blfpisQwUAYE$H*L+1~5;9
cmgqOuSxVBZF%J)N=26:akeoisQvTzXD!H*L-5;8
cmgqOuRxVBZF%J)M=27^blfpjsQwUAYE$I*L+1~5;9
cmgqOuSyVBZF%J)N@27:akeoisQwTzXD!*L+1~5;8
cmgqOuSxVBZF%J)M=2 40、7^blfpjtQwUAYE$I*L+1~5;9 cmgqOuSyWBZF%J)N@26:akeoisQvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=2~5;9 dnhrOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmgpj3>7^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF%I(M=27^blfpisQwUAYE!H*L+1~5;8
cmgqOuSxVBZF%J)M=27^blfpjtQwUAYE$I*L+1~5;9 cmgqOuSyVBZF%J)N@26:akeoisPvTzXD!H*K-0`4.8
clfp 41、jtRxVAYE$I(M=2~5;9 dnhqOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmfpjtRxVBZE$I(M=27^bkeoisQwUAXD!L+1~5;9 cmgqOuSyWBZF%J)N@36:akeoisQvTzXD!H*L-0`4.8
clfpjtRxVBYE$I(M=2~5;9 dnhrOuSyWC#G&J)N@3>7^akeoisQwUzXD!H*L+0`4.8
cmgOuSyVBZF%J)N=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)M=27^blfpjtQwUAYE$I*L+1~5;9 c 42、mgqOuSyWBZF%J)N@26:akeoisQvTzXD!H*K-0`4.8
clfpjtRxVpjsQwUAYE$H*L+1~5;dnhrOuSyWC#G%J)N@3>7^akeoisQwUzXD!H*L+0`4.8
cmgpjtRxVBZE$I(M=27^bleoisQwUAXD!H*L+1~4.8
cmgqOtRxVBZF%I(M=27^blfpisQwUAYE!H*L+1~5;8
cmgqOSyWC#F%J)N@3>7:akeoisQwTzXD!H*L-0`4.8
cmfpjtRxVBYE$I(M=27^bleoisQwUAYD!H*L+1~5.8
cmgqOtRxVBZF%J( 43、M=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)N=27^blfpjtQBZE$I(M=27^bkeoisQwUAXD!H*L+1`4.8
cmgqjtRxVBZF%I(M=27^blfoisQwUAYE!H*L+1~5.8
cmgqOuRxVBZF%J(M=2qjtRxVBZF%I(M=27^blfoisQwUAYE!H*L+1~5;8
cmgqOuRxVBZF%J)M=27^blfpisQwUAYE!H*L+1~5;8
cmOuSyWC#F%J)N@3>7:akeoisQwTzXD!H*L-0`4.8
cmfpjtRxVBYE$I(M=27^bkeoO 44、uSxVBZF%J)N=26:akeois%J)N@3uSyWC#G&J)N@3>7^akeoisQwUzXD!H*L+0`4.8
cmgpjtRxVBZF$I(M=27^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF%I(M=27^blfpisQwUAYE!H*L+1~9 dnhqOuSyWC#G%J)N@3>7:akeoisQwTzXD!H*L-0`4.8
cmfpjtRxVBZE$I(M=27^bkeoisQwUAXD!H*L+1`4.8
cmgqjtRxVBZF$I(M=27^blfoisQwUAYD!H*+1~5;9 dngqOuSyWCZF%J)N@3>6: 45、akeoisQvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=2~5;9 dnhrOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmgpjtRxVB%J)N=27:akeoisQvTzXD!H*L-0`4.8
clfpjtRxVBYE$)M=27^blfpjsQwUAYE$I*L+1~5;9 cmgqOuSyVBZF%J)N@27^blfpjtQwUAYE$I*L+1~5 dnhrPuSyWC#G&J)N@3>7^bkeoisQwUAXD!H*L+1`4.8
cmgqjtRxVBZF$I(M=27^blfoisQwUAYD!H*L+1~5.8 46、
cmgqOuRxVBZF)N@3>6:akeoisQvTzXD!H*K-0`4.8
clfpjtRxVAYE$I(M=2~5;9 dnhrOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmgpjSxVBZF%J)N=27^bleoisQwUAXD!H*L+1~4.8
cmgqO27^blfpjsQwUAYE$I*L7^akeoisQwUzXD!H*L+1`4.8
cmgpjtRxVBZF$I(M=27^bleoisQwUAYD!H*L+1~4.8
cmgqOtRxVBZF)N@3>6:akeoisPvTzXD!H*K-0`4.8
blfpjtRxVAYE.8 47、^blfpjtRwUAYE$I(M+1~5;9 dngqOuSyWCZF%J)N@3>6:akeoisPvTzXD!H*K-0`4.8cmgqOtRxVBZF%J(M=27^blfpisQwUAYE$H*L+1~5;9
cmgqOuSxVBZF%J)N=27:akeoisQvTzXD!H*L-0`4.8
clfpjtRxVBYE$I(M=27^akeoisQwUzXD!H+1~5;9
cmgqOuSyVBZF%J)N@27^bleoisQwUAYD!H*L+1~5.8
cmgqOtRxVBZF%J(M=27^blfpisQwUAYE$H*L+1~5;8
cmgqOuSxVBZF%J)N=2XD 48、!G9 dngqOuSyWC#F%J)N@3>6:akeoisQvTzXD!H*K-0`4.8
clfpjtRxVBYE$I(M=2~5;9 dnhrOuSyWC#G%J)N@3>7^akeoisQwUz$H*L+1~5;9
cmgqOuSyVBZF%J)N=27^blfpisQwUAYE!H*L+1~5;8
cmgqOuSxVBZF%J)M=27^blfpjtQwUAYE$I*L+1~5;9 cmgqOuSyVBZF%J)N@27^blfoisQwUAYD!H*L+1~5.8
cmgqOtRxVBZF%J(M=27^blfpisQwUA$I(M=2~5;9 dnhqOuSyWC#G%J)N@3>7^akeoisQwTzXD!H*L+0`4.8
cmfpjtRxVBZE$I(M=27^bkeoisQwUAXD!H*L+1~4.8
cmgqjtRxVBZF%I(M=27:,,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 火力發(fā)電廠各設(shè)備的主要作用大全
- 3.高壓電工考試判斷練習(xí)題含答案
- 企業(yè)電氣防爆知識(shí)
- 13 低壓電工電工作業(yè)模擬考試題庫(kù)試卷含答案
- 電氣設(shè)備維修的十項(xiàng)原則
- 2.電氣電纜與直流模擬考試復(fù)習(xí)題含答案
- 電氣節(jié)能措施總結(jié)
- 2.電氣電機(jī)(一)模擬考試復(fù)習(xí)題含答案
- 接地電阻測(cè)量原理與測(cè)量方法
- 3.高壓電工作業(yè)模擬考試題庫(kù)試卷含答案
- 礦山維修電工安全技術(shù)操作規(guī)程
- 電工基礎(chǔ)口訣總結(jié)
- 3.某電廠值長(zhǎng)面試題含答案解析
- 電工基礎(chǔ)知識(shí)順口溜
- 配電系統(tǒng)詳解