Bonjour,
Par ailleurs, sauf erreur de ma part, la réponse ne peut être systématiquement une inclusion. Exemple 0b11101000 et 10000111 ne sont pas inclus dans un sens ou l'autre.
En fait c'est assez simple, il suffit de créer un vecteur temporaire Vtmp := V(i) & V(j) (& pour un ET binaire bit à bit qui peut se traduire - mal - par Vtmp(k) := v(i,k) * v(j,k) ).
Si Vtmp == V(i) alors V(i) inclus dans V(j) sinon si Vtmp == V(j) alors V(j) inclus dans V(i) sinon pas d'inclusion
C'est certainement la solution la plus simple si les vecteurs élémentaires sont représentés par des entiers dont chaque bit est un élément du vecteur.
Sinon il est peut être plus efficace de travailler avec un flag F à 4 valeurs ; -1 pour i dans j, 0 pour i = j, 1 pour j dans i, 2 pour i et j sans relation. La boucle la plus interne devient :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| F = 0
pour k = 1 à m faire
si v(i,k) > v(j,k) alors
si F == -1 alors
F = 2
fin de boucle // break
sinon
F = 1
fin_si
sinon si v(i,k) < v(j,k) alors
si F == 1 alors
F = 2
fin de boucle // break
sinon
F = -1
fin_si
fin_si |
Salutations
Partager