Du latin divide ut imperes
(ou ses variantes divide et impera
, divide ut reges
), le principe divise pour commander (ou divise pour régner) est attribué au Sénat romain, et relève de la stratégie militaire suivante : semer la discorde parmi ses opposants permet de les contrôler, les manipuler et les soumettre plus aisément. Cette machiavélique[1] expression était inculquée aux enfants destinnés à prendre les rênes du pouvoir.
La division de l'opposant réduit ses forces, diminue sa confiance en l'opposition du fait du manque d'unité, et le déstabilise par des conflits internes.
Si en politique l'utilisation récurente de cette tactique peut avoir pour conséquence la révélation de la stratégie répétitive auprès des opposants, il n'en est pas de même en informatique, et nous pouvons continuer à affaiblir la difficulté d'une opération en la divisant.
Cette stratégie est fortement employée dans les alorithmes récursifs et sera généralement de type dichotomique (division en deux éléments, mais dont la taille n'est pas forcément égale).
Si nous devons chercher une définition dans un dictionnaire, nous pouvons parcourir les pages depuis la première jusqu'au moment où nous trouvons la définition. Espérons que l'on ne doive pas trop souvent chercher la définition des zygomatiques.
Intuitivement, lorsque nous cherchons une définition, nous ouvrons le dictionnaire à un endroit où il y a une forte probabilité que les mots définis ne soient pas trop éloignés du mot que nous cherchons, nous comparons les mots de la page ouverte avec celui cheché, et puis nous sautons encore quelques pages en avant ou en arrière jusqu'à trouver la bonne page.
Nous allons à chaque fois diviser la quantité de données à traiter, jusqu'au moment où nous atteindrons le cas de base. A chaque fois nous devons respecter le fait que la division mène à un cas plus simple : nous dirons qu'il s'agit d'une relation bien fondée.
Nous atteignons le cas de base (minimal) de cette relation bien fondée "<" quand il n'est plus possible de diviser, ce qui peut s'écrire a minimal ⇔
b : b < a
Ensuite, nous devrons combiner tous les éléments.
Nous pouvons employer des boucles pour implémenter ce genre de concept, mais la récursion est vraiment indiquée car nous effectuons la division lors de "la descente" dans la pile des appels récursifs, et nous effectuons la combinaison lors de" la remontée" de la pile.
L'algorithme résoudre(v) de type diviser pour régner peut donc se résumer de la manière suivante :
Nous pouvons appliquer le principe "diviser pour régner" aux différents algorithmes de tri, en remplaçant résoudre(v) par trier(liste_in). Pour nos exemples, nous allons définir certaines conditions:
liste_in : Liste<T>
liste_out : Liste<T>
Post-condition : liste_out est triée[2], liste_in est une permutation[3] de liste_out, et l'ordre de tri est réflexif.
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.
19 mots clés dont 0 définis manuellement (plus d'information...).
Avertissement
Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.
Cours de Méthodes de Programmation(Septembre 2009)
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.
Recherche (afficher)
Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
Citation (masquer)