|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
algoritmo tornei: BERGER
qualcuno mi sa spiegare come funziona l'algoritmo di berger, o anche degli altri per arrivare allo stesso risultato.
Un algoritmo che possa stilare il calendario di un campionato all'italiana dati i nomi e numero degli iscritti al torneo. per campionato all'italiana intendo quallo come il nostro di calcio: ci sono piu turni ed a ogni utrno agni squadra gioca, a fine girone ogni squadra deve aver giocato con tutte le altre. Proprio come quello di serie A. grazie mille, m serve per un progetto all'università e non so dove sbattere la testa. Ultima modifica di marxt : 15-06-2004 alle 17:17. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
copiato da un sito:
L'algoritmo per calcolare gli n/2 accoppiamenti di tutte le n(n-1)/2 del girone di andata di un campionato di n squadre, per le n-1 giornate è il seguente, ed è valido solo per n pari. Codice:
* per ogni giornata g che va da 1 a n-1
o per ogni partita i che va da 1 a n/2
+ la partita i è giocata da una qualsiasi coppia di squadre tali che:
# non hanno mai giocato in qualsiasi giornata
# le restanti squadre che non sono state ancora selezionate per giocare nella giornata attuale
non hanno mai giocato nelle giornate precedenti
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
g.a.c.
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
ok grazie per il programmino .xls, ma come faccio a vederne l'implementazione.
scusa ma non me ne intendo di questo linguaggio, cosa devo fare per risalira all'algoritmo??? |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Excel > Alt+F11
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
ok si c'ero arrivato anche da solo dopo aver scritto il messaggio.
cmq mi potresti dire a parole l'algoritmo? io devo implementarlo in java e non conosco bene il visual basic. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
il mio non va bene? |
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
il bulk è questo:
Codice:
Sub Torneo1(N, Part() As Integer) N1 = N - 1 For i = 1 To N1 j1 = i - 1: j2 = i + 1 For iP = 1 To N / 2 j1 = j1 + 1: If j1 > N1 Then j1 = 1 j2 = j2 - 1: If j2 < 1 Then j2 = N1 Part(i, iP, 1) = j1: Part(i, iP, 2) = j2 Next iP Part(i, 1, 2) = N Next i End Sub Codice:
Sub Torneo2(N, Part() As Integer) N1 = N - 1: N2 = N / 2 For i = 1 To N1 j = i For iP = 1 To N2 Part(i, iP, 1) = j: j = j + 1: If j > N1 Then j = 1 Next iP For iP = N2 To 2 Step -1 Part(i, iP, 2) = j: j = j + 1: If j > N1 Then j = 1 Next iP Part(i, 1, 2) = N Next i End Sub a piacere. |
|
|
|
|
|
#10 | ||
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
kingv:
Quote:
a2000: Quote:
|
||
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
i è l'indice della giornata
j sono gli indici di squadra iP è l'indice di partita della giornata i-esima Part(i, iP, 1) contiene l'indice della 1a squadra della giornata i-esima, partita iP-esima Part(i, iP, 2) contiene l'indice della 2a squadra della giornata i-esima, partita iP-esima gli accoppiamenti alla giornata i-esima vengono creati con un algoritmo circolare (e infatti si chiamano tornei circolari): es. 6 squadre seconda giornata i=2 a meno dell'ultima squadra (6), il blu (prima squadra) circola in avanti, il rosso (seconda squadra) circola all'indietro la partita j-j (2-2) viene sostituita con la partita j-N (2-6) 1 2 3 4 5 (6) >> start 1 2 3 4 5 (6) >> 2-2 >> 2-6 1 2 3 4 5 (6) >> 3-1 1 2 3 4 5 6 >> 4-5 |
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
totale nove (9) righe.
nell'isola di Java forse meno. |
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
adesso fammi tornare ai bilanci locali all'interfaccia.
ciao. |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
quindi se uno va in un senso e l'altro nell'altro si arriverà ad avere partite come 3-1 e 1-3, e una delle due va pero scartata giusto??
ma questa rotazione cicolare va fatta ad ogni giornata? e come tengo conto delle partite gia giocate nei turni precendenti? |
|
|
|
|
|
#15 | ||
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
fatti un esempio a mano. Quote:
(è la differenza tra un algoritmo matematico e uno informatico) fatti un esempio a mano. |
||
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
ok ci sono ho capito!!!!!
un ultima cosa: con questo facendo n/2 passaggi ottengo le partite di un turno. ma per i turni successivi devo partire da un punto diverso però, altrimenti i risultati sono uguali. Se invece parto da dove mi sono fermato: 1234 5 6 >>4-5 il prossimo sarà: 1234 5 6 >>5-4 dovrei quindi saltare questo?? dimmi come partire poi per ogni turno successivo |
|
|
|
|
|
#17 | |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
Codice:
N1 = N - 1 For i = 1 To N1 .... Next i ossia giornata 1, 2, 3 .... N-1 tutto very light. |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 459
|
ok ci sono.
ho fatto a mano tutto per n=6 il trucco è spostare ogni volta il punto di partenza: es turno 4 allora il blu è sul 3 a il rosso sul 5 giusto??? turno 5 allora il blu sul 4, il rosso dovrebbe essere sul 6 ma non puo quindi va sull'1!! e giusto??? dimmi di si ti prego!!!!! |
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
quasi ... ma più semplice
turno 5: inizio con il blu sul 4, il rosso sul 6 (regolare) partita 1: blu su 5, rosso su 5 >>> partita 5-5 sostituita con 5-6 partita 2: blu su 1 (rotazione a N-1 squadre), rosso su 4 >>> partita 1-4 partita 3: blu su 2 , rosso su 3 >>> partita 2-3 tutto regolare. l'unica eccezione è la sostituzione della partita j-j (5-5) con la partita j-N (5-6). |
|
|
|
|
|
#20 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
funziona anche per N dispari.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:53.



















