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

Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)

65 479 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 65
Dung lượng 1,08 MB

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

Nội dung

Vì thế , khác với bài toán đếm tìm kiếm một công thức cho lời giải bài toán liệt kê cần xác định một thuật toán để theo đó có thể lần lượt xây dựng được tất cả các cấu hình đang quan tâm

Trang 2

LUẬN VĂN THẠC SĨ MÁY TÍNH

Người hướng dẫn khoa học: PGS.TS Lê Huy Thập

HÀ NỘI, 2016

Trang 3

LỜI CẢM ƠN

Trong thời gian thực hiện luận văn thạc sỹ em đã nhận được rất nhiều

sự khích lệ, động viên, giúp đỡ từ phía thầy cô, gia đình và bạn bè xung quanh

Em xin bày tỏ lòng biết ơn chân thành nhất tới thầy giáo, PGS.TS Lê Huy Thập, người đã trực tiếp hướng dẫn em hoàn thành luận văn thạc sỹ này

Em xin gửi lời cảm ơn chân thành tới các thầy cô trong trường Đại học

Trang 4

LỜI CAM ĐOAN

Tôi xin cam đoan đây là kết quả nghiên cứu của tôi dưới sự hướng dẫn

khoa học của PGS TS Lê Huy Thập

Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được

ai công bố trong bất kỳ công trình nào khác

Học viên

Đỗ Thị Chuẩn

Trang 5

MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

MỤC LỤC iii

DANH MỤC CÁCBẢNG v

vi

MỞ ĐẦU 1

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3

1.1 Cơ sở dữ liệu quan hệ 3

1.1.1.Quan hệ , khóa , phụ thuộc hàm 4

1.1.2 Mô hình ER 8

1.2 Các kiến thức về toán rời rạc 9

1.2.1 Thuật toán 9

1.2.2 Bài toán liệt kê 9

1.2.3 Bài toán đếm 16

1.2.4 Bài toán tối ưu 23

CHƯƠNG 2 CÁC THUẬT TOÁN 26

2.1 Giới thiệu một số thuật toán tối ưu 26

2.1.1 Mô hình tối ưu tổng quát 26

2.1.2 Thuật toán duyệt toàn bộ 27

2.1.3 Thuật toán nhánh cận 28

2.2 Phát biểu và thuật toán nhánh cận bài toán nhập kho 35

2.2.1 Phát biểu bài toán 35

2.2.2 Thuật toán nhánh cận giải bài toán nhập kho 36

2.2.3 Các quan hệ 37

2.2.4 Mô hình ER 39

2.2.5 Kết nối dữ liệu 39

Trang 6

2.3 Thuật toán tồn kho 40

2.4 Thiết kế cơ sở dữ liệu 41

CHƯƠNG 3 SỬ DỤNG PHƯƠNG PHÁP NHÁNH CÂN GIẢI 46

BÀI TOÁN NHẬP KHO TỐI ƯU 46

3.1 Mô tả bài toán 46

3.2 Mục đích và nhiệm vụ giải bài toán giải bài toán nhập kho tối ưu 47

3.3 Các giao diện và kết quả chạy chương trình 47

3.3.1 Giao diện chính của chương trình quản lý nhập kho tối ưu 47

3.3.2 Form nhập dữ liệu 48

3.3.3 Form Nhập kho vât tư 49

3.3.4 Form nhập phiếu nhập kho 50

3.3.5 Form nhập phiếu xuất kho 51

3.3.6 Form nhập vật tư 51

3.3.7 Sửa thông tin kho 52

3.3.8 Sửa phiếu nhập kho 52

3.3.9 Form sửa phiếu xuất kho 53

3.3.10 Form sửa thông tin vật tư 54

3.3.11 Form tính phương án nhập kho tối ưu 55

KẾT LUẬN 56

TÀI LIỆU THAM KHẢO 57

Trang 7

DANH MỤC CÁC BẢNG

Hình 3.1: Form chính của chương trình quản lý nhập kho tối ưu 47

Hình 3.2: Màn hình nền vào menu “ Nhập dữ liệu” 48

Hình 3.3: Form nhập thông tin kho vật tư 49

Hình 3.4: Nhâp phiếu nhập kho 50

Hình 3.5: Nhập phiếu xuất kho 51

Hình 3.6: Form nhập vật tư 51

Hình 3.7: Sửa thông tin kho 52

Hình 3.8: Form sửa phiếu nhập kho 52

Hình 3.9: Form sửa phiếu xuất kho 53

Hình 3.10: Form sửa thông tin vật tư 54

Hình 3.11: Form tính phương án nhập kho tối ưu 55

Trang 8

CSDL

FD :Phụ thuộc hàm

mpn : Phép kết nối tự nhiên

: Phép giao : Phép hợp

B : Thuộc

X→Y

Trang 9

MỞ ĐẦU

1 Lý do chọn đề tài

Bất kỳ cơ quan xí nghiệp nào cũng cần đến vật tư hàng hóa Do sự phát triển xã hội ngày càng cao kéo theo sự lớn mạnh của các công ty, xí nghiệp và các tổ chức, và như vậy nhu cầu xuất nhập vật tư hàng hóa có thể rơi ngoài tầm kiểm soát (Cũng không ít cá nhân, cơ quan xí nghiệp lợi dụng vào những nhân tố đó để can thiệp xấu và công tác quản lý này) Để làm tốt công tác quản lý vật tư / hàng hóa thì cần có sự hỗ trợ của các bộ môn khác: như thống

kê, dự báo, hạch toán,…đặc biệt là các mô hình tối ưu cần phải được đưa vào ứng dụng cho công tác quản lý vật tư/hàng hóa

Thực tế hiện nay rất nhiều doanh nghiệp lớn quản lý vật tư / hàng hóa bằng phương pháp thủ công và bán thủ công Như vậy, nếu có một chương trình và quy trình quản lý tốt vật tư / hàng hóa sẽ là những hỗ trợ tối cần thiết cho sự phát triển của các cơ quan xí nghiệp nói riêng và của đất nước nói chung Với mong muốn bổ sung và hỗ trợ vào công tác quản lý xuất và nhập hàng chính xác, nhanh chóng, hiệu quả và thuận lợi tôi chọn đề tài luận văn

“Giải bài toán tối ưu nhập vật tư hàng hóa bằng phương pháp nhánh cận”

để nghiên cứu

2 Mục đích nghiên cứu

Áp dụng phương pháp nhánh cận để tìm phương án tối ưu cho việc nhập vật tư hàng hóa

3 Nhiệm vụ nghiên cứu

Tìm hiểumột số thuật toán tối ưutrong toán rời rạc

Sử dụng phương pháp nhánh cận tìm phương án nhập kho tối ưu và ứng

4 Đối tƣợng và phạm vi nghiên cứu

Đối tƣợng nghiên cứu

Bài toán nhánh cận

Trang 10

Phạm vi nghiên cứu

Bài toán nhập kho/hàng hóa

Toán rời rạc

5 Phương pháp nghiên cứu

Kết hợp lý thuyết với đánh giá thực nghiệm

Thu thập tài liệu, phân tích, suy luận, tổng hợp, đánh giá Từ đó đề xuất nghiên cứu và tìm hiểu đề tài,

Phân tích bài toán và ứng dụng thuật toán thử nghiệm

6 Dự kiến kết quả đề tài

Hỗ trợ quản lý vật tư bằng phương pháp nhánh cận

Trang 11

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1.Cơ sở dữ liệu quan hệ

Một số ví dụ minh hoạ giải thích các khái niệm về Cơ Sở Dữ Liệu: Xét hệ thống bán vé máy bay bằng máy tính Dữ liệu lưu trữ trong máy tính gồm:

Thông tin về hành khách (Họ và tên, Quốc tịch, Nước cư trú, Giới tính, Ngày sinh, )

thông tin về chuyến bay (Ký hiệu chuyến bay, Giờ bay, Giờ đến, ), Thông tin về đường bay (Tên đường bay, Nơi đổi má bay hoặc nghỉ tiếp nhiên liệu ),

Mọi thông tin về mối quan hệ này được biểu diễn trong máy thông qua việc đặt chỗ của khách hàng Hãy biểu diễn dữ liệu đó đảm bảo để hành khách đi đúng chuyến baycủa mình

Dữ liệu trên được lưu trong máy theo một quy định nào đó sẽ được gọi

là Cơ Sở Dữ Liệu

Có 3 nông trại, mỗi nông trại có một số công trình kiến trúc:

Nhà ở, Trại bò và Trại gà

Mỗi công trình kiến trúc là một nơi ở cho một số người hay gia súc

Dữ liệu trên được lưu trong máy theo một quy định nào đó để có thể khai thác được các thông tin cần thiết như để biết số bò cái trong trại bò ông Jones, số người trong cả 3 nông trại , sẽ được gọi là Cơ Sở Dữ Liệu

Cơ Sở Dữ Liệu - Database (sẽ viết tắt là CSDL) là tập dữ liệu về đơn vị

tổ chức được lưu trên máy và cách tổ chức quản lý theo một mô hình phù hợp với đơn vị tổ chức đó

Hệ quản trị cơ sở dữ liệu quan hệ là hệ thống các phần mềm cho phép

mô tả, thao tác các cơ sở dữ liệu, nó bảo đảm bí mật, an toàn với nhiều người

sử dụng

Trang 12

1.1.1.Quan hệ, khóa, phụ thuộc hàm

Quan hệ

Quan hệ n ngôi là một tập con của tích Đề – Các D1xD2x xDn Khi

đó mỗi bộ quan hệ có n thành phần (gọi là n cột), cột thứ i được gọi là có thuộc tính Ai

Định nghĩa 2.1

Gọi R = {A1, A2, , An} là tập hữu hạn các thuộc tính Miền giá trị của thuộc tính Ai là dom(Ai) Quan hệ r - n ngôi trên tập thuộc tính R là tập con của tích Đề – Các:

r dom(A1) dom(A) , , dom(An)

Khóa

Khoá (Key) của một quan hệ r trên tập thuộc tính R = {A1, A2, , An}

là một tập con K {A1, A2, , An} thoả mãn các tính chất: Với bất kỳ hai

bộ ti, tj r vơi i j đều tồn tại một thuộc tính A K sao cho ti(A) tj(A), nghĩa là không tồn tại hai bộ khác nhau mà có giá trị bằng nhau trên mọi thuộc tính thuộc tập con K Điều kiện này có thể ký hiệu ti(K) tj(K) với i j

do vậy mỗi giá trị của K được xác định duy nhất

Định nghĩa

Khoá của quan hệ r trên tập thuộc tính R = {A1, ,An} là tập con K

R sao cho bất kỳ hai bộ ti, tj r, i j luôn luôn thoả mãn ti(K) ti(K) và bất

kỳ tập con thực sự K‟nào của K đều không có tính chất đó Tập K như vậy được gọi là siêu khoá (Superkey) của quan hệ trên tập thuộc tính R

Phụ thuộc hàm

Định nghĩa 5.1

Cho R(U) là một lược đồ (cấu trúc) quan hệ với U = {A1, ,An} là tập thuộc tính và X, Y là hai tập con của U Nói rằng X Y (đọc là Y phụ thuộc hàm vào X) nếu r là một quan hệ (bảng) xác định trên R(U) sao cho bất kỳ hai

Trang 13

bộ t1, t2 r (hai hàng thuộc bảng) mà t1[X] = t2[X] thì suy ra t1[Y] = t2[Y] Phụ thuộc hàm sẽ ký hiệu là FD (Function Dependent)

Hệ tiên đề cho phụ thuộc hàm (Hệ tiên đề Armstrong)

Gọi F là tập tất cả các phụ thuộc hàm đối với lược đồ quan hệ R(U) và

X Y (X, Y U) gọi là một phụ thuộc hàm được suy diễn logic từ F nếu quan hệ r trên R(U) thoả mãn các tính chất phụ thuộc hàm cho F thì cũng thoả mãn cho X Y

hệ tiên đề Arstrong thì X Y là đúng trên quan hệ r

Bổ đề Các luật được suy ra từ tiên đề Arstrong:

Trang 14

Nghĩa là X+ là tập tất cả các thuộc tính A mà phụ thuộc hàm X A có thể được suy diễn logic từ F nhờ hệ tiên đề Armstrong

Bổ đề 5.3 X Y suy diễn từ hệ tiên đề Armstrong khi và chỉ khi Y X+ Định lý 5.1

Hệ tiên đề Armstrong là đúng và đầy đủ

Tính toán bao đóng

Việc tính bao đóng F+

rất phức tạp nên ta sẽ tính X+ Việc tính X+

dễ dàng hơn theo thuật toán sau đây:

Thuật toán 5.1

Cho tập con các thuộc tính X thuộc tập hữu hạn các thuộc tính U và cho tập các phụ thuộc hàm trên U

Bước 0 Gán X0 = X Bước thứ i+1 Gán Xi+1 = Xi A sao cho (Y Z) F mà trong Z

có A và Y phải thuộc Xi i = 0, 1, 2, Quá trình được lặp lại và kết thúc khi có

Xk=Xk+1 điều này chắc chắn xảy ra vì U hữu hạn Khi đó X+ =Xk

Trang 15

Định nghĩa 5.2.2

Gọi F tập của các phụ thuộc hàm là nhỏ nhất nếu nó thoả mãn các diều kiện sau đây;

a Vế phải của phụ thuộc hàm thuộc F chỉ có một thuộc tính

Kết nối không mất thông tin

Cho R là một lược đồ quan hệ, lược đồ này được tách thành các lược đồ con R1, ,Rk gọi D là tập các phụ thuộc hàm

Định nghĩa 5.3.1

Nói rằng phép tách là tách-nối không mất thông tin đối với D nếu quan

hệ r trên R thoả D thì:

r = R1(r)* R2(r)* * Rk(r) tức là quan hệ r được tạo ra từ phép kết nối tự nhiên của các hình chiếu của nó trên các Ri,, i = 1, ,k

Các tính chất:

Ký hiệu: = (R1, ,Rk)

Gọi m là một ánh xạ được định nghĩa như sau:

m (r) = *i=1, ,k Ri(r)

Trang 16

Tức là m (r) là phép kết nối tự nhiên của các phép chiếu chiếu quan hệ

r lên các lược đồ con trong = (R1, ,Rk) Điều kiện để kết nối không mất thông tin đối với D là với mọi r thoả mãn D thì r = m (r)

Trang 17

1.2 Các kiến thức về toán rời rạc

1.2.1 Thuật toán

Khái niệm về thuât toán

Thuật toán là một hệ thống chặt chẽ và rõ ràng các quy tắc nhằm xác đinh một dãy các thao tác trên những đối tượng , sao cho sau một hữu hạn bước thực hiện các thao tác ta thực hiện được mục tiêu cho trước

Để giải bài toán bằng máy tính , chúng tả thường có một quan niệm rộng rãi hơn về thuật toán cụ thể và lưu ý đến các đặc điểm sau:

a Không cần xác định toàn bộ lời giải , các thao tác theo từng bước một cách chính xác , đơn vị và rõ ràng Thay vào đó ta chỉ cần chỉ ra một cách chuyển từ rừng bước giải i đến bước giải kế tiếp i + 1và tìm cách cắt nhỏ bài toán thành các bài toán con , đó chính là thuật toán đệ quy rất quan trọng để giải các bài toán tổng quát

b Có nhiều bài toán không có cách giải đúng hoặc cách giải đúng không thể chấp nhận được do hạn chế về thời gian chạy và kích thước bộ nhớ Nhưng nếu ta chấp nhận kết quả gần đúng thì có thể tồn tại nhiều cách giải

đỡ phức tạp và hiệu quả hơn, đó chính là các thuật toán Heuristic để giải bài toán gần đúng

1.2.2 BÀI TOÁN LIỆT KÊ

Nếu như bài toán đếm ta chỉ đòi hỏi đếm số cấu hình tổ hợp là bao nhiêu thì trong nhiều tình huống , ta còn phải cần rõ những cấu hình tổ hợp

đó là những cấu hình nào đó Bài toán đưa ra danh sách đưa ra danh sách tất

cả cấu hình tổ hợp có thể có được gọi là bài toán liệt kê tổ hợp Vì thế , khác với bài toán đếm tìm kiếm một công thức cho lời giải bài toán liệt kê cần xác định một thuật toán để theo đó có thể lần lượt xây dựng được tất cả các cấu hình đang quan tâm Rõ ràng có nhiều cách liệt kê , tuy nhiên chúng phải đảm bảo 2 nguyên tắc:

Trang 18

Không lặp đi lặp lại một cấu hình

Không bỏ sót một cấu hình

Có thể nói rằng phương pháp liệt kê là cách cuối cùng để có thể giải được một số bài toán tổ hợp hiện nay Khó là phương pháp này là sự “bùng

nổ tổ hợp” Để xây dựng chừng 1 tỷ cấu hình ( con số này không không phải

là lớn đối với bài toán tổ hợp – xem lại các số mất thứ tự Dn, số phân bố Un số hình vuông là tỉnh của ln ,….) và giả thiết rằng mỗi thao tác xây dựng mất khoảng 1 giây, ta bỏ ra quãng 31 năm mới giải xong Tuy nhiên với sự phát triển của máy tính điện tử, bằng phương pháp liệt kê nhiều bài toán tổ hợp đã tìm thấy lời giải Mặc khác, chính sự nỗ lực tìm kiếm những giải pháp hữu hạn cho những bài toán khó thuộc lĩnh vực này, đã thúc đẩy thúc đẩy mạnh

mẽ sự phát triển của nhiều ngành toán học

1 Thuật toán và độ phức tạp thuật toán

Khái niệm thuật toán

Định nghĩa

Ta hiểu thuật toán giải bài toán đặt ra là một thủ tục xác định bao gồm một dãy hữu hạn các bước cần thực hiện để thu được lời giải của bài toán

Thuật toán có các đặc trưng sau đây:

Đầu vào (input): Thuật toán nhận dữ liệu vào từ một tập nào đó

Đầu ra (Output): Với mỗi tập các dữ liệu đầu vào , thuật toán đưa ra các

dữ liệu tương ứng với lời giải cảu bài toán

Chính xác (Precision): Các bước của thuật toán được mô tả chính xác Hữu hạn ( Finiteness): Thuật toán cần phải đưa được đầu sau một số hữu hạn (có thể rất lớn) bước với đầu vào

Đơn vị (Uniqueness): Các kết quả trung gian của từng bước thực hiện thuật toán được xác định một cách đơn trị và chỉ phụ thuộc vào đầu vào các kết quả của các bước trước

Trang 19

Tổng quát (Generality ): Thuật toán có thể áp dụng để giải mọi bài toán

có dạng đã cho

2 Mô tả thuật toán bằng ngôn ngữ pascal

Cách mô tả thuật toán bằng lời như trình bày trong thí dụ ở mục trên không thật thuận tiện cho việc cài đạt thuật toán trên ngôn ngữ lập trình cụ thể, chẳng hạn PASCAL, C , BASIC,… Tất nhiên có thể mô tả thuật toán sử dụng một ngôn ngữ lập trình nào đó Khi đó ta chỉ có thể sử dụng những cấu trúc lệnh của ngôn ngữ đã chọn Điều đó có thể làm cho việc mô tả thuật toán trở nên phức tạp đồng thời cũng rất khó hiểu Vì thế , để mô tả thuật toán sử dụng ngôn ngữ phỏng PASCAL, trong phép vừa mô tả thuật toán bằng ngôn ngữ đời thường vừa sử dụng những cấu trúc lệnh tương tự như của ngôn ngữ PASCAl ( tất nhiên , các qui tắc cú pháp của ngôn ngữ PASCAL không nhất thiết phải tuân thủ ) Dưới đây ta liệt kê một số câu lệnh chính được sử dụng để mô tả thuật toán

Câu lệnh procedure(function) Mô tả thuật toán trong ngôn ngữ mô phỏng Pascal được bắt đầu từ câu lệnh Procedure (function) , trong đó ta đặt tên cho thuật toán và mô tả danh sách biến của thuật của thuật toán Chẳng hạn , câu lệnh

Function maximum (a,b,c);

Cho biết tên thuật toán được mô tả là maximum , có 3 biến a,b,c;

Proceddure Hoanvi(n);

Cho biết tên thuật toán được mô tả hoán vị với biến là n

Các bước của thuật toán được mô tả trong thân thủ tục ( hàm ) được bắt đầu bởi begin và kết thúc bởi end

Câu lệnh gán Câu lệnh gán được sử dụng để gán giá trị cho các biến Vế trái

cảu các câu lệnh là tên của biến , còn về phải là biểu thức của các hằng , biến

Trang 20

gán giá trị hoặc các hàm đã được định nghĩa Kí hiệu = được sử dụng để biểu diễn phép gán

Khối câu lệnh Các câu lệnh có thể nhóm lại thành một khối Để mô tả khối

lệnh ta sử dụng begin và end

Các câu lệnh trong khối được thực hiện tuần tự Dưới đây, thuật ngữ câu lệnh được dùng để chỉ một câu lệnh của một khối câu lệnh

Câu lệnh lặp Ta sử dụng các câu lệnh sau đây

For biến: = giá trị đầu to giá trị cuối do câu lệnh

Tại đầu vòng lặp , biến sẽ được gán cho giá trị đầu, nếu giá tri đầu nhỏ hơn hơn hoặc bằng giá trị cuối và câu lệnh sẽ được thực hiện này của biến Tiếp đến , giá trị của biến sẽ tăng lên 1 và câu lệnh sẽ được thực hiện với giá trị mới của biến Quá trình sẽ được tiếp tục thực hiện cho đến khi biến giá trị cuối Sau khi thực hiện xong câu lệnh với giá trị của biến bằng giá trị cuối, sẽ chuyển sang thực hiện câu lệnh tiếp theo

Nếu giá trị đầu lớn giá trị cuối thì không có câu lệnh nào thực hiện được thực hiện

Câu lệnh lặp thứ hai được sử dụng là câu lệnh “while” sau đây:

While điều kiện do câu lệnh;

Khi câu lệnh này được sử dụng , điều kiện sẽ được kiểm tra , nếu đó là đúng thì câu lệnh được thực hiện, điều đó có thể dẫn tới sự thay đổi giá trị của các biến trong điều kiện Nếu điều kiện vẫn là đúng sau khi thực hiện câu lệnh thì câu lệnh lại được thực hiện Điều đó sẽ tiếp diễn cho đến khi điều kiện là sai

Câu lệnh lặp thứ ba được sử dụng là câu lệnh “ repeat” sau đây:

Repeat câu lệnh until điều kiện;

Khi câu lệnh này được sử dụng, câu lệnh được thực hiện , điều đó có thể dẫn tới sự thay đổi giá trị của các biến trong điều kiện Nếu điều kiện vẫn

Trang 21

là đúng, thì câu lệnh lại được thực hiện Điều đó sẽ tiếp diễn cho đến khi điều kiện là đúng

3 Độ phức tạp thuật toán

Một máy tính, mặc dù được cài đặt theo một thuạt toán đúng, có thể không cho kết quả mong muốn đối với một bộ dữ liệu nào đó vì hoặc là nó đòi hỏi quá nhiều thời gian , hoặc là không có đủ bộ nhớ để lưu giữ dữ liệu

và các biến của chương trình Vì vậy , để có thể đánh giá khả năng ứng dụng của chương trình ta cần phải phân tích hiệu quả của thuật toán Phân tích thuật toán là quá trình tìm ra những đánh giá về thời gian tính cũng như dung lượng

bộ nhớ cần thiết để thực hiện thuật toán Độ phức thuật toán của một thuật toán là lượng thời gian và bộ nhớ cần thiết để thực hiện bài toán Trong mục này ta quan tâm đến việc đánh giá thời gian cần thiết để thực hiện thuật toán (ta sẽ gọi là thời gian của thuật toán)

Rõ ràng,thời gian tính của thuật toán là hàm của dữ liệu đầu vào Thông thường khó có thể xây dựng công thức dưới dạng cho hàm này, vì thế ta đặt vấn đề đơn giản hơn Thay vì làm việc với dữ liệu đầu vào, ta sẽ làm việc với một đặc trưng quan trọng của dữ liệu đầu vào, đó là kích thước của nó Chúng

ta sẽ quan tâm đến:

Thời gian tối thiểu cần thiết để thực hiện thuật toán là hàm của dữ liệu đầu vào kích thước n Thời gian như vậy sẽ được gọi là thời gian tính tốt nhất của thuật toán với đầu vào kích thước n

Thời gian nhiều nhất cần thiết để thực hiện thuật toán với mọi bộ dữ liệu đầu vào kích thước n Thời gian như vậy sẽ được gọi là thời gian tính tồn nhất của thuật toán với đầu vào kích thước n

Thời gian trung bình cần thiết để thực hiện thuật toán trên tập hữu hạn các đầu vào kích thước n Thời gian như vậy sẽ được gọi là thời gian tính trung bình của thuật toán

Trang 22

Để tính toán thời gian tính của thuật toán ta sẽ đếm số câu lệnh mà nó phải thực hiện, hoặc trong một số trường hợp có thể đếm cụ thể số cho phép tính số học, so sánh, gán,… Mà thuật toán đòi hỏi thực hiện Rõ ràng từ thông

số này ta có thể tính được thời gia n thực sự mà thuật toán đòi hỏi nếu nó được cài đặt trên ngôn ngữ lập trình và chạy trên một máy tính đẻ chon đề cài đặt thuật toán cũng như máy tính mà trên đó thực hiện Vì thế nó là tiêu chuẩn khách quan đến đánh giá hiệu quả của thuật toán

4 Phương pháp sinh

Phương pháp sinh có thể áp dụng để giải bài toán liệt kê tổ hợp đặt ra nếu như hai điều kiện sau được thực hiện:

Có thể xác định được một số thứ tự trên tập các cấu hình tổ hợp cần liệt

kê Từ đó có thể xác định được cấu hình đầu tiên và cấu hình cuối cùng trong thứ tự đã xác định

a Xây dựng được thuật toán từ cấu hình chưa phải là cuối cùng đang có

đưa ra đưa ra cấu hình kế tiếp nó

Ta sẽ gọi thuật toán nói trong điều kiện 2) là thuật toán sinh kế tiếp Rõ ràng là thứ tự trong điều kiện 1) cần được lựa chọn sao cho có thể xây dựng được thuật toán sinh kế tiếp Giả thiết rằng , hai điều kiện nêu trên đã được thực hiện , khi đó thuật toán sinh để giải bài toán liệt kê đặt ra được mô tả như sau:

Trang 23

b Thuật toán quay lui

Nội dung chính của thuật toán này được là việc xây dựng dần các thành phần của cấu hình bằng cách thử tất cả các khả năng Giả thiết cấu hình cần tìm được mô tả bằng một bộ gồm n thành phần x1, x2,….xn. Giả sử đã xác định được i -1 thành phần x1, x2,….xi-1( mà ta sẽ gọi là lời giải bộ phận cấp i-1), bây giờ xác định thành phần xi bằng cách duyệt tất cả các khả năng có thể

đề cử cho nó (đánh số các khả năng có thể đề cử cho nó đánh số khả năng từ

1 đến ni) Với mỗi khả năng j kiểm tra xem j có chấp nhận được không Xảy

Var j: interger;

Trang 24

17, khi những câu hỏi về tổ hợp được nêu ra trong những công trình nghiên cứu các trò chơi may rủi Liệt kê, đếm các đối tượng có những tính chất nào

đó là một phần quan trọng của lý thuyết tổ hợp Chúng ta cần phải đếm các đối tượng để giải nhiều bài toán khác nhau Hơn nữa các kỹ thuật đếm được dùng rất nhiều khi tính xác suất của các biến cố

Trang 25

Cơ sở bài toán đếm

Những nguyên lý đếm cơ bản:

1) Quy tắc cộng: Giả sử có k công việc T1, T2, , Tk Các việc này có thể làm tương ứng bằng n1, n2, , nk cách và giả sử không có hai việc nào có thể làm đồng thời Khi đó số cách làm một trong k việc đó là n1+n2+ + nk

Mỗi bước lặp của từng vòng lặp giá trị của k được tăng lên một đơn vị Gọi Ti

Ti là việc chọn một phần tử từ tập Ai với i=1,2, , k Có |Ai| cách làm Ti và không có hai việc nào có thể được làm cùng một lúc Số cách chọn một phần

tử của hợp các tập hợp này, một mặt bằng số phần tử của nó, mặt khác theo quy tắc cộng nó bằng |A1|+|A2|+ +|Ak| Do đó ta có:

|A1 A2 Ak| = |A1| + |A2| + + |Ak|

2) Quy tắc nhân: Giả sử một nhiệm vụ nào đó được tách ra thành k việc T1,

T2, , Tk Nếu việc Ti có thể làm bằng ni cách sau khi các việc T1, T2, Ti-1

đã được làm, khi đó có n1.n2 nk cách thi hành nhiệm vụ đã cho

|A1 x A2 x x Ak| = |A1|.|A2| |Ak|

Nguyên lý bù trừ:

Khi hai công việc có thể được làm đồng thời, ta không thể dùng quy tắc cộng để tính số cách thực hiện nhiệm vụ gồm cả hai việc Để tính đúng số cách thực hiện nhiệm vụ này ta cộng số cách làm mỗi một trong hai việc rồi

Trang 26

trừ đi số cách làm đồng thời cả hai việc Ta có thể phát biểu nguyên lý đếm này bằng ngôn ngữ tập hợp Cho A1, A2 là hai tập hữu hạn, khi đó

i i i

i

A

Bây giờ ta đồng nhất tập Am (1 m k) với tính chất Am cho trên tập

vũ trụ hữu hạn U nào đó và đếm xem có bao nhiêu phần tử của U sao cho không thỏa mãn bất kỳ một tính chất Am nào.Gọi N là số cần đếm, N là số phần tử của U Ta có:

N = N | A1 A2 Ak| = N N1 + N2 + ( 1)kNk,

trong đó Nm là tổng các phần tử của U thỏa mãn m tính chất lấy từ k tính chất

đã cho Công thức này được gọi là nguyên lý bù trừ Nó cho phép tính N

qua các Nm trong trường hợp các số này dễ tính toán hơn

Nguyên lý Dirichlet tổng quát:

Mệnh đề: Nếu có N đồ vật được đặt vào trong k hộp thì sẽ thì tồn tại một

hộp có ít nhất N/k [đồ vật]

(Ở đây, [x] là giá trị của hàm trần tại số thực x, đó là số nguyên nhỏ nhất có giá trị lớn hơn hoặc bằng x Khái niệm này đối ngẫu với [x] – giá trị của hàm sàn hay hàm phần nguyên tại x – là số nguyên lớn nhất có giá trị nhỏ hơn hoặc bằng x.)

Trang 27

Chỉnh hợp có lặp

Một cách sắp xếp có thứ tự k phần tử có thể lặp lại của một tập n phần

tử được gọi là một chỉnh hợp lặp chập k từ tập n phần tử Nếu A là tập gồm n phần tử đó thì mỗi chỉnh hợp như thế là một phần tử của tập Ak Ngoài ra, mỗi chỉnh hợp lặp chập k từ tập n phần tử là một hàm từ tập k phần tử vào tập n phần tử Vì vậy số chỉnh hợp lặp chập k từ tập n phần tử là nk

C 1

Hoán vị của tập hợp có các phần tử giống nhau

Trong bài toán đếm, một số phần tử có thể giống nhau Khi đó cần phải cẩn thận, tránh đếm chúng hơn một lần Ta xét thí dụ sau

Mệnh đề 2: Số hoán vị của n phần tử trong đó có n1 phần tử như nhau thuộc loại 1, n2 phần tử như nhau thuộc loại 2, , và nk phần tử như nhau thuộc loại

Sự phân bố các đồ vật vào trong hộp

Mệnh đề 3: Số cách phân chia n đồ vật khác nhau vào trong k hộp khác nhau

sao cho có ni vật được đặt vào trong hộp thứ i, với i = 1, 2, , k bằng

n

n

Trang 28

SINH CÁC HOÁN VỊ VÀ TỔ HỢP

Sinh các hoán vị:

Có nhiều thuật toán đã được phát triển để sinh ra n! hoán vị của tập {1,2, ,n} Ta sẽ mô tả một trong các phương pháp đó, phương pháp liệt kê các hoán vị của tập {1,2, ,n} theo thứ tự từ điển Khi đó, hoán vị a1a2 anđược gọi là đi trước hoán vị b1b2 bn nếu tồn tại k (1 k n), a1 = b1, a2 =

b2, , ak-1 = bk-1 và ak< bk

Thuật toán sinh các hoán vị của tập {1,2, ,n} dựa trên thủ tục xây dựng hoán vị kế tiếp, theo thứ tự từ điển, từ hoán vị cho trước a1 a2 an Đầu tiên nếu an-1< an thì rõ ràng đổi chỗ an-1 và an cho nhau thì sẽ nhận được hoán

vị mới đi liền sau hoán vị đã cho Nếu tồn tại các số nguyên aj và aj+1 sao cho

aj< aj+1 và aj+1> aj+2 > > an, tức là tìm cặp số nguyên liền kề đầu tiên tính từ bên phải sang bên trái của hoán vị mà số đầu nhỏ hơn số sau Sau đó, để nhận được hoán vị liền sau ta đặt vào vị trí thứ j số nguyên nhỏ nhất trong các số lớn hơn aj của tập aj+1, aj+2, , an, rồi liệt kê theo thứ tự tăng dần của các số còn lại của aj, aj+1, aj+2, , an vào các vị trí j+1, , n Dễ thấy không có hoán

vị nào đi sau hoán vị xuất phát và đi trước hoán vị vừa tạo ra

Sinh các tổ hợp:

Làm thế nào để tạo ra tất cả các tổ hợp các phần tử của một tập hữu hạn? Vì tổ hợp chính là một tập con, nên ta có thể dùng phép tương ứng 1-1 giữa các tập con của {a1,a2, ,an} và xâu nhị phân độ dài n

Ta thấy một xâu nhị phân độ dài n cũng là khai triển nhị phân của một

số nguyên nằm giữa 0 và 2n

1 Khi đó 2n xâu nhị phân có thể liệt kê theo thứ

tự tăng dần của số nguyên trong biểu diễn nhị phân của chúng Chúng ta sẽ bắt đầu từ xâu nhị phân nhỏ nhất 00 00 (n số 0) Mỗi bước để tìm xâu liền sau ta tìm vị trí đầu tiên tính từ phải qua trái mà ở đó là số 0, sau đó thay tất

cả số 1 ở bên phải số này bằng 0 và đặt số 1 vào chính vị trí này

Trang 29

procedure Xâu nhị phân liền sau (bn-1bn-2 b1b0): xâu nhị phân khác (11 11)

i:= 0

while bi = 1

begin

bi:= 0 i:= i + 1

Khái niệm mở đầu và mô hình hóa bằng hệ thức truy hồi:

Đôi khi ta rất khó định nghĩa một đối tượng một cách tường minh Nhưng có thể dễ dàng định nghĩa đối tượng này qua chính nó Kỹ thuật này được gọi là đệ quy Định nghĩa đệ quy của một dãy số định rõ giá trị của một hay nhiều hơn các số hạng đầu tiên và quy tắc xác định các số hạng tiếp theo

từ các số hạng đi trước Định nghĩa đệ quy có thể dùng để giải các bài toán đếm Khi đó quy tắc tìm các số hạng từ các số hạng đi trước được gọi là các

hệ thức truy hồi

Định nghĩa 1: Hệ thức truy hồi (hay công thức truy hồi) đối với dãy số {an}

là công thức biểu diễn an qua một hay nhiều số hạng đi trước của dãy Dãy số được gọi là lời giải hay nghiệm của hệ thức truy hồi nếu các số hạng của nó thỏa mãn hệ thức truy hồi này

Trang 30

Giải các hệ thức truy hồi

Định nghĩa 2: Một hệ thức truy hồi tuyến tính thuần nhất bậc k với hệ số

hằng số là hệ thức truy hồi có dạng:

an = c1an-1 + c2an-2 + + ckan-k , trong đó c1, c2, , ck là các số thực và ck 0

Theo nguyên lý của quy nạp toán học thì dãy số thỏa mãn hệ thức truy hồi nêu trong định nghĩa được xác định duy nhất bằng hệ thức truy hồi này và

k điều kiện đầu: a0 = C0, a1 = C1, , ak-1 = Ck-1

Phương pháp cơ bản để giải hệ thức truy hồi tuyến tính thuần nhất là tìm nghiệm dưới dạng an = rn, trong đó r là hằng số Chú ý rằng an = rn là nghiệm của hệ thức truy hồi an = c1an-1 + c2an-2 + + ckan-k nếu và chỉ nếu

rn = c1rn-1 + c2rn-2 + + ckrn-k hay rk c1rk-1 c2rk-2 ck-1r – ck = 0 Phương trình này được gọi là phương trình đặc trưng của hệ thức truy hồi, nghiệm của nó gọi là nghiệm đặc trưng của hệ thức truy hồi

Mệnh đề:Cho c1, c2, , ck là các số thực Giả sử rằng phương trình đặc trưng

Trang 31

lại một phần tử Một ví dụ khác là thủ tục nhân các số nguyên Thủ tục này rút gọn bài toán nhân hai số nguyên tới ba phép nhân hai số nguyên với số bit giảm đi một nửa Phép rút gọn này được dùng liên tiếp cho tới khi nhận được các số nguyên có một bit Các thủ tục này gọi là các thuật toán chia để trị

f(n) = af(n

b) + g(n)

Hệ thức này có tên là hệ thức truy hồi chia để trị

Mệnh đề 1: Giả sử f là một hàm tăng thoả mãn hệ thức truy hồi f(n) = af(n

b) + c với mọi n chia hết cho b, a 1, b là số nguyên lớn hơn 1, còn c là số thực dương

Mệnh đề 2: Giả sử f là hàm tăng thoả mãn hệ thức truy hồi f(n) = af(n

b) + cndvới mọi n = bk, trong đó k là số nguyên dương, a 1, b là số nguyên lớn hơn

1, còn c và d là các số thực dương

1.2.4 BÀI TOÁN TỐI ƢU

Phát biểu bài toán

Trong rất nhiều ứng dụng thực tế của tổ hợp các cấu hình tổ hợp còn được gán cho một giá trị bằng số đánh giá trị sử dụng của cấu hình đối với mục đích sử dụng cụ thể nào đó Khi đó xuất hiện bài toán: Hãy lựa chọn trong số các cấu hình tổ hợp chấp nhận được cấu hình sử dụng tốt nhất Các

Trang 32

bài toán như vậy chúng ta sẽ gọi là bài toán tổ hợp Dưới dạng tổng quát bài toán tối ưu tổ hợp có thể phát biểu như sau:

Tìm cực tiểu (hay cực đại )của phiếu hàm

F(x) min (max) Với điều kiện

x D trong đó D là tập hữu hạn phần tử

Hàm f(x) được gọi là hàm mục tiêu của bài toán , mỗi phần tử thuộc

x D được gọi là một phương án còn tập D gọi là tập các phương án của bài toán

Thông thường tập D được mô tả như là tập các cấu hình tổ hợp thỏa mãn một số tính chất cho trước nào đó

Phương án x* D đem lại giá trị nhỏ nhất ( lớn nhất) cho hàm mục tiêu được gọi là phương án tối ưu, khi đó giá trị f*

= f(x*) được gọi là giá trị tối ưu của bài toán

Dưới đây chúng ta sẽ giới thiệu một số mô hình tối ưu hóa tổ hợp truyền thống Các mô hình này , một mặt , là những mô hình có nhiều ứng dụng thực tế, mặt khác chúng giữ vai trò quan trọng trong việc nghiên cứu và phát triển lý thuyết tối ưu hóa tổ hợp

Bài toán cái túi

Một nhà thám hiểu cần đem theo một cái túi có trọng lượng không quá

b Có n đồ vật có thể đem theo Đồ vật thứ j có trọng lượng là aj và giá trị là cj

(j = 1,2,…n)

Hỏi rằng nhà thám hiểu cần đem theo các đồ vật nào để cho tổng giá trị

sử dụng của các đồ vật đem theo là lớn nhất?

Ngày đăng: 23/09/2016, 11:51

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. [PDF]chương trình quản lý vật tư - Công Ty Phần Mềm Hoàn Hảo [2]. Bùi Minh Trí, Quy hoạch toán học, NXB Khoa Học Và Kỹ Thuật, 2001 Sách, tạp chí
Tiêu đề: Bùi Minh Trí, Quy hoạch toán học
Nhà XB: NXB Khoa Học Và Kỹ Thuật
[4]. Đề tài Quản lý kho vật tư công ty TNHH thương mại và công... doc.edu.vn/.../de-tai-quan-ly-kho-vat-tu-cong-ty-tnhh-thuong-mai-va-co Sách, tạp chí
Tiêu đề: Đề tài Quản lý kho vật tư công ty TNHH thương mại và công
[5]. F.GMS - Phần mềm quản lý vật tư hàng hoá - FBsoft Việt Nam Sách, tạp chí
Tiêu đề: F.GMS - Phần mềm quản lý vật tư hàng hoá
[6]. Lê Văn Phùng , Kỹ thuật phân tích thiết kế hệ thống thông tin hướng cấu trúc , tái bản lần 3 ,năm 2015,NXB thông tin và truyền thông Sách, tạp chí
Tiêu đề: Kỹ thuật phân tích thiết kế hệ thống thông tin hướng cấu trúc
Nhà XB: NXB thông tin và truyền thông
[3]. Kenneth H. Rosen, Discrete Mathematics and Its Applications Khác
[7]. Lê Huy Thập, Algorithms, Bài giảng tại Genetic – Singapore Computer Science School từ 2006 Khác
[8]. Nguyễn Đức Nghĩa – Nguyễn Tô Thành, Toán Rời Rạc NXB ĐH Quốc Gia HN , 2003 Khác
[9]. Lê Huy Thập, Giáo trình kỹ thuật lập trình, Tập 1, NXB Khoa học tự nhiên và công nghệ, 2008 Khác
[10]. Quy trình Mua và quản lý Vật tư, Hàng hóa - Việt Nam www.hameco.com.vn//index.../quy-trinh-mua-va-quan-ly-vat-tu-hang-hoa Khác
[11]. Quy trình quản lý kho, vật tư hàng hóa | Giải pháp ERP ... www.itgvietnam.com/san.../3s.../quy-trinh-quan-ly-kho-hang-hoa Khác

HÌNH ẢNH LIÊN QUAN

Hình 1. Mô hình ER - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 1. Mô hình ER (Trang 16)
Bảng 2. Quan hệ Phiếu nhập kho  FieldName  Width  Comment - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Bảng 2. Quan hệ Phiếu nhập kho FieldName Width Comment (Trang 46)
Bảng 1.Quan hệ kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Bảng 1. Quan hệ kho (Trang 46)
Bảng 3. Phiếu xuất kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Bảng 3. Phiếu xuất kho (Trang 47)
Hình 3.1: Form chính của chương trình quản lý nhập kho tối ưu - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.1 Form chính của chương trình quản lý nhập kho tối ưu (Trang 55)
Hình 3.4: Form nhâp phiếu nhập kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.4 Form nhâp phiếu nhập kho (Trang 58)
Hình 3.5: Form Nhập phiếu xuất kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.5 Form Nhập phiếu xuất kho (Trang 59)
Hình 3.6: Form nhập vật tư - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.6 Form nhập vật tư (Trang 59)
Hình 3.7: Form sửa thông tin kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.7 Form sửa thông tin kho (Trang 60)
Hình 3.8:Form sửa phiếu nhập kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.8 Form sửa phiếu nhập kho (Trang 60)
Hình 3. 9: Form sửa phiếu xuất kho - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3. 9: Form sửa phiếu xuất kho (Trang 61)
Hình 3.10: Form sửa thông tin vật tư - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3.10 Form sửa thông tin vật tư (Trang 62)
Hình 3. 11: Form tính phương án nhập kho tối ưu - Giải bài toán tối ưu nhập vật tư hàng hoá bằng phương pháp cận nhánh (LV01980)
Hình 3. 11: Form tính phương án nhập kho tối ưu (Trang 63)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm