cours complexit V1 - ESEN

60
Ecole Supérieure d’Economie Numérique Cours Complexité Algorithmique Dr.Chiheb-Eddine Ben N’Cir [email protected] [email protected] 2016 2017

Transcript of cours complexit V1 - ESEN

Page 1: cours complexit V1 - ESEN

EcoleSupérieure

d’EconomieNumérique

CoursComplexitéAlgorithmique

Dr.Chiheb-EddineBenN’Cir

[email protected]

[email protected]

2016−

2017

Page 2: cours complexit V1 - ESEN

Outline

1Algorithmique

2Tempsd’exécution

3Complexitéalgorithmique

Chiheb-EddineBenN’Cir(ESEN)

CoursComplexitéAlgorithmique

2016

2/36

Page 3: cours complexit V1 - ESEN

Algorithmique

introduction

Algorithmique

L’objetdececoursestl’algorithmique

L’algorithmiqueestl’étudedesalgorithmes

Unalgorithmeestuneméthodeperm

ettantderésoudre

un

problèmedonnéenuntempsfini

3Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

3/36

Page 4: cours complexit V1 - ESEN

Algorithmique

introduction

Methodologie

Iln’existe

pasd’algorithmepourcréerdesalgorithmes

Ilexiste

quelquesprincipesgénérauxquel’onpeutsuivre

Cecoursapourobjectifd’acquérircesprincipes

4Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

4/36

Page 5: cours complexit V1 - ESEN

Algorithmique

introduction

Duraisonnementàl’algorithmepuis

aucode

Exempledetache:décidersiuntableauLesttriéenordre

croissant

Raisonnement:UntableauLesttriésitoussesélémentssont

dansl’ordre

croissant

Plusform

ellement:Ltrié⇐⇒∀i0

<i<|L|

L[i]<

L[i+1]

5Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

5/36

Page 6: cours complexit V1 - ESEN

Algorithmique

introduction

Duraisonnementàl’algorithmepuis

aucode

Exempledetache:décidersiuntableauLesttriéenordre

croissant

Raisonnement:UntableauLesttriésitoussesélémentssont

dansl’ordre

croissant

Plusform

ellement:Ltrié⇐⇒∀i0

<i<|L|

L[i]<

L[i+1]

Algo:Unefonctionvérifiantcettepropriété

supposera

doncle

tableautriéaudépart,etcherchera

unecontradiction

5Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

5/36

Page 7: cours complexit V1 - ESEN

Algorithmique

introduction

Duraisonnementàl’algorithmepuis

aucode

Exempledetache:décidersiuntableauLesttriéenordre

croissant

Raisonnement:UntableauLesttriésitoussesélémentssont

dansl’ordre

croissant

Plusform

ellement:Ltrié⇐⇒∀i0

<i<|L|

L[i]<

L[i+1]

Algo:Unefonctionvérifiantcettepropriété

supposera

doncle

tableautriéaudépart,etcherchera

unecontradiction

code:

boolean

trie(L)

for(i=0;i<L.lengh();i++)

if

L[i]

>L[i

+1]

return

False

return

True

5Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

5/36

Page 8: cours complexit V1 - ESEN

Algorithmique

objectifs

Objectifs

Onattendd’unalgorithmequ’ilrésolvedemanière

efficacele

problèmeàrésoudre,quellesquesoientlesdonnéesàtraiter

Ons’intéresseprincipalementàdeuxaspectsd’unalgorithme

donnée:

1sacorrection:résout-ilbienleproblèmedonnée?

2sonefficacité:encombiendetempsetavecquellesressources?

6Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

6/36

Page 9: cours complexit V1 - ESEN

Algorithmique

objectifs

Efficacité

L’efficacitéd’unalgorithmepeutetreévaluéepar:

rapidité(enterm

esdetempsd’exécution)

consommationderessources(espacedestockage,mémoire

utilisée)

7Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

7/36

Page 10: cours complexit V1 - ESEN

Algorithmique

objectifs

Efficacité

L’efficacitéd’unalgorithmepeutetreévaluéepar:

rapidité(enterm

esdetempsd’exécution)

consommationderessources(espacedestockage,mémoire

utilisée)

Lathéoriedecomplexitéétudiel’efficacitédesalgorithmes

7Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

7/36

Page 11: cours complexit V1 - ESEN

Algorithmique

objectifs

Théoriedela

complexité

Lathéoriedelacomplexitéviseàrépondre

auxbesoins

d’efficacitédesalgorithmes(programme)

8Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

8/36

Page 12: cours complexit V1 - ESEN

Algorithmique

objectifs

Théoriedela

complexité

Lathéoriedelacomplexitéviseàrépondre

auxbesoins

d’efficacitédesalgorithmes(programme)

Elle

perm

et:

declasserlesproblèmesselonleurdifficulté

declasserlesalgorithmesselonleurefficacité

decomparerlesalgorithmesrésolvantunproblèmedonnéafinde

faireunchoixéclairésansdevoirlesimplémenter

8Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

8/36

Page 13: cours complexit V1 - ESEN

Tempsd’exécution

Evaluationdela

rapiditéd’unalgorithme

Onnemesure

pasladuréeenheures,minutes,secondes,...

celaimpliqueraitd’im

plémenterlesalgorithmesqu’onveut

comparer

9Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

9/36

Page 14: cours complexit V1 - ESEN

Tempsd’exécution

Evaluationdela

rapiditéd’unalgorithme

Onnemesure

pasladuréeenheures,minutes,secondes,...

celaimpliqueraitd’im

plémenterlesalgorithmesqu’onveut

comparer

deplus,cesmesuresneseraientpaspertinentescarlemême

algorithmesera

plusrapidesurunemachinepluspuissante

9Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

9/36

Page 15: cours complexit V1 - ESEN

Tempsd’exécution

Evaluationdela

rapiditéd’unalgorithme

Onnemesure

pasladuréeenheures,minutes,secondes,...

celaimpliqueraitd’im

plémenterlesalgorithmesqu’onveut

comparer

deplus,cesmesuresneseraientpaspertinentescarlemême

algorithmesera

plusrapidesurunemachinepluspuissante

Aulieudeca,onutilisedesunitésdetempsabstraites

proportionnellesaunombre

d’opérationseffectuées

Aubesoin,onpourraensuiteadaptercesquantitésenfonctionde

lamachinesurlaquelle

l’algorithmes’exécute

9Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

9/36

Page 16: cours complexit V1 - ESEN

Tempsd’exécution

Calculdutempsd’exécution

Règles:

Chaqueinstructionbasiqueconsommeuneunitédetemps

(affectationd’unevariable,comparaison,...)

10

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

10/36

Page 17: cours complexit V1 - ESEN

Tempsd’exécution

Calculdutempsd’exécution

Règles:

Chaqueinstructionbasiqueconsommeuneunitédetemps

(affectationd’unevariable,comparaison,...)

Chaqueitérationd’unebouclerajoute

lenombre

d’unitésde

tempsconsomméesdanslecorpsdecetteboucle

10

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

10/36

Page 18: cours complexit V1 - ESEN

Tempsd’exécution

Calculdutempsd’exécution

Règles:

Chaqueinstructionbasiqueconsommeuneunitédetemps

(affectationd’unevariable,comparaison,...)

Chaqueitérationd’unebouclerajoute

lenombre

d’unitésde

tempsconsomméesdanslecorpsdecetteboucle

Chaqueappeldefonctionrajoute

lenombre

d’unitésdetemps

consomméesdanscettefonction

10

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

10/36

Page 19: cours complexit V1 - ESEN

Tempsd’exécution

Calculdutempsd’exécution

Règles:

Chaqueinstructionbasiqueconsommeuneunitédetemps

(affectationd’unevariable,comparaison,...)

Chaqueitérationd’unebouclerajoute

lenombre

d’unitésde

tempsconsomméesdanslecorpsdecetteboucle

Chaqueappeldefonctionrajoute

lenombre

d’unitésdetemps

consomméesdanscettefonction

Pouravoirlenombre

d’opérationseffectuéesparl’algorithme,on

additionneletout

10

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

10/36

Page 20: cours complexit V1 - ESEN

Tempsd’exécution

Tempsdecalculd’unefonctionFactorielle

L’algorithmesuivantcalculen!=

n∗(n−1)∗(n−2)∗....∗1avec0!

=1

int

factorielle(n)

fact

=1;

i=

2;

while

(i

<=

n)

fact

=fact*i;

i=

i+

1;

return

fact

11

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

11/36

Page 21: cours complexit V1 - ESEN

Tempsd’exécution

Tempsdecalculd’unefonctionFactorielle

L’algorithmesuivantcalculen!=

n∗(n−1)∗(n−2)∗....∗1avec0!

=1

int

factorielle(n)

fact

=1;

initialisation(1)

i=

2;

affectation

(1)

while

(i

<=

n)

comparaison

(1)

fact

=fact*i;

aff.

+multip.(2)

i=

i+

1;

affectation

+addition

(2)

return

fact

retour

(1)

12

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

12/36

Page 22: cours complexit V1 - ESEN

Tempsd’exécution

Tempsdecalculd’unefonctionFactorielle

L’algorithmesuivantcalculen!=

n∗(n−1)∗(n−2)∗....∗1avec0!

=1

int

factorielle(n)

fact

=1;

initialisation(1)

i=

2;

affectation

(1)

while

(i

<=

n)

comparaison

(1)

fact

=fact*i;

aff.

+multip.(2)

i=

i+

1;

affectation

+addition

(2)

return

fact

retour

(1)

Tempsdecalcul=1+1+(2+2+1)*(n-1)+1+1=5n-1

opérations

12

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

12/36

Page 23: cours complexit V1 - ESEN

Tempsd’exécution

TempsdeCalculexacte

onpeutcalculerletempsdecalculexacte

surlamachine

ExempleenJAVA:

int

factorielle(n)

long

deb=System.nanoTime();

fact

=1;

i=

2;

while

(i

<=

n)

fact

=fact*i;

i=

i+

1;

long

fin=System.nanoTime();

long

temps=fin-deb;

System.out.println(temps);

return

fact

13

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

13/36

Page 24: cours complexit V1 - ESEN

Tempsd’exécution

Problèmes

Unitésdetempsabstraites

dependdesdonnées

dependdelanature

desdonnées(variables):onnesaitpastoujourscombiende

foisexactementonva

effectueruneboucle

Demême,lorsd’unbranchementconditionnel,lenombre

decomparaisons

effectuéesn’estpastoujourslemême

Tempsexacte

dependdelapuissancedelamachine

dependdelanature

desdonnées(variables):sionchangelesdonnées,le

tempschange

14

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

14/36

Page 25: cours complexit V1 - ESEN

Complexitéalgorithmique

Complexitéalgorithmique

Lacomplexitéd’unalgorithmeestunemesure

desaperform

anceasymptoptique

danslepirecas

quesignifieasymtotique?

ons’intéresseàdesdonnéestrèsgrandes

pourquoi?

lespetitesvaleursnesontpasassezinform

atives

Quesignifie"danslepirecas"?

ons’intéresseàlaperform

ancedel’algorithmedanslessituationsoùle

problèmeprendleplusdetempsàrésoudre

pourquoi?

onveutêtresûrquel’algorithmeneprendra

jamaisplusdetempsquecequ’on

aestimé

15

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

15/36

Page 26: cours complexit V1 - ESEN

Complexitéalgorithmique

Comparaisondutempsdecalcul

Soitunproblèmeàrésoudre

surdesdonnéesdetaillen,et

Deuxalgorithmesrésolvantceproblèmeenuntempsf1(n

)etf2(n

)

Quelalgorithmepréférez-vous?

16

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

16/36

Page 27: cours complexit V1 - ESEN

Complexitéalgorithmique

Comparaisondutempsdecalcul

Soitunproblèmeàrésoudre

surdesdonnéesdetaillen,et

Deuxalgorithmesrésolvantceproblèmeenuntempsf1(n

)etf2(n

)

Quelalgorithmepréférez-vous?

16

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

16/36

Page 28: cours complexit V1 - ESEN

Complexitéalgorithmique

Passageàla

complexitéasymptotique

Deplus,ledegré

deprécisionqu’ilsrequièrentestsouventinutile

Onaura

doncrecoursàuneapproximationdecetempsdecalcul,représentée

parlanotationO(.)

17

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

17/36

Page 29: cours complexit V1 - ESEN

Complexitéalgorithmique

Notationsasymptotiques

Soitnlatailledesdonnéesàtraiter,onditqu’unefonctionf(n

)estenO(g(n

))si:

∃n0∈N,∃c∈R,∀n>=

n0:|f(n

)|<=

c|g(n

)|

f(n

)estenO(g(n

))s’ilexiste

unseuilàpartirduquellafonctionf(.)est

toujoursdominéeparlafonctiong(.),àuneconstante

multiplicative

fixéeprès; 18

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

18/36

Page 30: cours complexit V1 - ESEN

Complexitéalgorithmique

Notationsasymptotiques

Soitnlatailledesdonnéesàtraiter,onditqu’unefonctionf(n

)estenO(g(n

))si:

∃n0∈N,∃c∈R,∀n>=

n0:|f(n

)|<=

c|g(n

)|

f(n

)estenO(g(n

))s’ilexiste

unseuilàpartirduquellafonctionf(.)est

toujoursdominéeparlafonctiong(.),àuneconstante

multiplicative

fixéeprès;

Exemples:quelquescasoùf(n

)=

O(g(n

))

18

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

18/36

Page 31: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

decalculdeO(.)

Prouvonsquelafonctionf1(n

)=

5n+

37estenO(n

):

19

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

19/36

Page 32: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

decalculdeO(.)

Prouvonsquelafonctionf1(n

)=

5n+

37estenO(n

):

but:trouveruneconstante

c∈Retunseuiln0∈N

àpartirduquel

|f1(n

0)|<=

c|n0|.

19

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

19/36

Page 33: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

decalculdeO(.)

Prouvonsquelafonctionf1(n

)=

5n+

37estenO(n

):

but:trouveruneconstante

c∈Retunseuiln0∈N

àpartirduquel

|f1(n

0)|<=

c|n0|.

onremarqueque|5n+

37|<=|6n|sin>=

37

ondéduitdoncquec=

6fonctionneàpartirdun0=

37

Remarque:onnedemandepasd’optimisation(lepluspetitcoun0qui

fonctionne)

juste

ilfautdonnerdesvaleursquifonctionnent(c

=10etn0=

8estdoncaussi

acceptable)

19

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

19/36

Page 34: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

decalculdeO(.)

Prouvonsquelafonctionf2(n

)=

6n2+

2n−

8estenO(n

2):

20

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

20/36

Page 35: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

decalculdeO(.)

Prouvonsquelafonctionf2(n

)=

6n2+

2n−

8estenO(n

2):

but:trouverunseuiln0∈N

àpartirduquel:|6n2 0+

2n0−

8|<=

c|n2 0|

cherchonsd’abord

laconstante

c;c=

6nepeutpasmarcher,essayonsdonc

c=

7

ondoitalorstrouverunseuiln0∈N

àpartirduquel

:|6n2+

2n−

8|<=

7|n

2|∀n>=

n0;

c=

7etn0=

1

20

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

20/36

Page 36: cours complexit V1 - ESEN

Complexitéalgorithmique

Règlesdecalcul

Oncalculeletempsd’exécution,maisoneffectuelessimplificationssuivantes:

onoublie

lesconstantesmultiplicatives(ellesvalent1)

onannulelesconstantesadditives

onneretientquelesterm

esdominants

Exemple(simplifications)Soitg(n

)=

4n3−

5n2+

2n+

3opérations

onremplacelesconstantesmultiplicativespar1:1n

3−1n

2+1n+3

onannulelesconstantesadditives:n3−

n2+n+0

ongardeleterm

edeplushautdegré

:n3+0

onadoncg(n)=

O(n

3).

21

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

21/36

Page 37: cours complexit V1 - ESEN

Complexitéalgorithmique

Justificationdessim

plifications

Lesprocesseursactuelseffectuentplusieursmilliardsd’opérationsàla

seconde

uneaffectationrequière

2ou4unitésdetempsnechangedoncpasgrand-chose

d’oùleremplacementdesconstantespardes1pourlesmultiplications

22

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

22/36

Page 38: cours complexit V1 - ESEN

Complexitéalgorithmique

Justificationdessim

plifications

Lesprocesseursactuelseffectuentplusieursmilliardsd’opérationsàla

seconde

uneaffectationrequière

2ou4unitésdetempsnechangedoncpasgrand-chose

d’oùleremplacementdesconstantespardes1pourlesmultiplications

unnombre

constantd’instructionsestdoncaussinégligeableparrapportàla

croissancedelatailledesdonnées

d’oùl’annulationdesconstantesadditives

22

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

22/36

Page 39: cours complexit V1 - ESEN

Complexitéalgorithmique

Justificationdessim

plifications

Lesprocesseursactuelseffectuentplusieursmilliardsd’opérationsàla

seconde

uneaffectationrequière

2ou4unitésdetempsnechangedoncpasgrand-chose

d’oùleremplacementdesconstantespardes1pourlesmultiplications

unnombre

constantd’instructionsestdoncaussinégligeableparrapportàla

croissancedelatailledesdonnées

d’oùl’annulationdesconstantesadditives

pourdegrandesvaleursden,leterm

edeplushautdegré

l’emportera

d’oùl’annulationdesterm

esinférieurs

22

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

22/36

Page 40: cours complexit V1 - ESEN

Complexitéalgorithmique

combinaisondecomplexité

Lesinstructionsdebaseprennentuntempsconstant,noté

O(1)

Onadditionnelescomplexitésd’opérationsenséquence:

O(f

1(n

))+

O(f

2(n

))=

O(f

1(n

)+

f2(n

))

Mêmechosepourlesbranchementsconditionnels:

23

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

23/36

Page 41: cours complexit V1 - ESEN

Complexitéalgorithmique

combinaisondecomplexité

Danslesboucles,onmultiplie

lacomplexitéducorpsdelaboucleparlenombre

d’itérations;

Lacomplexitéd’unebouclewhile

secalculecommesuit:

24

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

24/36

Page 42: cours complexit V1 - ESEN

Complexitéalgorithmique

EtapesdeCalculdela

complexité

Pourcalculerlacomplexitéd’unalgorithme:

1oncalculelacomplexitédechaquepartiedel’algorithme

2oncombinecescomplexitésconform

émentauxrèglesqu’onvientdevoir

3onsimplifielerésultatgrâceauxrèglesdesimplificationsqu’onavues;

Elim

inationdesconstantes,

conservationdu(des)term

e(s)dominant(s)

25

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

25/36

Page 43: cours complexit V1 - ESEN

Complexitéalgorithmique

Complexitédela

fonctionFactorielle

int

factorielle(n)

fact

=1;

O(1)

i=

2;

O(1)

while

(i

<=

n)

O(n)

fact

=fact*i;

O(1)

i=

i+

1;

O(1)

return

fact

O(1)

26

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

26/36

Page 44: cours complexit V1 - ESEN

Complexitéalgorithmique

Complexitédela

fonctionFactorielle

int

factorielle(n)

fact

=1;

O(1)

i=

2;

O(1)

while

(i

<=

n)

O(n)

fact

=fact*i;

O(1)

i=

i+

1;

O(1)

return

fact

O(1)

Complexitédelafonction=O(1)+O(n)*O(1)+O(1)=O(n)

26

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

26/36

Page 45: cours complexit V1 - ESEN

Complexitéalgorithmique

ClassesdeComplexité

Onpeutrangerlesfonctionséquivalentesdanslamêmeclasse

Deuxalgorithmesappartenantàlamemeclassesontconsidérésdememe

complexité

Lesclassesdecomplexitélesplusfréquentes(parordre

croissantenterm

esde

O(.))

Complexité

Classe

O(1)

constant

O(logn)

logarithmique

O(n

)linéaire

O(n

logn)

sous-quadratique

O(n

2)

quadratique

O(n

3)

cubique

O(2

n)

exponentiel

O(n

!)factorielle

27

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

27/36

Page 46: cours complexit V1 - ESEN

Complexitéalgorithmique

Problèmefacileetproblèmedifficile

Pourcomparerdeuxalgorithmes,ilfautêtrecapabledesituerleurcomplexité

Unepremière

distinctiondoitêtrefaiteentrelesdeuxclassessuivantes:

lesalgorithmesditspolynomiaux,dontlacomplexitéestenO(n

k)

pouruncertain

k

lesalgorithmesditsexponentiels,dontlacomplexiténepeutpas

êtremajoréeparunefonctionpolynomiale

Classificationdesproblèmes

unproblèmedecomplexitépolynomialeestconsidéré

"facile"

sinon(complexiténon-polynomialeouinconnue)ilestconsidéré

"difficile"

28

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

28/36

Page 47: cours complexit V1 - ESEN

Complexitéalgorithmique

Classificationdesproblèmes:PetNP

LaclasseP:estl’ensembledesproblèmesqu’onpeutrésoudre

avecun

algorithmedecomplexitépolynomiale;

LaclasseNPestl’ensembledesproblèmesnonpolynomiaux,maisdontonpeut

vérifierunesolutionavecunalgorithmedecomplexitépolynomiale

Laquestionquireste

nonencore

résolue:P

=NPoubienP6=

NP

Unalgorithmeestditefficacesisacomplexitéestauplusdel’ordre

Polynomiale.

29

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

29/36

Page 48: cours complexit V1 - ESEN

Complexitéalgorithmique

Intérêtdela

classificationdesproblèmes

Démonstrationetsim

plificationdela

résolutionduproblème

Onpeutparfoismontrerquedeuxproblèmesdonnées

sontéquivalents

ouquel’onpeutrésoudre

l’unàl’aidedel’autre

30

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

30/36

Page 49: cours complexit V1 - ESEN

Complexitéalgorithmique

Intérêtdela

classificationdesproblèmes

Démonstrationetsim

plificationdela

résolutionduproblème

Onpeutparfoismontrerquedeuxproblèmesdonnées

sontéquivalents

ouquel’onpeutrésoudre

l’unàl’aidedel’autre

Exemple

sionpeutrésoudre

leproblèmeP1enrésolvantleproblèmeP2,alorsona

directementunalgorithmepourP1grâceàP2

onadonccomplexité(P

1)<=complexité(P

2)

onnepeutdoncpasrésoudre

P2plusvitequeP1

30

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

30/36

Page 50: cours complexit V1 - ESEN

Complexitéalgorithmique

Intérêtdela

classificationdesproblèmes

Etudedelacomplexitéetdel’existanced’unesolution

Exempledel’employéetdesondirecteurquiluiadonnéunproblèmedifficile

Réponse1:Jen’arrivepasàtrouverd’algorithmeefficace,jedoisêtretropnul 31

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

31/36

Page 51: cours complexit V1 - ESEN

Complexitéalgorithmique

Intérêtdela

classificationdesproblèmes

Etudedelacomplexitéetdel’existanced’unesolution

Exempledel’employéetdesondirecteurquiluiadonnéunproblèmedifficile

Réponse1:Jen’arrivepasàtrouverd’algorithmeefficace,jedoisêtretropnul

Réponse2:Jen’arrivepasàtrouverd’algorithmeefficace,cariln’enexistepas!!

suitereponse2:etd’ailleurs,touslesgéniesn’yarriverontpasnonplus.

31

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

31/36

Page 52: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Rechercherlepluspetit(ouplusgrand)éléementdansunensemblededonnées

Trierunensemblededonnées

Rechercherlesoccurrencesd’unesouschainedansuntexte.

Calculerl’itinérairelepluscourtentredeuxsommetsd’ungraphe

32

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

32/36

Page 53: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Rechercherlepluspetit(ouplusgrand)éléementdansunensemblededonnées

Trierunensemblededonnées

Rechercherlesoccurrencesd’unesouschainedansuntexte.

Calculerl’itinérairelepluscourtentredeuxsommetsd’ungraphe

CesproblèmessontFaciles(classeP)

32

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

32/36

Page 54: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problème:subsetsum

Données:unensemble

Sdenentiers;

Question:existe-t-ilunsous-ensemble

S′⊂

Sdontlasommedesélémentsest

nulle

?

Exemple:S={−7,−

3,−

2,5,8};S′={−3,−

2,5}estunesolution

33

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

33/36

Page 55: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problème:subsetsum

Données:unensemble

Sdenentiers;

Question:existe-t-ilunsous-ensemble

S′⊂

Sdontlasommedesélémentsest

nulle

?

Exemple:S={−7,−

3,−

2,5,8};S′={−3,−

2,5}estunesolution

Problème:partition

Donnèes:unensemble

Sdenombres(répétitionsautorisées);

Question:peut-onséparerSendeuxsous-ensemblesAetBtelsque

∑a∈Aa=

∑b∈Bb

SiS={3;1;2;2;1}alors

A={3;1}etB

={2;2}estunesolution

33

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

33/36

Page 56: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problème:subsetsum

Données:unensemble

Sdenentiers;

Question:existe-t-ilunsous-ensemble

S′⊂

Sdontlasommedesélémentsest

nulle

?

Exemple:S={−7,−

3,−

2,5,8};S′={−3,−

2,5}estunesolution

Problème:partition

Donnèes:unensemble

Sdenombres(répétitionsautorisées);

Question:peut-onséparerSendeuxsous-ensemblesAetBtelsque

∑a∈Aa=

∑b∈Bb

SiS={3;1;2;2;1}alors

A={3;1}etB

={2;2}estunesolution

Cesproblèmessontdifficiles(classeNP)

33

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

33/36

Page 57: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problèmeisomorphismedegraphes

Données:deuxgraphesG1etG2

Question:G1etG2sont-ils

lesmêmes?(peut-onnuméroterleurssommetsde

manière

àobtenirdeuxensemblesd’arêtesidentiques?)

34

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

34/36

Page 58: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problèmeisomorphismedegraphes

Données:deuxgraphesG1etG2

Question:G1etG2sont-ils

lesmêmes?(peut-onnuméroterleurssommetsde

manière

àobtenirdeuxensemblesd’arêtesidentiques?)

35

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

35/36

Page 59: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problèmeisomorphismedegraphes

Données:deuxgraphesG1etG2

Question:G1etG2sont-ils

lesmêmes?(peut-onnuméroterleurssommetsde

manière

àobtenirdeuxensemblesd’arêtesidentiques?)

36

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

36/36

Page 60: cours complexit V1 - ESEN

Complexitéalgorithmique

Exemple

deProblèmes

Problèmeisomorphismedegraphes

Données:deuxgraphesG1etG2

Question:G1etG2sont-ils

lesmêmes?(peut-onnuméroterleurssommetsde

manière

àobtenirdeuxensemblesd’arêtesidentiques?)

Ceproblèmeestdecomplexitéinconnu

36

Chiheb-EddineBenN’Cir

(ESEN)

Cours

ComplexitéAlgorithmique

2016

36/36