On dispose de "Nuplets" de bits allant de
{0,0,...,0} à {1,1,...1} N est un entier à prioris quelconque et en pratique allant de 8 à 32.
Ily y a donc 2^N Nuplets différents.
De ces 2^N on souhaite obtenir le cardinal de la sous-famille contenant les Nuplets pour lesquels ont a au moins une fois p bits consécutifs (ou plus)égaux p<=N bien entendu ( en pratique p=6)
Quelqu'un aurrait-il une idée comment on pourrait formuler le résultat sans utiliser un PC et générer le liste complète de Nuplets puis retenir ceux qui sont acceptés (au moins une fois "111111.." ou "000000..")?
On peut décomposer en calculant ce nombre pour les Nuplets contenant STRICTEMENT x bits consécutifs égaux puis sommer pour x=p à N.
si on recherche x bit =1 alors il faut multiplier le résultat final par 2 (on à la symétrie avec x bits=0)
la situation est alors
code (0 et 1 forcés, X code libre)
1111110XXXXXXX h=0 N bits, serie de x bits =1 p<=x<=N
01111110XXXXXX h=1
X01111110XXXXX h=2
..
XXXXXX01111110
XXXXXXX0111111 h=N-x
Nombre de croix à droite ligne h : d = max(0,N-x-h-1)
Nombre de croix à gauche ligne h : g = max(0,h-1)
le nombre de possibilité [pour cette valeur particulière de x et qu'il faudra sommer pour x=p..N] est alors la somme de 2^d * 2^(f(g)) sur l'ensemble des lignes
on a pas 2^g mais 2^f(g) car alors on compterait des doublons comme par exemple:
11111101111110xxxxxxxxxxx
qui serait compté pour h=0 et h=8
C'est là que j'ai un petit problème de formalisme! comment écrire proprement f(g)?
merci por vos réponses!
Partager