• Aucun résultat trouvé

Diviser pour régner Laboratoire LIG Équipe-Projet INRIA POLARIS Université Grenoble-Alpes

N/A
N/A
Protected

Academic year: 2022

Partager "Diviser pour régner Laboratoire LIG Équipe-Projet INRIA POLARIS Université Grenoble-Alpes"

Copied!
30
0
0

Texte intégral

(1)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

Diviser pour régner

Divide et impera attribuée à Philippe II de Macédoine IVièmesiècle avant J.C

Jean-Marc.Vincent@univ-grenoble-alpes.fr1

1Laboratoire LIG Équipe-Projet INRIAPOLARIS

Université Grenoble-Alpes

Algorithmique et Modélisation L3-INFO

I.UNE MÉTHODE: décomposer II.ARCHÉTYPES: les tris récursifs III.EXEMPLES: calcul, géométrie IV.MISE EN ŒUVRE: adapter l’idée

V.ENVELOPPE CONVEXE: différentes approches

(2)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

D IVISER POUR RÉGNER

I.UNE MÉTHODE: décomposer

II.ARCHÉTYPES: les tris récursifs

III.EXEMPLES: calcul, géométrie

IV.MISE EN ŒUVRE: adapter l’idée

V.ENVELOPPE CONVEXE: différentes approches

Diviser pour régner

(3)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

U N MODE DE PENSÉE

La solution d’un problème dePnsur une donnée de taillens’exprime comme la composition de solutions de sous-problèmes de même nature de taille plus petite.

Si la taille est inférieure à une borne on applique une méthode directe (en général moins coûteuse).

Schéma basé sur l’induction Preuve de la correction facile

I correction partielle cas de base, résolution des sous-problèmes⇒solution du problème

I terminaison (variant)

Mise en œvre simple (opérationnel)

langage admettant la récursivité dérécursification possible

Complexité

Le schéma correspond au Master-Theorem (

C(1) =1;

C(n) =aC(nb) +c(n),pourn>1,

C(n) =





Θ(nlogba) sic(n) =O(nlogba−ε) Θ(nlogbalogn) sic(n) = Θ(nlogba) Θ(c(n)) sic(n) = Ω(nlogba+ε)

(4)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

U N MODE DE PENSÉE

La solution d’un problème dePnsur une donnée de taillens’exprime comme la composition de solutions de sous-problèmes de même nature de taille plus petite.

Si la taille est inférieure à une borne on applique une méthode directe (en général moins coûteuse).

Schéma basé sur l’induction Preuve de la correction facile

I correction partielle cas de base, résolution des sous-problèmes⇒solution du problème

I terminaison (variant)

Mise en œvre simple (opérationnel)

langage admettant la récursivité dérécursification possible

Complexité

Le schéma correspond au Master-Theorem (

C(1) =1;

C(n) =aC(nb) +c(n),pourn>1,

C(n) =





Θ(nlogba) sic(n) =O(nlogba−ε) Θ(nlogbalogn) sic(n) = Θ(nlogba) Θ(c(n)) sic(n) = Ω(nlogba+ε)

Diviser pour régner

(5)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

U N MODE DE PENSÉE

La solution d’un problème dePnsur une donnée de taillens’exprime comme la composition de solutions de sous-problèmes de même nature de taille plus petite.

Si la taille est inférieure à une borne on applique une méthode directe (en général moins coûteuse).

Schéma basé sur l’induction Preuve de la correction facile

I correction partielle cas de base, résolution des sous-problèmes⇒solution du problème

I terminaison (variant)

Mise en œvre simple (opérationnel)

langage admettant la récursivité dérécursification possible

Complexité

Le schéma correspond au Master-Theorem (

C(1) =1;

C(n) =aC(nb) +c(n),pourn>1,

C(n) =





Θ(nlogba) sic(n) =O(nlogba−ε) Θ(nlogbalogn) sic(n) = Θ(nlogba) Θ(c(n)) sic(n) = Ω(nlogba+ε)

(6)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

U N MODE DE PENSÉE

La solution d’un problème dePnsur une donnée de taillens’exprime comme la composition de solutions de sous-problèmes de même nature de taille plus petite.

Si la taille est inférieure à une borne on applique une méthode directe (en général moins coûteuse).

Schéma basé sur l’induction Preuve de la correction facile

I correction partielle cas de base, résolution des sous-problèmes⇒solution du problème

I terminaison (variant)

Mise en œvre simple (opérationnel)

langage admettant la récursivité dérécursification possible

Complexité

Le schéma correspond au Master-Theorem (

C(1) =1;

C(n) =aC(nb) +c(n),pourn>1,

C(n) =





Θ(nlogba) sic(n) =O(nlogba−ε) Θ(nlogbalogn) sic(n) = Θ(nlogba) Θ(c(n)) sic(n) = Ω(nlogba+ε)

Diviser pour régner

(7)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E XEMPLE LIMITE

Lorsque l’on a un seul sous problème de taille plus petite (avec un facteur de division) Recherche dichotomique

Recherche_dichotomique(T,x,i,j)

Données:Ttableautrié,xélément deT,i6j, indices deT,T[i]6x6T[j]

Résultat:L’indice dexdansT m=i+j2

ifT[milieu] =x Retournemilieu else ifT[milieu]>x

Retourne Recherche_dichotomique(T,x,i,milieu) else

Retourne Recherche_dichotomique(T,x,milieu,j)

C(n) =1×C(n

2) +1 d’oùC(n) = Θ(logn)

réduction logarithmique de la complexité (par rapport à une recherche séquentielle en O(n))

I Recherche de rupture dans un tableau circulairement trié I Recherche de pic (tableau avec un seul pic)

I Exponentiation rapide ...

(8)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E XEMPLE LIMITE

Lorsque l’on a un seul sous problème de taille plus petite (avec un facteur de division) Recherche dichotomique

Recherche_dichotomique(T,x,i,j)

Données:Ttableautrié,xélément deT,i6j, indices deT,T[i]6x6T[j]

Résultat:L’indice dexdansT m=i+j2

ifT[milieu] =x Retournemilieu else ifT[milieu]>x

Retourne Recherche_dichotomique(T,x,i,milieu) else

Retourne Recherche_dichotomique(T,x,milieu,j)

C(n) =1×C(n

2) +1 d’oùC(n) = Θ(logn)

réduction logarithmique de la complexité (par rapport à une recherche séquentielle en O(n))

I Recherche de rupture dans un tableau circulairement trié I Recherche de pic (tableau avec un seul pic)

I Exponentiation rapide ...

Diviser pour régner

(9)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

D IVISER POUR RÉGNER

I.UNE MÉTHODE: décomposer

II.ARCHÉTYPES: les tris récursifs

III.EXEMPLES: calcul, géométrie

IV.MISE EN ŒUVRE: adapter l’idée

V.ENVELOPPE CONVEXE: différentes approches

(10)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

A RCHÉTYPE DE DIVISER POUR RÉGNER (1) :

LE "MERGE SORT"

Tri partition/fusion : division en 2 sous-problèmes de taillen2 Partition_Fusion(T)

Données:Ttableau d’éléments comparables

Résultat:Les éléments deTrangés par ordre croissant if longueur(T)61

RetourneT else

T1=Partition_Fusion(Moitie_Gauche(T)) T2=Partition_Fusion(Moitie_Droite(T)) Retourne Fusion(T1,T2)

C(n) =2C(n

2) + Θ(n)d’oùC(n) = Θ(nlogn)

réduction de la complexité (par rapport à tri "élémentaire" enO(n2))

Diviser pour régner

(11)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

A RCHÉTYPE DE DIVISER POUR RÉGNER (1) :

LE "MERGE SORT"

Tri partition/fusion : division en 2 sous-problèmes de taillen2 Partition_Fusion(T)

Données:Ttableau d’éléments comparables

Résultat:Les éléments deTrangés par ordre croissant if longueur(T)61

RetourneT else

T1=Partition_Fusion(Moitie_Gauche(T)) T2=Partition_Fusion(Moitie_Droite(T)) Retourne Fusion(T1,T2)

C(n) =2C(n

2) + Θ(n)d’oùC(n) = Θ(nlogn)

réduction de la complexité (par rapport à tri "élémentaire" enO(n2))

(12)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

A RCHÉTYPE DE DIVISER POUR RÉGNER (2) :

LE "QUICK SORT"

Tri par segmentation (tri rapide) : division en 2 sous-problèmes de taille dépendant des donnéesn1+n2=n−1

Tri_par_Segmentation(T)

Données:Ttableau d’éléments comparables

Résultat:Les éléments deTrangés par ordre croissant if longueur(T)61

RetourneT else

x=Choisir(T)

Retourne Assemble(Plus_Petits(T,x),x,Plus_Grands(T,x))

Coûtmoyen

Cm(n) = 1 n

n−1

X

i=0

(Cm(i) +Cm(n−1−i)) + Θ(n)d’oùCm(n) = Θ(nlogn)

réduction de la complexité (par rapport à tri "élémentaire" enO(n2))

Diviser pour régner

(13)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

A RCHÉTYPE DE DIVISER POUR RÉGNER (2) :

LE "QUICK SORT"

Tri par segmentation (tri rapide) : division en 2 sous-problèmes de taille dépendant des donnéesn1+n2=n−1

Tri_par_Segmentation(T)

Données:Ttableau d’éléments comparables

Résultat:Les éléments deTrangés par ordre croissant if longueur(T)61

RetourneT else

x=Choisir(T)

Retourne Assemble(Plus_Petits(T,x),x,Plus_Grands(T,x)) Coûtmoyen

Cm(n) =1 n

n−1

X

i=0

(Cm(i) +Cm(n−1−i)) + Θ(n)d’oùCm(n) = Θ(nlogn)

réduction de la complexité (par rapport à tri "élémentaire" enO(n2))

(14)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

D IVISER POUR RÉGNER

I.UNE MÉTHODE: décomposer

II.ARCHÉTYPES: les tris récursifs

III.EXEMPLES: calcul, géométrie

IV.MISE EN ŒUVRE: adapter l’idée

V.ENVELOPPE CONVEXE: différentes approches

Diviser pour régner

(15)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

A UTRES EXEMPLES

Multiplication rapide

Algorithme de Karatsuba (1960) C(n) =3C(n

2) + Θ(n)d’oùC(n) = Θ(nlog23)

réduction de la complexité (par rapport à la multiplication "élémentaire" enO(n2))

Multiplication de matrices Algorithme de Strassen (1969)

C(n) =7C(n

2) + Θ(n)d’oùC(n) = Θ(nlog27) = Θ(n2.8)

réduction de la complexité (par rapport à la multiplication "élémentaire" enO(n3))

(16)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

R ECONNAÎTRE UN SCHÉMA DIVISER POUR RÉGNER

Nuage denpoints : trouver la distance minimale entre 2 points

Diviser pour régner

(17)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

D IVISER POUR RÉGNER

I.UNE MÉTHODE: décomposer

II.ARCHÉTYPES: les tris récursifs

III.EXEMPLES: calcul, géométrie

IV.MISE EN ŒUVRE: adapter l’idée

V.ENVELOPPE CONVEXE: différentes approches

(18)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

M ISE EN ŒUVRE

Adaptation lorsque la taille du problème n’est pas une puissance du facteur de division b

Adaptation du programme

I Global : on modifie le programme pour toute taille

I Local : à chaque étape de division on adapte le programme

Adaptation des données

I Global : on étend les données à une puissance deb

I Local : on étend les données à un multiple deb

Complexité inchangée

Diviser pour régner

(19)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

D IVISER POUR RÉGNER

I.UNE MÉTHODE: décomposer

II.ARCHÉTYPES: les tris récursifs

III.EXEMPLES: calcul, géométrie

IV.MISE EN ŒUVRE: adapter l’idée

V.ENVELOPPE CONVEXE: différentes approches

(20)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

Diviser pour régner

(21)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

(22)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

Diviser pour régner

(23)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

(24)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

Diviser pour régner

(25)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

(26)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

Diviser pour régner

(27)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

E NVELOPPES CONVEXES

Nuage denpoints dans le plan

(28)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

S CHÉMAS D ALGORITHME

Algorithmes "itératifs" Algorithmes D&C

Take home message : Connaître ses classiques

Diviser pour régner

(29)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

S CHÉMAS D ALGORITHME

Algorithmes "itératifs"

Tri par sélection

Algorithmes D&C

Tri partition/fusion

(30)

UNE MÉTHODE ARCHÉTYPES EXEMPLES MISE EN ŒUVRE ENVELOPPE CONVEXE

G HOSTBUSTERS

There’s something very important I forgot to tell you ! Don’t cross the streams. . . It would be bad. . .Try to imagine all life as you know it stopping instantaneously and every molecule in your body exploding at the speed of light.Dr. Egon Spengler

Les chasseurs de fantômes Ghostbusters utilisent des rayons pour neutraliser les fantômes. Comme l’indique la citation ci-dessus, il est primordial que ces rayons ne se croisent jamais.

Problème : associer chaque Ghostbuster à un fantôme

Diviser pour régner

Références

Documents relatifs

Transf´ erer des informations du SGBD vers un programme (navigateur web, R, python, Java ...).

The Cultural Heritage in CLEF 2013 (CHiC) takes the initiative to organize an evaluation cam- paign which involve several tasks such as 1) multilingual task, 2) polish task and

Ce nom risque de vous induire en erreur : si le tri par pivot est effecti- vement très rapide en pratique dans les meilleurs cas, il est en pratique délicat à mettre en œuvre si on

La figure 7 illustre les trois premiers appels récursifs de la fonction récursive multiply dont le code est présenté figure 2, avec pour paramètres x = 105 et y = 253 (pour des

Figure 1- 4 In the Hindu-Arabic numeration system, large numbers are represented by building up numerals digit-by-digit from right to left, giving each succeeding digit ten

The inverse of a relation represents a function if and only if the graph of the original relation never intersects a movable horizontal line at more than one point.. When you test

Écrire la fonction recherche , qui recherche la valeur d'un entier pris aléatoirement sur l'intervalle [0, 100] et renvoie le nombre d'appel récursif ainsi que le nombre à

Il s’agit ici de d´eterminer la plus petite distance entre deux points contenus dans un nuage de points donn´e sous la forme d’un tableau ligne T de points.. On commence par trier