一,問題描述 給定一個有向圖G=(V,E),將之進行拓撲排序,如果圖有環,則提示異常。 要想實現圖的算法,如拓撲排序、最短路徑……並運行看輸出結果,首先就得構造一個圖。由於構造圖的方式有很多種,這里假設圖的數據存儲在一個文件中, 每一行包含如下的信息: LinkID,SourceID ...
如果圖中存在環 回路 ,那么該圖不存在拓撲排序,在這里我們討論的都是無環的有向圖。 什么是拓撲排序 一個例子 對於一部電影的制作過程,我們可以看成是一個項目工程。所有的工程都可以分為若干個 活動 的自工程。在這些活動之間,通常會受到一定的條件約束,如其中某些活動必須在另一些活動完成之后才能開始。比如,電影制作不可能在人員到位進駐場地時,導演還沒有找到,也不可能在拍攝過程中,場地都沒有。這些聽起來 ...
2019-03-08 22:42 0 2558 推薦指數:
一,問題描述 給定一個有向圖G=(V,E),將之進行拓撲排序,如果圖有環,則提示異常。 要想實現圖的算法,如拓撲排序、最短路徑……並運行看輸出結果,首先就得構造一個圖。由於構造圖的方式有很多種,這里假設圖的數據存儲在一個文件中, 每一行包含如下的信息: LinkID,SourceID ...
圖的寬搜的一個經典應用就是求拓撲排序 拓撲排序是針對有向圖而言,無向圖沒有拓撲序列 比如這個有向圖 圖中的邊一共是1到2,2到3,1到3,對於每條邊都是起點在終點的前面 1 2 3就是一個拓撲序列,都是從前指向后的 並不是所有圖都有拓撲序列 只要有一個環,無論如何都不 ...
拓撲排序與判斷有向圖是否有環 方式1:基於BFS:采用入度的方式判斷是否有回路 定義隊列Q,將所有入度為0的結點加入隊列 取出隊列的首節點,輸出,然后刪去從它出發的所有邊,並令邊的另一端結點的入度減1,如果減到了0,就將其加入隊列 重復上面一個操作,直到隊列為空 ...
最近看了點有向圖的內容,參考開源項目做了一個簡單版本,直接貼代碼。 使用方法示例: ...
步驟: 1.輸入邊時將入度加1; 2.在bfs函數中將所有入度為0的點入隊; 3.如果下個點可達,則的入度--,如果入度為0, 將其入度。 ...
給定一個n個點m條邊的有向圖,圖中可能存在重邊和自環。 請輸出任意一個該有向圖的拓撲序列,如果拓撲序列不存在,則輸出-1。 若一個由圖中所有點構成的序列A滿足:對於圖中的每條邊(x, y),x在A中都出現在y之前,則稱A是該圖的一個拓撲序列。 輸入格式 第一行包含兩個整數n和m 接下來m ...
/**1.求拓撲排序的序列2.求關鍵路徑:廣域網成整個工程所需的時間取決於從源點到匯點的最長路徑長度。路徑長度等於路徑上各邊的權之和。這條具有最大長度的路徑就叫做關鍵路徑(拓撲排序可以判斷有向圖是否有環)(並查集可以判斷無向圖是否有環,若merge(..)的時候,兩個節點已經在同一個連通分支 ...
任務:給定一個有向圖,實現圖的深度優先, 廣度優先遍歷算法,拓撲有序序列,並輸出相關結果。 功能要求:輸入圖的基本信息,並建立圖存儲結構(有相應提示),輸出遍歷序列,然后進行拓撲排序,並測試該圖是否為有向無環圖,並輸出拓撲序列。 按照慣例,先上代碼,注釋超詳細: 實驗用圖 ...