1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin đại học thái nguyên

74 401 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 5,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chính vì vậy, bài toán xếp Thời khóa biểu luôn là một trong những bài toán được quan tâm và chú trọng hàng đầu trong các ỵ K \ trường học.. Đối với nước ta, mô hình đào tạo của các trườn

Trang 1

MỤC LỤC

MỤC L Ụ C

MỞ Đ Ầ U

Chương 1 :

TỔNG QUAN VỀ LẬP TRÌNH C#.NET

1.1 Nền tảng của NET

1.2 Ngôn ngữ C #

1.3 Lớp, đối tượng và sự kế thừa

1.4 Những kiểu cơ sở của ngôn ngữ C#

1.4.1 Các kiểu

1.4.2 Lệnh rẽ nhánh có điều kiện

1.4.3 Lệnh lặp

1.5 Truy cập dữ liệu với ADO.NET

1.5.1 Cơ sở dữ liệu và ngôn ngữ truy vấn S QL

1.5.2 Kiến trúc ADO.NET

1.5.3 Mô hình đối tượng ADO.NET

1.5.4 Đối tượng DataTable và DataColumn

1.5.5 Đối tượng DataRelation

1.5.6 Các bản g h i

1.5.7 Đối tượng SqlConnection và SqlCommand 1.5.8 Đối tượng DataAdapter

Chương 2 :

MộT số lý t h u y ế t cơ s ở

2.1 Tổng quan về hệ chuyên gia

2.1.1 Khái niệm hệ chuyên gia

2.1.2 Cấu trúc hệ chuyên gia

2 . 1.3 Vấn đề biểu diễn tri thức 2.2 Tổng quan về tập hợp. 2 . 2 . 1 . 2 . 2 . 2 2.3 Bài _Ai niệm tập hợp

lột số phép toán trên tập hợp

oán tìm kiếm

iải quyết vấn đề bằng tìm kiếm

lác chiến lược tìm kiếm trong không gian trạng thái 5.2.1 Các chiến lược tìm kiếm m ù

2.3.2.2 Các chiến lược tìm kiếm kinh nghiệm

2.4 Cây tìm kiếm

2.5 Thuật toán quay lu i

Chương 3 :

BÀI TOÁN THỜI KHÓA BIỂU V À

GIẢI PHÁP ĐỀ X U Ấ T

3.1 Khái quát chung

3.1.1 Phần mềm Thời khóa biểu tại Việt N am

3.1.2 Phần mềm Thời khóa biểu trên Thế giới

3.1.3 Phân loại mô hình xếp Thời khóa biểu

0

2

4

4

4

4

5

6

6

7

9

10

10

10

11

12

12

13 13 13

14

14

14

14

14

14

17 17 17

18 18 19

20

25 27 27 30 30 30 30 30

31 33

Trang 2

3.1.3.1, Phân loại theo khuôn dạng thời gian Thời khóa biểu

3.1.3.2 Phân loại theo đơn vị xếp Thời khóa biểu

3.1.4 Các đối tượng liên quan đến Thời khóa biểu

3.1.5 Các đặc thù của công việc xếp Thời khóa biểu tại Việt Nam 3.2 Phân tích bài toán

3.2.1 Các yêu cầu cơ bản của Thời khóa biểu

3.2.2 Một số khái niệm

3.2.3 Các vấn đề khó khăn và các giải pháp

3.2.3.I Các khó khăn

3.2.3.2 Các giải pháp

3.3 Thuật toán xếp Thời khóa biểu

3.3.1 Ý tưởng

3.3.2 Các bước chính của thuật toán 3.3.3 Lưu đồ thuật toán

Chương 4 :

THiEt k ế h ệ t h ố n g

4.1 Biểu phân cấp chức năng: 4.2 Biểu đồ luỗng dữ liệu mức khung cảnh 4.3 Biểu đồ luỗng dữ liệu mức đỉnh 4.4 Thiết kế cơ sở dữ liệu

4.5 Lược đồ dữ liệu quan hệ

Chương 5 :

r a ự c N G H Ệ M .

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

TÀI LIỆU THAM KHAO

.33 34 35 37 38 38 40 43 43 48 53

54

54

56

58

58

58

58

60

61

64

65

65

72

73

Trang 3

MỞ ĐẦU

Bài toán lập lịch nói chung và bài toán xếp Thời khóa biểu nói riêng từ lâu

đã trở thành một bài toán nổi tiếng Sự nổi tiếng của bài toán này không chỉ bởi

độ phức tạp của nó mà còn ở tính ứng dụng rất cao trên thực tiễn của nó Bất kỳ một đơn vị, cơ quan hay một tổ chức hoạt động kinh tế, xã hội nào cũng cần phải xậy dựng cho mình một lịch biểu Thậm chí, tất cả các quy trình sản xuất cũng đều cần có lịch biểu để đảm bảo các công việc được hoàn thành theo đúng kế

hoạch đã đặt ra Đối với các trường học thì lịch biểu dạy và học (hay còn gọi là Thời khóa biểu) càng quan trọng hơn bao giờ hết Nó trở thành xương sống kết nối mọi hoạt động của nhà trường Chính vì vậy, bài toán xếp Thời khóa biểu luôn là một trong những bài toán được quan tâm và chú trọng hàng đầu trong các

ỵ K \

trường học

Đối với nước ta, mô hình đào tạo của các trường phổ thông là hầu như thống nhất trong cả nước, vì vậy có thể sử dụng chung một phần mềm xếp Thời khóa biểu cho các trường này Tuy nhiên, đối với các trường đại học, cao đẳng và trung học chuyên nghiệp thì mô hình đào tạo lại rất khác nhau Do đó, việc xậy dựng một Thời khóa biểu chung cho tất cả các trường là rất khó Đó cũng là lí do

để giải thích vì sao đa số các trường này hiện nay vẫn xếp Thời khóa biểu bằng tay, trong khi đó có những trường đã có phần mềm xếp Thời khóa biểu riêng như đại học Bách Khoa Hà Nội, Học viện Kỹ Thuật Quân Sự

Mặt khác, việc xây dựng một phần mềm xếp Thời khóa biểu cũng không dễ dàng bởi đây là bài toán có độ phức tạp hàm mũ Rất nhiều các nhóm nghiên cứu trong và ngoài nước đã nghiên cứu bài toán này theo các hướng tiếp cận khác nhau như mạng nơron, fuzzy logic kết hợp với giả thuật di truyền và đã có những thành công đáng kể Trong đề tài này, em xin đề xuất thuật toán xếp Thời khóa biểu theo hướng tiếp cận mới: kết hợp giữa hệ chuyên gia, lý thuyết tập hợp và

đồ thị Để thực hiện việc nghiên cứu bài toán xếp Thời khóa biểu em đã kết hợp với các thầy giáo, cô giáo, cán bộ phòng đào tạo Khoa công nghệ thông tin - Đại học Thái Nguyên Qua tìm hiểu thực tế tại Khoa em được biết công việc xếp lịch tại Khoa vẫn đang gặp rất nhiều khó khăn do chưa có một phần mềm xếp Thời

Trang 4

khóa biểu hữu hiệu và chủ yếu theo mô hình đào tạo niên chế Từ những lý do và

nhu cầu thực tế như trên nên em quyết định chọn đề tài: “Xây dựng chương trình

xếp Thời khóa biểu niên chế cho Khoa công nghệ thông tin - Đại học Thái

Nguyên” là đồ án tốt nghiệp của mình

Cùng với việc nghiên cứu và cài đặt thử nghiệm thuật toán xếp Thời khóa

biểu em cũng dành thời gian để nghiên cứu về ngôn ngữ lập trình C#.NET, một

ngôn ngữ rất mạnh hiện nay trong việc xây dựng các ứng dụng NET và uản

trị cơ sở dữ liệu SQL server 2000, một hệ quản trị đang được dùng rất phổ biến

hiện nay

môi trường NET, ngôn ngữ C# và các đối tượng truy cập cơ sở dữ liệu trên

V

môi trường NET.

> Chương 2: M ột số lý thuyết cơ sở Chương này sẽ trình bày sơ lược về hệ

chuyên gia, tập hợ, bài toán tìm kiếm và một số thuật toán tìm kiếm, về tư tưởng của thuật toán lui và hướng ứng dụng trong bài toán xếp Thời khóa

> Chương 3: Sơ lược về bài toán xếp Thời khóa biểu và giải pháp đề xuất

Chương này sẽ tập chung phân tích bài toán xếp Thời khóa biểu, xây dựng

thuật toán xếp Thời khóa biểu.

> Chương 4: Thiết kế hệ thống Chương này sẽ đưa ra các biểu đồ dữ liệu và

thiết kế cơ sở dữ liệu cho bài toán.

> Chương 5: Các kết quả thực nghiệm.

Em rất mong nhận được sự đóng góp ý kiến của các thầy, cô giáo và các

Báo cáo đồ án tốt nghiệp gồm các chương như sau:

> Chương 1: Tổng quan về C#.NET Trong chương ì ình bày sơ lược về

biểu.

bạn

Trang 5

Chương 1:

TỔNG QUAN VỀ LẬP TRÌNH C#.NET

1.1 Nền tảng của NET

Khi Microsoft công bố C# vào tháng 7 năm 2000 Nền tảng NET là bộ

khung phát triển ứng dụng mới, nó cung cấp một giao diện lập trình ứng dụng

(Application Programming Interface - API)

khác nổi bật của Microsoft từ những năm 90 Trong số đó có các dịch vụCOM+, công nghệ ASP, XML và thiết kế hướng đối tượng Nền tảng NET bao

công cụ phát triển bao gồm Visual Studio NET; một tập đầy đủ các thư viện

phục vụ cho việc xây dựng các ứng dụng web, các dịch vụ web và các

ứng dụng Windows; có CLR - Common Language Runtime: (ngôn ngữ

thực thi dùng chung) để thực thi các đối tượng được xây dựng trên bộ khung

2 Một tập các Server Xí nghiệp NET như SQL Server 2000

Exchange 2000, BizTalk 2000, chúng cung cấp các chức năng cho việc lưu

trữ dữ liệu quan hệ, thư điện tử, thương mại điện tử B2B,

3 Các dịch vụ web thương mại miễn phí, vừa được công bố gần đâynhư là dự án Hailstorm; nhà phát triển có thể dùng các dịch vụ này để xây

dựng các ứng dụng đòi hỏi tri thức về định danh người d ù n g

4 .NET cho các thiết bị không phải PC như điện thoại (cell phone), thiết

bị game

1.2 Ngôn ngữ C#

C# là một ngôn ngữ rất đơn giản, với khoảng 80 từ khoá và hơn mười

kiểu dữ liệu dựng sẵn C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng

Trang 6

liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# có những

từ khoá dành cho việc khai báo lớp, phương thức, thuộc tính mới C# hỗ trợđầy đủ khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa

hình

C# hỗ trợ khái niệm giao diện (interfaces) tương tự Java Một lớp chỉ

có thể kế thừa duy nhất một lớp cha nhưng có thế cài đặt nhiều giao diện

C# có kiểu cấu trúc (struct) (không giống C++) Cấu trúc là kiểu hạng nhẹ

và bị giới hạn.Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thể cài

đặt giao diện

C# cung cấp những đặc trưng lập trình hướng thành phần như thu ộc

liệu mô tả các lớp bao gồm các phương thức và thuộc tính, các thông tin bảo

mật

Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên

là các thư viện liên kết động (DLL) hay tập tin thực thi (EXE) Trong NET

một assembly là một đơn vị của việc tái sử dụng, xác định phiên bản, bảomật, và phân phối CLR cung cấp một số các lớp để thao tác với assembly

C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưngvùng mã đó được xem như không an toàn CLR sẽ không thực thi việc thu dọn

rác tự động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình

viên tự giải phóng

h hướng đối tượng, do đó ta không thể không quan tâm đến các khác niệm lớp, đối tượng và sự kế thừa vì chúng là những yếu

tố chính trong lập trình hướng đối tượng

Lớp là một bản mẫu chung cho tất cả những đối tượng có những đặc trưng

giống nhau, tức là những thuộc tính và những hành vi giống nhau

y

tính, sự kiện và dẫn hướng khai báo (được gọi là attribute) Lập trình hướng

component được hỗ trợ bởi CLR thông qua siêu dữ liệu (metadata) Siêu dữ

Trang 7

Đối tượng là những biểu hiện cụ thể của lớp Mỗi đối tượng có các thuộc

tính (các dữ liệu) mô tả các tính chất và các phương thức, các thao tác trên dữ liệu

để xác định hành vi của đối tượng

Đối tượng là sự kết nối của dữ liệu và phương thức, sự thuận lợi cơ bản

của lập trình hướng đối tượng là dữ liệu và các thao tác xử lí dữ liệu được chứa

và đóng gói trong đối tượng Đối tượng có thể được xem như một đơn vị tự lưu

trữ

Một đối tượng thì gồm có 2 yếu tố chính là:

• Properties (các thuộc tính) Biểu diễn đặc tính của một đối tượng như

kích cỡ, vị trí, màu sắc Thuộc tính chứa các giá trị duy nhất cho mỗi đối tượng

• Methods (các phương thức) Đó là những gì mà một đối tượng có thể

hành động (xem như hành vi của đối tượng ) ;.!

Sự kế thừa là một trong những nguyên lí nền tảng của lập trình hướng đối

tượng Kế thứa là sự cho phép các đối tượng của lớp này được sử dụng một số

thuộc tính và dữ liệu của lớp khác Thông qua sự kế thừa chúng ta có thể có được

những lớp từ nhiều lớp khác đã được viết trước đó

1.4 Những kiêu cơ sở của ngôn ngữ C#

Trong mục này sẽ trình bày về hệ thống kiểu trong C#; phân biệt kiểu

dựng sẵn (int, long, bool, .) với các kiểu do người dùng định nghĩa Ngoài

ra, m ục này cũng sẽ trình bày cách tạo và dùng biến, hằng; giới thiệu kiểu

liệt kê, chuỗi, kiểu định danh, biểu thức, và câu lệnh Phần hai của chương

trình bày về các cấu trúc điều kiện và các toán tử logic, quan hệ, toán học,

1.4.1 Các kiểu

C# buộc phải khai báo kiểu của đối tượng được tạo Khi kiểu được khai

báo rõ ràng, trình biên dịch sẽ giúp ngăn ngừa lỗi bằng cách kiểm tra dữ liệu

được gán cho đối tượng có hợp lệ không, đồng thời cấp phát đúng kích thước

bộ nhớ cho đối tượng

C# phân thành hai loại: loại dữ liệu dựng sẵn và loại do người dùng địnhnghĩa

C# cũng chia tập dữ liệu thành hai kiểu: giá trị và tham chiếu Biến kiểu

Trang 8

giá trị được lưu trong vùng nhớ stack, còn biến kiểu tham chiếu được lưu trong vùng nhớ heap.

C# cũng hỗ trợ kiểu con trỏ của C++, nhưng ít khi được sử dụng Thông thường con trỏ chỉ được sử dụng khi làm việc trực tiếp với các hàm API của windows hay các đối tượng COM

a) Loại dữ liệu định sẵn

C# có nhiểu kiểu dữ liệu định sẳn, mỗi kiểu ánh xạ đến một kiểu được

hổ trợ bởi CLS (Commom Language Specification), ánh xạ để đảm bảo rằng đối tượng được tạo trong C# không khác gì đối tượng được tạo trong các ngôn ngữ NET khác như kiểu byte, long, char, float, double, bool:

b) Chuyển đổi kiểu định sẳn

Một đối tượng có thể chuyển từ kiểu này sang kiểu kia theo hai hình thức: ngầm hoặc tường minh Hình thức ngầm được chuyển tự động còn hình thức tường minh cần sự can thiệp trực tiếp của người lập trình (giống với C++

c) Kểu do người dùng định nghĩa

Để định nghĩa một kiểu dữ liệu ta sử dụng từ khóa struct

truct Tenkieu

Kieu1 <tên trường1>

Kieun <tên trườngn>

}

1.4.2 Lệnh rẽ nhánh có điều kiện

Các từ khóa if-else, while, do-while, for, switch-case, dùng để điều khiển

Trang 9

dòng chảy chương trình C# giữ lại tất cả các cú pháp của C++, ngoại trừ switch

có vài cải tiến

thi Một điểm khác biệt với

u thức logic, không thể là biểu

Biểu thức lựa chọn là biểu thức sinh ra trị nguyên hay chuỗi Switch

sẽ so sánh biểu_thức_lựa_chọn với các biểu_thức_hằng để biết phải thực hiện với khối lệnh nào Lệnh nhảy như break, goto để thoát khỏi câu switch

và bắt buộc phải có

Trang 10

Lệnh goto có thể dùng để tạo lệnh nhảy nhưng nhiều khi nhà lập trình

chuyên nghiệp khuyên không nên dùng câu lệnh này vì nó phá vỡ tính cấu trúc của chương trình Cách dùng câu lệnh này như sau:

e) Câu lệnh break, continue, và return

Cả ba câu lệnh break, continue, và return rất quen thuộc trong C++ và

Java, trong C#, ý nghĩa và cách sử dụng chúng hoàn toàn giống với hai ngôn

Trang 11

ngữ này.

1.5 Truy cập dữ liệu với ADO.NET

Trong thực tế, có rất nhiều ứng dụng cần tương tác với cơ sở dữ

liệu .NET Framework cung cấp một tập các đối tượng cho phép truy cập vào

cơ sở dữ liệu, tập các đối tượng này được gọi chung là ADO.NET

ADO.NET tương tự với ADO, điểm khác biệt chính ở chỗ ADO.NET là

một kiến trúc dữ liệu rời rạc, không kết nối.Với kiến trúc này, dữ liệu đượcnhận về từ cơ sở dữ liệu và được lưu trên vùng nhớ cache của máy người

dùng Người dùng có thể thao tác trên dữ liệu họ nhận về và chỉ kết nối đến cơ

sở dữ liệu khi họ cần thay đổi các dòng dữ liệu hay yêu cầu dữ liệu mới

liệu cùng một lúc, tiết kiệm đáng kể tài nguyên bộ nhớ Giảm thiểu đáng kể

vấn đề hàng trăm ngàn kết nối cùng truy cập vào cơ sở dữ liệu cùng một lúc

ADO.NET kết nối vào cơ sở dữ liệu để lấy dữ liệu và kết nối trở lại đểcập nhật dữ liệu khi người dùng thay đổi chúng Hầu hết mọi ứng dụng đều sử

dụng nhiều thời gian cho việc đọc và hiển thị dữ liệu, vì thế ADO.NET đã

cung cấp một tập hợp con các đối tượng dữ liệu không kết nối cho các ứng

dụng để người dùng có thể đọc và hiển thị chúng mà không cần kết nối vào cơ

sở dữ liệu

1.5.1 Cơ sở dữ liệu và ngôn ngữ truy vấn SQL

Để có thể hiểu rõ được cách làm việc của ADO.NET, cần phải nắm được

một số khái niệm cơ bản về cơ sở dữ liệu quan hệ và ngôn ngữ truy vấn dữ

liệu, như: khái niệm về dòng, cột, bảng, quan hệ giữa các bảng, khóa chính,

khóa ngoại và cách truy vấn dữ liệu trên các bảng bằng ngôn ngữ truy vấn

SQL : SELECT, UPDATE, DELETE hay cách viết các thủ tục ( Store

Procedure)

1.5.2 Kiến trúc ADO.NET

ADO.NET được chia ra làm hai phần chính rõ rệt, được thể hiện qua hình

Trang 12

Hình 1-1 Kiến trúc ADO.NET

DataSet là thành phần chính cho đặc trưng kết nối không liên tục của

kiến trúc ADO.NET DataSet được thiết kế để có thể thích ứng với bất kỳ

nguồn dữ liệu nào DataSet chứa một hay nhiều đối tượng DataTable mà nó

được tạo từ tập các dòng và cột dữ liệu, cùng với khoá chính, khóa ngoài,ràng buộc và các thông tin liên quan đến đối tượng DataTable này Bản thân

DataSet được định dạng như một tập tin XML

Thành phần chính thứ hai của ADO.NET chính là NET Provider Data, nó

chứa các đối tượng phục vụ cho việc thao tác trên cơ sở dữ liệu được hiệu

quả và nhanh chóng, nó bao gồm một tập các đối tượng Connection,

Command, DataReader và DataAdapter Đối tượng Connection cung cấp

một kết nối đến cơ sở dữ liệu, Command cung cấp một thao tác đến cơ sở

dữ liệu, DataReader cho phép chỉ đọc dữ liệu và DataAdapter là cấu nối trung

gian giữa DataSet và nguồn dữ liệu

1.5.3 Mô hình đối tượng ADO.NET

Có thể nói mô hình đối tượng của ADO.NET khá uyển chuyển, các đối

tượng của nó được tạo ra dựa trên quan điểm đơn giản và dễ dùng Đối tượng

quan trọng nhất trong mô hình ADO.NET chính là Dataset Dataset có thể

được xem như là thể hiện của cả một cơ sở dữ liệu con, lưu trữ trên vùng nhớ

cache của máy người dùng mà không kết nối đến cơ sở dữ liệu Mô hình đối

tượng của Dataset (Hình 1-2):

Trang 13

DataSet bao gồm một tập các đối tượng DataRelation cũng như tập các đối tượng DataTable Các đối tượng này đóng vai trò như các thuộc tính của DataSet.

Ta có thể viết mã C# để tạo ra đối tượng DataTable hay nhận về từ kết quả của câu truy vấn đến cơ sở dữ liệu DataTable có một số thuộc tính dùng chung như thuộc tính Columns, từ thuộc tính này ta có thể truy cập đến đối tượng DataColumnsCollection thông qua chỉ mục hay tên của cột để nhận về các đối tượng DataColumn thích hợp, mỗi DataColumn tương ứng

với một cột trong một bảng dữ liệu Ví dụ :

DataTable dt = new DataTable("tenBang"); DataColumn dc = dt.Columns["tenCot"];

1.5.5 Đối tượng DataRelation

Ngoài tập các đối tượng DataTable được truy cập thông qua thuộc tính Tables, DataSet còn có một thuộc tính Relations Thuộc tính này dùng

để truy cập đến đối tượng DataRelationCollection thông qua chỉ mục hay tên của quan hệ và sẽ trả về đối tượng DataRelation tương ứng Ví dụ :

DataSet ds = new DataSet("tenDataSet"); DataRelation dre = ds.Relations["tenQuanHe"];

Trang 14

1.5.6 Các bản ghi

Tương tự như thuộc tính Columns của đối tượng DataTable, để truy cập đến các dòng ta cũng có thuộc tính Rows ADO NET không đưa ra khái

niệm RecordSet, thay vào đó để duyệt qua các dòng ( Rows ), ta có thể truy

cập các dòng thông qua thuộc tính Rows bằng vòng lặp foreach.

1.5.7 Đối tượng SqlConnection và SqlCommand

Đối tượng SqlConnection đại diện cho một kết nối đến cơ sở dữ liệu, đối tượng này có thể được dùng chung cho các đối tượng SqlCommand khác nhau Đối tượng SqlCommand cho phép thực hiện một câu lệnh truy vấn trực tiếp : như SELECT, UPDATE hay DELETE hay gọi một thủ tục (Store Procedure) từ cơ sở dữ liệu

1.5.8 Đối tượng DataAdapter

ADO.NET dùng DataAdapter như là chiếc cầu nối trung gian giữa DataSet và DataSource ( nguồn dữ liệu ), nó lấy dữ liệu từ cơ sở dữ liệu sau

đó dùng phương Fill() để đẩy dữ liệu cho đối tượng DataSet Nhờ đối tượng DataAdapter này mà DataSet tồn tại tách biệt, độc lập với cơ sở dữ liệu và một DataSet có thể là thể hiện của một hay nhiều cơ sở dữ liệu

Ví dụ:

//Tạo đối tượng SqlDataAdapter

Sqll da = new da = new SqlDataAdapter();

DataSet ds = new DataSet("tenDataSet");

//Đẩy dữ liệu trog sda vào ds bằng hàm Fill();

sda.Fill(ds);

Trang 15

Chương 2:

MỘT SỐ LÝ THUYẾT CƠ SỞ

.1 Tong quan vê hệ chuyên gia

2.1.1 Khái niệm hệ chuyên gia

Hệ chuyên gia là một chương trình máy tính được thiết kế để mô phỏng chuyên gia, thưc hiện giả uyết vấn đề

Hệ chuyên gia phần lớn chỉ xây dưng được các vấn đề mà chuyên gia đã giả quyết

2.1.2 Cấu trúc hệ chuyên gia

Hệ chuyên gia gồm 5 thành phần:

Cơ sở tri thức: là thành phần chính của hệ chuyên gia Nó được xây dưng

dưa trên tri thức của hệ chuyên gia, chứa các tri thức về lĩnh vực đó và lĩnh vực liên quan

Bộ nhớ làm việc: chứa các sư kiện liên quan đến vấn đề cần giả quyết.

Mô tơ suy luận: là phương pháp mà chuyên gia giả quyết vấn đề.

a) Khái niệm tri thức

Tri thức là sư hiểu biết về lĩnh vực, về chủ đề của con người

Thể hiện tri thức là quá trình mô phỏng tri thức trong cơ sở tri thức của hệ thống

Trang 16

- Tri thức may rủi: là loại tri thức được xây dựng không dựa trên cơ sở khoa học mà chủ yếu dựa vào kinh nghiệm để hình thành.

- Tri thức cấu trúc: là loại tri thức diễn tả các cấu trúc của tri thức, nó miêu

tả cách thức tổ chức, chức năng và quan hệ giữa các tri thức

- Tri thức meta: là loại tri thức diễn tả ý nghĩa trực tiếp về đối tượng, làm giảm hoặc tăng tầm quan trọng hoặc ý nghĩa của đối tượng, vấn đề

c) Thể hiện tri thức dưới dạng các luật IF THEN

Chúng ta có thể biểu diễn tri thức qua một số kỹ thuật như: thể hiện tri thức bằng cặp 3 đối tượng - thuộc tính - giá trị, thể hiện tri thức nhờ các luật, thể hiện tri thức qua mạng ngữ nghĩa, thể hiện tri thức qua các khung, thể hiện tri thức qua logic (mệnh đề và vị từ)

Ở đây em đi sâu vào thể hiện tri thức dưới dạng các luât if - then

Tri thức dưới dạng luật được xếp vào tri thức thủ tục Sử dụng các luật nếu

thì ta có thể biểu diễn được một khối lượng lớn các tri thức trong nhiều lĩnh vực

áp dụng khác nhau, và có thể thực hiện các thủ tục suy diễn hiệu quả

Luật được hình thành từ các câu Horn có dạng:

Pi A .APn -> Q (hay if Pi and and Pn then Q); trong đó, các Pi được

gọi là các điều kiện, Q được gọi là kết luận của luật

Sử dụng các luật nếu thì có các ưu điểm sau:

- Mỗi luật nếu - thì mô tả một phần nhỏ tương đối độc lập của tri thức.

- Có thể thêm vào tri thức các luật mới, hoặc loại bỏ một số luật cũ mà không ảnh hưởng nhiều tới các luật khác

- Các hệ tri thức với cơ sở tri thức gồm các luật nếu - thì có khả năng đưa

_;iả thích cho các quyết định của hệ

Các hệ tri thức mà cơ sở tri thức bao gồm các luật sẽ được gọi là các hệ dựa trên luật

Một hệ luật bao gồm 3 thành phần:

Cơ sở luật: gồm các luật cho trước

Cơ sở sự kiện (bộ nhớ làm việc): là các sự kiện liên quan trực tiếp đến vấn

đề cần giải quyết

Trang 17

Cơ chế lập luận: có 2 cách lập luận cơ bản trong hệ dựa trên luật là lập luận tiến và lập luận lùi

d) Độ tin cậy của vấn đề

Các chuyên gia thường đánh giá, suy xét khi giải quyết vấn đề Thông tin về vấn đề có thể không đầy đủ và không xác thực Người ta dùng lý thuyết xác suất

để đánh giá độ tin cậy của vấn đề và xây dựng lên lý thuyết chắc chắn

Gọi CF là nhân tố chắn chắn và CF là một giá trị thuộc khoảng [0 1] Nếu

CF càng lớn thì độ tin cậy của sự kiện đó cũng càng lớn và xác suất xảy ra sự kiện đó càng cao Ngược lại, nếu CF càng nhỏ thì xác suất xảy ra sự kiện đó càng nhỏ

Ta sẽ ứng dụng lý thuyết này trong bài xếp Thời khóa biểu để đề ra chiến lược sắp xếp Nếu ta muốn sắp xếp cho giáo viên nào trước thì ta sẽ đặt CF chogiáo viên đó càng cao và các giáo viên có CF càng thấp thì càng được xếp sau Trong thực tế có những giáo viên cần được ưu tiên xếp trước và có nguyện vọng muốn dạy vào những thời gian nhất định Như vậy, nếu giáo viên được xếp trước thì khả năng thỏa mãn nguyện vọng của giáo viên càng cao và ngược lại

Trong bài toán xếp Thời khóa biểu được trình bày ở đề tài này, giá trị CF không những chỉ được sử dụng để gán độ ưu tiên cho giáo viên mà nó còn được

sử dụng để gán độ ưu tiên cho các vị trí được chọn để xếp cho một phân phối của môn học Việc gán độ ưu tiên cho các vị trí thỏa mãn phân phối đang được xếp phụ thuộc vào kinh nghiệm của chuyên gia Do đó, tùy thuộc vào bài toán xếp Thời khóa biểu của từng trường học mà ta xây dựng một tập các vị trí ưu tiên phù hợp Và việc gán độ ưu tiên cho các vị trí này sẽ được lưu dưới dạng các luật và thuật toán sắp xếp sẽ tự động gán độ ưu tiên cho các vị trí này dựa trên tập luật này

Chẳng hạn, trong bài toán xếp Thời khóa biểu ở đây thì các luật được xậy dựng dựa trên kinh nghiệm của chuyên gia xếp Thời khóa biểu cho Khoa công nghệ thông tin như sau:

- Một môn học nên xếp có tiết đầu và tiết cuối, khi đó ta có một luật: Nếu phân phối trước của môn này được xếp vào các tiết đầu thì khi xếp phân phối sau các vị trí thuộc các tiết cuối (tiết 4, 5,6) có CF = 1 và các tiết đầu có CF = 0;

Trang 18

- Các buổi học thuộc cùng một môn nên cách nhau một khoảng K xác định,

ta có luật: Nếu buổi trước của môn xếp vào ngày x , x e {2,3,4,5,6} thì buổi sau của môn này phải xếp vào ngày y, y e {2,3,4,5,6} sao cho |y-x| > K và các vị trí thuộc các ngày y có CF =1, các vị trí thuộc các ngày không thỏa mãn khoảng cách trên có CF = 0;

- Người xếp Thời khóa biểu muốn xếp sao cho Thời khóa biểu của giáo viên liên tiếp do vậy các vị trí tạo nên tính liên tiếp của Thời khóa biểu của giáo viên

sẽ có CF = 1 và các vị trí khác sẽ có CF = 0;

Trên đây là một số ví dụ về xây dựng tập luật Tất nhiên, việc xây dựng tập luật cho bài toán toán xếp Thời khóa biểu là rất khó khăn vì nó đòi hỏi phải thỏa rất nhiều ràng buộc, thậm chí các ràng buộc đó có thể mâu thuẫn với nhau Do

đó, ta chỉ xây dựng lên tập luật thỏa mãn những điều kiện tối thiểu của Thời khóa biểu Nếu ta xây dựng được tập luật các càng tốt thì việc xây dựng tập các vị trí

ưu tiên càng dễ dàng, càng thỏa mãn được nhiều mong muốn của người xếp Thời khóa biểu và có thể tạo ra một Thời khóa biểu tốt nhất

2.2 Tổng quan về tập hợp

2.2.1 Khái niệm tập hợp

Ta có thể hiểu tập hợp là một tập các phần tử cùng thỏa mãn một hay một số tính chất nào đó và được kí hiệu A, B, C, X, Y, Z,

Để biểu diễn một tập hợp ta có hai cách sau:

Cách 1 : liệt kê tất cả các phần tử thuộc tập hợp

Cách 2: chỉ ra những tính chất đặc trưng P nào đó của các phần tử thuộc tập hợp.

Hợp của hai tập hợp : hợp của 2 tậphợp A và B là một tập kí hiệu A U B gồm tất cả các phần tử thuộc ít nhất một trong hai tập hợp đã cho

A U B = {x | x e A hoặc x e B}

Giao của hai tập hợp: giao của hai tập hợp A và B là một tập hợp kí hiệu là

A n B gồm tất cả các phần thuộc đồng thời cả hai tập A và B

A n B = {x | x e A và x e B }

Hiệu của hai tập hợp: hiệu của hai tập A và B là một tập kí hiệu là A\B

gồm các phần tử thuộc tập A mà không thuộc B

Trang 19

A\B = { x | x e A và x Ể B }Việc xây dựng lên lý thuyết tập hợp có ý nghĩa hết sức quan trọng trong toán học cũng như trong các bài toán thực tế của cuộc sống Bài toán xếp Thời khóa biểu được trình bày ở đây cũng sẽ dựa trên lý thuyết tập hợp để xây dựng miền thời của từng lớp và từng giáo viên như sau:

Mỗi lớp sẽ có một miền thời gian là một tập hợp L gồm 30 tiết học tương ứng với 5 ngày học trong tuần L={1, M,1 N}; với Mmax=6; Nmax=5;

Mỗi giáo viên có một miền thời gian gồm 60 tiết học tương ứng 5 ngày trong trong tuần (mỗi ngày 12 tiết)

GV={1, X,1 Y);với Xmax=12; Ymax=5;

Khi xếp một phân phối của môn học nào đó vào Thời khóa biểu của một giáo viên tương ứng với Thời khóa biểu của một lớp thì đánh dấu các vị trí đã chọn, các phân phối được xếp sau chỉ quan tâm đến các vị trí chưa được đánh dấu

Gọi PT={1, x}; với x là các vị trí vừa được đánh dấu, L1 là tập các vị trí chưa được xếp của lớp và GV1 là tập các vị trí chưa được xếp của giáo viên Khi đó, ta có: L1=L\PT; GV1=GV\PT

Với cách sử dụng phép toán trừ hai tập hợp như trên đảm bảo tại một thời điểm một giáo viên chỉ dạy cho một lớp và tránh được tình trạng trùng lặp trong Thời khóa biểu

2.3 Bài toán tì

Thời khóa biểu ị.^ 1

2.3 Bài toán tìm kiếm

2.3.1 Giải quyết vấn đề bằng tìm kiếm

Khi muốn giải quyết một vấn đề nào đó bằng cách tìm kiếm, đầu tiên ta phải xác định được không gian tìm kiếm Không gian tìm kiếm bao gồm tất cả các đối tượng cần quan tâm tìm kiếm Nó có thể là không gian liên tục, chẳng hạn không gian vectơ n chiều; nó cũng có thể là không gian các đối tượng rời rạc Vấn đề là làm thế nào để biểu diễn được các đối tượng trong không gian tìm kiếm Một trong phương pháp phổ biến là sử dụng không gian trạng thái Khi đó việc giải quyết vấn đề sẽ quy về việc tìm kiếm trong không gian trạng thái Bài toán xếp Thời khóa biểu thực chất cũng là một bài toán tìm kiếm phương án sắp xếp trong miền thời gian của lớp và của giáo viên Chính vì vậy, ta có thể áp dụng ta có thể

Trang 20

áp dụng các chiến lược tìm kiếm trong không gian trạng thái để giải quyết bài toán này bằng cách coi mỗi tiết học trong miền thời gian của giáo viên và lớp là một trạng thái và hàm tìm kiếm vị trí là các toán tử.

Để biểu diễn vấn đề trong không gian trạng thái người ta sử dụng một tập các trạng thái và các toán tử và khi muốn biểu diễn một vấn đề nào đó cần phải xác định được các yếu tố sau:

• Trạng thái ban đầu

• Một tập các toán tử Trong mỗi toán tử tả một hành động hoặc một phép biến đổi để có thể đưa một trạng thái tới một trạng thái khác Tập tất cả các trạng thái có thể đạt tới từ một trạng thái ban đầu bằng cách áp dụng một dãy toán tử lập thành không gian trạng thái của vấn đề

Ta kí hiệu không gian trạng thái là U, trạng thái ban đầu là u0 (u0 e U), Mỗi toán tử R có thể xem như một ánh xạ R: U ->U

• Một tập hợp T các trạng thái kết thúc (trạng thái đích), T là tâp con của không gian U

Khi biểu diễn vấn đề thông qua các trạng thái và các toán tử thì việc tìm nghiệm của bài toán quy về việc tìm đường đi từ trạng thái ban đầu tới trạng thái kết thúc (đích) Có thể biểu diễn không gian trạng thái bằng đồ thị định hướng,

" y •trong đó mỗi đỉnh của đồ thị tương ứng với một trạng thái

2.3.2 Các chiến lược tìm kiếm trong không gian trạng thái

Có thể phân chia các chiến lược tìm kiếm thành hai loại: chiến lược tìm kiếm mù và chiến lược tìm kiếm kinh nghiệm:

Chiến lược tìm kiếm mù (blind search): trong chiến lược tìm kiếm này, không có một sự hướng dẫn nào cho sự tìm kiếm, mà ta chỉ phát triển các trạng thái ban đầu cho tới khi gặp một trạng thái đích nào đó Có hai kỹ thuật tìm kiếm

mù đó là tìm kiếm theo bề rộng và tìm kiếm theo độ sâu

Tư tưởng của tìm kiếm theo bề rộng là: các trạng thái được phát triển theo thứ tự mà chúng được sinh ra, tức là trạng thái nào được sinh ra trước sẽ được phát triển trước Còn tư tưởng của tìm kiếm theo độ sâu là các trạng thái sinh ra sau sẽ được phát triển trước

Trang 21

Trong nhiều vấn đề, dù phát triển các trạng thái theo bề rộng hoặc theo bề sâu thì số lượng các trạng thái sinh ra trước khi gặp trạng thái đích cũng rất lớn

Do đó, các thuật toán tìm kiếm mù kém hiệu quả, đòi hỏi rất nhiều không gian và thời gian Trong thực tế, nhiều vấn đề không giải quyết được bằng tìm kiếm mù.Chiếm lược tìm kiếm kinh nghiệm (heuristis search): chiến lược này sử dụng sự hiểu biết về vấn đề để đánh giá các trạng thái và hướng dẫn sự tìm kiếm Trong quá trình phát triển trạng thái, ta sẽ chọn trong số các trạng thái chờ phát triển, trạng thái được đánh giá tốt nhất sẽ được chọn để phát triển tiết Do đó, tốc

độ tìm kiếm sẽ nhanh hơn

Như vậy, chiến lược tìm kiếm được xác định bởi chiến lược chọn trạng thái

để phát triển ở mỗi bước Trong tìm kiếm mù việc chọn trạng thái theo thứ tự mà chúng được sinh ra; còn trong tìm kiếm kinh nghiệm việc chọn trạng thái dựa vào

sự đánh giá các trạng thái ^

2.3.2.1 Các chiến lược tìm kiếm mù

Tìm kiêm theo bê rộng: Tư tưởng trong tìm kiếm theo bề rộng là tại mỗi

bước ta sẽ chọn trạng thái để phát triển là trạng thái được sinh ra trước trong các trạng thái chờ phát triển khác Danh sách L được sử dụng để lưu các trạng thái đã được sinh ra và chờ được phát triển Mục tiêu của tìm kiếm trong không giantrạng thái là tìm đường đi

Trang 22

Đánh giá độ phức tạp: Giả sử rằng, mỗi trạng thái khi được phát triển sẽ

sinh ra b trạng thái kề Ta gọi b là nhân tố nhánh Giả sử rằng, nghiệm của bài

V •toán là đường đi có độ dài d Bởi vì nghiệm có thể được tìm ra tại một đỉnh bất

kỳ ở mức d của cây tìm kiếm, do đó số đỉnh cần xem xét để tìm ra nghiệm là:íỳ ở mức d của cây tìm kiế

Như vậy độ phức tạp thời gian của thuật toán tìm kiếm theo bề rộng là: O(bd)

Độ phức tạp không gian cũng là O(bd), bởi vì ở đây cần lưu vào danh sách

L tất cả các đỉnh của cây tìm kiếm ở mức d, số các đỉnh này là bd

Tìm kiếm theo độ sâu: Tư tưởng trong tìm kiếm theo độ sâu là tại mỗi bước

ta sẽ chọn trạng thái để phát triển là trạng thái được sinh ra sau cùng trong số các trạng thái chờ phát triển Cũng như trong tìm kiếm theo bề rộng, danh sách L được sử dụng để lưu các trạng thái đã được sinh ra và chờ được phát triển và sử

Trang 23

dụng mảng father để lưu lại vết của đường đi, father[v]=u nếu cha của đỉnh v là

u Thủ tục tìm kiếm theo độ sâu được mô tả như sau:

Đánh giá độ phức tạp: Giả sử rằng, nghiệm của bài toán là đường đi có độ

dài d, cây tìm kiếm có nhân tố nhánh là b và có chiều cao là d Có thể xảy ra, nghiệm là đỉnh ngoài cùng bên phải trên mức d của cây tìm kiếm, do đó độ phức

tạp thời gian của cây tìm kiếm theo độ sâu trong trường hợp xấu nhất là O(bd),

tức là cũng như tìm kiếm theo bề rộng Tuy nhiên trên thực tế đối với nhiều bài toán tìm kiếm theo độ sâu thực sự nhanh hơn tìm kiếm theo bề rộng Lý do là tìm kiếm theo bề rộng phải xem xét toàn bộ cây tìm kiếm tới mức (d-1), rồi mới xem xét các đỉnh ở mức d Còn trong tìm kiếm theo độ sâu, có thể chỉ cần xem xét một bộ phận nhỏ của cây tìm kiếm thì đã tìm ra nghiệm

Trang 24

Trên đây hai chiến lược tìm kiếm mù rất phổ biến và thông dụng, song sự kết hợp hai chiến lược này để tận dụng được các thế mạnh của mỗi chiến lược

Đó là chiến lược tìm kiếm sâu lặp

Tìm kiếm sâu lặp: Nếu cây tìm kiếm chứa nhánh vô hạn, khi sử dụng tìm

kiếm theo độ sâu, ta có thể mắc kẹt ở nhánh đó và không tìm ra nghiệm Để khắc phục hoàn cảnh đó, ta chỉ tìm kiếm độ sâu ở mức d nào đó Nếu không tìm ra nghiệm, ta tăng độ sâu lên 1 Quá trình trên được lặp lại lại với d lần lượt là: 1, 2, đến một độ sâu max nào đó Như vậy thuật toán tìm kiếm sâu lặp sẽ sử ngthủ tục tìm kiếm sâu hạn chế như thủ tục con Đó là thủ tục tìm kiếm theo độ sâu

d nào đó rồi quay lên

Trong thủ tục tìm kiếm sâu hạn chế, d là tham số độ sâu, mảng depth ghi lại

thông báo thất bại; exit;

đặt v vào đầu danh sách L;

depth [v]: =depth [u]+1;

độ sâu của mỗi đỉnh

thái u0;

Trang 25

- Trong tìm kiếm sâu lặp chỉ cần không gian nhớ như tìm kiếm theo độ sâu.

- Trong tìm kiếm sâu lặp, ta phải phát triển lặp lại nhiều lần cùng một trạng thái Điều đó làm cho ta có cảm giác rằng, tìm kiếm sâu lặp lãng phí nhiều thời

gian Thực ra, thời gian cho phát triển lặp lại các trạng thái là không đáng kể so

với thời gian tìm kiếm theo bề rộng Thật vậy, mỗi lần gọi thủ tục tìm kiếm sâu

hạn chế tới mức d, nếu cây tìm kiếm có nhân tố nhánh là b, thì số đỉnh cần phát

triển là: 1 + b + b2

Nếu nghiệm ở độ sâu d, thì trong tìm kiếm sâu lặp, ta phải gọi thủ tục tìm kiếm sâu hạn chế với độ sâu lần lượt là: 0, 1, 2, ., d Do đó các đỉnh ở mức 1 phải phải phát triển lặp d lần, các đỉnh ở mức 2 lặp d-1 lần, , các đỉnh ở mức d lặp 1 lần Như vậy tổng số đỉnh cần phát triển trong tìm kiếm sâu lặp là: (d+1)1 +

db + (d-1)b2 + .+ 2bd-1 + 1bd Do đó thời gian tìm kiếm sâu lặp là O(bd).

Tóm lại, thời gian tìm kiếm sâu lặp có độ phức tạp thời gian là O(bd) như

trong tìm kiếm theo bề rộng, và có độ phức tạp không gian là O(bd) như tìm kiếm

theo độ sâu Nói chung, ta nên áp dụng tìm kiếm sâu lặp cho các vấn đề có không

Trang 26

gian trạng thái lớn và độ sâu của nghiệm không biết trước Có thể nói rằng, đây là chiến lược tốt nhất trong các chiến lược tìm kiếm mù.

2.3.2.2 Các chiến lược tìm kiếm kinh nghiệm

Hàm đánh giá và tìm kiếm kinh nghiệm:

Hàm đánh giá: trong nhiều vấn đề có thể sử dụng kinh nghiệm, tri thức của

hiểu biết về vấn đề để đánh giá các trạng thái của vấn đề Với mỗi trạng thái u, cần xác định một giá trị số h(u), số này đánh giá sự gần đích của trạng thái u Hàm h(u) được gọi là hàm đánh giá Trong quá trình tìm kiếm, tại mỗi bước ta sẽ chọn trạng thái có nhiều hứa hẹn nhất dẫn tới đích

Các kỹ thuật tìm kiếm sử dụng hàm đánh giá để hướng dẫn sự tìm kiếm được gọi chung là các kỹ thuật tìm kiếm kinh nghiệm Các giai đoạn cơ bản để giải quyết vấn đề bằng tìm kiếm kinh nghiệm như sau:

• Tìm biểu diễn thích hợp mô tả các trạng th ; toán tử của vấn đề

• Xây dựng hàm đánh giá

• Thiết kế chiến lược chọn trạng thái để phát triển ở mỗi bước

Tìm kiếm tốt nhất đầu tiên: Là tìm kiếm theo bề rộng được hướng dẫn bởi hàm

đánh giá Nhưng nó khác với tìm kiếm theo bề rộng ở chỗ, trong tìm kiếm theo

Thông báo tìm kiếm thành công

bề rộng ta lần lượt phát triển tất cả các đỉnh ở mức hiện tại để sinh ra các đỉnh ở

1 Khởi tạo danh sách L chỉ chứa trạng thái ban đầu

Trang 27

Tìm kiếm leo đồ iíĩìm kiếm leo đồi là tìm kiếm theo độ sâu được hướng dẫn bởi

hàm đánh giá Song khác với tìm kiếm theo độ sâu, khi ta phát triển một đỉnh u thì bước tiếp theo, ta chọn trong số các đỉnh con của u, đỉnh có nhiều hứa hẹn nhất để phát triển, đỉnh này được xác định bởi hàm đánh giá Danh sách L lưu các trạng thái chờ được phát triển, L1 để lưu giữ tạm thời các trạng thái kề trạng thái u, khi ta phát triển u

Stop;

End;

2.4 For mỗi trạng thái v kề u do

Đặt v vào L1

2.5 Sắp xếp L1 theo thứ tự tăng dần của hàm đánh giá

2.6 Chuyển danh sách L1 vào đầu danh sách L

End;

;Stop;

Trang 28

2.4 Cây tìm kiếm

Mô hình cây được sử dụng rất nhiều trong các bài toán tin học, có thể định

nghĩa cây theo nhiều cách khác nhau Ta có thể hiểu cây là một đồ thị liên thông

không có chu trình Một cây bao giờ cũng gồm gốc, tập các đỉnh trong của cây và

một tập các lá Các đỉnh trong của cây là các đỉnh là cha của các con khác, còn lá

là các đỉnh không có con

Đường đi trên cây ( kí hiệu r ): là một dãy các đỉnh liên tiêp của đồ thị sao

cho hai đỉnh kê nhau thì tồn tại một cung nối hai đỉnh Đỉnh xuất phát gọi là đỉnh đầu, đỉnh kêt thúc gọi là đỉnh cuối

Trong các bài toán tìm kiêm thì cây được gọi là cây tìm kiếm Quá trình tìm

kiêm cũng chính là quá trình xây dựng nên cây tìm kiêm Trong cây tìm kiêm thìgốc cây tương ứng với trạng thái ban đầu và các đỉnh được gán nhãn bởi cáctrạng thái trong không gian trạng thái Mỗi chiên lược tìm kiêm trong không giantrạng thái tương ứng với một phương pháp xây dựng cây tìm kiêm Quá trình xây

dựng cây băt đầu từ cây chỉ có một trạng thái ban đầu Giả sử tới một bước nào

đó trong quá trình tìm kiêm, ta đã xây dựng được một cây nào đó, các lá của câytương ứng với các trạng thái chưa được phát triển Bước tiêp theo phụ thuộc vàochiên lược chọn một đỉnh nào đó trong các là được chọn để phát triển Khi pháttriển đỉnh đó, cây tìm kiêm được mở rộng bằng cách thêm các đỉnh con của đỉnhđó

Trong bài toán xêp Thời khóa biểu được trình bày ở đây, ta cũng xây dựng một cây tìm kiêm trong quá trình săp xêp Gốc cây là điểm khởi tạo Một nút trong của cây là một vị trí trong miền thời gian của giáo viên và một lớp tương ứng thỏa mãn một bộ tiêt học của môn học đang được xem xét Thuật toán sẽ tìm kiêm kêt hợp theo cả chiều rộng và chiều sâu cho đên khi tìm được phương án săp xêp

2.5 Thuật toán quay lui

Quay lui (Backtracking): là một chiên lược tìm kiêm cho các bài toán thỏa

mãn ràng buộc

Trang 29

Các bài toán thỏa mãn ràng buộc là các bài toán có một lời giải đầy đủ, trong đó thứ tự của các phần tử không quan trọng Các bài toán này bao gồm một tập các biến mà mỗi biến cần được gán một giá trị tùy theo các ràng buộc cụ thể của bài toán Việc quay lui là để thử tất cả các tổ hợp để tìm được một lời giải Thế mạnh của phương pháp này là nhiều cài đặt tránh được việc phải thử nhiều tổ hợp chưa hoàn chỉnh, và nhờ đó giảm thời gian chạy.

v ề bản chất, tư tưởng của phương pháp là thử từng khả năng cho đến khi

tìm thấy lời giải đúng Đó là một quá trình tìm kiếm theo độ sâu trong một tập

hợp các lời giải Trong quá trình tìm kiếm, nếu ta gặp một hướng lựa chọn không thỏa mãn, ta quay lui về điểm lựa chọn nơi có các hướng khác và thử hướng lựa chọn tiếp theo Khi đã thử hết các lựa chọn xuất phát từ điểm lựa chọn đó, ta quay lại điểm lựa chọn trước đó và thử hướng lựa chọn tiếp theo tại đó Quá trình tìm kiếm thất bại khi không còn điểm lựa chọn nào nữa

Quy trình đó thường được cài đặt bằng một hàm đệ quy mà trong đó mỗi thể

hiện của hàm lấy thêm một biến và lần lượt gán tất cả các giá trị có thể cho biến

đó, với mỗi lần gán giá trị lại gọi chuỗi đệ quy tiếp theo để thử các biến tiếp theo.Chiến lược quay lui tương tự với tìm kiếm theo độ sâu nhưng sử dụng ít khônggian bộ nhớ hơn, nó chỉ lưu giữ trạng thái của một lời giải hiện tại và cập nhật

Để tăng tốc quá trình tìm kiếm, khi một giá trị được chọn, trước khi thực hiện lời gọi đệ quy, thuật toán thường xóa bỏ giá trị đó khỏi miền xác định của các biến có mâu thuẫn chưa được gán và kiểm tra tất cả các hằng số để tìm các giá trị khác đã bị loại trừ bởi giá trị vừa được gán

Sử dụng chiến lược quay lui dùng để giải bài toán liệt kê các cấu hình Mỗi cấu hình được xây dựng bằng cách xây dựng từng phần tử, mỗi phần tử được chọn bằng cách thử tất cả các khả năng

Giả thiết cấu hình cần liệt kê có dạng (xi,x2, ,xn), khi đó thuật toán quay lui được thực hiện qua các bước sau:

1) Xét tất cả các giá trị x 1 có thể nhận, thử cho x 1 nhận lần lượt các giá trị

đó Với mỗi giá trị thử cho x 1 ta sẽ:

Trang 30

2) Xét tất cả các giá trị x2 có thể nhận, lại thử cho x2 nhận lần lượt các giá

trị đó Với mỗi giá trị thử gán cho x2 lại xét tiếp các khả năng chọn x3 cứ

tiếp tục như vậy đến bước:

n) Xét tất cả các giá trị xn có thể nhận, thử cho xn nhận lần lượt các giá trị

đó, thông báo cấu hình tìm được (x1rx2, ,xn)

Thuật toán quay lui có thể được mô tả bằng đoạn mã giả như sau:

Procedure Try(i: Integer);

Begin

for (mọi giá trị có thể gán cho xỉ) do

begin

<Thử cho xi := V>;

if (xi là phần tử cuối cùng trong cấu hình) th

<Nếu cần, bỏ ghi nhận việc thử xi := V, để thử giá trị khác>; xi :

Trang 31

Chương 3:

BÀI TOÁN THỜI KHÓA BIỂU VÀ

GIẢI PHÁP ĐỀ XUẤT

3.1 Khái quát chung

Bài toán xếp Thời khóa biểu đã từ lâu trở thành một bài toán nổi tiếng vàthu hút được sự quan tâm của rất nhiều nhà nghiên cứu, nhiều chuyên gia trong

các lĩnh vực liên quan Sự "nổi tiếng" của bài toán này không chỉ được đo bởi độ

phức tạp của vấn đề, mà còn ở tính thực tiễn, khả năng áp dụng rất cao trên thực

tế Bất cứ một nhà trường nào, Thời khóa biểu học tập của học sinh và giảng dạy

của giáo viên đã và luôn là bộ xương sống cơ bản nhất kết nối hầu như toàn bộ

các hoạt động của nhà trường Chính vì lẽ đó bài toán xếp Thời khóa biểu trở

thành một trong những vấn đề chính và quan trọng vào bậc nhất của mỗi nhà

trường

Vì sao bài toán xếp Thời khóa biểu lại trở thành một bài toán khó như vậy?

tài liệu [3] có đưa ra một số lí do qua các câu hỏi sau:

Cái gì là cốt lõi nhất tạo nên sự trở ngại và khó khăn của công việc xếp Thời

khóa biểu trong một nhà là gì? Có phải độ phức tạp tính toán NP-đầy đủ

là nguyên nhân chính c ủ ất khó viết phần mềm mô phỏng việc xếp Thời

khóa biểu trên máy tính? Tư duy xếp Thời khóa biểu "bằng tay" là gì? Cần hiểu

rõ chính xác thế nào là một bài toán quản lý và hỗ trợ xếp Thời khóa biểu

3.1.1 Phần mềm Thời khóa biểu tại Việt Nam

1986-1987, một nhóm các chuyên gia máy tính tại khoa Toán Học

rhuật Quân Sự (HVKTQS) đã bắt đầu nghiên cứu bài toán xếp Thời

ểu mô hình trường Đại học Mô hình được tiến hành thử nghiệm lúc bấy

giờ là trường Đại học Bách khoa Hà Nội Khi mới triển khai công trình này, toàn

bộ việc lập trình được tiến hành trên FORTRAN và chạy trên các máy tính IBM

lớn đặt tại Trung tâm máy tính quân đội thành phố Hồ Chí Minh Năm 1988,

nhóm đã quyết định chuyển việc lập trình sang máy tính cá nhân Tháng 8/1988

lần đầu tiên một phần mềm hỗ trợ xếp Thời khóa biểu đã xếp thành công một

Thời khóa biểu cụ thể của trường Đại học Bách khoa Hà Nội Thành công này đã

Trang 32

được mời báo cáo tại Hội nghị Toán học toàn quốc tổ chức tại Đại học Bách khoa tháng 12/1988 Năm 1989, Phòng Huấn luyện HVKTQS đã giao cho một nhóm cán bộ thuộc khoa Toán viết một phần mềm hỗ trợ xếp Thời khóa biểu cho HVKTQS Phần mềm này hoàn thành tháng 8/1989 và đã được sử dụng tại HVKTQS trong suốt hơn 10 năm sau đó Năm 1991, nhóm tác giả của các công trình trên đã cho ra đời phiên bản phần mềm TKB 2.1 dùng cho các nhà trường phổ thông Năm 1998, Công ty Công nghệ Tin học Nhà trường School@net được thành lập đã lập tức quay trở lại phát triển phần mềm TKB dành cho các nhà trường phổ thông và phiên bản thương mại đầu tiên của một phần mềm Thời khóa biểu tại Việt Nam ra đời tháng 12/1999 Phần mềm TKB đã được liên tục nâng cấp, bản hiện thời là 6.0 đã được hơn 1000 nhà trường phổ thông của Việt Nam sử dụng Tháng 7-2006, công ty School@net sẽ công bố phiên bản mới nhất TKB 6.0 hỗ trợ hoàn toàn mô hình phòng học bộ môn và đa năng cho các nhà trường phổ thông của Việt Nam Năm 2002, công ty School@net quyết định quay lại nghiên cứu và phát triển phần mềm hỗ trợ xếp Thời khóa biểu cho các trường Đại học, Cao đẳng và THCN Phiên bản TKBU 1.0 đã hoàn thành và bắt đầu triển khai thực tế tại HVKTQS từ tháng 3-2004 Hiện tại công ty đang hoàn thiện phiên bản TKBU 2.0 phương án Thời khóa biểu tổng quát cho các nhà trường Đại học và Cao đẳng tại Việt Nam.

3.1.2 Phần mềm Thời khóa biểu trên Thế giới

Một thực tế rất ngạc nhiên rằng trên thế giới tồn tại không nhiều các phần mềm hỗ trợ xếp Thời khóa biểu như chúng ta vẫn nghĩ Khoảng những năm

2000, số lượng các phần mềm xếp Thời khóa biểu là dưới một bàn tay Đến năm nay số lượng các phần mềm dạng này có tăng lên nhưng không nhiều, khoảng 20 phần mềm Có lẽ rằng bài toán xếp Thời khóa biểu cho các nhà trường ở đâu cũng "khó" như nhau không phân biệt Việt Nam hay thế giới Thậm chí, tại một

số các trường Đại học ở Mỹ người ta vẫn xếp Thời khóa biểu bằng tay (theo [3])

Sau đây là một vài phần mềm được giới thiệu là khá nổi tiếng trên thế giới:

- Phần mềm Mimosa [5] dành cho các trường Đại học, Cao đẳng và theo quảng cáo đã được sử dụng tại 49 quốc gia trên thế giới Phần mềm này chỉ cho phép xếp Thời khóa biểu theo Lớp tín chỉ (Courses) và hầu như không thể áp

Trang 33

dụng tại Việt Nam Có thể download miễn phí bản thu gọn của phần mềm này tại địa chỉ [5].

- Phần mềm GP-UNTIS [6] hỗ trợ xếp Thời khóa biểu chủ yếu cho các nhà trường phổ thông do công ty Gruber&Petters phát triển Nhóm Gruber&Petters công bố rằng đây là phần mềm Thời khóa biểu số 1 Châu Âu, ra đời lần đầu tiên năm 1970 Hiện tại phần mềm này đang được dùng tại hơn 15,000 trường phổ thông trải rộng 60 quốc gia trên thế giới Phần mềm này có rất nhiều điểm chung với phần mềm TKB của School@net, tuy nhiên các chức năng hiện có của phần mềm này không hơn gì so với TKB phiên bản 6.0

M ột số đặc điểm chung của các phần mềm xếp Thời khóa biểu trên thế giới:

• Hầu hết mô hình các trường Đại học trên thế giới đều là mô hình lớp tín chỉ, trong khi đó tại Việt Nam mô hình chủ yếu là lớp niên chế

• Các tiết học trong ngày được sắp xếp liên tục từ sáng đến tối, không phân biệt các buổi học kiểu Sáng-Chiều-Tối như chúng ta

• Tất cả các phần mềm Thời khóa biểu đều lưu trữ dữ liệu dưới dạng binary, đây là một đặc thù tổng quát của các phần mềm Thời khóa biểu nói chung, kể cả Việt Nam và thế giới

• Tất cả các phần mềm đều có chức năng cho phép hiển thị, kiểm tra dữ liệu, xếp tiết, xếp tự động ngay trên màn hình Các chức năng này tạo ra những

công cụ tốt giúp người xếp Thời khóa biểu hoàn thiện công việc của mình

• Chức năng chuyển dữ liệu Thời khóa biểu sang HTML, đây là chức năng

mà hầu như tất cả các phần mềm đều có Với tính năng này các đối tượng thụ hưởng phần mềm (như học sinh, giáo viên) có thể xem thông tin Thời khóa biểu

Trang 34

3.1.3 Phân loại mô hình xếp Thời khóa biểu

3.1.3.1 Phân loại theo khuôn dạng thời gian Thời khóa biểu

Phân loại theo mẫu biểu của Thời khóa biểu được in ra Trên thực tế có rất nhiều dạng Thời khóa biểu khác nhau, rất đa dạng và tuỳ thuộc vào hoàn cảnh, điều kiện của từng trường Có thể liệt kê ra đây một vài kiểu (mẫu) Thời khóa biểu như sau:

a) Thời khóa biểu TUẦN

Là mẫu dạng Thời khóa biểu cho một tuần và được dùng làm chuẩn cho tất

cả các tuần của học kỳ hoặc năm học Đa số các nhà trường của Việt Nam đều sử dụng khuôn mẫu này Đây cũng là mô hình Thời khóa biểu của đa số các phầnmềm Thời khóa biểu trên thế giới mà mà em đã tham khảo

b) Thời khóa biểu HỌC KỲ

Là mẫu khuôn dạng Thời khóa biểu được biểu diễn chi tiết đến từng ngày trong suốt một học kỳ hoặc năm học Một số các trường đại học, cao đẳng tại Việt Nam, đặc biệt là các trường quân đội sử dụng khuôn dạng này của Thời khóa biểu

c) Thời khóa biểu 2 TUẦN liên tục

Là mẫu dạng Thời khóa biểu theo tuần nhưng phân biệt sự khác nhau giữa các tuần chẵn và lẻ trong học kỳ Thời khóa biểu dạng này được áp dụng cho các loại trường có môn học, bài giảng được sắp xếp 2 tuần 1 lần trong học kỳ hoặc năm học Thời khóa biểu của một tuần chẵn hoặc lẻ có dạng giống như loại A đã

mô tả ở trên

d) Thời khóa biểu (k) TUẦN/HỌC KỲ

Đây là loại Thời khóa biểu khuôn dạng tuần tuy nhiên thời gian phân bổ cho Thời khóa biểu được chia làm nhiều kỳ trong một học kỳ hoặc năm học Rất nhiều trường đại học, cao đẳng tại Việt Nam sử dụng mô hình này Với mô hình này, các môn học được sắp xếp không dàn đều trong một học kỳ mà thường co giãn trong những khoảng thời gian nhỏ hơn Các trường đại học, cao đẳng với chương trình đào tạo đa dạng, kết hợp chặt chẽ giữa lý thuyết và thực tế thường hay sử dụng mô hình này

e) Thời khóa biểu cho mỗi TUẦN

Trang 35

Là loại Thời khóa biểu mô hình tuần nhưng mỗi tuần lại có một Thời khóa

biểu riêng Như vậy, Thí dụ: trong một học kỳ có 15 tuần thì mỗi lớp học sẽ có

đúng 15 Thời khóa biểu! Đây là mô hình rất phức tạp và về bản chất chính là mô

hình Thời khóa biểu Học kỳ (loại B), điểm khác duy nhất là khuôn dạng in ra của

Thời khóa biểu là TUẦN.

3.I.3.2 Phân loại theo đơn vị xếp Thời khóa biểu

Phân loại theo các đối tượng trực tiếp liên quan đến dữ liệu Thời khóa biểu

Các đối tượng chính của Thời khóa biểu bao gồm:

Giáo viên: người trực tiếp giảng dạy theo các học phần môn học được qui

định chặt chẽ về thời lượng, kiến thức và hình thức học

Hội trường: địa điểm học các môn học và bài giảng do giáo viên đảm

nhiệm

* m ĩấVm, X

Học sinh: đối tượng học tập trực tiếp của giáo viên giảng dạy Học sinh

được phân công vào các lớp học Chính việc phân công lớp học theo các kiểu

khác nhau tạo ra sự khác biệt cơ bản của mô hình Thời khóa biểu Trên thực tế tại

Việt Nam cũng như thế giới có 2 loại lớp học sau đây:

Mô hình lớp học niên chế: Học sinh nhập học và các năm học được phân

công cố định vào các lớp học được gọi là lớp niên chế

Mô hình lớp học tín chỉ: Học sinh được tự do đăng ký vào các bài giảng đã

được chuẩn bị trước của Thời khóa biểu Các lớp học này thực chất là các bài

giảng (Courses) được thiết kế Thời khóa biểu giảng dạy chi tiết Thông thường,

sau khi Thời khóa biểu của các lớp học này đã được lên kế hoạch thì học sinhmới căn cứ vào Thời khóa biểu cụ thể để đăng ký học Cũng có thể xếp Thời

khóa biểu các lớp học tín chỉ sau khi học sinh đã đăng ký học Việc sắp xếp này

phải đảm bảo sự không trùng giờ học của các sinh viên đã đăng ký Tuy nhiên

F'

cách làm này sẽ vô cùng phức tạp và trên thực tế không có nhà trường nào tổchức xếp Thời khóa biểu theo mô hình này

M ột số so sánh giữa hai mô hình lớp niên chế và lớp tín chỉ bảng 3-1.

Từ bảng 3-1 ta thấy việc tổ chức Thời khóa biểu theo lớp tín chỉ sẽ đơn giản

hơn cho công việc xếp Thời khóa biểu nhưng lại rất phức tạp cho công việc quản

lý chuyên môn đào tạo nhà trường Mô hình lớp niên chế là đơn giản hơn về mặt

Trang 36

tổ chức và quản lý nhưng lại rất phức tạp trong việc xếp Thời khóa biểu Đặc biệt đối với các nhà trường có nhiều đặc thù đào tạo riêng biệt phải thực hiện việc ghép và tách lớp, công việc xếp Thời khóa biểu càng trở nên rắc rối hơn.

Đặc thù Lớp niên chế (Normal Class) Lớp tín chỉ (Credit Class)

Tạo lớp học Bắt buộc phải phân lớp cho mỗi

khóa học đầu năm

Không phân lớp cụ thể, học sinh tự đăng ký

Xếp TKB Xếp Thời khóa biểu rất phức tạo

vì phải chú ý đến việc trùng giờ, trùng tiết trên lớp, giáo viên và hội trường, chưa kể những khó khăn bởi ghép lớp và tách lớp

xếp Thời khóa biểu khá

dễ dàng vì chỉ quan tâm đến giáo viên và phòng học

Quản lý giảng

dạy

Quản lý lớp học, học sinh dễ dàng Quản lý việc lên lớp rất

phức tạpLớp ghép, tách Rất phức tạp việc tổ chức ghép và

tách lớp niên chế

Không cần ghép hay tách

lớp tín chỉ

Bảng 3-1: So sánh giữa hai mô hình lớp niên chế và lớp tín chỉ

Tại Việt Nam, cho tới thời điểm hiện tại, đa số các nhà trường Đại học, Cao đẳng và THCN đều được tổ chức theo mô hình lớp niên chế nhưng đang từng bước dần chuyển sang đào tạo theo tín chỉ

3.1.4 Các đối tượng liên quan đến Thời khóa biểu

Các đối tượng liên quan trực tiếp đến Thời khóa biểu bao gồm Giáo viên, Phòng học và Môn học (học phần) giảng dạy Các đối tượng này tuy có vai trò thứ yếu trong việc phân loại mô hình Thời khóa biểu, tuy nhiên những đặc thù riêng biệt của các đối tượng này có ảnh hưởng rất lớn đến mô hình chung của bài toán xếp Thời khóa biểu Bao gồm các đối tượng chính như sau:

Giáo viên: Trong mô hình của bài toán xếp Thời khóa biểu vai trò các giáo

viên là ngang nhau Mỗi giáo viên về nguyên tắc sẽ có một Thời khóa biểu lịch

Trang 37

giảng dạy riêng của mình trong học kỳ hoặc năm học hiện thời Những đặc thù sau cần chú ý khi xem xét dữ liệu Thời khóa biểu liên quan đến giáo viên:

- Trong mô hình xếp Thời khóa biểu hai mức (mức sơ bộ - chi tiết) thông tin phân bổ việc xếp Thời khóa biểu sơ bộ về Khoa hay Bộ môn là rất quan trọng

- Việc phân công giảng dạy của giáo viên theo từng môn học hoặc từng hình thức học của môn học sẽ tạo ra sự khác biệt rất lớn giữa các mô hình xếp Thời khóa biểu khác nhau

- Cho phép gán phân công giảng dạy không phải cho 1 giáo viên mà là cho một nhóm giáo viên

- Phân công giáo viên cho các lớp ghép và tách

Phòng học: Phòng học chuyên môn đóng vai trò rất quan trọng trong mọi

bài toán xếp Thời khóa biểu Các đặc thù sau của phòng học cần chú ý khi xếp

ỵ '*.: % " :

Thời khóa biểu:

- Có phân biệt rõ ràng hay không giữa các phòng học lý thuyết và thực hành theo các môn học

- Các đặc thù chuyên môn đặc biệt của phòng học (ví dụ đối với các trường thể dục thể thao, nghệ thuật múa, hát, hội họa, thiết bị đặc chủng quân sự, )

Môn học: Môn học hay học phần là một đơn vị quản lý chính của chương

trình đào tạo và là đối tượng xếp Thời khóa biểu chính của cả hai mô hình lớp niên chế và lớp tín chỉ Chính vì vậy môn học đóng vai trò quan trọng trong mô hình bài toán xếp Thời khóa biểu các nhà trường đại học, cao đẳng của Việt Nam Các đặc thù sau cần lưu ý khi mô tả dữ liệu môn học:

- Quan hệ giữa môn học trong Chương trình đào tạo chi tiết và phân bổ giảng dạy cho Thời khóa biểu hiện thời

- Thông tin về mã môn học (học phần) Đây là thông số rất quan trọng của

dữ liệu môn học trong mô hình dữ liệu Thời khóa biểu Theo [3], hiện tại mỗi nhà trường tại Việt Nam có một hệ thống mã hóa môn học rất khác nhau và không thống nhất Tuy vậy có thể tóm tắt lại những thông tin thường thấy có mặt trong mã hóa môn học:

1 Thông tin về Khoa hay Bộ môn trực tiếp phụ trách học phần môn họcnày

Ngày đăng: 08/10/2016, 11:49

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Phạm Việt Bình, Vũ Thành Vinh, Trần Đình Chúc, Ngô Thị Vinh “Báo cáo hội thảo khoa học về xây dựng chương trình xếp Thời khóa biếu theo hương kết hợp lý thuyết đồ thị, hệ chuyên gia và tập hợp” hội thảo ngày 6,7/12/2007 tại Khoa công nghệ thông tin-Đại học Thái Nguyên Sách, tạp chí
Tiêu đề: Báo cáo hội thảo khoa học về xây dựng chương trình xếp Thời khóa biếu theo hương kết hợp lý thuyết đồ thị, hệ chuyên gia và tập hợp
[8] Mô hình lập lịch trong hệ thống tính toán lưới do Buyya đề xuất của Ks. Nguyễn Long - Nguyễn H uy Văn - Ks. Lê Công Trung [9] Giáo trình trí tuệ nhân tạo - TS.Đinh Mạnh Tường [10] Toán rời rạc - Nguyễn Đức Nghĩa Sách, tạp chí
Tiêu đề: Ks. Nguyễn Long - Nguyễn H uy Văn - Ks. Lê Công Trung
[4] Hệ chuyên gia - Đỗ Trung Tuấn - NXB Giáo dục năm 1999 [5] http://www.mimosasoftware.com của Đan mạch Link
[1] Báo cáo ứng dụng hệ chuyên gia và lý thuyết tập hợp trong bài toán xếp Thời khóa biếu của các thầy Vũ Thành Vinh, Phạm Việt Bình, Trần Đình Chúc- Khoa CNTT-ĐHTN Khác
[3] Chương trình xếp Thời khóa biếu TKB bản 6.5 cho các trường phổ thông của thầy Bùi Việt Hà, Công ty Công nghệ Tin học Nhà trường. Email:habv@vnschool.net Khác
[7] A RANDOM HOP-AND-FIT COMPUTER ALGORITHM TO SCHEDULE ACADEMIC COURSES IN UPM địa chỉ chris@agri.upm.edu.my Khác

HÌNH ẢNH LIÊN QUAN

Hình  1-1  Kiến trúc ADO.NET - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
nh 1-1 Kiến trúc ADO.NET (Trang 12)
Hình 3-10: Minh  hoạ quá trình xây dựng cây sắp xếp - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 3 10: Minh hoạ quá trình xây dựng cây sắp xếp (Trang 52)
Hình 4-3:  Biếu đồ luồng dữ liệu mức đỉnh - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 4 3: Biếu đồ luồng dữ liệu mức đỉnh (Trang 61)
Bảng tbMonHoc:  lưu thông tin về môn học. - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Bảng tb MonHoc: lưu thông tin về môn học (Trang 63)
Bảng tbTKBLop: lưu TKB của lớp. - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Bảng tb TKBLop: lưu TKB của lớp (Trang 64)
Bảng tbMonHocChung:  lưu trữ thông tin về các lớp học ghép các môn học. - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Bảng tb MonHocChung: lưu trữ thông tin về các lớp học ghép các môn học (Trang 65)
Hình 5-1: Form khởi tạo - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 1: Form khởi tạo (Trang 66)
Hình 5-2:  Form nhập  khối l g  dạy đầu  năm - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 2: Form nhập khối l g dạy đầu năm (Trang 67)
Hình 5-5:  Form nhập thuộc tính môn học - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 5: Form nhập thuộc tính môn học (Trang 68)
Hình 5-7:  Thời khóa biêu của giáo viên Phạm Bích Trà - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 7: Thời khóa biêu của giáo viên Phạm Bích Trà (Trang 69)
Hình 5-6: Form xếp Thời khóa biểu - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 6: Form xếp Thời khóa biểu (Trang 69)
Hình 5-8:  Thời khóa biểu của giáo viên Ngô Phương Thủy - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 8: Thời khóa biểu của giáo viên Ngô Phương Thủy (Trang 70)
Hình 5-10:  Thời khóa biểu của Lớp K3A - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 10: Thời khóa biểu của Lớp K3A (Trang 71)
Hình 5-11:  Thời khóa biểu của Lớp K3A - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 11: Thời khóa biểu của Lớp K3A (Trang 71)
Hình 5-12:  Thời khóa biểu của Lớp K5A - Xây dựng chương trình xếp thời khóa biểu niên chế cho khoa công nghệ thông tin   đại học thái nguyên
Hình 5 12: Thời khóa biểu của Lớp K5A (Trang 72)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w