Phương pháp PERT – PCM và ứng dụng
Trang 1Chương mở đầu
GIỚI THIỆU CHUNG VỀ NHIỆM VỤ
Đề tài “Điều hành dự án bằng phương pháp PERT-PCM và ứng dụng giải bài toán lập lịch thi công công trình”, bao gồm
- Tìm hiểu phương pháp PERT-PCM (phương pháp sơ đồ mạng lưới)
- Ứng dụng giải bài toán lập lịch thi công công trình
+ Lưu trữ lịch thi công các dự án
+ Cho biết thới gian bắt đầu một dự án và thời gian kết thúc dự án+ Thêm một số hạng mục khi dự án đang được thi công
+ Bỏ một số hạng mục khi dự án đang thi công
+ Đưa ra lịch thi công các hạng mục tối ưu nhất
Trang 2Chương I ĐIỀU HÀNH DỰ ÁN BẰNG PHƯƠNG PHÁP
PERT-CMP (Phương pháp sơ đồ mạng lưới)
Dự án (Project) là một tập hợp các hoạt động (Activity) liên quan với
nhau và phải được thực hiện theo một thứ tự nào đó cho đến khi hoàn thànhtoàn bộ các hoạt động Hoạt động được hiểu như là một việc đòi hỏi thời gian,
và nguyên liệu (Resource) để hoàn thành Trước kia để điều hành dự án người
ta thường dùng biểu đồ Gantt (Gantt bar chart), là một đồ thị gồm các đường kẻ
ngang, biểu thị điểm khởi công và kết thúc hoạt động Nhược điểm của biểu đồlà không xác định được quan hệ giữa các hoạt động, nên không áp dụng được
cho các dự án lớn (large-scale project), đòi hỏi đặt kế hoạch (planning), điều hành thực hiện (scheduling) va kiểm tra (controlling) một cách hệ thống và hiệu
quả, thậm chí phải tối ưu hoá hiệu quả (về thời gian và tiết kiệm nguyên liệu)
Vì vậy, gần như đồng thời vào năm 1956-1958, hai phương pháp kế hoạch, điều
hành và kiểm tra dự án đã ra đời Phương pháp đường găng hoặc phương pháp đường tới hạn (Critical path method, viết rắt là CPM) được E.I.du Pont de Nemous và công ty xây dựng của ông đưa ra Phương pháp thứ hai có tên là Kỹ thuật xem xét và đánh giá dự án (Project evaluation and review technique, viết tắt là PERT) là kết quả nghiên cứa của một công ty tư vấn theo đặt hàng của
hải quân Mỹ, dùng để điều hành các hoạt động nghiên cứu và phát triểnchương trình tên lửa đối cực Hai phương pháp được hình thành độc lập nhưngrất giống nhau, cùng nhằm vào mục đích điều hành thời gian là chính Sự khác
nhau chính là trong CPM thời gian ước lượng cho công việc, được coi là tất định (Deterministic), còn trong PERT có thể là ngẫu nhiên (Probabilistic) Ngoài ra
CPM có tính đến quan hệ thời gian Ngày nay, khi đã phát triển lên, hai phương
pháp được coi là một, dưới một tên chung là Phương pháp điều hành dự án PERT-CPM, hoặc Phương pháp sơ đồ mạng lưới hoặc hệ thống kiểu PERT
(PERT-type system) Nó được dùng để thực hiện rất nhiều kiểu dự án, từ xâydựng, lập trình máy tính, sản xuất phim đến vận động tranh cử chính trị hoặccác cuộc giải phẫu phức tạp
Phương pháp điều hánh dự án PERT-CPM gồm ba pha (tức là ba khâu): kế
hoạch, điều hành và kiểm tra điều chỉnh Pha kế hoạch có nội dung là lập một
sơ đồ mạng lưới (arrow network diagram hoặc arrow diagram), tương tự một đồthị có hướng Pha này mở đầu bằng việc tách dự án thành nhiều hoạt độngriêng và định thời gian hoàn thành chúng Trong mạng, mỗi cung có hướng biểudiễn hoạt động và cả sơ đồ mạng biểu thị mối quan hệ giữa các hoạt động Mỗi
nút biểu thị một biến cố hoặc sự kiện (event), đánh dấu hoàn thành một số hoạt
Trang 3động (activity) là các cung đi vào nút, và bắt đầu các hoạt động ứng với các
cung ra khỏi nút
Pha điều hành (scheduling phase) có nhiệm vụ xây dựng biểu đồ thời gian,
chỉ rõ thời điểm bắt đầu và kết thúc của mỗi hoạt động và mối quan hệ giữacác hoạt động Nói riêng, điều quan trọng là phải tính chính xác các hoạt độngtới hạn, tức là găng (critical), cần chú ý đặc biệt khi thực hiện, để toàn bộ dự ánđược hoàn thành đúng hạn
Pha kiểm tra bao gồm việc sử dụng sơ đồ mạng lưới, và biểu đồ thời gianđể theo dõi và báo cáo định kì tiến triển của dự án Nếu cần thì phải phân tíchlại và xác định sơ đồ mới cho phần dự án còn lại
I Lập sơ đồ mạng lưới
Như trên đã nói, pha đầu của phương pháp PERT-CPM là lập kế hoạch thểhiện ở một sơ đồ mạng lưới, biểu diễn như một đồ thị có hướng Hãy xét một dựán xây dựng một toà nhà Việc tách dự án thành các hoạt động như đào đất,xây móng, xây tường thô, lợp mái, đặt đường dây điện … là do kiến trúc sư hoặckỹ sư xây dựng làm Dựa vào đó, người quản lý dự án lập được sơ đồ mạng lướinhư H.1.1 Các số bên cạnh cung là thời gian thực hiện hoạt động đó
Qua sơ đồ mạng lưới H.1.1 ta thấy rõ mối quan hệ giữa các hoạt động vềthời gian Chẳng hạn hoạt động (6, 8) là trát ngoài-phải sau (4, 6) là lợp mái,nhưng độc lập với (5, 7) là chỉnh tường trong Cũng vậy (4, 7) độc lập với (4, 5)
và (5, 7) Ở đây có hai hoạt động giả (dummmy activity) với thời gian để thực
hiện bằng 0 được đưa vào để đảm bảo qui tắc sơ đồ
Cung giả (11, 12), ký hiệu bởi đường đứt đoạn, đưa vào để đảm bảo qui tắckhông có hai hoạt động cùng biến cố bắt đầu và kết thúc, tức là không có 2cung có cùng gốc và ngọn (tức là đồ thị đơn) Việc sơn tường trong và làm sàncó cùng biến cố dầu là nút 9, tức là biến cố lát ván tường xong, và biến cố cuốilà nút 12 (làm sàn và sơn tường xong, bắt đầu hoàn thiện trong) Do đó ta phảithêm nút 11 là biến cố giả và cung giả (11, 12)
Cung giả (5, 8) để chỉ rằng hoạt động (4, 5) phải hoàn thành trước khi bắtđầu hoạt động (8, 10) (nếu bỏ cung giả này thì thời điểm làm hai việc là độclập)
Cung giả này là phục vụ cho qui tắc sơ đồ mạng lưới phải thể hiện đủ quanhệ thứ tự cần có
Nếu quan hệ thời gian có dạng: việc x2 bắt đầu khi xong 1/3 việc x1, việc x3bắt đầu khi xong một nửa x1, thì ta phải thêm các nút đánh dấu các biến cốxong 1/3x1 và xong 1/2x1 đó như ở H1.2
Trang 48 Ép ván lát tường
Làm sàn 4 5 Sơn tường Hoàn thiện ngoài 2
0 Hoàn thiện trong
12
6
8
10
13
Trang 5Hình 1.2
II Phân tích các chỉ tiêu thời gian Xác định đường căng
Pha điều hành có nhiệm phân tích các chỉ tiêu thời gian và đưa ra các bảngvà số liệu cần thiết trên sơ đồ mạng lưới Nếu trong dự án phải điều hành cảnguyên liệu (hoặc nhân lực) thì phải xét cả các chỉ tiêu đó, ta sẽ nói đến ở mụcsau
II.1 Tính các thời điểm
Chỉ tiêu ở đây là thời điểm sớm của biến cố (earliest time for an event) làthời điểm biến cố xảy ra khi mọi hoạt động trước nó được bắt đầu sớm nhất cóthể Thời điểm sớm của biến cố i thường ký hiệu là Ei Các Ei được tính theohướng tăng (forward pass), tức là đi từ nút khởi công theo thứ tự tăng của nút i.Như vậy với nút khởi công 1 thì E1 = 0 Đến nút 2 trong sơ đồ H1.1 thì E2 rõràng bằng 2 vì biến cố hoàn thành hoạt động (1, 2) phải là E1 + t12, ở đây t12 làthời gian thực hiện hoạt động (1, 2) Việc tính E3, E4, E5, E6, E9, E10 và E11 cũngtương tự vì các nút tương ứng chỉ có một cung vào, khi đó:
Ei = Ej + tji
Ở đây j là nút ngay trước i Chẳng hạn E6 + t46 = 16 + 6 = 22 Nếu có nhiềucung vào nút, tức là nhiều hoạt động kết thúc tại biến cố, thì từ định nghĩa Ei rõràng đây là thời điểm mọi hoạt động đó vừa xong cả, tức là phải lấy maximumcủa các tổng Chẳng hạn
Lj =Li - tji,Tức là thời điểm muộn của nút ngay sau nó trừ đi thời gian thực hiện hoạt độngnối hai nút Các biến cố 12, 11, 10, 8, 7, 6, 3, 2 và 1 ở H.1.1 là trường hợp này.Nếu có nhiều cung ra khỏi biến cố, thì theo định nghĩa ta có :
Lj =min{Lii-tji}
Ở đây min theo các nút i ngay sau j và tji là thời gian thực hiện hoạt động nối (j,
Trang 6L9 = min {L11 – t9 11, L12 – t9 12} = min (38 – 4, 38 - 5) = 33
Hãy chú ý sự ‘’đối xứng ‘‘ của quá trình tính Ei và Lj Các Lj được ghi ở số thứ
2 trong ngoặc ở mỗi nút trong H.1.3
II.2 Tính thời gian dự trữ
Trong thời gian dự trữ (slack hoặc float) của một biến có là hiệu thời điểmmuộn và thời điểm
sớm của nó : di = Li
– Ei Thời gian dự
trữ (slack hoặc
float) của hoạt
động được chia
làm hai loại Thời
gian dự trữ chung
(total slack hoặc
total float) của
hoạt động (i, j) là :
TFij = Lj – Ei – tij
TFij chỉ là thời gian
có thể trì hoãn của
hoạt động (i,j) mà
không ảnh hưởng
đến thời điểm kết
thúc cả dự án Vì
nó bằng thời gian
tối đa dành cho
hoạt động (i, j) là
Lj - Ei trừ đi thời
gian để
thực hiện là tij
Thời gian dự trữ
độc lập (free float
hoặc free slack),
ký hiệu là FFij,
cũng là ký hiệu
thời gian dành cho
(i, j) và thời gian thực hiện là tij, nhưng với giả thiết là mọi hoạt động đều bắtđầu sớm có thể, vậy :
FFij = Ej – Ei – tij.Trên sơ đồ mạng lưới thì di là hiệu hai số trong ngoặc ở nút i, thường được ghibằng số trong ô vuông cạnh nút Thời gian dự trữ chung của hoạt động TFij được
12
12
6
8
10
13
4
(44, 44)6
0
2(38, 42)(29, 33)(22, 26)
(0, 0)(2, 2)
(6, 6)(16, 16)
(20, 20)
(25, 25)
(33, 33)
1 4
Trang 7ghi trong ô vuông cạnh ở mỗi cung Còn thời gian dự trữ độc lập của hoạt động
FFij ít quan trọng hơn, thường không ghi, xem H.1.3
II.3 Đường găng (đường tới hạn)
Các hoạt động có thời gian dự trữ chung bằng 0 cần được chú ý đặc biệt
vì trì hoãn nó sẽ ảnh hưởng đến thời gian kết thúc dự án Từ đó có :
Định nghĩa II.3.1 Đường găng hoặc đường tới hạn (critical path) là một
đường đi từ nút khởi công đến nút kết thúc mà mọi hoạt động trên đường đềucó thời gian dự trữ chung bằng 0 (Chẳng hạn trên H.1.3 có một đường găng là
1 –> 2 –> 3 –> 4 –>5 –> 7 –> 9 –> 12 –> 13 ) hoạt động (i, j có TFij = 0 đượcgọi là hoạt động găng (critital activity) Biến cố i có di =0 được gọi là biến cốgăng (critical event)
Một số tính chất quan trọng của đường găng là như sau
1 Mỗi dự án đều có ít nhất một đường găng
2 Tất cả các hoạt động (i, j) có TFij = 0, tức là mọi hoạt động găng đềuphải nằm trên đường găng
3 Mọi biến cố găng, tức là biến cố i có di = 0, đều phải nằm trên đườnggăng Biến có không găng không thể nằm trên đường găng
4 Đường nối nút khởi công đến nút kết thúc mà mọi biến cố trên đóđều găng có thể không phải đường găng vì có thể có hoạt độngkhông găng Chẳng hạn đường 1 –> 2 –> 3 –> 4 –> 7 –> 9 –> 12 –>
Một thí dụ dự án có nhiều đường găng là sơ đồ ở H.1.3 nhưng với t46 thaytừ 6 thành 10 Khi đó thời gian dự trữ của các hoạt động (6, 8), (8, 10) và (10,13) và thời gian dự trữ của các biến cố 6, 8 và 10 đều thay từ 4 thành 0 Lúcnày đường 1 –> 2 –> 3 –> 4 –> 6 –> 8 –> 10 –> 13 là đường găng thứ hai
Các chỉ tiêu thời gian của dự án ở H.1.3 được ghi vào bảng 1.1
Biến cố Thời điểm
sớm
Thời điểmmuộn
Thời giandự trữ
Hoạtđộng
Thời gian dựtrữ chung
Trang 8Bảng1.1 Chỉ tiêu thời gian xây nhà
Ngoài các chỉ tiêu chính nói trên, khi cần các thông tin chi tiết hơn để điềuhành dự án, người ta cũng đưa ra một số khái niệm về thời gian khác nữa nhưsau
Thời điểm khởi công sớm (earliest start) của hoạt động (i, j) là thời sớm củanút gốc: ESij = Ei
Thời điểm hoàn thành sớm (earliest completion) của hoạt động (i, j) là ECij
= Ei + tij
Thời điểm khởi công muộn (latest start) của hoạt động (i, j) là LSij = Lj - tij.Thời điểm hoàn thành muộn (latest completion) của hoạt động (i, j) là LCjj
= Lj tức là thời điểm muộn của nút ngọn
Nhận xét rằng ECij Ej , LSij Li Thật vậy, ta có
TP = t ij G t ij P T G T P ,
ở đây G G
ij T
t
là độ dài đường găng và t P TP
ij là độ dài đường P, là tổng thờigian thực hiện hoạt động trên đường P
Hệ số găng (critital coefficient) biểu thị mức độ căng thẳng về thời giancủa một đường P nối nút khởi công và kết thúc, không phải đường găng G, đượcđịnh nghĩa là
PG G
PG P P
T T
T T K
Trang 9ở đây TPG là độ dài quãng đường (tức là một phần của đường) mà P trùng với G.Rõ ràng O < KP < 1 và KP càng gần 1 thì thời hạn thực hiện các hoạt độngkhông găng trong P càng chặt chẽ.
Hai định nghĩa trên đây của đường đi có thể mở rộng cho đường P có nútđầu và cuối trùng với nút trong đường găng, không cần là nút khởi công và kếtthúc của cả dự án
Thí dụ II.1 Ở dự án trên H.1.3, đường găng dược tô đậm Thời điểm hoànthành sớm EC68 = E6 + t68 = 22 + 7 = 29 = E8, EC10, 13 = 40 < E13 = 44 Thời điểmkhởi công muộn LS46 = L6 – t46 = 26 – 6 = 20 > L4 = 16 Bây giờ giả sử P làđường đi 1 –> 2 –> 3 –> 4 –> 5 –> 6 –> 8 –> 10 –> 13 thì TP = t ij P =40
Nên thời gian dự trữ của P là TG – TP = 44 – 40 = 40 Hệ số găng là
KP = 404 1011 (không có quãng chung với đường găng) Gọi Q là đường 1 –> 2–> 3 –> 4 –> 7 –> 9 –> 12 –> 13 thì TQ = 42, KQ = 4442 3535 97 1110
Ta thấymặc dù TQ > TP nhưng thời hạn thực hiện các hoạt động không găng trong P lạichặt chẽ hơn hoạt động không găng (4, 7) duy nhất của Q Nguyên nhân là (4,7) là không găng duy nhất, nên mọi sự nới lỏng của Q đều dồn cho hoạt độngnày
Chú ý rằng các dữ liệu thời gian quan trọng nhất là các chỉ tiêu có trongbảng 1.1 Ở bảng này cũng cho thấy đường găng (đường gồm các hoạt độnggăng, tức là có thời gian dự trữ chung bằng 0)
II.4 Biểu đồ thời gian
Một cách truyền thống, bên cạnh sơ dồ lưới bảng, để theo dõi điều hànhthời gian cho dự án là dùng biểu đồ thời gian (time chart) Ta hãy xét cách vẽvà sử dụng biểu đồ thời gian qua một thí dụ
Thí dụ II.2 Xét dự án ở H.1.4, và bảng 1.2 tương ứng (chú ý là hoạt độnggiả (4, 5) lại là hoạt động găng.)
Trang 1000000
(2, 4)(3, 4)(3, 5)(4, 5)(4, 6)(4, 7)(5, 6)(5, 7)(6, 7)
2010411080
Bảng 1.2
Biểu đồ thời gian cho H.1.5 Ở đây chỉ có ttrục hoành là thời gian Cao độkhông quan trọng Ta biểu diễn các hoạt động găng phía trên Độ dài (thờigian) là cố định, chặt chẽ cho các hoạt động găng Hoạt động giả (4, 5) có độdài bằng 0 nên biểu diễn bằng đoạn đứng
Mỗi hoạt động không găng biểu diễn ở độ cao khác nhau để nhìn rõ vì cáchoạt động này có độ cơ động và được điều hành bằng biểu đồ thời gian
2
2
325
Hình: 1.5
Biểu đồ được vẽ từ các Ei và Li ở Bảng1.2 (hoạt động găng hay không găngthì theo TFij bằng 0 hay khác 0) Các số không có vòng chỉ thời gian thực hiệncủa hoạt động Chẳng hạn hoạt động (1, 2) thực hiện trong 2 đơn vị thời gian,được phép xê dịch trong khoảng thời gian 4 đơn vị (từ 0 đến 4) Xét sâu hơn thìsự xê dịch có tự do trong khoảng thời gian này không là phụ thuộc vào FFij =
TFij Nếu FFij = TFij thì hoạt động (i, j) có thể cơ động tuỳ ý trong khoảng thờigian vẽ biểu đồ Nếu FFij < TFij thì hoạt động (i, j) chỉ được bắt đầu muộn hơn
6
7 7
0 2 3 4 6 10 13 16 19
Trang 11thời điểm khởi công sớm ESij một khoảng thời gian không quá FFij thì mớikhông ảnh hưởng đến các hoạt động ngay sau nó (duy nhất) là
(2, 4) mới được xê dịch tuỳ ý trong khoảng thời gian 2 đến 6 Nếu (1, 2) thựchiện lùi lại khoảng 1 đến 3 chẳng hạn, thì ảnh hưởng đến hoạt động (2, 4) Mặcdù có FF24 = TF24 nhưng lúc này có chỉ còn được xê dịch thực hiện trong khoảngtừ 3 đến 6
III Điều khiển nhân lực
Các hoạt động không găng được phép xê dịch nhất định, nhất là khi FFij =
TFij Có thể sắp đặt chúng đáp ứng các yêu cầu khác nữa Ngoài thời gian ra,chẳng hạn nhân lực, nguyên liệu, chi phí …Về mặt toán học xử lý yêu cầu loạinào cũng vậy Ở đây ta nói theo ngôn ngữ nhân lực chẳng hạn
Thí Dụ III.1 Giả sử nhân lực cho các hoạt động của dự án ở Thí Dụ II.2 đòihỏi như sau:
Hoạt động Số nhân
công Hoạt động số nhân công
Trang 12
(3, 5) (4, 7)
(4, 6)
(3, 4) (5, 7) (1, 3) (6, 7)
3 4 6 10 11 13 14 17 19
Trang 13
Hình 1.7 IV Hoàn thành sớm dự án 1 1 3 4 5 6 7 4 6 7 1 7 5 5 3 4 1 2 2 4 Thời gian So á c ôn g nh ân 5 6 7 9 10 3 4 6 10 11 13 14 17 19
3 4 6 10 11 13 14 17 19
Thời Gian
Trang 14Trên đây đã xét thời điểm hoàn thành dự án là cố định và xác định cácđường găng, phải thực hiện chặt chẽ để dự án hoàn thành đúng thời gian quiđịnh Nếu muốn giảm thời gian hoàn thành dự án thì làm thế nào ? Ta cũng sửdụng đường găng, nhưng phải dựa vào kỹ thuật và công nghệ, chứ không phảiquản lý bằng toán học được nữa Cụ thể là phải dùng công nghệ mới, tăng vật
tư, công nhân để có thời gian thực hiện các hoạt động ngắn hơn Nhưng tậpchung vào hoạt động nào ? Rõ ràng là vào các hoạt động găng Cụ thể là nếu
ta quan tâm đến hạn chế chi phí thì với (i, j) G, tìm số gia chi phí Cij khi đạtđược rút ngắn thời gian thực hiện hoạt động là tij (tìm bằng thực tế công nghệ,không phải thuần tuý toán học) Khi đó sẽ chọn cách tăng chí phí để giảm thờigian sao cho đạt
G
t T
T
ở đây tổng lấy trên mọi hoạt động găng
V Dự án có tính ngẫu nhiên
Trong các mục trên ta đã coi thời gian thực hiện các hoạt động tij là xácđịnh hoàn toàn từ đầu, khi lập sơ đô mạng lưới Do đó ta có mô hình tất định(detreministic model) Trong thực tế, nhiều yếu tố bất định phải được tính đến,
do đó thời gian thực hiện hoạt động (i, j) là một biến ngẫu nhiên (randomvariable), mà ta chỉ xác định được phân bố xác suất (probability distributtion)qua kinh nghiệm và sôù liệu thống kê Từ đó dẫn đêùn phải sử dụng mô hìnhngẫu nhiên hoặc gọi khác là mô hình xác suất (probabilistic model) Việc tínhtoán các chỉ tiêu để điều hành dự án có hai nhiệm vụ chính Một là tính kỳvọng (mean hoặc expected value) của các đại lượng cần tính, chẳng hạn thờigian thực hiện hoạt động (activity time), thời gian hoàn thành dự án (projecttime), và phương sai (variance) của các đại lượng này Hai là tính xác suất củabiến cố nào đó, chẳng hạn biến cố là dự án hoàn thành trước thời điểm T
Thời gian thực hiện mỗi hoạt động, thường gọi tắt là thời gian hoạt động,trong mô hình ngẫu nhiên thường được giả thiết là xác định được ba yêùu tố sau
Thời gian lạc quan (optimistic time) ký hiệu là a, là thời gian cần để làm xong
khi hoạt động được thực hiện thuận lợi nhất Thời gian này rất khó đạt được
Theo lý thuyết thống kê, thì đây thực chất là cận dưới (lower bound) của phân bố xác suất Thời gian bi quan (pressimistic time), ký hiệu là b, là thời gian cần để xong hoạt động khi tiên hành gặp trục trặc nhất, tức là cận trên (upper bound) của phân bố xác suất Thời gian hợp lý nhất (most likely time), ký hiệu
là m, là thời gian hiện thực nhất, tức là có xác suất lớn nhất (đỉnh cao nhất củahàm mật độ) Ba lượng trên chưa đủ để xác định phân bố xác suất của thời gianhoạt động Do đó chưa đủ để xác định kỳ vọng te tức là giá trị trung bình theo
Trang 15xác suất, và phương sai 2 đặc trưng cho độ lệch khỏi te của thời gian hoạtđộng Mô hình cần hai gải thiết phù hợp thực tế sau đây.
Giả thiết 1 b - a, tức là độ dài khoảng mà thời gian hoạt động có thể lấy,
bằng 6 lần độ lệch chuẩn (standard deviasion), tức là ta có phương sai
Điều này đúng cho nhiều biến ngẫu nhiên hay gặp
Giả thiết 2 Phân bố xác suất của mỗi thời gian hoạt động đêøu là phân bố
beta (beta distribution)
Ta hãy nhắc lại vài kiến thức xác suất Mỗi đại lương ngẫu nhiên x có hai
hàm quan trọng nhất Hàm mật độ xác suất (probability density fuction) f(x), a
x b, và hàm phân bố tích luỹ (cumulative distribution function) F(X), gọi làhàm phân bố Ở đây giả thiết là x chỉ lấy giá trị trong [a, b] Ta có các quan hệsau
dx x f
, ) ( } {
) (
, 1 ) (
dx x f x x
dx x xf X
, ) ( ) (
, ) (
2 2
ở đây xe là kỳ vọng và 2 là phương sai của biến ngẫu nhiên x, P {…} là xácsuất của biến cố {…} Mỗi một trong hàm mật độ hoặc hàm phân phối đặc trưnghoàn toàn cho biến ngẫu nhiên Kỳ vọng và phương sai là các đại lượng quantrọng Ta cũng nói là hàm mật độ (hoặc hàm phân bố), xác định hoàn toànphân bố xác suất Phân bố beta (beta distribution) là một trong các phân bố xácsuất phổ biến nhất, xác định bởi hàm mật độ sau, nếu 0 x 1,
1 1
1
) , (
1 )
1 ( ) ( ) (
) (
B x
x x
0 1
)1(:
),(
:)(
dt t t
Trang 16m 1 x
Hình 1.8
Nếu y lấy giá trị trên [a, b] và có phân bố theo beta thì hàm mật độ nhânđược từ (4.2) bằng đổi biến y = a + (b - a)x Chẳng hạn, hàm mật độ của phânbố beta có dạng như H.1.8 với 1, 1 và a = 0, b = 1
Phân bố chuẩn (normal distribution) là phân bố xác suất phổ biến nhất,
định nghĩa bởi hàm mật độ sau
,,
ở đây tham số chính là kỳ vọng
và 2 chính là phương sai của biến
ngẫu nhiên x có phân bố chuẩn
Khi đó biến
phương sai là 1 Hàm mật độ của
phân bố chuẩn có dạng ở H.1.9
Các biến ngẫu nhiên x1, …, xn được gọi là độc lập (independent) nếu
P{x1 X1, …, xn Xn} = P{x1 Xn},
Định nghĩa giới hạn trung tâm (centrer – limit thoerem) nói rằng với cácđiều kiện khá nhẹ, tổng các biến ngẫu nhiên độc lập luôn có phân bố chuẩn(không phụ thuộc vào phân bố của từng biến ngẫu nhiên)
Trở lại mô hình ngẫu nhiên điều hành dự án Để tính kỳ vọng te của thờigian hoạt động, người ta giả thiết là điểm giữa a 2b chiếm tỷ trọng bằng nửađiểm hợp lý nhất m Khi đó
1
b a m
Thí dụ V.1 Giả sử dự án xây nhà ở H.1.1 bây giờ có các thời gian hoạtđộng là ngẫu nhiên có phân bố beta thoả hai giả thiết trên và xác định được bamốc thời gian lạc quan, bi quan và hợp lý nhất theo bảng1.3 Khi đó phương saivà kỳ vọng của các thời gian hoạt động, tình theo công thức (4, 1) và (4, 3)được ghi ở hai cột cuối
Hoạt Thời gian Thời gian Thời gian Kỳ vọng te Phương
f(x)
Hình 1.9
Trang 17động lạc quan a hợp lý nhất
5354115
2
2
1 3
9
2
1 4
2
1 5
2
1 7
4
2
1 6
984
2
1 5
2
2
1 5
3818510910
119174739
24104675
7894526
9 1
14
9 4
111
11404
9 1
9 4
Tuy nhiên để xác định kỳ vọng và phương sai của thời gian dự án, ta cầnthêm hai giả thiết sau
Giả thiết 3 Các thời gian hoạt động là các biến ngẫu nhiên độc lập.
Giả thiết 4 Đường găng xây dựng trên các thời gian hoạt động kỳ vọng,
luôn đòi hỏi thời gian (hoàn thành mọi hoạt động trên nó) lớn hơn các đườngkhác
Tính thật chi ly trong các thí dụ cụ thể thì hai giả thiết 3 và 4 có thể khôngđúng Chẳng hạn, ở Thí dụ V.1, nếu sảy ra thời gian bi quan ở mọi hoạt động
Trang 18thì đường găng đã tính là 69 (ngày) Còn đường 1 –> 2 –> 3 –> 4 –> 5 –> 7 –>
9 –> 12 –> 13 có thời gian bi quan là 70 Tuy vậy người ta vẫn chấp nhận cácgiả thuyết xấp xỉ này Khi đó, vì kỳ vọng và phương sai của tổng các biến ngẫunhiên là tổng của các kỳ vọng và phương sai nên ta có: Kỳ vọng và phương saicủa thời gian dự án là tổng các kỳ vọng và phương sai của các thời gian hoạtđộng trên đường găng (xây dựng theo các kỳ vọng) Đến đây ta nhận xét rằngmột trong các cách áp dụng thực tế là dùng các kỳ vọng của các biến, rồi ápdụng mọi tính toán và lý luận ở các mục trước vào các kỳ vọng, thay cho cácbiến tất định
Ở Thí dụ V.1 kỳ vọng và phương sai của thời gian dự án là 44 và 9, vìđường găng là 1 –> 2 –> 3 –> 4 –> 5 –> 7 –> 9 –> 12 –> 13
Bây giờ ta xét vấn đề quan trọng là tính xác suất để dự án hoàn thành trướcmột thời hạn bắt buộc (deadline) Theo định lý giới hạn trung tâm, thời gian dựán là biến ngẫu nhiên có phân bố chuẩn Do đó ta tính được xác suất P(x X),thường được tính sẵn để tra theo bảng Chẳng hạn Bảng A1 ở cuối sách cho biết
P {x xe + K}, ở đây là độ lệch chuẩn Do đó K là đơn vị lệch chuẩn.Thí dụ, hãy tính xác suất để thời gian xây nhà ở Thí dụ V.1 không quá 47ngày Ta thấy 47 = 44 + 3.1 = xe + K nên K = 1 Theo bảng thì P {x 47} =0,1584 Do đó xác suất cần tìm là 1 – 0,1584 0,84
Phương pháp điều hành dự án có tính ngẫu nhiên trên đây thường được gọilà phương pháp ba ước lượng PERT (PERT three estimate method)
Nếu cần tính các yếu tố thời gian ở các biến cố trung gian (không chỉ thờigian hoàn thành dự án, tức là biến cố cuối) thì ta lý luận như sau Trước hết tínhkỳ vọng và phương sai của thời điểm sớm i của biến cố i Nếu chỉ có mộtđường từ khởi công đến i thì, do các hoạt động là độc lập kỳ vọng của i kýhiệu là E(i), bằng tổng các kỳ vọng te của thời gian các hoạt động dẫn đến i.Khi có nhiều đường dẫn đến i thì người ta coi xấp xỉ (để đơn giản) E(i) vàVar(i) là tổng các te và 2 của các hoạt động theo đường đến i có tổng E(i)dài nhất Nếu có nhiều đường với cùng E(i) thì Var(i) quy ước lấy lượng củađường có tổng các 2 dái nhất
Bây giờ hãy tính xác suất để biến cố i xong trước thời gian bắt buộc Ti chotrước Theo định lý giới hạn trung tâm i tuân theo phân bố chuẩn, ta chỉ việctra bảng các xác suất ứng với phân bố chuẩn để tính P{i Ti} Cụ thể, để trabảng, quy về trường hợp đại lương z có phân bố chuẩn với kỳ vọng 0 và phươngsai 1 như sau:
) (
) ( )
(
) (
i i
i i
i
i i
i
Var
E T Var
E P
i
Var
E T
Trang 19Trong các mục trước ta trình bày về các dựa án có yêu cầu chủ yếu là điềuhành thời gian Theo ngôn ngữ ban đầu thì đây là phương pháp PERT, các thờigian ở đây có thể xét như các biến tất định hoặc ngẫu nhiên Còn phương phápđường găng PCM thì đặt ngang nhau về thời gian và cước phí Mục tiêu chínhcủa PCM là chọn cách thoả hiệp thời gian thực hiện mỗi hoạt động (theo ngônngữ hình học) tức là biết đường cong thời gian – cước phí (time – cost curve)của mỗi hoạt động Trong mô hình toán học (xấp xỉ thô tình trạng thực tế)người ta giả thiết quan hệ thời gian và cước phiù là tuyến tính Do đó chỉ cần biếthai điểm Người ta chọn hai điển nút như sau:
Điểm chuẩn (normal point) có toạ độ là thời gian và cước phí của hoạt độngkhi nó được tiến hành trong điều kiện bình thường, tức là chuẩn, không có cướcphí bổ xung tăng cường (như làm ngoài giờ, tăng thiết bị nhân lực …) Cực điểm(crash point) là điểm ứng với thời gian và cước phí khi đầu tư hết mức để thờigian thực hiện hoạt động ngắn nhất có thể Mọi điểm trung gian giữa điểmchuẩn và cực điểm, tức là mọi cách thoả hiệp thời gian cước phí (time – costtrade - off) đều coi là chấp nhận được, xem H.1.10
Hình 1.10
Đường cong thời gian – cước phí của hoạt động (i, j)
Các ký hiệu trên H.1.10 rõ ràng như sau Dij là dij là thời gian chuẩn và thờigian cực điểm CDij và Cdij là cước phí chuẩn (normal cost) và cước phí cực điểm(crash cost), đều của hoạt động (i, j) Gọi xij (thời gian thực hiện hoạt động (i, j))là biến quyết định (decision variable) của bài toán mà ta cần tính Gọi Sij là độxiên, tức là hệ số góc đường thẳng biểu thị đường cong thời gian – cước phí ,tức là:
ij ij
d D ij
d D
C C
Trang 20Bài toán: Chọn các xij để thời gian dự án không quá thời hạn bắt buộc Tcho trước và làm cực tiểu cước phí dự án C.
Nhận xét rằng các yếu tố của bài toán đều là tuyến tính, ta cố gắng đưa vềquy hoạch tuyến tính như sau:
Đưa vào các biến bổ xung yk là thời điểm sớm Ek của biến cố k Khi đóquan hệ giữa các biến theo Mục 4.2 là
y1 = 0, yn T
Ở mục tiêu thì Kij là hằng Tóm lại ta được quy hoạch tuyến tính
,
0
0 ,
, min
1
) (
T y y
y x y
D x d
x S
n
ij ij i
ij ij ij j ij ij
ij thì ràng buộc xij dij trở thành ràng buộc dấu x’
ij 0 Thêm ràng buộchình thức yi 0, i Ràng buộc này tự nhiên thoả do y1 = 0 và yj yi + dij + X’
ij.Trường hợp không có thời hạn bắt buộc T cho trước, tức là cần tìm thoảhiệp tốt nhất giữa tổng cước phí và tổng thời gian dự án, người ta coi T là thamsố và giải quy hoạch tuyến tính tham số để được nghiệm tối ưu như hàm của T.VII Kiểm tra hiệu chỉnh dự án
Sau khi dùng phương pháp điều hành dự án PERT – CPM xác định được sơđồ mạng lưới, các biểu đồ và bảng tính các chỉ tiêu và dự án đang được tiếnhành, người quản lý luôn phải theo dõi, kiểm tra Điều kiện lao động thực tế cóthể nhiều bất ngờ Khi cần thiết có thể phải dùng phương pháp PERT – CPMlại, dựa trên các dữ liệu mới, để tính toán cho phần còn lai của dự án Sau đóđiều hành dự án theo các biểu đồ và bảng tính mới
Trang 21CHƯƠNG 2
CƠ SỞ VỀ LÝ THUYẾT ĐỒ THỊ
I Một số khái niệm cơ bản.
Lý thuyết độ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứngdụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vàonhững năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Euler.Chính ông là người sử dụng đồ thị để giải bài toán nổi tiếng về cái cầu ở thànhphố Konigsberg
Đồ thị được sử dụng để giải các bài toán trong nhiều lĩnh vực khác nhau.Chẳng hạn, đồ thị có thể sử dụng để xác định các mạch vòng trong vấn đề giảitích mạch điện Chúng ta có thể phân biệt các hợp chất hóa học hữu cơ khácnhau với cùng công thức phân tử nhưng khác nhau về cấu trúc phân tử nhờ đồthị Chúng ta có thể xác định xem hai máy tính trong mạng có thể trao đổithông tin được với nhau không nhờ mô hình đồ thị của mạng máy tính Đồ thịcó trọng số trên các cạnh có thể sử dụng để giải bài toán như: Tìm đường đingắn nhất giữa hai thành phố trong một mạng giao thông Chúng ta còn sử dụngđồ thị để giải các bài toán về lập lịch, thời khóa biểu, và phân bố tần số chocác trạm phát thanh và truyền hình…
1.1 Định nghĩa đồ thị.
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnhnày Chúng ta phân biệt các loại đồ thị khác nhau bởi kiểu và số lượng cạnh nốihai đỉnh nào đó của đồ thị Để có thể hình dung được tại sao lại cần đến cácloại đồ thị khác nhau, chúng ta sẽ nêu ví dụ sử dụng chúng để mô tả một mạngmáy tính Giả sử ta có một mạng gồm các máy tính và các kênh điện thoại (gọitắt là kênh thoại) nối các máy tính này
Định nghĩa 1: Đơn đồ thị vô hướng G = (V,E) bao gồm V là tập hợp các
đỉnh và E là tập hợp các cặp không có thứ tự gồm hai phần tử khác nhau của Vgọi là các cạnh
Trong trường hợp giữa hai máy tính nào đó thường xuyên phải truyền tải
nhiều thông tin người ta phải nối hai máy tính này bởi nhiều kênh thoại
Định nghĩa 2: Đa đồ thị vô hướng G = (V,E) bao gồm là tập các đỉnh, và E
là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là cáccạnh Hai cạnh e1 và e2 được gọi là cạnh lặp nếu chúng cùng tương ứng với mộtcặp đỉnh
Rõ ràng mỗi đơn đồ thị đều là đa đồ thị, nhưng không phải đa đồ thị nàocũng là đơn đồ thị, vì đa đồ thị có thể có 2 (hoặc nhiều hơn) cạnh nối một cặpđỉnh nào đó
Trang 22Trong mạng máy tính có thể có những kênh thoại nối một máy nào đó vớichính nó (chẳng hạn với mục đích thông báo) Mạng như vậy được cho tronghình 3 Khi đó đa đồ thị không thể mô tả được mạng như vậy, bởi vì có nhữngkhuyên (cạnh nối một đỉnh với chính nó ) Trong trường hợp này chúng ta cầnsử dụng đến các khái niệm giả đồ thị vô hướng, được định nghĩa như sau:
Định nghĩa 3: Giả đồ thị vô hướng G = (V,E) bao gồm V là tập các đỉnh, và
E là họ các cặp không có thứ tự gồm hai phần tử (không nhất thiết phải khácnhau) của V gọi là các cạnh Cạnh e được gọi là khuyên nếu có dạng e = (u,u)
Định nghĩa 4: Đơn đồ thị có hướng G =(V,E) bao gồm V là tập các đỉnh, và
E là tập các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung Nếu trong mạng có thể có đa kênh thoại một chiều, ta phải sử dụng đến kháiniệm đa đồ thị có hướng:
Định nghĩa 5: Đa đồ thị có hướng G= (V,E) bao gồm V là tập các đỉnh, và E
là họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung Haicung e1 và e2 tương ứng với cùng một cặp đỉnh được gọi là cung lặp
Chúng ta chủ yếu sẽ làm việc với đơn đồ thị vô hướng và đơn đồ thị cóhướng
1.2 Các thuật ngữ cơ bản.
Trước tiên ta xét thuật ngữ mô tả các đỉnh và các cạnh của đồ thị vô hướng
Định nghĩa 1: Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau
nếu (u,v) là cạnh của đồ thị G Nếu e = (u,v) là cạnh của đồ thị thì ta nói cạnh
này là liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u vàđỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu của cạnh (u,v).Để có thể biết bao nhiêu cạnh liên thuộc với một đỉnh, ta đưa vào định nghĩasau:
Định nghĩa 2: Ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên
thuộc với nó và sẽ kí hiệu là deg(v)
b c d
a f e g
Hình 1: Đồ thị vô hướng G.
Thí dụ 1: Xét đồ thị trong hình 1, ta có:
deg(a)= 1, deg(b)=4, deg(c)=4, deg(f)=3, deg(d)=1, deg(e)=3, deg(g)=0
Trang 23Đỉnh bậc 0 gọi là đỉnh cô lập Đỉnh bậc 1 gọi là đỉnh treo Trong thí dụ trên đỉnh
g là đỉnh cô lập, a và d là các đỉnh treo Bậc của đỉnh có tính chất sau:
V v
v
2
Định lý 1: Giả sử G = (V,E) là đồ thị vô hướng với m cạnh Khi đó.
Chứng minh Rõ ràng mỗi cạnh e = (u,v) được tính một lần trong deg(u) và
một lần trong deg(v) Từ đó suy ra tổng tất cả các bậc của các đỉnh bằng hai lầnsố cạnh
Thí dụ 2: Đồ thị với n đỉnh và mỗi đỉnh có bậc là 6 có bao nhiêu cạnh?.
Giải: Theo định lý 1, ta có 2m = 6n Từ đó suy ra số cạnh của đồ thị là 3n
Hệ quả: Trong đồ thị vô hướng, số đỉnh bậc lẻ (nghĩa là có bậc là số lẻ) là
một số chẵn
V
v v
v m
) deg(
) deg(
) deg(
2
Chứng minh: Thực vậy gọi O và U tương ứng là tập đỉnh bậc lẻ và tập
đỉnh bậc chẵn của đồ thị Ta có:
Do deg(v) là chẵn với v là đỉnh trong U nên tổng thứ hai trong vế phải ởtrên là số chẵn Từ đó suy ra tổng thứ nhất (chính là tổng bậc của các đỉnh bậclẻ) cũng phải là số chẵn, do tất cả các số hạng của nó là số lẻ, nên tổng nàyphải gồm một số chẵn các số hạng Vì vậy, số đỉnh bậc lẻ phải là số chẵn Taxét các thuật ngữ tương tự cho đồ thị có hướng
Định nghiã 3: Nếu e = (u, v) là cung của đồ thị có hướng G thì ta nối hai
đỉnh u và v là kề nhau, và nói cung (u,v) nối đỉnh u với đỉnh v hoặc cũng nóicung này là đi ra khỏi đỉnh u và đi vào đỉnh v Đỉnh u(v) sẽ được gọi là đỉnh đầu(cuối) của cung (u, v)
Tương tự như khái niệm bậc, đối với đồ thị có hướng ta có khái niệm bánbậc ra (vào) của một đỉnh
Định nghĩa 4: Ta gọi bán bậc ra (bán bậc vào) của các đỉnh v trong đồ thị có
hướng là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg+(v)(deg(v))
Định lý 2: Giả sử G = (V,E) là đồ thị có hướng Khi đó
Rất nhiều tính chất của đồ thị có hướng không phụ thuộc vào hướng trêncác cung của nó Vì vậy, trong nhiều trường hợp sẽ thuận tiện hơn nếu ta bỏqua hướng trên các cung của đồ thị Đồ thị vô hướng thu được bằng cách bỏ quahướng trên các cung được gọi là đồ thị vô hướng tương ứng với dồ thị có hướngđã cho
1.3 Đường đi, chu trình, đồ thị liên thông.
Định nghĩa 1: Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số
Trang 24=x0, v=xn , (xi, xi+1) E, i= 0, 1, 2… , n-1 Đường đi nói trên còn có thể biểu diễndưới dạng dãy các cạnh: (x0, x1), (x1, x2), …, (xn-1, xn).
Đỉnh u gọi là đỉnh đầu còn đỉnh v gọi là đỉnh cuối của đường đi Đường đicó đỉnh đầøu trùng với đỉnh cuối (tức là u= v) được gọi là chu trình Đường đi haychu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại
Định nghĩa 2: Đường đi độ dài n từ đỉnh u đến đỉnh v trong đó n là số
nguyên dương, trên đồ thị vô hướng G =(V, A) là dãy x0, x1, … ,xn-1,xn trong đó
u =x0, v=xn , (xi, xi+1) A, i= 0, 1, 2… , n-1 Đường đi nói trên còn có thể biểudiễn dưới dạng dãy các cung: (x0, x1), (x1, x2), …, (xn-1, xn)
Đỉnh u gọi là đỉnh đầu còn đỉnh v gọi là đỉnh cuối của đường đi Đường đicó đỉnh đầøu trùng với đỉnh cuối (tức là u= v) được gọi là chu trình Đường đi haychu trình được gọi là đơn nếu như không có cung nào bị lặp lại
Định nghĩa 3: Đồ thị vô hướng G= (V,E) được gọi là liên thông nếu luôn
tìm được đường đi giữa hai đỉnh bất kỳ của nó
Như vậy hai máy tính bấy kỳ trong mạng có thể trao đổi thông tin được vớinhau khi và chỉ khi đồ thị tương ứng vơi mạng này là đồ thị liên thông
Định nghĩa 4: Ta gọi đồ thị con của đồ thị G= (V,E) là đồ thị H = (W,F)
trong đó W V và FE
Trong trường hợp đồ thị là liên thông, nó sẽ rã ra thành một số đồ thị conliên thông đôi một không có đỉnh chung Những đồ thị con liên thông như vậy tasẽ gọi là các thành phần liên thông của đồ thị
Định nghĩa 5: Đỉnh v được gọi là đỉnh rẽ nhánh nếu việc loại bỏ v cùng với
các cạnh liên thuộc với nó khỏi đồ thị làm tăng số thành phần liên thông của đồthị Cạnh e được gọi là cầu nếu việc loại bỏ nó khỏi đồ thị làm tăng số thànhphần liên thông của đồ thị
Định nghĩa 6: Đồ thị có hướng G= (V,A) được gọi là liên thông mạnh nếu
luôn tìm được đường đi giữa hai đỉnh bất kỳ của nó
Định nghĩa 7: Đồ thị có hướng G =(V,A) được gọi là liên thông yếu nếu đồ
thị vô hướng tương ứng với nó là đồ thị vô hướng liên thông
Rõ ràng nếu đồ thị là liên thông mạnh thì nó cũng là liên thông yếu, nhưngđiều ngược lại là không luôn đúng
Định lý1: Đồ thị vô hướng liên thông là định hướng được khi và chỉ khi mỗi
cạnh của nó nằm trên ít nhất một chu trình
Chứng minh: Điều kiện cần, giả sử (u, v) là một cạnh của đồ thị Sự tồn
tại đường đi có hướng từ u đến v và ngược lại suy ra (u, v) phải nằm trên ít nhấtmột chu trình
Điều kiện đủ, thủ tục sau đây cho phép định hướng các cạnh của đồ thi để
thu được đồ thị có hướng liên thông mạnh Giả sử C là chu trình nào đó trong
Trang 25đồ thị Định hướng các cạnh trên chu trình này theo một hướng đi vòng theo nó.Nếu tất cả các cạnh của đồ thị đã được định hướng thì kết thúc thủ tục Ngược
lại chọn e là cạnh chưa định hướng có chung đỉnh với ít nhất một trong số các cạnh đã định hướng Theo giả thiết tìm đựơc chu trình C’ chứa cạnh e định nghĩa các cạnh chưa định hướng của C ’ theo một hướng dọc theo chu trình này(không định hướng lại các cạnh đã có hướng) Thủ tục trên sẽ lặp lại cho đếnkhi tất cả các cạnh của đồ thị được định hướng Khi đó ta thu được đồ thị cóhướng liên thông mạnh
II Biểu diễn đồ thị trên máy tính
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên máytính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị Việc chọncấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả củathuật toán Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn đồ thị phụ thuộcvào từng tình huống cụ thể (bài toán và thuật toán cụ thể ) Ở phần này ta sẽxét một số phương pháp cơ bản để biểu diễn đồ thị trên máy tính, đồng thờicũng phân tích một cách ngắn gọn những ưu điểm cũng như những nhược điểmcủa chúng
2.1 Ma trận kề, Ma trận trọng số.
Xét đơn đồ thị vô hướng G = (V,E), với tầp đỉnh V= {1, 2, …,n} tập cạnh E
= {e1, e2,…, em} Ta gọi ma trận kề của đồ thị G là (0, 1) ma trận A = {aij: i,j = 1,2,… ,n}với các phần tử được xác định theo quy tắc sau đây:
aij =0 nếu (i,j) E và aij =1 nếu (i,j) E, i,j =1, 2,…,n
Thí dụ1: Ma trận kề củae đồ thị vô hướng cho trong hình 1 là:
1 2 3 4 5 6
123456
Trang 26Hình 1: Đồ thị vô hướng G và Đồ thị có hướng G 1
Các tính chất của ma trận kề:
1 Rõ ràng ma trận kề của đồ thị vô hướng là ma trận đối xứng, tức làa[i, j]= a[j, i], i, j = 1, 2,…,n Ngược lại, mỗi (0, 1) – ma trận đối xứng cấp n sẽtương ứng chính xác đến cách đánh số đỉnh (còn nói là: chính xác đến đẳngcấu), với một đơn đồ thị vô hướng n đỉnh
2 Tổng các phần tử trên dòng i (cột j) của ma trận kề chính bằng bậc của
đỉnh i (đỉnh j)
3 Nếu ký hiệu aijp, i,j = 1, 2,…, n Là các phần tử của ma trận Ap = A.A….A plà thừa số, khi đó aijp, i,j = 1, 2,…, n cho ta số đường đi khác nhau từ đỉnh i đếnđỉnh j qua p –1 đỉnh trung gian
Ma trận kề của đồ thị có hướng được định nghĩa một cách hoàn toàn tươngtự
Thí dụ 2: Đồ thị có hướng G1 cho trong hình 1 có ma trận kề là ma trận sau
1 2 3 4 5 61
23456
Lưu ý rằng ma trận kề của đồ thị có hướng không phải là ma trận đốixứng
Chú ý: Trên đây chúng ta chỉ xét đơn đồ thị Ma trận kề của đa đồ thị có
thể xây dựng hoàn toàn tương tự, chỉ khác, là thay vì ghi 1 vào vị trí a[i, j] nếu
(i, j) là cạnh của đồ thị, chúng ta sẽ ghi k là số cạnh nối hai đỉnh i và j.
Trong rất nhều vấn đề ứng dụng của lý thuyết đồ thị, mỗi cạnh e= (u, v)của đồ thị được gán với một con số c(e) (còn viết là c (u, v)) gọi là trọng số củacạnh e Đồ thị trong trường hợp như vậy được gọi là đồ thị trọng số Trong đồthị có trọng số, thay vì ma trận kề, để biểu diễn đồ thị ta dùng ma trận trọng số
C = c[i,j], i,j=1,2,…,n
Với c(i, j)= c[i, j], nếu (i, j) E và c[i, j] = nếu (i, j) E
Trong đó số , tùy từng trường hợp cụ thể, có thể được đặt bằng một trongcác giá trị sau: 0, +, -
Trang 27Ưu điểm lớn nhất của phương pháp biểu diễn đồ thị bằng ma trận kề (hoặcbằng ma trận trọng số) là để trả lời câu hỏi: hai đỉnh u, v có kề nhau trên đồ thịhay không, chúng ta chỉ phải thực hiện một phép so sánh Nhược điểm lớn nhấtcủa phương pháp này là không phụ thuộc vào số cạnh của đồ thị, ta luôn phảisử dụng n2 đơn vị bộ nhớ để lưu trữ ma trận kề của nó
2.2 Danh sách cạnh (cung).
Trong trường hợp đồ thị thưa (đồ thị có số cạnh m thỏa mãn bất đẳng thức
m < 6n) người ta thường dùng cách biểu diễn đồ thị dưới dạng danh sách cạnh.Trong cách biểu diễn đồ thị bởi danh sách cạnh (cung) chúng ta sẽ lưu trữdanh sách tất cả các cạnh (cung) của đồ thị vô hướng (có hướng) Mỗi cạnh(cung) e = (x, y) của đồ thị sẽ tương ứng với hai biến Dau[e], Cuoi[e] Như vậy,để lưu trữ đồ thị ta cần sử dụng 2m đơn vị bộ nhớ Nhược điểm của cách biểudiễn này là để xác định những đỉnh nào của đồ thị là kề với một đỉnh cho trướcchúng ta phải làm cỡ m phép so sánh (khi duyệt qua danh sách tất cả các cạchcủa đồ thị)
Chú ý: trong trường hợp đồ thị có trọng số ta cần thêm m đơn vị bộ nhớ đểlưu trữ trọng số của các cạch
2.3 Danh sách kề
Trong rất nhiều vấn đề ứng dụng của lý thuyết đồ thị, cách biểu diễn đồ thịdưới dạng danh sách kề là cách biểu diễn thích hợp nhất được sử dụng
Trong cách biểu diễn này, với mỗi đỉnh v của đồ thị chúng ta lưu trữ danhsách các đỉnh kề với nó, mà ta sẽ ký hiệu là Ke(v), tức là Ke(v)={uV: (v, u) E} khi đó vòng lặp thực hiện với mỗi một phần tử trong danh sách này theo thứtự các phần tử được xắp xếp như sau:
For u Ke(v) do…
Chẳng hạn, trên PASCAL có thể mô tả danh sách này như sau (Gọi là cấu
trúc Forward star ):
Const
m = 100; {m – số cạnh}
n = 100; {n – số đỉnh}
var
Ke: array {1 m} of integer ;
Tro: array {1 n+1} of integer ;
Trong đó Tro [i] ghi nhận vị trí bắt đầu của danh sách kề của đỉnh i, i = 1, 2, …n,Tro[n+1] = 2m + 1
III Bài toán tìm đường đi ngắn nhất
Trang 28Trong các ứng dụng thực tế, bài toán tìm đường đi ngắn nhất giữa hai đỉnhcủa đồ thị liên thông có một ý nghĩa to lớn, có thể dẫn về bài toán như vậynhiều bài toán thực tế quan trọng Ví dụ, bài toán chọn một hành trình tiết kiệmnhất (theo tiêu chuẩn khoảng cách hoặc thời gian hoặc chi phí) trên một mạnggiao thông đường bộ, đường thủy hoặc đường không; bài toán chọn một phươngpháp tiết kiệm nhất để đưa một hệ động lực lực từ trạng thái xuất phát đến mộttrạng thái đích, bài toán lập lịch thi công các công đoạn trong công trình thicông lớn, bài toán lựa chọn đường truyền tin với chi phí nhỏ nhất trong mạngthông tin, …hiện nay có rất nhiều phương pháp để giải các bài toán như vậy.Thế nhưng thông thường các thuật toán được xây dựng dựa trên lý thuyết đồthị tỏ ra là các thuật toán có hiệu quả nhất Trong phần này ta sẽ xét một sốthuật toán như vậy.
3.1 Các khái niệm mở đầu.
Trong phần này ta chỉ xét đồ thị có hướng G = (V,E), |V| = n, |E| = m vớicác cung được gán trọng số, nghĩa là mỗi cung (u, v) thuộc E của nó đựơc đặttương ứng với một số thực a (u, v) gọi là trọng số của nó, chúng ta sẽ đặt a(u,v)= , nếu (u, v) E Nếu dãy v0, v1,…vp là một đường đi trên G, đồ thị độ dàicủa nó được định nghĩa là tổng sau
),(
Tức là, đồ dài của đường đi chính là tổng trọng số trên các cung của nó.(chú ý rằng nếu chúng ta gán trọng số cho tất cả các cung đều bằng 1, thì tađược định nghĩa độ dài của đường đi như là số cung của đường đi giống như cácphần trước ta đã xét )
Bài toán tìm đường đi ngắn nhất trên đồ thị dưới dạng tổng quát có thể phátbiểu như sau:
Tìm đường đi có độ dài nhỏ nhất từ một đỉnh xuất phát s V đến đỉnh cuối(đích) t V Đường đi như vậy ta sẽ gọi là đường đi ngắn nhất từ s đến t còn độdài của nó ta sẽ ký hiệu là d(s, t) và còn gọi là khoảng cách từ s đến t (khoảngcách định nghĩa như vậy có thể là số âm ) Nếu như không tồn tại đường đi từ sđến t thì ta sẽ đặt d(s, t) = Rõ ràng, nếu như mỗi chu trình trong đồ thị đều cóđộ dài dương, thì trong đường đi ngắn nhất không có đỉnh nào bị lặp lại (đường
đi không có đỉnh nào lặp lại sẽ được gọi là dường đi cơ bản) Mặt khác, nếu đồthị có chu trình với độ dài âm (chu trình như vậy, để ngắn gọn ta gọi là chu trìnhâm ) thì khoảng cách giữa một số cặp đỉnh nào đó của đồ thị có thể là khôngxác định, bởi vì bằng cách đi vòng theo chu trình này một số đủ lớn lần, ta cóthể chỉ ra đường đi giữa các đỉnh này có độ dài nhỏ hơn bất cứ số thực cho trướcnào Trong các trường hợp như vậy, có thể đặt vấn đề tìm đường đi cơ bản ngắnnhất, tuy nhiên bài toán đặt ra sẽ trở nên phức tạp hơn rất nhiều, bởi vì nó chứa
Trang 29bài toán xét sự tồn tại đường đi Hamilton trong đồ thị như là một trường hợpriêng.
Trước hết cần chú ý rằng nếu biết khoảng cách từ s đến t, trong trường hợptrọng số không âm, có thể tìm được một cách dễ dàng, để tìm đường đi chỉ cầnđể ý là đối với cặp đỉnh s, t V tùy ý (s t) luôn tìm được v đỉnh sao cho:
d(s, t) = d(s, v) + a(v, t)
Thực vậy, đỉnh v như vậy chính là đỉnh đi trước đỉnh t trong đường đi ngắnnhất từ s đến t Tiếp theo ta lại có thể tìm được đỉnh u sao cho d(s, v)= d(s, u) +a(u, v), … từ giả thiết về tính không âm của các trọng số dễ dàng suy ra rằngdãy t, v, u,… không chứa đỉnh lặp lại và chứa đỉnh kết thúc ở đỉnh s Rõ ràngdãy thu được xác định (nếu lật ngược thứ tự các đỉnh trong nó) đường đi ngắnnhất từ s đến t
3.2 Đường đi ngắn nhất xuất phát từ một đỉnh
Phần lớn các thuật toán tìm khoảng cách giữa hai đỉnh s và t được xây dựngnhờ kỹ thuật tính toán mà ta có thể mô tả đại thể như sau: từ ma trận trọng sốa{u, v}, u, v V, ta tính cận trên d{v} của khoảng cách từ s đến tất cả các đỉnh
v V , mỗi khi phát hiện
d{u}+a[u, v] < d[v] (1)
Cận trên d[v] sẽ được là tốt lên : d[v]=d[u] + a[u, v]
Quá trình đó sẽ kết thúc khi nào chúng ta không làm tốt thêm được bất cứcận trên nào Khi đó rõ ràng giá trị của mỗi d[v] sẽ cho ta khoảng cách từ đỉnhđược gọi là nhãn của đỉnh v, còn việc tính lại các lại các cận trên này sẽ gọi làphép gán nhãn cho đồ thị và toàn bộ thủ tục thường gọi là thủ tục gán nhãn.Nhận thấy rằng để tính khoảng cách từ s đến t, ở dây, ta phải tính khoảng cáchtừ s đến tất cả các đỉnh còn lại của đồ thị Hiện nay vẫn chưa biết thuật toánnào cho phép tìm đường đi ngắn nhất giữa hai đỉnh làm việc thật sự hiệu quảhơn những thuật toán tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnhcòn lại
Sơ đồ tính toán mà ta vừa mô tả còn chưa là xác định bởi vì còn phải chỉ rathứ tự chọn các đỉnh u và v để kiểm tra điều kiện (!) thứ tự chọn này có ảnhhưởng rất lớn đến hiệu quả của thuật toán
Bây giờ ta sẽ mô tả thuật toán Ford-Bellman tìm đường ngắn nhất từ đỉnh sđến tất cả các đỉnh còn lại của đồ thị Thuật toán làm việc trong trường hợptrọng số của các cung là tùy ý, nhưng giả thiết rằng trong đồ thị không có chutrình âm
Procedure Ford-Bellman;
(*
Đầu vào: đồ thị có hướng G=(V,E) với n đỉnh
s V là đỉnh xuất phát
Trang 30a[u,v],u,v V ma trận trọng số :
Giả thiết : đồ thị không có chu trình âm:
Đầu ra : khoảng cách từ đỉnh s đến tất cả các đỉnh còn lại d[v], v
Truoc[v],v V , ghi nhận đỉnh trước v trong đường đi ngắn nhất từ s đến v
trong trường hợp này ta thu được thuật toán với độ phức tạp O (n.m)
3.3 Đường đi ngắn nhất giữa tất cả các cặp đỉnh
Trang 31Rõ ràng ta có thể giải bài toán tìm đường đi ngắn nhất giữa tất cả cáccặp đỉnh của đồ thị bằng cách sử dụng n lần thuật toán mô tả ở mục trước, trongđó ta sẽ chọn s lần lượt là các đỉnh của độ thị Rõ ràng, khi đó ta thu được thuậttoán với độ phức tạp là O(n3) (nếu sử dụng thuật toán Ford-Bellman) hoặcO(n3) đối với trường hợp trọng số không âm hoặc đồ thị không có chu trình.Trong trường hợp tổng quát, sử dụng thuột toán Ford-Bellman n lần không phảilà cách làm tốt nhất Ở đây ta sẽ mô tả một thuật toán giải bài toán trên với độphức tạp tính toán O(n3): Thuật toán Floyd Thuật toán được mô tả dưới đây Procedure Floyd
(* Tìm đường đi ngắn nhất giữa các cặp đỉnh
Đầu vào:Đồ thị cho bởi ma trận trọng số a{i,j},i,j=1,2….,n.
.Đầu ra:Ma trận đường đi ngắn nhất giữa các cặp đỉnh d{i, j}=1,2….n,
trong đó d{i, j} cho độ dài đường đi ngắn nhất từ i đến j.
Ma trận ghi nhận đường đi
P{i,j},i,j=1,2…n.
Trong đó p{i,j}ghi nhận đỉnh đi trước đỉnh j
Trong đường đi ngắn nhất từ i đến j.
Trang 32một số công đoạn nào đó đã hoàn thành Đối với mỗi công đoạn i biết t[i] là
thời gian cần thiết để hoàn thành nó (i = 1, 2, n)
Ta có thể xay dựng đồ thị có hướng n đỉnh biểu diễn hạn chế về trình tựthực hiện các công việc sau: mỗi đỉnh của đồ thị tương ứng với một đồ thị, nếucông việc i phải được thực hiện trước công đoạn j thì trên đồ thị có cung (i, j),
trọng số trên cung này được gán bằng t[i].
Thêm vào đồ 2 đỉnh 0 và n +1 tương ứng với hai sự kiện đặc biệt: đỉnh số 0
tương ứng với công đoạn Lễ khởi công, nó phải được thực thực hiện trước tất cả các công đoạn khác, và đỉnh n+1 tương ứng với công đoạn Cắt băng khánh thành công trình, nó phải thực hiện sau tất cả các công đoạn, với t[0] = t[n+1]
= 0 (trên thực tế chỉ cần nối đỉnh 0 với tất cả đỉnh có bán bậc vào bằng 0 vànối tất cả các đỉnh có bán bậc ra bằng 0 với đỉnh n+1) Gọi đồ thị thu được là
G Rõ ràng bài toán đặt ra vấn đề bài toán tìm đường đi dài nhất từ đỉnh 0 đếntất cả các đỉnh còn lại trên đồ thị G Do đồ thị G rõ ràng không chứa chu trình,nên để giả bài toán đặt ra có thể áp dụng các thuật toán được nêu ở trên
1 Thí dụ: Ta có bảng các hạng mục được cho trong bảng dưới đây.
Hạng mục t[i] Hạng mục phải hoàn thành trước
1 2152010
1
2,342,35,65
Trang 33Cách giải quyết:
* Thêm hai đỉnh 0 và đỉnh 9 ta thu được một đồ thị có hướng trong đó trọngsố t[i] là cạnh xuất phát từ i
* Tìm đường đi dài nhất thì
- Đổi dấu trọng số
- Tìm đường đi ngắn nhất xuất phát từ 0
Để giải bài toán trên ta có thể dùng nhiều phương pháp Nhưng trong đề tàinày chúng tôi sử dụng thuật toán Dijkstra
II Thuật toán Dijkstra
Thuật toán Dijkstra được phát biểu như sau:
Trong trường hợp trọng số trên các cung là không âm do Dijkstra đề nghị để giải bài toán tìm đường đi ngắn nhất từ dỉnh s đến các đỉnh còn lại của đồ thị Thuật toán được xây dựng trên cơ sở gán cho các đỉnh các nhãn tạm thời Nhãn của mỗi đỉnh cho biết cận trên của độ dài đường đi ngắn nhất từ s đến nó Các nhãn này sẽ được biến đổi theo một thủ tục lặp, mà ở mỗi bước lặp có một nhãn tạm thời trở thành nhãn cố định Nếu nhãn của một đỉnh nào đó trở thành cố định thì nó sẽ cho ta không phải là cận trên mà là độ dài đường đi ngắn nhất từ đỉnh s đến nó Thuật toán được mô tả như sau
Procedure Dijkstra;
(* Đầu vào: Đồ thị có hướng G=(V, E) với n đỉnh
s V là đỉnh xuất phát a[u, v], u, v V, ma trận trọng số