AOV網絡與AOE網絡


轉自 lx青萍之末
https://blog.csdn.net/daaikuaichuan/article/details/80586967?utm_medium=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

一、AOV網絡與拓撲排序

  AOV網(Activity On Vertex NetWork)用頂點表示活動,邊表示活動(頂點)發生的先后關系。

  若網中所有活動均可以排出先后順序(任兩個活動之間均確定先后順序),則稱網是拓撲有序的。

1、算法步驟

  • 在網絡中選擇一個入度為0的頂點輸出;
  • 在圖中刪除該頂點及所有以該頂點為起點的邊;
  • 重復上述過程,直至所有邊均被輸出。

2、算法圖解

這里寫圖片描述

3、算法demo:

#include <bits/stdc++.h>
using namespace std;

const int  M  = 10001;
int matrix[M][M];
int indegree[M]; //book已排序的頂點個數

int main(int argc, char const *argv[])
{
    int i, j, a, b, k, book = 0, n, m;
    cin >> n >> m;
    for (i = 1; i <= m; ++i)
    {
        cin >> a >> b;
        matrix[a][b]=1;
        indegree[b]++;
    }
    for (i = 1; i <= n; ++i) 
    {
        for (j = 1; j <= n; ++j) 
        {
            if (indegree[j] == 0) 
            { 
                cout << j << " ";
                //遍歷所有入度為0的頂點
                indegree[j] = -1;
                book++;
                for (k=1; k <= n; k++)
                {
                   if (matrix[j][k] == 1)
                    {
                        //遍歷所有入度為1的頂點
                        matrix[j][k] = 0;
                        indegree[k]--;
                    }
               }
               break;
            }
        }
    }   
    system("pause");
    return 0;
}
   
   
   
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

二、AOE網絡

  AOE網的定義:在帶權有向圖中若以頂點表示事件,有向邊表示活動,邊上的權值表示該活動持續的時間,這樣的圖簡稱為AOE網。
這里寫圖片描述

  如上所示,共有11項活動(11條邊),9個事件(9個頂點)。整個工程只有一個開始點和一個完成點。即只有一個入度為零的點(源點)和只有一個出度為零的點(匯點)。
  關鍵路徑:是從開始點到完成點的最長路徑的長度。路徑的長度是邊上活動耗費的時間。如上圖所示,1 到2 到 5到7到9是關鍵路徑(關鍵路徑不止一條,請輸出字典序最小的),權值的和為18。

三、AOV網絡與AOE網絡的關系

  從定義上來看,很容易看出兩種網的不同,AOV網的活動以頂點表示,而AOE網的活動以有向邊來表示,AOV網的有向邊僅僅表示活動的先后次序。縱觀這兩種網圖,其實它們總體網絡結構是一樣的,僅僅是活動所表示的方式不同,因此可以猜想從AOV網轉換成AOE網應該是可行的。

  通常AOE網都是和關鍵路徑聯系在一起的,在AOE網中我們可以通過關鍵路徑法來計算影響整個工期的關鍵路徑,達到縮短工期的目的。在傳統的AOV網中是沒有表示活動時間的權值的,因此傳統的AOV網無法估算工期,但是如果我們在AOV網中的活動結點上都標上時間屬性,那么AOV網就可以完全轉換為AOE網。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM