• Aucun résultat trouvé

Enveloppe convexe

N/A
N/A
Protected

Academic year: 2022

Partager "Enveloppe convexe"

Copied!
198
0
0

Texte intégral

(1)

Enveloppe convexe

(2)

Enveloppe convexe

(3)
(4)

Point extremal

(5)

Point extremal

(6)

Premier algorithme : Jarvis

(7)

Premier algorithme : Jarvis

Le point le plus bas est extr´emal

(8)

Premier algorithme : Jarvis

(9)

Premier algorithme : Jarvis

(10)

Premier algorithme : Jarvis

(11)

Premier algorithme : Jarvis

(12)

Premier algorithme : Jarvis

On trouve le suivant

(13)

Premier algorithme : Jarvis

On trouve le suivant Puis le suivant

(14)

Premier algorithme : Jarvis

On trouve le suivant Puis le suivant

Et ainsi de suite

(15)

Premier algorithme : Jarvis

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

(16)

Premier algorithme : Jarvis Complexit´e ?

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

u.suivant=v;

Faire

S =S\ {v}

Pour toutwS min=

siangle(v.pred v, vw)< min alors

min=angle(v.pred v, vw); v.suivant=w;

v =v.suivant;

Tant que v 6=u

(17)

Premier algorithme : Jarvis Complexit´e ?

O(n)

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

(18)

O(n) Premier algorithme : Jarvis

Complexit´e ?

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

u.suivant=v;

Faire

S =S\ {v}

Pour toutwS min=

siangle(v.pred v, vw)< min alors

min=angle(v.pred v, vw); v.suivant=w;

v =v.suivant;

Tant que v 6=u

(19)

Premier algorithme : Jarvis Complexit´e ?

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

(20)

Premier algorithme : Jarvis Complexit´e ?

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

u.suivant=v;

Faire

S =S\ {v}

Pour toutwS min=

siangle(v.pred v, vw)< min alors

min=angle(v.pred v, vw); v.suivant=w;

v =v.suivant;

Tant que v 6=u O(n)

(21)

Premier algorithme : Jarvis Complexit´e ?

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

O(n2)

(22)

Premier algorithme : Jarvis Complexit´e ?

entr´ee : S un ensemble de points.

u=le point le plus bas de S;

min=

Pour toutwS\ {u}

siangle(ux, uw)< min alorsmin=angle(ux, uw);v =w;

u.suivant=v;

Faire

S =S\ {v}

Pour toutwS min=

siangle(v.pred v, vw)< min alors

min=angle(v.pred v, vw); v.suivant=w;

v =v.suivant;

Tant que v 6=u

O(nh)

(23)

Deuxi`eme algorithme : Graham

(24)

Deuxi`eme algorithme : Graham Un point int´erieur

(25)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(26)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(27)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(28)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(29)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(30)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(31)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(32)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(33)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(34)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(35)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(36)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(37)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(38)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(39)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(40)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(41)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(42)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(43)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(44)

Deuxi`eme algorithme : Graham

Un point int´erieur

Tri autour de ce point

Parcours depuis le point le plus bas

(45)

Deuxi`eme algorithme : Graham Un point int´erieur

Tri autour de ce point

(46)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham

(47)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

Deuxi`eme algorithme : Graham Complexit´e

(48)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham Complexit´e

(49)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n)

(50)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1)

(51)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

(52)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

(53)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

(54)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

au plus n suppressions

(55)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

(56)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

au plus n suppressions

au plus n fois

(57)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n) O(1) O(n)

(58)

entr´ee : S un ensemble de points.

origine = barycentre de 3 points de S;

trier S autour de l’origine;

u = le point le plus bas de S;

v = u;

tant que v.suivant 6= u

si (v, v.suivant, v.suivant.suivant) tourne `a gauche v = v.suivant;

sinon

v.suivant = v.suivant.suivant;

si v 6= u v = v.precedent;

Deuxi`eme algorithme : Graham Complexit´e

O(n log n)

(59)

Variante: origine en y = −∞

(60)

Variante: origine en y = −∞

Tri en x

(61)

Variante: origine en y = −∞

Tri en x

(62)

Variante: origine en y = −∞

Tri en x

Enveloppe sup´erieure

(63)

Variante: origine en y = −∞

(64)

Autre algorithme par tri en x

(65)

Autre algorithme par tri en x

(66)

Autre algorithme par tri en x

(67)

Autre algorithme par tri en x

(68)

Autre algorithme par tri en x

(69)

Autre algorithme par tri en x

(70)

Autre algorithme par tri en x

(71)

Autre algorithme par tri en x

(72)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

Autre algorithme par tri en x

(73)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

u v Autre algorithme par tri en x

(74)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

u v Autre algorithme par tri en x

u

(75)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

u v Autre algorithme par tri en x

u u

(76)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

u v Autre algorithme par tri en x

w

(77)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

u v Autre algorithme par tri en x

ww

(78)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

Autre algorithme par tri en x

ww u

(79)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

Autre algorithme par tri en x

Complexit´e

(80)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

Autre algorithme par tri en x

Complexit´e O(n log n)

(81)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

Autre algorithme par tri en x

(82)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

Autre algorithme par tri en x

Complexit´e

Dessiner une arˆete dans la triangulation

(83)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

Autre algorithme par tri en x

Complexit´e

(84)

entr´ee : S un ensemble de points.

trier S en x;

initier une liste circulaire avec les 3 points les plus `a gauche tel queu`a droite etu, u.suivant, u.suivanttourne `a gauche; Pour v le prochain en x

w=u

tant que (v, u, u.suivant) tourne `a droite u= u.suivant;

v.suivant = u; u.pred = v;

tant que (v, w, w.pred) tourne `a gauche w = w.pred;

v.pred = w; w.suivant= v;

u= v;

Autre algorithme par tri en x

Complexit´e O(n log n)

(85)

Un algorithme division fusion

(86)

Un algorithme division fusion

(87)

Un algorithme division fusion

(88)

Un algorithme division fusion

Tangentes communes

(89)

Tangente sup´erieure

(90)

Tangente sup´erieure

Points les plus hauts

(91)

Tangente sup´erieure

(92)

Tangente sup´erieure

(93)

Tangente sup´erieure

O(n)

(94)

Un algorithme division fusion

Complexit´e

f(n) =

(95)

Un algorithme division fusion

Complexit´e

f(n) = A · n + f(n2) + f(n2)

(96)

Un algorithme division fusion

Complexit´e

f(n) = A · n + f(n2) + f(n2)

= O(n logn)

(97)

Un algorithme division fusion

Complexit´e

f(n) = A · n + f(n2) + f(n2)

(98)

Cas particulier : polygone simple

(99)

Cas particulier : polygone simple

(d´ej`a vu : chaine polygonale monotone)

(100)

Cas particulier : polygone simple

Graham marche pas

(101)

Cas particulier : polygone simple

Graham marche pas

(102)

Cas particulier : polygone simple

Graham marche pas

(103)

Cas particulier : polygone simple

Graham marche pas

(104)

Cas particulier : polygone simple

Graham marche pas

(105)

Cas particulier : polygone simple

Graham marche pas

(106)

Cas particulier : polygone simple

Graham marche pas

(107)

Cas particulier : polygone simple

Graham marche pas

(108)

Cas particulier : polygone simple

(109)

Cas particulier : polygone simple Principe : boucher les poches

(110)

Cas particulier : polygone simple

(111)

Cas particulier : polygone simple

(112)

Cas particulier : polygone simple

A B

(113)

Cas particulier : polygone simple

B C

(114)

Cas particulier : polygone simple

A

B C

D

(115)

Cas particulier : polygone simple

(116)

Cas particulier : polygone simple

(117)

Cas particulier : polygone simple

B

(118)

Cas particulier : polygone simple

D C

(119)

Cas particulier : polygone simple

C

(120)

Cas particulier : polygone simple

A B

(121)

Cas particulier : polygone simple

B

(122)

Cas particulier : polygone simple

A B

(123)

Cas particulier : polygone simple

B

(124)

Cas particulier : polygone simple

(125)

Cas particulier : polygone simple

B C

(126)

Cas particulier : polygone simple

A

B C

D

(127)

Cas particulier : polygone simple

B C

(128)

Cas particulier : polygone simple

A

B C

D

O(1)

(129)

Cas particulier : polygone simple

(130)

Un algorithme incr´emental

(131)

Un algorithme incr´emental

(132)

Un algorithme incr´emental

(133)

Un algorithme incr´emental

(134)

Un algorithme incr´emental

(135)

Un algorithme incr´emental

(136)

Un algorithme incr´emental

(137)

Un algorithme incr´emental

(138)

Un algorithme incr´emental

Un d´ecoupage du plan

(139)

Un algorithme incr´emental

Un d´ecoupage du plan

(140)

Un algorithme incr´emental

Un d´ecoupage du plan selon la tangente `a droite

(141)

Un algorithme incr´emental

Un d´ecoupage du plan selon la tangente `a droite

(142)

Un algorithme incr´emental Un d´ecoupage du plan

(143)

Un algorithme incr´emental Un d´ecoupage du plan

(144)

Un algorithme incr´emental Un d´ecoupage du plan

(145)

Un algorithme incr´emental Un d´ecoupage du plan

(146)

Un algorithme incr´emental Un d´ecoupage du plan

(147)

Un algorithme incr´emental Un d´ecoupage du plan

(148)

Un algorithme incr´emental Un d´ecoupage du plan

(149)

Un algorithme incr´emental

(150)

Un algorithme incr´emental

(151)

Un algorithme incr´emental

(152)

Un algorithme incr´emental

(153)

Un algorithme incr´emental

(154)

Un algorithme incr´emental

(155)

Un algorithme incr´emental

sym´etriquement

(156)

Un algorithme incr´emental

(157)

Un algorithme incr´emental

(158)

Un algorithme incr´emental

(159)

Un algorithme incr´emental

(160)

Un algorithme incr´emental

(161)

Un algorithme incr´emental

Complexit´e

(162)

Un algorithme incr´emental

Complexit´e

Complexit´e d’un nœud

(163)

Un algorithme incr´emental

Complexit´e

Complexit´e d’un nœud O(1)

(164)

Un algorithme incr´emental

Complexit´e

Complexit´e d’un nœud O(1)

Arbre ´equilibr´e

(165)

Un algorithme incr´emental

Complexit´e

Complexit´e d’un nœud O(1)

(166)

L’algorithme du paquet cadeau

(167)

L’algorithme du paquet cadeau

(168)

L’algorithme du paquet cadeau

(169)

L’algorithme du paquet cadeau

(170)

L’algorithme du paquet cadeau

(171)

L’algorithme du paquet cadeau

(172)

L’algorithme du paquet cadeau

(173)

L’algorithme du paquet cadeau

(174)

L’algorithme du paquet cadeau

(175)

L’algorithme du paquet cadeau

(176)

L’algorithme du paquet cadeau

(177)

L’algorithme du paquet cadeau

(178)

L’algorithme du paquet cadeau

(179)

L’algorithme du paquet cadeau

(180)

L’algorithme du paquet cadeau

(181)

L’algorithme du paquet cadeau

(182)

L’algorithme du paquet cadeau

(183)

L’algorithme du paquet cadeau

(184)

Algorithme division fusion

(185)

Algorithme division fusion

(186)

Algorithme division fusion

(187)

Algorithme division fusion

(188)

Algorithme division fusion

(189)

Algorithme division fusion

(190)

Algorithme division fusion

(191)

Algorithme division fusion

(192)

Algorithme division fusion

(193)

Algorithme division fusion

(194)

Algorithme division fusion

(195)

Algorithme division fusion

(196)

Algorithme division fusion

O(n)

(197)

Algorithme division fusion

O(n)

O(n logn)

(198)

C’est tout pour aujourd’hui

Références

Documents relatifs

Je lance suffisamment mal pour que la probabilit´ e que la fl´ echette tombe dans une zone donn´ ee soit proportionnelle ` a l’aire de cette zone.. Je joue dans une fˆ ete foraine o`

Ce probl` eme mod´ elise un jeu de fl´ echettes, avec quelques libert´ es par rapport ` a la r´ ealit´ e pour les besoins de la cause.. Je d´ ecide de lancer 20 fl´ echettes

En appliquant le premier principe de la thermodynamique pour un syst`eme ouvert, exprimer la vitesse d’´ejection des gaz en fonction de , C , 4 , , , et. est une barre homog`ene

D´ eduire du Th´ eor` eme 2 que pour tout entier strictement positif k, il n’existe ` a ´ equivalence pr` es qu’un nombre fini de simplexes entiers de R n ayant exactement k

Alg` ebre lin´ eaire Univ. Calculer son rang, et en d´ eduire une base et la dimension de Imf ... c) En d´ eduire la dimension

Alg` ebre lin´ eaire Univ.. Calculer la matrice adjointe

On utilise d’abord un th´ eor` eme du type th´ eor` eme de F´ ejer, ou de Weierstrass, pour prouver que h est limite uniforme de polynˆ omes trigonom´ etriques P n (uniquement

Dresser le tableau de variations de la fonction ϕ en pr´ ecisant les limites aux bornes de son ensemble de d´