Imaginando se já existe algum algoritmo de programação de torneios que eu poderia usar ou até adaptar um pouco.
Aqui estão os meus requisitos:
- Um número variável de oponentes pertencentes a um número variável de equipes / clubes deve ser emparelhado com um oponente
- Dois oponentes não podem ser do mesmo clube
- Se houver um número ímpar de jogadores, 1 deles é selecionado aleatoriamente para obter um adeus
Qualquer algoritmo relacionado a esse tipo de conjunto de requisitos seria apreciado.
Edição: Eu só preciso executar isso no máximo uma vez, criando confrontos para a primeira 'rodada' do torneio.
algorithms
barfoon
fonte
fonte
Respostas:
Como posso ver, você deseja encontrar a correspondência máxima no gráfico. De fato, nós são jogadores, eles se conectam se não estiverem no mesmo clube, agora você deve encontrar o número máximo de arestas que não possuem o mesmo vértice. Veja o algoritmo de correspondência máxima de Edmonds .
fonte
Do meu breve período na Wikipedia, há vinte segundos, parece que você precisará decidir primeiro uma estratégia de eliminação. Veja Wikipedia:
O artigo de eliminatória simples descrita semear técnicas (o algoritmo que você está procurando) muito genericamente e parecia útil, embora não seja muito um algoritmo.
fonte
Com isso, parece que um algoritmo de correspondência inicial é bastante simples:
Se uma pessoa for deixada, será uma pessoa aleatória, com uma exceção. Se um clube tiver mais membros do que todos os jogadores adversários juntos, as sobras serão sempre desse clube. Realisticamente, essa é uma situação super-rara, e escolher uma compra de qualquer outro clube deixaria ainda mais pessoas sobrando.
fonte