“
Abbiamo visto come fare per calcolare quanti percorsi di minima lunghezza si possono fare su una griglia
n ×
n, se si vuole andare da un vertice al vertice opposto”.
“Sì, è come calcolare gli anagrammi di una parola composta da tante lettere quante sono i passi che servono per fare il percorso, distinguendo tra passi verso destra e passi verso l'alto”.
“Bene, ora aggiungiamo una complicazione: partiamo dall'angolo in basso a sinistra, arriviamo all'angolo in alto a destra, e dobbiamo sempre stare al di sotto della diagonale del quadrato”.
“Uhm, fammi capire bene”.
“Ecco, per esempio questo è un percorso che non va bene:”.
“Ah, capisco, il terzo passo ci fa passare dall'altra parte della diagonale. Il secondo però arriva sulla diagonale, va bene lo stesso?”.
“Sì, l'importante è non andare al di là: possiamo stare sotto o, al massimo, toccare la diagonale”.
“Ok, quindi col giochino degli anagrammi si tratta di, uhm, considerare solo parole nelle quali le D non possono essere seguite da troppe A. Ehm, mi rendo conto di non averlo detto in maniera proprio precisa”.
“Infatti non è facile. Puoi dire che, presa una parola, ogni segmento iniziale non contiene più A che D, lasciando al lettore il compito di definire il concetto di
segmento iniziale, anche se è abbastanza intuitivo”.
“Vabbé, mi pare abbastanza chiaro. Quello che non è chiaro è come fare il calcolo, ci sono troppe possibilità per analizzarle tutte”.
“Effettivamente è complicato. Ma, come ti dicevo, ho capito una dimostrazione che mi permette di ricordare una delle tante formule per il calcolo di questi possibili percorsi obbligati”.
“Interessante”.
“Provo a spiegarti, procedendo pian piano. Prima di tutto, dato un certo percorso
P, come quello in figura, tanto per fissare le idee, chiamiamo
elevazione di P il numero
e(
P) uguale al numero di tratti verticali che si trovano al di sopra della diagonale. I tratti possono anche partire dalla diagonale stessa”.
“Vediamo, fammi contare: nella figura che hai disegnato ci sono due tratti verticali, giusto?”.
“Giusto. In questo percorso,
e(
P) = 2”.
“Fin qua ci sono”.
“Ora definiamo una trasformazione che, dato un certo percorso, ne produce uno nuovo. Questa è un po' difficile da spiegare, quindi vado per passi. Ci sei?”.
“Vai”.
“Allora, per prima cosa seguiamo il percorso, partendo dal punto iniziale, fino a che non oltrepassa la diagonale”.
“Nel nostro esempio lo fa al terzo passo”.
“Esatto. Da questo momento andiamo avanti fino a identificare l'ultimo tratto, che sarà necessariamente orizzontale, che sta nella zona proibita. L'ultimo passo prima del primo rientro, insomma”.
“Perché è necessariamente orizzontale?”.
“Beh, perché un passo verticale si allontana dalla diagonale, non si può mai avvicinare”.
“Ah, ho capito, ok”.
“Bene, hai capito quindi qual è il passo che ci interessa, nel nostro esempio?”.
“Mi pare di sì, lo coloro di rosso:”.
“Ok. Ora spezziamo in tre parti il nostro percorso. La parte successiva alla freccia rossa viene spostata e messa all'inizio”.
“La devo proprio staccare?”.
“Sì, stiamo costruendo una nuova figura. La parte dopo la freccia rossa diventa la prima. Disegnata quella, si mette la freccia rossa, e successivamente tutta la parte precedente la freccia rossa. In sostanza, la parte in alto a destra va in basso a sinistra, quella in basso a sinistra va in alto a destra, e la freccia rossa le congiunge”.
“Provo, viene una cosa del genere?”.
“Esatto!”.
“La freccia rossa però non è rimasta ferma”.
“No, no, non doveva. La freccia rossa continua a separare i due pezzi, però si sposta. Ma prova a calcolare l'elevazione di questa nuova figura”.
“C'è una sola freccia verticale al di sopra della diagonale, ora l'elevazione è uguale a 1, quindi è diminuita”.
“Perfetto”.
“Succede sempre così?”.
“Prova a pensarci. La trasformazione che abbiamo definito spezza la figura in due parti. Sulla parte superiore non sappiamo niente, se non che essa parte dalla diagonale e che la sua ultima freccia termina anch'essa sulla diagonale, perché l'arrivo è fisso: è sempre il punto in alto a destra”.
“Giusto”.
“Quindi, facendo lo scambio dei due pezzi di percorso, siamo sicuri del fatto che il pezzo in alto a destra, che ora è finito in basso a sinistra, parte da un punto della diagonale e finisce in un punto della diagonale”.
“Vero”.
“Poi attacchiamo la freccia rossa, che ci fa fare uno spostamento verso destra”.
“Vero anche questo. Poi attacchiamo la prima parte, che è quella che avevamo analizzato in precedenza, e che sicuramente usciva dalla diagonale”.
“Esatto. E, spostandola di un passo verso destra, otteniamo come risultato il fatto che la prima freccia che usciva dalla diagonale ora sta sotto”.
“Ah! Ecco perché l'elevazione diminuisce sempre di uno! Perché in pratica riusciamo a fare rientrare una freccia. E una soltanto, perché il passo a destra è di un solo segmentino”.
“Benissimo. Ecco quindi che la nostra trasformazione, ogni volta che viene applicata, fa diminuire l'elevazione di 1”.
“Ma quindi se la applico una seconda volta, dovrei ottenere un percorso di quelli cercati, cioè un percorso di quelli che stanno sempre sotto la diagonale”.
“Certo. Prova! Prima di tutto, identifica il punto in cui spezzare”.
“Vediamo, devo seguire il percorso fino a che non esco, e poi devo colorare di rosso l'ultimo segmento orizzontale prima del rientro sulla diagonale. Mi viene una cosa del genere però:”.
“Va benissimo”.
“Ma il segmento rosso è l'ultimo!”.
“Non importa, applica la regola, funziona anche in questo caso”.
“Boh, allora, dovrei prendere il pezzo di percorso che segue la freccia rossa, ma non c'è”.
“Bene, mettilo al primo posto”.
“Ma non c'è!”.
“Quindi non metti niente, rimani fermo nell'angolo in basso a sinistra”.
“Ok. Poi devo mettere la freccia rossa, e poi la parte precedente, cioè tutto”.
“Quasi tutto, no? La freccia rossa l'hai già messa”.
“Quasi tutto, sì. Ecco qua: funziona!”.
“Come vedi l'elevazione è diventata uguale a 0, e quindi hai ottenuto uno dei percorsi validi”.
“Ok, fin qua ci sono”.
“Ora andiamo all'indietro. Dato un percorso, questo può essere sempre pensato come ottenuto dalla trasformazione di un altro percorso avente elevazione aumentata di uno?”.
“Ah, non ne ho idea”.
“Pensa al procedimento fatto e prova a vedere se riesci a invertirlo”.
“Allora, fino ad adesso abbiamo cercato il primo segmento orizzontale che termina sulla diagonale”.
“Giustissimo”.
“Che poi, nella trasformazione, diventa l'ultimo segmento orizzontale che parte dalla diagonale”.
“Benissimo, hai capito come funziona”.
“Ah, quindi per invertire il processo devo prendere l'ultimo segmento orizzontale che parte dalla diagonale e fare il contrario di quello che facevo prima”.
“Che è poi la stessa cosa, cioè devi invertire la parte sopra con la parte sotto”.
“Vediamo se ho capito. Riprendo la prima figura, quella con elevazione 2, e identifico l'ultimo segmento orizzontale che parte dalla diagonale:”.
“Bene”.
“Adesso inverto la parte superiore con l'inferiore. Vediamo, ho solo una freccia in su, poi metto la freccia rossa, poi tutto il resto. Ecco qua:”.
“Benissimo. Ti convince il fatto che questo percorso, di elevazione 3, diventa quello da cui siamo partiti applicando la solita trasformazione?”.
“Sì, funziona. Spezzo in corrispondenza della freccia rossa, e torno indietro. Ok, ci sono”.
“Quindi, se continuiamo ad andare indietro, possiamo arrivare ad avere un percorso con elevazione 5, sei d'accordo?”.
“Sì”.
“E quindi, riassumendo, il numero di percorsi con elevazione 5 è uguale al numero di percorsi con elevazione 4, al numero di percorsi con elevazione 3, e così via fino all'elevazione 0”.
“Aspetta, aspetta, perché sono uguali?”.
“Perché a ogni percorso di elevazione 0 ne corrisponde uno e uno solo di elevazione 1, e a ogni percorso di elevazione 1 ne corrisponde uno e uno solo di elevazione 2, e così via. Abbiamo detto che la nostra trasformazione è invertibile, cioè si può andare avanti e indietro, aumentando o diminuendo l'elevazione, in un unico modo”.
“Ok, ho capito”.
“Quindi, come concludiamo?”.
“Eh, se il numero di percorsi aventi una certa elevazione è sempre lo stesso, e se conoscessi quante elevazioni posso avere…”.
“Ma lo sai!”.
“Uh?”.
“Eh, al massimo di quanti passi puoi salire?”.
“Ah, ma certo, se la scacchiera è 5 × 5 al massimo posso salire di 5 passi. In una scacchiera
n ×
n l'elevazione massima è
n”.
“E la minima?”.
“Zero”.
“E quindi quante elevazioni puoi avere?”.
“In tutto sono
n + 1”.
“Bene, hai
n + 1 gruppi, contenenti lo stesso numero di elementi, aventi elevazioni diverse. A te interessano soltanto quei percorsi aventi elevazione 0, quindi come puoi calcolarli?”.
“Prendo tutti i possibili percorsi e li divido per
n + 1, facile”.
“Ed ecco quindi la formula:”.
“Uhh, questi sono i numeri di Catalan?”.
“Esatto”.
“Quindi nel nostro caso il numero di percorsi che si possono ottenere su una griglia di lato 5, in modo tale da stare sempre sotto la diagonale, sono… fammi fare i calcoli… 42”.
“Che è sempre un bel numero”.
“…”.
“Sono un po' tanti per disegnarli tutti, però. Ti faccio invece vedere tutta la casistica per una griglia più semplice, la 3 × 3”.
“Ok. Aspetta che faccio i conti… dovrebbe risultare 5”.
“Giusto. Primo gruppo, da elevazione 3 a elevazione 0. Ogni percorso si ottiene da quello che gli sta sopra applicando la nostra trasformazione. Naturalmente l'unico elemento accettabile è quello più in basso, quello con elevazione zero”.
“Ok, ho capito”.
“Secondo gruppo:”.
“Ok, ho controllato, anche qua tutto bene”.
“Terzo gruppo:”.
“Bene”.
“Quarto gruppo:”.
“Giusto anche questo, vai con l'ultimo”.
“Quinto e ultimo gruppo:”.
“Ahh, molto bene, ho capito. Ogni percorso con elevazione 0 è legato a un particolare percorso con elevazione 1, uno con elevazione 2, e così via”.
“Esattamente. Con
n = 3 ci sono 6! / (3! × 3!) possibili percorsi, cioè 20. Li abbiamo raggruppati in cinque gruppi da 4 elementi ciascuno, un elemento per ogni possibile valore dell'elevazione”.
“Benissimo”.
“Sarebbe bello un disegno unico con una griglia di percorsi”.
“Sarebbe bello, ma il margine di questa pagina è troppo stretto per contenerla”.
“…”.
Grazie a
Paul Gaborit di stackexchange per il codice LaTeX usato per tutte le figure. Senza sarei diventato matto.