一 基本概念
關鍵路徑是對資料結構中圖的又一大應用。
1、aoe網的概念:在乙個表示工程的帶權有向圖中,用頂點表示事件,用有向邊表示活動,邊上的權值表示活動的持續時間,稱這樣的有向圖叫做邊表示活動的網,簡稱aoe網。aoe網中沒有入邊的頂點稱為始點(或源點),沒有出邊的頂點稱為終點(或匯點)。
2、關鍵路徑的概念:從始點到終點的路徑長度最大的路徑即為關鍵路徑。關鍵路徑上的活動為關鍵活動。
3、所用到的幾個參量定義:
(1)事件vk的最早發生時間,用ve(k)表示
指從頂點v到vk的最長路徑長度,事件的最早發生時間決定了所有從vk開始的活動能夠開工的最早時間。ve(k)=max
(2)事件vk的最晚發生時間,用vl(k)表示
指在不推遲工期的情況下,保證它指向的事件vi在ve(i)時刻發生時,該事件最遲發生的時間。vl(j)=min
(3)活動ak的最早開始時間,用e(i)表示,e(i)=ve(k)
指該活動的起點所表示的最早的開始時間。
(4)活動ak的最遲開始時間,用l(i)表示,l(i)=vl(j)-weight(vk,vj)
指該活動的終點所表示的事件最遲發生時間與該活動所需時間之差。
二 舉例
例如:
v1v2
v3v4
v5v6
ve(k),事件最早開始時間
vl(k),事件最晚開始時間
上表中v2最晚開始時間有多個,取最小值即可。
a1a2
a3a4
a5a6
a7a8
e(i),活動最早開始時間
a1a2
a3a4
a5a6
a7a8
l(i),活動最遲開始時間
e(i)=l(i),即為關鍵活動。所以關鍵活動是:a2、a5、a7
下面用c語言來實現:(**來自:
#include
<
stdio.h
>
#include
<
malloc.h
>
#define
m 20
#define
max 100
typedef
struct
node
jd;typedef
struct
tnode
td;int
loc_vertex(td g,
intvex,
intn)
//定位輸入結點的儲存座標
intcrt_linklist(td g)
//建立鄰接鍊錶
for(k=1
;k<=
e;k++
)
//輸入邊的資訊
return
(n);
}void
cal_in(td g,
intn)
//計算每個結點的入度}}
intdut(td g,
intvt,
intvh)
//返回每個結點之間的邊的權值
return
(max);
}int
toporder(td g,
intn,
intve,
inttop2,
int*
t2)
//作用在於求ve[k],和為後面的求vl[k]
while
(top
>0)
}if(m<
n)
return(0
);else
return(1
);}void
critical_path(td g,
intn)
}///
* 求出活動的的e[k],l[k]*
///for(j=
1;j<=
n;j++)}
}}intmain()
C 路徑設定相關知識
system.diagnostics.process.getcurrentprocess mainmodule.filename獲取模組的完整路徑。system.environment.currentdirectory 獲取和設定當前目錄 該程序從中啟動的目錄 的完全限定目錄。system.io.d...
尤拉路徑相關知識
首先說說概念 設g是無向連通圖,則稱經過g的每條邊一次且僅一次的路徑為尤拉通路.如果尤拉通路是迴路,那麼該迴路為尤拉迴路.具有尤拉迴路的無向圖g稱為尤拉圖.如果g是有向圖,並且g的基圖聯通.那麼由上面的定義中所有的名次加上乙個有向即可 相關定理 1 無向圖g存在尤拉通路的充要條件是 g為連通圖,並且...
Codeup關鍵路徑 關鍵路徑
時間限制 1 sec 記憶體限制 128 mb 提交 261 解決 90 提交 狀態 討論版 命題人 外部匯入 描述 圖的連線邊上的資料表示其權值,帶權值的圖稱作網。上圖可描述為頂點集為 a,b,c,d,e 邊集及其權值為 始點,終點 權值 a b 3 a c 2 b d 5 c d 7 c e 4...