Top Banner
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

Oct 11, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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❡✳