2016-11-01 5 views
0

학생들과 교사라는 크기가 다른 두 개의 목록이있는 알고리즘을 만들어야합니다. 교사가있는 것보다 더 많은 학생들이 있습니다. 각 교사가 대략 같은 수의 학생과 일치하는 각 학생에 대해 쌍을 만들어야합니다.페어 제한이있는 두 개의 동일하지 않은 목록을 페어링하는 알고리즘

합병증은 내가 받아 들일 수없는 쌍의 모음을 가지고 있다는 것입니다. 구체적으로 말하자면, 각 학생은 한 명 이상의 교사와 쌍을 이룰 수 없습니다.

저는 각 교사가 배정 된 학생의 수가 정확히 필요하지 않기 때문에 임의로 일치를 시작하고 일치하지 않는 항목을 건너 뛰는 매우 효율적인 욕심 많은 알고리즘을 수행 할 수 있음을 알고 있습니다. 어쨌든, 나는 이것을하기위한 효율적이고 완벽한 방법을 좋아할 것입니다. 제공 할 수있는 조언을 주셔서 감사합니다!

+0

충분히 쉽지만 어느 프로그래밍 언어로 작업하고 있습니까? – Absinthe

+0

C#, ASP.NET MVC를 사용하고 있습니다. 학생과 교사 목록은 매개 변수로 제공되며 제한 사항은 데이터베이스의 일부입니다. – hallordylo

+0

허용되지 않는 쌍의 사전을 만들고 그에 대한 비교를하십시오. https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx – Absinthe

답변

1

가장 제한적인 일치부터 제한이 적은 것으로 시작하여 무제한으로 마지막으로 매칭되며 균형을 유지하기 위해 사용할 수 있습니다.

+0

좋은 솔루션입니다. 감사합니다. @O_Z! 많은 학생들은 전혀 제한이 없으므로 일단 내가 그들을 이해하면 목록을 바로 따라갈 수 있습니다. – hallordylo