Báo cáo bài tập lớn đề bài Bố trí phòng họp
Trang 1LOGO TRƯỜNG ĐẠI HỌC SƯ PHẠM TPHCM KHOA CÔNG NGHỆ THÔNG TIN
ĐINH VĂN QUYÊN
Trang 2ĐỀ BÀI
Tên đề bài: Bố trí phòng họp
Mô tả: Có n cuộc họp, cuộc họp thứ i bắt đầu
vào thời điểm si và kết thúc ở thời điểm fi Do
chỉ có một phòng hội thảo nên 2 cuộc họp
bất kì sẽ được cùng bố trí phục vụ nếu
khoảng thời gian làm việc của chúng chỉ giao
nhau tại đầu mút Hãy bố trí phòng họp để
phục vụ được nhiều cuộc họp nhất
Trang 3PHÂN TÍCH BÀI TOÁN
Giả sử ta có một tập S = {1, 2, …, n} gồm n
cuộc họp nhưng chỉ có 1 phòng hội thảo nên
chỉ có thể được dùng cho một cuộc họp tại
một lúc
Mỗi cuộc họp i có thời điểm bắt đầu si và một
thời điểm kết thúc fi, mà si fi Nếu được
lựa chọn, cuộc họp i diễn ra trong thời
khoảng [si, fi) Cuộc họp i và j là tương thích
nếu thời khoảng [si, fi) và [sj, fj) không phủ lấp
lên nhau (tức là, i và j là tương thích nếu si
>= fj hay sj >= fi) MĐFBM HDJF HJFD
Bài toán bố trí phòng họp là chọn ra một chuỗi các cuộc họp tương thích với nhau và
có số cuộc họp nhiều nhất.
Trang 4PHÂN TÍCH BÀI TOÁN
Trang 5GIẢI THUẬT SƠ BỘ
Trong thủ tục áp dụng giải thuật tham lam để
giải bài toán bố trí cuộc họp, ta cần phải sắp
các cuộc họp theo thứ tự tăng của thời điểm
kết thúc: f1 f2 … fn
procedure MEETING-SELECTOR(S, f) ; /* S là mảng giữ thời điểm bắt đầu và f là mảng giữ thời điểm kết thúc */
Trang 6int dem=0; //lưu tổng số cuộc họp
hiện tại đã được bố trí
Trang 10NHẬN XÉT
Giải thuật tham lam áp dụng vào bài toán lựa
chọn một khả năng tối ưu cục bộ với hy vọng
sẽ dẫn đến một lời giải tối ưu toàn cục
Giải thuật không nhất thiết đem lại lời giải tối
ưu Tuy nhiên thủ tục void boTriLichHop() ở
trên thường tìm được một lời giải tối ưu cho
một thể hiện của bài toán bố trí phòng họp
Trang 11MỘT HƯỚNG ĐI KHÁC…
Giả sử dãy cuộc họp đã được sắp xếp tăng
dần theo thời gian kết thúc
Hàm mục tiêu : y = độ dài dãy cuộc họp
được sắp
Gọi L(i) là độ dài dãy cuộc họp được sắp dài
nhất, các phần tử lấy trong miền từ 1 đến i
và phần tử cuối cùng là i
Trang 12PP QUY HOẠCH ĐỘNG
Nhận xét: Với cách làm này ta đã chia 1 bài
toán lớn (dãy con của n cuộc họp) thành các
bài toán con cùng kiểu có kích thước nhỏ
hơn (dãy con của dãy có i cuộc họp đầu
tiên) Vấn đề là công thức truy hồi để phối
hợp kết quả của các bài toán con
Trang 13nếu bổ sung i vào sau dãy con j cuộc họp
đầu tiên ta sẽ được dãy cuộc họp được sắp
dài nhất xét từ 0 đến i
Trang 14TỔ CHỨC DỮ LIỆU
s[MAX], f[MAX], *name[MAX], n, luu[MAX]
giống như khai báo ở trên
int truoc[MAX];//truoc[i] luu chi so cua
cuoc hop da duoc sap xep truoc cuoc hop
thu i
int L[MAX];//phan tu L[i] luu so luong
cuoc hop da duoc sap xep trong day i+1
cuoc hop dau tien
int LMax;//luu so phan tu lon nhat hien
tai cua day con s[i]
int luuj=-1;//luu vi tri ma BMax thay
doi
int y;//ham muc tieu - so cuoc hop lon
Trang 17for (int j=0; j<i; ++j)
if (f[j]<=s[i] && LMax<L[j]) {
LMax=L[j];
luuj=j;
} L[i]=LMax+1;
truoc[i]=luuj;
}
Trang 18TRA BẢNG
Chiều dài dãy cuộc họp được sắp dài nhất là
Max{L[i]} với i=1 n-1
Dựa vào mảng truoc[] ta tìm được dãy cuộc
Trang 19int max=y=L[i]-1; //i la chi so co L[i] lon nhat
// vi mang trong C++ bat dau tu 0 nen phai -1
Trang 20NHẬN XÉT
Giải thuật Quy hoạch động có ưu thế hơn giải
thuật Quay lui khi biết lợi dụng những bài
toán con trùng lắp bằng cách giải mỗi bài toán
con một lần, cất lời giải vào trong một bảng mà
bảng này sẽ được tham khảo đến khi cần.
Giải thuật Quy hoạch động sẽ đưa ra một lời
giải tối ưu hơn so với giải thuật Tham lam
Tuy nhiên, giải thuật Quy hoạch động thường
có độ phức tạp không dưới O(n 2 ) nên khi
không gian bài toán lớn thì thời gian chạy là
không thể chấp nhận được.
Trang 21TÀI LIỆU THAM KHẢO
PGS.TS Dương Tuấn Anh, Bài giảng điện tử
Phân tích và Thiết kế giải thuật.
Trần Hữu Quốc Thư, Giáo trình Phân tích
thiết kế giải thuật.
ThS Nguyễn Thị Bích Ngân, Một số bài toán
quy hoạch động điển hình.
Và một số tài liệu khác từ Internet
Trang 22THE END
CẢM ƠN CÔ VÀ CÁC BẠN
ĐÃ QUAN TÂM THEO DÕI