Forum Liberty Basic France

Le 13/04/2011 à 18h32

Administrateur

Groupe: Administrateur

Inscrit le: 24/09/2010
Messages: 203
Dans certain algorithmes NP-Complet à complexité exponentielle, on peut avoir besoin d'utiliser un nombre inconnu de boucles imbriqués les une dans les autres.

Cet algorithme permet de simuler le comportement de "nbDim" boucle for imbriqués les unes dans les autres.
La partie "initialisation" permet de préparer les variables utile à cette simulation.
La partie "exécution" permet de simuler ces boucles.


Code VB :
' Pour exécuter X boucles FOR imbriquées

'**************** Configuration *********************
nbDim = 4       ' Nombre de boucle for
dim taille(nbDim)
nbElt = 1       ' Initialisé à 1 obligatoirement

for i = 0 to nbDim-1
    taille(i) = int(rnd(0) * 5)+1       ' On défini aléatoirement le nombre de fois que la boucle for sera exécuter
    print "Boucle for numéro ";i;" de 0 à ";taille(i)-1     ' Revient à faire       FOR x = 0 TO taille(i)-1
next
 
for i = 0 to nbDim-1
    nbElt = nbElt * taille(i)           ' Calcul le nombre total d'exécution des boucles (taille(0) * taille(1) * ... * taille(nbDim-1)
next
 
print
print "Les ";nbDim;" boucles inbriqués équivauent à ";nbElt;" passages"
print
 
'******************** Exécution ***************************
for nb = 0 to nbElt-1
    produit = 1
    for i = 0 to nbDim-1        ' On calcule les différents indices dans le tableau indice(
        indice(i) =int(nb/produit mod taille(nbDim-i-1))
        produit = produit * taille(nbDim-i-1)
        print indice(i); " ";
    next
    print
 
    'Code à l'intérieur des boucles imbriquées

next
 
'Le code précédent est equivalent au code suivant :
'FOR indice(0) = 0 TO taille(0)
'   FOR indice(1) = 0 TO taille(1)
'       FOR indice(2) = 0 TO taille(2)
'           FOR indice(3) = 0 TO taille(3)
'               'Code à l'intérieur des boucles imbriquées
'           NEXT
'       NEXT
'   NEXT
'NEXT

Mail MSN Web    

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie