ậ ớ ệ ạ ề ậ ị ả ạ ờ ọ ớ ẫ ạ ả !"#!"$$ % & '"() ắ ế ờ ể ạ ờ ọ ) *+ 'ả ợ ự ệ ớ ', ) + -ọ ớ ắ ầ )( ộ ự ễ )ớ ệ • .* ()-/ủ ◦ 0(# 1# 22# ồ ố ố ờ ạ ố +(- ◦ 0(#3 132ọ ồ 3- ◦ 0(#* 1* 2* 2ọ ọ ọ # -ố ế ầ 4* )ả • .) ()-ộ ủ ◦ 5) 4 "6+ 7+ 8+ ộ ề ọ ộ ầ ọ ị ừ ứ ế 9- : ;<'*& ứ ứ ủ ậ ỉ ế ị : -ọ ứ ủ ậ ◦ 5) ( '*) ộ ề ị ả ạ ủ ỗ ị ồ =(- + 2 + ứ ạ ộ ờ ể ỉ ả ệ ả ạ -ộ ớ ọ ◦ 5) # +( (% (ộ ề ố ế ố ầ ủ ố ế ạ ủ '*+ 7# +( (+"-ợ ợ ố ế ố ầ ủ ◦ 5) # >) % ) '*79 >) -ộ ề ố ế ổ ố ế ọ ộ ổ ế ổ ◦ 5) 4 3 + " -ộ ề ớ ọ ỗ ọ ạ ộ ờ ể ỉ ộ ớ ọ . # ỉ ố ◦ # -ỉ ố ◦ # ỉ ố ◦ # 3ỉ ố .(# ố ◦ # ổ ố ◦ # ổ ố ◦ # *ổ ố 4*<)- .) ) ế ộ ◦ 4 ả (22 () ) ứ ế ộ ề 2 ) + 3 () -ả ạ ờ ắ ầ ọ ủ ổ ọ (?@ " 8Aị ( A9B ?@ " CAA6Bị ?@ " CAị A ◦ 4 ả ( () ('= () ứ ế ề ờ ủ ổ ọ D() # > (* +"E-ằ ớ ố ế ầ ủ ọ ◦ 4 ả F(F () ) 2ứ ế ộ ề ả ạ ) + 3 () -ờ ắ ầ ọ ủ ổ ọ ◦ 4 ả ?@ (# +( (-ứ ố ợ ế ố ủ ) ể ễ ộ ◦ 5) ( '*) ộ ề ị ả ạ ủ ỗ ị =(- + 2 + ồ ứ ạ ộ ờ ể ỉ ả -ệ ả ạ ộ ớ ọ D(?@GG(?H@EIIDDD?H@J(?H@EK?@ELLD?@J(?@EK ?H@EEIIDF(F?@GGF(F?H@E ◦ 5) # +( (% (ộ ề ố ế ố ầ ủ ố ế ạ ủ '*+ 7# +( (ợ ợ ố ế ố ầ ủ +"- MDHGCBHNBHJJEO MDF(F?@GGF(F?H@EO FGFJ(?H@B P P FN?F(F?@@ Q5) # >) % ộ ề ố ế ổ ố ế ọ ) '*79 >) -ộ ổ ế ổ ?@J(?@EK9 Q5) 4 3 ộ ề ớ ọ ỗ ọ ạ ộ + " -ờ ể ỉ ộ ớ ọ DD?@GG?H@EIID(?@GG(?H@EEII DDD?H@J(?H@EK?@ELLD?@J (?@EK?H@EE $- <' 7(D)('('Eả ậ ế ◦ ) R (ị ầ ợ ế ệ ị ủ ) + #(' ế ỉ ợ ị ) '-ế ◦ %( =' () "+ ỗ ể ộ ợ 1) ) +1+ ả ở ấ ả ế ợ ị + RS( " D'*ớ ờ ể ệ ạ ế ỗ 1) E-ả ộ T) ế ◦ ( <7(+ ) ế ề ộ ấ ◦ ( F(F ◦ ' ế ế ậ ả .FDH((E )UFDEO>># *+(&=ố ứ ự MDGGEO U(0FDEB PF#FO VMDGCBNWBJJEO>> ( MDG8BNG9BJJEO>> ( MDGCBNBJJEO>> F(F MDGCBNBJJEO>> [...]... FC(i+1,A); break C; } } } } } } } hour[i] = n; room[i] = p; teacher[i] = g; Chương trình demo Ngôn ng ữ và công c ụ l ập trình: ◦ Java ◦ NetBeans IDE ◦ SQLite Các ch ức năng: ◦ Tạo thời khoá biểu bằng thuật toán backtracking và forward-checking ◦ Xem các môn học, giáo viên, danh sách phòng ◦ Chỉnh sửa CSDL ◦ Thoát chương trình ... được gán giá trị - Loại bỏ (dừng) hướng tìm kiếm hiện tại khi có bất kỳ một biến (chưa được gán giá trị) nào đó không còn giá trị hợp lệ Vì tính chất của bài toán, hàm kiểm tra các biến chưa được gán sẽ quy về việc kiểm tra biến có thời gian học trong tuần lớn nhất, vì nếu biến này còn giá trị h ợp l ệ thì các biến khác cũng sẽ còn giá trị hợp lệ Co de (java): public void FC(int i, boolean B[][][][]){... các ràng buộc day[i] = t; hour[i] = tietbd[n]; room[i] = p; teacher[i] = g; // lưu giá trị XepLich(i+1); // hàm đệ quy break A; } } } } } } } Cây l ời gi ải: 2 Thu ật toán ki ểm tra ti ến (Forward-checking) Mục đích của thuật toán kiểm tra tiến là để tránh các thất bại bằng kiểm tra trước các ràng buộc Kiểm tra tiến đảm bảo sự phù hợp giữa biến đang được xét gán giá trị và các biến khác có liên... 5;n++){ //tiết bắt đầu for(int t=2;t