2013-05-14 5 views
12

Non sono sicuro se questa è una domanda appropriata per SO, ma qui va:algoritmo per determinare la più alta e la più bassa possibile posizione finale di una squadra in un campionato

Sono interessato nella logica richiesta necessaria per essere in grado di calcola la posizione di arrivo più alta e più bassa possibile di una squadra in una lega.

Prendi ad esempio la Premier League inglese. Ci sono 20 squadre in questo campionato. Ogni squadra ospita ogni altra squadra del campionato una volta a casa. Ciò significa che ogni squadra si gioca due volte (una volta a casa e una volta) e quindi giocherà 38 partite in una stagione.

Una partita può terminare in uno dei tre risultati: una vittoria in casa, un pareggio o una vittoria in trasferta. Alle squadre vengono assegnati 3 punti per una vittoria e un punto per l'estrazione. Ciò significa che il numero massimo di punti che una squadra può ottenere in una singola stagione è 114 (38 * 3).

La parte inferiore della tabella di Premier League di quest'anno attualmente appare così (posizione, nome della squadra, Giochi effettuati, di gol [gol segnati - gol subiti], punti):

Premier League as at 14/5/13

voglio conoscere le posizioni di finitura più alte e più basse possibili di Newcastle.

Sarebbe razionale pensare che posizione finale più bassa di Newcastle in questa stagione sarebbe 18 °, come se Newcastle perdono il loro gioco rimanente, e tutte le squadre sotto di loro (ad eccezione del QPR e Reading che non può prendere Newcastle) vinceranno le loro partite, quindi il loro punteggio totale sarà superiore a quello di Newcastle (il Wigan sarà lo stesso, ma il fatto che avranno avuto due vittorie e il Newcastle avrà una perdita significherà che Wigan avrà una Differenza meccanismo per separare le squadre che si trovano su punti uguali]).

Tuttavia- (e questo è il bit complicato) - L'ultima partita della stagione di Aston Villa è contro Wigan. Per questo motivo, è impossibile per entrambe le squadre ottenere il punteggio massimo.

Quindi la mia domanda è- qual è il modo migliore per determinare con precisione il posto di arrivo più alto e più basso possibile di una data squadra in una lega, tenendo in considerazione i rimanenti incontri delle squadre avversarie? Dovrei solo guardare ogni dispositivo rimanente e calcolare ogni permutazione? O c'è un modo più intelligente per fare questo?

+2

Per una forza bruta tonda dovrebbe gestirlo bene, poiché ci sono solo 3^10 risultati possibili. E 'facile vedere, tuttavia, che presto ti sfuggirà di mano se proverai a farlo per più round. – amit

+0

Sì, un round è abbastanza semplice, mi chiedevo se ci fosse un modo più intelligente per farlo comunque. –

+0

In realtà, ci sono risultati leggermente meno possibili, come se volessimo conoscere la posizione più alta o più bassa di Newcastle, quindi dovremmo sempre dare loro una vittoria o una perdita rispettivamente –

risposta

4

È possibile ridurre il numero di combinazioni ignorando quelle irrilevanti.

I passaggi seguenti servono per trovare la posizione più bassa possibile. Trovare la posizione più alta possibile sarebbe gestito in modo simile.

Se si considera la posizione più bassa possibile, le squadre in vantaggio sono irrilevanti.

Anche le squadre che non possono ottenere abbastanza punti per raggiungere Newcastle nelle restanti partite sono irrilevanti.

Per le squadre rimanenti, considera ogni partita contro una squadra irrilevante come vinta.

Il passaggio precedente può rendere irrilevanti altre squadre. In tal caso, ripetere il passaggio precedente!

Brute-force i giochi rimanenti, ovvero i giochi in cui le squadre pertinenti si affrontano.