數(shù)據(jù)結(jié)構(gòu)第六章圖練習(xí)題及答案詳細(xì)解析(精華版)_第1頁
數(shù)據(jù)結(jié)構(gòu)第六章圖練習(xí)題及答案詳細(xì)解析(精華版)_第2頁
數(shù)據(jù)結(jié)構(gòu)第六章圖練習(xí)題及答案詳細(xì)解析(精華版)_第3頁
數(shù)據(jù)結(jié)構(gòu)第六章圖練習(xí)題及答案詳細(xì)解析(精華版)_第4頁
數(shù)據(jù)結(jié)構(gòu)第六章圖練習(xí)題及答案詳細(xì)解析(精華版)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1.填空題(1)設(shè)無向圖G中頂點數(shù)為n,則圖G至少有()條邊,至多有()條邊;若G為有向圖,則至少有() 條邊,至多有()條邊。【解答】0, n(n-1)/2 , 0, n(n-1)【分析】圖的頂點集合是有窮非空的,而邊集可以是空集;邊數(shù)達(dá)到最多的圖稱為完全圖,在完全圖中,任意兩個頂點之間都存在邊。任何連通圖的連通分量只有一個,即是()。【解答】其自身圖的存儲結(jié)構(gòu)主要有兩種,分別是()和()?!窘獯稹苦徑泳仃?,鄰接表【分析】這是最常用的兩種存儲結(jié)構(gòu),此外,還有十字鏈表、鄰接多重表、邊集數(shù)組等。已知無向圖G的頂點數(shù)為n,邊數(shù)為e,其鄰接表表示的空間復(fù)雜度為()?!窘獯稹縊 (n+e)【分析】在無

2、向圖的鄰接表中,頂點表有n個結(jié)點,邊表有2e個結(jié)點,共有n+2e個結(jié)點,其空間復(fù)雜度為 O (n+2e)= O (n+e)。 已知一個有向圖的鄰接矩陣表示,計算第 j個頂點的入度的方法是()?!窘獯稹壳蟮趈列的所有元素之和有向圖G用鄰接矩陣Ann存儲,其第i行的所有元素之和等于頂點i的()?!窘獯稹砍龆?圖的深度優(yōu)先遍歷類似于樹的()遍歷,它所用到的數(shù)據(jù)結(jié)構(gòu)是();圖的廣度優(yōu)先遍歷類似于樹的()遍歷,它所用到的數(shù)據(jù)結(jié)構(gòu)是()?!窘獯稹壳靶?,棧,層序,隊列對于含有n個頂點e條邊的連通圖,利用 Prim算法求最小生成樹的時間復(fù)雜度為(),利用Kruskal算法求最小生成樹的時間復(fù)雜度為()?!窘獯?/p>

3、】O (n2) , O (elog2e)【分析】Prim算法采用鄰接矩陣做存儲結(jié)構(gòu),適合于求稠密圖的最小生成樹;Kruskal算法采用邊集數(shù)組做存儲結(jié)構(gòu),適合于求稀疏圖的最小生成樹。如果一個有向圖不存在(),則該圖的全部頂點可以排列成一個拓?fù)湫蛄小!窘獯稹炕芈罚?0)在一個有向圖中,若存在弧、,則在其拓?fù)湫蛄兄?,頂點 vi, vj, vk 的相對次序為()【解答】vi, vj, vk【分析】對由頂點vi, vj, vk組成的圖進(jìn)行拓?fù)渑判颉? .選擇題(1)在一個無向圖中,所有頂點的度數(shù)之和等于所有邊數(shù)的()倍。A 1/2 B 1 C 2 D 4【解答】C【分析】設(shè)無向圖中含有 n個頂點e條邊

4、,則on個頂點的強(qiáng)連通圖至少有()條邊,其形狀是()。A n B n+1 C n-1 D n x (n-1)E無回路 F有回路 G環(huán)狀 H樹狀【解答】A, G 含n個頂點的連通圖中的任意一條簡單路徑,其長度不可能超過()。A 1 B n/2 C n-1 D n【解答】C【分析】若超過n-1 ,則路徑中必存在重復(fù)的頂點對于一個具有n個頂點的無向圖,若采用鄰接矩陣存儲,則該矩陣的大小是()。A n B (n-1)2 C n-1 D n2【解答】D圖的生成樹(),n個頂點的生成樹有()條邊。A唯一B不唯一 C唯一性不能確定D n E n +1 F n-1【解答】C, F(6)設(shè)無向圖G=(V, E)

5、和G'=(V', E'),如果G'是G的生成樹,則下面的說法中錯誤的是()。A G'為G的子圖B G'為G的連通分量C G'為G的極小連通子圖且 V = V' D G' 是G的一個無環(huán)子圖【解答】B【分析】連通分量是無向圖的極大連通子圖,其中極大的含義是將依附于連通分量中頂點的所有邊都加上, 所以,連通分量中可能存在回路。G是一個非連通無向圖,共有 28條邊,則該圖至少有()個頂點。A 6 B 7 C 8 D 9【解答】D【分析】n個頂點的無向圖中,邊數(shù) e< n(n-1)/2 ,將e=28代入,有n>8,現(xiàn)已

6、知無向圖非連通,則 n=9,最小生成樹指的是()。A由連通網(wǎng)所得到的邊數(shù)最少的生成樹B由連通網(wǎng)所得到的頂點數(shù)相對較少的生成樹C連通網(wǎng)中所有生成樹中權(quán)值之和為最小的生成樹D連通網(wǎng)的極小連通子圖【解答】C判定一個有向圖是否存在回路除了可以利用拓?fù)渑判蚍椒ㄍ?,還可以用()。A求關(guān)鍵路徑的方法B求最短路徑的方法C廣度優(yōu)先遍歷算法D深度優(yōu)先遍歷算法【解答】D【分析】當(dāng)有向圖中無回路時, 從某頂點出發(fā)進(jìn)行深度優(yōu)先遍歷時,出棧的順序(退出DFSTraverse算法)即為逆向的拓?fù)湫蛄?。?0)下面關(guān)于工程計劃的 AOE網(wǎng)的敘述中,不正確的是()?br /> A 關(guān)鍵活動不按期完成就會影響整個工程的完成

7、時間B任何一個關(guān)鍵活動提前完成,那么整個工程將會提前完成C所有的關(guān)鍵活動都提前完成,那么整個工程將會提前完成D某些關(guān)鍵活動若提前完成,那么整個工程將會提前完【解答】B【分析】AOE網(wǎng)中的關(guān)鍵路徑可能不止一條,如果某一個關(guān)鍵活動提前完成,還不能提前整個工程,而必 須同時提高在幾條關(guān)鍵路徑上的關(guān)鍵活動。3 .判斷題(1) 一個有向圖的鄰接表和逆鄰接表中的結(jié)點個數(shù)一定相等?!窘獯稹繉?。鄰接表和逆鄰接表的區(qū)別僅在于出邊和入邊,邊表中的結(jié)點個數(shù)都等于有向圖中邊的個數(shù)。用鄰接矩陣存儲圖,所占用的存儲空間大小只與圖中頂點個數(shù)有關(guān),而與圖的邊數(shù)無關(guān)?!窘獯稹繉Α`徑泳仃嚨目臻g復(fù)雜度為O(n2),與邊的個數(shù)無關(guān)

8、。圖G的生成樹是該圖的一個極小連通子圖 【解答】錯。必須包含全部頂點。 無向圖的鄰接矩陣一定是對稱的,有向圖的鄰接矩陣一定是不對稱的【解答】錯。有向圖的鄰接矩陣不一定對稱,例如有向完全圖的鄰接矩陣就是對稱的。 對任意一個圖,從某頂點出發(fā)進(jìn)行一次深度優(yōu)先或廣度優(yōu)先遍歷,可訪問圖的所有頂點。【解答】錯。只有連通圖從某頂點出發(fā)進(jìn)行一次遍歷,可訪問圖的所有頂點。(6)在一個有向圖的拓?fù)湫蛄兄?,若頂點 a在頂點b之前,則圖中必有一條弧?!窘獯稹垮e。只能說明從頂點 a到頂點b有一條路徑。 若一個有向圖的鄰接矩陣中對角線以下元素均為零,則該圖的拓?fù)湫蛄斜囟ù嬖?。【解答】對。參見?1題的證明。(8)在AOE

9、網(wǎng)中一定只有一條關(guān)鍵路徑 ?br/>【解答】錯。AO型中可能有不止一條關(guān)鍵路徑,他們的路徑長度相同4 . n個頂點的無向圖,采用鄰接表存儲,回答下列問題 ?br /> 圖中有多少條邊?任意兩個頂點i和j是否有邊相連?任意一個頂點的度是多少 ?br />【解答】(1)邊表中的結(jié)點個數(shù)之和除以 2。 第i個邊表中是否含有結(jié)點j。 該頂點所對應(yīng)的邊表中所含結(jié)點個數(shù)。5 . n個頂點的無向圖,采用鄰接矩陣存儲,回答下列問題:(1)圖中有多少條邊?任意兩個頂點i和j是否有邊相連?任意一個頂點的度是多少?【解答】(1)鄰接矩陣中非零元素個數(shù)的總和除以2。當(dāng)鄰接矩陣A中Aij=1 (或Aj

10、皿=1)時,表示兩頂點之間有邊相連。計算鄰接矩陣上該頂點對應(yīng)的行上非零元素的個數(shù)。6 .證明:生成樹中最長路徑的起點和終點的度均為1?!窘獯稹坑梅醋C法證明。設(shè)v1, v2,,vk是生成樹的一條最長路徑,其中, v1為起點,vk為終點。若vk的度為2,取vk的另 一個鄰接點v,由于生成樹中無回路,所以, v在最長路徑上,顯然 v1, v2, ,vk , v 的路徑最長,與 假設(shè)矛盾。所以生成樹中最長路徑的終點的度為 1。同理可證起點v1的度不能大于1,只能為1。7 .已知一個連通圖如圖 6-6所示,試給出圖的鄰接矩陣和鄰接表存儲示意圖,若從頂點 v1出發(fā)對該圖進(jìn) 行遍歷,分別給出一個按深度優(yōu)先遍

11、歷和廣度優(yōu)先遍歷的頂點序列?!窘獯稹苦徑泳仃嚤硎救缦?0 10 10 110 1110 10 0 11 1 0 0 10 111010 0 10深度優(yōu)先遍歷序列為: 廣度優(yōu)先遍歷序列為: 鄰接表表示如下:00100,v1 v2 v3 v5 v4 v6v1 v2 v4 v6 v3 v5234568.圖6-7所示是一個無向帶權(quán)圖,請分別按Prim算法和Kruskal算法求最小生成樹。圉第8題圖【解答】按Prim算法求最小生成樹的過程如下:Q(D按Kruskal算法求最小生成樹的過程如下:【解答】從源點v1到其他各頂點的最短路徑如下表所示。源點終點最短路徑最短路徑長度v1 v7 v1 v7 7v1

12、v5 v1 v5 11v1 v4 v1 v7 v4 13v1 v6 v1 v7 v4 v6 16v1 v2 v1 v7 v2 22v1 v3 v1 v7 v4 v6 v3 2510 .如圖6-9所示的有向網(wǎng)圖,利用 Dijkstra算法求從頂點v1到其他各頂點的最短路徑。【解答】從源點v1到其他各頂點的最短路徑如下表所示。源點終點最短路徑最短路徑長度v1 v3 v1 v3 15v1 v5 v1 v5 15v1 v2 v1 v3 v2 25v1 v6 v1 v3 v2 v6 40v1 v4 v1 v3 v2 v4 4511 .證明:只要適當(dāng)?shù)嘏帕许旤c的次序,就能使有向無環(huán)圖的鄰接矩陣中主對角線以

13、下的元素全部為0。【解答】任意n個結(jié)點的有向無環(huán)圖都可以得到一個拓?fù)湫蛄?。設(shè)拓?fù)湫蛄袨関0v1v2vn-1 ,我們來證明此時的鄰接矩陣A為上三角矩陣。證明采用反證法。假設(shè)此時的鄰接矩陣不是上三角矩陣,那么,存在下標(biāo)i和j (i>j ),使得Aij不等于零,即圖中存在從vi到vj的一條有向邊。由拓?fù)湫?列的定義可知,在任意拓?fù)湫蛄兄?,vi的位置一定在vj之前,而在上述拓?fù)湫蛄衯0v1v2vn-1中,由于i>j ,即vi的位置在vj之后,導(dǎo) 致矛盾。因此命題正確。12 .算法設(shè)計(1)設(shè)計算法,將一個無向圖的鄰接矩陣轉(zhuǎn)換為鄰接表?!窘獯稹肯仍O(shè)置一個空的鄰接表,然后在鄰接矩陣上查找值不為

14、零的元素,找到后在鄰接表的對應(yīng)單鏈表 中插入相應(yīng)的邊表結(jié)點。鄰接矩陣存儲結(jié)構(gòu)定義如下:const int MaxSize=10;templatestruct AdjMatrix T vertexMaxSize; / 存放圖中頂點的數(shù)組int arcMaxSizeMaxSize; / 存放圖中邊的數(shù)組int vertexNum, arcNum; /圖的頂點數(shù)和邊數(shù);鄰接表存儲結(jié)構(gòu)定義如下:const int MaxSize=10;struct ArcNode / 定義邊表結(jié)點 int adjvex; / 鄰接點域 ArcNode *next;templatestruct VertexNode /

15、定義頂點表結(jié)點T vertex;ArcNode *firstedge;; struct AdjListVertexNode adjlistMaxSize;int vertexNum, arcNum; / 圖的頂點數(shù)和邊數(shù);具體算法如下:鄰接短陣轉(zhuǎn)為鄰接表算法MatToL哧Jvoid MatToList(AdjMatrbi AdjList aB) (B .vertezbluni= A. vertesNum,B. ar cNum= A-arc Num, for (仁 0; i< A. vert erbium; i+)B adjlisti firstedge=NULL;for (i=0, i&

16、lt;A, vcrtcKNum, 1+ )for Q=0; j<i; j+)if (Aarc國" H)p=nev ArcNode; p->adjveEr=j,p- >neKt=B. adj listfi. firstedge; B.adjlis ti. firstedge=p T) ) 設(shè)計算法,將一個無向圖的鄰接表轉(zhuǎn)換成鄰接矩陣?!窘獯稹吭卩徑颖砩享樞虻厝∶總€邊表中的結(jié)點,將鄰接矩陣中對應(yīng)單元的值置為1。鄰接矩陣和鄰接表的存儲結(jié)構(gòu)定義與上題相同。具體算法如下:鄰接表轉(zhuǎn)為鄰接矩陣算法LEToMat void ListToMat (AdjMatrix &A,

17、AdjList &B) (A. 7erteKNum=B v ert 蛻Num,A. arcNum=B. arcNum,for (i=0; kA vatesNum; i+)for (j=0, A,vertexNum, j+) LarcH田理far (iO, i<A vertesNum; i+) (p=B a-Hst閏.firstedge, while (p) (j= p->atvex;屯uz;p=p->n651; 設(shè)計算法,計算圖中出度為零的頂點個數(shù)?!窘獯稹吭谟邢驁D的鄰接矩陣中, 一行對應(yīng)一個頂點,每行的非零元素的個數(shù)等于對應(yīng)頂點的出度。因此,當(dāng)某行非零元素的個數(shù)為零

18、時,則對應(yīng)頂點的出度為零。據(jù)此,從第一行開始,查找每行的非零元素個數(shù)是否為零,若是則計數(shù)器加 1。具體算法如下:統(tǒng)計出度為0的算法SumZ即)|intSmnZerofAtijMatfiKA)(count=0;far (i=0;幅扇Num, i+)(tag=C,for加53刀配血血11;+)if朝麗HO)(break;if 值驢川)count-i-4;)return count;)以鄰接表作存儲結(jié)構(gòu),設(shè)計按深度優(yōu)先遍歷圖的非遞歸算法?!窘獯稹繀⒁?.2.1 o 已知一個有向圖的鄰接表,編寫算法建立其逆鄰接表。【解答】在有向圖中,若鄰接表中頂點vi有鄰接點vj ,在逆鄰接表中vj 一定有鄰接點vi

19、 ,由此得到本題算法思路:首先將逆鄰接表的表頭結(jié)點 firstedge 域置空,然后逐行將表頭結(jié)點的鄰接點進(jìn)行轉(zhuǎn)化。建立逆鄰接表算在List void List (Adj List A, AdjList &B) (B .vertexNum= A. verteKNum, B.arcNum= A.arcNum; for (i=0; kA.vertesNum; i+) B.adjlisli. firstedgp=NULL; for (i=0, i<A verteKNum, i+) (pl=A adjfirstedge;while (pl) (j=pH>adjvejt;p2=new

20、ArcNodePp2->adjveK=4hp2->next=B adj listfj. firstedge, firstedg=p2,p1)l->nextPvi到分別基于深度優(yōu)先搜索和廣度優(yōu)先搜索編寫算法,判斷以鄰接表存儲的有向圖中是否存在由頂點 頂點vj的路徑(i,j )。【解答】基于深度優(yōu)先遍歷:判斷路徑算出DFSint DFStint iT intj) /Msiud擻組已初始比為。(即=1,vi£itedi=l, stackf+Hop% yes=0Rwhile (top!=-l | |yes=O) (Htackftop, p=adjlist,firsledge

21、n while (p && yes= =0) (t=p->adjvex;if (t=q) yE£=l;else if (visitedt= =0)(曲也則=1;stack+top )else p 可廠nest;)if Op) top;) return yes;基于廣度優(yōu)先遍歷:刈冊路登算注冊S |kit BFS(inii1intj)施加如數(shù)短已櫥蒯;為O(斡1;惻楣蜀器怖融"比闞卜L que旺+陶rj=i; yes=Ohwhile (front!rar|yKM)(j=queue+front;p=aijlistf firsledge;white (p 譴強(qiáng)=0(l*卿哪if(l=H)yes=ln±eif(visitedt|-0)遍喇司;qu泗+網(wǎng)或)dse p=p->neilr)retmiyes,學(xué)習(xí)自測及答案0 1 01 0 11 .某無向圖的鄰接矩陣 A=0 1 0 J ,可以看出,該圖共有()個頂點。A 3 B 6 C 9 D以上答案均不正確【解答】A2 .無向圖的鄰接矩陣是一個(),有向圖的鄰接矩陣是一個()A上三角矩陣B下三角矩陣C對稱矩陣D無規(guī)律【解答】C, D3 .下列命題正確的是()。A 一個圖的鄰接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論