2013-05-01 39 views
7

Tôi đang tìm cách tìm ra cách để phân loại mọi người thành các lớp theo sở thích.Thuật toán cho nhóm dựa trên tùy chọn

Ví dụ, nói có 100 sinh viên được mỗi sẽ được chỉ định một trong năm lớp:

  • Khoa học - 40 ghế
  • Math - 15 chỗ ngồi
  • Lịch sử - 15 chỗ ngồi
  • Máy tính - 20 ghế
  • Viết lách - 10 chỗ ngồi

Mỗi học sinh có ba lớp học ưu tiên được sắp xếp theo sở thích. Cách tốt nhất để tiếp cận phân chia học sinh là gì để nhiều người có được các lớp lựa chọn đầu tiên và thứ hai nhất có thể, đồng thời đảm bảo rằng không có lớp học nào có quá nhiều học sinh trong phòng.

Tôi đã nghĩ về việc tiếp cận nó bằng các phương pháp sau đây:

  1. Nhóm tất cả học sinh của lớp lựa chọn đầu tiên của họ
  2. Xem mà lớp có quá nhiều học sinh và có quá ít
  3. Hãy kiểm tra để xem có bất kỳ học sinh nào trong các lớp học quá mức có các lớp lựa chọn thứ hai chưa được đặt trước dưới đây
  4. Di chuyển các sinh viên đó theo cách
  5. Lặp lại 2-4 với lớp lựa chọn thứ 3

Trong khi tôi cảm thấy như đây là một triển khai hợp lý, tôi tự hỏi liệu có bất kỳ thuật toán nào khác giải quyết vấn đề này một cách tốt hơn hay không. Tôi đã thử tìm kiếm trên tất cả, nhưng tôi không thể tìm thấy bất cứ điều gì có thể giải quyết loại vấn đề này.

+0

Một 'vấn đề' với những loại thuật toán là nó rất dễ dàng để 'lừa' bằng cách chọn các khóa học phổ biến (và nhỏ) như là một thứ 2 và thứ 3 lựa chọn để buộc một vị trí 1st lựa chọn .. Tôi sẽ rất quan tâm đến một giải pháp giải quyết vấn đề này bằng cách nào đó (mặc dù hiện tại tôi không có trực giác để tiếp cận nó). – Joost

Trả lời

4

Từ mô tả của bạn, điều này nghe có vẻ rất giống với một trong những biến thể của Stable Marriage Problem

wikipedia

Kiểm tra liên kết Wiki và bạn sẽ thấy một mô tả về Gale-Shapley thuật toán, mà là một tốt dung dịch.

 Gale-Shapley Algorithm

+1

Tôi thích điều này. Vì vậy, bạn có thể nói rằng các sinh viên được recommimg cho các lớp học và lớp học chấp nhận nếu đầy đủ. Sau đó, các học sinh bị đuổi ra khỏi lớp do người khác phải đề xuất với sở thích tiếp theo của họ cho đến khi tất cả các kích cỡ được khớp? Chìa khóa duy nhất sau đó sẽ là làm thế nào để đặt hàng chúng? A đến Z hoặc ngẫu nhiên? – glh

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