Winkler's pizza picking problem:
- Una torta di pizza circolare a
n
fette, in cui la fettai
ha un'areaS_i
, ovvero l'area è diversa per ogni pezzo di torta. - I mangiatori Alice e Bob a turno raccolgono le fette, ma è scortese creare più spazi vuoti nella torta (consideralo non permesso).
- Pertanto, ogni mangiatore è limitato a prendere una delle due fette adiacenti alla regione aperta. Alice inizia per prima, ed entrambi i mangiatori cercano più torta possibile.
In che modo un algoritmo di programmazione dinamica determinerebbe quanta torta mangia Alice se sia Alice che Bob giocano perfettamente per massimizzare il consumo di pizza?
La mia comprensione:
In un problema di DP generale, andiamo avanti con la ricerca di sotto-problemi che possono essere visualizzati usando l'albero di ricorsione o, più strettamente, usando un DAG. Qui, non sto trovando alcun indizio per trovare i sotto-problemi qui.
Qui, per un dato set di S, dobbiamo massimizzare l'area delle fette consumate da Alice. Ciò dipenderà dalla scelta di una permutazione delle fette di Pizza su (n-1) permutazioni. Scegliere una sezione massima dell'area tra due opzioni disponibili in ogni n \ 2 giri che Alice ottiene ci darà l'area totale della sezione per una permutazione. Dobbiamo trovare un'area di taglio per tutte queste permutazioni. E poi il massimo di questi.
Qualcuno può darmi una mano su come andare avanti?