Problema allegato a "Scontri equilibrati"

Chiamiamo costo di una sequenza di frecce il numero di frecce che bisogna girare affinché:
  • Ogni freccia partecipi a uno scontro
  • Ogni scontro sia equilibrato
Io scrivo su un foglio tutte le possibili sequenze di N frecce, una per ogni riga.
Poi, sul margine destro del foglio, accanto ad ogni sequenza, scrivo il suo costo.
Quanti costi diversi ci saranno scritti sul margine destro del foglio?

(La risposta va data in funzione di N)

E’ una domanda trabocchetto?
Dal momento che la risposta al problema è il costo minimo, direi che i valori diversi per rispondere al problema è uno :stuck_out_tongue:
Intendi i modi diversi per ottenere una sequenza equilibrata o i costi diversi per ottenere una sequenza equilibrata? (Specifico perché due modi diversi per ottenere una sequenza equilibrata possono avere lo stesso costo).

Ho aggiornato il post precedente rendendolo (spero) più chiaro :slight_smile:

Stavo scrivendo la soluzione, quando improvvisamente mi si è chiusa la finestra D:. Tempo un quarto d’ora e dovrei averla riscritta…

Teorema

Le possibili risposte sono N/2 + 2

Dimostrazione

La dimostrazione consta di 3 step.

Notazione

Sia F una sequenza di frecce. Indichiamo con F[i], con 0 <= i < N, la freccia alla i-esima posizione. Indichiamo con F[i..j] la sotto-sequenza che ha come estremi i e j (inclusi). I possibili valori per F[i] sono (>) e (<).

Step 1

Sia n un intero, e F una sequenza di lunghezza 2n. Se F[0] = (>) e F[2n - 1] = (<), allora è possibile rendere la sequenza F equilibrata con al più n - 1 mosse.
Dimostriamo questo fatto per induzione estesa.
Passo Base: n = 1.
L'unica possibile F è (><), ed è effettivamente possibile renderla equilibrata in 0 mosse.
Passo Induttivo: sapendo il fatto per 1, 2, ..., n, dimostriamolo per n + 1.
Esaminiamo tre casi.
  • Esiste 0 < i < n tale che F[2i - 1] = (<). Allora faccio le seguenti cose:
    • con al più una mossa faccio sì che F[2i] = (>)
    • con al più i - 1 mosse rendo F[0..2i - 1] equilibrata (posso farlo per ipotesi induttiva)
    • con al più n - i - 1 mosse rendo F[2i..2n - 1] equilibrata (posso farlo per ipotesi induttiva)
    In questo modo, usando al più n - 1 mosse, ho reso F equilibrata.
  • Esiste 0 < i < n tale che F[2i] = (>). Con un ragionamento analogo al caso precedente, riesco a rendere F equilibrata usando al più n - 1 mosse.
  • Se nessuno dei precedenti casi è verificato, ciò significa che F = (>><><><><>...<><><><><<). Si verifica facilmente che è possibile trasformare F in (>>>>>>>>>>...<<<<<<<<<<) con al più n - 1 mosse, rendendola di fatto equilibrata. ■
Notiamo che, se F è una sequenza di lunghezza N, con al più 2 mosse possiamo far sì che F[0] = (>) e F[N] = (<). A questo punto, ponendo n = N/2, il fatto appena dimostrato ci dice che possiamo rendere la "nuova" F equilibrata in al più N/2 - 1 mosse; in totale, una qualunque sequenza può essere resa equilibrata con al più N/2 - 1 + 2 = N/2 + 1 mosse.

Step 2

D'altro canto, esiste sempre almeno una sequenza di lunghezza N per cui sono necessarie N/2 + 1 mosse per renderla equilibrata. Consideriamo ad esempio la sequenza (<>>>>>...>>>>>>): dobbiamo sicuramente usare 1 mossa per girare la prima freccia; inoltre, siccome dobbiamo avere esattamente N/2 frecce del tipo (<), dobbiamo girarne altre N/2, per un totale di N/2 + 1 mosse.

Step 3

Notiamo infine che, se esiste una sequenza F per cui sono necessarie almeno M mosse, allora esiste una sequenza G per cui ne sono necessarie almeno M - 1. Infatti, sia F' la sequenza equilibrata che può essere ottenuta da F; sia x tale che F'[x] =/= F[x]; allora basta scegliere G uguale a F, eccezion fatta per G[x], che è uguale a F'[x].

Queste tre osservazioni combinate ci dicono che esistono sequenze di lunghezza N per cui sono necessarie 0, 1, 2, ..., N/2 + 1 mosse, ma non ne esistono per cui sono necessarie più di N/2 + 1 mosse. Pertanto, le possibili risposte al problema sono N/2 + 2.

Well done!

Stavo scrivendo la soluzione, quando improvvisamente mi si è chiusa la finestra D:. Tempo un quarto d'ora e dovrei averla riscritta...

Delfad0r

Ouch mi dispiace, è un bug noto... Comunque c'è un modo di recuperare ciò che è stato scritto (prima di premere "Rispondi", perché quando lo premi si resetta la textarea).