2010-07-27 13 views
5

Próbuję napisać algorytm, który tworzy grupy ludzi na podstawie ich "wyniku". Osoba ma dwa parametry, nazwę i wynik. (Zakres punktacji wynosi od -10 do 10, ale to naprawdę nie ma znaczenia) Szukam utworzenia grup o równej liczbie osób (jeśli to możliwe w oparciu o liczbę osób prezentowanych), gdzie średni wynik członków grupy jest to samo (lub bardzo blisko tego samego).C# Algorytm do określania grupowania ludzi na podstawie wartości

Na przykład:

Grupa 1 (średni wynik = 2) - Jan Kowalski, Wynik 2 - Jane Doe, wynik 7 - Jack Black nik -3

Grupa 2 (średni wynik = 2) - Bobby Ostrza, wynik 4 - Cary stronę, wynik -3 - Linus Tarval, wynik 5

+0

Ile grup? Ponadto, ile osób będziesz mieć? – IVlad

+0

Liczba grup jest nieskończona, ale liczba osób będzie zawsze wybierana przez użytkownika. Liczba osób w grupie również zostanie podana przez użytkownika. –

Odpowiedz

2

To pachnie odmianie klasycznej Partition Problem, który jest NP-trudny chociaż niektóre heurystyki e xists. Możesz mieć łup na stronie wikipedii ... prawdopodobnie zachłanne podejście zadziała w twoim przypadku.

Powinieneś spróbować wypełnić grupy, wybierając odpowiednią grupę, aby umieścić konkretną osobę, prawdopodobnie zaczynając od zdania uporządkowanego według wyniku.

+0

Dzięki Jack, "chciwe podejście" działało wystarczająco dobrze dla tego wniosku. –

Powiązane problemy