2011-04-13 3 views
5

알고리즘을 찾고, 누군가가 다음을하기 위해 관대하다면 코드를 작성하십시오. 많은 선수들에게 의견을 제시해야합니다. 플레이어 수는 항상 4입니다. 개별 플레이어를 최소 반복 횟수로 4 그룹으로 그룹화하고자합니다. 초기 배치는 간단합니다 :분류 알고리즘 - 토너먼트

1 2 3 4 Table 1 
5 6 7 8 Table 2 
9 10 11 12 Table 3 
13 14 15 16 Table 4 
17 18 19 20 Table 5 
21 22 23 24 Table 6 

따라서 플레이어 1-4는 서로 "본"적이 있습니다. 모든 사람이 게임을하고 플레이어가 섞입니다. 다음 패스 (및 후속 패스)에서 플레이어를 재 배열하여 가장 적은 양의 오버랩을 만들려고합니다. 기본적으로 플레이어가 가능한 한 오랫동안 반복 된 얼굴을 보지 못하도록하고 싶습니다. 일단 더 이상 가능하지 않게되면 가능한 한 최소화하려고합니다.

나는이 알고리즘이 비교적 단순해야한다고 생각하지만, 내가 취하는 모든 접근법은 처음에는 처리되는 사람들에게 유리하게 작용한다고 느낀다. 내 직감/마음은 절대적으로 정답.

명확성을 위해 아무도 제거되지 않으며 매번 변경됩니다.

+1

당신이 시도한 것을 게시하는 것이 일반적입니다. 그래서 우리는 이미 배제 된 것을 제안하지 않습니다. 당신은 또한 당신이 사용하고있는 언어를 나타내지 않았기 때문에 나는 생각을 제안 할 수 없습니다. –

+0

저는 C++을 사용하고 있지만 어떤 언어인지는 신경 쓰지 않습니다. 생각 프로세스/의사 코드에 더 관심이 있습니다. 처음에 취한 일반적인 접근 방식은 각 "플레이어"를 반복하여 이전에 가장 앉아있는 사람과 함께 앉는 것이 었습니다. 그러나 저 지수 선수들에게 무겁게 비중을 두었습니다. 어떤 Java/C/C++/.NET/PHP 제안을 사용할 수 있습니다. – JamesB41

+0

몇 라운드가 필요한가요? – Svante

답변

3

이것은 기본적으로 사회적 골퍼 문제입니다. 조합 최적화 문헌에는 많은 알고리즘이 있습니다.

+0

고마워. 그 정도면 충분했습니다. – JamesB41