algorithmiques et structures de données 01 cours + tds + tpschapitre 2 complexité...

48

Upload: others

Post on 11-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡s ❡t

❙tr✉❝t✉r❡s ❞❡ ❞♦♥♥é❡s ✵✶

❈♦✉rs ✰ ❚❉s ✰ ❚Ps❱❡rs✐♦♥ ✶✳✵✳✵

▼r✳ ■s♠❛✐❧ ❍❆❉❏❆❉❏

❖❝t♦❜r❡ ✷✵✶✸

Page 2: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶

❘❡♠❛rq✉❡ ✿❈❡ ❞♦❝✉♠❡♥t ♥✬❡st ♣❛s ré✈✐sé✱ ✈♦✉s ♣♦✉✈❡③ tr♦✉✈❡r ❞❡s ❡rr❡✉rs ❞✬♦rt❤♦❣r❛♣❤❡s✱ ❞❡ s❛✐s✐❡s ❡t ❛✉tr❡s✳

Page 3: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❚❛❜❧❡ ❞❡s ♠❛t✐èr❡s

✶ ●é♥ér❛❧✐tés ✺✶✳✶ ■♥tr♦❞✉❝t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✺✶✳✷ ❆❧❣♦r✐t❤♠❡✭❉é✜♥✐t✐♦♥✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✺✶✳✸ ❙tr✉❝t✉r❡ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ✿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✻✶✳✹ ❙♦✉s✲Pr♦❣r❛♠♠❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✻

✶✳✹✳✶ P❛ss❛❣❡ ❞❡ ♣❛r❛♠ètr❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✻✶✳✺ ▲✬✐♥❞é❝✐❞❛❜✐❧✐té ❞❡ t❡r♠✐♥❛✐s♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✼✶✳✻ ❈♦♥❝❡♣t✐♦♥ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✽

✶✳✻✳✶ ❆♥❛❧②s❡ ❞❡s❝❡♥❞❡♥t ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✽✶✳✻✳✷ ❆♥❛❧②s❡ ❛s❝❡♥❞❛♥t❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✽✶✳✻✳✸ ♠é❧❛♥❣❡ ❞❡s ❞❡✉① ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✽

✶✳✼ ❈♦♥❝❧✉s✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✽✶✳✽ ❊①❡r❝✐❝❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✾

✷ ❈♦♠♣❧❡①✐té ❞✬❆❧❣♦r✐t❤♠❡s ✶✵✷✳✶ ■♥tr♦❞✉❝t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✷✳✷ ◗✉❛❧✐té ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵

✷✳✷✳✶ ◗✉❛❧✐té ❞✬é❝r✐t✉r❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✷✳✷✳✷ ❚❡r♠✐♥❛✐s♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✷✳✷✳✸ ❱❛❧✐❞✐té ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✷✳✷✳✹ P❡r❢♦r♠❛♥❝❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵

✷✳✸ ❈♦♠♣❧❡①✐té ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✵✷✳✹ ▼és✉r❡ ❞❡ ❝♦♠♣❧❡①✐té ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✷✳✺ ❈♦♠♣❧❡①✐té ♠♦②❡♥♥❡ ❡t ❡♥ ♣✐r❡ ❞❡s ❝❛s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶

✷✳✺✳✶ ❚❡♠♣s ❧❡ ♣❧✉s ♠♦✉✈❛✐s✭❡♥ ♣✐r❡ ❞❡s ❝❛s✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶✷✳✺✳✷ ❚❡♠♣s ♠♦②❡♥♥❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✶

✷✳✻ ◆♦t❛t✐♦♥ ✉t✐❧✐sé❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✸✷✳✻✳✶ ◆♦t❛t✐♦♥ ✧o✧ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✸✷✳✻✳✷ ◆♦t❛t✐♦♥ ✧O✧ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✸

✷✳✼ ❯♥ ❝❧❛ss❡♠❡♥t ❞❡s ❢♦♥❝t✐♦♥s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✸✷✳✽ ❊①❡r❝✐❝❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✹

✷✳✽✳✶ ❊①❡r❝✐❝❡ ✵✶ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✹✷✳✽✳✷ ❊①❡r❝✐❝❡ ✵✷ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✹✷✳✽✳✸ ❊①❡r❝✐❝❡ ✵✸ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✺✷✳✽✳✹ ❊①❡r❝✐❝❡ ✵✹ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✻✷✳✽✳✺ ❊①❡r❝✐❝❡ ✵✺ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✻

Page 4: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸

✸ ▲❛ ré❝✉rs✐✈✐té ✶✼✸✳✶ ■♥tr♦❞✉❝t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✼✸✳✷ ❉é✜♥✐t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✼✸✳✸ ❊①❡♠♣❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✽

✸✳✸✳✶ ❊①❡♠♣❧❡✶ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✽✸✳✸✳✷ ❊①❡♠♣❧❡✷ ✿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✽

✸✳✹ ❘è❣❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾✸✳✺ ❘é❝✉rs✐✈✐té ❝r♦✐sé❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾

✸✳✺✳✶ ❊①❡♠♣❧❡ ✿ P❛✐r❡ ♦✉ ✐♠♣❛✐r❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✶✾✸✳✻ Pr♦❜❧è♠❡✭❧❡s t♦✉rs ❞✬❍❛♥♦ï✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✵✸✳✼ ❈♦♥❝❧✉s✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✶✸✳✽ ❊①❡r❝✐❝❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷

✸✳✽✳✶ ❊①❡r❝✐❝❡ ✵✶ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✸✳✽✳✷ ❊①❡r❝✐❝❡ ✵✷ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✸✳✽✳✸ ❊①❡r❝✐❝❡ ✵✸ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✸✳✽✳✹ ❊①❡r❝✐❝❡ ✵✹ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷✸✳✽✳✺ ❊①❡r❝✐❝❡ ✵✺ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✷

✸✳✾ ❚P ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✹✸✳✾✳✶ ❘❡❝❤❡r❝❤❡ ✉♥ é❧é♠❡♥t ❞❛♥s ✉♥ t❛❜❧❡❛✉ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✹✸✳✾✳✷ ❘❡❝❤❡r❝❤❡ ❙éq✉❡♥t✐❡❧❧❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✹✸✳✾✳✸ ❘❡❝❤❡r❝❤❡ ❞✐❝❤♦t♦♠✐q✉❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✹✸✳✾✳✹ ❈♦♠♣❧❡①✐té ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✺

✹ ❙tr✉❝t✉r❡ ❞❡ ❞♦♥♥é❡s ✷✻✹✳✶ ❚②♣❡s ❞❡ ❞♦♥♥é❡s ❛❜str❛✐ts ✭❚❉❆✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✹✳✷ ❉é✜♥✐t✐♦♥ ❞✬✉♥ t②♣❡ ❛❜str❛✐t ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻

✹✳✷✳✶ ❊①❡♠♣❧❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✻✹✳✸ ▲✬✐♠♣❧❛♥t❛t✐♦♥ ❉✬✉♥ ❚②♣❡ ❆❜str❛✐t ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✼✹✳✹ ❯t✐❧✐s❛t✐♦♥ ❞❡ t②♣❡ ❛❜str❛✐t ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✼

✺ ❙tr✉❝t✉r❡s ❧✐♥é❛✐r❡s✲▲❡s ▲✐st❡s ✷✽✺✳✶ ■♥tr♦❞✉❝t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✽✺✳✷ ❉é✜♥✐t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✽✺✳✸ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✽

✺✳✸✳✶ ❊♥s❡♠❜❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✽✺✳✸✳✷ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✺✳✸✳✸ ❉é✜♥✐t✐♦♥ ❛①✐♦♠❛t✐q✉❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾

✺✳✹ ■♠♣❧✐♠❡♥t❛t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✺✳✹✳✶ ■♠♣❧é♠❡♥t❛t✐♦♥ ❝♦♥t✐❣✉ë✭❯t✐❧✐s❛t✐♦♥ ❞✬✉♥ t❛❜❧❡❛✉✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✷✾✺✳✹✳✷ ■♠♣❧é♠❡♥t❛t✐♦♥ ❝❤❛î♥é❡s✭❯t✐❧✐s❛t✐♦♥ ❞✬✉♥❡ str✉❝t✉r❡ ❝❤❛î♥é❡✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✸

✺✳✺ ❊①❡r❝✐❝❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✼✺✳✺✳✶ ❊①❡r❝✐❝❡ ✵✶ ✿ P♦✐♥t❡✉rs ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✼✺✳✺✳✷ ❊①❡r❝✐❝❡ ✵✷ ✿ P♦✐♥t❡✉rs ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✼✺✳✺✳✸ ❊①❡r❝✐❝❡ ✵✸ ✿ ❧❡s ❧✐st❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✽✺✳✺✳✹ ❊①❡r❝✐❝❡ ✵✹ ✿❧❡s ❧✐st❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✽✺✳✺✳✺ ❊①❡r❝✐❝❡ ✵✺ ✿❧❡s ❧✐st❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✽✺✳✺✳✻ ❊①❡r❝✐❝❡ ✵✻ ✿❆❧❣♦r✐t❤♠❡s ❞❡ ❜❛s❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✽✺✳✺✳✼ ❊①❡r❝✐❝❡ ✵✼ ✿❯♥ ♣❡✉ ❛✈❛♥❝és ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✽✺✳✺✳✽ ❊①❡r❝✐❝❡ ✵✽ ✿ ❉✐✛ér❡♥❝❡ ❞❡ ❞❡✉① ❧✐st❡s ❧✐♥é❛✐r❡s ❝❤❛î♥é❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✸✾

Page 5: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹

✺✳✺✳✾ ❊①❡r❝✐❝❡ ✵✾ ✿ ❘é❛❧✐s❡r ❧❡ ❝❤❛î♥❛❣❡ ❛rr✐èr❡ ❞✬✉♥❡ ❧✐st❡ ❞♦✉❜❧❡♠❡♥t ❝❤❛î♥é❡ ✳ ✳ ✳ ✳ ✳ ✸✾✺✳✻ ❚P ✿ ❉✐❝t✐♦♥♥❛✐r❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✵

✺✳✻✳✶ Pr♦❜❧è♠❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✵✺✳✻✳✷ ■♠♣❧é♠❡♥t❛t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✵

✻ ▲❡s P✐❧❡s ✹✶✻✳✶ ■♥tr♦❞✉❝t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✶✻✳✷ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✶

✻✳✷✳✶ ❊♥s❡♠❜❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✶✻✳✷✳✷ ❉❡s❝r✐♣t✐♦♥ ❢♦♥❝t✐♦♥♥❡❧❧❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✶✻✳✷✳✸ ❉❡s❝r✐♣t✐♦♥ ❛①✐♦♠❛t✐q✉❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✶

✻✳✸ ✐♠♣❧é♠❡♥t❛t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✷✻✳✸✳✶ ❯t✐❧✐s❛t✐♦♥ ❞❡s t❛❜❧❡❛✉① ✭■♠♣❧é♠❡♥t❛t✐♦♥ ❈♦♥t✐❣✉ë✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✷✻✳✸✳✷ ❯t✐❧✐s❛t✐♦♥ ❞❡s ♣♦✐♥t❡✉rs ✭■♠♣❧é♠❡♥t❛t✐♦♥ ❝❤❛î♥é❡✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✸

✻✳✹ ❊①❡r❝✐❝❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✹✻✳✹✳✶ ❊①❡r❝✐❝❡ ✵✷ ✿❆❧❣♦✳ ❞❡ ❜❛s❡ s✉r ❧❡s P✐❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✹✻✳✹✳✷ ❊①❡r❝✐❝❡ ✵✸ ✿❯♥ ♣❡✉ ❛✈❛♥❝és ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✹✻✳✹✳✸ ❊①❡r❝✐❝❡ ✵✸ ✿ ■♥✈❡rs❡r ♣✐❧❡ ❡t ✜❧❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✹

✼ ▲❡s ❋✐❧❡s ✹✺✼✳✶ ■♥tr♦❞✉❝t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✺✼✳✷ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✺

✼✳✷✳✶ ❊♥s❡♠❜❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✺✼✳✷✳✷ ❉❡s❝r✐♣t✐♦♥ ❢♦♥❝t✐♦♥♥❡❧❧❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✺✼✳✷✳✸ ❉❡s❝r✐♣t✐♦♥ ❛①✐♦♠❛t✐q✉❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✺

✼✳✸ ✐♠♣❧❛♥t❛t✐♦♥ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✻✼✳✸✳✶ ❯t✐❧✐s❛t✐♦♥ ❞❡s t❛❜❧❡❛✉① ✭■♠♣❧é♠❡♥t❛t✐♦♥ ❈♦♥t✐❣✉ë✮ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✻

✼✳✹ ❊①❡r❝✐❝❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✼✼✳✹✳✶ ❊①❡r❝✐❝❡ ✵✶ ✿ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✼✼✳✹✳✷ ❊①❡r❝✐❝❡ ✵✷ ✿❆❧❣♦✳ ❞❡ ❜❛s❡ s✉r ❧❡s ❋✐❧❡s ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✼✼✳✹✳✸ ❊①❡r❝✐❝❡ ✵✸ ✿❯♥ ♣❡✉ ❛✈❛♥❝és ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✼✼✳✹✳✹ ❊①❡r❝✐❝❡ ✵✸ ✿ ■♥✈❡rs❡r ✉♥❡ ✜❧❡ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✹✼

Page 6: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✶

●é♥ér❛❧✐tés

✶✳✶ ■♥tr♦❞✉❝t✐♦♥

♣♦✉r rés♦✉❞r❡ ✉♥ ♣r♦❜❧è♠❡ ❞♦♥♥é❡ ♣❛r ❧✬✐♥❢♦r♠❛t✐q✉❡ ❧✬✉t✐❧✐s❛t❡✉r ❞❡ ❧✬♦r❞✐♥❛t❡✉r ❞♦✐t ♠❡ttr❡ ❛✉♣♦✐♥t ✉♥ ♣r♦❣r❛♠♠❡ ❡t ❧✬❡①é❝✉t✐♦♥ ♣❛r ❧❛ ♠❛❝❤✐♥❡❯♥ ♣r♦❣r❛♠♠❡ ❡st ✉♥❡ s✉❝❝❡ss✐♦♥ ❧♦❣✐q✉❡ ❡t ♦r❞♦♥♥é❡ ❞✬✐♥str✉❝t✐♦♥sP♦✉r é❝r✐r❡ ✉♥ ♣r♦❣r❛♠♠❡ ✐❧ ❢❛✉t ✿

✕ ❇✐❡♥ ❝♦♥♥❛îtr❡ ❧❡ ♣r♦❜❧è♠❡ ❀✕ ❙✬❛✈♦✐r ❧❡ ❞é❝♦✉♣❡r ❧♦❣✐q✉❡♠❡♥t ❡♥ ✉♥ ❡♥s❡♠❜❧❡ ❞✬♦♣ér❛t✐♦♥s é❧é♠❡♥t❛✐r❡s✭❛❝t✐♦♥s✮ ❀✕ ❈♦♥♥❛îtr❡ ✉♥ ❧❛♥❣✉❡ ❞❡ ♣r♦❣r❛♠♠❛t✐♦♥✳♣r♦❜❧è♠❡ −→ ❆❧❣♦r✐t❤♠❡ −→ ♣r♦❣r❛♠♠❡

✶✳✷ ❆❧❣♦r✐t❤♠❡✭❉é✜♥✐t✐♦♥✮

❯♥ ❛❧❣♦r✐t❤♠❡ ❡st ✉♥❡ ✧❙♣é❝✐✜❝❛t✐♦♥ ❞✬✉♥ s❝❤é♠❛ ❞❡ ❝❛❧❝✉❧❡ s♦✉s ❢♦r♠❡ ❞✬✉♥❡ s✉✐t❡ ✜♥✐❡ ❞✬♦♣ér❛t✐♦♥é❧é♠❡♥t❛✐r❡ à ✉♥ ❡♥❝❤❛î♥❡♠❡♥t ❞ét❡r♠✐♥é✧✳❖✉ ❡♥❝♦r❡ ✿▲❛ ❞❡s❝r✐♣t✐♦♥ ❞❡s ét❛♣❡s à s✉✐✈r❡ ♣♦✉r ré❛❧✐s❡r ✉♥ tr❛✈❛✐❧✳

❯♥ ♣r♦❣r❛♠♠❡ ❡st ✭❞♦♥❝✮ ❧❛ ❞❡s❝r✐♣t✐♦♥ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ❞❛♥s ✉♥ ❧❛♥❣❛❣❡ ❞❡ ♣r♦❣r❛♠♠❛t✐♦♥✳❘❡♠❛rq✉❡ ✿❯♥ ❛❧❣♦r✐t❤♠❡ ❡st ✐♥❞é♣❡♥❞❛♥t ❞✉ ❧❛♥❣❛❣❡ ❞❡ ♣r♦❣r❛♠♠❛t✐♦♥✭❉♦♥❝ ❧❛ ♠❛❝❤✐♥❡✮✳

Page 7: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✻

✶✳✸ ❙tr✉❝t✉r❡ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ✿

▲❛ str✉❝t✉r❡ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ❡st ❞♦♥❝ ✿❆❧❣♦r✐t❤♠❡ ✶✿ ◆♦♠❉❡▲❆❧❣♦r✐t❤♠❡❈♦♥st ✿ ❝♦♥st✶✱❝♦♥t✷✱✳✳✳✳❂❱❛r ✿ ✈❛r✶✱✈❛r✷✳✳✳ ✿t②♣❡

Pr♦❝é❞✉r❡ P✶✭✳✳✳✳✮

❞é❜✉t.........

✜♥

❋♦♥❝t✐♦♥ ❢✶✭✳✳✳✳✮ ✿t②♣❡

❞é❜✉t.........

✜♥

❞é❜✉t...P1(...)var1← f1(...)...

✜♥

✶✳✹ ❙♦✉s✲Pr♦❣r❛♠♠❡s

❯♥❡ ❢♦♥❝t✐♦♥ ❡st ✉♥ ❛❧❣♦r✐t❤♠❡ ✐♥❞é♣❡♥❞❛♥t✱ ❧✬❛♣♣❡❧ ❞❡ ❧❛ ❢♦♥❝t✐♦♥ ❞é❝❧❡♥❝❤❡ ❧✬❡①é❝✉t✐♦♥ ❞❡ s♦♥❜❧♦❝ ❞✬✐♥str✉❝t✐♦♥s✳ ❯♥❡ ❢♦♥❝t✐♦♥ s❡ t❡r♠✐♥❡ ❡♥t♦✉r❛♥t ♦✉ ♥♦♥ ✉♥❡ ✈❛❧❡✉r✳❯♥ ♣r♦❝é❞✉r❡ ❡st ✉♥❡ ❢♦♥❝t✐♦♥ q✉✐ r❡t♦✉r♥❡ ✈✐❞❡✳

✶✳✹✳✶ P❛ss❛❣❡ ❞❡ ♣❛r❛♠ètr❡

P❛r ✈❛❧❡✉r

❖♥ ❞✐t q✉✬✉♥ ♣r♦❝é❞✉r❡ ❢❛✐t ✉♥ ♣❛ss❛❣❡ ♣❛r ✈❛❧❡✉r✱ s✬✐❧ ♥❡ ❝❤❛♥❣❡ ♣❛s ❧❛ ✈❛❧❡✉r ❞❡ ✈❛r✐❛❜❧❡ ♣❛ssé✳

P❛r ré❢ér❡♥❝❡

■❧ s✬❛❣✐t ❞❡ ♠♦❞✐✜❝❛t✐♦♥ ❞✉ ✈❛❧❡✉r ❞✉ ✈❛r✐❛❜❧❡ ♣❛ssé✳

Page 8: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✼

❊①❡♠♣❧❡s

Pr♦❝é❞✉r❡ P✶✭① ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

♣♦✉r ✐❂✶ à ✶✵ ❢❛✐r❡x← x ∗ x

✜♥♣♦✉r

✜♥

Pr♦❝é❞✉r❡ P✶✭✈❛r ① ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

♣♦✉r ✐❂✶ à ✶✵ ❢❛✐r❡x← x ∗ x

✜♥♣♦✉r

✜♥

✶✳✺ ▲✬✐♥❞é❝✐❞❛❜✐❧✐té ❞❡ t❡r♠✐♥❛✐s♦♥

❙✉♣♣♦s♦♥s q✉❡ ❧❡ ♣r♦❜❧è♠❡ ❞❡ ❧✬❛rrêt s♦✐t ❞é❝✐❞❛❜❧❡⇒ ∃ ✉♥❡ ❢♦♥❝t✐♦♥ B q✉✐ ❞é❝✐❞❡ s✐ ✉♥ ♣r♦❣r❛♠♠❡ s✬❛rrêt❡⇒ B(X : programme) = trueB(X2 : programme) = false

❆❧❣♦r✐t❤♠❡ ✷✿ ❳❱❛r ✿ ② ✿❡♥t✐❡r❞é❜✉t

y ← 1❊❝r✐r❡✭②✮

✜♥

❆❧❣♦r✐t❤♠❡ ✸✿ ❳✷❱❛r ✿ ② ✿❡♥t✐❡r❞é❜✉t

y ← 1t❛♥t q✉❡ ②❃✵ ❢❛✐r❡

y ← y + 1✜♥tq❊❝r✐r❡✭②✮

✜♥

Pr♦♣♦s♦♥s ❧✬❛❧❣♦r✐t❤♠❡ ✿

Page 9: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✽

❆❧❣♦r✐t❤♠❡ ✹✿ ❈❞é❜✉t

t❛♥t q✉❡ ❇✭❈✮ ❢❛✐r❡

✜♥tq❊❝r✐r❡✭②✮

✜♥

❙✐ C ❜♦✉❝❧❡ ✐♥❞✐✜♥✐♠❡♥t✱ ❛❧♦rs B(C) = false ⇒ C t❡r♠✐♥❡❙✐♥♦♥ B(C) = true ⇒ C ❜♦✉❝❧❡ ✐♥✜♥✐♠❡♥t❆❧♦rs ❈♦♥tr❛❞✐❝t✐♦♥

◆♦t❡③ ❜✐❡♥ ✿❉❛♥s ❝❡ ❝♦✉rs ✱ ❖♥ ét✉❞✐❡r❛ s❡✉❧❡♠❡♥t ❞❡s ♣r♦❜❧è♠❡s ♣♦✉r ❧❡sq✉❡❧s ✐❧ ❡①✐st❡ ❞❡s ❛❧❣♦r✐t❤♠❡s ❞é❝✐❞❛❜❧❡s✳

✶✳✻ ❈♦♥❝❡♣t✐♦♥ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡

✶✳✻✳✶ ❆♥❛❧②s❡ ❞❡s❝❡♥❞❡♥t

❉é❝♦♠♣♦s❡r ❧❡ ♣r♦❜❧è♠❡ ❡♥ s♦✉s ♣r♦❜❧è♠❡s✳

✶✳✻✳✷ ❆♥❛❧②s❡ ❛s❝❡♥❞❛♥t❡

❯t✐❧✐s❡r ❧❡s ❢♦♥❝t✐♦♥s✱ ♣r✐♠✐t✐✈❡s✱ ♦✉t✐❧s✱✳✳ ❞♦♥t ♦♥ ❞✐s♣♦s❡✱ ❧❡s ❛ss❡♠❜❧❡r ♣♦✉r ❡♥ ❢❛✐r❡ ✉♥ tr✉❝ q✉✐rés♦✉❞r❡ ♥♦tr❡ ♣r♦❜❧è♠❡✳

✶✳✻✳✸ ♠é❧❛♥❣❡ ❞❡s ❞❡✉①

❖♥ ❢❛✐t ✉♥❡ ❛♥❛❧②s❡ ❞❡s❝❡♥❞❛♥t❡ t♦✉t ❡♥ ❛②❛♥t à ❧✬❡s♣r✐t ❧❡s ♠♦❞✉❧❡ ❜✐❡♥ ❝♦♥ç✉s q✉✐ ❡①✐st❡♥t ❞é❥à✳

✶✳✼ ❈♦♥❝❧✉s✐♦♥

❞❛♥s ❝❡ ❝♦✉rs ♦♥ ❛ ✐♥tr♦❞✉✐r❡ ❞❡s ♥♦t✐♦♥s ❞❡ ❜❛s❡ ❧✐é❡s à ❧✬❛❧❣♦r✐t❤♠✐q✉❡✳

Page 10: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✾

✶✳✽ ❊①❡r❝✐❝❡s

Page 11: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✷

❈♦♠♣❧❡①✐té ❞✬❆❧❣♦r✐t❤♠❡s

✷✳✶ ■♥tr♦❞✉❝t✐♦♥

■❧ ❡①✐st❡ s♦✉✈❡♥t ♣❧✉s✐❡✉rs ❛❧❣♦r✐t❤♠❡s ♣❡r♠❡tt❛♥t ❞❡ rés♦✉❞r❡ ✉♥ ♠ê♠❡ ♣r♦❜❧è♠❡✳ ❊①❡♠♣❧❡ ✿ ❧❡s❛❧❣♦r✐t❤♠❡s ❞❡ tr✐✳ ▲❡ ❝❤♦✐① ❞✉ ♠❡✐❧❧❡✉r ❛❧❣♦r✐t❤♠❡ ✐♠♣❧✐q✉❡ ✉♥❡ ❛♥❛❧②s❡ ❞❡ s❡s ♣❡r❢♦r♠❛♥❝❡s✳ ❊♥❣é♥ér❛❧✱ ❧❡ ❝r✐tèr❡ ❧❡ ♣❧✉s ✐♠♣♦rt❛♥t ❡st ❝❡❧✉✐ ❞✉ t❡♠♣s ♥é❝❡ss❛✐r❡ à s♦♥ ❡①é❝✉t✐♦♥✳ ❈❡❧✉✐ ❝✐ ❞é♣❡♥❞ ❧❡♣❧✉s s♦✉✈❡♥t ❞❡ ❧❛ q✉❛♥t✐té ❞❡ ❞♦♥♥é❡s à tr❛✐t❡r✳ P❛r ❡①❡♠♣❧❡✱ ❧❡ t❡♠♣s ♥é❝❡ss❛✐r❡ ♣♦✉r tr✐❡r ✉♥ ❡♥s❡♠❜❧❡❞✬♦❜❥❡ts ❞é♣❡♥❞ ❞✉ ♥♦♠❜r❡ ❞✬♦❜❥❡ts✳

✷✳✷ ◗✉❛❧✐té ❞✬✉♥ ❛❧❣♦r✐t❤♠❡

✷✳✷✳✶ ◗✉❛❧✐té ❞✬é❝r✐t✉r❡

✉♥ ❛❧❣♦r✐t❤♠❡ ❞♦✐t êtr❡ str✉❝t✉ré✱ ✐♥❞❡♥té✱ ♠♦❞✉❧❛✐r❡✱ ❛✈❡❝ ❞❡s ❝♦♠♠❡♥t❛✐r❡s ♣❡rt✐♥❡♥ts✱ ❡t❝✳ ■❧ ❢❛✉t♣♦✉✈♦✐r ❝♦♠♣r❡♥❞r❡ ❧❛ str✉❝t✉r❡ ❞✬✉♥ ❝♦✉♣ ❞✬♦❡✐❧ r❛♣✐❞❡✱ ❡t ♣♦✉✈♦✐r ❛✉ss✐ r❡✈❡♥✐r ❞❡ss✉s ✻ ♠♦✐s ♣❧✉st❛r❞ ❡t ❧❡ ❝♦♠♣r❡♥❞r❡ ❡♥❝♦r❡✳

✷✳✷✳✷ ❚❡r♠✐♥❛✐s♦♥

❧❡ rés✉❧t❛t ❞♦✐t êtr❡ ❛tt❡✐♥t ❡♥ ✉♥ ♥♦♠❜r❡ ✜♥✐ ❞✬ét❛♣❡s✳ ■❧ ♥❡ ❢❛✉t ❞♦♥❝ ♣❛s ❞❡ ❜♦✉❝❧❡s ✐♥✜♥✐❡s✱ ✐❧ ❢❛✉tét✉❞✐❡r t♦✉s ❧❡s ❝❛s ♣♦ss✐❜❧❡s ❞❡ ❞♦♥♥é❡s✳

✷✳✷✳✸ ❱❛❧✐❞✐té

❧❡ rés✉❧t❛t ❞♦✐t ré♣♦♥❞r❡ ❛✉ ♣r♦❜❧è♠❡ ❞❡♠❛♥❞❡✳ ❆tt❡♥t✐♦♥✱ ✉♥ ❥❡✉ ❞✬❡ss❛✐s ♥❡ ♣r♦✉✈❡ ❥❛♠❛✐s q✉✬✉♥♣r♦❣r❛♠♠❡ ❡st ❝♦rr❡❝t✳ ■❧ ♣❡✉t s❡✉❧❡♠❡♥t ♣r♦✉✈❡r q✉✬✐❧ ❡st ❢❛✉①✳

✷✳✷✳✹ P❡r❢♦r♠❛♥❝❡

❊t✉❞❡ ❞✉ ❝♦ût ✭❝♦♠♣❧❡①✐té✮ ❡♥ t❡♠♣s ❡t ❡♥ ♠é♠♦✐r❡✳ ❖♥ s✬✐♥tér❡ss❡ ❞❛♥s ❝❡ ❝♦✉rs q✉✬❛✉ ❝♦♠♣❧❡①✐tét❡♠♣♦r❡❧❧❡✳

✷✳✸ ❈♦♠♣❧❡①✐té ❞✬✉♥ ❛❧❣♦r✐t❤♠❡

▲❛ ❝♦♠♣❧❡①✐té ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ❡st ✉♥❡ ❡st✐♠❛t✐♦♥ ❞✉ ♥♦♠❜r❡ ❞✬♦♣ér❛t✐♦♥s ❞❡ ❜❛s❡ ❡✛❡❝t✉é❡s ♣❛r❧✬❛❧❣♦r✐t❤♠❡ ❡♥ ❢♦♥❝t✐♦♥ ❞❡ ❧❛ t❛✐❧❧❡ ❞❡s ❞♦♥♥é❡s ❡♥ ❡♥tré❡s ❞❡ ❧✬❛❧❣♦r✐t❤♠❡✳

✶✵

Page 12: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✶

▲❛ ❈♦♠♣❧❡①✐té❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ❝✬❡st ♣♦✉r ✿

✶✳ ❊✈❛❧✉❡r ❧❡s r❡ss♦✉r❝❡s✭♠é♠♦✐r❡ ❈P❯✮✉t✐❧❡s✱

✷✳ ❈♦♠♣❛r❡r ❞❡✉① ❛❧❣♦r✐t❤♠❡s ♣♦✉r ❧❡ ♠ê♠❡ ♣r♦❜❧è♠❡✱

✸✳ ❞♦♥♥❡r ✉♥ ❜♦r♥❡ s✉r ❝❡ q✉✐ ❡st ❡✛❡❝t✐✈❡♠❡♥t ♣♦ss✐❜❧❡ ❞❡ rés♦✉❞r❡✳ ❖♥ ❝♦♥s✐❞èr❡ ❛✉❥♦✉r❞✬❤✉✐ q✉✬♦♥♣❡✉t ré❛❧✐s❡r ❡♥ t❡♠♣s r❛✐s♦♥♥❛❜❧❡ ❞❡ 260 ♦♣ér❛t✐♦♥s✱ q✉❛♥❞ à ❧❛ ♠é♠♦✐r❡ ❡st ❞❡ ❧✬♦r❞r❡ ❞❡ 1010

♦❝t❡ts✳

✷✳✹ ▼és✉r❡ ❞❡ ❝♦♠♣❧❡①✐té

P♦✉r ♠❡s✉r❡r ❧❛ ❝♦♠♣❧❡①✐té t❡♠♣♦r❡❧❧❡ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡✱ ♦♥ s✬✐♥tér❡ss❡ ♣❧✉tôt ❛✉① ♦♣ér❛t✐♦♥s ❧❡ ♣❧✉s❝♦ût❡✉s❡s ♣♦✉r ❧❡ ♣r♦❜❧è♠❡ ❞❡ ❝❛❧❝✉❧ ♣❛rt✐❝✉❧✐❡r ❀

✕ ❘❛❝✐♥❡ ❝❛rré❡✱ ▲♦❣✱ ❊①♣✱ ❆❞❞✐t✐♦♥ ré❡❧❧❡ ❀✕ ❈♦♠♣❛r❛✐s♦♥s ❞❛♥s ❧❡ ❝❛s ❞❡s tr✐s ✳✳✳

❡t ♦♥ ❝❛❧❝✉❧❡ ❧❡ ♥♦♠❜r❡ ❞✬♦♣ér❛t✐♦♥s ❢♦♥❞❛♠❡♥t❛❧❡s ❡①é❝✉té❡s ♣❛r ❧✬❛❧❣♦r✐t❤♠❡✳▲❡ t❡♠♣s ❞❡ ❧✬❡①é❝✉t✐♦♥ ❞é♣❡♥❞ ❞❡ ❧❛ t❛✐❧❧❡ ❞❡ ❧✬❡♥tré❡✳ ❖♥ ✈❡✉t ❝♦♥s✐❞èr❡ s❡✉❧❡♠❡♥t ❧❛ t❛✐❧❧❡ ❡ss❡♥t✐❡❧❧❡

❞❡ ❧✬❡♥tré❡✳ ❈❡❧❛ ♣❡✉t êtr❡ ♣❛r ❡①❡♠♣❧❡ ✿✕ ❧❡ ♥♦♠❜r❡ ❞✬é❧é♠❡♥ts ❝♦♠❜✐♥❛t♦✐r❡s ❞❛♥s ❧✬❡♥tré❡✱✕ ❧❡ ♥♦♠❜r❡ ❞❡ ❜✐ts ♣♦✉r r❡♣rés❡♥t❡r ❧✬❡♥tré❡✱✕ ✳✳✳ ❡t❝ ✳✳✳

✷✳✺ ❈♦♠♣❧❡①✐té ♠♦②❡♥♥❡ ❡t ❡♥ ♣✐r❡ ❞❡s ❝❛s

❙♦✐ n ❧❛ t❛✐❧❧❡ ❞❡s ❞♦♥♥é❡s ❞✉ ♣r♦❜❧è♠❡ ❡t T (n) ❧❡ t❡♠♣s ❞✬❡①é❝✉t✐♦♥ ❞❡ ❧✬❛❧❣♦r✐t❤♠❡✳ ❖♥ ❞✐st✐♥❣✉❡ ✿

✷✳✺✳✶ ❚❡♠♣s ❧❡ ♣❧✉s ♠♦✉✈❛✐s✭❡♥ ♣✐r❡ ❞❡s ❝❛s✮

Tmax(n) q✉✐ ❝♦rr❡s♣♦♥❞ ❛✉ t❡♠♣s ♠❛①✐♠✉♠ ♣r✐s ♣❛r ❧✬❛❧❣♦r✐t❤♠❡ ♣♦✉r ✉♥ ♣r♦❜❧è♠❡ ❞❡ t❛✐❧❧❡ n ❀

✷✳✺✳✷ ❚❡♠♣s ♠♦②❡♥♥❡

Tmoy(n) t❡♠♣s ♠♦②❡♥ ❞✬❡①é❝✉t✐♦♥ s✉r ❞❡ ❞♦♥♥é❡s ❞❡ t❛✐❧❧❡ n ✭❙✉♣♣♦s✐t✐♦♥ s✉r ❧❛ ❞✐str✐❜✉t✐♦♥ ❞❡ ❞♦♥✲♥é❡s✮✳

❙♦✐t A ✉♥ ❆❧❣♦r✐t❤♠❡Dn ❧✬❡♥s❡♠❜❧❡ ❞❡s ❡♥tré❡s ❞❡ t❛✐❧❧❡ nI ∈ Dn ✉♥❡ ❡♥tré❡

✶✳ CoutA(i) = ♥♦♠❜r❡ ❞✬♦♣ér❛t✐♦♥ ❢♦♥❞❛♠❡♥t❛❧❡s ❡①é❝✉té❡s ♣❛r A s✉r I✳

✷✳ ▲❛ ❝♦♠♣❧❡①✐té ❞❡ A ❡♥ ♣✐r❡ ❞❡s ❝❛s ✿

Tmax(n) = Max(CoutA(i)); I ∈ Dn

✸✳ ❧❛ ❝♦♠♣❧❡①✐té ❞❡ ❆ ❡♥ ♠♦②❡♥♥❡ ✿

Tmoy(n) =∑

i∈D

Pr[i] ∗ CoutA[i]

Page 13: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✷

❊①❡♠♣❧❡

❘❡❝❤❡r❝❤❡ séq✉❡♥t✐❡❧❧❡ ✿

❋♦♥❝t✐♦♥ ❘❡❝❤❡r❝❤❡❙✭t❛❜ ✿❚❛❜❧❡❛✉ ❞❡ n é❧é♠❡♥ts ❀① ✿é❧é♠❡♥t✮ ✿❡♥t✐❡r❱❛r ✿ ❥ ✿❡♥t✐❡r❞é❜✉t

j ← 1t❛♥t q✉❡ ✭j ≤ n✮❡t✭tab[j] <> x✮ ❢❛✐r❡

j ← j + 1✜♥tqs✐ ❥❃♥ ❛❧♦rs

RechercheS ← −1s✐♥♦♥

RechercheS ← j✜♥s✐

✜♥

❈♦♠❧❡①✐té ❡♥ ♣✐r❡ ❞❡s ❝❛s ✿

Tmax(RS) = n

❈♦♠♣❧❡①✐té ♠♦②❡♥♥❡ ✿✲Pr[x ∈ tab] = q✲ ❙✐ x ∈ tab ❛❧♦rs t♦✉s ❧❡s ♣❧❛❝❡s s♦♥ éq✉✐♣r♦❜❛❜❧❡s ♣♦✉r 1 ≤ i ≤ n s♦✐t ✿

Ii = x ∈ tab

❡tIn+10 = x /∈ tab

❖♥ ❛ ✿Pr[Ii] = q/n ♣♦✉r 1 ≤ i ≤ n ❡t CoutRS(Ii) = i❡tPr[In+1] = 1− q ❡t CoutRS(In+1) = n

Tmoy(RS) =n+1∑

j=1

Pr[Ij] ∗ CoutRS(Ij)

=n∑

i=1

q/n(i) + (1− q)n

= q/n

n∑

i=1

i+ (1− q)n

= q/n ∗ n(n+ 1)/2 + (1− q)n

= (1− q/2)n+ q/2

✲❙✐ q = 1 ❛❧♦rs Tmoy(RS) = (n+ 1)/2✲❙✐ q = 1/2 ❛❧♦rs Tmoy(RS) = (3n+ 1)/4

Page 14: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✸

✷✳✻ ◆♦t❛t✐♦♥ ✉t✐❧✐sé❡s

■❧ ❢❛✉t ❝♦♠♣❛r❡r ❧❡s t❛✉① ❞✬❛❝❝r♦✐ss❡♠❡♥t ❞❡ ❞✐✛ér❡♥t❡s ❢♦♥❝t✐♦♥s q✉✐ ♠❡s✉r❡♥t ❧❡s ♣❡r❢♦r♠❛♥❝❡s ❞✬✉♥♣r♦❣r❛♠♠❡✳

✷✳✻✳✶ ◆♦t❛t✐♦♥ ✧o✧

❖♥ ❞✐t q✉❡ f(x) = o(g(x)) ♣♦✉r x→∞ s✐

lim−→f(x)

g(x)= 0

limx→∞ ❈❡ q✉❡ ✈❡✉t ❞✐r❡ q✉❡ f ❝r♦ît ♣❧✉s ❧❡♥t❡♠❡♥t q✉❡ g q✉❛♥❞ x ❡st très ❣r❛♥❞✳ P❛r ❡①❡♠♣❧❡ ✿x2 = o(x5)sin(x) = o(x)14.709

√x = o(x/2 + 7 cos(x))

23 log(x) = x0.002

✷✳✻✳✷ ◆♦t❛t✐♦♥ ✧O✧

❖♥ ❞✐t q✉❡f(x) = O(g(x)) s✬✐❧ ❡①✐st❡ k ❡t x0 t❡❧s q✉❡ ✿

∀x > x0 ⇒ f(x) < kg(x)

▲❛ ♥♦t❛t✐♦♥ o ❡st ♣❧✉s ♣ré❝✐s❡ q✉❡ O✱ ♠❛✐s O ❡st ♣❧✉s ❢❛❝✐❧❡ à ❝❛❧❝✉❧❡r ❡t s✉✣s❛♥t✳ P❛r ❡①❡♠♣❧❡ ✿sin(x) = O(x)sin(x) = O(1)

✷✳✼ ❯♥ ❝❧❛ss❡♠❡♥t ❞❡s ❢♦♥❝t✐♦♥s

Pr♦❜❧è♠❡s r❛t✐♦♥♥❡❧❧❡♠❡♥t ❢❛❝✐❧❡ ✿

●r♦✉♣❡✵✶ ✿ log(log(x)), log(x), log2(x)●r♦✉♣❡✵✷ ✿ x0.2, x, x2, x15 log(x)

Pr♦❜❧è♠❡s ❞✐✣❝✐❧❡s ✿

●r♦✉♣❡ ✵✸ ✿e√x, 1.03x, 2x

●r♦✉♣❡ ✵✹ ✿x!, xx, xx2

Page 15: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✹

✷✳✽ ❊①❡r❝✐❝❡s

❘❛♣♣❡❧❡ ✿◆♦t❛t✐♦♥ ✧O✧❖♥ ❞✐t q✉❡f(x) = O(g(x)) s✬✐❧ ❡①✐st❡ k ❡t x0 t❡❧s q✉❡ ✿

∀x > x0 ⇒ f(x) < kg(x)

✷✳✽✳✶ ❊①❡r❝✐❝❡ ✵✶

✶✳ P❛r♠✐ ❧❡s ❢♦♥❝t✐♦♥s s✉✐✈❛♥t❡s✱ q✉❡❧❧❡s s♦♥t ❝❡❧❧❡s q✉✐ ♦♥t ❧❡ ♠ê♠❡ ♦r❞r❡ ❞❡ ❣r❛♥❞❡✉r ❄✕ f1(n) = 4n3 + n✕ f2(n) = n2 + log2(n)✕ f3(n) = n2 × log3(n) + 6n3

✕ f4(n) =n(n2 + 1)

2✷✳ ❊♥ ✉t✐❧✐s❛♥t ❧❛ ❞é✜♥✐t✐♦♥ ❞❡ O ♠♦♥tr❡r q✉❡ f(n) + g(n) = O(max(f(n); g(n)))

✸✳ ❊♥ ✉t✐❧✐s❛♥t ❧❛ ❞é✜♥✐t✐♦♥ ❞❡ O ♠♦♥tr❡r q✉❡ 3n2 + 4n+ 6 = O(n2)

✷✳✽✳✷ ❊①❡r❝✐❝❡ ✵✷

❈♦♥s✐❞ér❡r ❧❡s ❛❧❣♦r✐t❤♠❡s s✉✐✈❛♥t❡s ❛✈❡❝ ✉♥ t❡♠♣s ❞✬❡①é❝✉t✐♦♥ T (n) ♣♦✉r ✉♥❡ ❧♦♥❣✉❡✉r ❞❡ ❞♦♥♥é❡sn✳ ❉ét❡r♠✐♥❡r ❧❡✉r ❝♦♠♣❧❡①✐tés ❛s②♠♣t♦t✐q✉❡s r❡s♣❡❝t✐✈❡s✱ ❡t ❧❡s ❝❧❛ss❡③ ♣❛r ♦r❞r❡ ❞❡ ❣r❛♥❞❡✉r ❝r♦✐ss❛♥t✳

❆❧❣♦r✐t❤♠❡ ❆✶ T (n) = 3n+ 2❆❧❣♦r✐t❤♠❡ ❆✷ T (n) = 6❆❧❣♦r✐t❤♠❡ ❆✸ T (n) = 4n2 + n+ 2❆❧❣♦r✐t❤♠❡ ❆✹

❊①é❝✉t❡r ❆✶ ❀

❊①é❝✉t❡r ❆✷ ❀

❊①é❝✉t❡r ❆✸ ❀

❆❧❣♦r✐t❤♠❡ ❆✺

❆❧❣♦r✐t❤♠❡ ✺✿ ❆✺❞é❜✉t

♣♦✉r i← 1 à n ❢❛✐r❡❊①é❝✉t❡r ❆✸

✜♥♣♦✉r❊①é❝✉t❡r ❆✶

✜♥

❆❧❣♦r✐t❤♠❡ ❆✻

Page 16: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✺

❆❧❣♦r✐t❤♠❡ ✻✿ ❆✻❞é❜✉t

♣♦✉r i← 1 à 5 ❢❛✐r❡❊①é❝✉t❡r ❆✶

✜♥♣♦✉r

✜♥

✷✳✽✳✸ ❊①❡r❝✐❝❡ ✵✸

❊✈❛❧✉❡r ❧❡s ❝♦♠♣❧❡①✐tés ❞❡s ❢♦♥❝t✐♦♥s ❡t ❞❡s ♣r♦❣r❛♠♠❡s s✉✐✈❛♥ts ❡♥ ❞♦♥♥❛♥t ❧❡ ♥♦♠❜r❡ ❞✬✐♥str✉❝t✐♦♥sré❛❧✐sé❡s✳❆❧❣♦r✐t❤♠❡ ✼✿ ❆✶❱❛r ✿ ❛✱❜ ✿❡♥t✐❡r❞é❜✉t

a← 0b← 0Afficher(a)Afficher(b)

✜♥

❋♦♥❝t✐♦♥ s♦♠♠❡✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ ✐✱r❡s ✿❡♥t✐❡r❞é❜✉t

res← 0♣♦✉r i← 1 à n ❢❛✐r❡

res← res+ i✜♥♣♦✉rsomme← res

✜♥

❋♦♥❝t✐♦♥ ❢✶✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

♣♦✉r i← 1 à n ❢❛✐r❡somme(n)

✜♥♣♦✉r

✜♥

❋♦♥❝t✐♦♥ ❢✷✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

♣♦✉r i← 1 à n ❢❛✐r❡somme(i)

✜♥♣♦✉r

✜♥

Page 17: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✻

❋♦♥❝t✐♦♥ ❢✸✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ ✐✱❥✱❦ ✿❡♥t✐❡r❞é❜✉t

♣♦✉r i← 1 à n ❢❛✐r❡♣♦✉r j ← i à n ❢❛✐r❡

♣♦✉r i← 1 à j ❢❛✐r❡inst()

✜♥♣♦✉r

✜♥♣♦✉r

✜♥♣♦✉r

✜♥

✷✳✽✳✹ ❊①❡r❝✐❝❡ ✵✹

❈❛❧❝✉❧❡r ❧❛ ❝♦♠♣❧❡①✐té ❞❡ ❧❛ ❢♦♥❝t✐♦♥ ré❝✉rs✐✈❡ ✿

❋♦♥❝t✐♦♥ ❋✐❜✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r

✈✉❡ ❡♥ ❝♦✉rs✳

✷✳✽✳✺ ❊①❡r❝✐❝❡ ✵✺

➱ t✉❞✐❡③ ❧❡ ♥♦♠❜r❡ ❞✬❛❞❞✐t✐♦♥s ré❛❧✐sé❡s ♣❛r ❧❡s ❢♦♥❝t✐♦♥s s✉✐✈❛♥t❡s ❞❛♥s ❧❡ ♠❡✐❧❧❡✉r ❝❛s✱ ❧❡ ♣✐r❡ ❝❛s✱

♣✉✐s ❞❛♥s ❧❡ ❝❛s ♠♦②❡♥ ❡♥ s✉♣♣♦s❛♥t q✉❡ ❧❡s t❡sts ♦♥t ✉♥❡ ♣r♦❜❛❜✐❧✐té ❞❡ ➼ ❞✬êtr❡ ✈r❛✐✳

❋♦♥❝t✐♦♥ ❢✶✭t ✿t❛❜ ❞❡ ♥ ❡♥t✐❡r✱ ❛ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ s ✿❡♥t✐❡r❞é❜✉t

s← 0♣♦✉r i← 1 à n ❢❛✐r❡

s✐ t[i] > a ❛❧♦rss← s+ t[i]

✜♥s✐

✜♥♣♦✉rf1← s

✜♥

❋♦♥❝t✐♦♥ ❢✶✭❛✱❜ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ s ✿❡♥t✐❡r❞é❜✉t

s← 0s✐ a > b ❛❧♦rs

♣♦✉r i← 1 à n ❢❛✐r❡s← s+ a

✜♥♣♦✉r

s✐♥♦♥s← s+ b

✜♥s✐f1← s

✜♥

Page 18: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✸

▲❛ ré❝✉rs✐✈✐té

✸✳✶ ■♥tr♦❞✉❝t✐♦♥

❧❛ ré❝✉rr❡♥❝❡ ✭✧✐♥❞✉❝t✐♦♥✧✮ ❡st ✉♥ ♦✉t✐❧ ♠❛t❤é♠❛t✐q✉❡ ❡ss❡♥t✐❡❧✳ ❚♦✉t ✐♥❢♦r♠❛t✐❝✐❡♥ s❡ ❞♦✐t ❞❡ ❧❛♠❛îtr✐s❡r✳ ❍❡✉r❡✉s❡♠❡♥t✱ ❧❛ ré❝✉rr❡♥❝❡ ❡st ✉♥❡ t❡❝❤♥✐q✉❡ s✐♠♣❧❡✱ ❡♥ ❞é♣✐t ❞❡ s❛ ♣✉✐ss❛♥❝❡✳▲❛ ré❝✉rs✐✈✐té ❡st ✉♥❡ ♥♦t✐♦♥ très ✉t✐❧✐sé❡ ❡♥ ♣r♦❣r❛♠♠❛t✐♦♥✱ ❡t q✉✐ ♣❡r♠❡t ❧✬❡①♣r❡ss✐♦♥ ❞✬❛❧❣♦r✐t❤♠❡s❝♦♥❝✐s✱ ❢❛❝✐❧❡s à é❝r✐r❡ ❡t à ❝♦♠♣r❡♥❞r❡✳ ▲❛ ré❝✉rs✐✈✐té ♣❡✉t t♦✉❥♦✉rs êtr❡ r❡♠♣❧❛❝é❡ ♣❛r s♦♥ éq✉✐✈❛❧❡♥ts♦✉s ❢♦r♠❡ ❞✬✐tér❛t✐♦♥s✱ ♠❛✐s ❛✉ ❞étr✐♠❡♥t ❞✬❛❧❣♦r✐t❤♠❡s ♣❧✉s ❝♦♠♣❧❡①❡s s✉rt♦✉t ❧♦rsq✉❡ ❧❡s str✉❝t✉r❡s❞❡ ❞♦♥♥é❡s à tr❛✐t❡r s♦♥t ❡❧❧❡s✲♠ê♠❡s ❞❡ ♥❛t✉r❡ ré❝✉rs✐✈❡✳

✸✳✷ ❉é✜♥✐t✐♦♥

✕ ❯♥ ❛❧❣♦r✐t❤♠❡ ✭❢♦♥❝t✐♦♥✱ ♣r♦❝é❞✉r❡✮ ❡st ❞✐t❡ ré❝✉rs✐❢ ❧♦rsq✉✬✐❧ s✬❛♣♣❡❧❧❡ ❧✉✐✲♠ê♠❡✱ ❝✲à✲❞✳✱ ❞é✜♥✐t✐♦♥✭s♦♥ ❝♦❞❡✮ ❝♦♥t✐❡♥t ✉♥ ❛♣♣❡❧ à ❧✉✐✲♠ê♠❡✳

✕ ❯♥ ❛❧❣♦r✐t❤♠❡ q✉✐ ♥✬❡st ♣❛s ré❝✉rs✐❢ ❡st ❞✐t ✐tér❛t✐❢✳◆♦t❡③ ❇✐❡♥✕ ❖♥ ♣❡✉t t♦✉❥♦✉rs tr❛♥s❢♦r♠❡r ✉♥ ❛❧❣♦r✐t❤♠❡ ré❝✉rs✐❢ ❡♥ ❛❧❣♦r✐t❤♠❡ ✐tér❛t✐❢✳

❧❛ ❢♦r♠❡ ❣é♥ér❛❧❡ ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ré❝✉rs✐✈❡ ✿

❆❧❣♦r✐t❤♠❡ ✽✿ P✭✳✳✳✮

❞é❜✉ts✐ ✜♥✭✮ ❛❧♦rs

....✴✴♣❛s ❞✬❛♣♣❡❧ ré❝✉rs✐❢

s✐♥♦♥...P (...) ✴✴❧✬❛❧❣♦r✐t❤♠❡ P ❛♣♣❡❧❧❡ ❧✉✐✲♠ê♠❡ ✉♥❡

... ✴✴♦✉ ♣❧✉s✐❡✉rs ❢♦✐s

✜♥s✐

✜♥

✶✼

Page 19: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✽

✸✳✸ ❊①❡♠♣❧❡s

✸✳✸✳✶ ❊①❡♠♣❧❡✶

❈❛❧❝✉❧ ❞❡ ❧❛ ❢❛❝t♦r✐❡❧❧❡ ❞✬✉♥ ♥♦♠❜r❡✳❉é✜♥✐t✐♦♥ ✐tér❛t✐✈❡ ✿n! = F (n) = n ∗ (n− 1) ∗ (n− 2) ∗ ... ∗ 2 ∗ 1❙♦✐t ❡♥ ❛❧❣♦r✐t❤♠✐q✉❡ ✿

❆❧❣♦r✐t❤♠❡ ✾✿ ❢❛❝t♦r✐❡❧❧❡✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r❱❛r ✿ ✐✱❢ ✿❡♥t✐❡r❞é❜✉t

f ← 1♣♦✉r ✐❂✶ à ♥ ❢❛✐r❡

f ← f ∗ i✜♥♣♦✉rfactorielle← f

✜♥

❉é✜♥✐t✐♦♥ ré❝✉rs✐✈❡ ✿F (0) = 1F (n) = n ∗ F (n− 1); ❙♦✐t ❡♥ ❛❧❣♦r✐t❤♠✐q✉❡ ✿

❆❧❣♦r✐t❤♠❡ ✶✵✿ ❢❛❝t❘❡❝✉rs✐✈❡✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r

❞é❜✉ts✐ n = 0 ❛❧♦rs

factorielle← 1s✐♥♦♥

factorielle← factorielle(n− 1) ∗ n✜♥s✐

✜♥

✸✳✸✳✷ ❊①❡♠♣❧❡✷ ✿

▲❛ s✉✐t❡ ❞❡s ♥♦♠❜r❡s ❞❡ ❋✐❜♦♥❛❝❝✐ s❡ ❞é✜♥✐t ❝♦♠♠❡ s✉✐t ✿f0 = 0f1 = 1fn = fn−1 + fn−2 s✐ n > 1❖♥ ♣❡✉t ❢♦r♠✉❧❡r ❝❡tt❡ s✉✐t❡ s♦✉s ❢♦r♠❡ ❞❡ ❢♦♥❝t✐♦♥ ✭♥ ❃❂ ✵✮ ✿fibonacci(n) = n s✐ n <= 1fibonacci(n) = fibonacci(n− 1) + fibonacci(n− 2) s✐ n > 1s♦✐t ❡♥ ❆❧❣♦r✐t❤♠✐q✉❡ ✿

❆❧❣♦r✐t❤♠❡ ✶✶✿ ✜❜♦♥❛❝❝✐❘❡❝✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r

❞é❜✉ts✐ n <= 1 ❛❧♦rs

fibonacci← ns✐♥♦♥

fibonacci← fibonacci(n− 1) + fibonacci(n− 2)✜♥s✐

✜♥

Page 20: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✶✾

✸✳✹ ❘è❣❧❡s

✶✳ ❚♦✉t ❛❧❣♦r✐t❤♠❡ ré❝✉rs✐❢ ❞♦✐t ❞✐st✐♥❣✉❡r ♣❧✉s✐❡✉rs ❝❛s✱ ❞♦♥t ❧✬✉♥ ❛✉ ♠♦✐♥s ♥❡ ❞♦✐t ♣❛s ❝♦♠♣♦rt❡r❞✬❛♣♣❡❧ ré❝✉rs✐❢✳✕ ▲❡s ❝❛s ♥♦♥ ré❝✉rs✐❢s ❞✬✉♥ ❛❧❣♦r✐t❤♠❡ ré❝✉rs✐❢ s♦♥t ❛♣♣❡❧és ❝❛s ❞❡ ❜❛s❡✳✕ ▲❡s ❝♦♥❞✐t✐♦♥s q✉❡ ❞♦✐✈❡♥t s❛t✐s❢❛✐r❡ ❧❡s ❞♦♥♥é❡s ❞❛♥s ❝❡s ❝❛s ❞❡ ❜❛s❡ s♦♥t ❛♣♣❡❧é❡s ❝♦♥❞✐t✐♦♥s

❞❡ t❡r♠✐♥❛✐s♦♥✳

✷✳ ❚♦✉t ❛♣♣❡❧ ré❝✉rs✐❢ ❞♦✐t s❡ ❢❛✐r❡ ❛✈❡❝ ❞❡s ❞♦♥♥é❡s ♣❧✉s ♣r♦❝❤❡s ❞❡ ❞♦♥♥é❡s s❛t✐s❢❛✐s❛♥t ✉♥❡ ❝♦♥❞✐t✐♦♥❞❡ t❡r♠✐♥❛✐s♦♥✳

✸✳✺ ❘é❝✉rs✐✈✐té ❝r♦✐sé❡

❉❛♥s ❧❛ ré❝✉rs✐✈✐té ❝r♦✐sé❡✱ ❧❡s ❛♣♣❡❧s ré❝✉rs✐❢s s♦♥t ♣r♦✈♦q✉és ♣❛r ❧✬❡①é❝✉t✐♦♥ ❞✬❛✉tr❡s ♣r♦❝é❞✉r❡ ♦✉❢♦♥❝t✐♦♥✳

Pr♦❝é❞✉r❡ P✶✭①✮

❞é❜✉t...Q(f(x))...

✜♥

Pr♦❝é❞✉r❡ ◗✶✭①✮

❞é❜✉t...P (g(x))...

✜♥

✸✳✺✳✶ ❊①❡♠♣❧❡ ✿ P❛✐r❡ ♦✉ ✐♠♣❛✐r❡

❖♥ ♣❡✉t ❢♦r♠✉❧❡r ❧❡s ♥♦t✐♦♥s ré❝✉rs✐✈❡s s✉✐✈❛♥t ✿✕ ▲❡ ✵ ❡st ♣❛✐r❡ ❡t ♥♦♥ ✐♠♣❛✐r❡✳✕ ❯♥ ♥♦♠❜r❡ ♥ ❡st ♣❛✐r❡ s✐ ♥✲✶ ❡st ✐♠♣❛✐r❡✳✕ ❯♥ ♥♦♠❜r❡ ♥ ❡st ✐♠♣❛✐r❡ s✐ ♥✲✶ ❡st ♣❛✐r❡✳❙♦✐t ❡♥ ❛❧❣♦r✐t❤♠✐q✉❡ ✿

❋♦♥❝t✐♦♥ P❛✐r❡✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r

❞é❜✉ts✐ n = 0 ❛❧♦rs

Paire← vrais✐♥♦♥

Paire← ImPaire(n− 1)✜♥s✐

✜♥

Page 21: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✵

❋✐❣✉r❡ ✸✳✶ ✕ P♦s✐t✐♦♥ ❞❡ ❞é♣❛rt ❞❡s t♦✉rs ❞✬❍❛♥♦✐

❋♦♥❝t✐♦♥ ■♠P❛✐r❡✭♥ ✿❡♥t✐❡r✮ ✿❡♥t✐❡r

❞é❜✉ts✐ n = 0 ❛❧♦rs

ImPaire← falses✐♥♦♥

ImPaire← Paire(n− 1)✜♥s✐

✜♥

✸✳✻ Pr♦❜❧è♠❡✭❧❡s t♦✉rs ❞✬❍❛♥♦ï✮

▲❡ t✐tr❡ ❞✉ ♣r♦❜❧è♠❡ ✈✐❡♥t ❞❡ ❧✬❤✐st♦✐r❡ r❛❝♦♥té❡ ❤❛❜✐t✉❡❧❧❡♠❡♥t✱ q✉✐ ❡st ❝❡❧❧❡ ❞❡ ♠♦✐♥❡s ❜♦✉❞❞❤✐st❡s❡♥ ❆s✐❡ ❞✉ s✉❞✲❡st q✉✐ é❣rè♥❡♥t ❧❡ t❡♠♣s ❡♥ tr❛♥s❢ér❛♥t ❞❡s ❞✐sq✉❡s✱ t♦✉s ❞❡ t❛✐❧❧❡s ❞✐✛ér❡♥t❡s✱ s✉r ✉♥ ❥❡✉❞❡ tr♦✐s ♣✐q✉❡ts ✭✈♦✐r ✜❣✉r❡ ✶✮✳ ❉❛♥s ❝❡tt❡ ✜❣✉r❡ ✐❧ ♥✬② ❛ q✉❡ ❝✐♥q ❞✐sq✉❡s✱ ♠❛✐s ❧❛ tr❛❞✐t✐♦♥ ✈❡✉t q✉❡ ❧❡s♠♦✐♥❡s ❥♦✉❡♥t ❛✈❡❝ ✻✹✳ ▲✬❤✐st♦✐r❡ ❡st ✉♥❡ ✐♥✈❡♥t✐♦♥ ❞✉ ❞✐①✲♥❡✉✈✐è♠❡ s✐è❝❧❡✱ ▲✉❝❛s ❧❛ ♣❧❛ç❛♥tà ❇é♥❛rès✭❡♥ ■♥❞❡✮✳ ❖♥ ♥❡ s❛✐t ♣❛s ❝♦♠♠❡♥t ❡❧❧❡ s✬❡st r❡st✐t✉é❡ à ❍❛♥♦ï ✳ ✳ ✳

▲❡ ❥❡✉ ❝♦♥s✐st❡ à tr❛♥s❢ér❡r ❧❛ ♣✐❧❡ ❞❡ ❞✐sq✉❡s ❞✉ ♣✐q✉❡t ❆ ✈❡rs ❧❡ ♣✐q✉❡t ❇✱ ❡♥ ✉t✐❧✐s❛♥t ❈ ❝♦♠♠❡♣✐q✉❡t ❞❡ ♠❛♥♦❡✉✈r❡✱ t♦✉t ❡♥ r❡s♣❡❝t❛♥t ❧❡s ❞❡✉① rè❣❧❡s s✉✐✈❛♥t❡s ✿

✕ ✉♥ ❞✐sq✉❡ ♥❡ ♣❡✉t ♣❛s êtr❡ ♣♦sé s✉r ♣❧✉s ♣❡t✐t q✉❡ ❧✉✐✱✕ ♦♥ ♥❡ ❞é♣❧❛❝❡ q✉✬✉♥ ❞✐sq✉❡ à ❧❛ ❢♦✐s✳

▲❛ s♦❧✉t✐♦♥ ❧❛ ♣❧✉s s✐♠♣❧❡ ✈✐❡♥t ❞❡ ❧❛ ré♣♦♥s❡ à ❧❛ q✉❡st✐♦♥ s✉✐✈❛♥t❡ ✿ ✧s✐ ❥❡ s❛✈❛✐s tr❛♥s❢ér❡r ♥✲❧ ❞✐sq✉❡s✱s❛✉r❛✐s✲❥❡ tr❛♥s❢ér❡r ♥ ❄✧✳ ▲❛ ré♣♦♥s❡ ❡st ♦✉✐✱ ❝❛r ❛✉tr❡♠❡♥t ♥♦✉s ♥✬❛✉r✐♦♥s ♣❛s ♣♦sé ❧❛ q✉❡st✐♦♥✳ ❆✐♥s✐✱♣♦✉r tr❛♥s❢ér❡r ♥ ❞✐sq✉❡s ❞❡ ❆ à ❇✱ ♦♥ ❝♦♠♠❡♥❝❡ ♣❛r ❧❡ tr❛♥s❢❡rt ❞❡ ♥✲❧ ❞✐sq✉❡s ❞❡ ❆ à ❈✱ s✉✐✈✐ ❞✉❞é♣❧❛❝❡♠❡♥t ❞✉ ❞❡r♥✐❡r ❞✐sq✉❡ ✭❧❡ ♣❧✉s ❣r♦s✮ ❞❡ ❆ à ❇✱ s✉✐✈✐ ❞✉ tr❛♥s❢❡rt ❞❡s ♥✲❧ ❞✐sq✉❡s ❞❡ ❈ à ❇✳

❈❡❧❛ ❞♦♥♥❡ ❧❛ ♣r♦❝é❞✉r❡ ✿

Pr♦❝é❞✉r❡ ❤❛♥♦✐✭♥ ✿❡♥t✐❡r ❀ ❛✱❜ ✿❡♥t✐❡r✮

❞é❜✉ts✐ n = 1 ❛❧♦rs

deplacement(a, b)s✐♥♦♥

hanoi(n− 1, a, 6− a− b)deplacement(a, b)hanoi(n− 1, 6− a− b, b)

✜♥s✐

✜♥

Page 22: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✶

❉❛♥s ❝❡tt❡ ♣r♦❝é❞✉r❡✱ ♥♦✉s ❛✈♦♥s s✉♣♣♦sé q✉❡ ❧❡s ♣✐q✉❡ts s♦♥t ♥✉♠ér♦tés ✶✱✷✱✸✳ ❉é♣❧❛❝❡r ✉♥ ❞✐sq✉❡s❡ ❢❛✐t ♣❛r ❧❛ ♣r♦❝é❞✉r❡ ❞é♣❧❛❝❡♠❡♥t✳ P♦✉r n = l ❧❡ ❞é♣❧❛❝❡♠❡♥t ❡st ✐♠♠é❞✐❛t✱ ❛✉tr❡♠❡♥t ♦♥ ❛♣♣❧✐q✉❡❧✬❛❧❣♦r✐t❤♠❡ ❞é❝r✐t ❝✐✲❞❡ss✉s✱ ✻✲❛✲❜ ét❛♥t ❧❡ ♥✉♠ér♦ ❞✉ tr♦✐s✐è♠❡ ♣✐q✉❡t ✭✻❂✶✰✷✰✸✱ ❞♦♥❝ ❡♥ s♦✉str❛②❛♥t❞❡✉① ❞❡s tr♦✐s ♣♦ss✐❜✐❧✐tés ❞❡ ✻ ♦♥ ♦❜t✐❡♥t ❧❛ tr♦✐s✐è♠❡✮✳

✸✳✼ ❈♦♥❝❧✉s✐♦♥

❈❡rt❛✐♥s ♣r♦❜❧è♠❡s ♣❡✉✈❡♥t êtr❡ rés♦❧✉s ♣❧✉s ❧♦❣✐q✉❡♠❡♥t ❡♥ ✉t✐❧✐s❛♥t ❧❛ ré❝✉rs✐✈✐té✳ ▲❡s ♣r♦❣r❛♠♠❡ss♦♥t ♣❧✉s ❝♦♠♣❛❝ts✱ ♣❧✉s ❢❛❝✐❧❡s à é❝r✐r❡ ❡t à ❝♦♠♣r❡♥❞r❡✳ ❙♦♥ ✉s❛❣❡ ❡st ♥❛t✉r❡❧ q✉❛♥❞ ❧❡ ♣r♦❜❧è♠❡ àtr❛✐t❡r ♣❡✉t s❡ ❞é❝♦♠♣♦s❡r ❡♥ ❞❡✉① ♦✉ ♣❧✉s s♦✉s✲♣r♦❜❧è♠❡s ✐❞❡♥t✐q✉❡s ❛✉ ♣r♦❜❧è♠❡ ✐♥✐t✐❛❧ ♠❛✐s ❛✈❡❝ ❞❡s✈❛❧❡✉rs ❞❡ ♣❛r❛♠ètr❡s ❞✐✛ér❡♥t❡s✳ ❘❡❢✉s❡r ❧❛ ré❝✉rs✐✈✐té ❞❛♥s ❝❡ ❞❡r♥✐❡r ❝❛s ♦❜❧✐❣❡ ❧✬✉t✐❧✐s❛t❡✉r à ❣ér❡r❧✉✐✲♠ê♠❡ ✉♥❡ ♣✐❧❡ ❞❡s ❞✐✛ér❡♥t❡s ✈❛❧❡✉rs ❞❡s ✈❛r✐❛❜❧❡s✱ ❝❡ q✉❡ ❧❡ s②stè♠❡ ❢❛✐t ❛✉t♦♠❛t✐q✉❡♠❡♥t ❧♦rs ❞❡❧✬✉t✐❧✐s❛t✐♦♥ ❞❡ ❧❛ ré❝✉rs✐✈✐té✳

Page 23: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✷

✸✳✽ ❊①❡r❝✐❝❡s

✸✳✽✳✶ ❊①❡r❝✐❝❡ ✵✶

❊❝r✐r❡ ✉♥❡ ❢♦♥❝t✐♦♥ ré❝✉rs✐✈❡ q✉✐ ❝❛❧❝✉❧❡ ❧❡ ❝❛rré ❞✬✉♥ ❡♥t✐❡r n2 = n× n :❋♦♥❝t✐♦♥ ❝❛rré ✭♥ ✿ ❊♥t✐❡r✮ ✿ ❊♥t✐❡r

❖♥ ♣♦✉rr❛ ✉t✐❧✐s❡r ❧❛ r❡❧❛t✐♦♥ s✉✐✈❛♥t❡ ✿ (n+ 1)2 = n2 + 2n+ 1.

✸✳✽✳✷ ❊①❡r❝✐❝❡ ✵✷

❊❝r✐r❡ ✉♥❡ ❢♦♥❝t✐♦♥ ré❝✉rs✐✈❡ q✉✐ ♣r❡♥❞ ❡♥ ❛r❣✉♠❡♥t ✉♥❡ ❝❤❛î♥❡ ❞❡ ❝❛r❛❝tèr❡s ❡t q✉✐ r❡♥✈♦✐❡ ✉♥❜♦♦❧é❡♥ ✐♥❞✐q✉❛♥t s✬✐❧ s✬❛❣✐t ❞✬✉♥ ♣❛❧✐♥❞r♦♠❡ ♦✉ ♥♦♥✳

✸✳✽✳✸ ❊①❡r❝✐❝❡ ✵✸

❖♥ ❞é✜♥✐t ❧❛ ❢♦♥❝t✐♦♥ s✉✐✈❛♥t❡ ✿❋♦♥❝t✐♦♥ ▼❝❈❛rt②✭♥ ✿ ❊♥t✐❡r✮ ✿ ❊♥t✐❡r

❞é❜✉ts✐ n > 100 ❛❧♦rs

McCarthy ← n− 10s✐♥♦♥

McCarthy ←McCarthy(McCarthy(n+ 11))✜♥s✐

✜♥

✶✳ ◗✉❡❧❧❡ ❡st ❧❛ ✈❛❧❡✉r ❞❡ ▼❝❈❛rt❤②✭♥✮ ♣♦✉r ♥ ❃ ✶✵✵ ❄

✷✳ ❈❛❧❝✉❧❡r ▼❝❈❛rt❤②✭✾✽✮✱ ▼❝❈❛rt❤②✭✾✾✮ ❡t ▼❝❈❛rt❤②✭✶✵✵✮✳

✸✳ ❊♥ ❞é❞✉✐r❡ ❧❛ ✈❛❧❡✉r ❞❡ ▼❝❈❛rt❤②✭♥✮ ♣♦✉r ♥ ✲ ✶✵✵✳ ❊①♣❧✐q✉❡r✳

✸✳✽✳✹ ❊①❡r❝✐❝❡ ✵✹

❊❝r✐r❡ ✉♥❡ ♣r♦❝é❞✉r❡ ré❝✉rs✐✈❡ q✉✐ r❡♣rés❡♥t❡ ❧❡ ❞é♣❧❛❝❡♠❡♥t ❞✬✉♥ ❝❛✈❛❧✐❡r s✉r ✉♥ é❝❤✐q✉✐❡r à ♣❛rt✐r❞❡ ❧❛ ♣♦s✐t✐♦♥ ✭X0, Y0✮✳

✸✳✽✳✺ ❊①❡r❝✐❝❡ ✵✺

❙♦✐t ✉♥❡ ❢♦♥❝t✐♦♥ ❝♦♥t✐♥✉❡ f ❞é✜♥✐❡ s✉r ✉♥ ✐♥t❡r✈❛❧❧❡ [a; b]✳ ❖♥ ❝❤❡r❝❤❡ à tr♦✉✈❡r ✉♥ ③ér♦ ❞❡ f ✱ ❝✬❡st✲à✲❞✐r❡ ✉♥ ré❡❧ x ∈ [a; b] t❡❧ q✉❡ f(x) = 0✳ ❙✐ ❧❛ ❢♦♥❝t✐♦♥ ❛❞♠❡t ♣❧✉s✐❡✉rs ③ér♦s✱ ♥✬✐♠♣♦rt❡ ❧❡q✉❡❧ ❢❡r❛❧✬❛✛❛✐r❡✳ ❙✬✐❧ ♥✬② ❡♥ ❛ ♣❛s✱ ✐❧ ❢❛✉❞r❛ ❧❡ s✐❣♥❛❧❡r✳

❉❛♥s ❧❡ ❝❛s ♦ù f(a).f(b) < 0✱ ♦♥ ❡st sûr ❞❡ ❧❛ ♣rés❡♥❝❡ ❞✬✉♥ ③ér♦✳ ▲♦rsq✉❡ f(a).f(b) > 0✱ ✐❧ ❢❛✉tr❡❝❤❡r❝❤❡r ✉♥ s♦✉s✲✐♥t❡r✈❛❧❧❡ [α; β]✱ t❡❧ q✉❡ f(α).f(β) < 0✳

▲✬❛❧❣♦r✐t❤♠❡ ♣r♦❝è❞❡ ♣❛r ❞✐❝❤♦t♦♠✐❡✱ ❝✬❡st✲à✲❞✐r❡ q✉✬✐❧ ✈❛ ❞✐✈✐s❡r ❧✬✐♥t❡r✈❛❧❧❡ ❞❡ r❡❝❤❡r❝❤❡ ❡♥ ❞❡✉①♠♦✐t✐és à ❝❤❛q✉❡ ét❛♣❡✳ ❙✐ ❧✬✉♥ ❞❡s ❞❡✉① ♥♦✉✈❡❛✉① ✐♥t❡r✈❛❧❧❡s✱ ♣❛r ❡①❡♠♣❧❡ [α; β]✱ ❡st t❡❧ q✉❡ f(α).f(β) <0✱ ♦♥ s❛✐t q✉✬✐❧ ❝♦♥t✐❡♥t ✉♥ ③ér♦ ♣✉✐sq✉❡ ❧❛ ❢♦♥❝t✐♦♥ ❡st ❝♦♥t✐♥✉❡ ✿ ♦♥ ♣♦✉rs✉✐✈r❛ ❛❧♦rs ❧❛ r❡❝❤❡r❝❤❡ ❞❛♥s❝❡t ✐♥t❡r✈❛❧❧❡✳

❊♥ r❡✈❛♥❝❤❡✱ s✐ ❧❡s ❞❡✉① ❞❡♠✐ ✐♥t❡r✈❛❧❧❡s s♦♥t t❡❧s q✉❡ f ❛ ❧❡ ♠ê♠❡ s✐❣♥❡ ❛✉① ❞❡✉① ❡①tré♠✐tés✱ ❧❛s♦❧✉t✐♦♥✱ s✐ ❡❧❧❡ ❡①✐st❡✱ s❡r❛ ❞❛♥s ❧✬✉♥ ♦✉ ❧✬❛✉tr❡ ❞❡ ❝❡s ❞❡✉① ❞❡♠✐ ✐♥t❡r✈❛❧❧❡s✳ ❉❛♥s ❝❡ ❝❛s✱ ♦♥ ♣r❡♥❞r❛❛r❜✐tr❛✐r❡♠❡♥t ❧✬✉♥ ❞❡s ❞❡✉① ❞❡♠✐ ✐♥t❡r✈❛❧❧❡s ♣♦✉r ❝♦♥t✐♥✉❡r ❧❛ r❡❝❤❡r❝❤❡ ❀ ❡♥ ❝❛s ❞✬é❝❤❡❝ ♦♥ r❡♣r❡♥❞r❛❧❡ ❞❡✉①✐è♠❡ ❞❡♠✐ ✐♥t❡r✈❛❧❧❡ q✉✐ ❛✈❛✐t été ♣r♦✈✐s♦✐r❡♠❡♥t ♥é❣❧✐❣é✳

Page 24: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✸

é❝r✐✈❡③ ❞❡ ❢❛ç♦♥ ré❝✉rs✐✈❡ ❧✬❛❧❣♦r✐t❤♠❡ ❞❡ r❡❝❤❡r❝❤❡ ❞✬✉♥ ③ér♦✱ à ε ♣rès✱ ❞❡ ❧❛ ❢♦♥❝t✐♦♥ f ✳

Page 25: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✹

✸✳✾ ❚P

▲✬♦❜❥❡❝t✐✈❡ ❞❡ ❝❡ ❚P ❡t ❞✬❡①♣ér✐♠❡♥t❡r ❧❛ ré❝✉rs✐✈✐té ❡t ❧❛ ❝♦♠♣❧❡①✐té ❞❡s ❛❧❣♦r✐t❤♠❡◆♦t❡③ ❜✐❡♥ ✿✕ ❯♥ r❛♣♣♦rt✭✸ ♣❛❣❡ ♠❛①✮ ❡t ❝♦❞❡ s♦✉r❝❡ ❞♦✐t êtr❡ r❡♠✐s ❛✈❛♥t ❧❡ ✿✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳✳

✸✳✾✳✶ ❘❡❝❤❡r❝❤❡ ✉♥ é❧é♠❡♥t ❞❛♥s ✉♥ t❛❜❧❡❛✉

▲❛ r❡❝❤❡r❝❤❡ ❝♦♠♣❛r❡ ❧❡s ❞✐✛ér❡♥ts é❧é♠❡♥ts ❞✬✉♥ t❛❜❧❡❛✉ à ❧❛ ❝❧❡❢ r❡❤❡r❝❤é❡✳❡①❡♠♣❧❡ ✿

▲❛ ✈❛❧❡✉r r❡❝❤❡r❝❤é❡ ❡st ✼✳▲❛ ❝❛s❡ ❝♦❧♦ré❡ ❡st ❧✬é❧é♠❡♥t ❡♥ ❝♦✉rs ❞❡ tr❛✐t❡♠❡♥t✳

✽ ✺ ✷ ✼ ✶ ✸ ✵ ✹✽ ✺ ✷ ✼ ✶ ✸ ✵ ✹✽ ✺ ✷ ✼ ✶ ✸ ✵ ✹✽ ✺ ✷ ✼ ✶ ✸ ✵ ✹

❚❛❜❧❡ ✸✳✶ ✕ r❡❝❤❡r❝❤❡ ❞❛♥s ✉♥ t❛❜❧❡❛✉

▲❛ ✈❛❧❡✉r ❛ été tr♦✉✈é❡ ❀ ❧❛ ❢♦♥❝t✐♦♥ r❡t♦✉r♥❡ ❧❛ ♣♦s✐t✐♦♥ ❞❡ ❝❡tt❡ ✈❛❧❡✉r✱ q✉✐ ❞❛♥s ♥♦tr❡ ❝❛s ❡st ✹✳

✸✳✾✳✷ ❘❡❝❤❡r❝❤❡ ❙éq✉❡♥t✐❡❧❧❡

▲❛ r❡❝❤❡r❝❤❡ séq✉❡♥t✐❡❧❧❡ ❝♦♥s✐st❡ à ♣❛r❝♦✉r✐r ❧❡ t❛❜❧❡❛✉ ✉♥ ♣❛r ✉♥ ❥✉sq✉✬à tr♦✉✈❡r ❧❡ ❝❧❡❢✳✶✳ ❊❝r✐✈❡③ ✉♥ s♦✉s✲♣r♦❣r❛♠♠❡ ♣❛s❝❛❧❡ ♣♦✉r rés♦✉❞r❡ ❧❡ ♣r♦❜❧è♠❡ ❞❡ ❧❛ r❡❝❤❡r❝❤❡ séq✉❡♥t✐❡❧❧❡✳

❋♦♥❝t✐♦♥ ❘❡❝❤❡r❝❤❡❙✭❆ ✿t❛❜❧❡❛✉✱ ❡ ✿❡♥t✐❡r✮ ✿ ❊♥t✐❡r

✷✳ ❉♦♥♥❡③ ✉♥ ❡①❡♠♣❧❡ ❞❡ ♣r♦❣r❛♠♠❡ ♣r✐♥❝✐♣❛❧❡ q✉✐ ✉t✐❧✐s❡♥t ❝❡tt❡ ❢♦♥❝t✐♦♥✳✸✳ ❙✐ ❧❡ t❛❜❧❡❛✉ ❡st ♦r❞♦♥♥é❡ ❀ ♠♦❞✐✜❡③ ❧❛ ❢♦♥❝t✐♦♥ ♣♦✉r s✉♣♣♦rt❡r ❝❡ ❝❤❛♥❣❡♠❡♥t✳✹✳ ❈❛❧❝✉❧❡r ❧❡ ♥♦♠❜r❡ ❞❡ ❝♦♠♣❛r❛✐s♦♥ ♣♦✉r ✉♥ r❡❝❤❡r❝❤❡ ❞✬✉♥ é❧é♠❡♥t à ❧❛ ✜♥ ❞✉ t❛❜❧❡❛✉ ❞❡ ✻✹

é❧é♠❡♥ts✳ ◗✉✬❡st ❝❡ q✉❡ r❡♣rés❡♥t❡ ❝❡ ♥♦♠❜r❡✳

✸✳✾✳✸ ❘❡❝❤❡r❝❤❡ ❞✐❝❤♦t♦♠✐q✉❡

❈❡t ❛❧❣♦r✐t❤♠❡ ♦♣èr❡ s✉r ✉♥ ❡♥s❡♠❜❧❡ ♦r❞♦♥♥é ❡t s❡ s❡rt ❞❡ ❧✬♦r❞r❡ ♣♦✉r ❞✐r✐❣❡r ❧❛ r❡❝❤❡r❝❤❡✳ ▲❡ ♠♦t❞✐❝❤♦t♦♠✐❡ ✈✐❡♥t ❞✉ ❣r❡❝ q✉✐ s✐❣♥✐✜❡ ✿ ❝♦✉♣❡r ❡♥ ❞❡✉①✳

▲❛ r❡❝❤❡r❝❤❡ ❞✐❝❤♦t♦♠✐q✉❡ ❞❛♥s ✉♥ t❛❜❧❡❛✉ tr✐é r❡♣♦s❡ s✉r ❧❡ ♣r✐♥❝✐♣❡ s✉✐✈❛♥t ✿ s✐ ❧❛ r❡❝❤❡r❝❤❡s✬❡✛❡❝t✉❡ ❡♥tr❡ ❧❡s ✐♥❞✐❝❡s bi ❡t bs ♦♥ ❝♦♠♣❛r❡ ❧❛ ✈❛❧❡✉r r❡❝❤❡r❝❤é❡ x ❛✈❡❝ ❧❛ ✈❛❧❡✉r q✉✐ ❡st à é❣❛❧❡

❞✐st❛♥❝❡ ❞❡s ❜♦r♥❡s bi ❡t bs ✱ s♦✐t à ❧✬✐♥❞✐❝❡ m =bi + bs

2✕ ❙✐ x ❡st é❣❛❧❡ à ❧❛ ✈❛❧❡✉r ❡♥ m✱ ❛❧♦rs ❧❛ r❡❝❤❡r❝❤❡ s✬❛rrêt❡ ♣♦s✐t✐✈❡♠❡♥t✱ s✐♥♦♥✕ ❙✐ x ❡st ✐♥❢ér✐❡✉r à ❧❛ ✈❛❧❡✉r ❡♥ m ❛❧♦rs ♦♥ ❝♦♥t✐♥✉❡ ❧❛ r❡❝❤❡r❝❤❡ ❡♥tr❡ ❧❡s ✐♥❞✐❝❡s bi ❡t m− 1 s✐♥♦♥✕ ❖♥ ❝♦♥t✐♥✉❡ ❧❛ r❡❝❤❡r❝❤❡ ❡♥tr❡ ❧❡s ✐♥❞✐❝❡s m+ 1 ❡t bs✳

✶✳ ❈❛❧❝✉❧❡r log2(64).✷✳ ❊❝r✐r❡ ✉♥❡ ❢♦♥❝t✐♦♥ RechDicho

❋♦♥❝t✐♦♥ ❘❡❝❤❉✐❝❤♦✭❆ ✿t❛❜❧❡❛✉✱ ❡ ✿❡♥t✐❡r✮ ✿ ❊♥t✐❡r

q✉✐ ❛ ♣♦✉r ♣❛r❛♠ètr❡ ✉♥ t❛❜❧❡❛✉ q✉❡ ❧✬♦♥ s✉♣♣♦s❡ tr✐é✱ ✉♥ ❡♥t✐❡r x ❡t q✉✐ r❡♥✈♦✐❡ ❧✬✐♥❞✐❝❡ ❞❡ x s✐x ❡st ❞❛♥s ❧❡ t❛❜❧❡❛✉✱ −1 s✐♥♦♥✱ s❡❧♦♥ ❧❡ ♣r✐♥❝✐♣❡ é♥♦♥❝é ❝✐✲❞❡ss✉s✳

Page 26: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✺

✸✳ ❉♦♥♥❡③ ✉♥ ❡①❡♠♣❧❡ ❞❡ ♣r♦❣r❛♠♠❡ ♣r✐♥❝✐♣❛❧❡ q✉✐ ✉t✐❧✐s❡♥t ❝❡tt❡ ❢♦♥❝t✐♦♥✳

✹✳ ❈❛❧❝✉❧❡r❈❛❧❝✉❧❡r ❧❡ ♥♦♠❜r❡ ❞❡ ❝♦♠♣❛r❛✐s♦♥ ♣♦✉r ✉♥ r❡❝❤❡r❝❤❡ ❞✬✉♥ é❧é♠❡♥t à ❧❛ ✜♥ ❞✉ t❛❜❧❡❛✉ ❞❡✻✹ é❧é♠❡♥ts✳ ◗✉✬❡st ❝❡ q✉❡ r❡♣rés❡♥t❡ ❝❡ ♥♦♠❜r❡✳

✸✳✾✳✹ ❈♦♠♣❧❡①✐té

✶✳ ❊♥ ❞é❞✉✐r❡ ❧❛ ❝♦♠♣❧❡①✐té C1 ❞✉ ❢♦♥❝t✐♦♥ RechercheS✳

✷✳ ❊♥ ❞é❞✉✐r❡ ❧❛ ❝♦♠♣❧❡①✐té C2 ❞✉ ❢♦♥❝t✐♦♥ RechDicho✳

✸✳ ❈❛❧❝✉❧❡r limC1

C2

✹✳ ◗✉✬❡st ❝❡ q✉❡ ♦♥ ♣❡✉t ❞é❞✉✐r❡✳

Page 27: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✹

❙tr✉❝t✉r❡ ❞❡ ❞♦♥♥é❡s

✹✳✶ ❚②♣❡s ❞❡ ❞♦♥♥é❡s ❛❜str❛✐ts ✭❚❉❆✮

❯♥ ❚❉❆ ❡st ✉♥ ❡♥s❡♠❜❧❡ ❞❡ ❞♦♥♥é❡s ♦r❣❛♥✐sé ❞❡ s♦rt❡ q✉❡ ❧❡s s♣é❝✐✜❝❛t✐♦♥s ❞❡s ♦❜❥❡ts ❡t ❞❡s♦♣ér❛t✐♦♥s s✉r ❝❡s ♦❜❥❡ts ✭✐♥t❡r❢❛❝❡✮ s♦✐❡♥t sé♣❛ré❡s ❞❡ ❧❛ r❡♣rés❡♥t❛t✐♦♥ ✐♥t❡r♥❡ ❞❡s ♦❜❥❡ts ❡t ❞❡ ❞❡ ❧❛♠✐s❡ ❡♥ ♦❡✉✈r❡ ❞❡s ♦♣ér❛t✐♦♥s✳ ❊①❡♠♣❧❡ ❞❡ ❚❉❆ ✿ ❧❡ t②♣❡ ❡♥t✐❡r ♠✉♥✐ ❞❡s ♦♣ér❛t✐♦♥s ✰ ❀✲ ❀✯ ❀✪ ❀ ❂ ❀ ❃ ❀❁ ❀❁❂ ❀❃❂ ❀❂❂ ❡st ✉♥ ❚❉❆✳

❯♥❡ ♠✐s❡ ❡♥ ♦❡✉✈r❡ ❞✬✉♥ ❚❉❆ ❡st ❧❛ str✉❝t✉r❡ ❞❡ ❞♦♥♥é❡s ♣❛rt✐❝✉❧✐èr❡ ❡t ❧❛ ❞é✜♥✐t✐♦♥ ❞❡s ♦♣ér❛t✐♦♥s♣r✐♠✐t✐✈❡s ❞❛♥s ✉♥ ❧❛♥❣❛❣❡ ♣❛rt✐❝✉❧✐❡r✳

▲❡s ❛✈❛♥t❛❣❡s ❞❡s ❚❉❆ s♦♥t ✿✕ ♣r✐s❡ ❡♥ ❝♦♠♣t❡ ❞❡ t②♣❡s ❝♦♠♣❧❡①❡s✳✕ sé♣❛r❛t✐♦♥ ❞❡s s❡r✈✐❝❡s ❡t ❞✉ ❝♦❞❛❣❡✳ ▲✬✉t✐❧✐s❛t❡✉r ❞✬✉♥ ❚❉❆ ♥✬❛ ♣❛s ❜❡s♦✐♥ ❞❡ ❝♦♥♥❛îtr❡ ❧❡s ❞ét❛✐❧s❞✉ ❝♦❞❛❣❡✳

✕ é❝r✐t✉r❡ ❞❡ ♣r♦❣r❛♠♠❡s ♠♦❞✉❧❛✐r❡s✳

✹✳✷ ❉é✜♥✐t✐♦♥ ❞✬✉♥ t②♣❡ ❛❜str❛✐t

❯♥ t②♣❡ ❛❜str❛✐t ❡st ❞é❝r✐t ♣❛r s❛ s✐❣♥❛t✉r❡ q✉✐ ❝♦♠♣r❡♥❞ ✿✕ ✉♥❡ ❞é❝❧❛r❛t✐♦♥ ❞❡s ❡♥s❡♠❜❧❡s ❞é✜♥✐s ❡t ✉t✐❧✐sés ❀✕ ✉♥❡ ❞❡s❝r✐♣t✐♦♥ ❢♦♥❝t✐♦♥♥❡❧❧❡ ❞❡s ♦♣ér❛t✐♦♥s ❀✕ ✉♥❡ ❞❡s❝r✐♣t✐♦♥ ❛①✐♦♠❛t✐q✉❡ ❞❡ ❧❛ sé♠❛♥t✐q✉❡ ❞❡s ♦♣ér❛t✐♦♥s✳

✹✳✷✳✶ ❊①❡♠♣❧❡

❉é❝❧❛r❛t✐♦♥ ✿

EntierNaturel.0 ∈ EntierNaturel

❉❡s❝r✐♣t✐♦♥ ❢♦♥❝t✐♦♥♥❡❧❧❡ ✿succ : EntierNaturel → EntierNaturel+ : EntierNaturel + EntierNaturel → EntierNaturel× : EntierNaturel × EntierNaturel → EntierNaturel❉❡s❝r✐♣t✐♦♥ ❛①✐♦♠❛t✐q✉❡

✶✳ ∀x ∈ EntierNaturel; ∃x′; succ(x) = x′

✷✳ ∀x; x0 ∈ EntierNaturel; x 6= x0succ(x) 6= succ(x0)

✸✳ ∄x ∈ EntierNaturel; succ(x) = 0

✷✻

Page 28: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✼

✹✳ ∀x ∈ EntierNaturel; x+ 0 = x

✺✳ ∀x; y ∈ EntierNaturel; x+ succ(y) = succ(x+ y)

✻✳ ∀x ∈ EntierNaturel; x× 0 = 0

✼✳ ∀x; y ∈ EntierNaturel; x× succ(y) = x+ xy

✹✳✸ ▲✬✐♠♣❧❛♥t❛t✐♦♥ ❉✬✉♥ ❚②♣❡ ❆❜str❛✐t

▲✬✐♠♣❧❛♥t❛t✐♦♥ ❡st ❧❛ ❢❛ç♦♥ ❞♦♥t ❧❡ t②♣❡ ❛❜str❛✐t ❡st ♣r♦❣r❛♠♠é ❞❛♥s ✉♥ ❧❛♥❣❛❣❡ ♣❛rt✐❝✉❧✐❡r✳P♦✉r ✉♥ t②♣❡ ❛❜str❛✐t ❞♦♥♥é✱ ♣❧✉s✐❡✉rs ✐♠♣❧❛♥t❛t✐♦♥s ♣♦ss✐❜❧❡s ♣❡✉✈❡♥t êtr❡ ❞é✈❡❧♦♣♣é❡s✳▲❡ ❝❤♦✐①

❞✬✐♠♣❧❛♥t❛t✐♦♥ ❞✉ t②♣❡ ❛❜str❛✐t ✈❛r✐❡r❛ s❡❧♦♥ ❧✬✉t✐❧✐s❛t✐♦♥ q✉✐ ❡♥ ❡st ❢❛✐t❡ ❡t ❛✉r❛ ✉♥❡ ✐♥✢✉❡♥❝❡ s✉r ❧❛❝♦♠♣❧❡①✐té ❞❡s ♦♣ér❛t✐♦♥s✳

✹✳✹ ❯t✐❧✐s❛t✐♦♥ ❞❡ t②♣❡ ❛❜str❛✐t

P✉✐sq✉❡ ❧❛ ❞é✜♥✐t✐♦♥ ❞✬✉♥ t②♣❡ ❛❜str❛✐t ❡st ✐♥❞é♣❡♥❞❛♥t❡ ❞❡ t♦✉t❡ ✐♠♣❧❛♥t❛t✐♦♥ ♣❛rt✐❝✉❧✐èr❡✱ ❧✬✉t✐❧✐s❛✲t✐♦♥ ❞✉ t②♣❡ ❛❜str❛✐t ❞❡✈r❛ s❡ ❢❛✐r❡ ❡①❝❧✉s✐✈❡♠❡♥t ♣❛r ❧✬✐♥t❡r♠é❞✐❛✐r❡ ❞❡s ♦♣ér❛t✐♦♥s q✉✐ ❧✉✐ s♦♥t ❛ss♦❝✐é❡s❡t ❡♥ ❛✉❝✉♥ ❝❛s ❡♥ t❡♥❛♥t ❝♦♠♣t❡ ❞❡ s♦♥ ✐♠♣❧❛♥t❛t✐♦♥✳ ❉✬❛✐❧❧❡✉rs ❝❡rt❛✐♥s ❧❛♥❣❛❣❡s ❞❡ ♣r♦❣r❛♠♠❛t✐♦♥♣❡✉✈❡♥t ✈♦✉s ❧✬✐♠♣♦s❡r✱ ♠❛✐s ❝❡ ♥✬❡st ♠❛❧❤❡✉r❡✉s❡♠❡♥t ♣❛s ❧❡ ❝❛s ❞❡ t♦✉s ❧❡s ❧❛♥❣❛❣❡s ❞❡ ♣r♦❣r❛♠♠❛t✐♦♥❡t ❝✬❡st ❛❧♦rs ❛✉ ♣r♦❣r❛♠♠❡✉r ❞❡ ❢❛✐r❡ ♣r❡✉✈❡ ❞❡ r✐❣✉❡✉r ✦

▲❡s ❡♥✲têt❡s ❞❡s ❢♦♥❝t✐♦♥s ❡t ❞❡s ♣r♦❝é❞✉r❡s ❞✉ t②♣❡ ❛❜str❛✐t ❡t ❧❡s ❛✣r♠❛t✐♦♥s q✉✐ ❞é✜♥✐ss❡♥t ❧❡✉rrô❧❡ r❡♣rés❡♥t❡♥t ❧✬✐♥t❡r❢❛❝❡ ❡♥tr❡ ❧✬✉t✐❧✐s❛t❡✉r ❡t ❧❡ t②♣❡ ❛❜str❛✐t✳ ❈❡❝✐ ♣❡r♠❡t é✈✐❞❡♠♠❡♥t ❞❡ ♠❛♥✐♣✉✲❧❡r ❧❡ t②♣❡ ❛❜str❛✐t s❛♥s ♠ê♠❡ q✉❡ s♦♥ ✐♠♣❧❛♥t❛t✐♦♥ s♦✐t ❞é✜♥✐❡✱ ♠❛✐s ❛✉ss✐ ❞❡ r❡♥❞r❡ s♦♥ ✉t✐❧✐s❛t✐♦♥✐♥❞é♣❡♥❞❛♥t❡ ✈✐s✲à✲✈✐s ❞❡ t♦✉t ❝❤❛♥❣❡♠❡♥t ❞✬✐♠♣❧❛♥t❛t✐♦♥✳

Page 29: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✺

❙tr✉❝t✉r❡s ❧✐♥é❛✐r❡s✲▲❡s ▲✐st❡s

✺✳✶ ■♥tr♦❞✉❝t✐♦♥

▲❡s str✉❝t✉r❡s ❧✐♥é❛✐r❡s s♦♥t ✉♥ ❞❡s ♠♦❞è❧❡s ❞❡ ❞♦♥♥é❡s ❧❡s ♣❧✉s é❧é♠❡♥t❛✐r❡s ❡t ✉t✐❧✐sés ❞❛♥s ❧❡s♣r♦❣r❛♠♠❡s ✐♥❢♦r♠❛t✐q✉❡s✳ ❊❧❧❡s ♦r❣❛♥✐s❡♥t ❧❡s ❞♦♥♥é❡s s♦✉s ❢♦r♠❡ ❞❡ séq✉❡♥❝❡ ♥♦♥ ♦r❞♦♥♥é❡ ❞✬é❧é♠❡♥ts❛❝❝❡ss✐❜❧❡s ❞❡ ❢❛ç♦♥ séq✉❡♥t✐❡❧❧❡✳ ❚♦✉t é❧é♠❡♥t ❞✬✉♥❡ séq✉❡♥❝❡✱ s❛✉❢ ❧❡ ❞❡r♥✐❡r✱ ♣♦ssè❞❡ ✉♥ s✉❝❝❡ss❡✉r✳❯♥❡ séq✉❡♥❝❡ s ❝♦♥st✐t✉é❡ ❞❡ ♥ é❧é♠❡♥ts s❡r❛ ❞é♥♦té❡ ❝♦♠♠❡ s✉✐t ✿s =< e1, e2, e3, . . . , en >❡t ❧❛ séq✉❡♥❝❡ ✈✐❞❡ ✿s =<>

▲❡s ♦♣ér❛t✐♦♥s ❞✬❛❥♦✉t ❡t ❞❡ s✉♣♣r❡ss✐♦♥ ❞✬é❧é♠❡♥ts s♦♥t ❧❡s ♦♣ér❛t✐♦♥s ❞❡ ❜❛s❡ ❞❡s str✉❝t✉r❡s ❧✐✲♥é❛✐r❡s✳ ❙❡❧♦♥ ❧❛ ❢❛ç♦♥ ❞♦♥t ♣r♦❝è❞❡♥t ❝❡s ♦♣ér❛t✐♦♥s✱ ♥♦✉s ❞✐st✐♥❣✉❡r♦♥s ❞✐✛ér❡♥t❡s s♦rt❡s ❞❡ str✉❝t✉r❡s❧✐♥é❛✐r❡s✳ ▲❡s ❧✐st❡s ❛✉t♦r✐s❡♥t ❞❡s ❛❥♦✉ts ❡t ❞❡s s✉♣♣r❡ss✐♦♥s ❞✬é❧é♠❡♥ts ♥✬✐♠♣♦rt❡ ♦ù ❞❛♥s ❧❛ séq✉❡♥❝❡✱❛❧♦rs q✉❡ ❧❡s ♣✐❧❡s ❡t ❧❡s ✜❧❡s ♥❡ ❧❡s ♣❡r♠❡tt❡♥t q✉✬❛✉① ❡①tré♠✐tés✳ ❖♥ ❝♦♥s✐❞èr❡ q✉❡ ❧❡s ♣✐❧❡s ❡t ❧❡s ✜❧❡ss♦♥t ❞❡s ❢♦r♠❡s ♣❛rt✐❝✉❧✐èr❡s ❞❡ ❧✐st❡ ❧✐♥é❛✐r❡✳ ❉❛♥s ❝❡ ❝❤❛♣✐tr❡✱ ♥♦✉s ❝♦♠♠❡♥❝❡r♦♥s ♣❛r ♣rés❡♥t❡r ❧❛❢♦r♠❡ ❣é♥ér❛❧❡✱ ♣✉✐s ♥♦✉s ét✉❞✐❡r♦♥s ❧❡s tr♦✐s ❢♦r♠❡s ♣❛rt✐❝✉❧✐èr❡s ❞❡ ❧✐st❡✳

✺✳✷ ❉é✜♥✐t✐♦♥

▲❛ ❧✐st❡ ❞é✜♥✐t ✉♥❡ ❢♦r♠❡ ❣é♥ér❛❧❡ ❞❡ séq✉❡♥❝❡✳ ❯♥❡ ❧✐st❡ ❡st ✉♥❡ séq✉❡♥❝❡ ✜♥✐❡ ❞✬é❧é♠❡♥ts r❡♣éréss❡❧♦♥ ❧❡✉r r❛♥❣✳ ❙✬✐❧ ♥✬② ❛ ♣❛s ❞❡ r❡❧❛t✐♦♥ ❞✬♦r❞r❡ s✉r ❧✬❡♥s❡♠❜❧❡ ❞❡s é❧é♠❡♥ts ❞❡ ❧❛ séq✉❡♥❝❡✱ ✐❧ ❡♥ ❡①✐st❡✉♥❡ s✉r ❧❡ r❛♥❣✳ ▲❡ r❛♥❣ ❞✉ ♣r❡♠✐❡r é❧é♠❡♥t ❡st ✶✱ ❧❡ r❛♥❣ ❞✉ s❡❝♦♥❞ ❡st ✷✱ ❡t ❛✐♥s✐ ❞❡ s✉✐t❡✳ ▲✬❛❥♦✉t ❡t❧❛ s✉♣♣r❡ss✐♦♥ ❞✬✉♥ é❧é♠❡♥t ♣❡✉t s❡ ❢❛✐r❡ à ♥✬✐♠♣♦rt❡ q✉❡❧ r❛♥❣ ✈❛❧✐❞❡ ❞❡ ❧❛ ❧✐st❡✳

✺✳✸ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡

✺✳✸✳✶ ❊♥s❡♠❜❧❡s

▲✐st❡ ❡st ❧✬❡♥s❡♠❜❧❡ ❞❡s ❧✐st❡s ❧✐♥é❛✐r❡s ♥♦♥ ♦r❞♦♥♥é❡s ❞♦♥t ❧❡s é❧é♠❡♥ts ❛♣♣❛rt✐❡♥♥❡♥t à ✉♥ ❡♥s❡♠❜❧❡ε q✉❡❧❝♦♥q✉❡✳ ▲✬❡♥s❡♠❜❧❡ ❞❡s ❡♥t✐❡rs r❡♣rés❡♥t❡ ❧❡ r❛♥❣ ❞❡s é❧é♠❡♥ts✳ ▲❛ ❝♦♥st❛♥t❡ listevide ❡st ❧❛ ❧✐st❡✈✐❞❡✳Liste ✉t✐❧✐s❡ ε✱ ♥❛t✉r❡❧ ❡t ❡♥t✐❡rlistevide ∈ Liste

✷✽

Page 30: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✷✾

✺✳✸✳✷ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡

▲❡ t②♣❡ ❛❜str❛✐t ▲✐st❡ ❞é✜♥✐t ❧❡s q✉❛tr❡ ♦♣ér❛t✐♦♥s ❞❡ ❜❛s❡ s✉✐✈❛♥t❡s ✿longueur : Liste← naturelieme : Liste× entier ← εsupprimer : Liste× entier ← Listeajouter : Liste× entier × ε← Liste▲✬♦♣ér❛t✐♦♥ ❧♦♥❣✉❡✉r r❡♥✈♦✐❡ ❧❡ ♥♦♠❜r❡ ❞✬é❧é♠❡♥ts ❞❡ ❧❛ ❧✐st❡✳ ▲✬♦♣ér❛t✐♦♥ ieme r❡t♦✉r♥❡ ❧✬é❧é♠❡♥t ❞✬✉♥r❛♥❣ ❞♦♥♥é✳ ❊♥✜♥✱ s✉♣♣r✐♠❡r ✭r❡s♣✳ ❛❥♦✉t❡r✮ s✉♣♣r✐♠❡ ✭r❡s♣✳ ❛❥♦✉t❡✮ ✉♥ é❧é♠❡♥t à ✉♥ r❛♥❣ ❞♦♥♥é✳

✺✳✸✳✸ ❉é✜♥✐t✐♦♥ ❛①✐♦♠❛t✐q✉❡

▲❡s ❛①✐♦♠❡s s✉✐✈❛♥ts ❞é❝r✐✈❡♥t ❧❡s q✉❛tr❡ ♦♣ér❛t✐♦♥s ❛♣♣❧✐❝❛❜❧❡s s✉r ❧❡s ❧✐st❡s✳ ▲❛ ❧♦♥❣✉❡✉r ❞✬✉♥❡ ❧✐st❡✈✐❞❡ ❡st é❣❛❧❡ à ③ér♦✳ ▲✬❛❥♦✉t ❞✬✉♥ é❧é♠❡♥t ❞❛♥s ❧❛ ❧✐st❡ ❛✉❣♠❡♥t❡ s❛ ❧♦♥❣✉❡✉r ❞❡ ✉♥✱ ❡t s❛ s✉♣♣r❡ss✐♦♥❧❛ ré❞✉✐t ❞❡ ✉♥✳∀l ∈ Liste; et∀e ∈ εlongueur(listevide) = 0∀r; 1 ≤ r < longueur(l); longueur(supprimer(l; r)) = longueur(l)− 1∀r; 1 ≤ r ≤ longueur(l) + 1; longueur(ajouter(l, r, e)) = longueur(l) + 1

▲✬♦♣ér❛t✐♦♥ ieme r❡♥✈♦✐❡ ❧✬é❧é♠❡♥t ❞❡ r❛♥❣ r✱ ❡t ♥✬❡st ❞é✜♥✐❡ q✉❡ s✐ ❧❡ r❛♥❣ ❡st ✈❛❧✐❞❡✳(4)∀r; r < 1etr > longueur(l); ∄e; e = ieme(l, r)

▲✬♦♣ér❛t✐♦♥ s✉♣♣r✐♠❡r r❡t✐r❡ ✉♥ é❧é♠❡♥t q✉✐ ❛♣♣❛rt✐❡♥t à ❧❛ ❧✐st❡✱ ❝✬❡st✲à✲❞✐r❡ ❞♦♥t ❧❡ r❛♥❣ ❡st ❝♦♠♣r✐s❡♥tr❡ ✉♥ ❡t ❧❛ ❧♦♥❣✉❡✉r ❞❡ ❧❛ ❧✐st❡✳ ▲❡s ❛①✐♦♠❡s s✉✐✈❛♥ts ✐♥❞✐q✉❡♥t q✉❡ ❧❡ r❛♥❣ ❞❡s é❧é♠❡♥ts à ❞r♦✐t❡ ❞❡❧✬é❧é♠❡♥t s✉♣♣r✐♠é ❡st ❞é❝ré♠❡♥té ❞❡ ✉♥✳∀r; 1 ≤ r ≤ longueur(l)et1 ≤ i < r, ieme(supprimer(l, r), i) = ieme(l, i)∀r; 1 ≤ r ≤ longueur(l)etr ≤ i ≤ longueur(l)− 1; ieme(supprimer(l; r); i) = ieme(l; i+ 1)∀r; r < 1etr > longueur(l); ∄l′; l′ = supprimer(l, r)

▲✬♦♣ér❛t✐♦♥ ❛❥♦✉t❡r ✐♥sèr❡ ✉♥ é❧é♠❡♥t à ✉♥ r❛♥❣ ❝♦♠♣r✐s ❡♥tr❡ ✉♥ ❡t ❧❛ ❧♦♥❣✉❡✉r ❞❡ ❧❛ ❧✐st❡ ♣❧✉s ✉♥✳ ▲❡r❛♥❣ ❞❡s é❧é♠❡♥ts à ❧❛ ❞r♦✐t❡ ❞✉ r❛♥❣ ❞✬✐♥s❡rt✐♦♥ ❡st ✐♥❝ré♠❡♥té ❞❡ ✉♥✳ ∀r; 1 ≤ r ≤ longueur(l)+1et1 ≤i < r; ieme(ajouter(l, r, e), i) = ieme(l, i)∀r; 1 ≤ r ≤ longueur(l) + 1etr = i; ieme(ajouter(l; r; e); i) = e∀r; 1 ≤ r ≤ longueur(l) + 1etr < i ≤ longueur(l) + 1; ieme((ajouter, r, e), i) = ieme(l, i− 1)∀r; r < 1etr > longueur(l) + 1;@l′; l′ = ajouter(l, r, e)

✺✳✹ ■♠♣❧✐♠❡♥t❛t✐♦♥

✺✳✹✳✶ ■♠♣❧é♠❡♥t❛t✐♦♥ ❝♦♥t✐❣✉ë✭❯t✐❧✐s❛t✐♦♥ ❞✬✉♥ t❛❜❧❡❛✉✮

▲❛ ♠ét❤♦❞❡ q✉✐ ✈✐❡♥t ❡♥ ♣r❡♠✐❡r à ❧✬❡s♣r✐t✱ ❧♦rsq✉✬♦♥ ♠é♠♦r✐s❡ ❧❡s é❧é♠❡♥ts ❞✬✉♥❡ ❧✐st❡ ❞❛♥s ✉♥t❛❜❧❡❛✉✱ ❡st ❞❡ ❝♦♥s❡r✈❡r s②sté♠❛t✐q✉❡♠❡♥t ❧❡ ♣r❡♠✐❡r é❧é♠❡♥t à ❧❛ ♣r❡♠✐èr❡ ♣❧❛❝❡ ❞✉ t❛❜❧❡❛✉✱ ❡t ❞❡ ♥❡❢❛✐r❡ ✈❛r✐❡r q✉✬✉♥ ✐♥❞✐❝❡ ❞❡ ✜♥ ❞❡ ❧✐st❡✳▲✬❡♥❝♦❞❛❣❡ ❞❡s ❧✐st❡s ✭✈❡rs✐♦♥ ✐tér❛t✐✈❡✮ ✉t✐❧✐s❡ ❞❡s t❛❜❧❡❛✉① ✿

✕ ❯♥❡ ❧✐st❡ ❡st r❡♣rés❡♥té❡ ♣❛r ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ n ❡t ✉♥ ❡♥t✐❡r q✉✐ r❡♣rés❡♥t❡ ❧❛ t❛✐❧❧❡ ❞❡ ❧❛ ❧✐st❡ ❀✕ ▲❛ ❧✐st❡ ✈✐❞❡ ❡st ❞♦♥❝ ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ n ✭❝♦♠♠❡ t♦✉t❡s ❧❡s ❛✉tr❡s✮ ❞♦♥t ❧❡s ✈❛❧❡✉rs ♥✬♦♥t ♣❛s

❞✬✐♠♣♦rt❛♥❝❡ ❡t ❞♦♥t ❧❛ t❛✐❧❧❡ ❡st ✵ ✳

Page 31: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✵

❧❛ ❞é✜♥✐t✐♦♥ ❞❡ ❧❛ str✉❝t✉r❡ liste ❡st ❞♦♥❝ ✿t②♣❡ ❧✐st❡❂❡♥r❡❣✐str❡♠❡♥t

t❛❜✿t❛❜❧❡❛✉❬✶✳✳♥❪❞✬é❧é♠❡♥t

❧❣✿❡♥t✐❡r

✜♥

▲✬❛❧❣♦r✐t❤♠❡ ❞❡ ❧✬♦♣ér❛t✐♦♥ ime ❡st très s✐♠♣❧❡✱ ♣✉✐sq✉❡ ❧❡ t❛❜❧❡❛✉ ♣❡r♠❡t ✉♥ ❛❝❝ès ❞✐r❡❝t à ❧✬é❧é♠❡♥t❞❡ r❛♥❣ r✳ ▲❛ ❝♦♠♣❧❡①✐té ❞❡ ❝❡t ❛❧❣♦r✐t❤♠❡ ❡st ❞♦♥❝ O(1)✳

❋♦♥❝t✐♦♥ ✐❡♠❡✭❧ ✿❧✐st❡✱r ✿❡♥t✐❡r✮ ✿é❧é♠❡♥t❱❛r ✿❞é❜✉t

s✐ ✭r❁❂❧✳❧❣✮✫ ✭r❃❂✶✮ ❛❧♦rsieme← l.tab[r]

✜♥s✐

✜♥

▲✬♦♣ér❛t✐♦♥ ❞❡ s✉♣♣r❡ss✐♦♥ ❞✬✉♥ é❧é♠❡♥t ❞❡ ❧❛ ❧✐st❡ ♣r♦✈♦q✉❡ ✉♥ ❞é❝❛❧❛❣❡ ❞❡s é❧é♠❡♥ts q✉✐ s❡ s✐t✉❡♥tà ❞r♦✐t❡ ❞✉ r❛♥❣ ❞❡ s✉♣♣r❡ss✐♦♥✳ P♦✉r ✉♥❡ ❧✐st❡ ❞❡ n é❧é♠❡♥ts✱ ❧❛ ❝♦♠♣❧❡①✐té ❞❡ ❝❡tt❡ ♦♣ér❛t✐♦♥ ❡st O(n)✱❡t ❧✬❛❧❣♦r✐t❤♠❡ q✉✐ ❧❛ ❞é❝r✐t ❡st ❧❡ s✉✐✈❛♥t ✿

Pr♦❝é❞✉r❡ s✉♣♣r✐♠❡r✭✈❛r ❧ ✿❧✐st❡ ❀r ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

s✐ ✭r❁❂❧✳❧❣✮✫ ✭r❃❂✶✮ ❛❧♦rs♣♦✉r i← r à ❧✳❧❣✲✶ ❢❛✐r❡

l.tab[i]← l.tab[i+ 1]✜♥♣♦✉r

✜♥s✐l.lg ← l.lg − 1

✜♥

▲✬♦♣ér❛t✐♦♥ ❞✬❛❥♦✉t ❞✬✉♥ é❧é♠❡♥t e ❛✉ r❛♥❣ r ❝♦♥s✐st❡ à ❞é❝❛❧❡r ❞✬✉♥❡ ♣♦s✐t✐♦♥ ✈❡rs ❧❛ ❞r♦✐t❡ t♦✉s ❧❡sé❧é♠❡♥ts à ♣❛rt✐r ❞✉ r❛♥❣ r✳ ▲❡ ♥♦✉✈❡❧ é❧é♠❡♥t ❡st ✐♥séré ❛✉ r❛♥❣ r✳ ❧❡ ♣r♦❝é❞✉r❡ ajouter ❞♦✐t ✈ér✐✜❡r s✐❧❡ t❛❜❧❡❛✉ tab ❞✐s♣♦s❡ ❞✬✉♥❡ ♣❧❛❝❡ ❧✐❜r❡ ❛✈❛♥t ❞✬❛❥♦✉t❡r ✉♥ ♥♦✉✈❡❧ é❧é♠❡♥t✳ ❈♦♠♠❡ ♣♦✉r ❧✬♦♣ér❛t✐♦♥ ❞❡s✉♣♣r❡ss✐♦♥✱ ❧❛ ❝♦♠♣❧❡①✐té ❞❡ ❝❡t ❛❧❣♦r✐t❤♠❡ ❡st O(n)✳ ▲✬❛❧❣♦r✐t❤♠❡ ❡st ❧❡ s✉✐✈❛♥t ✿

Pr♦❝é❞✉r❡ ❛❥♦✉t❡r✭✈❛r ❧ ✿❧✐st❡ ❀❡ ✿é❧é♠❡♥t ❀r ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

s✐ ✭r❁❂❧✳❧❣✰✶✮✫ ✭r❃❂✶✮ ❛❧♦rs♣♦✉r i← l.lg à r✲✷ ❢❛✐r❡

l.tab[i+ 1]← l.tab[i]✜♥♣♦✉r

✜♥s✐l.tab[r]← el.lg ← l.lg + 1

✜♥

■❧ ❡st ✐♠♣♦rt❛♥t ❞❡ r❡♠❛rq✉❡r q✉❡ ❧❛ s✉♣♣r❡ss✐♦♥ ❞❡ ❧✬é❧é♠❡♥t ❞❡ têt❡ ❡st très ❝♦ût❡✉s❡ ♣✉✐sq✉✬❡❧❧❡♣r♦✈♦q✉❡ ✉♥ ❞é❝❛❧❛❣❡ ❞❡ t♦✉s ❧❡s é❧é♠❡♥ts ❞❡ ❧❛ ❧✐st❡✳ ❆✐♥s✐ ♣♦✉r ❞❡s r❛✐s♦♥s ❞✬❡✣❝❛❝✐té✱ ✐❧ s❡r❛ ♣ré❢ér❛❜❧❡❞❡ ❣ér❡r ❧❡ t❛❜❧❡❛✉ ❞❡ ❢❛ç♦♥ ❝✐r❝✉❧❛✐r❡✳

Page 32: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✶

▲❛ ❣❡st✐♦♥ ❝✐r❝✉❧❛✐r❡ ❞✉ t❛❜❧❡❛✉ s❡ ❢❛✐t à ❧✬❛✐❞❡ ❞❡ ❞❡✉① ✐♥❞✐❝❡s ✿ ✉♥ ✐♥❞✐❝❡ ❞❡ tte q✉✐ ❞és✐❣♥❡ ❧❡ ♣r❡♠✐❡ré❧é♠❡♥t ❞❡ ❧❛ ❧✐st❡✱ ❡t ✉♥ ✐♥❞✐❝❡ ❞❡ queue q✉✐ ✐♥❞✐q✉❡ ❧✬❡♠♣❧❛❝❡♠❡♥t ❧✐❜r❡ ❛♣rès ❧❡ ❞❡r♥✐❡r é❧é♠❡♥t ❞❡ ❧❛❧✐st❡✳

❧❛ ❞é✜♥✐t✐♦♥ ❞❡ ❧❛ str✉❝t✉r❡ liste ❡st ❞♦♥❝ ✿t②♣❡ ❧✐st❡❂❡♥r❡❣✐str❡♠❡♥t

t❛❜✿t❛❜❧❡❛✉❬✶✳✳♥❪❞✬é❧é♠❡♥t

❧❣✿❡♥t✐❡r

t❡t❡✱q✉❡✉❡✿❡♥t✐❡r

✜♥

▲❡s ✐♥❞✐❝❡s ❞❡ têt❡ ♦✉ ❞❡ q✉❡✉❡ s♦♥t ✐♥❝ré♠❡♥tés ♦✉ ❞é❝ré♠❡♥tés ❞❡ ✉♥ à ❝❤❛q✉❡ ❛❥♦✉t ♦✉ s✉♣♣r❡ss✐♦♥✳▲♦rsq✉✬♦♥ ✐♥❝ré♠❡♥t❡ ✉♥ ✐♥❞✐❝❡ ❡♥ ✜♥ ❞❡ t❛❜❧❡❛✉✱ s❛ ♣r♦❝❤❛✐♥❡ ✈❛❧❡✉r ❡st ❛❧♦rs ❧✬✐♥❞✐❝❡ ❞✉ ♣r❡♠✐❡r❝♦♠♣♦s❛♥t ❞✉ t❛❜❧❡❛✉✳ ❉❡ ♠ê♠❡✱ ❧♦rsq✉✬♦♥ ❞é❝ré♠❡♥t❡ ✉♥ ✐♥❞✐❝❡ ❡♥ ❞é❜✉t ❞❡ t❛❜❧❡❛✉✱ s❛ ♣r♦❝❤❛✐♥❡✈❛❧❡✉r ❡st ❛❧♦rs ❧✬✐♥❞✐❝❡ ❞✉ ❞❡r♥✐❡r ❝♦♠♣♦s❛♥t ❞✉ t❛❜❧❡❛✉✳

❧❡s ♣r♦❝❡❞✉r❡s ❡t ❢♦♥❝t✐♦♥s s♦♥t é❝r✐ts ❝♦♠♠❡ s✉✐t❡ ✿

❋♦♥❝t✐♦♥ ✐❡♠❡✭❧ ✿❧✐st❡✱r ✿❡♥t✐❡r✮ ✿é❧é♠❡♥t❱❛r ✿❞é❜✉t

s✐ ✭r❁❂❧✳❧❣✮✫ ✭r❃❂✶✮ ❛❧♦rsieme← l.tab[((l.tete+ r − 2)mod n) + 1]

✜♥s✐

✜♥

Page 33: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✷

Pr♦❝é❞✉r❡ s✉♣r✐♠♠❡r✭✈❛r ❧ ✿❧✐st❡ ❀r ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

s✐ ✭r❁❂❧✳❧❣✮✫ ✭r❃❂✶✮ ❛❧♦rss✐ r❂❂❧✳❧❣ ❛❧♦rs

s✐ l.queue = 1 ❛❧♦rsl.queue← n

s✐♥♦♥l.queue← l.queue− 1

✜♥s✐

s✐♥♦♥s✐ r❂❂✶ ❛❧♦rs

s✐ l.tete = n ❛❧♦rsl.tete← 1

s✐♥♦♥l.tete← l.tete+ 1

✜♥s✐

s✐♥♦♥♣♦✉r i← l.tete+ r à l.tete+ l.lg − 1 ❢❛✐r❡

l.tab[(i− 2 mod n) + 1]← l.tab[(i− 1 mod n) + 1]✜♥♣♦✉rs✐ l.queue = 1 ❛❧♦rs

l.queue← ns✐♥♦♥

l.queue← l.queue− 1✜♥s✐

✜♥s✐

✜♥s✐l.lg ← l.lg − 1

✜♥s✐

✜♥

Page 34: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✸

Pr♦❝é❞✉r❡ ❛❥♦✉t❡r✭✈❛r ❧ ✿❧✐st❡ ❀❡ ✿é❧é♠❡♥t ❀r ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

s✐ ✭r❁❂❧✳❧❣✰✶✮✫ ✭r❃❂✶✮ ❛❧♦rss✐ r❂❂❧✳❧❣✰✶ ❛❧♦rs

l.tab[l.queue]← es✐ l.queue = n ❛❧♦rs

l.queue← 1s✐♥♦♥

l.queue← l.queue+ 1✜♥s✐

s✐♥♦♥s✐ r❂❂✶ ❛❧♦rs

s✐ l.tete = 1 ❛❧♦rsl.tete← n

s✐♥♦♥l.tete← l.tete− 1

✜♥s✐l.tab[l.tete]← e

s✐♥♦♥♣♦✉r i← l.tete+ l.lg à ❧✳t❡t❡✰r✲✷ ❢❛✐r❡

l.tab[(i− 1 mod n) + 1]← l.tab[(i− 2 mod n) + 1]✜♥♣♦✉rl.tab[l.tete+ r − 1]← e

✜♥s✐

✜♥s✐l.lg ← l.lg + 1

✜♥s✐

✜♥

✺✳✹✳✷ ■♠♣❧é♠❡♥t❛t✐♦♥ ❝❤❛î♥é❡s✭❯t✐❧✐s❛t✐♦♥ ❞✬✉♥❡ str✉❝t✉r❡ ❝❤❛î♥é❡✮

❯♥❡ str✉❝t✉r❡ ❝❤❛î♥é❡ ❡st ✉♥❡ str✉❝t✉r❡ ❞②♥❛♠✐q✉❡ ❢♦r♠é❡ ❞❡ ♥♦❡✉❞s r❡❧✐és ♣❛r ❞❡s ❧✐❡♥s✳P♦✉r r❡♣rés❡♥t❡r ✉♥❡ ❧✐st❡✳ ❧❡s ♥♦❡✉❞s s♦♥t r❡♣rés❡♥tés ♣❛r ❞❡s ❜♦ît❡s r❡❝t❛♥❣✉❧❛✐r❡s✱❡t ❧❡s ❧✐❡♥s ♣❛r ❞❡s✢è❝❤❡s✳

▲✬❡♥❝♦❞❛❣❡ ❞❡s ❧✐st❡s ✭✈❡rs✐♦♥ ❝❤❛î♥é❡s✮ ✉t✐❧✐s❡ ❞❡s ♣♦✐♥t❡✉rs ✿t②♣❡ ❝❡❧❧✉❧❡❂❡♥r❡❣✐str❡♠❡♥t

■♥❢♦✿é❧é♠❡♥t

s✉✐✈❛♥t✿❫ ❝❡❧❧✉❧❡

✜♥t②♣❡ ❧✐st❡❂❫❝❡❧❧✉❧❡

❆✈❡❝ ❝❡tt❡ str✉❝t✉r❡ ❝❤❛î♥é❡✱ ❧❡s ♦♣ér❛t✐♦♥s longueur✱ ime✱ supprimer✱ ❡t ajouter ♥é❝❡ss✐t❡♥t t♦✉t❡s✉♥ ♣❛r❝♦✉rs séq✉❡♥t✐❡❧ ❞❡ ❧❛ ❧✐st❡ ❡t ♣♦ssè❞❡♥t ❞♦♥❝ ✉♥❡ ❝♦♠♣❧❡①✐té é❣❛❧❡ à O(n)✳

Page 35: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✹

❋♦♥❝t✐♦♥ ❧♦♥❣✉❡✉r✭❧ ✿❧✐st❡✮ ✿❡♥t✐❡r❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

i← 0t❛♥t q✉❡ ❧❁❃♥✐❧ ❢❛✐r❡

i← i+ 1l ← l ↑ .suivant

✜♥tqlongueur ← i

✜♥

❖♥ ♣❡✉t é❝r✐r❡ ✉♥❡ ✈❡rs✐♦♥ ré❝✉rs✐✈❡ ❞❡ ❝❡tt❡ ❢♦♥❝t✐♦♥ ❝♦♠♠❡ s✉✐t ✿

❋♦♥❝t✐♦♥ ❧♦♥❣✉❡✉r✭❧ ✿❧✐st❡✮ ✿❡♥t✐❡r

❞é❜✉ts✐ ❧❂♥✐❧ ❛❧♦rs

longueur ← 0s✐♥♦♥

longueur ← 1 + longueur(l ↑ .suivant)✜♥s✐

✜♥

❖♥ ❛tt❡✐♥t ❧❡ ♥♦❡✉❞ ❞❡ r❛♥❣ r ❡♥ ❛♣♣❧✐q✉❛♥t r−1 ❢♦✐s ❧✬♦♣ér❛t✐♦♥ Suivant à ♣❛rt✐r ❞❡ ❧❛ têt❡ ❞❡ ❧✐st❡✳▲✬❛❧❣♦r✐t❤♠❡ ❞❡ ❧✬♦♣ér❛t✐♦♥ ✐è♠❡ s✬é❝r✐t ✿

❋♦♥❝t✐♦♥ ✐❡♠❡✭❧ ✿❧✐st❡ ❀r ✿❡♥t✐❡r✮ ✿é❧é♠❡♥t❱❛r ✿ ✐ ✿❡♥t✐❡r❞é❜✉t

s✐ ✭r❁❂❧♦♥❣✉❡✉r✭❧✮✮✫ ✭r❃❂✶✮ ❛❧♦rs♣♦✉r i← 1 à r − 1 ❢❛✐r❡

l ← l ↑ .suivant✜♥♣♦✉rieme← l ↑ .info

✜♥s✐

✜♥

❚♦✉❥♦✉r ♦♥ ♣❡✉r é❝r✐r❡ ❞❡s ❛❧❣♦r✐t❤♠❡s ré❝✉rs✐✈❡ ✿

❋♦♥❝t✐♦♥ ✐❡♠❡✭❧ ✿❧✐st❡ ❀r ✿❡♥t✐❡r✮ ✿é❧é♠❡♥t

❞é❜✉ts✐ ✭r❁❂❧♦♥❣✉❡✉r✭❧✮✮✫ ✭r❃❂✶✮ ❛❧♦rs

s✐ r❂❂✶ ❛❧♦rsieme← l ↑ .info

s✐♥♦♥ieme← ieme(l ↑ .suivant, r − 1)

✜♥s✐

✜♥s✐

✜♥

▲❛ s✉♣♣r❡ss✐♦♥ ❞✬✉♥ é❧é♠❡♥t ❞❡ r❛♥❣ r ❝♦♥s✐st❡ à ❛✛❡❝t❡r ❛✉ ❧✐❡♥ q✉✐ ❧❡ ❞és✐❣♥❡ ❧❛ ✈❛❧❡✉r ❞❡ s♦♥ ❧✐❡♥s✉✐✈❛♥t✳ ◆♦t❡③ q✉❡ s✐ r ❡st é❣❛❧ à ✉♥✱ ✐❧ ❢❛✉t ♠♦❞✐✜❡r ❧❛ têt❡ ❞❡ ❧✐st❡✳

Page 36: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✺

Pr♦❝é❞✉r❡ s✉♣r✐♠♠❡r✭✈❛r ❧ ✿❧✐st❡ ❀r ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿✐♥t❡❣❡rt✱q ✿❧✐st❡❞é❜✉t

s✐ ✭r❁❂❧♦♥❣✉❡✉r✭❧✮✮✫ ✭r❃❂✶✮ ❛❧♦rss✐ r❂✶ ❛❧♦rs

l ← l ↑ .suivants✐♥♦♥

t← lq ← nil♣♦✉r i← 1 à r − 1 ❢❛✐r❡

q ← tt← t ↑ .suivant

✜♥♣♦✉rq ↑ .suivant← t ↑ .suivant

✜♥s✐

✜♥s✐

✜♥

❖♥ r❡♠❛rq✉❡ q✉❡ ♣♦✉r s✉♣♣r✐♠❡r ✉♥ é❧é♠❡♥t ❞❡ r❛♥❣ r✱ ✐❧ s✉✣t ❞❡ s✉♣♣r✐♠❡r ❧✬é❧é♠❡♥t ❞❡ r❛♥❣ r−1❞❡ ❧❛ s♦✉s✲❧✐st❡ q✉✐ ❝♦♠♠❡♥❝❡ ♣❛r ❧❡ s✉✐✈❛♥t ❞❡ ❧❛ têt❡✳ ❛❧♦rs ♦♥ ♣❡✉t tr❛❞✉✐r❡ ❝❡❝✐ ♣❛r ❧✬❛❧❣♦r✐t❤♠❡ ✿

Pr♦❝é❞✉r❡ s✉♣r✐♠♠❡r✭✈❛r ❧ ✿❧✐st❡ ❀r ✿❡♥t✐❡r✮❱❛r ✿❞é❜✉t

s✐ ✭r❁❂❧♦♥❣✉❡✉r✭❧✮✮✫ ✭r❃❂✶✮ ❛❧♦rss✐ r❂✶ ❛❧♦rs

l ← l ↑ .suivants✐♥♦♥

supprimer(l ↑ .suivant, r − 1)✜♥s✐

✜♥s✐

✜♥

▲✬❛❥♦✉t ❞✬✉♥ é❧é♠❡♥t e ❛✉ r❛♥❣ r ❝♦♥s✐st❡ à ❝ré❡r ✉♥ ♥♦✉✈❡❛✉ ♥♦❡✉❞ c ✐♥✐t✐❛❧✐sé à ❧❛ ✈❛❧❡✉r e✱ ♣✉✐s àr❡❧✐❡r ❧❡ ♥♦❡✉❞ ❞❡ r❛♥❣ r − 1 à c✱ ❡t ❡♥✜♥ à r❡❧✐❡r ❧❡ ♥♦❡✉❞ c ❛✉ ♥♦❡✉❞ ❞❡ r❛♥❣ r✳ ❙✐ ❧✬é❧é♠❡♥t ❡st ❛❥♦✉té❡♥ q✉❡✉❡ ❞❡ ❧✐st❡✱ s♦♥ s✉✐✈❛♥t ❡st ❧❛ ✈❛❧❡✉r nil✳ ❈♦♠♠❡ ♣ré❝é❞❡♠♠❡♥t✱ s✐ r = 1✱ ✐❧ ❢❛✉t ♠♦❞✐✜❡r ❧❛ têt❡❞❡ ❧✐st❡✳

Page 37: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✻

Pr♦❝é❞✉r❡ ❛❥♦✉t❡r✭✈❛r ❧ ✿❧✐st❡ ❀❡ ✿é❧é♠❡♥t ❀r ✿❡♥t✐❡r✮❱❛r ✿ ✐ ✿✐♥t❡❣❡rt✱q ✿❧✐st❡❝ ✿❫❝❡❧❧✉❧❡❞é❜✉t

s✐ ✭r❁❂❧♦♥❣✉❡✉r✭❧✮✮✫ ✭r❃❂✶✮ ❛❧♦rsnew(c)c ↑ .info← es✐ r❂✶ ❛❧♦rs

c ↑ .suivant← ll ← c

s✐♥♦♥t← lq ← nil♣♦✉r i← 1 à r − 1 ❢❛✐r❡

q ← tt← t ↑ .suivant

✜♥♣♦✉rc ↑ .suivant← tq ↑ .suivant← c

✜♥s✐

✜♥s✐

✜♥

❈♦♠♠❡ ❞❛♥s ❧❛ ♣r♦❝é❞✉r❡ supprimer ❧❛ ♣r♦❝é❞✉r❡ ajouter ♣❡✉t s❡ tr❛❞✉✐r❡ ❡♥ s❛ ✈❡rs✐♦♥ ✐tér❛t✐✈❡s✉✐✈❛♥t❡ ✿Pr♦❝é❞✉r❡ ❛❥♦✉t❡r✭✈❛r ❧ ✿❧✐st❡ ❀❡ ✿é❧é♠❡♥t ❀r ✿❡♥t✐❡r✮❱❛r ✿ ❝ ✿❫❝❡❧❧✉❧❡❞é❜✉t

s✐ ✭r❁❂❧♦♥❣✉❡✉r✭❧✮✮✫ ✭r❃❂✶✮ ❛❧♦rss✐ r❂✶ ❛❧♦rs

new(c)c ↑ .info← ec ↑ .suivant← ll ← c

s✐♥♦♥ajouter(l ↑ .suivant, e, r − 1)

✜♥s✐

✜♥s✐

✜♥

Page 38: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✼

✺✳✺ ❊①❡r❝✐❝❡s

✺✳✺✳✶ ❊①❡r❝✐❝❡ ✵✶ ✿ P♦✐♥t❡✉rs

❈♦♥s✐❞ér❡r ❧✬❛❧❣♦r✐t❤♠❡ s✉✐✈❛♥t ✿s✐ a s❡ tr♦✉✈❡ à ★✸✵✵✺✹✵ ❡t b à ★✷✵✷✶✵✵

❆❧❣♦r✐t❤♠❡ ✶✷✿ P♦✐♥t❡✉rs❱❛r ✿ ❛✱❜✱❝ ✿❡♥t✐❡r♣❴①✱ ♣❴②✱ ♣❴③ ✿❫❡♥t✐❡r❞é❜✉t

a← 4;b← 12;c← 23;p❴x← Addr(a)p❴y ← Addr(b)p❴z ← p❴yp❴x ↑← p❴x ↑ +2p❴y ↑← p❴y ↑ +1c← c+ 3

✜♥

✲ ❋❛✐t❡s t♦✉r♥❡r ❝❡t ❛❧❣♦r✐t❤♠❡ ❞❛♥s ✉♥ t❛❜❧❡❛✉ ✭❞❡ ✻ ❝♦❧♦♥♥❡s ❜✐❡♥ s✉r✮✳

✺✳✺✳✷ ❊①❡r❝✐❝❡ ✵✷ ✿ P♦✐♥t❡✉rs

❈♦♥s✐❞ér♦♥s ❧❡ ♣r♦❣r❛♠♠❡ s✉✐✈❛♥t ✿❆❧❣♦r✐t❤♠❡ ✶✸✿ P♦✐♥t❡✉rs✷❱❛r ✿ ❆ ✿t❛❜❧❡❛✉❬✶✳✳✾❪❞✬❡♥t✐❡r♣ ✿❫❡♥t✐❡r❞é❜✉t

A← {12, 23, 34, 45, 56, 67, 78, 89, 90}p← A

✜♥

◗✉❡❧❧❡s ✈❛❧❡✉rs ♦✉ ❛❞r❡ss❡s ❢♦✉r♥✐ss❡♥t ❝❡s ❡①♣r❡ss✐♦♥s ❄

✶✳ ♣❫✰ ✷

✷✳ ✭♣ ✰ ✷✮❫

✸✳ ♣ ✰ ✶

✹✳ ❆❞❞r✭❆❬✹❪✮ ✲ ✸

✺✳ ❆ ✰ ✸

✻✳ ❆❞❞r✭❆❬✼❪✮ ✲ ♣

✼✳ ♣ ✰ ✭♣❫✲ ✶✵✮

✽✳ ✭ ♣ ✰ ✭♣ ✰ ✽✮❫✲ ❆❬✼❪✮❫

Page 39: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✽

✺✳✺✳✸ ❊①❡r❝✐❝❡ ✵✸ ✿ ❧❡s ❧✐st❡s

▲✬❡♥❝♦❞❛❣❡ ❞❡s ❧✐st❡s ✈✉ ❡♥ ❝♦✉rs ✭✈❡rs✐♦♥ ✐tér❛t✐✈❡✮ ✉t✐❧✐s❡ ❞❡s t❛❜❧❡❛✉① ✿✕ ❯♥❡ ❧✐st❡ ❡st r❡♣rés❡♥té❡ ♣❛r ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ n ❡t ✉♥ ❡♥t✐❡r q✉✐ r❡♣rés❡♥t❡ ❧❛ t❛✐❧❧❡ ❞❡ ❧❛ ❧✐st❡ ❀✕ ▲❛ ❧✐st❡ ✈✐❞❡ ❡st ❞♦♥❝ ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ n ✭❝♦♠♠❡ t♦✉t❡s ❧❡s ❛✉tr❡s✮ ❞♦♥t ❧❡s ✈❛❧❡✉rs ♥✬♦♥t ♣❛s

❞✬✐♠♣♦rt❛♥❝❡ ❡t ❞♦♥t ❧❛ t❛✐❧❧❡ ❡st ✵ ✳❧❛ ❞é✜♥✐t✐♦♥ ❞❡ ❧❛ str✉❝t✉r❡ liste ❡st ❞♦♥❝ ✿t②♣❡ ❧✐st❡❂❡♥r❡❣✐str❡♠❡♥t

t❛❜✿t❛❜❧❡❛✉❬✶✳✳♥❪❞✬é❧é♠❡♥t

❧❣✿❡♥t✐❡r

✜♥➱❝r✐✈❡③ ❧❡s ❢♦♥❝t✐♦♥s s✉✐✈❛♥t❡s ✿

✕ liste() q✉✐ r❡♥✈♦✐❡ ❧❛ ❧✐st❡ ✈✐❞❡ ❀✕ vide(l) q✉✐ r❡♥✈♦✐❡ ✈r❛✐ s✐ ❧❛ ❧✐st❡ l ❡st ✈✐❞❡ ❡t ❢❛✉① s✐♥♦♥ ❀✕ cons(r, l) q✉✐ r❡♥✈♦✐❡ ❧❛ ❧✐st❡ ❝♦♠♠❡♥ç❛♥t ♣❛r ❧✬é❧é♠❡♥t r s✉✐✈✐ ❞❡ ❧❛ q✉❡✉❡ l ❀✕ tete(l) q✉✐ r❡♥✈♦✐❡ ❧❡ ♣r❡♠✐❡r é❧é♠❡♥t ❞❡ ❧❛ ❧✐st❡ l ❀✕ queue(l) q✉✐ r❡♥✈♦✐❡ ❧❛ q✉❡✉❡ ❞❡ ❧❛ ❧✐st❡ l✳

✭❝❡s ❢♦♥❝t✐♦♥s s♦♥t t♦✉t❡s très s✐♠♣❧❡s à é❝r✐r❡✱ ✐❧ ♥❡ ❢❛✉t ♣❛s ♣❧✉s ❞❡ ✸ ❧✐❣♥❡s ♣♦✉r ❝❤❛❝✉♥❡✮

✺✳✺✳✹ ❊①❡r❝✐❝❡ ✵✹ ✿❧❡s ❧✐st❡s

➱❝r✐✈❡③ ❧❡s ❢♦♥❝t✐♦♥s ✉♥ ♣❡✉ ♣❧✉s ❛✈❛♥❝é❡s s✉✐✈❛♥t❡s ✿✕ occ(x, l) q✉✐ ❝♦♠♣t❡ ❧❡ ♥♦♠❜r❡ ❞➆♦❝❝✉rr❡♥❝❡s ❞❡ x ❞❛♥s ❧❛ ❧✐st❡ l ❀✕ concatener(l, l′) q✉✐ ❢✉s✐♦♥♥❡ ❧❡ s❞❡✉① ❧✐st❡ l ❡t l′ ❀✕ recherche(x, l) q✉✐ r❡♥✈♦✐ ❧❡ r❛♥❣ ❞❡ ❧✬é❧é♠❡♥t x ❞❡ ❧❛ ❧s✐t❡ l s✬✐❧ ❡①✐st❡ ✱ ❡t ✲✶ s✐♥♦♥ ❀

✺✳✺✳✺ ❊①❡r❝✐❝❡ ✵✺ ✿❧❡s ❧✐st❡s

❘é❝r✐✈❡③ ❧❡s ❢♦♥❝t✐♦♥s ❞❡s ❡①❡r❝✐❝❡s ✵✸ ❡t ✵✹ ❞❛♥s ❧❡ ❝❛s ❞✬✉♥❡ ❧✐st❡ ❝✐r❝✉❧❛✐r❡✳

✺✳✺✳✻ ❊①❡r❝✐❝❡ ✵✻ ✿❆❧❣♦r✐t❤♠❡s ❞❡ ❜❛s❡

❊❝r✐r❡ ❧❡s ❛❧❣♦r✐t❤♠❡s ❞❡ ❜❛s❡ s✉✐✈❛♥ts s✉r ❧❡s ❧✐st❡s ❧✐♥é❛✐r❡s ❝❤❛î♥é❡s ✿

✶✳ ❙✉♣♣r❡ss✐♦♥ ♣❛r ✈❛❧❡✉r✳

✷✳ ■♥✈❡rs❡♠❡♥t ❞✬✉♥❡ ❧✐st❡✳✕ ❊♥ ❝ré❛♥t ✉♥❡ ♥♦✉✈❡❧❧❡ ❧✐st❡✕ ❙❛♥s ❝ré❡r ✉♥❡ ♥♦✉✈❡❧❧❡ ❧✐st❡ ✭❊♥ ■♥✈❡rs❛♥t ❧❡ ❝❤❛✐♥❛❣❡ ❞❡s ♠ê♠❡s ♠❛✐❧❧♦♥s✮

✸✳ ❚r✐ ♣❛r ❧❛ ♠ét❤♦❞❡ ❞❡s ❜✉❧❧❡s

✹✳ ❘❡❝❤❡r❝❤❡ ❞❡ ❧✬é❧é♠❡♥t q✉✐ ❛ ❧❡ ♣❧✉s ❣r❛♥❞ ♥♦♠❜r❡ ❞✬♦❝❝✉rr❡♥❝❡s

✺✳✺✳✼ ❊①❡r❝✐❝❡ ✵✼ ✿❯♥ ♣❡✉ ❛✈❛♥❝és

❙♦✐t ✉♥❡ ❧✐st❡ ❧✐♥é❛✐r❡ ❝❤❛î♥é❡ ❝♦♥t❡♥❛♥t ❞❡s ♥♦♠❜r❡s ❡♥t✐❡rs ❡t ❞♦♥t ❧❛ têt❡ ❡st l ✿

✶✳ ❊❝r✐r❡ ❧❛ ❢♦♥❝t✐♦♥ tete(l) q✉✐ r❡t♦✉r♥❡ ❧❛ ✈❛❧❡✉r ❞✉ ♣r❡♠✐❡r é❧é♠❡♥t ❞❡ ❧❛ ❧✐st❡✳

✷✳ ❊❝r✐r❡ ❧❛ ❢♦♥❝t✐♦♥ sanstete(l) q✉✐ r❡t♦✉r♥❡ ❧❛ ❧✐st❡ s❛♥s ❧❡ ♣r❡♠✐❡r é❧é♠❡♥t✳

✸✳ ❊❝r✐r❡ ❧❛ ❢♦♥❝t✐♦♥ cons(l, r) q✉✐ r❡t♦✉r♥❡ ✉♥❡ ❧✐st❡ ❞♦♥t ❧❡ ♣r❡♠✐❡r é❧é♠❡♥t ❡st ❧✬é❧é♠❡♥t ❞✉ r❛♥❣ r❡t ❧❡ r❡st❡ ❡st ❧❛ ❧✐st❡ l✳

Page 40: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✸✾

✹✳ ❊❝r✐r❡ ❧❛ ❢♦♥❝t✐♦♥ triee(L) q✉✐ r❡t♦✉r♥❡ ✈r❛✐ s✐ ❧❛ ❧✐st❡ l ❡st tr✐é❡ ❞❛♥s ❧✬♦r❞r❡ ❝r♦✐ss❛♥t ❡t ❢❛✉①s✐♥♦♥✳

✺✳ ❊❝r✐r❡ ❧❛ ❢♦♥❝t✐♦♥ fusion(l1, l2) q✉✐ ♣r❡♥❞ ❞❡✉① ❧✐st❡s tr✐é❡s ❞❛♥s ❧✬♦r❞r❡ ❝r♦✐ss❛♥t l1 ❡t l2 ❡tr❡t♦✉r♥❡ ✉♥❡ ❧✐st❡ tr✐é❡✱ ❞❛♥s ❧❡ ♠ê♠❡ ♦r❞r❡✱ ❝♦♥t❡♥❛♥t ❧❡s ❞❡✉① ❧✐st❡s ❡t ❝❡❧❛ ❡♥ ✉t✐❧✐s❛♥t ❧❡s❢♦♥❝t✐♦♥s ♣ré❝é❞❡♥t❡s✳

✺✳✺✳✽ ❊①❡r❝✐❝❡ ✵✽ ✿ ❉✐✛ér❡♥❝❡ ❞❡ ❞❡✉① ❧✐st❡s ❧✐♥é❛✐r❡s ❝❤❛î♥é❡s

❙♦✐❡♥t l1 ❡t l2 ❞❡✉① ❧✐st❡s ❧✐♥é❛✐r❡s ❝❤❛î♥é❡s ✳ ❊❝r✐r❡ ❧❛ ♣r♦❝é❞✉r❡ q✉✐ ♣❡r♠❡t ❞❡ ❝♦♥str✉✐r❡ ❧❛ ❧✐st❡l = l1− l2 ❝♦♥t❡♥❛♥t t♦✉s ❧❡s é❧é♠❡♥ts ❛♣♣❛rt❡♥❛♥t à l1 ❡t ♥✬❛♣♣❛rt❡♥❛♥t ♣❛s à l2✳

✺✳✺✳✾ ❊①❡r❝✐❝❡ ✵✾ ✿ ❘é❛❧✐s❡r ❧❡ ❝❤❛î♥❛❣❡ ❛rr✐èr❡ ❞✬✉♥❡ ❧✐st❡ ❞♦✉❜❧❡♠❡♥t ❝❤❛î✲

♥é❡

❈♦♥❝❡✈♦✐r ✉♥ s♦✉s✲❛❧❣♦r✐t❤♠❡ q✉✐ ré❛❧✐s❡ ❧❡ ❝❤❛î♥❛❣❡ ❛rr✐èr❡ ❞✬✉♥❡ ❧✐st❡ ❞♦✉❜❧❡♠❡♥t ❝❤❛î♥é❡ ❞♦♥t s❡✉❧❧❡ ❝❤❛î♥❛❣❡ ❛✈❛♥t ❛ été ❡✛❡❝t✉é✳

Page 41: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹✵

✺✳✻ ❚P ✿ ❉✐❝t✐♦♥♥❛✐r❡

▲✬♦❜❥❡❝t✐✈❡ ❞❡ ❝❡ ❚P ❡st ❞❡ ✈♦✉s ❢♦r♠❛❧✐s❡③ ❛✈❡❝ ❧✬✐♠♣❧é♠❡♥t❛t✐♦♥ ❞❡s ❧✐st❡s ❝❤❛î♥é❡s

❛✜♥ ❞❡ ❧❡s ✉t✐❧✐sé❡s ♣♦✉r rés♦✉❞r❡ ❞❡s ♣r♦❜❧è♠❡s✳◆♦t❡③ ❜✐❡♥ ✿✕ ▲❛ ❞❛t❡ ❞❡ r❡♠✐s❡ ❞❡ ❝❡ ❚P ✭❯♥ r❛♣♣♦rt ❞❡ ✸ ♣❛❣❡s ♠❛① ✰ s♦✉r❝❡s✮ ❡st ✜①é❡ ❧❡ ✿ ✳✳✳✳✳✳✳✳✳✳✳✳✳✳✕ ■❧ ❡st r❡❝♦♠♠❛♥❞❡r ❞✬✉t✐❧✐s❡r ❧❡ ❝♦♠♣✐❧❛t❡✉r ❉❡✈✲❝✰✰ ❀

✺✳✻✳✶ Pr♦❜❧è♠❡

P♦✉r ❣ér❡r ✉♥ ❞✐❝t✐♦♥♥❛✐r❡✳ ♥♦✉s ❛✈♦♥s ❜❡s♦✐♥ ❞✬❡✛❡❝t✉❡r ❧❡s ♦♣ér❛t✐♦♥s s✉✐✈❛♥t❡s ✿✕ ❧❡❝t✉r❡ ❞✬✉♥ ❡♥s❡♠❜❧❡ ❞❡ ♠♦ts ❡t ❞❡ ❧❡✉r ❞é✜♥✐t✐♦♥ ❞✬✉♥ ✜❝❤✐❡r✱ ❡t ❧❡s st♦❝❦és ❞❛♥s ✉♥❡ str✉❝t✉r❡❡①♣❧✐q✉é❡ ❡♥ ❞ét❛✐❧ ♣❧✉s ❜❛s ❀

✕ tr✐❡r ❧❡s ♠♦ts ❞❛♥s ❧✬♦r❞r❡ ❛❧♣❤❛❜ét✐q✉❡ ❀✕ ✐♥sér❡r ✉♥ ♥♦✉✈❡❛✉ ♠♦t ❞❛♥s ✉♥ ❞✐❝t✐♦♥♥❛✐r❡ ❞❛♥s ❧✬♦r❞r❡ ❀✕ s✉♣♣r✐♠❡r ✉♥ ♠♦t ❞✉ ❞✐❝t✐♦♥♥❛✐r❡ ❀✕ ❝❤❡r❝❤❡r ✉♥ ♠♦t ❞❛♥s ❧❡ ❞✐❝t✐♦♥♥❛✐r❡ ❀✕ ❛✣❝❤❡r ❧❡ ♠♦ts s✬✐❧ ❡st tr♦✉✈❡r✳

P♦✉r ❝❡ ❚P✱ ✉♥ ✜❝❤✐❡r t❡①t❡ ❝♦♥t❡♥❛♥t ❧❡s ♠♦ts ❡t ❧❡✉rs ❞é✜♥✐t✐♦♥s s❡r❛ ❢♦✉r♥✐✳❯♥ ♣r♦❣r❛♠♠❡ ❡①❡♠♣❧❡ s❡r❛ ❛✉ss✐ ❞♦♥♥é ♣♦✉r ♠♦♥tr❡r ❝♦♠♠❡♥t ❧✐r❡ ✉♥ ✜❝❤✐❡r t❡①t❡ ❧✐❣♥❡ ♣❛r ❧✐❣♥❡✳

❱♦✉s ❞❡✈❡③ ❛❞❛♣t❡r ❝❡ ♣r♦❣r❛♠♠❡ ❞❛♥s ✈♦tr❡ ♠ét❤♦❞❡ ❞❡ ❧❡❝t✉r❡✳

✺✳✻✳✷ ■♠♣❧é♠❡♥t❛t✐♦♥

P♦✉r st♦❝❦❡r ❧❡ ❞✐❝t✐♦♥♥❛✐r❡✱ ♦♥ ✈♦✉s ❞❡♠❛♥❞❡ ❞✬✉t✐❧✐s❡r ❧❛ str✉❝t✉r❡s ❞❡ ❞♦♥♥é❡s ▲✐st❡ ❀ ♥♦tr❡ ❧✐st❡❝♦♥t✐❡♥t ✉♥ ♠❛✐❧❧♦♥ q✉✐ ❝♦♥t✐❡♥t ❞❡✉① ❝❤❛î♥❡ ❞❡ ❝❛r❛❝tèr❡✭❧✬✉♥ ♣♦✉r ❧❡ ♠♦t ❡t ❧✬❛✉tr❡ ♣♦✉r s❛ ❞é✜♥✐t✐♦♥✮❡t ✉♥ ♣♦✐♥t❡✉r ❛✉ ♠♦t s✉✐✈❛♥t

tte→ ♠♦t✶ ❞é✜♥✐t✐♦♥✶ ✲ → ♠♦t✷ ❞é✜♥✐t✐♦♥✷ ✲ → nil

❖♥ ❞és✐r❡ ❞❛♥s ❝❡ ❚P ❞❡ ❝ré❡r ✉♥❡ ❜✐❜❧✐♦t❤èq✉❡ listes.h q✉✐ ❝♦♥t✐❡♥t ❧❛ ❞é✜♥✐t✐♦♥ ❞❡ ❧❛ str✉❝t✉r❡ ❧✐st❡❧✐♥é❛✐r❡ s✐♠♣❧❡♠❡♥t ❝❤❛î♥é❡ ✭❱✉❡ ❡♥ ❝♦✉rs✮ ❡t ❧❡s ❢♦♥❝t✐♦♥s ❡t ♣r♦❝é❞✉r❡ s✉✐✈❛♥ts ✿

✕ liste creer() ✿ ▲❡ ❝♦♥str✉❝t❡✉r ❞✬✉♥❡ ❧✐st❡ ✈✐❞❡ ❀✕ intest❴vide(liste l) ✿ ◗✉✐ t❡st❡ s✐ ❧❛ ❧✐st❡ ❡st ✈✐❞❡ ♦✉ ♥♦♥ ❀✕ void lire(String nom) ✿ ❈❡ ♣r♦❝é❞✉r❡ ♣❡r♠❡t ❞❡ ❧✐r❡ t♦✉t❡s ❧❡s ❧✐❣♥❡s ❞✬✉♥ ✜❝❤✐❡r ✭❞♦♥t ❧❡ ♥♦♠❡st s♣é❝✐✜❡r ♣❛r ❧❡ ♣❛r❛♠ètr❡✮ ❝♦♥t❡♥❛♥t ✉♥ ♠♦t ❞❛♥s ❝❤❛q✉❡ ❞❡✉① ❧✐❣♥❡s✱ ❡t ❛❥♦✉t❡r ❧❡s ♠♦ts ❡t❧❡s ❞é✜♥✐t✐♦♥s à ❧❛ ✜♥ ❞❡ ❧✐st❡ ❝♦rr❡s♣♦♥❞❛♥t❡ ❞❛♥s ❧❡ ❞✐❝t✐♦♥♥❛✐r❡✳ ❉❛♥s ❧❡ ✜❝❤✐❡r✱ ❧❡ ♠♦t ❡st ♠✐s❞❛♥s ❧❡ ♣r❡♠✐❡r ❧✐❣♥❡ ✱ ❡t ❡♥s✉✐t❡ ♦♥ ❛ ✉♥ ❙tr✐♥❣ ♣♦✉r s❛ ❞é✜♥✐t✐♦♥ ❞❛♥s ❧❡ ❞❡✉①✐è♠❡ ❧✐❣♥❡✳

✕ void trier() ✿ ❈❡ ♣r♦❝é❞✉r❡ ♣❡r♠❡t ❞❡ tr✐❡r ❧❛ ❧✐st❡ ❀✕ liste ajouter(String mot, String definition) ❀✕ liste supprimer(String mot, String definition) ❀✕ String recherche(String mot) ✿ ❉♦✐t r❡t♦✉r♥❡r ❧❛ ❞é✜♥✐t✐♦♥ ✭✉♥ ❙tr✐♥❣✮ ❝♦rr❡s♣♦♥❞❡♥t ❛✉ ♠♦t✳ ❙✐❧❡ ♠♦t ♥✬❡①✐st❡ ♣❛s ❞❛♥s ❧❡ ❞✐❝t✐♦♥♥❛✐r❡✱ ❡❧❧❡ r❡t♦✉r♥❡ NULL✳ ❀

✕ void afficher() ✿ ■▲ ❛✣❝❤❡ ❧❡s ♠♦ts ❡t ❧❡s ❞é✜♥✐t✐♦♥s ❞❛♥s ❧✬♦r❞r❡✳ ▲❡ ❢♦r♠❛t ❞✬✐♠♣r❡ss✐♦♥ ❡st ✿✉♥❡ ❧✐❣♥❡ ♣♦✉r ✉♥ ♠♦t✳ ❱♦✉s ❞❡✈❡③ ✉t✐❧✐s❡r ❧❛ ré❝✉rs✐♦♥ ❞❛♥s ❝❡tt❡ ♠ét❤♦❞❡✳

➱❝r✐✈❡③ ❡♥ ✜♥ ✉♥❡ ❛♣♣❧✐❝❛t✐♦♥ ❡♥ ✉t✐❧✐s❛♥t ❧❡s ♦♣ér❛t✐♦♥ ❞é✜♥✐t ✉❧tér✐❡✉r❡♠❡♥t✳

Page 42: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✻

▲❡s P✐❧❡s

✻✳✶ ■♥tr♦❞✉❝t✐♦♥

❯♥❡ ♣✐❧❡ ❡st ✉♥❡ séq✉❡♥❝❡ ❞✬é❧é♠❡♥ts ❛❝❝❡ss✐❜❧❡s ♣❛r ✉♥❡ s❡✉❧❡ ❡①tré♠✐té ❛♣♣❡❧é❡ s♦♠♠❡t✳ ❚♦✉t❡s ❧❡s♦♣ér❛t✐♦♥s ❞é✜♥✐❡s s✉r ❧❡s ♣✐❧❡s s✬❛♣♣❧✐q✉❡♥t à ❝❡tt❡ ❡①tré♠✐té✳ ▲✬é❧é♠❡♥t s✐t✉é ❛✉ s♦♠♠❡t s✬❛♣♣❡❧❧❡ ❧❡s♦♠♠❡t ❞❡ ♣✐❧❡✳

▲✬❛❥♦✉t ❡t ❧❛ s✉♣♣r❡ss✐♦♥ ❞✬é❧é♠❡♥ts ❡♥ s♦♠♠❡t ❞❡ ♣✐❧❡ s✉✐✈❡♥t ❧❡ ♠♦❞è❧❡ ❞❡r♥✐❡r ❡♥tré ➊ ♣r❡♠✐❡r s♦rt✐✭▲■❋❖✮✳ ▲❡s ♣✐❧❡s s♦♥t ❞❡s str✉❝t✉r❡s ❢♦♥❞❛♠❡♥t❛❧❡s✱ ❡t ❧❡✉r ❡♠♣❧♦✐ ❞❛♥s ❧❡s ♣r♦❣r❛♠♠❡s ✐♥❢♦r♠❛t✐q✉❡s❡st très ❢réq✉❡♥t✳ ◆♦✉s ❛✈♦♥s ❞é❥à ✈✉ q✉❡ ❧❡ ♠é❝❛♥✐s♠❡ ❞✬❛♣♣❡❧ ❞❡s s♦✉s✲♣r♦❣r❛♠♠❡s s✉✐t ❝❡ ♠♦❞è❧❡ ❞❡♣✐❧❡✳ ▲❡s ❧♦❣✐❝✐❡❧s q✉✐ ♣r♦♣♦s❡♥t ✉♥❡ ❢♦♥❝t✐♦♥ ✉♥❞♦ s❡r✈❡♥t é❣❛❧❡♠❡♥t ❞✬✉♥❡ ♣✐❧❡ ♣♦✉r ❞é❢❛✐r❡✱ ❡♥ ♦r❞r❡✐♥✈❡rs❡✱ ❧❡s ❞❡r♥✐èr❡s ❛❝t✐♦♥s ❡✛❡❝t✉é❡s ♣❛r ❧✬✉t✐❧✐s❛t❡✉r✳ ▲❡s ♣✐❧❡s s♦♥t é❣❛❧❡♠❡♥t ♥é❝❡ss❛✐r❡s ♣♦✉r é✈❛❧✉❡r❞❡s ❡①♣r❡ss✐♦♥s ♣♦st✜①é❡s✳

✻✳✷ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡

✻✳✷✳✶ ❊♥s❡♠❜❧❡s

Pile ❡st ❧✬❡♥s❡♠❜❧❡ ❞❡s ♣✐❧❡s ❞♦♥t ❧❡s é❧é♠❡♥ts ❛♣♣❛rt✐❡♥♥❡♥t à ✉♥ ❡♥s❡♠❜❧❡ E q✉❡❧❝♦♥q✉❡✳ ▲❡s♦♣ér❛t✐♦♥s s✉r ❧❡s ♣✐❧❡s s❡r♦♥t ❧❡s ♠ê♠❡s q✉❡❧❧❡ q✉❡ s♦✐t ❧❛ ♥❛t✉r❡ ❞❡s é❧é♠❡♥ts ♠❛♥✐♣✉❧és✳ ▲❛ ❝♦♥st❛♥t❡pilevide r❡♣rés❡♥t❡ ✉♥❡ ♣✐❧❡ ✈✐❞❡✳

Pile ✉t✐❧✐s❡ E ❡t booleenpilevide ∈ Pile

✻✳✷✳✷ ❉❡s❝r✐♣t✐♦♥ ❢♦♥❝t✐♦♥♥❡❧❧❡

◗✉❛tr❡ ♦♣ér❛t✐♦♥s ❛❜str❛✐t❡s s♦♥t ❞é✜♥✐❡s s✉r ❧❡ t②♣❡ P✐❧❡ ✿empiler ✿ Pile ❳ E ✙Piledepiler ✿ P✐❧❡ ✙Pilesommet ✿ P✐❧❡ ✙Eest− vide? ✿ P✐❧❡ ✙booleen▲❡ rô❧❡ ❞❡ ❧✬♦♣ér❛t✐♦♥ empiler ❡st ❞✬❛❥♦✉t❡r ✉♥ é❧é♠❡♥t ❡♥ s♦♠♠❡t ❞❡ ♣✐❧❡✱ ❝❡❧✉✐ ❞❡ dpiler ❞❡ s✉♣♣r✐♠❡r

❧❡ s♦♠♠❡t ❞❡ ♣✐❧❡ ❡t ❝❡❧✉✐ ❞❡ sommet ❞❡ r❡♥✈♦②❡r ❧✬é❧é♠❡♥t ❡♥ s♦♠♠❡t ❞❡ ♣✐❧❡✳ ❊♥✜♥✱ ❧✬♦♣ér❛t✐♦♥est− vide? ✐♥❞✐q✉❡ s✐ ✉♥❡ ♣✐❧❡ ❡st ✈✐❞❡ ♦✉ ♣❛s✳

✻✳✷✳✸ ❉❡s❝r✐♣t✐♦♥ ❛①✐♦♠❛t✐q✉❡

▲❛ sé♠❛♥t✐q✉❡ ❞❡s ❢♦♥❝t✐♦♥s ♣ré❝é❞❡♥t❡s ❡st ❞é✜♥✐❡ ❢♦r♠❡❧❧❡♠❡♥t ♣❛r ❧❡s ❛①✐♦♠❡s s✉✐✈❛♥ts ✿

✹✶

Page 43: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹✷

∀p ∈ Pile ❀ ∀e ∈ E✭✶✮ est− vide?(pilevide) = vrai✭✷✮ est− vide?(empiler(p; e)) = faux✭✸✮ depiler(empiler(p; e)) = p✭✹✮ sommet(empiler(p; e)) = e✭✺✮ ∄p; p = depiler(pilevide)✭✻✮ ∄e; e = sommet(pilevide)◆♦t❡③ q✉❡ ❝❡ s♦♥t ❧❡s ❛①✐♦♠❡s ✭✸✮ ❡t ✭✹✮ q✉✐ ❞é✜♥✐ss❡♥t ❧❡ ❝♦♠♣♦rt❡♠❡♥t ▲■❋❖ ❞❡ ❧❛ ♣✐❧❡✳ ▲❡s

♦♣ér❛t✐♦♥s ❞é♣✐❧❡r ❡t s♦♠♠❡t s♦♥t ❞❡s ❢♦♥❝t✐♦♥s ♣❛rt✐❡❧❧❡s✱ ❡t ❧❡s ❛①✐♦♠❡s ✭✺✮ ❡t ✭✻✮ ♣ré❝✐s❡♥t ❧❡✉r ❞♦♠❛✐♥❡❞❡ ❞é✜♥✐t✐♦♥ ❀ ❝❡s ❞❡✉① ♦♣ér❛t✐♦♥s ♥❡ s♦♥t ♣❛s ❞é✜♥✐❡s s✉r ✉♥❡ ♣✐❧❡ ✈✐❞❡✳

✻✳✸ ✐♠♣❧é♠❡♥t❛t✐♦♥

▲❛ ❝♦♠♣❧❡①✐té ❞❡s ♦♣ér❛t✐♦♥s ❞❡ ♣✐❧❡ ❡st O(1) q✉❡❧❧❡ q✉❡ s♦✐t ❧✬✐♠♣❧❛♥t❛t✐♦♥ ❝❤♦✐s✐❡✱ t❛❜❧❡❛✉ ♦✉str✉❝t✉r❡ ❝❤❛î♥é❡✳ ▲✬✐♠♣❧❛♥t❛t✐♦♥ ❞♦✐t ❞♦♥❝ ❛ss✉r❡r ✉♥ ❛❝❝ès ❞✐r❡❝t ❛✉ s♦♠♠❡t ❞❡ ❧❛ ♣✐❧❡✳

✻✳✸✳✶ ❯t✐❧✐s❛t✐♦♥ ❞❡s t❛❜❧❡❛✉① ✭■♠♣❧é♠❡♥t❛t✐♦♥ ❈♦♥t✐❣✉ë✮

▲✬❡♥❝♦❞❛❣❡ ❞❡s ♣✐❧❡s ✭✈❡rs✐♦♥ ✐tér❛t✐✈❡✮ ✉t✐❧✐s❡ ❞❡s t❛❜❧❡❛✉① ✿✕ ❯♥❡ Pile ❡st r❡♣rés❡♥té❡ ♣❛r ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ ♥ ❡t ✉♥ ❡♥t✐❡r q✉✐ r❡♣rés❡♥t❡ ❧✬✐♥❞✐❝❡ ❞❡ s♦♠♠❡t

❞❡ ❧❛ ♣✐❧❡ ❀✕ pilevide ❡st ❞♦♥❝ ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ ♥ ✭❝♦♠♠❡ t♦✉t❡s ❧❡s ❛✉tr❡s✮ ❞♦♥t ❧❡s ✈❛❧❡✉rs ♥✬♦♥t ♣❛s

❞✬✐♠♣♦rt❛♥❝❡ ❡t ❞♦♥t ❧✬✐♥❞✐❝❡ ❞❡ s♦♠♠❡t ❡st ✵ ✳❧❛ ❞é✜♥✐t✐♦♥ ❞❡ ❧❛ str✉❝t✉r❡ ♣✐❧❡ ❡st ❞♦♥❝ ✿

t②♣❡ ♣✐❧❡❂❡♥r❡❣✐str❡♠❡♥t

t❛❜✿t❛❜❧❡❛✉❬✶✳✳♥❪❞✬é❧é♠❡♥t

s♦♠♠❡t✿❡♥t✐❡r

✜♥▲❡s ❛❧❣♦r✐t❤♠❡s ❞❡s ♦♣ér❛t✐♦♥s ❞❡ ♣✐❧❡ s♦♥t très s✐♠♣❧❡s✳ ▲✬♦♣ér❛t✐♦♥ sommet ❝♦♥s✐st❡ à r❡t♦✉r♥❡r ❧✬é❧é✲♠❡♥t ❞❡ q✉❡✉❡✱ ❛❧♦rs q✉❡ depiler ❡t empiler ❝♦♥s✐st❡♥t✱ r❡s♣❡❝t✐✈❡♠❡♥t✱ à s✉♣♣r✐♠❡r ❡t à ❛❥♦✉t❡r ❡♥q✉❡✉❡✳

Page 44: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹✸

✻✳✸✳✷ ❯t✐❧✐s❛t✐♦♥ ❞❡s ♣♦✐♥t❡✉rs ✭■♠♣❧é♠❡♥t❛t✐♦♥ ❝❤❛î♥é❡✮

▲✬❡♥❝♦❞❛❣❡ ❞❡s ♣✐❧❡s ✭✈❡rs✐♦♥ ❝❤❛î♥é❡s✮ ✉t✐❧✐s❡ ❞❡s ♣♦✐♥t❡✉rs ✿t②♣❡ ❝❡❧❧✉❧❡❂❡♥r❡❣✐str❡♠❡♥t

■♥❢♦✿é❧é♠❡♥t

s✉✐✈❛♥t✿❫ ❝❡❧❧✉❧❡

✜♥t②♣❡ ♣✐❧❡❂❫❝❡❧❧✉❧❡

▲❡s ❛❧❣♦r✐t❤♠❡s ❞❡s ♦♣ér❛t✐♦♥s ❞❡ ♣✐❧❡ s♦♥t ❧❡s s✉✐✈❛♥t ✿

Page 45: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹✹

✻✳✹ ❊①❡r❝✐❝❡s

✻✳✹✳✶ ❊①❡r❝✐❝❡ ✵✷ ✿❆❧❣♦✳ ❞❡ ❜❛s❡ s✉r ❧❡s P✐❧❡s

❊❝r✐✈❡r ❧❡s s♦✉s✲❛❧❣♦r✐t❤♠❡s s✉✐✈❛♥ts ✿

✶✳ ❙✉♣♣r❡ss✐♦♥ ❞❡ ❧✬✐è♠❡ é❧é♠❡♥t ❀

✷✳ ❘❡❝❤❡r❝❤❡ ❞✬✉♥ é❧é♠❡♥t ❀

✸✳ ❈♦♥❝❛té♥❡r ❞❡✉① ♣✐❧❡s ❀

✹✳ ❊❝❧❛t❡r ✉♥❡ ♣✐❧❡ ❡♥ ❞❡✉① ✿ ❧✬✉♥❡ ♣♦✉r ❧❡s é❧é♠❡♥ts ♣❛✐r❡✱ ❡t ❧✬❛✉tr❡ ♣♦✉r ❧❡s é❧é♠❡♥ts ✐♠♣❛✐r❡✳

✻✳✹✳✷ ❊①❡r❝✐❝❡ ✵✸ ✿❯♥ ♣❡✉ ❛✈❛♥❝és

❊♥ ✉t✐❧✐s❛♥t ✉♥❡ ♣✐❧❡✱ é❝r✐✈❡③ ✉♥ s♦✉s✲❛❧❣♦r✐t❤♠❡ q✉✐ ✈ér✐✜❡ s✐ ✉♥ t❡①t❡ ❧✉ s✉r ❧✬❡♥tré❡ st❛♥❞❛r❞❡st ❝♦rr❡❝t❡♠❡♥t ♣❛r❡♥t❤ésé✳ ■❧ s✬❛❣✐t ❞❡ ✈ér✐✜❡r s✐ à ❝❤❛q✉❡ ♣❛r❡♥t❤és❡✉r ❢❡r♠❛♥t r❡♥❝♦♥tré ⑥✱❪✱✮ ♦✉❝♦rr❡s♣♦♥❞ s♦♥ ♣❛r❡♥t❤és❡✉r ♦✉✈r❛♥t ⑥✱❬ ♦✉ ✭✳

▲❡ s♦✉s✲❛❧❣♦r✐t❤♠❡ é❝r✐t s✉r ❧❛ s♦rt✐❡ st❛♥❞❛r❞ ❱r❛✐ ♦✉ ❋❛✉① s❡❧♦♥ q✉❡ ❧❡ t❡①t❡ ❡st ❝♦rr❡❝t❡♠❡♥t♣❛r❡♥t❤ésé ♦✉ ♣❛s✳

✻✳✹✳✸ ❊①❡r❝✐❝❡ ✵✸ ✿ ■♥✈❡rs❡r ♣✐❧❡ ❡t ✜❧❡

❈♦♥❝❡✈♦✐r ❞❡✉① s♦✉s✲❛❧❣♦r✐t❤♠❡s✱ q✉✐ ❝ré❡♥t r❡s♣❡❝t✐✈❡♠❡♥t ✿✕ ❧❛ ✜❧❡ ✐♥✈❡rs❡ ❞✬✉♥❡ ✜❧❡ ❀✕ ❧❛ ♣✐❧❡ ✐♥✈❡rs❡ ❞✬✉♥❡ ♣✐❧❡✳❈❡s ❞❡✉① s♦✉s✲❛❧❣♦r✐t❤♠❡s ❞♦✐✈❡♥t r❡st✐t✉❡r ❧❡✉r ❡♥tré❡ ✐♥❝❤❛♥❣é❡✳

Page 46: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❈❤❛♣✐tr❡ ✼

▲❡s ❋✐❧❡s

✼✳✶ ■♥tr♦❞✉❝t✐♦♥

▲❡s ✜❧❡s ❞é✜♥✐ss❡♥t ❧❡ ♠♦❞è❧❡ ♣r❡♠✐❡r ❡♥tré ♣r❡♠✐❡r s♦rt✐ ✭❋■❋❖✮✳ ▲❡s é❧é♠❡♥ts s♦♥t ✐♥sérés ❞❛♥s❧❛ séq✉❡♥❝❡ ♣❛r ✉♥❡ ❞❡s ❡①tré♠✐tés ❡t ❡♥ s♦♥t ❡①tr❛✐ts ♣❛r ❧✬❛✉tr❡✳ ❈❡ ♠♦❞è❧❡ ❝♦rr❡s♣♦♥❞ à ❧❛ ✜❧❡❞✬❛tt❡♥t❡ q✉❡ ❧✬♦♥ r❡♥❝♦♥tr❡ ❜✐❡♥ s♦✉✈❡♥t ❢❛❝❡ à ✉♥ ❣✉✐❝❤❡t ❞❛♥s ❧❡s ❜✉r❡❛✉① ❞❡ ♣♦st❡✱ ♦✉ à ✉♥❡ ❝❛✐ss❡❞❡ s✉♣❡r♠❛r❝❤é ❧❛ ✈❡✐❧❧❡ ❞✉ ✇❡❡❦✲❡♥❞✳ à t♦✉t ♠♦♠❡♥t✱ s❡✉❧ ❧❡ ♣r❡♠✐❡r ❝❧✐❡♥t ❞❡ ❧❛ ✜❧❡ ❛❝❝è❞❡ ❛✉ ❣✉✐❝❤❡t♦✉ à ❧❛ ❝❛✐ss❡✳

▲❡ ♠♦❞è❧❡ ❞❡ ✜❧❡ ❡st très ✉t✐❧✐sé ❡♥ ✐♥❢♦r♠❛t✐q✉❡✳ ❖♥ ❧❡ r❡tr♦✉✈❡ ❞❛♥s ❞❡ ♥♦♠❜r❡✉s❡s s✐t✉❛t✐♦♥s✱❝♦♠♠❡✱ ♣❛r ❡①❡♠♣❧❡✱ ❞❛♥s ❧❛ ✜❧❡ ❞✬❛tt❡♥t❡ ❞✬✉♥ ❣❡st✐♦♥♥❛✐r❡ ❞✬✐♠♣r❡ss✐♦♥ ❞✬✉♥ s②stè♠❡ ❞✬❡①♣❧♦✐t❛t✐♦♥✳

✼✳✷ ❉é✜♥✐t✐♦♥ ❛❜str❛✐t❡

✼✳✷✳✶ ❊♥s❡♠❜❧❡s

File ❡st ❧✬❡♥s❡♠❜❧❡ ❞❡s ✜❧❡s ❞♦♥t ❧❡s é❧é♠❡♥ts ❛♣♣❛rt✐❡♥♥❡♥t à ❧✬❡♥s❡♠❜❧❡ E✱ ❡t ❧❛ ❝♦♥st❛♥t❡ filevider❡♣rés❡♥t❡ ✉♥❡ ✜❧❡ ✈✐❞❡✳

File ✉t✐❧✐s❡ E ❡t booleenfillevide ∈ File

✼✳✷✳✷ ❉❡s❝r✐♣t✐♦♥ ❢♦♥❝t✐♦♥♥❡❧❧❡

◗✉❛tr❡ ♦♣ér❛t✐♦♥s s♦♥t ❞é✜♥✐❡s s✉r ❧❡ t②♣❡ ❋✐❧❡ ✿enfiler ✿ File ❳ E ✙Filedefiler ✿ File ✙Filedernier ✿ File ✙Eest− vide? ✿ File ✙booleen❧✬❖♣ér❛t✐♦♥ enfiler ❛ ♣♦✉r rô❧❡ ❞✬❛❥♦✉t❡r ✉♥ é❧é♠❡♥t ❡♥ q✉❡✉❡ ❞❡ ✜❧❡✱ ❡t ❧✬♦♣ér❛t✐♦♥ defiler s✉♣♣r✐♠❡

❧✬é❧é♠❡♥t ❡♥ têt❡ ❞❡ ✜❧❡✳ dernier r❡t♦✉r♥❡ ❧❡ ❞❡r♥✐❡r é❧é♠❡♥t ❞❡ ❧❛ ✜❧❡ ❡t est−vide? ✐♥❞✐q✉❡ s✐ ✉♥❡ ✜❧❡ ❡st✈✐❞❡ ♦✉ ♣❛s✳ ◆♦t❡③ q✉❡ ❧❡s s✐❣♥❛t✉r❡s ❞❡ ❝❡s ♦♣ér❛t✐♦♥s s♦♥t✱ ❛✉ ♠♦t ➠File➺ ♣rès✱ ✐❞❡♥t✐q✉❡s à ❝❡❧❧❡s ❞❡s♦♣ér❛t✐♦♥s ❞✉ t②♣❡ ❛❜str❛✐t Pile✳ ❈❡ s♦♥t ❜✐❡♥ ❧❡s ❛①✐♦♠❡s q✉✐ ✈♦♥t ❞✐✛ér❡♥❝✐❡r ❝❡s ❞❡✉① t②♣❡s ❛❜str❛✐ts✳

✼✳✷✳✸ ❉❡s❝r✐♣t✐♦♥ ❛①✐♦♠❛t✐q✉❡

❈❡ s♦♥t ❡♥ ♣❛rt✐❝✉❧✐❡r✱ ❧❡s ❛①✐♦♠❡s ✭✸✮ ❡t ✭✹✮✱ ❞✬✉♥❡ ♣❛rt✱ ❡t ✭✺✮ ❡t ✭✻✮ ❞✬❛✉tr❡ ♣❛rt✱ q✉✐ ❞✐st✐♥❣✉❡♥t❧❡ ❝♦♠♣♦rt❡♠❡♥t ❞❡ ❧❛ ✜❧❡ ❞❡ ❝❡❧✉✐ ❞❡ ❧❛ ♣✐❧❡✳ ■❧s ✐♥❞✐q✉❡♥t ❝❧❛✐r❡♠❡♥t q✉✬✉♥ é❧é♠❡♥t ❡st ❛❥♦✉té ♣❛r ✉♥❡❡①tré♠✐té ❞❡ ❧❛ ✜❧❡✱ ❡t q✉✬✐❧ ❡st ❛❝❝❡ss✐❜❧❡ ♣❛r ❧✬❛✉tr❡ ❡①tré♠✐té✳

✹✺

Page 47: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹✻

∀f ∈ File ❀ ∀e ∈ E✭✶✮ est− vide?(filevide) = vrai✭✷✮ est− vide?(enfiler(f ; e)) = faux✭✸✮ est− vide?(f)⇒ dernier(enfiler(f ; e)) = e✭✹✮ non est− vide?(f)⇒ dernier(enfiler(f ; e)) = dernier(f)✭✺✮ est− vide?(f)⇒ defiler(enfiler(f ; e)) = filevide✭✻✮ nonest− vide?(f)⇒ defiler(enfiler(f ; e)) = enfiler(defiler(f); e)✭✼✮ ∄f ; f = defiler(filevide)✭✽✮ ∄e; e = dernier(filevide)

✼✳✸ ✐♠♣❧❛♥t❛t✐♦♥

✼✳✸✳✶ ❯t✐❧✐s❛t✐♦♥ ❞❡s t❛❜❧❡❛✉① ✭■♠♣❧é♠❡♥t❛t✐♦♥ ❈♦♥t✐❣✉ë✮

❛✉ ❝♦♥tr❛✐r❡ ❞❡ ❝❡❧❧❡ ❞❡ Pile✱ ❧✬✐♠♣❧❛♥t❛t✐♦♥ ❞❡ ❧✬✐♥t❡r❢❛❝❡ File ✭✈❡rs✐♦♥ ✐tér❛t✐✈❡✮ ✉t✐❧✐s❡ ❞❡s t❛❜❧❡❛✉①❝✐r❝✉❧❛✐r❡ P♦✉r q✉❡ ❝❡s ♦♣ér❛t✐♦♥s ❣❛r❞❡♥t ✉♥❡ ❝♦♠♣❧❡①✐té é❣❛❧❡ à O(1) ✿

✕ ❯♥❡ File ❡st r❡♣rés❡♥té❡ ♣❛r ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ n ❡t ❞❡✉① ❡♥t✐❡r q✉✐ r❡♣rés❡♥t❡♥t✱ r❡s♣❡❝t✐✈❡♠❡♥t❧✬✐♥❞✐❝❡ ❞❡ ♣r❡♠✐❡r ❡t ❞❡r♥✐❡r é❧é♠❡♥t ❞❡ ❧❛ ✜❧❡ ❀

✕ filevide ❡st ❞♦♥❝ ✉♥ t❛❜❧❡❛✉ ❞❡ t❛✐❧❧❡ n ✭❝♦♠♠❡ t♦✉t❡s ❧❡s ❛✉tr❡s✮ ❞♦♥t ❧❡s ✈❛❧❡✉rs ♥✬♦♥t ♣❛s❞✬✐♠♣♦rt❛♥❝❡ ❡t ❞♦♥t ❧❡s ✐♥❞✐❝❡s ❞❡ ♣r❡♠✐❡r ❡t ❞❡r♥✐❡r é❧é♠❡♥t ❡st ✵ ✳

❧❛ ❞é✜♥✐t✐♦♥ ❞❡ ❧❛ str✉❝t✉r❡ ✜❧❡ ❡st ❞♦♥❝ ✿t②♣❡ ✜❧❡❂❡♥r❡❣✐str❡♠❡♥t

t❛❜✿t❛❜❧❡❛✉❬✶✳✳♥❪❞✬é❧é♠❡♥t

♣r❡♠✐❡r✱ ❞❡r♥✐❡r✿❡♥t✐❡r

✜♥

Page 48: Algorithmiques et Structures de données 01 Cours + TDs + TPsChapitre 2 Complexité d'Algorithmes 2.1 Introduction Il existe souvent plusieurs algorithmes permettant de résoudre un

❆❧❣♦r✐t❤♠✐q✉❡ ❡t ❙tr✉❝t✉r❡s ❞❡ ❉♦♥♥é❡s ■s♠❛✐❧ ❍❛❞❥❛❞❥ ✹✼

✼✳✹ ❊①❡r❝✐❝❡s

✼✳✹✳✶ ❊①❡r❝✐❝❡ ✵✶ ✿

✲ ◗✉❡ ♣❡✉t ❜✐❡♥ ✈♦✉❧♦✐r ❞✐r❡ ❋■❋❖❄

✼✳✹✳✷ ❊①❡r❝✐❝❡ ✵✷ ✿❆❧❣♦✳ ❞❡ ❜❛s❡ s✉r ❧❡s ❋✐❧❡s

❊❝r✐✈❡r ❧❡s s♦✉s✲❛❧❣♦r✐t❤♠❡s s✉✐✈❛♥ts ✿

✶✳ ❙✉♣♣r❡ss✐♦♥ ❞❡ ❧✬✐è♠❡ é❧é♠❡♥t ❀

✷✳ ❘❡❝❤❡r❝❤❡ ❞✬✉♥ é❧é♠❡♥t ❀

✸✳ ❈♦♥❝❛té♥❡r ❞❡✉① ✜❧❡s ❀

✹✳ ➱❝❧❛t❡r ✉♥❡ ✜❧❡ ❡♥ ❞❡✉① ✿ ❧✬✉♥❡ ♣♦✉r ❧❡s é❧é♠❡♥ts ♣❛✐r❡✱ ❡t ❧✬❛✉tr❡ ♣♦✉r ❧❡s é❧é♠❡♥ts ✐♠♣❛✐r❡✳

✼✳✹✳✸ ❊①❡r❝✐❝❡ ✵✸ ✿❯♥ ♣❡✉ ❛✈❛♥❝és

✲ ▼♦♥tr❡③ ❝♦♠♠❡♥t ✐♠♣❧é♠❡♥t❡r ✉♥❡ ♣✐❧❡ à ❧✬❛✐❞❡ ❞❡ ❞❡✉① ✜❧❡s✳✲ ▼♦♥tr❡③ ❝♦♠♠❡♥t ✐♠♣❧é♠❡♥t❡r ✉♥❡ ✜❧❡ à ❧✬❛✐❞❡ ❞❡ ❞❡✉① ♣✐❧❡s✳

✼✳✹✳✹ ❊①❡r❝✐❝❡ ✵✸ ✿ ■♥✈❡rs❡r ✉♥❡ ✜❧❡

❈♦♥❝❡✈♦✐r ❞❡✉① s♦✉s✲❛❧❣♦r✐t❤♠❡s✱ q✉✐ ❝ré❡♥t r❡s♣❡❝t✐✈❡♠❡♥t ✿✕ ❧❛ ✜❧❡ ✐♥✈❡rs❡ ❞✬✉♥❡ ✜❧❡ ❀✕ ❧❛ ✜❧❡ ✐♥✈❡rs❡ ❞✬✉♥❡ ✜❧❡ ❡♥ ✉t✐❧✐s❛♥t ✉♥❡ ✜❧❡ ❛✉①✐❧✐❛✐r❡✳