Newsgroup: it.scienza.informatica
Titolo: AAA algoritmo cercasi.....

Ehm, scusa non so se ho capito bene...
Se i gruppi sono 4, come fanno a passare 5 giorni tra il turno di un gruppo
e quello di un altro gruppo?
E una soluzione banale non potrebbe essere questa?
Fai A1, B1, C1, D1, A2, B2, C2, D2, A3, B3 ......
Dalle tue intenzioni credo di aver capito che sai programmare un po', se č
cosě fai un ciclo che ogni giorno passa al gruppo successivo (o al primo se
va oltre 4), e per quel gruppo aumenta di 1 un contatore (ritornando a 1 se
supera il numero di  persone di quel gruppo).
Fammi sapere piů precisamente....
Michele

Salve
la soluzione classica e' con algoritmi di programmazione lineare su interi.
Si impostano i vincoli come equazioni/disequazioni e si definisce 
una funzione di "costo" di cui si cerca il max o il min e poi 
...vai col liscio!!
Altro metodo e' quello di riduzione, ovvero si riduce il problema ad
uno noto che si sa risolvere ede e' fatta, hai provato a ridurre
il tuo problema ad uno di accoppiamento massimo? Cioe' si hanno due insiemi
(turni e persone) e li si vuole assegnare con una relazione biunivoca che 
rispetti certi vincoli oppure lo si puo' ridurre ad uno di ordinamento sul
solo insieme delle persone pewr cui si parte dall'insieme che elenca 
le persone nell'ordine che vuoi e si permuta fino a soddisfare i vincoli..
Hope this helps
Yuri

Salve 
dato che i gruppi non hanno lo stesso numero di elementi dimmi un po' come 
prosegui dopo che hai esaurito il meno numeroso?
dato che A ha 5 elementi e D 4 C 10 e B 7 facendo come dici te che succede
quando hai esaurito A e C?
E' ovvio che i gruppi piu' numerosi devono avere una frequenza di turno piu'
alta. Le persone sono 26 ergo 
A avra' 5/26
B avra' 7/26 e cosi' via per cui non e' possibile usare una distribuzione
uniforme...
Cheers
Yuri

>e tutti coloro che hanno la pazienza di rispondermi..
Ho un po' pensato al Tuo problema e sono arrivato a una soluzione:
Ho associato ad ogni gruppo la cadenza con cui ogni elemento deve essere
estratto. Chiamiamolo KadenzaA, KadenzaB, ecc.
Ho iniziato l'algoritmo scegliendo un elemento dal gruppo che avrà cadenza
maggiore (ovvero, distanza tra due elemnti dello stesso gruppo minore).
In questo step ho attivato quattro contatori che mi tenessero conto della
distanza tra l'ultimo elemento uscito e quello attuale. DistA, DistB, ecc
Ad ogni passo successivo, sono andato ad estrarre, tra i gruppi non estratti
nell'ultimo passo, un elemnto appartenente al gruppo con la Dist che di
discostava meno dalla propria Kadenza.
Da una velocissima implementazione su excel sembra proprio funzionare.
Penso che l'idea sia migliorabile e se ho tempo cerco di metterla in C: lo faro'
come esercizio visto che devo sempre impararlo!
Fatemi sapere anche in privato.
ciao
There is NOSPAM in my signature ;-)

 discostava meno dalla propria Kadenza.
Non ho ben capito, ma ho appena letto il tuo messaggio e non ho avuto modo
di pensarci su (cosa che farò subito domani mattina...)
Grazie a tutti, per l'interessamento e i consigli......
Vi farò sapere gli sviluppi.
P.S.:
Se qualcuno avesse dei link a pagine trattanti Ricerca Operativa et similia
(italiane e non), gli sarei grato se me le segnalasse. Io ho cercato
Scheduling problem, come mi hanno suggerito, ma non ho trovato un molto.....

Scusate.... ho postato col nick sbagliato...

prosegui dopo che hai esaurito il meno numeroso?
Come ho già detto, quando arrivi all'ultimo uomo di un gruppo ricomici dal
primo, mi sembra elementare!
D'altra parte, se un gruppo è meno numeroso è logico che i suoi componenti
dovranno alternarsi più spesso degli altri, dato che il problema richiedeva
l'alternarsi dei gruppi.