You are on page 1of 6

Sử dụng bài toán Hungary trong phân giao n công việc cho n đối tượng:

Trong trường hợp sắp xếp hoặc phân giao n công việc cho n máy hoặc n người với
điều kiện mỗi máy hoặc mỗi người chỉ đảm nhận một công việc cũng có rất nhiều
phương án sắp xếp khác nhau. Trong trường hợp này có thể xác định được phương án
sắp xếp tối ưu giữa các phương án đó. Phương án tối ưu có thể là phương án có tổng
thời gian thực hiện nhỏ nhất hoặc cung cấp sản phẩm, dịch vụ nhanh nhất, tuỳ thuộc
vào mục tiêu cụ thể đặt ra trong khi sắp xếp. Trong một số trường hợp mục tiêu đặt ra là
tổng thời gian thực hiện của tất cả các đối tượng là ngắn nhất nhưng trong các trường
hợp khác mục tiêu lại là giảm thời gian ứ đọng khi thực hiện các công việc.

Để xác định được phương án tối ưu ta dùng thuật toán Hungary. Thuật toán này được
thực hiện theo trình tự sau :

Bước 1: Lập bảng phân việc và máy theo dữ liệu thực tế;

Bước 2: Tìm số nhỏ nhất trong từng hàng của bảng phân việc và trừ các số trong hàng
cho số đó;

Bước 3: Tìm số nhỏ nhất trong từng cột và trừ các số trong từng cột cho số đó;

Bước 4: Tìm cách kẻ các đường thẳng đi qua hàng hoặc cột có các số 0 sao cho số
đường thẳng kẻ được ít nhất. Thực hiện theo cách sau:

- Bắt đầu từ những hàng có 1 số 0, khoanh tròn số đó lại và kẻ một đường thẳng xuyên
suốt cột;

- Tìm các cột có 1 số 0, khoanh tròn số đó lại rồi kẻ một đường xuyên suốt hàng.

Bước 5: Lặp lại bước 4 cho đến khi không còn có thể khoanh được nữa. Nếu số
đường thẳng kẻ được ít nhất bằng số hàng (số cột) thì bài toán đã có lời giải tối ưu. Nếu
số đường kẻ được nhỏ hơn số hàng (số cột) thì cần làm tiếp: Tìm số chưa bị gạch nhỏ
nhất và lấy tất cả các số chưa bị gạch trừ đi số đó; các số bị gạch bởi 2 đường thẳng
cộng với số đó; còn các số khác giữ nguyên.

Bước 6: Quay trở lại bước 4 và 5 cho đến khi tìm được lời giải tối ưu.

Ví dụ: Trong một tổ sản xuất có 4 công việc I, II, III, IV cần bố trí cho 4 công nhân A, B,
C, D. Chi phí thực hiện cho mỗi công việc của từng công nhân cho ở bảng sau. Tìm
phương án bố trí công việc sao cho tổng chi phí thực hiện các công việc là nhỏ nhất.
Yêu cầu: Tìm phương án bố trí công việc sao cho tổng chi phí thực hiện các công việc là
nhỏ nhất.

Dùng thuật toán Hungary ta có cách giải như sau:

Bước 1: Như đầu bài đã cho


Như vây ta bố trí:
Nhân viên A thực hiện công việc 1 với thời gian là 18 phút ;

Nhân viên B thực hiện công việc 2 với thời gian là 55 phút ;

Nhân viên C thực hiện công việc 3 với thời gian là 8 phút ;

Nhân viên D thực hiện công việc 4 với thời gian là 12 phút;

Tổng thời gian thực hiện công việc của cả 4 nhân viên là 93 phút.

Trong thực tế nhiều khi chúng ta gặp trường hợp phân giao công việc sao cho tổng
lợi nhuận thu được tối đa. Để tìm được phương án phân giao tối ưu vẫn sử dụng
phương pháp giải trên. Tuy nhiên cần phải đổi dấu toàn bộ các số liệu trong bảng phân
việc, sau đó vận dụng thuật toán Hungari giải bình thường.

Trong trường hợp bài toán phân công công việc được đặt ra với hai mục tiêu:

- Tổng chi phí hoặc thời gian thực hiện công việc là tối thiểu;

- Chi phí thực hiện từng công việc hoặc thời gian thực hiện từng công việc không được
vượt quá 1 mức nào đó thì chúng ta chỉ cần loại bỏ các số hạng bằng hoặc vượt quá
mức đã quy định bằng cách thay chúng bằng những dấu x, sau đó tiến hành giải bình
thường.

Xem xét ví dụ trên, với yêu cầu tìm phương án bố trí công việc sao cho tổng chi phí
thực hiện các công việc là nhỏ nhất và chi phí thực hiện cho mỗi công việc phải nhỏ hơn
55 phút.
Như vây ta bố trí:

Nhân viên A thực hiện công việc 1 với thời gian là 18 phút ;

Nhân viên B thực hiện công việc 4 với thời gian là 48 phút ;

Nhân viên C thực hiện công việc 3 với thời gian là 8 phút ;

Nhân viên D thực hiện công việc 2 với thời gian là 25 phút;

Tổng thời gian thực hiện công việc của cả 4 nhân viên là 99 phút.

Nguồn: TS. Nguyễn Thị Minh An (Quantri.vn biên tập và hệ thống hóa)

You might also like