Formula calcolo permutazioni/disposizioni (NON SEMPLICE!)

danicotra
Salve a tutti!
Spero di trovare in questo forum qualcuno che possa rispondere alla mia domanda...

Innanzitutto, scusate se non utilizzerò terminologie appropriate, non sono un "addetto ai lavori"...
vengo subito al dunque, l'argomento è permutazioni (o disposizioni):

Vorrei sapere quale è la formula per calcolare in anticipo
(senza doverle scrivere tutte e contarle)
data una parola di n lettere il numero di tutte le possibili parole
(anagrammi con o senza senso)
di lunghezza k (con 1 < k <= n) che posso ottenere ammettendo che
la parola di partenza potrebbe anche avere delle lettere che si ripetono più di una volta.


ESEMPIO:
Parola: MIELE (n=5)
= (simboli => cardinalità)
'M' => 1
'I' => 1
'E' => 2
'L' => 1

Ora vogliamo sapere quante parole di 2 lettere (k=2) si possono ottenere:
(elenco soluzioni)
1: 'MI'
2: 'ME'
3: 'ML'
4: 'IM'
5: 'IE'
6: 'IL'
7: 'EM'
8: 'EI'
9: 'EE'
10: 'EL'
11: 'LM'
12: 'LI'
13: 'LE'
(ottenute totali = 13)

Ora, io so che:
in caso di disposizioni semplici di n elementi senza duplicati su k posizioni la formula è:

$ D(n,k) = (n!) / ((n-k)!) $

e che le permutazioni di n elementi con elementi che si possono ripetere più di una volta è

Permutazioni = $ (n!) / (prod_(i = 1)^(n) (cardinalità_i) !) $

pensavo che bastasse fare un mix di queste due per ottenere ciò che voglio

(formula errata = $ (n!) / [(prod_(i = 1)^(n) (cardinalità_i) !) * ((n-k)!) ] $)

MA in realtà non è affatto così!
(Infatti, usando quella formula otterrei 5! / [(1! * 1! * 2! * 1!) * (5-2)!] = 120 / 12 = 10
... E NON 13 CHE INVECE SAREBBE IL RISULTATO GIUSTO! )

Allora quale è LA FORMULA GIUSTA ?

GRAZIE IN ANTICIPO !
D.N.

Risposte
GlipCiksetyBlok
Ci provo:

Abbiamo detto che le lettere disponibile dalla parola MIELE sono 4, infatti la E ripetuta la conteremo solo una volta

M --> a
I --> b
E --> c
L --> d

quindi n=4. Dobbiamo considerare solo due lettere per raggruppamento, cioè ogni raggruppamento deve contenere 2 lettere, quindi k=2.
L'ordine nei diversi raggruppamenti conta, infatti ogni raggruppamento differisce dall'altro o per ordine delle lettere (EI diverso da IE), o per elementi compresi (EI diverso da LI).
La formula sarà quindi una disposizione con ripetizione di classe k, e quindi

D’n,k = nk (n elevato alla k)

quindi

4 alla 2 = 16

1: 'MI'
2: 'ME'
3: 'ML'
4: 'IM'
5: 'IE'
6: 'IL'
7: 'EM'
8: 'EI'
9: 'EE'
10: 'EL'
11: 'LM'
12: 'LI'
13: 'LE'
14: 'MM'
15: 'LL'
16: 'II'

Spero di esserti stato utile, ciao :)

danicotra
Ciao GlipCiksetyBlok.
ti ringrazio per aver provato ad aiutarmi...
Purtroppo, però, la formula non è corretta per quello che stiamo cercando.
Questo perchè, in realtà, quello che otterremmo scrivendo le possibili combinazioni (le 13 che ho scritto io) di lettere secondo i miei requisiti iniziali
NON COINCIDE con una disposizione con ripetizioni di m elementi (dove m = n - elementi ripetuti più di una volta) su k posizioni come hai fatto tu
(ci avevo già pensato e mi ero accorto che non era quello che faceva al caso mio... purtroppo non è così semplice)
infatti le combinazioni:
14: 'MM'
15: 'LL'
16: 'II'
non sono valide perchè non rientrano nell'insieme delle combinazioni possibili. Vanno infatti in conflitto con questa regola (che forse non avevo espresso in maniera esplicita):
[si devono usare (tutte e) solo le lettere che formano la parola iniziale] IN NUMERO PARI O INFERIORE AL NUMERO DI VOLTE CHE TALI LETTERE COMPAIONO NELLA PAROLA INIZIALE.
In pratica, visto che in 'MIELE' abbiamo una sola M una sola I una sola L, 'MM', 'LL' ed 'II' non possono essere ottenute.
Dal momento che abbiamo due 'E', possiamo, invece, ottenere 'EE'

...e quindi la "sfida" per la ricerca della formula esatta continua... 8-) :)

DajeForte
Guarda io ti faccio vedere come lo si fa nel tuo caso (MIELE che è molto semplice); per una generalizzazione non dovrebbe essere impossibile ma neanche troppo facile.

Nel caso di MIELE hai 3 lettere singole ed una doppia. Scegliendone due hai 10 possibili uscite (senza ordinamento). Ora 3 di queste combinazioni sono formate da parole senza la E, 6 di queste sono formate da una E ed un'altra lettera, una di queste dalle due E.

Nel primo caso hai tre letere distinte e le permutazioni sono $3! =6$, nel secondo caso idem, nel terzo hai due uguali e quindi una sola.
Le sommi ed ottieni 13.

Adesso prova a trovare le combinazioni con 3 lettere e poi con 4.
Trovato quello cerca di estendere il tuo ragionamento ad un caso leggermente più generale e così via

danicotra
Ciao DajeForte...

consideriamo che ho fatto un caso semplice: parola corta (5 lettere) in cui solo una lettera è ripetuta (e una sola volta) e con k = 2 posizioni
(è abbastanza facile scrivere a priori tutte le possibili combinazioni di lettere per contarle)...

Osservando, avevo provato a ragionare anche in quel modo (3 + 3 + 4 + 3 oppure 4 * 3 + 1 --> numero di lettere ripetute) ciò non toglie che (io, per lo meno) non sono ancora riuscito a desumere una formula generale da questo che possa essere applicata a tutti i casi e mi ritorni il numero esatto di combinazioni di lettere ottenibile.

P.S.
... e ripeto, ho preso un caso tuttosommato 'semplice' (direi basilare quasi)... prova ad immaginare il caso di 'CARROARMATO' su k = 4 o 5 posizioni... :shock: :?

... eppure una formula ci deve essere, no? (la speranza è l'ultima a morire... :wink: )

DajeForte
Ci penserò un po' su ma ora non ho moto tempo quindi come ti ho detto ti lascio con la mia idea cioè quella di capire come contare le possibili strutture di una parola di k lettere da una di n.

Secondo me una formula generale non so se la trovi perchè ci sono un po' di variabili che entrano in gioco tipo il numero di volte che una lettera si ripete, il massimo di questo eccetra. Secondo me riesci a trovare un algoritmo, poi puoi scrivere un programma e controllare se funziona.

Comunque: CARROARMATO

Questa parola ha undici lettere di cui sei distinte, che sono (C A R O M T) che si ripetono rispettivamente (1 3 3 2 1 1) volte.
Sceglgo k=4 (per 5 il ragionamento dovrebbe essere analogo).

Come si possono discriminare queste k lettere?
Possono essere tre uguali ed una diversa.
Queste sono (AAAd_1) o (RRRd_1) (con d_1 intendo una generica lettera delle 5 rimanenti, dalle 6 distinte, meno quella della terna).
Queste le puoi permutare in $(4!)/(3!\ 1!)=4$

Possono essere due uguali.
In questo caso ti conviene distinguere il caso di due coppie o una coppia e due diverse.
Nel primo caso ne hai 3 e generano $(4!)/(2!\ 2!)=6$ permutazioni.
Nel secondo hai (AAd_1d_2) (RRd_1d_2) (OOd_1d_2) dove le d_1 e d_2 le scegli come $((5),(2))$ ovvero dalle cinque rimanenti ne prendi 2 (senza ordine e senza ripetizione) e le permuti $(4!)/(2!\ 1!\ 1!)=12$.

Ti rimane il caso tutte distinte che le scegli come $((6),(4))$ e permuti $4! =24$.


Prova!

danicotra
"DajeForte":
Ci penserò un po' su ma ora non ho moto tempo quindi come ti ho detto ti lascio con la mia idea cioè quella di capire come contare le possibili strutture di una parola di k lettere da una di n.


... pensavo di aver capito cosa intendevi prima ma adesso non ne sono più molto convinto... :? (leggimi sotto)

"DajeForte":
Secondo me una formula generale non so se la trovi perchè ci sono un po' di variabili che entrano in gioco tipo il numero di volte che una lettera si ripete, il massimo di questo eccetra. Secondo me riesci a trovare un algoritmo, poi puoi scrivere un programma e controllare se funziona.


Mi accontenterei anche se si riuscisse a desumere un algoritmo (composizione di più formule) anzichè una semplice formula...
(anche se immagino che se si trovasse un algoritmo come composizione di più formule automaticamente avremmo anche la possibilità di ottenere una unica formula) :?

"DajeForte":

Comunque: CARROARMATO

Questa parola ha undici lettere di cui sei distinte, che sono (C A R O M T) che si ripetono rispettivamente (1 3 3 2 1 1) volte.
Sceglgo k=4 (per 5 il ragionamento dovrebbe essere analogo).


ok fin qui tutto chiaro :)

"DajeForte":
Come si possono discriminare queste k lettere?
Possono essere tre uguali ed una diversa.
Queste sono (AAAd_1) o (RRRd_1) (con d_1 intendo una generica lettera delle 5 rimanenti, dalle 6 distinte, meno quella della terna).
Queste le puoi permutare in $(4!)/(3!\ 1!)=4$
Possono essere due uguali.


...qui già inizio a seguirti meno... :?
(chiarissimo cosa intendi per d_1, ok)
presumo tu quel calcolo lo debba moltiplicare per 2 (uno per la A e uno per la R) quando dici "Possono essere due uguali", giusto?
ALLORA c'è già un errore sin da subito: 4 non può andar bene, dovrebbe risultare 5 :roll:
es. con la A (per la R si moltiplica per 2 come dicevamo)

1: AAAC
2: AAAR
3: AAAO
4: AAAM
5: AAAT

"DajeForte":

In questo caso ti conviene distinguere il caso di due coppie o una coppia e due diverse.
Nel primo caso ne hai 3 e generano $(4!)/(2!\ 2!)=6$ permutazioni.
Nel secondo hai (AAd_1d_2) (RRd_1d_2) (OOd_1d_2) dove le d_1 e d_2 le scegli come $((5),(2))$ ovvero dalle cinque rimanenti ne prendi 2 (senza ordine e senza ripetizione) e le permuti $(4!)/(2!\ 1!\ 1!)=12$.

Ti rimane il caso tutte distinte che le scegli come $((6),(4))$ e permuti $4! =24$.
Prova!


il resto del ragionamento non mi è proprio chiaro ma intuisco, in base a quanto detto per A ed R, che sia analogo...
non mi metto a scrivere altre combinazioni di lettere ma ti faccio invece una domanda:
il totale come andrebbe calcolato secondo te?
4*2 + 6*3 + 12*3 + 24 = 86? :? :shock:
... SONO SICURO CHE POSSIAMO COMPORRE ABBONDANTEMENTE AL DI SOPRA DEI 100 ANAGRAMMI CON O SENZA SENSO!
QUINDI, O IO NON HO CAPITO COME INTENDI FARE I CALCOLI O NON CI SIAMO, IL SISTEMA IDEATO NON FUNZIONA :cry:

DajeForte
No io no ti hodato il totale: lo devi fare te.

Nel primo punto è ovvio che lodevi moltiplicare per 5 perchè hai le quartine da te elencate e poi per due perchè A ed R giocano lo stesso ruolo
Quindi devi fare 10*4=40.
il 4 invece signicica che tu hai scelto A o R e d_1 e devi contare (suppongo A)
AAAd_1
AAd_1A
Ad_1AA
d_1AAA

lo stesso per gli altri

danicotra
"DajeForte":
No io no ti hodato il totale: lo devi fare te.

Nel primo punto è ovvio che lodevi moltiplicare per 5 perchè hai le quartine da te elencate e poi per due perchè A ed R giocano lo stesso ruolo
Quindi devi fare 10*4=40.
il 4 invece signicica che tu hai scelto A o R e d_1 e devi contare (suppongo A)
AAAd_1
AAd_1A
Ad_1AA
d_1AAA

lo stesso per gli altri


... ok, brancolo nel buio... :(
non riesco a capire come intendi fare i calcoli... (come li descrivi sembrerebbe che innanzitutto individui delle formule di partenza ma non capisco come intendi metterle assieme dopo... (un po' per pigrizia in questo momento, confesso, ma se ci fossero i vari passaggi riuscirei a seguirti meglio)

Riesci a fare un esempio completo dei vari passaggi (e magari dettagliato nelle spiegazioni, se non è approfittare troppo :wink: ) quando hai 5 (?) minuti di tempo... Anche semplificando in "CARROMAT" invece di "CARROARMATO" se fai prima.
Grazie in anticipo.

DajeForte
Aora te lo provo a ri spiegare al volo; poi dopo o domani sbattici un po' la testa.
Magari è sbagliati, ma non mi pare.

Siamo partiti dalla parola scomposta nelle undici lettere (6 distinte).
Fino qui OK.

Ora sceglieremo una parola di k lettere dalle undici.

Questa potrà avere:
4 lettere uguali; (AAAA)
3 uguali e una diversa; (AAAC)
2 uguali in maniera da formare una coppia (AAOO)
2 uguali e le altre due diverse (sia tra di loro che da quella che forma la coppia) (AACO)
tutte duverse (CARO)

Fino a qua ci siamo?

Adesso il primo caso è impossibile.

Il secondo saràuna parola formata da tre lettere uguali ed una diversa.
Le tre uguali possono essere solo A o R. Siccome avranno lo stesso numero di parole associato le contiamo per una sola e ci portiamo appresso un 2 che motiplicheremo.
Prendiamo la A. Questa ci da 3 lettere a noi ne serve un'altra. Questa la scegliamo tra le 5 rimanenti; anche la R va bene per fare una parola (esempio AARA).
Abbiamo quindi un 5 che dovremo moltiplicare.
Supponiamo che questa lettera sia la C.
fatto questo hai la quaterna (AAAC). Ora quante parole puoi costruire con questa quaterna? $(4!)/(3!\ 1!)=4$ e questo è quello che avevi scritto te (coefficiente multinomiale).
motiplicando tutto hai $2*5*4=40$ che sono dunque le parole che hanno 3 lettere uguali.

2 coppie.
Quali sono le lettere che ti danno coppia? Sono 3 (A R O) di queste ne devi scegliere 2 che ti formano le due coppie e sono $((3),(2))=3$. Scelte le due lettere distinte che ti formano la coppia (es AARR) le devi permutare per ottenere tutte le parole che (AARR) compone $(4!)/(2!\ 2!)=6$
Moltiplichi ed ottieni $6*3=18$.

2 uguali e le altre diverse.
Qua devi scegliere la lettera che ti crea la coppia e le due diverse.
Quelle che ti danno coppia sono 3 (fattore moltiplicativo) chiamala L=A o R o O
scelta L devi scegliere le altre due. devono essere diverse da L e diverse tra loro ne devi cioè scegliere 2 dalle 5 rimanenti $((5),(2))=10$
Scelta anche queste hai la quaterna (LLd_1d_2) che permuti in $(4!)/(2!\ 1!\ 1!)=12$
Ottieni dunque $3*10*12=360$.

Infine ti rimane quattro diverse (d_1d_2d_3d_4) che scegli come $((6),(4))=15$
Fatto questo le permuti $4! =24$
Moltiplichi ed ottieni $24*15=360$.

Ora sommi tutto

$40+18+360+360=778$

danicotra
Dajeforte... grazie, sei un grande! 8-)
Ora tutto è molto più chiaro ... e anche il calcolo è di sicuro giusto! :D
"DajeForte":
$40+18+360+360=778$

Ora posso partire dal tuo esempio e cercare di desumere un algoritmo generico... e magari vedere, da questo, se si riesce a desumere anche una formula...
:-D Grazie, ciao!

DajeForte
Prego figurati.
Come fai a sapere che è giusto?
Hai scrittoun programma?

danicotra
"DajeForte":
Prego figurati.
Come fai a sapere che è giusto?
Hai scrittoun programma?


Yes! Mi era più facile fare quello che trovare una formula per calcolarlo a priori...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.