2011-11-13 35 views
6

Xin chào, tôi đang xây dựng một chương trình trong đó học sinh đang đăng ký một kỳ thi được thực hiện tại một số thành phố trong cả nước. Trong khi đăng ký học sinh cung cấp một danh sách của ba thành phố nơi họ muốn cung cấp cho các kỳ thi theo thứ tự ưu tiên của họ. Vì vậy, một sinh viên có thể nói sở thích đầu tiên của mình cho một trung tâm thi là New York tiếp theo là Chicago tiếp theo là Boston.Thuật toán để giải quyết các vấn đề phân bổ nguồn lực

Bây giờ, hãy nhớ rằng vì các trung tâm thi có khả năng hạn chế nên chúng không thể chứa được mỗi học sinh lựa chọn đầu tiên. cung cấp trung tâm lựa chọn thứ ba cho sinh viên

Bây giờ, bất kỳ ý tưởng nào về thuật toán sắp xếp sẽ làm cho quy trình này trở nên hiệu quả hơn.Đây là cách đơn giản để thực hiện điều này. có thể sau đó đi qua danh sách các lựa chọn thứ hai và phân bổ. Tuy nhiên, điều này có thể dẫn đến những học sinh đầu tiên trong danh sách nhận được trung tâm đầu tiên của họ và các học sinh cuối cùng nhận được sự lựa chọn thứ ba của họ hoặc tệ hơn là không có sự lựa chọn nào của họ. Bất kỳ thứ gì có thể làm cho hiệu quả hơn này

+0

ruột cảm giác của tôi là một thuật toán "hoàn hảo" sẽ là NP-đầy đủ, và bạn sẽ phải giải quyết cho một xấp xỉ. –

+1

Tại sao không chỉ ưu tiên cho những sinh viên đầu tiên đã đăng ký? Bạn phải đánh lừa họ. – alexpirine

+1

Vấn đề là chúng tôi đã được khách hàng đặc biệt yêu cầu không đi với phương pháp tiếp cận đầu tiên đến trước được phục vụ.Lý do là có các sinh viên ở các địa điểm khác nhau có những ngày khác nhau để điền vào mẫu bài kiểm tra của họ. Do đó, không phải lỗi của họ mà họ điền vào mẫu của họ muộn hơn những người khác. – user992010

Trả lời

5

Âm thanh như một biến thể của cổ điển stable marriages problem hoặc college admission problem. Wikipedia liệt kê một thời gian tuyến tính (trong số các sở thích, O (n ²) trong số lượng người) thuật toán cho trước đây; NRMP mô tả một số efficient algorithm cho sau này.

Tôi nghi ngờ rằng nếu bạn tạo ngẫu nhiên tùy chọn của các địa điểm thi cho sinh viên (một Fisher–Yates shuffle mỗi địa điểm thi) và sau đó áp dụng thuật toán hôn nhân ổn định, bạn sẽ nhận được một giải pháp khá công bằng và hiệu quả.

2

Sự cố này có thể được xây dựng dưới dạng phiên bản minimum cost flow. Để N là số lượng học sinh. Hãy để mỗi học sinh là một đỉnh nguồn với công suất 1. Hãy để mỗi trung tâm thi là một đỉnh chậu với công suất, tốt, khả năng của nó. Tạo một vòng cung từ mỗi học sinh cho các lựa chọn đầu tiên, thứ hai và thứ ba của mình. Đặt chi phí của vòng cung lựa chọn đầu tiên thành 0; chi phí của lựa chọn thứ hai vòng cung đến 1; và chi phí của vòng cung lựa chọn thứ ba cho N + 1.

Tìm luồng chi phí tối thiểu di chuyển N đơn vị lưu lượng. Giả sử rằng người giải quyết của bạn trả về một giải pháp tích phân (nó nên; dòng chảy LP là hoàn toàn không đơn phương), mỗi sinh viên chảy một đơn vị đến trung tâm được chỉ định của mình. Các chi phí giảm thiểu số lượng bài tập lựa chọn thứ ba, phá vỡ quan hệ bởi số lượng các bài tập lựa chọn thứ hai.

-1

Có một lớp thuật toán giải quyết việc phân bổ tài nguyên giới hạn này được gọi là phiên đấu giá. Về cơ bản trong trường hợp này mỗi sinh viên sẽ nhận được một số tiền nhất định (số họ có thể chi tiêu), thì phần mềm của bạn sẽ đặt giá thầu giữa những sinh viên đó. Bạn có thể sử dụng công thức dựa trên tùy chọn.

Ví dụ sẽ dành cho thời gian hướng dẫn. Nếu bạn đặt ra các sở thích của bạn, sau đó bạn sẽ có hiệu quả đấu thầu nhiều hơn cho những lần và ít hơn cho những lần bạn không muốn. Vì vậy, nếu bạn không nhận được sở thích của bạn, bạn có nhiều "tiền" để đấu thầu với các hướng dẫn khác.

Các vấn đề liên quan