You are on page 1of 8

PERMUTAZIONI CIRCOLARI

Equazione esplicita per enumerare le


permutazioni circolari di un multiset
Massimo Pierini
maxpierini@icloud.com
23 ottobre 2014

Equazione esplicita

Sia dato un insieme Y di n elementi distinti yi , ciascuno ripetuto ai volte, con


i = 1...n
Y := {y1a1 ...ynan }

(1)

la cardinalit dellinsieme |Y | sar dunque:


|Y | =

n
X

(2)

ai

i=1

Questo insieme definibile come un multiset.


Indichiamo in apice la cardinalit dellinsieme: Y |Y |
Cerchiamo il Massimo Comun Divisore tra |Y | e tutti i ai , con i = 1...n
k = M.C.D.(|Y |, a1 , a2 , ..., an )

(3)

Y |Y | = {y1kx1 , y2kx2 , ..., ynkxn }

(4)

Per ciascun ai si pu dire che, ai = kxi , con i = 1...n dunque linsieme Y


pu essere visto come

e la sua cardinalit

|Y | = kX = k

n
X

xi

(5)

i=1

Indicheremo dunque con X la sommatoria degli indici x che corrisponde alla


cardinalit dellinsieme Y X .
Y X = {y1x1 , y2x2 , ..., ynxn }
1

(6)

Il numero k, pu essere fattorizzato in prodotto di numeri primi con la


funzione ! (quantit di fattori primi distinti)
!(k)

k=

i
p
i

(7)

i=1

Indicheremo semplicemente con ! la quantit di numeri primi distinti pi


derivati dalla fattorizzazione di k; chiamiamo la quantit totale di primi, che
equivale alla sommatoria degli i :
=

!
X

(8)

i=1

Partendo da k fattorizzato, generiamo + 1 insiemi Pr dividendo k per


ciascun pi e dividendo poi i risultati per ciascun pi presente nella fattorizzazione
del risultato stesso. Questo equivale a moltiplicare tra loro gli elementi delle
2
!
1
combinazioni con ripetizione dellinsieme {p
1 , p2 , ..., p! }
Avremo dunque:
!
1 2
P = {p
1 p2 ...p! } = k

1
={p
1

(9)

1 2
1 2 1
1 2
! 1
!
!
p2 ...p
...p
}
! , p1 p2
! , ..., p1 p2 ...p!

(10)

={k/p1 , k/p2 , ..., k/p! }

P1 = {p1 , p2 , ..., p! }

(11)

P0 = 1

(12)

Dunque ciascun insieme Pr linsieme dei prodotti degli r elementi estrat2


!
1
ti dallinsieme {p
1 , p2 , ..., p! } (combinazioni con ripetizione) derivato dalla
fattorizzazione di k, con r = 0... (vedi Figura 1).
Un ottimo algoritmo per la creazione delle combinazioni con ripetizione (o
combinazioni di multiset) pu essere trovato nel libro Combinatorial Generation
(Oct. 2003, pag. 93) di Frank Ruskey (Dep. of Computer Science, university of
Victoria). I nostri insiemi Pr consistono negli insiemi derivati dalla moltiplicazione tra loro degli elementi di ciascuna combinazione di multiset, raggruppati
per indice r, ovvero per numero di elementi estratti, e lalgoritmo utilizzato per
la generazione degli insiemi Pr (nel codice Pascal allegato) tratto dal libro
citato.
Chiamiamo jr ciascun elemento di un insieme Pr con j = 1...|Pr |.
r
Pr = {1r , 2r , ..., |P
r }
|

(13)
r

jr x1

jr xn

Notiamo che ciascun jr definisce un insieme Y j X = {y1 , ..., yn } la


cui cardinalit corrisponde a jr X e in cui ciascun elemento ripetuto jr xi volte
(con i = 1...n).
2

Figura 1: Esempio di insiemi Pr

Consideriamo ora un insieme Y in cui k = 1, ovvero in cui lM.C.D. tra


|Y | e ciascun ai pari a 1, quindi i numeri considerati sono tutti primi tra loro
(Ex1: Y 8 = {y13 , y25 } ; Ex2: Y 21 = {y14 , y27 , y310 } ). Possiamo associare linsieme
Y all|Y |-gono regolare di |Y | vertici. Una rotazione completa del poligono
certamente uguale a 2 e ciascuna rotazione che porta ogni vertice a coincidere
col vertice successivo pari a 2/|Y |.
Chiameremo "ciclo di lunghezza |Y |" o semplicemente "ciclo |Y |" o "ciclo completo" un ciclo pari ad una rotazione completa dell|Y |-gono regolare.
Chiameremo "sotto ciclo di lunghezza c" o semplicemente "sotto ciclo c" ogni
eventuale ciclo pari ad una rotazione del poligono inferiore a 2 in grado di
generare una permutazione sovrapponibile a quella di partenza.
Nel caso in cui k = 1 impossibile trovare una permutazione degli elementi
sui vertici dell|Y |-gono regolare in modo che formino un sotto ciclo, dato che
ci equivarrebbe a dividere il poligono in parti uguali, e considerati gli elementi
presenti ai suoi vertici, questo impossibile essendo, sia il numero di vertici
che la quantit di ciascun elemento, primi tra loro. In questo caso specifico
dunque il numero di permutazioni circolari con ripetizione CY dellinsieme Y
semplicemente pari al numero di permutazioni con ripetizione SY dellinsieme,
divise per la lunghezza del ciclo, ovvero:
SY
CY =
=
|Y |

|Y |
a1 ,...,an

|Y |

P
( Q ai )!
ai !

= P

ai

(14)
i=1...n

Questa formula equivale alla enumerazione delle Lyndon words (stringhe


primitive) di lunghezza |Y |, contenenti n diversi caratteri yi , ciascuno ripetuto
ai volte, con i = 1...n.
Nel caso invece in cui k > 1 esisteranno dei sotto cicli in grado di generare
permutazioni sovrapponibili a quella di partenza dato che, esistendo almeno un
3

comun divisore, possibile disporre gli elementi y sui vertici del poligono in
modo che possa essere diviso in parti uguali.
Consideriamo il caso pi semplice in cui la fattorizzazione di k corrisponda
ad un solo primo elevato a potenza 1, ovvero k = p1 . L insieme Y pu dunque
essere visto come Y = {y1p1 x1 , y2p1 x2 , ..., ynp1 xn }. In questo caso avremo, oltre
al ciclo completo di 2, un sotto ciclo di lunghezza |Y |/p1 equivalente ad una
rotazione di 2p1 /|Y |, in cui ogni elemento yi sar presente ai /p1 volte (con
i = 1...n).
Dunque per ottenere il numero di permutazioni circolari con ciclo completo,
dovremo sottrarre al numero di permutazioni con ripetizione S11 dellinsieme
Y |Y | = Y p1 X il numero di permutazioni con ripetizione S10 del sotto insieme
Y X e dividere poi per la lunghezza del ciclo. A questo risultato dovremo poi
aggiungere il numero di permutazioni circolari del sotto insieme Y X che rientra
nel caso precedente, in cui ovvero tutti i numeri sono primi tra loro.
CY =

S11 S10
S10
S 1 S10
S0
+
= 1
+ 1
|Y |
|Y |/p1
p1 X
X

(15)

utile a questo punto iniziare ad usare gli insiemi Pr . In questo caso


esistono solamente due insiemi Pr ovvero P1 = {p1 } e P0 = {1}. Quindi
entrambi gli insiemi Pr contengono un solo elemento jr ovvero 1 = 10 2 P0 e
p1 = 11 2 P1 . Possiamo altres dire che 10 11 dato che 10 uguale a 11 /p1 .
Definiamo jr1 1 jr2 , se jr2 /jr1 1 2 N, ovvero dato il modo in cui sono
stati costruiti i jr ,
jr1

jr2 se jr2 /jr1

Dunque possiamo scrivere

2 P1 con j1 = 1...|Pr 1 | j2 = 1...|Pr |

S10 =

X
x1 , ..., xn

(17)

11 X
(18)
11 x1 , ..., 11 xn
Quindi esprimendo CY in funzione di X, degli indici x e della fattorizzazione
di k:
S11 =

(16)

11 X
11 x1 ,...,11 xn
11 X

X
x1 ,...,xn

X
x1 ,...,xn

(19)
X
In generale, per k > 1, anche nel caso in cui la sua fattorizzazione dia come
risultato pi numeri primi elevati a potenze maggiori di 1 possiamo dire che
CY =

Sjr =

jr X
jr x1 , ..., jr xn

X
r
i=1

0
@

i r
j

r i X
A
i x , ..., r i x
1
n

con r =0... e j = 1...|Pr |


4

(20)

Ovvero, ogni Sjr il risultato delle permutazioni con ripetizione (coeciente


r x1

r xn

multinomiale) dellinsieme Y j X = {y1 j , ..., ynj } meno le permutazioni con


ripetizione di tutti gli insiemi pi piccoli, fino a Y X = {y1x1 , ..., ynxn } dove 1 =
10 2 P0 , derivati da jr diviso per ognuno dei primi della sua fattorizzazione
(vedi figura 1). In questo modo, quando divideremo il risultato per la lunghezza
del ciclo, ovvero jr X, otterremo tutte e sole le permutazioni circolari di ciclo
r
jr X dellinsieme Y j X .
CY jr X =

Sjr
jr X

(21)

P
E quindi, la sommatoria delle permutazioni circolari r=0 CY jr X (con j =
1...|Pr |) sar il totale delle permutazioni circolari dellinsieme Y |Y | ovvero:
2 r
3
|P |

X
X Sjr
4
5
CY =
(22)
r X
r=0 j=1 j
Dunque

CY =

X
r=0

r
|P
|

6X
4
j=1

jr X
jr x1 ,...,jr xn

Pr

i=1

jr X

i r
j

r i X
i x ,..., r
1

ix

3
7
5

(23)























































































































 
        

 
             
  
!  
  

" #  $%&&'$(')'*'+,-.-/.01

 $2  

$%345..


"%5!   

#
2 2 
2
22678$%349!   
&78.$%342$%349!
 78$%342$%349!! 
2
2 2$"2:;2  2424
2
 2 2 4 2 62 7   
624

7
6424

47% & 

! 
   < 2 7   =7
#!62!6:2!67
  
!
< > 62!6=
!
< >68 92!6=
 75 +
:  ?.  
!
< >68 92!6:=
 <!62!6:=
 75 +
 
@ <!62!62  =
!  1


     &<=
#
 42 4
2 44 2 4
4 7   
  
&8.2975  <2 =
! 475    

! 4
75
8 49  
&8 42 4
975  < 
< 8 42 4
9=2 =
! 44 75. 4+  
! 4
4 75
8 44 9  
 !< 
< 8 42 4
9= 
< 8 44 2 4
4 9==5. 
 <&8 42 4
92&8 44 2 4
4 9=






!   &1

! 
 
<27A:=7A:
#
7A:
  
: B?.
  
75
75
75
 

75
!
1


  C 6<=
# 7   
  
! 75   
68 9758 9 #$"
 
 675  #$"
!C 61


  C $"6< 7   =
  
:  ?  
$"75
< 2
<8 928 +9==
 75 +
 
C 6
!C $"61


  ! C
<7'D0#7"%=
#
 # 2 62 7'D0
 7   
  
 75.
 # 75/
 675E
 75
: < B?=
  
: <  # 5.=
  
  <2 F=
8 975 # 
 
< =
 75  # # 
 
 # 75 6
 675 6F/





































































































 
 
 
 
 
 
 
 




















 
!! C
1


  C
 <$"7   =
#
!
7"%
G7   
  
  <!
2=
! C
<$"2!
=
!G75 :<!
= <!
=  
!G5. 
  
:;75
8:;975!
8G9
 8:;975
 
  !!
8G95!
8G+9 
  
 8:;975 8:;9F


  
:;75:;F
8:;975!
8G9
 8:;975


C
 1


  H   '
# 7   
  

75
F
 82
975
! 75:;  
 82
975: <8 92 
8 9=> 82
9


8975

!H   '1


   <2:;2  7   =
# 7   
  
!5. H   '

! 756<.2+  F 8:;9= < 8:;92=  
 
8:;975 
 <+ 2:;+2  + 8:;9=
 
8:;975.

! 1


   /<2:;2  7   =
# 7   
  
!5   H   '

! 756<.2+  F 8:;9= < 8:;92=  
 
8:;975 
 /<+ 2:;+2  + 8:;9=
 
8:;975 8:;9

! /1


     
# 2G7   
  
!G75.    
75G

75.
!B5  -/   
! 75:; 
8 975.
 <2:;2  =
    
! 75:; 
8 975 8 9
 /<2:;2  =


!   1

  
:  <=
:  <I++++++++++++++++++++++++++++++++++++++++++++++++++++I=
:  <I  J  

  
   J      I=
:  <I++++++++++++++++++++++++++++++++++++++++++++++++++++I=
:  <I$6   +6   K
 
I=
:  <=
:  <I&
 #           7I= < =
! 4 75   
:  <I'   @  L  I2 4 2I7I= <8 4 9=
 75 F8 4 9
:  <=1

:  <=
  75.
C $"6< =
C
 <$"=
! 75:;  
  75  F 8 9

  
:  <=
!$"5   


























@ 4<  <2 =2 626=


<6264=
:  <642I)$%M'(*' 

I2 6=

   
  &
!475.  
  
!4
75
849
  
@ 4<&8424
92< 
< 8424
9=> 6=24

=
<624

=
<4

24

4=
:  <4

42I  J   

I2< 8424
9> 6=7.7.=



<6264=
:  :  <642I)$%M'(*'(%A'I=




You might also like