Trovare il numero di permutazioni dove non compaiono gli stessi elementi adiacenti
Salve, innanzitutto mi scuso nel caso la categoria non dovesse essere corretta, ero indeciso se postarla qua o in "Statistica e probabilità", ma dal momento che si tratta di un quiz che ho trovato online e che per quanto si parli permutazioni non è detto che abbia qualcosa a che fare con la statistica, alla fine ho deciso di postare qua.
Il quesito è il seguente: data una sequenza di lettere, trovare il numero di permutazioni dove non compaiono lettere ripetute adiacenti.
Ad esempio per la sequenza AAB noi abbiamo:
AA'B -> non va bene
A'AB -> non va bene
ABA' -> va bene
A'BA -> va bene
BAA' -> non va bene
BA'A -> non va bene
(per evitare confusione ho distinto le due A chiamandole una A e una A', ma si tratta a tutti gli effetti della stessa lettera.)
In ogni modo in questo caso le permutazioni senza lettere ripetute consecutive sono due, cioè ABA' e A'BA.
Qui vi sono i risultati di altre sequenze, utile per testare:
aab: 2
aaa: 0
aabb: 8
abcdefa: 3600
abfdefa: 2640
aaabb: 12
Ora faccio una premessa, questo quesito online prevede la soluzione tramite un algoritmo in linguaggio Javascript, dunque è possibile che non ci sia nessuna formula elegante capace di trovare il numero desiderato e l'unico modo sensato in cui procedere sia la forza bruta (che io non amo), ma visto che ho provato a risolverlo matematicamente e ci sono andato molto vicino (di seguito posto la mia dimostrazione, manca solo un piccolo pezzo), ho pensato che valesse la pena chiedere a voi geni, anche solo per sapere se ho sbagliato qualcosa.
La mia soluzione parziale è questa:
Grazie.
Il quesito è il seguente: data una sequenza di lettere, trovare il numero di permutazioni dove non compaiono lettere ripetute adiacenti.
Ad esempio per la sequenza AAB noi abbiamo:
AA'B -> non va bene
A'AB -> non va bene
ABA' -> va bene
A'BA -> va bene
BAA' -> non va bene
BA'A -> non va bene
(per evitare confusione ho distinto le due A chiamandole una A e una A', ma si tratta a tutti gli effetti della stessa lettera.)
In ogni modo in questo caso le permutazioni senza lettere ripetute consecutive sono due, cioè ABA' e A'BA.
Qui vi sono i risultati di altre sequenze, utile per testare:
aab: 2
aaa: 0
aabb: 8
abcdefa: 3600
abfdefa: 2640
aaabb: 12
Ora faccio una premessa, questo quesito online prevede la soluzione tramite un algoritmo in linguaggio Javascript, dunque è possibile che non ci sia nessuna formula elegante capace di trovare il numero desiderato e l'unico modo sensato in cui procedere sia la forza bruta (che io non amo), ma visto che ho provato a risolverlo matematicamente e ci sono andato molto vicino (di seguito posto la mia dimostrazione, manca solo un piccolo pezzo), ho pensato che valesse la pena chiedere a voi geni, anche solo per sapere se ho sbagliato qualcosa.
La mia soluzione parziale è questa:
Grazie.
Risposte
Ho trovato qualcosa, ma non è in forma chiusa. Magari qualcuno riesce a trovare un'interpretazione combinatorica.
Ciao, stavo pensando un po' a questo problema, ti dispiacerebbe dirmi quante sono le permutazioni di AAAAABCDFFFF (cinque A, quattro F, tre lettere qualsiasi) tali che non compaiono lettere uguali adiacenti (considerando anche le permutazioni delle lettere ripetute, quindi assumendole distinguibile, come negli esempi che hai già postato)? Purtroppo non saprei dove trovare l'algoritmo necessario su internet per procurarmi gli esempi da solo

Al di là del fatto che permutazioni, in algebra, ha il significato di biiezione e quindi esclude il caso di ripetizioni, non capisco perché pensiate che sia più facile cercare il numero di stringhe con ripetizioni. Insomma una parola senza ripetizioni è semplicemente una parola in cui la \(\displaystyle (n+1) \)-esima lettera è diversa dalla \(\displaystyle n \)-esima lettera. Quindi se l'alfabeto è formato da \(\displaystyle m \) lettere e le parole sono di lunghezza \(\displaystyle s \) allora puoi scegliere la prima lettera tra \(\displaystyle m \) lettere diverse e le successive tra \(\displaystyle (m-1) \) lettere (tutte le lettere meno quella scelta precedentemente). Insomma il valori che cerchi è \(\displaystyle m(m-1)^{s-1} \) parole.
@vict85:
Mi sembra che il problema che tu stia risolvendo sia leggermente diverso. Tu supponi di non avere restrizioni sul numero di ogni lettera (quindi puoi sceglierne $m-1$ ogni volta), mentre il problema era di determinare il numero di permutazioni buone data una stringa di lettere.
Mi sembra che il problema che tu stia risolvendo sia leggermente diverso. Tu supponi di non avere restrizioni sul numero di ogni lettera (quindi puoi sceglierne $m-1$ ogni volta), mentre il problema era di determinare il numero di permutazioni buone data una stringa di lettere.
E' da un po' di giorni che penso a questo quesito.
Ritengo che la strada di cercare una formula generale non sia percorribile.
Troppe le variabili.
Fino alla sequenza AABBCC, riesco a trovare una soluzione.
Ma oltre non ci arrivo.
Penso che una sequenza AAAAABBBBCCCDDEFGH sia da delirio.....
Ritengo invece che con un programmino impostato in maniera diversa, la faccenda non sia troppo complicata.
A saper programmare, ovvio....
@Pachisi: con la tua formula quante ti risultano le stringhe diverse per AABBCC? Io ne ho trovate 240.
Ritengo che la strada di cercare una formula generale non sia percorribile.
Troppe le variabili.
Fino alla sequenza AABBCC, riesco a trovare una soluzione.
Ma oltre non ci arrivo.
Penso che una sequenza AAAAABBBBCCCDDEFGH sia da delirio.....
Ritengo invece che con un programmino impostato in maniera diversa, la faccenda non sia troppo complicata.
A saper programmare, ovvio....
@Pachisi: con la tua formula quante ti risultano le stringhe diverse per AABBCC? Io ne ho trovate 240.
A me viene 30, ma considero le due A, le due B, le due C uguali tra di loro. Distinte, viene 240.
Behh, anche a me viene 30.
Ma siccome lui "distingue" le lettere uguali $30*2!*2!*2! = 240$
Però oltre non vado....
Ma siccome lui "distingue" le lettere uguali $30*2!*2!*2! = 240$
Però oltre non vado....