軟件設計師真題練習記錄 2018-5-01

--真題--

01、對有n個結點、e條邊且採用數組表示法(即鄰接矩陣存儲)的無向圖進行深度優先遍歷,時間複雜度爲( )

A.  O(n2)                      

B.  O(e2)

C.  O(n+e)                    

D.  O(n*e)

知識點:

一、 時間複雜度

時間頻度 :

一個算法執行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個算法都上機測試,只需知道哪個算法花費的時間多,哪個算法花費的時間少就可以了。並且一個算法花費的時間與算法中語句的執行次數成正比例,哪個算法中語句執行次數多,它花費時間就多。一個算法中的語句執行次數稱爲語句頻度或時間頻度。記爲T(n)。

  時間複雜度 :

前面提到的時間頻度T(n)中,n稱爲問題的規模,當n不斷變化時,時間頻度T(n)也會不斷變化。但有時我們想知道它變化時呈現什麼規律,爲此我們引入時間複雜度的概念。一般情況下,算法中基本操作重複執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近於無窮大時,T(n)/f(n)的極限值爲不等於零的常數,則稱f(n)是T(n)的同數量級函數,記作T(n)=O(f(n)),它稱爲算法的漸進時間複雜度,簡稱時間複雜度。

二、鄰接矩陣

鄰接矩陣(Adjacency Matrix)是表示頂點之間相鄰關係的矩陣。設G=(V,E)是一個圖,其中V={v1,v2,…,vn} [1] 。G的鄰接矩陣是一個具有下列性質的n階方陣:

①對無向圖而言,鄰接矩陣一定是對稱的,而且主對角線一定爲零(在此僅討論無向簡單圖),副對角線不一定爲0,有向圖則不一定如此。

②在無向圖中,任一頂點i的度爲第i列(或第i行)所有非零元素的個數,在有向圖中頂點i的出度爲第i行所有非零元素的個數,而入度爲第i列所有非零元素的個數。

③用鄰接矩陣法表示圖共需要n^2個空間,由於無向圖的鄰接矩陣一定具有對稱關係,所以扣除對角線爲零外,僅需要存儲上三角形或下三角形的數據即可,因此僅需要n(n-1)/2個空間。

三、深度優先遍歷

首先訪問出發點v,並將其標記爲已訪問過;然後依次從v出發搜索v的每個鄰接點w。若w未曾訪問過,則以w爲新的出發點繼續進行深度優先遍歷,直至圖中所有和源點v有路徑相通的頂點(亦稱爲從源點可達的頂點)均已被訪問爲止。若此時圖中仍有未訪問的頂點,則另選一個尚未訪問的頂點作爲新的源點重複上述過程,直至圖中所有頂點均已被訪問爲止。

--答案及解析--

答案:A

解析:在鄰接表中,就是要依次訪問每個頂點,然後在每個頂點中依次訪問每條邊,把這些邊的終點的入度+1。也就是每個頂點和每條邊依次要各訪問一遍,所以時間複雜度是O(n+e)。在鄰接矩陣中,算法需要遍歷鄰接矩陣的每一個點,而鄰接矩陣有n*n個點,所以時間複雜度是O(n*n)。     

記錄人:xiangwangxiangwang

軟件設計師2018上半年真題練習記錄

時間:20181015

-注-

資料來源:百度百科

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章