Tài liệu Luận văn Điều hành dự án bằng phương pháp PERT-CPM và ứng dụng giải bài toán lập lịch thi công công trình: Chươ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
Chươ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ành toà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) để ...
67 trang |
Chia sẻ: hunglv | Lượt xem: 1223 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Điều hành dự án bằng phương pháp PERT-CPM và ứng dụng giải bài toán lập lịch thi công công trình, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Chöông môû ñaàu
GIÔÙI THIEÄU CHUNG VEÀ NHIEÄM VUÏ
Ñeà taøi “Ñieàu haønh döï aùn baèng phöông phaùp PERT-PCM vaø öùng duïng giaûi baøi toaùn laäp lòch thi coâng coâng trình”, bao goàm
Tìm hieåu phöông phaùp PERT-PCM (phöông phaùp sô ñoà maïng löôùi).
ÖÙng duïng giaûi baøi toaùn laäp lòch thi coâng coâng trình.
+ Löu tröõ lòch thi coâng caùc döï aùn
+ Cho bieát thôùi gian baét ñaàu moät döï aùn vaø thôøi gian keát thuùc döï aùn
+ Theâm moät soá haïng muïc khi döï aùn ñang ñöôïc thi coâng
+ Boû moät soá haïng muïc khi döï aùn ñang thi coâng
+ Ñöa ra lòch thi coâng caùc haïng muïc toái öu nhaát
Chöông I
ÑIEÀU HAØNH DÖÏ AÙN BAÈNG PHÖÔNG PHAÙP
PERT-CMP
(Phöông phaùp sô ñoà maïng löôùi)
Döï aùn (Project) laø moät taäp hôïp caùc hoaït ñoäng (Activity) lieân quan vôùi nhau vaø phaûi ñöôïc thöïc hieän theo moät thöù töï naøo ñoù cho ñeán khi hoaøn thaønh toaøn boä caùc hoaït ñoäng. Hoaït ñoäng ñöôïc hieåu nhö laø moät vieäc ñoøi hoûi thôøi gian, vaø nguyeân lieäu (Resource) ñeå hoaøn thaønh. Tröôùc kia ñeå ñieàu haønh döï aùn ngöôøi ta thöôøng duøng bieåu ñoà Gantt (Gantt bar chart), laø moät ñoà thò goàm caùc ñöôøng keû ngang, bieåu thò ñieåm khôûi coâng vaø keát thuùc hoaït ñoäng. Nhöôïc ñieåm cuûa bieåu ñoà laø khoâng xaùc ñònh ñöôïc quan heä giöõa caùc hoaït ñoäng, neân khoâng aùp duïng ñöôïc cho caùc döï aùn lôùn (large-scale project), ñoøi hoûi ñaët keá hoaïch (planning), ñieàu haønh thöïc hieän (scheduling) va kieåm tra (controlling) moät caùch heä thoáng vaø hieäu quaû, thaäm chí phaûi toái öu hoaù hieäu quaû (veà thôøi gian vaø tieát kieäm nguyeân lieäu). Vì vaäy, gaàn nhö ñoàng thôøi vaøo naêm 1956-1958, hai phöông phaùp keá hoaïch, ñieàu haønh vaø kieåm tra döï aùn ñaõ ra ñôøi. Phöông phaùp ñöôøng gaêng hoaëc phöông phaùp ñöôøng tôùi haïn (Critical path method, vieát raét laø CPM) ñöôïc E.I.du Pont de Nemous vaø coâng ty xaây döïng cuûa oâng ñöa ra. Phöông phaùp thöù hai coù teân laø Kyõ thuaät xem xeùt vaø ñaùnh giaù döï aùn (Project evaluation and review technique, vieát taét laø PERT) laø keát quaû nghieân cöùa cuûa moät coâng ty tö vaán theo ñaët haøng cuûa haûi quaân Myõ, duøng ñeå ñieàu haønh caùc hoaït ñoäng nghieân cöùu vaø phaùt trieån chöông trình teân löûa ñoái cöïc. Hai phöông phaùp ñöôïc hình thaønh ñoäc laäp nhöng raát gioáng nhau, cuøng nhaèm vaøo muïc ñích ñieàu haønh thôøi gian laø chính. Söï khaùc nhau chính laø trong CPM thôøi gian öôùc löôïng cho coâng vieäc, ñöôïc coi laø taát ñònh (Deterministic), coøn trong PERT coù theå laø ngaãu nhieân (Probabilistic). Ngoaøi ra CPM coù tính ñeán quan heä thôøi gian. Ngaøy nay, khi ñaõ phaùt trieån leân, hai phöông phaùp ñöôïc coi laø moät, döôùi moät teân chung laø Phöông phaùp ñieàu haønh döï aùn PERT-CPM, hoaëc Phöông phaùp sô ñoà maïng löôùi hoaëc heä thoáng kieåu PERT (PERT-type system). Noù ñöôïc duøng ñeå thöïc hieän raát nhieàu kieåu döï aùn, töø xaây döïng, laäp trình maùy tính, saûn xuaát phim ñeán vaän ñoäng tranh cöû chính trò hoaëc caùc cuoäc giaûi phaãu phöùc taïp.
Phöông phaùp ñieàu haùnh döï aùn PERT-CPM goàm ba pha (töùc laø ba khaâu): keá hoaïch, ñieàu haønh vaø kieåm tra ñieàu chænh. Pha keá hoaïch coù noäi dung laø laäp moät sô ñoà maïng löôùi (arrow network diagram hoaëc arrow diagram), töông töï moät ñoà thò coù höôùng. Pha naøy môû ñaàu baèng vieäc taùch döï aùn thaønh nhieàu hoaït ñoäng rieâng vaø ñònh thôøi gian hoaøn thaønh chuùng. Trong maïng, moãi cung coù höôùng bieåu dieãn hoaït ñoäng vaø caû sô ñoà maïng bieåu thò moái quan heä giöõa caùc hoaït ñoäng. Moãi nuùt bieåu thò moät bieán coá hoaëc söï kieän (event), ñaùnh daáu hoaøn thaønh moät soá hoaït ñoäng (activity) laø caùc cung ñi vaøo nuùt, vaø baét ñaàu caùc hoaït ñoäng öùng vôùi caùc cung ra khoûi nuùt.
Pha ñieàu haønh (scheduling phase) coù nhieäm vuï xaây döïng bieåu ñoà thôøi gian, chæ roõ thôøi ñieåm baét ñaàu vaø keát thuùc cuûa moãi hoaït ñoäng vaø moái quan heä giöõa caùc hoaït ñoäng. Noùi rieâng, ñieàu quan troïng laø phaûi tính chính xaùc caùc hoaït ñoäng tôùi haïn, töùc laø gaêng (critical), caàn chuù yù ñaëc bieät khi thöïc hieän, ñeå toaøn boä döï aùn ñöôïc hoaøn thaønh ñuùng haïn.
Pha kieåm tra bao goàm vieäc söû duïng sô ñoà maïng löôùi, vaø bieåu ñoà thôøi gian ñeå theo doõi vaø baùo caùo ñònh kì tieán trieån cuûa döï aùn. Neáu caàn thì phaûi phaân tích laïi vaø xaùc ñònh sô ñoà môùi cho phaàn döï aùn coøn laïi.
I. Laäp sô ñoà maïng löôùi
Nhö treân ñaõ noùi, pha ñaàu cuûa phöông phaùp PERT-CPM laø laäp keá hoaïch theå hieän ôû moät sô ñoà maïng löôùi, bieåu dieãn nhö moät ñoà thò coù höôùng. Haõy xeùt moät döï aùn xaây döïng moät toaø nhaø. Vieäc taùch döï aùn thaønh caùc hoaït ñoäng nhö ñaøo ñaát, xaây moùng, xaây töôøng thoâ, lôïp maùi, ñaët ñöôøng daây ñieän … laø do kieán truùc sö hoaëc kyõ sö xaây döïng laøm. Döïa vaøo ñoù, ngöôøi quaûn lyù döï aùn laäp ñöôïc sô ñoà maïng löôùi nhö H.1.1. Caùc soá beân caïnh cung laø thôøi gian thöïc hieän hoaït ñoäng ñoù.
Qua sô ñoà maïng löôùi H.1.1 ta thaáy roõ moái quan heä giöõa caùc hoaït ñoäng veà thôøi gian. Chaúng haïn hoaït ñoäng (6, 8) laø traùt ngoaøi-phaûi sau (4, 6) laø lôïp maùi, nhöng ñoäc laäp vôùi (5, 7) laø chænh töôøng trong. Cuõng vaäy (4, 7) ñoäc laäp vôùi (4, 5) vaø (5, 7). ÔÛ ñaây coù hai hoaït ñoäng giaû (dummmy activity) vôùi thôøi gian ñeå thöïc hieän baèng 0 ñöôïc ñöa vaøo ñeå ñaûm baûo qui taéc sô ñoà.
Cung giaû (11, 12), kyù hieäu bôûi ñöôøng ñöùt ñoaïn, ñöa vaøo ñeå ñaûm baûo qui taéc khoâng coù hai hoaït ñoäng cuøng bieán coá baét ñaàu vaø keát thuùc, töùc laø khoâng coù 2 cung coù cuøng goác vaø ngoïn (töùc laø ñoà thò ñôn). Vieäc sôn töôøng trong vaø laøm saøn coù cuøng bieán coá daàu laø nuùt 9, töùc laø bieán coá laùt vaùn töôøng xong, vaø bieán coá cuoái laø nuùt 12 (laøm saøn vaø sôn töôøng xong, baét ñaàu hoaøn thieän trong). Do ñoù ta phaûi theâm nuùt 11 laø bieán coá giaû vaø cung giaû (11, 12).
Cung giaû (5, 8) ñeå chæ raèng hoaït ñoäng (4, 5) phaûi hoaøn thaønh tröôùc khi baét ñaàu hoaït ñoäng (8, 10) (neáu boû cung giaû naøy thì thôøi ñieåm laøm hai vieäc laø ñoäc laäp).
Cung giaû naøy laø phuïc vuï cho qui taéc sô ñoà maïng löôùi phaûi theå hieän ñuû quan heä thöù töï caàn coù.
Neáu quan heä thôøi gian coù daïng: vieäc x2 baét ñaàu khi xong 1/3 vieäc x1, vieäc x3 baét ñaàu khi xong moät nöûa x1, thì ta phaûi theâm caùc nuùt ñaùnh daáu caùc bieán coá xong 1/3x1 vaø xong 1/2x1 ñoù nhö ôû H1.2.
1
2
3
4
5
7
9
11
12
6
8
10
13
Khôûi coâng
2 Ñaøo moùng
4 Xaây moùng
10 Xaây thoâ
6 Lôïp maùi
4 Chænh thaúng töôøng ngoaøi
Ñaët daây ñieän 7
7 Traùt ngoaøi
5 Chænh thaúng töôøng trong
9 Sôn ngoaøi
8 EÙp vaùn laùt töôøng
Laøm saøn 4 5 Sôn töôøng Hoaøn thieän ngoaøi 2
0 Hoaøn thieän trong
6
Keát thuùc
Hình 1.1
X2
X3
Toùm laïi: Sô ñoà maïng löôùi phaûi laø moät ñoà thò coù höôùng, ñôn, lieân thoâng, khoâng coù khuyeân (töùc laø cung coù goác vaø ngoïn cuøng laø moät nuùt), khoâng coù chu trình coù höôùng (directed cycle), coù nuùt khôûi coâng vaø nuùt keát thuùc.
x1 x1 x1
Hình 1.2
II. Phaân tích caùc chæ tieâu thôøi gian. Xaùc ñònh ñöôøng caêng.
Pha ñieàu haønh coù nhieäm phaân tích caùc chæ tieâu thôøi gian vaø ñöa ra caùc baûng vaø soá lieäu caàn thieát treân sô ñoà maïng löôùi. Neáu trong döï aùn phaûi ñieàu haønh caû nguyeân lieäu (hoaëc nhaân löïc) thì phaûi xeùt caû caùc chæ tieâu ñoù, ta seõ noùi ñeán ôû muïc sau.
II.1. Tính caùc thôøi ñieåm.
Chæ tieâu ôû ñaây laø thôøi ñieåm sôùm cuûa bieán coá (earliest time for an event) laø thôøi ñieåm bieán coá xaûy ra khi moïi hoaït ñoäng tröôùc noù ñöôïc baét ñaàu sôùm nhaát coù theå. Thôøi ñieåm sôùm cuûa bieán coá i thöôøng kyù hieäu laø Ei. Caùc Ei ñöôïc tính theo höôùng taêng (forward pass), töùc laø ñi töø nuùt khôûi coâng theo thöù töï taêng cuûa nuùt i. Nhö vaäy vôùi nuùt khôûi coâng 1 thì E1 = 0. Ñeán nuùt 2 trong sô ñoà H1.1 thì E2 roõ raøng baèng 2 vì bieán coá hoaøn thaønh hoaït ñoäng (1, 2) phaûi laø E1 + t12, ôû ñaây t12 laø thôøi gian thöïc hieän hoaït ñoäng (1, 2). Vieäc tính E3, E4, E5, E6, E9, E10 vaø E11 cuõng töông töï vì caùc nuùt töông öùng chæ coù moät cung vaøo, khi ñoù:
Ei = Ej + tji
ÔÛ ñaây j laø nuùt ngay tröôùc i. Chaúng haïn E6 + t46 = 16 + 6 = 22. Neáu coù nhieàu cung vaøo nuùt, töùc laø nhieàu hoaït ñoäng keát thuùc taïi bieán coá, thì töø ñònh nghóa Ei roõ raøng ñaây laø thôøi ñieåm moïi hoaït ñoäng ñoù vöøa xong caû, töùc laø phaûi laáy maximum cuûa caùc toång. Chaúng haïn
E7 = max {E4 + t45,E5 + t57} = max {16 + 7, 20 + 5} = 25,
E8 = max {E5 + t58,E6 + t68} = max {20 + 0, 22 + 7} = 29
Toång quaùt, coâng thöùc tính Ei cho moïi tröôøng hôïp laø :
Ei = maxmax {Ej + tji},
j
ôû ñaây j laø caùc nuùt ngay tröôùc i, töùc laø coù cung noái tôùi i. Caùc Ei ñöôïc ghi ôû H.1.3 laø soá ñaàu trong ngoaëc ôû moãi nuùt.
Thôøi ñieåm muoän (latest time) cuûa bieán coá j laø thôøi ñieåm muoän nhaát moïi cung ñi vaøo bieán coá j ñeàu hoaøn thaønh maø khoâng laøm thay ñoåi thôøi ñieåm keát thuùc döï aùn sôùm nhaát coù theå, kyù hieäu laø Lj. Ñoái laïi vôùi Ej, caùc Lj ñöôïc tính theo höôùng luøi (backward pass), töùc laø ñi töø nuùt keát thuùc. Theo ñònh nghóa, ôû nuùt keát thuùc thì En = Ln, ôû thí duï H.1.1 laø E13 = L13 = 44. neáu ôû bieán coá chæ coù moät cung ra, töùc laø moät hoaït ñoäng ñöôïc baét ñaàu thì, thôøi ñieåm muoän laø :
Lj =Li - tji,
Töùc laø thôøi ñieåm muoän cuûa nuùt ngay sau noù tröø ñi thôøi gian thöïc hieän hoaït ñoäng noái hai nuùt. Caùc bieán coá 12, 11, 10, 8, 7, 6, 3, 2 vaø 1 ôû H.1.1 laø tröôøng hôïp naøy. Neáu coù nhieàu cung ra khoûi bieán coá, thì theo ñònh nghóa ta coù :
Lj =
ÔÛ ñaây min theo caùc nuùt i ngay sau j vaø tji laø thôøi gian thöïc hieän hoaït ñoäng noái (j, i). Caùc nuùt 9, 5, 4 laø ôû tröôøng hôïp naøy, chaúng haïn :
L9 = min {L11 – t9 11, L12 – t9 12} = min (38 – 4, 38 - 5) = 33
Haõy chuù yù söï ‘’ñoái xöùng ‘‘ cuûa quaù trình tính Ei vaø Lj. Caùc Lj ñöôïc ghi ôû soá thöù 2 trong ngoaëc ôû moãi nuùt trong H.1.3.
II.2. Tính thôøi gian döï tröõ.
1
2
3
4
5
7
9
11
12
6
8
10
13
1
2
4
4
4
4
4
4
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
5
(38, 38)
2
4
10
4
5
8
Trong thôøi gian döï tröõ (slack hoaëc float) cuûa moät bieán coù laø hieäu thôøi ñieåm muoän vaø thôøi ñieåm sôùm cuûa noù : di = Li – Ei. Thôøi gian döï tröõ (slack hoaëc float) cuûa hoaït ñoäng ñöôïc chia laøm hai loaïi. Thôøi gian döï tröõ chung (total slack hoaëc total float) cuûa hoaït ñoäng (i, j) laø :
TFij = Lj – Ei – tij.
TFij chæ laø thôøi gian coù theå trì hoaõn cuûa hoaït ñoäng (i,j) maø khoâng aûnh höôûng ñeán thôøi ñieåm keát thuùc caû döï aùn. Vì noù baèng thôøi gian toái ña daønh cho hoaït ñoäng (i, j) laø Lj - Ei tröø ñi thôøi gian ñeå
Hình 1.3
thöïc hieän laø tij. Thôøi gian döï tröõ ñoäc laäp (free float hoaëc free slack), kyù hieäu laø FFij, cuõng laø kyù hieäu thôøi gian daønh cho (i, j) vaø thôøi gian thöïc hieän laø tij, nhöng vôùi giaû thieát laø moïi hoaït ñoäng ñeàu baét ñaàu sôùm coù theå, vaäy :
FFij = Ej – Ei – tij.
Treân sô ñoà maïng löôùi thì di laø hieäu hai soá trong ngoaëc ôû nuùt i, thöôøng ñöôïc ghi baèng soá trong oâ vuoâng caïnh nuùt. Thôøi gian döï tröõ chung cuûa hoaït ñoäng TFij ñöôïc ghi trong oâ vuoâng caïnh ôû moãi cung. Coøn thôøi gian döï tröõ ñoäc laäp cuûa hoaït ñoäng FFij ít quan troïng hôn, thöôøng khoâng ghi, xem H.1.3.
II.3. Ñöôøng gaêng. (ñöôøng tôùi haïn)
Caùc hoaït ñoäng coù thôøi gian döï tröõ chung baèng 0 caàn ñöôïc chuù yù ñaëc bieät vì trì hoaõn noù seõ aûnh höôûng ñeán thôøi gian keát thuùc döï aùn. Töø ñoù coù :
Ñònh nghóa II.3.1. Ñöôøng gaêng hoaëc ñöôøng tôùi haïn (critical path) laø moät ñöôøng ñi töø nuùt khôûi coâng ñeán nuùt keát thuùc maø moïi hoaït ñoäng treân ñöôøng ñeàu coù thôøi gian döï tröõ chung baèng 0. (Chaúng haïn treân H.1.3 coù moät ñöôøng gaêng laø 1 –> 2 –> 3 –> 4 –>5 –> 7 –> 9 –> 12 –> 13 ) hoaït ñoäng (i, j coù TFij = 0 ñöôïc goïi laø hoaït ñoäng gaêng (critital activity). Bieán coá i coù di =0 ñöôïc goïi laø bieán coá gaêng (critical event).
Moät soá tính chaát quan troïng cuûa ñöôøng gaêng laø nhö sau.
Moãi döï aùn ñeàu coù ít nhaát moät ñöôøng gaêng.
Taát caû caùc hoaït ñoäng (i, j) coù TFij = 0, töùc laø moïi hoaït ñoäng gaêng ñeàu phaûi naèm treân ñöôøng gaêng.
Moïi bieán coá gaêng, töùc laø bieán coá i coù di = 0, ñeàu phaûi naèm treân ñöôøng gaêng. Bieán coù khoâng gaêng khoâng theå naèm treân ñöôøng gaêng.
Ñöôøng noái nuùt khôûi coâng ñeán nuùt keát thuùc maø moïi bieán coá treân ñoù ñeàu gaêng coù theå khoâng phaûi ñöôøng gaêng vì coù theå coù hoaït ñoäng khoâng gaêng. Chaúng haïn ñöôøng 1 –> 2 –> 3 –> 4 –> 7 –> 9 –> 12 –> 13 khoâng gaêng vì TF47 = 2.
Ñöôøng gaêng laø ñöôøng daøi nhaát trong caùc ñöôøng noái nuùt khôûi coâng ñeán nuùt keát thuùc.
Ñieàu 5 naøy laø roõ töø ñònh nghóa vì ôû nuùt khôûi coâng vaø keát thuùc hai thôøi ñieåm sôùm vaø muoän truøng nhau vaø thôøi gian hoaøn thaønh döï aùn chính laø hieäu thôøi gian ôû hai nuùt (ôû H.1.3 laø 44 - 0). Ñöôøng gaêng laø ñöôøng goàm caùc hoaït ñoäng khoâng coù döï tröõ neân toång chieàu daøi, töùc laø thôøi gian thöïc hieän, laø toaøn boä thôøi gian thöïc hieän döï aùn (ôû H.1.3 laø 44), neân phaûi daøi nhaát. Treân H.1.3 ñöôøng gaêng ñöôïc toâ ñaäm.
Moät thí duï döï aùn coù nhieàu ñöôøng gaêng laø sô ñoà ôû H.1.3 nhöng vôùi t46 thay töø 6 thaønh 10. Khi ñoù thôøi gian döï tröõ cuûa caùc hoaït ñoäng (6, 8), (8, 10) vaø (10, 13) vaø thôøi gian döï tröõ cuûa caùc bieán coá 6, 8 vaø 10 ñeàu thay töø 4 thaønh 0. Luùc naøy ñöôøng 1 –> 2 –> 3 –> 4 –> 6 –> 8 –> 10 –> 13 laø ñöôøng gaêng thöù hai.
Caùc chæ tieâu thôøi gian cuûa döï aùn ôû H.1.3 ñöôïc ghi vaøo baûng 1.1
Bieán coá
Thôøi ñieåm sôùm
Thôøi ñieåm muoän
Thôøi gian döï tröõ
Hoaït ñoäng
Thôøi gian döï tröõ chung
1
0
0
0
(1, 2)
0
2
2
2
0
(2, 3)
0
3
6
6
0
(3, 4)
0
4
16
16
0
(4, 5)
0
5
20
20
0
(4, 6)
4
6
22
26
4
(4, 7)
2
7
25
25
0
(5, 7)
0
8
29
33
4
(6, 8)
4
9
33
33
0
(7, 9)
0
10
38
42
4
(8, 10)
4
11
37
38
1
(9, 11)
1
12
38
38
0
(9, 12)
0
13
44
44
0
(10, 13)
4
(12, 13)
0
Baûng1.1. Chæ tieâu thôøi gian xaây nhaø
Ngoaøi caùc chæ tieâu chính noùi treân, khi caàn caùc thoâng tin chi tieát hôn ñeå ñieàu haønh döï aùn, ngöôøi ta cuõng ñöa ra moät soá khaùi nieäm veà thôøi gian khaùc nöõa nhö sau.
Thôøi ñieåm khôûi coâng sôùm (earliest start) cuûa hoaït ñoäng (i, j) laø thôøi sôùm cuûa nuùt goác: ESij = Ei.
Thôøi ñieåm hoaøn thaønh sôùm (earliest completion) cuûa hoaït ñoäng (i, j) laø ECij = Ei + tij.
Thôøi ñieåm khôûi coâng muoän (latest start) cuûa hoaït ñoäng (i, j) laø LSij = Lj - tij.
Thôøi ñieåm hoaøn thaønh muoän (latest completion) cuûa hoaït ñoäng (i, j) laø LCjj = Lj töùc laø thôøi ñieåm muoän cuûa nuùt ngoïn.
Nhaän xeùt raèng ECij £ Ej , LSij ³ Li. Thaät vaäy, ta coù
Ej = {Ek + tkj} ³ Ei +tij = ECij,
Vì i cuõng laø moät trong caùc nuùt k ngay tröôùc j. Baát ñaúng thöùc thöù hai töông töï.
Thôøi gian döï tröõ cuûa moät ñöôøng ñi (total float of a path) P töø nuùt khôûi coâng ñeán nuùt keát thuùc, kyù hieäu TFp, laø thôøi gian coù theå keùo daøi theâm caùc hoaït ñoäng treân ñöôøng naøy maø khoâng aûnh höôûng ñeán thôøi ñieåm hoaøn thaønh coâng trình, töùc laø
TP = ,
ôû ñaây laø ñoä daøi ñöôøng gaêng vaø laø ñoä daøi ñöôøng P, laø toång thôøi gian thöïc hieän hoaït ñoäng treân ñöôøng P.
Heä soá gaêng (critital coefficient) bieåu thò möùc ñoä caêng thaúng veà thôøi gian cuûa moät ñöôøng P noái nuùt khôûi coâng vaø keát thuùc, khoâng phaûi ñöôøng gaêng G, ñöôïc ñònh nghóa laø
,
ôû ñaây TPG laø ñoä daøi quaõng ñöôøng (töùc laø moät phaàn cuûa ñöôøng) maø P truøng vôùi G. Roõ raøng O < KP < 1 vaø KP caøng gaàn 1 thì thôøi haïn thöïc hieän caùc hoaït ñoäng khoâng gaêng trong P caøng chaët cheõ.
Hai ñònh nghóa treân ñaây cuûa ñöôøng ñi coù theå môû roäng cho ñöôøng P coù nuùt ñaàu vaø cuoái truøng vôùi nuùt trong ñöôøng gaêng, khoâng caàn laø nuùt khôûi coâng vaø keát thuùc cuûa caû döï aùn.
Thí duï II.1. ÔÛ döï aùn treân H.1.3, ñöôøng gaêng döôïc toâ ñaäm. Thôøi ñieåm hoaøn thaønh sôùm EC68 = E6 + t68 = 22 + 7 = 29 = E8, EC10, 13 = 40 L4 = 16. Baây giôø giaû söû P laø ñöôøng ñi 1 –> 2 –> 3 –> 4 –> 5 –> 6 –> 8 –> 10 –> 13 thì TP = =40
Neân thôøi gian döï tröõ cuûa P laø TG – TP = 44 – 40 = 40. Heä soá gaêng laø
KP = (khoâng coù quaõng chung vôùi ñöôøng gaêng). Goïi Q laø ñöôøng 1 –> 2 –> 3 –> 4 –> 7 –> 9 –> 12 –> 13 thì TQ = 42, KQ = . Ta thaáy maëc duø TQ > TP nhöng thôøi haïn thöïc hieän caùc hoaït ñoäng khoâng gaêng trong P laïi chaët cheõ hôn hoaït ñoäng khoâng gaêng (4, 7) duy nhaát cuûa Q. Nguyeân nhaân laø (4, 7) laø khoâng gaêng duy nhaát, neân moïi söï nôùi loûng cuûa Q ñeàu doàn cho hoaït ñoäng naøy.
Chuù yù raèng caùc döõ lieäu thôøi gian quan troïng nhaát laø caùc chæ tieâu coù trong baûng 1.1. ÔÛ baûng naøy cuõng cho thaáy ñöôøng gaêng (ñöôøng goàm caùc hoaït ñoäng gaêng, töùc laø coù thôøi gian döï tröõ chung baèng 0).
II.4. Bieåu ñoà thôøi gian
Moät caùch truyeàn thoáng, beân caïnh sô doà löôùi baûng, ñeå theo doõi ñieàu haønh thôøi gian cho döï aùn laø duøng bieåu ñoà thôøi gian (time chart). Ta haõy xeùt caùch veõ vaø söû duïng bieåu ñoà thôøi gian qua moät thí duï.
1
2
3
4
5
6
7
Thí duï II.2. Xeùt döï aùn ôû H.1.4, vaø baûng 1.2 töông öùng. (chuù yù laø hoaït ñoäng giaû (4, 5) laïi laø hoaït ñoäng gaêng.)
H.1.4
Bieán coá
Ei
Li
di
Hoaït ñoäng
TFij
1
2
3
4
5
6
7
0
2
3
6
6
13
19
0
4
3
6
6
13
19
0
2
0
0
0
0
0
(1, 2)
(1, 3)
(2, 4)
(3, 4)
(3, 5)
(4, 5)
(4, 6)
(4, 7)
(5, 6)
(5, 7)
(6, 7)
2
0
2
0
1
0
4
11
0
8
0
Baûng 1.2
Bieåu ñoà thôøi gian cho H.1.5. ÔÛ ñaây chæ coù ttruïc hoaønh laø thôøi gian . Cao ñoä khoâng quan troïng. Ta bieåu dieãn caùc hoaït ñoäng gaêng phía treân. Ñoä daøi (thôøi gian) laø coá ñònh, chaët cheõ cho caùc hoaït ñoäng gaêng. Hoaït ñoäng giaû (4, 5) coù ñoä daøi baèng 0 neân bieåu dieãn baèng ñoaïn ñöùng.
Moãi hoaït ñoäng khoâng gaêng bieåu dieãn ôû ñoä cao khaùc nhau ñeå nhìn roõ vì caùc hoaït ñoäng naøy coù ñoä cô ñoäng vaø ñöôïc ñieàu haønh baèng bieåu ñoà thôøi gian.
1
1
3
5
4
2
2
3
4
5
4
4
5
6
6
7
7
7
0 2 3 4 6 10 13 16 19
2
2
3
2
5
Hình: 1.5
Bieåu ñoà ñöôïc veõ töø caùc Ei vaø Li ôû Baûng1.2 (hoaït ñoäng gaêng hay khoâng gaêng thì theo TFij baèng 0 hay khaùc 0). Caùc soá khoâng coù voøng chæ thôøi gian thöïc hieän cuûa hoaït ñoäng. Chaúng haïn hoaït ñoäng (1, 2) thöïc hieän trong 2 ñôn vò thôøi gian, ñöôïc pheùp xeâ dòch trong khoaûng thôøi gian 4 ñôn vò (töø 0 ñeán 4). Xeùt saâu hôn thì söï xeâ dòch coù töï do trong khoaûng thôøi gian naøy khoâng laø phuï thuoäc vaøo FFij = TFij. Neáu FFij = TFij thì hoaït ñoäng (i, j) coù theå cô ñoäng tuyø yù trong khoaûng thôøi gian veõ bieåu ñoà. Neáu FFij < TFij thì hoaït ñoäng (i, j) chæ ñöôïc baét ñaàu muoän hôn thôøi ñieåm khôûi coâng sôùm ESij moät khoaûng thôøi gian khoâng quaù FFij thì môùi khoâng aûnh höôûng ñeán caùc hoaït ñoäng ngay sau noù (duy nhaát) laø
(2, 4) môùi ñöôïc xeâ dòch tuyø yù trong khoaûng thôøi gian 2 ñeán 6. Neáu (1, 2) thöïc hieän luøi laïi khoaûng 1 ñeán 3 chaúng haïn, thì aûnh höôûng ñeán hoaït ñoäng (2, 4). Maëc duø coù FF24 = TF24 nhöng luùc naøy coù chæ coøn ñöôïc xeâ dòch thöïc hieän trong khoaûng töø 3 ñeán 6.
III. Ñieàu khieån nhaân löïc.
Caùc hoaït ñoäng khoâng gaêng ñöôïc pheùp xeâ dòch nhaát ñònh, nhaát laø khi FFij = TFij. Coù theå saép ñaët chuùng ñaùp öùng caùc yeâu caàu khaùc nöõa. Ngoaøi thôøi gian ra, chaúng haïn nhaân löïc, nguyeân lieäu, chi phí …Veà maët toaùn hoïc xöû lyù yeâu caàu loaïi naøo cuõng vaäy. ÔÛ ñaây ta noùi theo ngoân ngöõ nhaân löïc chaúng haïn.
Thí Duï III.1. Giaû söû nhaân löïc cho caùc hoaït ñoäng cuûa döï aùn ôû Thí Duï II.2 ñoøi hoûi nhö sau:
Hoaït ñoäng
Soá nhaân coâng
Hoaït ñoäng
soá nhaân coâng
(1, 2)
0
(4, 6)
2
(1, 3)
5
(4, 7)
1
(2, 4)
0
(5, 6)
2
(3, 4)
7
(5, 7)
5
(3, 5)
3
(6, 7)
6
Chuù yù raèng taïi thôøi ñieåm hai hoaït ñoäng cuøng tieán haønh thì soá nhaân löïc caàn laø toång hai soá coâng nhaân. Vì vaäy caàn phaûi saép xeáp kheùo caùc hoaït ñoäng khoâng gaêng ñeå ñoøi hoûi toång nhaân coâng cuûa caû döï aùn ít (taïm coi laø moãi ngöôøi bieát laøm moïi vieäc). Vieäc saép xeáp toái öu laø phöùc taïp, ñeán nay ta söû duïng bieåu ñoà thôøi gian bieåu dieãn theâm nhaân löïc ñeå saép xeáp theo tröïc quan. H.1.6 (a) bieåu dieãn toång coâng nhaân caàn ôû moãi thôøi ñieåm neáu taát caû caùc hoaït ñoäng khoâng gaêng xeáp vaøo luùc sôùm nhaát coù theå, coøn H.1.6 (b) laø töông öùng khi xeáp vaøo luùc muoän nhaát coù theå. Hai bieåu ñoà naøy neân veõ thaúng döôùi H.1.5 nöõa. Saép ñaët sôùm nhaát ôû hình (a) cho thaáy ôû moãi thôøi ñieåm döï aùn caàn nhieàu nhaát laø 10 coâng nhaân coøn ôû saép ñaët muoän nhaát (b) laø 12 coâng nhaân. ÔÛ hai phöông aùn naøy, soá coâng nhaân caàn ôû caùc thôøi ñieåm khoâng ñeàu. Theo tröïc quan ta chænh laïi töø (a) nhö sau: chuyeån hoaït ñoäng (4, 6) ñeáân thôøi ñieåm muoän nhaát coù theå, chuyeån (4, 7) ñeán ngay sau khi (5, 7) keát thuùc. Keát quaû ñöôïc veõ laïi ôû bieåu ñoà H.1.7. (chuù yù laø hoaït ñoäng (1, 2) vaø (2, 4) khoâng caàn coâng nhaân neân khoâng caàn veõ.).
Soá coâng nhaân
2 5 6 7 8 10
Soá nhaân coâng
2 5 6 7 8 10 12
Thôøi gian
Thôøi gian
3 4 6 10 11 13 14 17 19
3 4 6 10 11 13 14 17 19
(3, 5) (4, 7)
(4, 6)
(3, 4) (5, 7)
(1, 3) (6, 7)
(5, 6)
H .I.6 (a)
(4, 7)
(3, 5)
(3, 4) (5, 7)
(1, 3) (4, 6) (6, 7)
(5, 6)
H .I.6 (b)
1
1
3
4
5
6
7
4
6
71
7
5
5
3
41
2
2
4
Thôøi gian
Soá coâng nhaâ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
Hình 1.7
IV. Hoaøn thaønh sôùm döï aùn.
Treân ñaây ñaõ xeùt thôøi ñieåm hoaøn thaønh döï aùn laø coá ñònh vaø xaùc ñònh caùc ñöôøng gaêng, phaûi thöïc hieän chaët cheõ ñeå döï aùn hoaøn thaønh ñuùng thôøi gian qui ñònh. Neáu muoán giaûm thôøi gian hoaøn thaønh döï aùn thì laøm theá naøo ? Ta cuõng söû duïng ñöôøng gaêng, nhöng phaûi döïa vaøo kyõ thuaät vaø coâng ngheä, chöù khoâng phaûi quaûn lyù baèng toaùn hoïc ñöôïc nöõa. Cuï theå laø phaûi duøng coâng ngheä môùi, taêng vaät tö, coâng nhaân .. ñeå coù thôøi gian thöïc hieän caùc hoaït ñoäng ngaén hôn. Nhöng taäp chung vaøo hoaït ñoäng naøo ? Roõ raøng laø vaøo caùc hoaït ñoäng gaêng. Cuï theå laø neáu ta quan taâm ñeán haïn cheá chi phí thì vôùi (i, j) Î G, tìm soá gia chi phí DCij khi ñaït ñöôïc ruùt ngaén thôøi gian thöïc hieän hoaït ñoäng laø Dtij (tìm baèng thöïc teá coâng ngheä, khoâng phaûi thuaàn tuyù toaùn hoïc). Khi ñoù seõ choïn caùch taêng chí phí ñeå giaûm thôøi gian sao cho ñaït . Giaû söû cöïc tieåu laø . Khi ñoù ñoä daøi ñöôøng gaêng môùi, töùc laø thôøi gian hoaøn thaønh döï aùn môùi, laø
ôû ñaây toång laáy treân moïi hoaït ñoäng gaêng.
V. Döï aùn coù tính ngaãu nhieân.
Trong caùc muïc treân ta ñaõ coi thôøi gian thöïc hieän caùc hoaït ñoäng tij laø xaùc ñònh hoaøn toaøn töø ñaàu, khi laäp sô ñoâ maïng löôùi. Do ñoù ta coù moâ hình taát ñònh (detreministic model). Trong thöïc teá, nhieàu yeáu toá baát ñònh phaûi ñöôïc tính ñeán, do ñoù thôøi gian thöïc hieän hoaït ñoäng (i, j) laø moät bieán ngaãu nhieân (random variable), maø ta chæ xaùc ñònh ñöôïc phaân boá xaùc suaát (probability distributtion) qua kinh nghieäm vaø soâù lieäu thoáng keâ. Töø ñoù daãn ñeâùn phaûi söû duïng moâ hình ngaãu nhieân hoaëc goïi khaùc laø moâ hình xaùc suaát (probabilistic model). Vieäc tính toaùn caùc chæ tieâu ñeå ñieàu haønh döï aùn coù hai nhieäm vuï chính. Moät laø tính kyø voïng (mean hoaëc expected value) cuûa caùc ñaïi löôïng caàn tính, chaúng haïn thôøi gian thöïc hieän hoaït ñoäng (activity time), thôøi gian hoaøn thaønh döï aùn (project time), vaø phöông sai (variance) cuûa caùc ñaïi löôïng naøy. Hai laø tính xaùc suaát cuûa bieán coá naøo ñoù, chaúng haïn bieán coá laø döï aùn hoaøn thaønh tröôùc thôøi ñieåm T.
Thôøi gian thöïc hieän moãi hoaït ñoäng, thöôøng goïi taét laø thôøi gian hoaït ñoäng, trong moâ hình ngaãu nhieân thöôøng ñöôïc giaû thieát laø xaùc ñònh ñöôïc ba yeâùu toá sau. Thôøi gian laïc quan (optimistic time) kyù hieäu laø a, laø thôøi gian caàn ñeå laøm xong khi hoaït ñoäng ñöôïc thöïc hieän thuaän lôïi nhaát. Thôøi gian naøy raát khoù ñaït ñöôïc. Theo lyù thuyeát thoáng keâ, thì ñaây thöïc chaát laø caän döôùi (lower bound) cuûa phaân boá xaùc suaát. Thôøi gian bi quan (pressimistic time), kyù hieäu laø b, laø thôøi gian caàn ñeå xong hoaït ñoäng khi tieân haønh gaëp truïc traëc nhaát, töùc laø caän treân (upper bound) cuûa phaân boá xaùc suaát. Thôøi gian hôïp lyù nhaát (most likely time), kyù hieäu laø m, laø thôøi gian hieän thöïc nhaát, töùc laø coù xaùc suaát lôùn nhaát (ñænh cao nhaát cuûa haøm maät ñoä). Ba löôïng treân chöa ñuû ñeå xaùc ñònh phaân boá xaùc suaát cuûa thôøi gian hoaït ñoäng. Do ñoù chöa ñuû ñeå xaùc ñònh kyø voïng te töùc laø giaù trò trung bình theo xaùc suaát, vaø phöông sai d2 ñaëc tröng cho ñoä leäch khoûi te cuûa thôøi gian hoaït ñoäng. Moâ hình caàn hai gaûi thieát phuø hôïp thöïc teá sau ñaây.
Giaû thieát 1. b - a, töùc laø ñoä daøi khoaûng maø thôøi gian hoaït ñoäng coù theå laáy, baèng 6 laàn ñoä leäch chuaån (standard deviasion), töùc laø ta coù phöông sai
. (1.1)
Ñieàu naøy ñuùng cho nhieàu bieán ngaãu nhieân hay gaëp.
Giaû thieát 2. Phaân boá xaùc suaát cuûa moãi thôøi gian hoaït ñoäng ñeâøu laø phaân boá beta (beta distribution).
Ta haõy nhaéc laïi vaøi kieán thöùc xaùc suaát. Moãi ñaïi löông ngaãu nhieân x coù hai haøm quan troïng nhaát. Haøm maät ñoä xaùc suaát (probability density fuction) f(x), a £ x £ b, vaø haøm phaân boá tích luyõ (cumulative distribution function) F(X), goïi laø haøm phaân boá. ÔÛ ñaây giaû thieát laø x chæ laáy giaù trò trong [a, b] . Ta coù caùc quan heä sau
ôû ñaây xe laø kyø voïng vaø s2 laø phöông sai cuûa bieán ngaãu nhieân x, P {…} laø xaùc suaát cuûa bieán coá {…}. Moãi moät trong haøm maät ñoä hoaëc haøm phaân phoái ñaëc tröng hoaøn toaøn cho bieán ngaãu nhieân. Kyø voïng vaø phöông sai laø caùc ñaïi löôïng quan troïng. Ta cuõng noùi laø haøm maät ñoä (hoaëc haøm phaân boá), xaùc ñònh hoaøn toaøn phaân boá xaùc suaát. Phaân boá beta (beta distribution) laø moät trong caùc phaân boá xaùc suaát phoå bieán nhaát, xaùc ñònh bôûi haøm maät ñoä sau, neáu 0 £ x £ 1,
, (1.2)
ôû ñaây a, b laø tham soá, G(.) laø haøm ñaëc bieät gamma vaø B(., .) laø haøm ñaëc bieät beta, ñöôïc ñònh nghóa baèng tích phaân phuï thuoäc tham soá
f(x) a b a=1, b=2 a = b a=2, b=2
a=b=1
m 1 x
Hình 1.8
Neáu y laáy giaù trò treân [a, b] vaø coù phaân boá theo beta thì haøm maät ñoä nhaân ñöôïc töø (4.2) baèng ñoåi bieán y = a + (b - a)x. Chaúng haïn, haøm maät ñoä cuûa phaân boá beta coù daïng nhö H.1.8 vôùi a ³ 1, b ³ 1 vaø a = 0, b = 1.
f(x)
m
x
Phaân boá chuaån (normal distribution) laø phaân boá xaùc suaát phoå bieán nhaát, ñònh nghóa bôûi haøm maät ñoä sau.
Hình 1.9
ôû ñaây tham soá m chính laø kyø voïng vaø s2 chính laø phöông sai cuûa bieán ngaãu nhieân x coù phaân boá chuaån. Khi ñoù bieán coù phaân boù laø phaân boâù chuaån vôùi kyø voïng 0, phöông sai laø 1. Haøm maät ñoä cuûa phaân boá chuaån coù daïng ôû H.1.9
Caùc bieán ngaãu nhieân x1, …, xn ñöôïc goïi laø ñoäc laäp (independent) neáu.
P{x1 £ X1, …, xn £ Xn} = P{x1 £ Xn},
Ñònh nghóa giôùi haïn trung taâm (centrer – limit thoerem) noùi raèng vôùi caùc ñieàu kieän khaù nheï, toång caùc bieán ngaãu nhieân ñoäc laäp luoân coù phaân boá chuaån (khoâng phuï thuoäc vaøo phaân boá cuûa töøng bieán ngaãu nhieân).
Trôû laïi moâ hình ngaãu nhieân ñieàu haønh döï aùn. Ñeå tính kyø voïng te cuûa thôøi gian hoaït ñoäng, ngöôøi ta giaû thieát laø ñieåm giöõa chieám tyû troïng baèng nöûa ñieåm hôïp lyù nhaát m. Khi ñoù
(II.3)
Thí duï V.1. Giaû söû döï aùn xaây nhaø ôû H.1.1 baây giôø coù caùc thôøi gian hoaït ñoäng laø ngaãu nhieân coù phaân boá beta thoaû hai giaû thieát treân vaø xaùc ñònh ñöôïc ba moác thôøi gian laïc quan, bi quan vaø hôïp lyù nhaát theo baûng1.3. Khi ñoù phöông sai vaø kyø voïng cuûa caùc thôøi gian hoaït ñoäng, tình theo coâng thöùc (4, 1) vaø (4, 3) ñöôïc ghi ôû hai coät cuoái.
Hoaït ñoäng
Thôøi gian laïc quan a
Thôøi gian hôïp lyù nhaát m
Thôøi gian bi quan b
Kyø voïng te
Phöông sai s2
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(4, 6)
(4, 7)
(5, 7)
(6, 8)
(7, 9)
(8, 10)
(9, 11)
(9, 12)
(10, 13)
(12, 13)
1
2
6
1
4
3
4
5
3
5
4
1
1
5
2
9
4
9
8
4
2
3
8
18
5
10
9
10
11
9
17
4
7
3
9
2
4
10
4
6
7
5
7
8
9
4
5
2
6
1
4
1
1
1
1
1
4
0
4
Baûng 1.3
Nhaän xeùt raèng coät kyø voïng ôû Baûng1.3, do thí duï ñöôïc xaây döïng ñaëc bieät, truøng hoaøn toaøn vôùi caùc thôøi gian hoaït ñoäng trong moâ hình taát ñònh ñaõ xeùt ôû H.1. Do ñoù ñöôøng gaêng xaây döïng treân caùc thôøi gian hoaït ñoäng kyø voïng truøng vôùi ñöôøng gaêng cuûa moâ hình taát ñònh ôû H.1.2 vaø thôøi gian cuûa ñöôøng gaêng naøy laø 44.
Tuy nhieân ñeå xaùc ñònh kyø voïng vaø phöông sai cuûa thôøi gian döï aùn, ta caàn theâm hai giaû thieát sau.
Giaû thieát 3. Caùc thôøi gian hoaït ñoäng laø caùc bieán ngaãu nhieân ñoäc laäp.
Giaû thieát 4. Ñöôøng gaêng xaây döïng treân caùc thôøi gian hoaït ñoäng kyø voïng, luoân ñoøi hoûi thôøi gian (hoaøn thaønh moïi hoaït ñoäng treân noù) lôùn hôn caùc ñöôøng khaùc.
Tính thaät chi ly trong caùc thí duï cuï theå thì hai giaû thieát 3 vaø 4 coù theå khoâng ñuùng. Chaúng haïn, ôû Thí duï V.1, neáu saûy ra thôøi gian bi quan ôû moïi hoaït ñoäng thì ñöôøng gaêng ñaõ tính laø 69 (ngaøy). Coøn ñöôøng 1 –> 2 –> 3 –> 4 –> 5 –> 7 –> 9 –> 12 –> 13 coù thôøi gian bi quan laø 70. Tuy vaäy ngöôøi ta vaãn chaáp nhaän caùc giaû thuyeát xaáp xæ naøy. Khi ñoù, vì kyø voïng vaø phöông sai cuûa toång caùc bieán ngaãu nhieân laø toång cuûa caùc kyø voïng vaø phöông sai neân ta coù: Kyø voïng vaø phöông sai cuûa thôøi gian döï aùn laø toång caùc kyø voïng vaø phöông sai cuûa caùc thôøi gian hoaït ñoäng treân ñöôøng gaêng (xaây döïng theo caùc kyø voïng). Ñeán ñaây ta nhaän xeùt raèng moät trong caùc caùch aùp duïng thöïc teá laø duøng caùc kyø voïng cuûa caùc bieán, roài aùp duïng moïi tính toaùn vaø lyù luaän ôû caùc muïc tröôùc vaøo caùc kyø voïng, thay cho caùc bieán taát ñònh.
ÔÛ Thí duï V.1 kyø voïng vaø phöông sai cuûa thôøi gian döï aùn laø 44 vaø 9, vì ñöôøng gaêng laø 1 –> 2 –> 3 –> 4 –> 5 –> 7 –> 9 –> 12 –> 13 .
Baây giôø ta xeùt vaán ñeà quan troïng laø tính xaùc suaát ñeå döï aùn hoaøn thaønh tröôùc moät thôøi haïn baét buoäc (deadline). Theo ñònh lyù giôùi haïn trung taâm, thôøi gian döï aùn laø bieán ngaãu nhieân coù phaân boá chuaån. Do ñoù ta tính ñöôïc xaùc suaát P(x £ X), thöôøng ñöôïc tính saün ñeå tra theo baûng. Chaúng haïn Baûng A1 ôû cuoái saùch cho bieát P {x £ xe + sKa}, ôû ñaây s laø ñoä leäch chuaån. Do ñoù Ks laø ñôn vò leäch chuaån.
Thí duï, haõy tính xaùc suaát ñeå thôøi gian xaây nhaø ôû Thí duï V.1 khoâng quaù 47 ngaøy. Ta thaáy 47 = 44 + 3.1 = xe + sKs neân Ks = 1. Theo baûng thì P {x ³ 47} = 0,1584. Do ñoù xaùc suaát caàn tìm laø @ 1 – 0,1584 @ 0,84.
Phöông phaùp ñieàu haønh döï aùn coù tính ngaãu nhieân treân ñaây thöôøng ñöôïc goïi laø phöông phaùp ba öôùc löôïng PERT (PERT three estimate method).
Neáu caàn tính caùc yeáu toá thôøi gian ôû caùc bieán coá trung gian (khoâng chæ thôøi gian hoaøn thaønh döï aùn, töùc laø bieán coá cuoái) thì ta lyù luaän nhö sau. Tröôùc heát tính kyø voïng vaø phöông sai cuûa thôøi ñieåm sôùm mi cuûa bieán coá i. Neáu chæ coù moät ñöôøng töø khôûi coâng ñeán i thì, do caùc hoaït ñoäng laø ñoäc laäp kyø voïng cuûa mi kyù hieäu laø E(mi), baèng toång caùc kyø voïng te cuûa thôøi gian caùc hoaït ñoäng daãn ñeán i. Khi coù nhieàu ñöôøng daãn ñeán i thì ngöôøi ta coi xaáp xæ (ñeå ñôn giaûn) E(mi) vaø Var(mi) laø toång caùc te vaø s2 cuûa caùc hoaït ñoäng theo ñöôøng ñeán i coù toång E(mi) daøi nhaát. Neáu coù nhieàu ñöôøng vôùi cuøng E(mi) thì Var(mi) quy öôùc laáy löôïng cuûa ñöôøng coù toång caùc s2 daùi nhaát.
Baây giôø haõy tính xaùc suaát ñeå bieán coá i xong tröôùc thôøi gian baét buoäc Ti cho tröôùc. Theo ñònh lyù giôùi haïn trung taâm mi tuaân theo phaân boá chuaån, ta chæ vieäc tra baûng caùc xaùc suaát öùng vôùi phaân boá chuaån ñeå tính P{mi £ Ti}. Cuï theå, ñeå tra baûng, quy veà tröôøng hôïp ñaïi löông z coù phaân boá chuaån vôùi kyø voïng 0 vaø phöông sai 1 nhö sau:
,
ôû ñaây ñaõ bieát.
VI. Döï aùn coù thoaû hieäp thôøi gian – Cöôùc phí.
Trong caùc muïc tröôùc ta trình baøy veà caùc döïa aùn coù yeâu caàu chuû yeáu laø ñieàu haønh thôøi gian. Theo ngoân ngöõ ban ñaàu thì ñaây laø phöông phaùp PERT, caùc thôøi gian ôû ñaây coù theå xeùt nhö caùc bieán taát ñònh hoaëc ngaãu nhieân. Coøn phöông phaùp ñöôøng gaêng PCM thì ñaët ngang nhau veà thôøi gian vaø cöôùc phí. Muïc tieâu chính cuûa PCM laø choïn caùch thoaû hieäp thôøi gian thöïc hieän moãi hoaït ñoäng (theo ngoân ngöõ hình hoïc) töùc laø bieát ñöôøng cong thôøi gian – cöôùc phí (time – cost curve) cuûa moãi hoaït ñoäng. Trong moâ hình toaùn hoïc (xaáp xæ thoâ tình traïng thöïc teá) ngöôøi ta giaû thieát quan heä thôøi gian vaø cöôùc phiù laø tuyeán tính. Do ñoù chæ caàn bieát hai ñieåm. Ngöôøi ta choïn hai ñieån nuùt nhö sau:
Ñieåm chuaån (normal point) coù toaï ñoä laø thôøi gian vaø cöôùc phí cuûa hoaït ñoäng khi noù ñöôïc tieán haønh trong ñieàu kieän bình thöôøng, töùc laø chuaån, khoâng coù cöôùc phí boå xung taêng cöôøng (nhö laøm ngoaøi giôø, taêng thieát bò nhaân löïc …). Cöïc ñieåm (crash point) laø ñieåm öùng vôùi thôøi gian vaø cöôùc phí khi ñaàu tö heát möùc ñeå thôøi gian thöïc hieän hoaït ñoäng ngaén nhaát coù theå. Moïi ñieåm trung gian giöõa ñieåm chuaån vaø cöïc ñieåm, töùc laø moïi caùch thoaû hieäp thôøi gian cöôùc phí (time – cost trade - off) ñeàu coi laø chaáp nhaän ñöôïc, xem H.1.10.
Cöôùc phí tröïc tieáp
Kij
Cdij
Cöïc ñieåm
Ñieåm chuaån
Thôøi gian
Cxij
CDij
dij
xij
Dij
Hình 1.10
Ñöôøng cong thôøi gian – cöôùc phí cuûa hoaït ñoäng (i, j).
Caùc kyù hieäu treân H.1.10 roõ raøng nhö sau. Dij laø dij laø thôøi gian chuaån vaø thôøi gian cöïc ñieåm. CDij vaø Cdij laø cöôùc phí chuaån (normal cost) vaø cöôùc phí cöïc ñieåm (crash cost), ñeàu cuûa hoaït ñoäng (i, j). Goïi xij (thôøi gian thöïc hieän hoaït ñoäng (i, j)) laø bieán quyeát ñònh (decision variable) cuûa baøi toaùn maø ta caàn tính. Goïi Sij laø ñoä xieân, töùc laø heä soá goùc ñöôøng thaúng bieåu thò ñöôøng cong thôøi gian – cöôùc phí , töùc laø:
.
Goïi Kij laø tung ñoä ñieåm ñöôøng thaúng caét truïc tung. Khi ñoù cöôùc phí cuûa hoaït ñoäng (i, j) töông öùng vôùi thôøi gian hoaït ñoäng (i, j) öùng vôùi thôøi gian hoaït ñoäng xij roõ raøng laø:
Baøi toaùn: Choïn caùc xij ñeå thôøi gian döï aùn khoâng quaù thôøi haïn baét buoäc T cho tröôùc vaø laøm cöïc tieåu cöôùc phí döï aùn C.
Nhaän xeùt raèng caùc yeáu toá cuûa baøi toaùn ñeàu laø tuyeán tính, ta coá gaéng ñöa veà quy hoaïch tuyeán tính nhö sau:
Ñöa vaøo caùc bieán boå xung yk laø thôøi ñieåm sôùm Ek cuûa bieán coá k. Khi ñoù quan heä giöõa caùc bieán theo Muïc 4.2 laø
, (1, 4)
ôû ñaây max laáy theo caùc bieán coá j ngay tröôùc k, töùc laø coù hoaït ñoäng noái (j, k). Kyù hieäu yk = Ek, tjk = xjk vaø vieát laïi (4, 4) ta ñöôïc
yi + xjk – yk £ 0
(soá raøng buoäc laø soá caùc bieán coá ngay tröôùc k). Goïi 1 laø nuùt xuaát phaùt vaø n laø nuùt keát thuùc döï aùn thì
y1 = 0, yn £T.
ÔÛ muïc tieâu thì Kij laø haèng. Toùm laïi ta ñöôïc quy hoaïch tuyeán tính
Ñeå ñöa veà quy hoaïch tuyeán tính daïng chuaån ta laøm nhö sau. Ñoåi bieán xij = dij + x’ij thì raøng buoäc xij ³ dij trôû thaønh raøng buoäc daáu x’ij ³ 0. Theâm raøng buoäc hình thöùc yi ³ 0, "i. Raøng buoäc naøy töï nhieân thoaû do y1 = 0 vaø yj ³ yi + dij + X’ij.
Tröôøng hôïp khoâng coù thôøi haïn baét buoäc T cho tröôùc, töùc laø caàn tìm thoaû hieäp toát nhaát giöõa toång cöôùc phí vaø toång thôøi gian döï aùn, ngöôøi ta coi T laø tham soá vaø giaûi quy hoaïch tuyeán tính tham soá ñeå ñöôïc nghieäm toái öu nhö haøm cuûa T.
VII. Kieåm tra hieäu chænh döï aùn.
Sau khi duøng phöông phaùp ñieàu haønh döï aùn PERT – CPM xaùc ñònh ñöôïc sô ñoà maïng löôùi, caùc bieåu ñoà vaø baûng tính caùc chæ tieâu vaø döï aùn ñang ñöôïc tieán haønh, ngöôøi quaûn lyù luoân phaûi theo doõi, kieåm tra. Ñieàu kieän lao ñoäng thöïc teá coù theå nhieàu baát ngôø. Khi caàn thieát coù theå phaûi duøng phöông phaùp PERT – CPM laïi, döïa treân caùc döõ lieäu môùi, ñeå tính toaùn cho phaàn coøn lai cuûa döï aùn. Sau ñoù ñieàu haønh döï aùn theo caùc bieåu ñoà vaø baûng tính môùi.
CHÖÔNG 2
CÔ SÔÛ VEÀ LYÙ THUYEÁT ÑOÀ THÒ
Moät soá khaùi nieäm cô baûn.
Lyù thuyeát ñoä thò laø moät lónh vöïc nghieân cöùu ñaõ coù töø laâu vaø coù nhieàu öùng duïng hieän ñaïi. Nhöõng tö töôûng cô baûn cuûa lyù thuyeát ñoà thò ñöôïc ñeà xuaát vaøo nhöõng naêm ñaàu cuûa theá kyû 18 bôûi nhaø toaùn hoïc loãi laïc ngöôøi Thuïy Syõ Euler. Chính oâng laø ngöôøi söû duïng ñoà thò ñeå giaûi baøi toaùn noåi tieáng veà caùi caàu ôû thaønh phoá Konigsberg.
Ñoà thò ñöôïc söû duïng ñeå giaûi caùc baøi toaùn trong nhieàu lónh vöïc khaùc nhau. Chaúng haïn, ñoà thò coù theå söû duïng ñeå xaùc ñònh caùc maïch voøng trong vaán ñeà giaûi tích maïch ñieän. Chuùng ta coù theå phaân bieät caùc hôïp chaát hoùa hoïc höõu cô khaùc nhau vôùi cuøng coâng thöùc phaân töû nhöng khaùc nhau veà caáu truùc phaân töû nhôø ñoà thò. Chuùng ta coù theå xaùc ñònh xem hai maùy tính trong maïng coù theå trao ñoåi thoâng tin ñöôïc vôùi nhau khoâng nhôø moâ hình ñoà thò cuûa maïng maùy tính. Ñoà thò coù troïng soá treân caùc caïnh coù theå söû duïng ñeå giaûi baøi toaùn nhö: Tìm ñöôøng ñi ngaén nhaát giöõa hai thaønh phoá trong moät maïng giao thoâng. Chuùng ta coøn söû duïng ñoà thò ñeå giaûi caùc baøi toaùn veà laäp lòch, thôøi khoùa bieåu, vaø phaân boá taàn soá cho caùc traïm phaùt thanh vaø truyeàn hình…
1.1. Ñònh nghóa ñoà thò.
Ñoà thò laø moät caáu truùc rôøi raïc bao goàm caùc ñænh vaø caùc caïnh noái caùc ñænh naøy. Chuùng ta phaân bieät caùc loaïi ñoà thò khaùc nhau bôûi kieåu vaø soá löôïng caïnh noái hai ñænh naøo ñoù cuûa ñoà thò. Ñeå coù theå hình dung ñöôïc taïi sao laïi caàn ñeán caùc loaïi ñoà thò khaùc nhau, chuùng ta seõ neâu ví duï söû duïng chuùng ñeå moâ taû moät maïng maùy tính. Giaû söû ta coù moät maïng goàm caùc maùy tính vaø caùc keânh ñieän thoaïi (goïi taét laø keânh thoaïi) noái caùc maùy tính naøy.
Ñònh nghóa 1: Ñôn ñoà thò voâ höôùng G = (V,E) bao goàm V laø taäp hôïp caùc ñænh vaø E laø taäp hôïp caùc caëp khoâng coù thöù töï goàm hai phaàn töû khaùc nhau cuûa V goïi laø caùc caïnh.
Trong tröôøng hôïp giöõa hai maùy tính naøo ñoù thöôøng xuyeân phaûi truyeàn taûi nhieàu thoâng tin ngöôøi ta phaûi noái hai maùy tính naøy bôûi nhieàu keânh thoaïi.
Ñònh nghóa 2: Ña ñoà thò voâ höôùng G = (V,E) bao goàm laø taäp caùc ñænh, vaø E laø hoï caùc caëp khoâng coù thöù töï goàm hai phaàn töû khaùc nhau cuûa V goïi laø caùc caïnh. Hai caïnh e1 vaø e2 ñöôïc goïi laø caïnh laëp neáu chuùng cuøng töông öùng vôùi moät caëp ñænh.
Roõ raøng moãi ñôn ñoà thò ñeàu laø ña ñoà thò, nhöng khoâng phaûi ña ñoà thò naøo cuõng laø ñôn ñoà thò, vì ña ñoà thò coù theå coù 2 (hoaëc nhieàu hôn) caïnh noái moät caëp ñænh naøo ñoù.
Trong maïng maùy tính coù theå coù nhöõng keânh thoaïi noái moät maùy naøo ñoù vôùi chính noù (chaúng haïn vôùi muïc ñích thoâng baùo). Maïng nhö vaäy ñöôïc cho trong hình 3. Khi ñoù ña ñoà thò khoâng theå moâ taû ñöôïc maïng nhö vaäy, bôûi vì coù nhöõng khuyeân (caïnh noái moät ñænh vôùi chính noù ). Trong tröôøng hôïp naøy chuùng ta caàn söû duïng ñeán caùc khaùi nieäm giaû ñoà thò voâ höôùng, ñöôïc ñònh nghóa nhö sau:
Ñònh nghóa 3: Giaû ñoà thò voâ höôùng G = (V,E) bao goàm V laø taäp caùc ñænh, vaø E laø hoï caùc caëp khoâng coù thöù töï goàm hai phaàn töû (khoâng nhaát thieát phaûi khaùc nhau) cuûa V goïi laø caùc caïnh. Caïnh e ñöôïc goïi laø khuyeân neáu coù daïng e = (u,u).
Ñònh nghóa 4: Ñôn ñoà thò coù höôùng G =(V,E) bao goàm V laø taäp caùc ñænh, vaø E laø taäp caùc caëp coù thöù töï goàm hai phaàn töû khaùc nhau cuûa V goïi laø caùc cung.
Neáu trong maïng coù theå coù ña keânh thoaïi moät chieàu, ta phaûi söû duïng ñeán khaùi nieäm ña ñoà thò coù höôùng:
Ñònh nghóa 5: Ña ñoà thò coù höôùng G= (V,E) bao goàm V laø taäp caùc ñænh, vaø E laø hoï caùc caëp coù thöù töï goàm hai phaàn töû khaùc nhau cuûa V goïi laø caùc cung. Hai cung e1 vaø e2 töông öùng vôùi cuøng moät caëp ñænh ñöôïc goïi laø cung laëp.
Chuùng ta chuû yeáu seõ laøm vieäc vôùi ñôn ñoà thò voâ höôùng vaø ñôn ñoà thò coù höôùng.
1.2. Caùc thuaät ngöõ cô baûn.
Tröôùc tieân ta xeùt thuaät ngöõ moâ taû caùc ñænh vaø caùc caïnh cuûa ñoà thò voâ höôùng.
Ñònh nghóa 1: Hai ñænh u vaø v cuûa ñoà thò voâ höôùng G ñöôïc goïi laø keà nhau neáu (u,v) laø caïnh cuûa ñoà thò G. Neáu e = (u,v) laø caïnh cuûa ñoà thò thì ta noùi caïnh naøy laø lieân thuoäc vôùi hai ñænh u vaø v, hoaëc cuõng noùi laø caïnh e laø noái ñænh u vaø ñænh v, ñoàng thôøi caùc ñænh u vaø v seõ ñöôïc goïi laø caùc ñænh ñaàu cuûa caïnh (u,v).
Ñeå coù theå bieát bao nhieâu caïnh lieân thuoäc vôùi moät ñænh, ta ñöa vaøo ñònh nghóa sau:
Ñònh nghóa 2: Ta goïi baäc cuûa ñænh v trong ñoà thò voâ höôùng laø soá caïnh lieân thuoäc vôùi noù vaø seõ kí hieäu laø deg(v).
b c d
a f e g
Hình 1: Ñoà thò voâ höôùng G.
Thí duï 1: Xeùt ñoà thò trong hình 1, ta coù:
deg(a)= 1, deg(b)=4, deg(c)=4, deg(f)=3, deg(d)=1, deg(e)=3, deg(g)=0.
Ñænh baäc 0 goïi laø ñænh coâ laäp. Ñænh baäc 1 goïi laø ñænh treo. Trong thí duï treân ñænh g laø ñænh coâ laäp, a vaø d laø caùc ñænh treo. Baäc cuûa ñænh coù tính chaát sau:
Ñònh lyù 1: Giaû söû G = (V,E) laø ñoà thò voâ höôùng vôùi m caïnh. Khi ñoù.
Chöùng minh. Roõ raøng moãi caïnh e = (u,v) ñöôïc tính moät laàn trong deg(u) vaø moät laàn trong deg(v). Töø ñoù suy ra toång taát caû caùc baäc cuûa caùc ñænh baèng hai laàn soá caïnh.
Thí duï 2: Ñoà thò vôùi n ñænh vaø moãi ñænh coù baäc laø 6 coù bao nhieâu caïnh?.
Giaûi: Theo ñònh lyù 1, ta coù 2m = 6n. Töø ñoù suy ra soá caïnh cuûa ñoà thò laø 3n.
Heä quaû: Trong ñoà thò voâ höôùng, soá ñænh baäc leû (nghóa laø coù baäc laø soá leû) laø moät soá chaün.
Chöùng minh: Thöïc vaäy goïi O vaø U töông öùng laø taäp ñænh baäc leû vaø taäp
ñænh baäc chaün cuûa ñoà thò. Ta coù:
Do deg(v) laø chaün vôùi v laø ñænh trong U neân toång thöù hai trong veá phaûi ôû treân laø soá chaün. Töø ñoù suy ra toång thöù nhaát (chính laø toång baäc cuûa caùc ñænh baäc leû) cuõng phaûi laø soá chaün, do taát caû caùc soá haïng cuûa noù laø soá leû, neân toång naøy phaûi goàm moät soá chaün caùc soá haïng. Vì vaäy, soá ñænh baäc leû phaûi laø soá chaün. Ta xeùt caùc thuaät ngöõ töông töï cho ñoà thò coù höôùng.
Ñònh nghiaõ 3: Neáu e = (u, v) laø cung cuûa ñoà thò coù höôùng G thì ta noái hai ñænh u vaø v laø keà nhau, vaø noùi cung (u,v) noái ñænh u vôùi ñænh v hoaëc cuõng noùi cung naøy laø ñi ra khoûi ñænh u vaø ñi vaøo ñænh v. Ñænh u(v) seõ ñöôïc goïi laø ñænh ñaàu (cuoái) cuûa cung (u, v).
Töông töï nhö khaùi nieäm baäc, ñoái vôùi ñoà thò coù höôùng ta coù khaùi nieäm baùn baäc ra (vaøo) cuûa moät ñænh.
Ñònh nghóa 4: Ta goïi baùn baäc ra (baùn baäc vaøo) cuûa caùc ñænh v trong ñoà thò coù höôùng laø soá cung cuûa ñoà thò ñi ra khoûi noù (ñi vaøo noù) vaø kyù hieäu laø deg+(v) (deg(v)).
Ñònh lyù 2: Giaû söû G = (V,E) laø ñoà thò coù höôùng. Khi ñoù
Raát nhieàu tính chaát cuûa ñoà thò coù höôùng khoâng phuï thuoäc vaøo höôùng treân caùc cung cuûa noù. Vì vaäy, trong nhieàu tröôøng hôïp seõ thuaän tieän hôn neáu ta boû qua höôùng treân caùc cung cuûa ñoà thò. Ñoà thò voâ höôùng thu ñöôïc baèng caùch boû qua höôùng treân caùc cung ñöôïc goïi laø ñoà thò voâ höôùng töông öùng vôùi doà thò coù höôùng ñaõ cho.
1.3. Ñöôøng ñi, chu trình, ñoà thò lieân thoâng.
Ñònh nghóa 1: Ñöôøng ñi ñoä daøi n töø ñænh u ñeán ñænh v, trong ñoù n laø soá nguyeân döông, treân ñoà thò voâ höôùng G =(V,E) laø daõy x0, x1, … ,xn-1,xn trong ñoù u =x0, v=xn , (xi, xi+1) Î E, i= 0, 1, 2… , n-1. Ñöôøng ñi noùi treân coøn coù theå bieåu dieãn döôùi daïng daõy caùc caïnh: (x0, x1), (x1, x2), …, (xn-1, xn).
Ñænh u goïi laø ñænh ñaàu coøn ñænh v goïi laø ñænh cuoái cuûa ñöôøng ñi. Ñöôøng ñi coù ñænh ñaàøu truøng vôùi ñænh cuoái (töùc laø u= v) ñöôïc goïi laø chu trình. Ñöôøng ñi hay chu trình ñöôïc goïi laø ñôn neáu nhö khoâng coù caïnh naøo bò laëp laïi.
Ñònh nghóa 2: Ñöôøng ñi ñoä daøi n töø ñænh u ñeán ñænh v trong ñoù n laø soá nguyeân döông, treân ñoà thò voâ höôùng G =(V, A) laø daõy x0, x1, … ,xn-1,xn trong ñoù u =x0, v=xn , (xi, xi+1) ÎA, i= 0, 1, 2… , n-1. Ñöôøng ñi noùi treân coøn coù theå bieåu dieãn döôùi daïng daõy caùc cung: (x0, x1), (x1, x2), …, (xn-1, xn).
Ñænh u goïi laø ñænh ñaàu coøn ñænh v goïi laø ñænh cuoái cuûa ñöôøng ñi. Ñöôøng ñi coù ñænh ñaàøu truøng vôùi ñænh cuoái (töùc laø u= v) ñöôïc goïi laø chu trình. Ñöôøng ñi hay chu trình ñöôïc goïi laø ñôn neáu nhö khoâng coù cung naøo bò laëp laïi.
Ñònh nghóa 3: Ñoà thò voâ höôùng G= (V,E) ñöôïc goïi laø lieân thoâng neáu luoân tìm ñöôïc ñöôøng ñi giöõa hai ñænh baát kyø cuûa noù.
Nhö vaäy hai maùy tính baáy kyø trong maïng coù theå trao ñoåi thoâng tin ñöôïc vôùi nhau khi vaø chæ khi ñoà thò töông öùng vôi maïng naøy laø ñoà thò lieân thoâng.
Ñònh nghóa 4: Ta goïi ñoà thò con cuûa ñoà thò G= (V,E) laø ñoà thò H = (W,F) trong ñoù W Í V vaø FÍE.
Trong tröôøng hôïp ñoà thò laø lieân thoâng, noù seõ raõ ra thaønh moät soá ñoà thò con lieân thoâng ñoâi moät khoâng coù ñænh chung. Nhöõng ñoà thò con lieân thoâng nhö vaäy ta seõ goïi laø caùc thaønh phaàn lieân thoâng cuûa ñoà thò.
Ñònh nghóa 5: Ñænh v ñöôïc goïi laø ñænh reõ nhaùnh neáu vieäc loaïi boû v cuøng vôùi caùc caïnh lieân thuoäc vôùi noù khoûi ñoà thò laøm taêng soá thaønh phaàn lieân thoâng cuûa ñoà thò. Caïnh e ñöôïc goïi laø caàu neáu vieäc loaïi boû noù khoûi ñoà thò laøm taêng soá thaønh phaàn lieân thoâng cuûa ñoà thò.
Ñònh nghóa 6: Ñoà thò coù höôùng G= (V,A) ñöôïc goïi laø lieân thoâng maïnh neáu luoân tìm ñöôïc ñöôøng ñi giöõa hai ñænh baát kyø cuûa noù.
Ñònh nghóa 7: Ñoà thò coù höôùng G =(V,A) ñöôïc goïi laø lieân thoâng yeáu neáu ñoà thò voâ höôùng töông öùng vôùi noù laø ñoà thò voâ höôùng lieân thoâng.
Roõ raøng neáu ñoà thò laø lieân thoâng maïnh thì noù cuõng laø lieân thoâng yeáu, nhöng ñieàu ngöôïc laïi laø khoâng luoân ñuùng.
Ñònh lyù1: Ñoà thò voâ höôùng lieân thoâng laø ñònh höôùng ñöôïc khi vaø chæ khi moãi caïnh cuûa noù naèm treân ít nhaát moät chu trình.
Chöùng minh: Ñieàu kieän caàn, giaû söû (u, v) laø moät caïnh cuûa ñoà thò. Söï toàn taïi ñöôøng ñi coù höôùng töø u ñeán v vaø ngöôïc laïi suy ra (u, v) phaûi naèm treân ít nhaát moät chu trình.
Ñieàu kieän ñuû, thuû tuïc sau ñaây cho pheùp ñònh höôùng caùc caïnh cuûa ñoà thi ñeå thu ñöôïc ñoà thò coù höôùng lieân thoâng maïnh. Giaû söû C laø chu trình naøo ñoù trong ñoà thò. Ñònh höôùng caùc caïnh treân chu trình naøy theo moät höôùng ñi voøng theo noù. Neáu taát caû caùc caïnh cuûa ñoà thò ñaõ ñöôïc ñònh höôùng thì keát thuùc thuû tuïc. Ngöôïc laïi choïn e laø caïnh chöa ñònh höôùng coù chung ñænh vôùi ít nhaát moät trong soá caùc caïnh ñaõ ñònh höôùng. Theo giaû thieát tìm ñöïôc chu trình C’ chöùa caïnh e ñònh nghóa caùc caïnh chöa ñònh höôùng cuûa C’ theo moät höôùng doïc theo chu trình naøy (khoâng ñònh höôùng laïi caùc caïnh ñaõ coù höôùng). Thuû tuïc treân seõ laëp laïi cho ñeán khi taát caû caùc caïnh cuûa ñoà thò ñöôïc ñònh höôùng. Khi ñoù ta thu ñöôïc ñoà thò coù höôùng lieân thoâng maïnh.
II. Bieåu dieãn ñoà thò treân maùy tính.
Ñeå löu tröõ ñoà thò vaø thöïc hieän caùc thuaät toaùn khaùc nhau vôùi ñoà thò treân maùy tính caàn phaûi tìm nhöõng caáu truùc döõ lieäu thích hôïp ñeå moâ taû ñoà thò. Vieäc choïn caáu truùc döõ lieäu naøo ñeå bieåu dieãn ñoà thò coù taùc ñoäng raát lôùn ñeán hieäu quaû cuûa thuaät toaùn. Vì vaäy, vieäc choïn löïa caáu truùc döõ lieäu ñeå bieåu dieãn ñoà thò phuï thuoäc vaøo töøng tình huoáng cuï theå (baøi toaùn vaø thuaät toaùn cuï theå ). ÔÛ phaàn naøy ta seõ xeùt moät soá phöông phaùp cô baûn ñeå bieåu dieãn ñoà thò treân maùy tính, ñoàng thôøi cuõng phaân tích moät caùch ngaén goïn nhöõng öu ñieåm cuõng nhö nhöõng nhöôïc ñieåm cuûa chuùng.
2.1. Ma traän keà, Ma traän troïng soá.
Xeùt ñôn ñoà thò voâ höôùng G = (V,E), vôùi taàp ñænh V= {1, 2, …,n} taäp caïnh E = {e1, e2,…, em}. Ta goïi ma traän keà cuûa ñoà thò G laø (0, 1) ma traän A = {aij: i,j = 1, 2,… ,n}vôùi caùc phaàn töû ñöôïc xaùc ñònh theo quy taéc sau ñaây:
aij =0 neáu (i,j) Ï E vaø aij =1 neáu (i,j)Î E, i,j =1, 2,…,n
Thí duï1: Ma traän keà cuûae ñoà thò voâ höôùng cho trong hình 1 laø:
0 1 1 0 0 0
1 0 1 0 1 0
1 1 0 1 0 0
0 0 1 0 1 1
0 1 0 1 0 1
0 0 0 1 1 0
1 2 3 4 5 6
1
2
3
4
5
6
3 4 2 5
1 6 1 4
2 5 3 6
G G1
Hình 1: Ñoà thò voâ höôùng G vaø Ñoà thò coù höôùng G1
Caùc tính chaát cuûa ma traän keà:
1. Roõ raøng ma traän keà cuûa ñoà thò voâ höôùng laø ma traän ñoái xöùng, töùc laø a[i, j]= a[j, i], i, j = 1, 2,…,n. Ngöôïc laïi, moãi (0, 1) – ma traän ñoái xöùng caáp n seõ töông öùng chính xaùc ñeán caùch ñaùnh soá ñænh (coøn noùi laø: chính xaùc ñeán ñaúng caáu), vôùi moät ñôn ñoà thò voâ höôùng n ñænh.
2. Toång caùc phaàn töû treân doøng i (coät j) cuûa ma traän keà chính baèng baäc cuûa ñænh i (ñænh j).
3. Neáu kyù hieäu aijp, i,j = 1, 2,…, n. Laø caùc phaàn töû cuûa ma traän Ap = A.A….A. p laø thöøa soá, khi ñoù aijp, i,j = 1, 2,…, n. cho ta soá ñöôøng ñi khaùc nhau töø ñænh i ñeán ñænh j qua p –1 ñænh trung gian.
Ma traän keà cuûa ñoà thò coù höôùng ñöôïc ñònh nghóa moät caùch hoaøn toaøn töông töï.
Thí duï 2: Ñoà thò coù höôùng G1 cho trong hình 1 coù ma traän keà laø ma traän sau.
0 1 1 0 0 0
0 0 0 0 0 0
0 1 0 1 0 0
0 0 0 0 0 0
0 0 0 1 0 1
0 0 0 0 1 0
1 2 3 4 5 6
1
2
3
4
5
6
Löu yù raèng ma traän keà cuûa ñoà thò coù höôùng khoâng phaûi laø ma traän ñoái xöùng.
Chuù yù: Treân ñaây chuùng ta chæ xeùt ñôn ñoà thò. Ma traän keà cuûa ña ñoà thò coù theå xaây döïng hoaøn toaøn töông töï, chæ khaùc, laø thay vì ghi 1 vaøo vò trí a[i, j] neáu (i, j) laø caïnh cuûa ñoà thò, chuùng ta seõ ghi k laø soá caïnh noái hai ñænh i vaø j.
Trong raát nheàu vaán ñeà öùng duïng cuûa lyù thuyeát ñoà thò, moãi caïnh e= (u, v) cuûa ñoà thò ñöôïc gaùn vôùi moät con soá c(e) (coøn vieát laø c (u, v)) goïi laø troïng soá cuûa caïnh e. Ñoà thò trong tröôøng hôïp nhö vaäy ñöôïc goïi laø ñoà thò troïng soá. Trong ñoà thò coù troïng soá, thay vì ma traän keà, ñeå bieåu dieãn ñoà thò ta duøng ma traän troïng soá.
C = c[i,j], i,j=1,2,…,n.
Vôùi c(i, j)= c[i, j], neáu (i, j) Î E vaø c[i, j] =q neáu (i, j) Ï E
Trong ñoù soá q, tuøy töøng tröôøng hôïp cuï theå, coù theå ñöôïc ñaët baèng moät trong caùc giaù trò sau: 0, +¥, -¥.
Öu ñieåm lôùn nhaát cuûa phöông phaùp bieåu dieãn ñoà thò baèng ma traän keà (hoaëc baèng ma traän troïng soá) laø ñeå traû lôøi caâu hoûi: hai ñænh u, v coù keà nhau treân ñoà thò hay khoâng, chuùng ta chæ phaûi thöïc hieän moät pheùp so saùnh. Nhöôïc ñieåm lôùn nhaát cuûa phöông phaùp naøy laø khoâng phuï thuoäc vaøo soá caïnh cuûa ñoà thò, ta luoân phaûi söû duïng n2 ñôn vò boä nhôù ñeå löu tröõ ma traän keà cuûa noù.
2.2. Danh saùch caïnh (cung).
Trong tröôøng hôïp ñoà thò thöa (ñoà thò coù soá caïnh m thoûa maõn baát ñaúng thöùc m < 6n) ngöôøi ta thöôøng duøng caùch bieåu dieãn ñoà thò döôùi daïng danh saùch caïnh.
Trong caùch bieåu dieãn ñoà thò bôûi danh saùch caïnh (cung) chuùng ta seõ löu tröõ danh saùch taát caû caùc caïnh (cung) cuûa ñoà thò voâ höôùng (coù höôùng). Moãi caïnh (cung) e = (x, y) cuûa ñoà thò seõ töông öùng vôùi hai bieán Dau[e], Cuoi[e]. Nhö vaäy, ñeå löu tröõ ñoà thò ta caàn söû duïng 2m ñôn vò boä nhôù. Nhöôïc ñieåm cuûa caùch bieåu dieãn naøy laø ñeå xaùc ñònh nhöõng ñænh naøo cuûa ñoà thò laø keà vôùi moät ñænh cho tröôùc chuùng ta phaûi laøm côõ m pheùp so saùnh (khi duyeät qua danh saùch taát caû caùc caïch cuûa ñoà thò).
Chuù yù: trong tröôøng hôïp ñoà thò coù troïng soá ta caàn theâm m ñôn vò boä nhôù ñeå löu tröõ troïng soá cuûa caùc caïch.
2.3. Danh saùch keà.
Trong raát nhieàu vaán ñeà öùng duïng cuûa lyù thuyeát ñoà thò, caùch bieåu dieãn ñoà thò döôùi daïng danh saùch keà laø caùch bieåu dieãn thích hôïp nhaát ñöôïc söû duïng.
Trong caùch bieåu dieãn naøy, vôùi moãi ñænh v cuûa ñoà thò chuùng ta löu tröõ danh saùch caùc ñænh keà vôùi noù, maø ta seõ kyù hieäu laø Ke(v), töùc laø Ke(v)={uÎV: (v, u) Î E} khi ñoù voøng laëp thöïc hieän vôùi moãi moät phaàn töû trong danh saùch naøy theo thöù töï caùc phaàn töû ñöôïc xaép xeáp nhö sau:
For uÎ Ke(v) do…
Chaúng haïn, treân PASCAL coù theå moâ taû danh saùch naøy nhö sau (Goïi laø caáu truùc Forward star ):
Const
m = 100; {m – soá caïnh}
n = 100; {n – soá ñænh}
var
Ke: array {1..m} of integer ;
Tro: array {1..n+1} of integer ;
Trong ñoù Tro [i] ghi nhaän vò trí baét ñaàu cuûa danh saùch keà cuûa ñænh i, i = 1, 2, …n, Tro[n+1] = 2m + 1.
III. Baøi toaùn tìm ñöôøng ñi ngaén nhaát.
Trong caùc öùng duïng thöïc teá, baøi toaùn tìm ñöôøng ñi ngaén nhaát giöõa hai ñænh cuûa ñoà thò lieân thoâng coù moät yù nghóa to lôùn, coù theå daãn veà baøi toaùn nhö vaäy nhieàu baøi toaùn thöïc teá quan troïng. Ví duï, baøi toaùn choïn moät haønh trình tieát kieäm nhaát (theo tieâu chuaån khoaûng caùch hoaëc thôøi gian hoaëc chi phí) treân moät maïng giao thoâng ñöôøng boä, ñöôøng thuûy hoaëc ñöôøng khoâng; baøi toaùn choïn moät phöông phaùp tieát kieäm nhaát ñeå ñöa moät heä ñoäng löïc löïc töø traïng thaùi xuaát phaùt ñeán moät traïng thaùi ñích, baøi toaùn laäp lòch thi coâng caùc coâng ñoaïn trong coâng trình thi coâng lôùn, baøi toaùn löïa choïn ñöôøng truyeàn tin vôùi chi phí nhoû nhaát trong maïng thoâng tin, …hieän nay coù raát nhieàu phöông phaùp ñeå giaûi caùc baøi toaùn nhö vaäy. Theá nhöng thoâng thöôøng caùc thuaät toaùn ñöôïc xaây döïng döïa treân lyù thuyeát ñoà thò toû ra laø caùc thuaät toaùn coù hieäu quaû nhaát. Trong phaàn naøy ta seõ xeùt moät soá thuaät toaùn nhö vaäy.
3.1. Caùc khaùi nieäm môû ñaàu.
Trong phaàn naøy ta chæ xeùt ñoà thò coù höôùng G = (V,E), |V| = n, |E| = m vôùi caùc cung ñöôïc gaùn troïng soá, nghóa laø moãi cung (u, v) thuoäc E cuûa noù ñöïôc ñaët töông öùng vôùi moät soá thöïc a (u, v) goïi laø troïng soá cuûa noù, chuùng ta seõ ñaët a(u, v)= ¥, neáu (u, v) ÏE. Neáu daõy v0, v1,…vp. laø moät ñöôøng ñi treân G, ñoà thò ñoä daøi cuûa noù ñöôïc ñònh nghóa laø toång sau.
Töùc laø, ñoà daøi cuûa ñöôøng ñi chính laø toång troïng soá treân caùc cung cuûa noù. (chuù yù raèng neáu chuùng ta gaùn troïng soá cho taát caû caùc cung ñeàu baèng 1, thì ta ñöôïc ñònh nghóa ñoä daøi cuûa ñöôøng ñi nhö laø soá cung cuûa ñöôøng ñi gioáng nhö caùc phaàn tröôùc ta ñaõ xeùt ).
Baøi toaùn tìm ñöôøng ñi ngaén nhaát treân ñoà thò döôùi daïng toång quaùt coù theå phaùt bieåu nhö sau:
Tìm ñöôøng ñi coù ñoä daøi nhoû nhaát töø moät ñænh xuaát phaùt s Î V ñeán ñænh cuoái (ñích) t Î V. Ñöôøng ñi nhö vaäy ta seõ goïi laø ñöôøng ñi ngaén nhaát töø s ñeán t coøn ñoä daøi cuûa noù ta seõ kyù hieäu laø d(s, t) vaø coøn goïi laø khoaûng caùch töø s ñeán t (khoaûng caùch ñònh nghóa nhö vaäy coù theå laø soá aâm ). Neáu nhö khoâng toàn taïi ñöôøng ñi töø s ñeán t thì ta seõ ñaët d(s, t) = ¥. Roõ raøng, neáu nhö moãi chu trình trong ñoà thò ñeàu coù ñoä daøi döông, thì trong ñöôøng ñi ngaén nhaát khoâng coù ñænh naøo bò laëp laïi (ñöôøng ñi khoâng coù ñænh naøo laëp laïi seõ ñöôïc goïi laø döôøng ñi cô baûn). Maët khaùc, neáu ñoà thò coù chu trình vôùi ñoä daøi aâm (chu trình nhö vaäy, ñeå ngaén goïn ta goïi laø chu trình aâm ) thì khoaûng caùch giöõa moät soá caëp ñænh naøo ñoù cuûa ñoà thò coù theå laø khoâng xaùc ñònh, bôûi vì baèng caùch ñi voøng theo chu trình naøy moät soá ñuû lôùn laàn, ta coù theå chæ ra ñöôøng ñi giöõa caùc ñænh naøy coù ñoä daøi nhoû hôn baát cöù soá thöïc cho tröôùc naøo. Trong caùc tröôøng hôïp nhö vaäy, coù theå ñaët vaán ñeà tìm ñöôøng ñi cô baûn ngaén nhaát, tuy nhieân baøi toaùn ñaët ra seõ trôû neân phöùc taïp hôn raát nhieàu, bôûi vì noù chöùa baøi toaùn xeùt söï toàn taïi ñöôøng ñi Hamilton trong ñoà thò nhö laø moät tröôøng hôïp rieâng.
Tröôùc heát caàn chuù yù raèng neáu bieát khoaûng caùch töø s ñeán t, trong tröôøng hôïp troïng soá khoâng aâm, coù theå tìm ñöôïc moät caùch deã daøng, ñeå tìm ñöôøng ñi chæ caàn ñeå yù laø ñoái vôùi caëp ñænh s, t Î V tuøy yù (s ¹ t) luoân tìm ñöôïc v ñænh sao cho:
d(s, t) = d(s, v) + a(v, t).
Thöïc vaäy, ñænh v nhö vaäy chính laø ñænh ñi tröôùc ñænh t trong ñöôøng ñi ngaén nhaát töø s ñeán t. Tieáp theo ta laïi coù theå tìm ñöôïc ñænh u sao cho d(s, v)= d(s, u) + a(u, v), … töø giaû thieát veà tính khoâng aâm cuûa caùc troïng soá deã daøng suy ra raèng daõy t, v, u,… khoâng chöùa ñænh laëp laïi vaø chöùa ñænh keát thuùc ôû ñænh s. Roõ raøng daõy thu ñöôïc xaùc ñònh (neáu laät ngöôïc thöù töï caùc ñænh trong noù) ñöôøng ñi ngaén nhaát töø s ñeán t.
3.2. Ñöôøng ñi ngaén nhaát xuaát phaùt töø moät ñænh .
Phaàn lôùn caùc thuaät toaùn tìm khoaûng caùch giöõa hai ñænh s vaø t ñöôïc xaây döïng nhôø kyõ thuaät tính toaùn maø ta coù theå moâ taû ñaïi theå nhö sau: töø ma traän troïng soá a{u, v}, u, v Î V, ta tính caän treân d{v} cuûa khoaûng caùch töø s ñeán taát caû caùc ñænh v Î V , moãi khi phaùt hieän .
d{u}+a[u, v] < d[v] (1)
Caän treân d[v] seõ ñöôïc laø toát leân : d[v]=d[u] + a[u, v].
Quaù trình ñoù seõ keát thuùc khi naøo chuùng ta khoâng laøm toát theâm ñöôïc baát cöù caän treân naøo. Khi ñoù roõ raøng giaù trò cuûa moãi d[v] seõ cho ta khoaûng caùch töø ñænh ñöôïc goïi laø nhaõn cuûa ñænh v, coøn vieäc tính laïi caùc laïi caùc caän treân naøy seõ goïi laø pheùp gaùn nhaõn cho ñoà thò vaø toaøn boä thuû tuïc thöôøng goïi laø thuû tuïc gaùn nhaõn. Nhaän thaáy raèng ñeå tính khoaûng caùch töø s ñeán t, ôû daây, ta phaûi tính khoaûng caùch töø s ñeán taát caû caùc ñænh coøn laïi cuûa ñoà thò. Hieän nay vaãn chöa bieát thuaät toaùn naøo cho pheùp tìm ñöôøng ñi ngaén nhaát giöõa hai ñænh laøm vieäc thaät söï hieäu quaû hôn nhöõng thuaät toaùn tìm ñöôøng ñi ngaén nhaát töø moät ñænh ñeán taát caû caùc ñænh coøn laïi.
Sô ñoà tính toaùn maø ta vöøa moâ taû coøn chöa laø xaùc ñònh bôûi vì coøn phaûi chæ ra thöù töï choïn caùc ñænh u vaø v ñeå kieåm tra ñieàu kieän (!) thöù töï choïn naøy coù aûnh höôûng raát lôùn ñeán hieäu quaû cuûa thuaät toaùn .
Baây giôø ta seõ moâ taû thuaät toaùn Ford-Bellman tìm ñöôøng ngaén nhaát töø ñænh s ñeán taát caû caùc ñænh coøn laïi cuûa ñoà thò. Thuaät toaùn laøm vieäc trong tröôøng hôïp troïng soá cuûa caùc cung laø tuøy yù, nhöng giaû thieát raèng trong ñoà thò khoâng coù chu trình aâm .
Procedure Ford-Bellman;
(*
Ñaàu vaøo: ñoà thò coù höôùng G=(V,E) vôùi n ñænh
s Î V laø ñænh xuaát phaùt.
a[u,v],u,v Î V ma traän troïng soá :
Giaû thieát : ñoà thò khoâng coù chu trình aâm:
Ñaàu ra : khoaûng caùch töø ñænh s ñeán taát caû caùc ñænh coøn laïi d[v], v Î
Truoc[v],v Î V , ghi nhaän ñænh tröôùc v trong ñöôøng ñi ngaén nhaát töø s ñeán v
*)
Begin
(* Khôûi taïo *)
for v Î V do
begin
d[v]: =a[s, v]:
truoc[v]: =s:
end;
d[s]:=0;
for k:=1 to n – 2 do
for v Î V \[s] do
for u Î V do
if d[v] > d[u] + a[u,v] then
begin
d[v]:=d[u]+a[u,v]:
truoc[v]:=u;
end;
end.
Tính ñuùng ñaén cuûa thuaät toaùn coù theå chöùng minh treân cô sôû nguyeân lyù toái öu cuûa qua hoaïch ñoäng roõ raøng laø ñoä phöôùc taïp tính toaùn cuûa thuaät toaùn laø O(n3) löu yù raøng chuùng ta coù theå chaám döùt voøng laëp theo K khi phaùt hieän trong quaù trình thöïc hieän hai voøng laëp trong khoâng coù bieán d[t] naøo bò ñoåi giaù trò vieäc naøy coù theå xaûy ra vôùi k < n-2 vaø ñieàu ñoù laøm taêng hieäu quaû cuûa thuaät toaùn trong vieäc giaûi caùc bìa toaùn thöïc teá. Tuy nhieân, caùi tieán ñoù khoâng thöïc söï caûi thieän ñöôïc ñaùnh giaù ñoä phöùc taïp cuûa baûn thaân thuaät toaùn. Ñoái vôùi ñoà thò thöa thôùt hôn laø söû duïng danh saùch keà Ke(v), v Î V, ñeå bieåu dieãn ñoà thò, khi ñoù voøng laëp theo u caàn vieát laïi döôùi daïng .
For u Î ke(v) do
If d[v] > d[u]+a[u, v] then
begin
d[u]:= d[u]+a[u, v];
truoc[v]:=u;
end;
trong tröôøng hôïp naøy ta thu ñöôïc thuaät toaùn vôùi ñoä phöùc taïp O (n.m).
3.3. Ñöôøng ñi ngaén nhaát giöõa taát caû caùc caëp ñænh
Roõ raøng ta coù theå giaûi baøi toaùn tìm ñöôøng ñi ngaén nhaát giöõa taát caû caùc caëp ñænh cuûa ñoà thò baèng caùch söû duïng n laàn thuaät toaùn moâ taû ôû muïc tröôùc, trong ñoù ta seõ choïn s laàn löôït laø caùc ñænh cuûa ñoä thò. Roõ raøng, khi ñoù ta thu ñöôïc thuaät toaùn vôùi ñoä phöùc taïp laø O(n3) (neáu söû duïng thuaät toaùn Ford-Bellman) hoaëc O(n3) ñoái vôùi tröôøng hôïp troïng soá khoâng aâm hoaëc ñoà thò khoâng coù chu trình. Trong tröôøng hôïp toång quaùt, söû duïng thuoät toaùn Ford-Bellman n laàn khoâng phaûi laø caùch laøm toát nhaát. ÔÛ ñaây ta seõ moâ taû moät thuaät toaùn giaûi baøi toaùn treân vôùi ñoä phöùc taïp tính toaùn O(n3): Thuaät toaùn Floyd. Thuaät toaùn ñöôïc moâ taû döôùi ñaây.
Procedure Floyd
(* Tìm ñöôøng ñi ngaén nhaát giöõa caùc caëp ñænh
Ñaàu vaøo:Ñoà thò cho bôûi ma traän troïng soá a{i,j},i,j=1,2….,n.
.Ñaàu ra:Ma traän ñöôøng ñi ngaén nhaát giöõa caùc caëp ñænh d{i, j}=1,2….n,
trong ñoù d{i, j} cho ñoä daøi ñöôøng ñi ngaén nhaát töø i ñeán j.
Ma traän ghi nhaän ñöôøng ñi
P{i,j},i,j=1,2…n.
Trong ñoù p{i,j}ghi nhaän ñænh ñi tröôùc ñænh j
Trong ñöôøng ñi ngaén nhaát töø i ñeán j.
*)
Begin
(*khôûi taïo*)
for i:=1 to n do
for j:=1 to n do
begin
d{i, j}:=a{i, j};
p{i, j}:=i;
end;
(*böôùc laëp *)
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if d{i, j}>d{i, k}+d{k, j} then
begin
d{i, j}:=d{i, k}+d{k, j};
p{i, j}:= p{k, j};
end;
end;
Roõ raøng ñoä phöùc taïp tính toaùn cuûa thuaät toaùn laø O(n3).
CHÖÔNG 3
BAØI TOAÙN LAÄP LÒCH THI COÂNG COÂNG TRÌNH
Baøi toaùn.
Vieäc thi coâng moät coâng trình lôùn ñöôïc chia ra laøm n coâng ñoaïn, ñaùnh soá töø 1 ñeán n. coù moät soá coâng ñoaïn maø vieäc thöïc hieän noù chæ ñöôïc tieán haønh sau khi moät soá coâng ñoaïn naøo ñoù ñaõ hoaøn thaønh. Ñoái vôùi moãi coâng ñoaïn i bieát t[i] laø thôøi gian caàn thieát ñeå hoaøn thaønh noù (i = 1, 2, ..n).
Ta coù theå xay döïng ñoà thò coù höôùng n ñænh bieåu dieãn haïn cheá veà trình töï thöïc hieän caùc coâng vieäc sau: moãi ñænh cuûa ñoà thò töông öùng vôùi moät ñoà thò, neáu coâng vieäc i phaûi ñöôïc thöïc hieän tröôùc coâng ñoaïn j thì treân ñoà thò coù cung (i, j), troïng soá treân cung naøy ñöôïc gaùn baèng t[i].
Theâm vaøo ñoà 2 ñænh 0 vaø n +1 töông öùng vôùi hai söï kieän ñaëc bieät: ñænh soá 0 töông öùng vôùi coâng ñoaïn Leã khôûi coâng, noù phaûi ñöôïc thöïc thöïc hieän tröôùc taát caû caùc coâng ñoaïn khaùc, vaø ñænh n+1 töông öùng vôùi coâng ñoaïn Caét baêng khaùnh thaønh coâng trình, noù phaûi thöïc hieän sau taát caû caùc coâng ñoaïn, vôùi t[0] = t[n+1] = 0 (treân thöïc teá chæ caàn noái ñænh 0 vôùi taát caû ñænh coù baùn baäc vaøo baèng 0 vaø noái taát caû caùc ñænh coù baùn baäc ra baèng 0 vôùi ñænh n+1). Goïi ñoà thò thu ñöôïc laø G. Roõ raøng baøi toaùn ñaët ra vaán ñeà baøi toaùn tìm ñöôøng ñi daøi nhaát töø ñænh 0 ñeán taát caû caùc ñænh coøn laïi treân ñoà thò G. Do ñoà thò G roõ raøng khoâng chöùa chu trình, neân ñeå giaû baøi toaùn ñaët ra coù theå aùp duïng caùc thuaät toaùn ñöôïc neâu ôû treân.
Thí duï: Ta coù baûng caùc haïng muïc ñöôïc cho trong baûng döôùi ñaây.
Haïng muïc
t[i]
Haïng muïc phaûi hoaøn thaønh tröôùc
1
2
3
4
5
6
7
8
10
15
10
30
1 2
15
20
10
1
2,3
4
2,3
5,6
5
1 : 0
0 1 2 : 10
0 3 : 0
0 1 2 4 : 25
0 1 2 4 5 : 55
0 3 6 : 10
0 1 2 4 5 : 55
Ñöa veà baøi toaùn ñoà thò coù höôùng, caùc ñænh laø caùc haïng muïc nhö hình sau:
1 (10) 2 5 (12) 8
(0) (10)
0 (15) (30) (12) 9
(0) (10) (15) (15) (20) 3 4
6 7
(10)
Caùch giaûi quyeát:
* Theâm hai ñænh 0 vaø ñænh 9 ta thu ñöôïc moät ñoà thò coù höôùng trong ñoù troïng soá t[i] laø caïnh xuaát phaùt töø i
* Tìm ñöôøng ñi daøi nhaát thì
- Ñoåi daáu troïng soá
- Tìm ñöôøng ñi ngaén nhaát xuaát phaùt töø 0
Laëp
VH
1
2
3
4
5
6
7
8
9
Ktaïo
0
0,0
0,¥
0,0
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
1
*
1,-10
0,0
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
0, ¥
2
*
0,0
2,-25
0, ¥
2,-25
0, ¥
0, ¥
0, ¥
3
*
2,-25
0, ¥
2,-25
0, ¥
0, ¥
0, ¥
4
*
4,-25
2,-25
0, ¥
0, ¥
0, ¥
5
*
2,-25
5,-67
5,-67
0, ¥
6
*
5,-67
5,-67
0, ¥
7
*
5,-67
7,-87
8
*
7,-87
9
*
Chöông trình söû duïng thuaät toaùn Dijkstra ñeå tình thôøi gian caùc coâng vieäc baét ñaàu vaø keát thuùc döï aùn.
Chöông trình thi coâng coâng trình khoâng söû duïng tröïc tieáp thuaät toaùn naøy maø coøn phuï thuoäc vaøo caùc coâng vieäc laøm ñaàu tieân, vì vaäy coâng vieäc ñaàu tieân laø ta phaûi xaùc ñònh coâng vieäc naøo laø coâng vieäc ñaàu tieân, vieäc xaùc ñònh coâng vieäc ñaàu tieân cuõng raát ñôn giaûn, khi ta nhaäp soá lieäu thì coâng vieäc ñaàu tieân thì khoâng coù coâng vieäc naøo laøm tröôùc noù.
Ñeå giaûi baøi toaùn treân ta coù theå duøng nhieàu phöông phaùp. Nhöng trong ñeà taøi naøy chuùng toâi söû duïng thuaät toaùn Dijkstra.
II. Thuaät toaùn Dijkstra.
Thuaät toaùn Dijkstra ñöôïc phaùt bieåu nhö sau:
Trong tröôøng hôïp troïng soá treân caùc cung laø khoâng aâm do Dijkstra ñeà nghò ñeå giaûi baøi toaùn tìm ñöôøng ñi ngaén nhaát töø dænh s ñeán caùc ñænh coøn laïi cuûa ñoà thò . Thuaät toaùn ñöôïc xaây döïng treân cô sôû gaùn cho caùc ñænh caùc nhaõn taïm thôøi. Nhaõn cuûa moãi ñænh cho bieát caän treân cuûa ñoä daøi ñöôøng ñi ngaén nhaát töø s ñeán noù. Caùc nhaõn naøy seõ ñöôïc bieán ñoåi theo moät thuû tuïc laëp, maø ôû moãi böôùc laëp coù moät nhaõn taïm thôøi trôû thaønh nhaõn coá ñònh. Neáu nhaõn cuûa moät ñænh naøo ñoù trôû thaønh coá ñònh thì noù seõ cho ta khoâng phaûi laø caän treân maø laø ñoä daøi ñöôøng ñi ngaén nhaát töø ñænh s ñeán noù. Thuaät toaùn ñöôïc moâ taû nhö sau.
Procedure Dijkstra;
(* Ñaàu vaøo: Ñoà thò coù höôùng G=(V, E) vôùi n ñænh
s Î V laø ñænh xuaát phaùt a[u, v], u, v Î V, ma traän troïng soá
Giaû thieát: a[u, v] >= 0, u, v Î V
Ñaàu ra: khoaûng caùch töø d(s) ñeán taát caû caùc ñænh coøn laïi d[v], v Î V
Truoc [v], v Î V, ghi nhaän ñænh tröôùc v trong ñöôøng ñi ngaén nhaát töø s ñeán v
*)
Begin
(* Khôûi taïo *)
for v Î V do
Begin
d[v] := a[s, v];
Truoc[v] := s;
End;
d[s] := 0;
T := V \ {s} (*Taäp caùc ñænh coù nhaõn taïp thôøi *)
(* Böôùc laëp*)
while T 0 do
Begin
Tìm ñænh u Î T thoûa maõn d[u] = min { d[z]: z Î T}
T := T \ {u}; (*Coá ñònh nhaõn cuûa ñænh u*)
For v Î T do (*Gaùn nhaõn laïi cho caùc ñænh trong T*)
If d[v] > d[u] + a[u, v] then
Begin
D[v] := d[u] + a[u, v]
Truoc [v] := u;
End;
End;
End;
Ñònh lyù 1: Thuaät toaùn Dijkstra tìm ñöôïc ñöôøng ñi ngaén nhaát treân ñoà thò sau thôøi gian côù O(n2).
Chöùng minh: Tröôùc heát ta chöùng minh laø thuaät toaùn tìm ñöôøng ñi ngaén nhaát töø ñænh s ñeán caùc ñænh coøn laïi cuûa ñoà thò. Giaû söû raèng ôû moät böôùc laëp naøo ñoù caùc nhaõn coá ñònh cho ta ñoä daøi caùc ñöôøng ñi töø s ñeán caùc ñænh coù nhaõn coá ñònh, ta seõ chöùng minh raèng ôû laàn laëp tieáp theo neáu ñænh u* thu ñöôïc nhaõn coá ñònh d(u*) chính laø ñoä daøi ñöôøng ñi ngaén nhaát töø s ñeán u*.
Kyù hieäu S: laø taäp hôïp coù nhaõn coá ñònh coøn S2 laø taäp caùc ñænh coù nhaõn taïm thôøi ôû böôùc laëp ñang xeùt. Keát thuùc moãi böôùc laëp nhaõn taïm thôøi d(v) cho ta ñoä daøi cuûa ñöôøng ñi ngaén nhaát töø s ñeán v chæ qua nhöõng ñænh naèm hoaøn toaøn trong taäp S1. Giaû söû raèng ñöôøng ñi ngaén nhaát töø s ñeán u* khoâng naèm trong taäp S1, töùc laø noù ñi qua ít nhaát moät ñænh cuûa taäp S2. Goïi z Î S2 laø ñænh ñaàu tieân nhö vaäy treân ñöôøng ñi naøy . Do troïng soá treân caùc cung laø khoâng aâm, neân ñoaïn ñöôøng töø z ñeán u* coù ñoä daøi L > 0 vaø d(z) < d(u*) – L < d(u*).
Baát ñaúng thöùc naøy laø maâu thuaãn vôùi caùch xaùc ñònh u* laø ñænh coù nhaõn taïm thôøi nhoû nhaát. Vaäy ñöôøng ñi ngaén nhaát töø ñænh s ñeán u* phaûi naèm choïn trong S1, vaø vì theá d[u*] laø ñoä daøi cuûa noù. Do ôû laàm laëp ñaàu tieân S1 = {s} vaø sau moãi laàn laëp ta chæ theâm vaøo S1 moät ñænh u* neân giaû thieát laø d(v) cho ñoä daøi ñöôøng ñi ngaén nhaát töø s ñeán v vôùi moïi v Î S1 laø ñuùng vôùi böôùc laëp ñaàu tieân. Theo qui naïp suy ra thuaät toaùn cho ñöôøng ñi ngaén nhaát töø s ñeán moïi ñænh cuûa ñoà thò.
Baây giôø ta ñaùnh giaù soá pheùp toaùn caàn thöïc hieän theo thuaät toaùn. ÔÛ moãi böôùc laëp ñeå tìm ra ñænh u caàn thöïc hieän O(n) pheùp toaùn, vaø ñeå gaùn nhaõn laïi cuõng phaûi thöïc hieän moät soá löôïng pheùp toaùn cuõng la O(n). Thuaät toaùn phaûi thöïc hieän n- 1 böôùc laëp. Vaäy thôøi gian tính toaùn cuûa thuaät toaùn laø côõ O(n2).
Thí duï: Tìm ñöôøng ñi ngaén nhaát töø ñænh 1 ñeán caùc ñænh coøn laïi cuûa ñoà thò ôû hình döôùi:
(7)
2 3 6
(5) (1)
(1) (2) (1) (1)
(4)
1 (2) 4 (3) 5
Minh hoïa thuaät toaùn Dijkstra
Keát quaû tính toaùn ñöôïc trình baøy trong baûng döôùi ñaây.
Böôùc laëp
Ñænh 1
Ñænh 2
Ñænh 3
Ñænh 4
Ñænh 5
Ñænh 6
Khôûi taïo
0, 1
1, 1*
¥, 1
¥, 1
¥, 1
¥, 1
1
-
-
6, 2
3, 2*
¥, 1
8, 2
2
-
-
4, 4*
-
7, 4
8, 2
3
-
-
-
-
7, 4
5, 3
4
-
-
-
-
6, 6 *
-
5
-
-
-
-
-
-
Chuù yù:
1) Neáu chæ caàn tìm ñöôøng ñi ngaén nhaát töø s ñeán t naøo ñoù thì coù theå keát thuùc thuaät toaùn khi ñænh t trôû thaønh ñænh coù nhaõn coá ñònh.
(1)
Soá phaàn töû:= soá ñænh -1;
i:=1;
i < ñnguoàn
Taäp ñænh[i]:=i;
Ññ-ñeán[i]:=kc[ñnguoàn, i];
Ññ- tröïc tieáp ñeán[i]:=ñnguoàn;
i:=i+1;
i:=ñnguoàn +1
i £ soá ñænh
Taäp ñænh[i]:=i;
Ññ-ñeán[i]:=kc[ñnguoàn, i];
Ññ- tröïc tieáp ñeán[i]:=ñænh nguoàn;
i:=i+1;
Baét Ñaàu
N
Y
N
Y
* Sô ñoà thuaät toaùn Dijkstra.
(1)
(3)
(4)
(2)
j£ soá ñænh -2
Min:= ññ-ñeán[ñænh[1]];
Vò trí :=1;
i£ k
Ññ-ñeán[ñænh[i]] <min;
Min:= ññ-ñeán[ñænh[i]];
Vò trí :=i;
i:=i+1
Ñænh xeùt:=ñænh[vò trí];
Ñænh[vò trí]:=ñænh[spt];
Spt:=spt-1;
i:=1
i£ spt
Y
N
Y
N
Y
N
Y
N
(4)
(2)
X:=ñænh[i]
(3)
Ññ-ñeán[x] > Ññ-ñeán[ñænh xeùt]+ kc[ñænh xeùt,x];
Ññ-ñeán[x]:=Ññ-ñeán[ñænh xeùt
+ kc[ñænh xeùt,x]];
i:=i+1;
Keát Thuùc
Y
N
III. Giaûi quyeát baøi toaùn.
Sau khi ñöa baøi toaùn veà daïng ñoà thò coù höôùng, vôùi moãi ñænh laø moät haïng muïc ta coù theå tieán haønh nhö sau:
- Chuyeån thaønh ma traän troïng soá coù daïng a(i, j), vôùi haïng muïc i phaûi ñöôïc thi coâng tröôùc haïng muïc j, giaù trò cuûa a(i, j) cho bieát thôøi gian haïng muïc i laøm xong.
- Ñoåi daáu giaù trò cuûa ma traän: ví duï a(i, j) = -a(i, j)
- Aùp duïng thuaät toaùn Dijkstra.
- Keát thuùc thuaät toaùn ta thu ñöôïc d[u] .
- Ñoåi daáu giaù trò d[u] vöøa thu ñöôïc: d[v] = -d[u]
- Giaù trò d[v] chính laø ñöôøng ñi daøi nhaát töø 0 ñeán ñænh v, khi ñoù d[v] cho ta thôøi ñieåm sôùm nhaát coù theå baét ñaàu thöïc hieän coâng ñoaïn v, noùi rieâng d[n+1] laø thôøi ñieåm sôùm nhaát coù theå caét baêng khaùnh thaønh toaøn boä coâng trình.
Töông töï nhö treân ví duï treân khi keát thuùc toaøn boä döï aùn, keát quaû thu ñöôïc nhö sau:
Giaû söû leã khôûi coâng döï aùn laø 1-1-2003
Thì sau 87 ngaøy (Giaû söû ñôn vò tính laø ngaøy) ta coù theå caét baêng khaùnh thaønh toaøn boä döï aùn.
IV. Ñieàu khieån nhaân löïc
Caùc hoaït ñoäng khoâng gaêng ñöôïc pheùp xeâ dòch nhaát ñònh, nhaát laø khi FFij = TFij. Coù theå saép ñaët chuùng ñaùp öùng caùc yeâu caàu khaùc nöõa. Ngoaøi thôøi gian ra, chaúng haïn nhaân löïc, nguyeân lieäu, chi phí …Veà maët toaùn hoïc xöû lyù yeâu caàu loaïi naøo cuõng vaäy. ÔÛ ñaây ta noùi theo ngoân ngöõ nhaân löïc chaúng haïn.
Thí Duï III.1. Giaû söû nhaân löïc cho caùc hoaït ñoäng cuûa döï aùn ôû Thí Duï II.2 ñoøi hoûi nhö sau:
Hoaït ñoäng
Soá nhaân coâng
Hoaït ñoäng
soá nhaân coâng
(1, 2)
0
(4, 6)
2
(1, 3)
5
(4, 7)
1
(2, 4)
0
(5, 6)
2
(3, 4)
7
(5, 7)
5
(3, 5)
3
(6, 7)
6
Chuù yù raèng taïi thôøi ñieåm hai hoaït ñoäng cuøng tieán haønh thì soá nhaân löïc caàn laø toång hai soá coâng nhaân. Vì vaäy caàn phaûi saép xeáp kheùo caùc hoaït ñoäng khoâng gaêng ñeå ñoøi hoûi toång nhaân coâng cuûa caû döï aùn ít (taïm coi laø moãi ngöôøi bieát laøm moïi vieäc). Vieäc saép xeáp toái öu laø phöùc taïp, ñeán nay ta söû duïng bieåu ñoà thôøi gian bieåu dieãn theâm nhaân löïc ñeå saép xeáp theo tröïc quan. H.1.6 (a) bieåu dieãn toång coâng nhaân caàn ôû moãi thôøi ñieåm neáu taát caû caùc hoaït ñoäng khoâng gaêng xeáp vaøo luùc sôùm nhaát coù theå, coøn H.1.6 (b) laø töông öùng khi xeáp vaøo luùc muoän nhaát coù theå. Hai bieåu ñoà naøy neân veõ thaúng döôùi H.1.5 nöõa. Saép ñaët sôùm nhaát ôû hình (a) cho thaáy ôû moãi thôøi ñieåm döï aùn caàn nhieàu nhaát laø 10 coâng nhaân coøn ôû saép ñaët muoän nhaát (b) laø 12 coâng nhaân. ÔÛ hai phöông aùn naøy, soá coâng nhaân caàn ôû caùc thôøi ñieåm khoâng ñeàu. Theo tröïc quan ta chænh laïi töø (a) nhö sau: chuyeån hoaït ñoäng (4, 6) ñeáân thôøi ñieåm muoän nhaát coù theå, chuyeån (4, 7) ñeán ngay sau khi (5, 7) keát thuùc. Keát quaû ñöôïc veõ laïi ôû bieåu ñoà H.1.7. (chuù yù laø hoaït ñoäng (1, 2) vaø (2, 4) khoâng caàn coâng nhaân neân khoâng caàn veõ.).
Chöông IV
GIÔÙI THIEÄU NGOÂN NGÖÕ LAÄP TRÌNH
Visual Basic laø moät ngoân ngöõ laäp trình khaù phoå bieán hieän nay, noù laø moät coâng cuï raát tieän lôïi cho haàu heát caùc chöông trình öùng duïng, caùc chöông trình söû lyù theo yeâu caàu cuûa ngöôøi duøng. Ñieàu ñaëc bieät cuûa ngoân ngöõ Visual Basic ñoù laø noù duøng ngay giao dieän ngöôøi duøng ñoà hoïa , hay GUI (Graphical User Interface).
Ñieàu ñaëc bieät, Visual Basic cho pheùp boå xung caùc menu, hoäp vaên baûn, nuùt leänh, nuùt tuøy choïn (cho caùc löïa choïn loaïi tröø), caùc hoäp kieåm tra (cho caùc löïa choïn khoâng loaïi tröø), caùc hoäp danh saùch, thanh cuoán, caùc hoäp taäp tin vaø thö muïc cho caùc cöûa soå troáng. Baïn coù theå duøng caùc löôùi (Grid) ñeå quaûn lyù döõ lieäu theo baûng. Baïn coù theå truyeàn thoâng vôùi caùc öùng duïng Windows khaùc, vaø coù theå laø quan troïng nhaát, baïn seõ coù moät phöông phaùp deã daøng ñeå ngöôøi duøng ñieàu kieåm vaø truy caäp caùc cô sôû döõ lieäu. (Nhöõng thaønh phaàn ñoù ñöôïcVisual basic goïi laø Ñieàu Kieåm (control)).
Coù theå coù nhieàu cöûa soå treân maøn hình. Caùc cöûa soå naøy coù toaøn queàn truy caäp clipboard vaø caùc thoâng tin trong haàu heát caùc öùng duïng Windows khaùc chaïy cuøng luùc. Baïn coù theå duøng Visual Basic ñeå truyeàn thoâng vôùi caùc öùng duïng khaùc ñang chaïy döôùi Windows. Duøng phieân baûn hieän ñaïi nhaát cuûa coâng ngheä COM/OLE trong Windows.
Phöông thöùc laäp trình cuûa Visual Basic laø thieát keá tröôùc, vieát leänh sau. Vì vaäy moâi tröôøng laøm vieäc khoâng phöùc taïp nhö caùc ngoân ngöõ laäp trình khaùc. Chuùng bao goàm caùc ñoái töôïng.
I. Cöûa soå thuoäc tính.
1. Moät soá thuoäc tính cuûa ñoái töôïng Form.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Duøng ñeå ñaët teân cho Form, teân naøy seõ ñöôïc duøng cho thuû tuïc maø baïn vieát maõ.
Appearance
Quy ñònh caùch theå hieän cuûa Form
Flat (Form phaúng)
3D (Form noåi)
Backcolor
Choïn maøu neàn cuûa Form
Bordestyle
Quy ñònh kieåu khung cuûa Form
Caption
Quy ñònh tieâu ñeà cuûa Form
Controlbox
Neáu ñaët laø true thì cöûa soå coù Controlmenubox.
Neáu ñaët laø False thì cöûa soå khoâng coù Controlmenubox.
Icon
Duøng Icon coù bieåu töôïngnhö theá naøo khi baïn click nuùt minimize
Max buttion
Neáu ñaët laø true thì cöûa soå coù nuùt Maximize
Neáu ñaët laø false thì cöûa soå khoâng coù nuùt Maximize
Min buttion
Neáu ñaët laø true thì cöûa soå coù nuùt Minimize
Neáu ñaët laø false thì cöûa soå khoâng coù nuùt Miniimize
Moveable
Neáu ñaët laø true thì coù theå nhaán Mouse vaøo tieâu ñeà vaø keùo ñi nôi khaùc, neáu False thì khoâng keùo ñi ñöôïc
Showintaskbar
True: cöûa soå naøy hieän leân teân cuûa noù cuõng theå hieän trong taskbar cuûa Öindôù, neáu False thì khoâng.
Visiable
True: Thaáy Form
False: aån Form
Windowstate
Quy ñònh kích thöôùc Form
Bình thöôøng
Cöïc tieåu
Cöïc ñaïi
2. Moät soá thuoäc tính cuûa cöûa soå Lable
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Teân cuûa lable
Alignment
Canh noäi dung cuûa lable
Canh traùi
Canh phaûi
Canh giöõa
Autosize
Baïn chon true noù töï ñoäng co giaõn cho vöøa noäi dung cuûa noù
Choïn false thì baïn töï ñieàu chænh cho vöøa
Backcolor
Quy ñònh maøu neàn cho lable
Caption
Ghi chöõ treân lable
Font
Choïn kieåu chöõ cho lable
Fontcolor
Quy ñònh maøu chöõ treân lable
3. Moät soá thuoäc tính cuûa ñoái töôïng Textbox.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho Textbox
Alignment
Canh noäi dung cuûa textbox
Canh traùi
Canh phaûi
Canh giöõa
Appearance
Quy ñònh caùch theå hieän cuûa Textbox
flat bình thöôøng
3D 3 chieàu
Backcolor
Quy ñònh maøu neàn cho Textbox
Font
Choïn kieåu chöõ cho textbox
Forecolor
Quy ñònh maøu chöõ treân textbox
Maxlength
Quy ñònh soá kyù töï toái ña nhaäp vaøo textbox
Multiline
True: coù theå xuoàng haøng khi chieàu ngang khoâng ñuû
False: khoâng xuoáng haøng
Scrollbar
Duøng ñeå xaùc laäp hoäp textbox khoâng coù thanh cuoán doïc, ngang haëc caû hai vôùi ñieàu kieän thuoäc tính Mulltiline = true
Text
Baïn haõy xoùa chöõ vaø ñeå troáng
Visible
Quy ñònh text coù ñöôïc nhìn thaáy treân form hay khoâng
True: nhìn thaáy, False: khoâng nhìn thaáy
4. Thuoäc tính cuûa ñoái töôïng Commandbox
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Commandbox
Caption
Laøm tieâu ñeà cho nuùt
Font
Choïn font cho nuùt
Visible
True: nuùt nhìn thaáy
False: nuùt khoâng nhìn thaáy
5. Thuoäc tính ñoái töôïng Checkbox.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho checkbox
Alignment
Canh noäi dung cuûa checkbox
Appearance
Quy ñònh caùch theå hieän cuûa Checkbox
Backcolor
Quy ñònh maøu neàn cho checkbox
Font
Choïn kieåu chöõ cho checkbox
Caption
Doøng tieâu ñeà cho checkbox
Forecolor
Quy ñònh maøu chöõ cho checkbox
Value
0: Khoâng choïn
1: traïng thaùi choïn
2: Traïng thaùi xaùm
Visible
True: Khoâng nhìn thaáy
False: nhìn thaáy
6. Thuoäc tính hay duøng cuûa ñoài töôïng picturebox
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Teân cho ñoái töôïng picturebox
Autosize
True: töï ñoäng ñaët laïi kích thöôùc cuûa ñoái töôïng cho vöøa vôùi kích thöôùc cuûa hình ñaõ ñöôïc ñaët vaøo
False: neáu hình ñaët vaøo lôùn hôn kích thöôùc thì hình naøy seõ bò che khuaát
Picture
Duøng ñeå löu tröù böùc hình baïn muoán trình baøy
Align
Duøng ñeå quy ñònh caùch boá trí ñaëc bieät cuûa picture treân form
Autoredraw
Hình seõ khoâng bò xoùa ñi khi baïn thu nhoû hay phoùng to kích thöôùc
Fillcolor
Quy ñònh maøu toâ cho caùc phöông thöùc ñoà hoïa
Fillstyle
Quy ñònh daïng maøu toâ
Drawstyle
Quy ñònh ñöôøng neùt veõ
Drawith
Quy ñònh ñoä daøy neùt veõ
7. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Image.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Image
Picture
Töông töï nhö thuoäc tính picture cuûa ñoùi töôïng picturebox
Borderstyle
Quy ñònh kieåu khung coù (1) hoaëc khoâng coù khung(0)
Stretch
True: hình seõ töï ñoäng co giaõn sao cho vöøa vaëên trong ñoái töôïng
False: ñoái töôïng seõ töï ñiruf chænh cho vöøa vôùi hình
8. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Listbox.
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Listbox
Colums
Duøng ñeå theå hieän listbox coù bao nhieâu coät, maëc nhieân laø 1
Integranlhieght
True: Listbox seõ töï ñieàu chænh kích thöôùc sao cho khoâng coù muïc naøo bò che khuaát nöûa chöøng
False: thì seõ chính xaùc nhö khi baïn thieát keá
Listcount
Xaùc ñògh danh saùch coù bao nhieâu muïc, baïn chæ coù theå ñoïc chöù khoâng ñaët laïi giaù trò
List
Quy ñònh moät danh saùch cho Listbox
Multiselect
Quy ñònh moãi laàn chæ coù theå choïn moät hay nhieàu muïc
Listindex
Muïc ñang coù focut trong danh saùch laø muïc thöù bao nhieâu
Selcount
Cho bieát hieän ñang coù bao nhieâu muïc ñöôïc choïn trong danh saùch
Sorted
True: Saép xeáp danh saùch theo thöù töï
False: saép xeáp nhö trình töï baïn ñöa vaøo
9. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Combobox
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng combobox
Style
Quy ñònh kieåu cho combobox
Sorted
True: Saép xeáp theo thöù töï Alphabet
False: saép xeáp nhö trình töï baïn ñöa vaøo
10. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Timer
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng Timer
Enable
True: cho pheùp phaùt ra söï kieän thôøi gian
False: ngöôïc laïi
Interval
Laø gí trò soá duøng ñeå quy ñònh bao nhieâu laâu thì phaùt ra söï kieän thôøi gian. Ñôn vò tính laø miligiaây. Neáu ñaët laø 0 thì ñoái töôïng timer khoâng hoaït ñoäng
11. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng frame
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng frame
Caption
Noäi dung cuûa tieâu ñeà frame
12. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Button
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng option button
Alignment
Quy ñònh vò trí nuùt choïn
0: nuùt choïn naèm beân traùi tieâu ñeà
1: nuùt choïn naèm beân phaûi tieâu ñeà
Caption
Tieâu ñeà cuûa option button
Font
Choïn font chöõ cho tieâu ñeà
Value
Neáu giaù trò naøy baèng true thì option naøy ñang ñöôïc choïn, ngöôïc laïi thì noù ñang ôû vò troù khoâng ñöôïc choïn
13. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng line
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng line
Bordercolor
Quy ñònh maøu cho ñöôøng thaúng
Borderwith
Quy ñònh ñoä daøy cuûa ñöôøng thaúng
Borderstyle
Quy ñònh kieåu ñöôøng thaúng coù giaù trò töø 0 ñeán 7
X1, X2, X3, X4
Xaùc ñònh toïa ñoä cuûa ñöôøng thaúng treân form
Drawmode
Quy ñònh mode ñeå veõ ñöôøng
14. Moät soá thuoäc tính hay duøng cuûa ñoái töôïng Shape
Thuoäc tính
Theå hieän vôùi giaù trò xaùc laäp
Name
Ñaët teân cho ñoái töôïng shape
Shape
Quy ñònh moät soá hình daùng
0: Hình chöõ nhaät
1: Hình vuoâng
2: hình ellipse
3: Hình troøn
4: Hình chöõ nhaät troøn goùc
5: Hình vuoâng troøn goùc
Fillstyle
Quy ñònh caùc kieåu veõ coù giaù trò töø 0 ñeán 7
Fillcolor
Quy ñònh maøu toâ beân trong cuûa hình
Borderstyle
Quy ñònh kieåu kieåu ñöôøng vieàn cuûa hình
Borderwith
Quy ñònh ñoä daøy neùt cuûa hình
Berdercolor
Quy ñònh maøu ñöôøng vieàn
Backstyle
Quy ñònh maøu neàn cuûa hình
Backcolor
Quy ñònh maøu cuûa phaàn neàn khi backstyle laø Opque
II. Bieán, Kieåu bieán vaø caùch khai baùo
1. Bieán
Töông töï nhö caùc ngoân ngöõ laäp trình khaùc, bieán laø moät yeáu toá khoâng theå thieáu, bieán nhö laø moät phaàn cuûa boä nhôù, muoán döû duïng ta phaûi khai baùo. Teân bieán khoâng daøi quaù 255 kyù töï, coù tính gôïi nhôù, khoâng duøng caùc kyù hieäu, traùnh duøng caùc töø khoùa cuûa VB
2. Kieåu cuûa bieán
Khi khai baùo bieán ta phaûi khai boùa kieåu cho noù. Trong VB, ngöôøi ta duøng moät loaïi tieáp ngöõ nhö $, &, #, @, … ñeå bieát bieán ñoù coù kieåu laø gì, cuï theå nhö sau:
- String: laø kieåu döõ lieäu chuoãi, khoaûng giaù trò coù theå leân ñeán hai tyû kyù töï. Nhaän bieát bieán naøy baèng tieáp ngöõ $
Ví duï: Hoten$ = “Traàn Vaên Hai”.
Byte: laø kieåu soá nguyeân döông, khoaûng giaù trò töø 0 ñeán 255.
Long: laø caùc soá nguyeân, khoaûng giaù tròn töø –2.147.483.648 ñeán 2.147.483.647. Nhaän bieát bieán naøy baèng daáu & ôû cuoái
Ví duï: A& 50.
Integer: laø caùc soá nguyeân töø –32.768 ñeán 32.767. Nhaän bieát baèng daáu % ôû cuoái
Ví duï: b% = 1234
Single: laø caùc soá coù daáu chaám thaäp phaân, coù giaù trò aâm töø – 3,402823E8 ñeán –1,40129823E8 vaø coù gía trò döông töø 1,401298E-45 ñeán 3,402823E8. Nhaän bieát baèng daáu ! ôû cuoái
Ví duï: C! = 4.7
- Double: laø caùc soá coù daáu chaám thaäp phaân. Nhaän bieát baèng daáu # ôû cuoái. Khoaûng giaù trò töø –1,797693134486231E308 ñeán – 44,94065645841247E-324, giaù trò döông töø 44,94065645841247E-324 ñeán 1,797693134486231E308.
Ví duï: D# = 6.432
- Currency: Coù 15 soá naèm beân traùi daáu phaûy, 4 soá naèm beân traùi daáu phaûy. Nhaäp bieát baèng daáu @ ôû cuoái. Khoaûng giaù trò töø – 922337203685477,5808 ñeán 922337203685477,5807.
Ví duï: e@ = 5.1234.
- Date: Löu rtöõ thoâng tin veà thôøi gian. Nhaän bieát baèng daáu # ôû ñaàu vaø ôû cuoái.
Ví duï: ngay = #12/12/2003#
- Boolean: bieán logic coù giaù trò true hay false duøng ñeå gaùn giaù trò hay trong caùc caâu leänh ñieàu kieän
- Variant: Löu taát caû caùc giaù trò khaùc nhau.
3. Caùch Khai baùo
Ngoaøi caùch nhaän bieát bieán baèng caùc tieáp vò ngöõ, ta coù theå khai baùo bieán nhö sau:
DIM AS
Vi duï: DIM Ten AS String
III. Caùc pheùp toaùn trong Visual Basic
1. Caùc toaùn töû trong Visual Basic
Toaùn töû ^: Duøng ñeå tính luõy thöøa
Toaùn töû *: Duøng ñeå nhaân hai soá haïng
Toaùn töû \: Chia hai soá laáy phaàn nguyeân
Toaùn töû / : Chia hai soá laáy giaù trò thöïc
Mod: Chia laáy phaàn dö
Toaùn töû +: Coäng hai toaùn haïng
Toaùn töû -: Tröø hai toaùn haïng
2. Thöù töï öu tieân caùc pheùp toaùn
Pheùp tính luõy thöøa
Ñoåi moät soá thaønh soá aâm
Nhaân vaø chia
Chia soá nguyeân
Chia laáy soá dö
Coän g vaø tröø
3. Toaùn töû gaùn
a = b
4. Toaùn töû quan heä
Kyù hieäu
Yù nghóa
Ví duï
=
Baèng nhau
A=b
<
Nhoû hôn
A<b
<=
Nhoû hôn hoaëc baèng
A<=b
Khaùc nhau
Ab
>
Lôùn hôn
a>b
>=
Lôùn hôn hoaëc baèng
a>=b
5. Toaùn töû logic
A
NOT A
True
False
False
True
- Pheùp toaùn AND, OR vaø XOR
A
B
A And B
A or B
True
True
True
True
True
False
False
True
False
True
False
True
False
False
False
False
IV. Caùc caáu truùc ñieàu khieån
1. Caáu truùc löïa choïn IF
Caáu truùc löïa choïn IF cho pheùp ta reõ chöông trình thaønh 2 nhaùnh, neáu baïn muoán reõ nhieàu nhaùnh thì coù theå söû duïng caáu truùc IF loàng nhau.
Caáu truùc If khoâng coù Else
If Then
___________
End If
Caáu truùc If coù Else
If Then
____________
Else
____________
End If
2. Caáu truùc Select Case
Caáu truùc naøy ñöôïc duøng khi baïn xeùt nhieàu ñieàu kieän cho moät bieán naøo ñoù
CASE
_____’ Caùc leänh
CASE
_____’ Caùc leänh
CASE
_____’ Caùc leänh
CASE ELSE
_________
END SELECT
3. Caáu truùc DO WHILE ….. LOOP
Caáu truùc nhö sau
DO WHILE
‘ caùc leänh
LOOP
Caâu leänh naøy thöïc hieän nhö sau:
Tröôùc tieân noù kieåm tra ñieàu kieän: neáu ñieàu kieän ñuùng thì thöïc hieän leänh sau ñoù kieåm tra ñieàu kieän cho ñeán khi dieàu kieän sai thì thöïc hieän sau leänh LOOP
Neáu ñieàu kieän sai thì thöïc hieän leänh sau LOOP, boû qua leänh giöõa DO… LOOP
4. Caáu truùc Do …. Loop WHILE
Caáu truùc nhö sau
Do
‘ Caùc leänh
Loop While
Caâu leänh naøy thöïc hieän nhö sau:
Caùc caâu leänh sau Do seõ ñöôïc thöïc hieän, sau ñoù môùi xeùt ñieàu kieän khi ñieàu kieän sai thì môùi thöïc hieän leänh sau Loop
Neáu ñieàu kieän sai thì thöïc hieän leänh sau Loop
5. Caáu truùc Do … Loop Until
Caáu truùc nhö sau:
Do
‘ Caùc leänh
Loop until
Caâu leänh thöïc hieän nhö sau
Caùc leänh sau do seõ ñöôïc thöïc hieän tröôùc cho ñeán khi naøo ñieàu kieän ñuùng
6. Caáu truùc For … Next
Caáu truùc nhö sau
For to Step [khoaûng taêng]
‘ Caùc leänh
Next Bieán
Ñeå döøng caáu truùc For ta duøng phaùt bieåu Exit For
Ngoaøi ra, muoán thoaùt ra khoûi thuû tuïc vôùi ñieàu kieän naøo ñoù ta duøng thuû tuïc Exit Sub
V. Thuû tuïc vaø haøm
1. Thuû tuïc
Khi laäp trình ta thöôøng gaëp nhöõng ñoaïn chöông trình hay laäp ñi laäp laïi nhieàu laàn ôû nhöõng choã khaùc nhau. Ñeå chöông trình ñôõ phöùc taïp, caùc ñoaïn naøy ñöôïc thay theá baèng caùc chöông trình con töông öùng, khi caàn ta chæ caàn goïi noù ra maø khoâng caàn pahæ vieát laïi caû ñoaïn.
Maët khaùc, ñoái vôùi moät soá chöông trình lôùn vaø phöùc taïp. Vieäc xem xeùt toång quan cuõng nhö vieäc gôõ roái, hieäu chænh seõ raát khoù khaên. Vieäc laäp caùc chöông trình con seõ chia chöông trình ra thaønh töøng khoái, töøng modul. Ñieàu naøy giuùp cho chuùng ta kieåm tra, gôõ roái vaø ñieàu khieån deã daøng.
Caáu truùc cuûa moät thuû tuïc coù daïng nhö sau:
Sub
______________’ Caùc leänh
End Sub
Neáu baïn muoán duøng thuû tuïc naøy trong toaøn boä chöông trình thì baïn duøng theâm töø khoùa Public tröôùc töø khoùa Sub, coøn neáu baïn chæ muoán duøng trong moät form chöùa noù thì baïn theâm töø khoùa Private tröôùc töø khoùa Sub
2. Haøm
Haøm cuõng töông töï nhö thuû tuïc, chæ khaùc laø ta duøng haøm khi muoán nhaän laïi moät keát quaû traû laïi cuûa haøm.
Caáu truùc haøm nhö sau:
Function (tham soá AS Kieåu) AS
______________’ Caùc Leänh
Teân haøm = Giaù trò
End Function
VI. Moät soá leänh cuûa Visual Basic
1. Leänh End
Duøng ñeå chaám söùt chöông trình ñang chaïy, khi leänh naøy thöïc hieän thì caùc cöûa soå chöông trình seõ ñoùng laïi vaø giaûi phoùng ra khoûi boä nhôù. Leänh naøy thöôøng ñöôïc söû duïng cho nuùt leänh coù teân Exit côùi bieán coá Click
Ví duï
Sub Command1_Click()
End
End Sub
2. Leänh Exit Do
Leänh naøy duøng ñeå thoaùt khoûi voøng laëp Do
Ví duï
Do While
____________
Exit Do
3. Leänh Exit For
Leänh naøy duøng ñeå thoaùt khoûi voøng laëp For
4. Leänh Exit Sub
Leänh naøy duøng ñeå thoaùt khoûi chöông trình con naøo ñoù
5. Leänh Beep
Leänh naøy phaùt ra tieáng Beep
6. Leänh Date
Leänh naøy cho pheùp baïn ñaët laïi ngaøy giôø cuûa heä thoáng.
Cuù phaùp: Date = #Ngaøy#
Ví duï
Date = #07/12/20003#
Text1 = Date
7. Leänh Time
Leänh naøy cho pheùp baïn ñaët laïi giôø cuûa heä thoáng
Cuù phaùp: Time = #giôø#
Ví duï:
Time = # 11:53:AM#
8. Leänh Load
Leänh naøy duøng ñeå naïp moät Form vaøo boä nhôù
Cuù phaùp: Laod teân Form
Ví duï
Load form1
Form1.Show
9. Leänh Chdrive
Duøng ñeå ñoåi oå ñóa laøm vieäc
Ví duï:
Chdrive “D:” chuyeån xang laøm vieäc treân ñóa D
10. Leänh MkDir
Duøng ñeå taïo thö muïc môùi treân ñóa
Ví duï:
MkDir “C:/Baitap” ‘ Taïo thö muïc baøi taäp naèm ôû thö muïc goác ñóa C
11. Leänh ChDir
Duøng ñeå thay ñoåi thö muïc laøm vieäc.
Ví duï:
ChDir “\Lythuyet” ‘ chuyeån xang laøm vieäc thö muïc lyù thuyeát
12. Leänh RmDir
Leänh naøy duøng ñeå xoùa thö muïc roãng ñang toàn taïi reân ñóa.
Ví duï:
RmDir “C:\Baitap” ‘ Xoùa thö muïc Baitap treân ñóa C
13. Leänh Kill
Duøng ñeå xoùa moät hay nhieàu taäp tin treân ñóa
Ví duï:
Kill “C:\baitap\bt1.txt”’ xoùa taäp tin bt1.txt trong thö muïc baitap treân oå C
14. Leänh Name
Leänh naøy duøng ñeå ñoåi tin moät taäp tin treân cuøng moät oå ñóa.
Ví duï:
Name “C:\bt.txt” as “C:\baitap.txt”
15. Leänh AppActive title [, Wait]
Duøng ñeå kích hoaït moät cöûa soå trong moät chöông trình naøo ñang chaïy.
VII. Moät soá haøm duøng trong VB
1. Haøm Abs (Number)
Haøm naøy traû veà moät soá laø giaù trò tuyeät ñoái cuûa Nuumber
2. Haøm Sin(Number AS Double)
Tính Sin cuûa moät goùc
3. Haøm Cos (number AS Double)
Tính Cos cuûa moät goùc
4. Haøm Tan (number AS Double)
Tính Tan cuûa moät goùc
5. Haøm Atn (number AS Double)
Tính Artang cuûa moät goùc
6. Haøm Int (number)
Traû veà phaàn nguyeân cuûa moät soá neáu laø soá döông. Coøn neáu laø soá aâm thì seõ traû veà phaàn nguyeân coù giaù trò nhoû hôn moät ñôn vò.
7. Haøm Fix (number)
Haøm traû veà phaàn nguyeân cuûa moät soá.
8. Haøm Sgn (Number)
Haøm traû veà moät soá nguyeân.
Neáu so >0 seõ traû veà giaù trò laø 1
Neáu so <0 seõ traû veà giaù trò laø –1
Neáu so = 0 seõ traû veà giaù trò laø 0
9. Haøm Sqr (Number)
Tính caên baäc hai cuûa moät soá
10. Haøm Exp (Number)
Tính e muõ cuûa moät soá
11. Haøm Log ()
Tính Logarit cuûa moät soá. Haøm traû veà giaù trò thöïc
12. Haøm round (Bieåu thöùc [,so])
Haøm naøy seõ laøm troøn soá
13. Haøm Rnd ([Number])
Haøm traû veà moät soá thöïc ngaãu nhieân
14. Haøm Day (Bieán)
Traû veà soá ghi ngaøy cuûa bieán nhaäp vaøo
15. Haøm Month (Bieán)
Traû veà soá ghi thaùng cuûa bieán nhaäp vaøo
16. Haøm Year (bieán)
Traû veà soá ghi naêm cuûa bieán nhaäp vaøo
17. Haøm Now
Traû veà ngaøy thaùng naêm vaø thôøi gian hieän taïi
18. Haøm Weekday (bieán)
Cho bieát thöù maáy trong tuaàn
19. Haøm Hour (thoigian)
Cho bieát giôø öùng vôùi bieán.
20. Haøm Minute (thoigian)
Cho bieát phuùt öùng vôùi bieán.
21. second (thoigian)
Cho bieát giaây öùng vôùi bieán.
22. Haøm Replace (chuoi, chuoicantim, chuoithaythe, vitrithaythe, solanthaythe)
Thay theá chuoãi naøy baèng moät chuoãi khaùc.
23. Haøm Val (string)
Traû veà moät soá thöïc töông öùng vôùi chuoãi String. String phaûi laø moät chuoãi goàm caùc kyù soá hôïp leä.
Giaù trò cuûa haøm laø 0 neáu chuoãi coù kyù töï ñaàu laø kyù töï
Giaù trò cuûa haøm laø moät soá neáu chuoãi ñoù hoaøn toaøn laø caùc kyù soá.
Neáu caùc kyù töï soá vieát caùch nhau thì haøm naøy seõ caét boû khoaûng traéng vaø cho traû veà giaù trò baèng vôùi daõy naøy.
24. Haøm Str (Number)
Haøm traû veà moät chuoãi kyù töï.
Chuoãi naøy luoân luoân coù moät kyù töï ñaàu ghi daáu trong tröôøng hôïp soá aâm, hoaëc moät khoaûng troáng trong tröôøng hôïp soá döông
25. Haøm Qbcolor (color)
Haøm cho maøu cuûa moät ñoái töông naøo ñoù
26. Haøm RGB (red, green, blue)
Choïn maøu baát kyø qua tæ leä 3 maøu chuaån Red, Green, Blue.
27. Haøm Asc (String)
Traû veà maõ Ascii cuûa kyù töï string
28. Haøm Chr (CharCode)
Haøm traû veà moät kyù töï töông öùng vôùi moät maõ Ascii naøo ñoù
29. Haøm Len (Expreession)
Cho bieát chieàu daøi cuûa chuoãi
30. Haøm Ltrim (string)
Haøm naøy traû veà moät chuoãi sau khi ñaõ caét boû moät soá khoaûng troáng beân traùi cuûa chuoãi
31. Haøm Rtrim (string)
Haøm naøy traû veà moät chuoãi sau khi ñaõ caét boû moät soá khoaûng troáng beân phaûi cuûa chuoãi
32. Haøm Trim (string)
Haøm naøy traû veà moät chuoãi sau khi ñaõ caét boû moät soá khoaûng troáng beân traùi vaø beân phaûi cuûa chuoãi
33. Haøm Left (String, n)
Haøm traû veà moät chuoãi kyù töï ñöôïc caét töø n kyù töï (keå caû kyù töï traéng) beân traùi cuûa chuoãi String.
34. Haøm Right (String, n)
Haøm traû veà moät chuoãi kyù töï ñöôïc caét töø n kyù töï (keå caû kyù töï traéng) beân phaûi cuûa chuoãi String.
35. Haøm Mid (String, n [, length])
Haøm naøy traû veà moät chuoãi, chuoãi naøy ñöôïc laáy töø chuoãi String baét ñaàu töø vò trí n vôùi chieàu dai length.
36. Haøm Space (n)
Haøm traû veà moät chuoãi goàn n khoaûng traéng.
37. Haøm String (n, kyù töï)
Haøm traû veà moät chuoãi kyù töï gioáng nhau.
38. Haøm Instr (Start, S1, S2, Compare)
Duøng ñeå tìm moät chuoãi con coù naèm trong chuoãi meï hay khoâng, neáu coù thì naèm ôû vò trí thöù maáy.
Start: Vò trí baét ñaàu tìm, khoâng ghi thì tìm ôû vò trí ñaàu
S1 vaø S2 laø chuoãi meï vaø chuoãi con
Compare coù giaù trò
0: So saùnh chính xaùc töøng kyù töï
1: So saùnh khoâng phaân bieät chöõ hoa, chöõ thöôøng
2: Chæ duøng trong khi laäp trình cho Microsoft Acess
39. Haøm Ucase (string)
Ñoåi thaønh chöõ hoa.
40. Haøm Lcase (string)
Ñoåi thaønh chöõ thöôøng.
41. Haøm Format (Value, format)
Duøng ñeå ñònh daïng
42. Haøm IIF (,,)
Haøm naøy traû veà giaù trò 1 neáu bieåu thöùc ñuùng, vaø ngöôïc laïi thì traû veà giaù trò 2.
VIII. Caùc phöông thöùc trong VB
1. Phöông thöùc Print
In ra maøn hình cuûa moät bieåu maãu, moät doøng duy nhaát taïi vò trí hieän thôøi cuûa con troû.
2. Phöông thöùc CLS
Duøng ñeå xoùa
3. Phöông thöùc Move (Left As String [,top][,width][,height])
Duøng ñeå di chuyeån ñoái töôïng ñeán vò trí xaùc ñònh vaø hieäu chænh noù vôùi kích thöôùc môùi.
4. Phöông thöùc Scale (x1,y1)-(x2,y2)
Duøng ñeå quy ñònh laïi toïa ñoä treân form
5. Phöông thöùc Line (x1, y1) – (x2, y2), color, BF
Duøng ñeå veã moät ñöôøng thaúng hay moät hình chöõ nhaät
6. Phöông thöùc Circle
Duøng ñeå veã moät hình troøn, ellipse, cung troøn, cung ellipse treân Form hay treân Picturebox.
Chöông 5
CAØI ÑAËT BAØI TOAÙN
I. Phaân tích baøi toaùn.
1. Caùc chöùc naêng chính cuûa baøi toaùn.
Chöông trình goàm caùc chöùc naêng sau:
- AÙp duïng phöông phaùp PERT-PCM vaøo ñeå giaûi quyeát baøi toaùn laäp lòch thi coâng coâng trình, coâng vieäc naøy nhaèm laäp ra moät lòch thi coâng caùc coâng trình trong moät döï aùn sao cho thôøi gian hoaøn thaønh döï aùn laø toái öu nhaát veà thôøi gian, chuùng ta chæ caàn nhìn vaøo lòch laäp ra laø ñaõ ñieøu khieån ñöôïc döï aùn cuûa chuùng ta.
- Ñieàu khieån nhaân löïc khi thi coâng caùc coâng trình, coâng vieäc naøy giuùp chuùng ta ñieàu khieån löôïng nhaân coâng hieän coù.
2. Caáu truùc döõ lieäu cuûa baøi toaùn.
Döõ lieäu cuûa baøi toaùn ñöôïc löu tröõ döôùi daïng moät baûng ghi coù caáu truùc nhö sau:
Type LuuTru
DinhDau As Long
DinhCuoi As Long
GiaTri As Long
NgayThiHanh As Date
Ten As String * 50
End Type
Trong ñoù DinhDau löu tröõ soá thöù töï cuûa haïng muïc caàn phaûi laøm tröôùc, ví duï nhö sau
1 (10) 2 5 (12) 8
(0) (10)
0 (15) (30) (12) 9
(0) (10) (15) (15) (20) 3 4
6 7
(10)
thì khi ñoù DinhDau seõ coù giaù trò laø 1, DinhCuoi seõ coù giaù trò laø 2 vaø luùc ñoù GiaTri seõ baèng 10, ngaøy thi haønh duøng ñeå löu tröõ ngaøy baét ñaàu thi haønh döï aùn, coøn bieán Ten duøng ñeå löu tröõ teân caùc haïng muïc caàn thi coâng, ví duï haïng muïc (1,2 ) laø xaây töôøng chaúng haïn, khi ñoù luùc löu tröõ döõ lieäu seõ löu tröõ taát caû caùc bieán ñoù.
Chöông trình coøn löu tröõ theâm moät File duøng ñeå löu tröõ theân teân caùc haïng muïc noù cuõng coù daïng moät baûng ghi nhö sau;
Type HocvienType
TenHM As String * 50
End Type
Bieán TenHM duøng ñeå löu tröõ caùc teân haïng muïc, caùc teân naøy seõ ñöôïc löu tröõ döôùi daïng moät File cuøng caáp vôùi File nguoàn cuûa chöông trình khi chöông trình chaïy, noù coù taùc duïng caäp nhaät nhöõng teân haïng muïc môùi cho chöông trình cuûa chuùng ta.
II. Giôùi thieäu chöông trình.
Chöông trình bao goàm hai coâng vieäc chính ñoù laø: Laäp lòch thi coâng coâng trình vaø Ñieàu khieån nhaân löïc
1. Laäp lòch thi coâng coâng trình.
Chöông trình ñöôïc toå chöùc döôùi moät Menu chính coù daïng nhö sau
Menu chính cuûa chöông trình naøy lieân keát vôùi moïi Form cuûa chöông trình, ôû ñaây ta coù theå söû duïng chöông trình Help ñeå ñöôïc höôùng daãn söû duïng hoaëc taïi moãi bieåu töôïng cuûa chöông trình ñeàu coù Tooltip baèng tieáng Vieät hieän leân, vì vaäy baïn coù theå deã daøng söû duïng chöông trình naøy.
Töø Form chính naøy ta coù theå tieán haønh ñöôïc caùc coâng vieäc nhö sau:
- Môû moät File môùi ñeå nhaäp döõ lieäu töø ñaàu: baèng caùch baám vaøo bieåu töôïng New coù hình tôø giaáy traéng, hoaëc baám vaøo Menu File/New ñeå chöông trình baét ñaàu laøm vieäc.
+ Sau khi baám New thì chöông trình seõ cho moät Form chöa coù döõ lieäu. Töø ñaây baïn coù theå nhaäp döõ lieäu ñeå tính toaùn: ñaàu tieân laø nhaäp soá haïng muïc caàn laøm trong moät döï aùn, ôû ñaây soá haïng muïc phaûi laø soá, vaø soá phaûi laø soá döông.
+ Neáu baïn nhaäp sai chöông trình seõ thoâng baùo loãi ñoù vaø yeâu caàu baïn nhaäp laïi cho ñeán khi naøo nhaäp ñuùng thì thoâi, baïn cuõng coù theå Click vaøo nuùt HuûyBoû ñeå huûy boû coâng vieäc nhaäp döõ lieäu.
+ Sau khi nhaäp xong baïn coù theå baám nuùt Enter ñeå xaùc ñònh soá baïn vöøa nhaäp, hoaëc Click vaøo bieåu töông Tieáp Tuïc , chöông trình seõ kieåm tra sem baïn ñaõ nhaäp ñuùng chöa. Neáu chöa ñuùng thì baïn phaûi nhaäp laïi.
+ Baïn coù theå huûy boû baèng caùch Click vaøo bieåu töôïng Huûy Boû hoaëc nhaán phím ESC ñeå huûy boû vieäc nhaäp döõ lieäu cuûa mình vaø quay trôû laïi Form ban ñaàu.
+ Sau khi nhaäp xong soá haïng muïc caàn tính toaùn vaø nhaán Enter chöông trình seõ cho moät baûng tính trong ñoù baïn caàn phaûi nhaäp teân cuûa töøng haïng muïc maø trong döï aùn caàn phaûi laøm, ôû ñaây baïn coù theå goõ tröïc tieáp teân töøng haïng muïc hoaëc baïn coù theå söû duïng phöông phaùp gaép thaû töø moät danh saùch beân caïnh, neáu teân haïn