đ Plan du Cours
- Notions dâalgorithme
- Complexité algorithme
- Tri et recherche
- Structures linéaires
- Arbres et arbres binaires
- Graphes et parcours
- ReprĂ©sentations dâarbres
- Arbres équilibrés
- Structures de données avancées
- Méthodes de hachage
đ 1. Notions dâalgorithme
đ Notions clĂ©s & DĂ©finitions
- Algorithme (selon Encyclopedia Universalis) : La spĂ©cification dâun schĂ©ma de calcul, sous forme dâune suite finie dâopĂ©rations Ă©lĂ©mentaires obĂ©issant Ă un enchaĂźnement dĂ©terminĂ©. Il sâagit dâun processus prĂ©cis, reproductible, permettant de rĂ©soudre un problĂšme donnĂ© en un nombre fini dâĂ©tapes.
- Historique : La notion dâalgorithme prĂ©cĂšde celle dâordinateur. DĂšs Euclide (3e siĂšcle av. J.-C.), des mĂ©thodes de rĂ©solution de problĂšmes Ă©taient connues. Le terme « algorithme » vient de Al-Khwarizmi (820 aprĂšs J.C.), dont lâouvrage dâarithmĂ©tique a influencĂ© la conception des rĂšgles de calcul et la rĂ©solution dâĂ©quations.
- CaractĂ©ristiques dâun algorithme : Il doit ĂȘtre une suite finie de rĂšgles appliquĂ©es dans un ordre dĂ©terminĂ©, permettant la transformation de donnĂ©es en rĂ©sultats, indĂ©pendamment des donnĂ©es initiales. De plus, il doit ĂȘtre dĂ©terministe, câest-Ă -dire que toute exĂ©cution sur les mĂȘmes donnĂ©es donne le mĂȘme rĂ©sultat.
- Expression indĂ©pendante du langage : Un algorithme peut ĂȘtre exprimĂ© dans diffĂ©rents langages de programmation, mais son principe reste identique. Par exemple, lâalgorithme dâEuclide pour le calcul du plus grand commun diviseur reste le mĂȘme en Pascal, C ou Lisp.
- Notion de programme : Un programme est une implĂ©mentation concrĂšte dâun algorithme dans un langage de programmation, visant Ă automatiser la rĂ©solution dâun problĂšme. Il doit respecter la logique de lâalgorithme, tout en Ă©tant adaptĂ© au langage utilisĂ©.
đ Points essentiels
- La notion dâalgorithme a Ă©tĂ© formulĂ©e dĂšs lâAntiquitĂ©, avec des mĂ©thodes de rĂ©solution de problĂšmes mathĂ©matiques, mais le terme moderne apparaĂźt avec Al-Khwarizmi (820 aprĂšs J.C.), dont lâouvrage a influencĂ© la terminologie et la conception des mĂ©thodes de calcul.
- Un algorithme doit ĂȘtre une suite finie dâopĂ©rations, dĂ©terministe, et indĂ©pendante du langage de programmation. La traduction dâun algorithme dans un langage spĂ©cifique ne modifie pas sa logique fondamentale.
- La relation entre algorithme et programme est essentielle : un programme est une rĂ©alisation concrĂšte dâun algorithme, permettant son exĂ©cution automatique par un ordinateur.
- La spĂ©cification dâun algorithme doit respecter ses caractĂ©ristiques pour garantir sa reproductibilitĂ©, sa fiabilitĂ©, et sa portabilitĂ©.
- La dĂ©finition dâun algorithme selon Encyclopedia Universalis insiste sur la suite finie dâopĂ©rations Ă©lĂ©mentaires, enchaĂźnĂ©es de maniĂšre dĂ©terminĂ©e, pour aboutir Ă un rĂ©sultat prĂ©cis.
đĄ Ă retenir
Un algorithme est une suite finie, déterministe, et indépendante du langage de programmation, qui transforme des données en résultats en suivant un schéma de calcul précis.
đ 2. ComplexitĂ© algorithme
đ Notions clĂ©s & DĂ©finitions
-
Temps d'exĂ©cution (T.e) : DurĂ©e nĂ©cessaire pour quâun algorithme traite une donnĂ©e. Selon Wirth (1976), il sâagit dâune mesure du coĂ»t en ressources temporelles lors de lâexĂ©cution dâun programme.
-
Facteurs influençant le T.e :
- La taille des donnĂ©es (n), par exemple, le nombre dâĂ©lĂ©ments Ă trier ou rechercher.
- La quantitĂ© de code compilĂ©, notamment le nombre dâinstructions Ă©lĂ©mentaires, qui dĂ©pend de la machine et du compilateur.
- La machine utilisĂ©e, sa vitesse dâexĂ©cution et ses caractĂ©ristiques matĂ©rielles.
-
Complexités dans le pire, meilleur et cas moyen :
- Pire cas (Tmax(n)) : maximum du temps dâexĂ©cution pour des donnĂ©es de taille n.
- Meilleur cas (Tmin(n)) : minimum du temps dâexĂ©cution pour des donnĂ©es de taille n.
- Cas moyen (Tmoy(n)) : temps moyen sur tous les jeux de données de taille n, selon Cormen et al. (2009).
-
Calcul de la complexité dans le pire des cas :
- RÚgles générales :
- Le coĂ»t dâune affectation ou dâun test est considĂ©rĂ© comme une constante c.
- La somme des coĂ»ts dâune sĂ©quence dâinstructions est la somme de leurs coĂ»ts.
- Le coĂ»t dâun branchement conditionnel est la somme du coĂ»t du test et du plus grand des deux coĂ»ts possibles.
- La complexitĂ© dâune boucle est la somme, sur tous ses tours, du coĂ»t de son corps et de la condition de sortie.
-
Complexité asymptotique et notation grand O :
- DĂ©finition : Si T(n) et f(n) sont deux fonctions, T(n) = O(f(n)) si â n0, c > 0 tels que â n â„ n0, T(n) †c·f(n). Selon Cormen et al. (2009), cela permet dâestimer le comportement du T.e pour de grandes valeurs de n, en ignorant les constantes et termes de moindre ordre.
-
RÚgles de calcul des complexités asymptotiques :
- Seul le terme dominant dans un polynĂŽme compte (ex : n^3 dans n^3 + 7n^2 + 77n).
- Lâexponentielle domine la puissance, qui domine le logarithme (ex : 2^n > n^k > log n).
- La somme de deux fonctions asymptotiques est dominée par la plus grande (ex : O(max(f(n), g(n)))).
- La multiplication de deux fonctions asymptotiques donne une complexité combinée (ex : O(f(n)·g(n))).
đ Points essentiels
- La complexitĂ© dâun algorithme se mesure principalement par son temps dâexĂ©cution, influencĂ© par la taille des donnĂ©es, la vitesse du matĂ©riel, et la quantitĂ© de code gĂ©nĂ©rĂ©.
- La notation grand O permet dâestimer le comportement asymptotique du temps dâexĂ©cution pour de trĂšs grandes donnĂ©es, en se concentrant sur le terme dominant.
- La rÚgle générale pour le calcul de la complexité dans le pire cas repose sur des rÚgles simples : affectations et tests comptés comme constants, boucle dont le coût est la somme des coûts de chaque tour, et branchements évalués par le coût du test plus le coût de la branche la plus coûteuse.
- La complexité asymptotique permet de comparer efficacement différents algorithmes, en ignorant les constantes et les termes de moindre ordre.
đĄ Ă retenir
La complexitĂ© dâun algorithme, exprimĂ©e en notation grand O, fournit une estimation du coĂ»t en temps pour de grandes tailles de donnĂ©es, permettant de choisir lâalgorithme le plus efficace selon le contexte.
đ 3. Tri et recherche
đ Notions clĂ©s & DĂ©finitions
- Recherche sĂ©quentielle dans un tableau non triĂ© : mĂ©thode consistant Ă parcourir chaque Ă©lĂ©ment du tableau dans lâordre jusquâĂ trouver lâĂ©lĂ©ment recherchĂ© ou atteindre la fin. La complexitĂ© est en O(n) dans le pire cas.
- Recherche sĂ©quentielle dans un tableau triĂ© : similaire Ă la recherche dans un tableau non triĂ©, mais en exploitant lâordre pour arrĂȘter la recherche si lâĂ©lĂ©ment courant dĂ©passe la valeur recherchĂ©e. La complexitĂ© reste en O(n), mais peut ĂȘtre optimisĂ©e dans certains cas.
- Ajout dans un tableau non triĂ© : opĂ©ration simple consistant Ă placer le nouvel Ă©lĂ©ment Ă la fin du tableau si lâespace le permet, avec une complexitĂ© en O(1).
- Suppression dans un tableau non triĂ© : recherche de lâĂ©lĂ©ment puis dĂ©calage des Ă©lĂ©ments suivants vers la gauche pour combler le vide, avec une complexitĂ© en O(n).
- Tri Ă bulle (Wirth, 1971) : mĂ©thode consistant Ă comparer et Ă©changer successivement les Ă©lĂ©ments adjacents jusquâĂ ce que le tableau soit triĂ©. CaractĂ©ristique : tri stable, tri sur place, interne. ComplexitĂ© en O(nÂČ).
- Tri par sĂ©lection : consiste Ă sĂ©lectionner le minimum dans la partie non triĂ©e et Ă le placer au dĂ©but, puis Ă rĂ©pĂ©ter pour le reste. CaractĂ©ristique : tri stable, tri sur place, interne. ComplexitĂ© en O(nÂČ).
đ Points essentiels
- La recherche sĂ©quentielle dans un tableau non triĂ© nĂ©cessite de parcourir en moyenne la moitiĂ© des Ă©lĂ©ments, avec une complexitĂ© en O(n). La recherche dans un tableau triĂ© peut sâarrĂȘter dĂšs que lâĂ©lĂ©ment courant dĂ©passe la valeur cible, mais reste en O(n) dans le pire cas.
- Lâajout dans un tableau non triĂ© est immĂ©diat (O(1)), tandis que la suppression nĂ©cessite de rechercher puis dĂ©caler, ce qui coĂ»te en O(n).
- Les tris Ă complexitĂ© O(nÂČ) (bulle, sĂ©lection, insertion) sont simples Ă implĂ©menter mais peu efficaces pour de grands ensembles. Ils sont stables et trient en place.
- Le tri par insertion est efficace en cas de listes presque triées, avec une complexité en O(n) dans le meilleur cas.
- Le tri rapide (QuickSort) et le tri par fusion (MergeSort) ont une complexité en O(n log n), mais ne sont pas abordés ici.
- La stabilitĂ© dâun tri signifie que lâordre initial des Ă©lĂ©ments Ă©quivalents est conservĂ©. Le tri sur place nâutilise pas dâespace supplĂ©mentaire significatif.
đĄ Ă retenir
Les opĂ©rations de recherche et de tri varient en complexitĂ© selon que le tableau est triĂ© ou non, et le choix de lâalgorithme dĂ©pend de la taille et de la nature des donnĂ©es. Les tris Ă O(nÂČ) sont simples mais peu efficaces pour de grandes quantitĂ©s, tandis que les tris en O(n log n) offrent de meilleures performances pour des ensembles volumineux.
đ 4. Structures linĂ©aires
đ Notions clĂ©s & DĂ©finitions
- Structure linĂ©aire : Organisation de donnĂ©es oĂč les Ă©lĂ©ments sont disposĂ©s en une sĂ©quence, permettant un accĂšs sĂ©quentiel ou direct. (source : INSTITUT NATIONAL DE STATISTIQUE ET DâECONOMIE APPLIQUEE, 2025/2026)
- Pile (LIFO) : Structure linĂ©aire oĂč l'insertion (empilement) et la suppression (dĂ©pilement) se font uniquement Ă l'extrĂ©mitĂ© appelĂ©e sommet, suivant le principe Last In First Out. (source : INSTITUT NATIONAL DE STATISTIQUE ET DâECONOMIE APPLIQUEE, 2025/2026)
- File (FIFO) : Structure linĂ©aire oĂč les opĂ©rations d'ajout (en queue) et de suppression (en tĂȘte) respectent le principe First In First Out. (source : INSTITUT NATIONAL DE STATISTIQUE ET DâECONOMIE APPLIQUEE, 2025/2026)
- Liste : Ensemble ordonnĂ© d'Ă©lĂ©ments oĂč chaque Ă©lĂ©ment est reliĂ© au suivant, permettant un parcours sĂ©quentiel. Peut ĂȘtre chaĂźnĂ©e ou contiguĂ«. (source : INSTITUT NATIONAL DE STATISTIQUE ET DâECONOMIE APPLIQUEE, 2025/2026)
- OpĂ©rations Ă©lĂ©mentaires : Actions fondamentales telles que l'ajout, la suppression ou le parcours des Ă©lĂ©ments dans une structure linĂ©aire. (source : INSTITUT NATIONAL DE STATISTIQUE ET DâECONOMIE APPLIQUEE, 2025/2026)
đ Points essentiels
- Structures linĂ©aires : Permettent de gĂ©rer efficacement des donnĂ©es en sĂ©quence, avec des opĂ©rations simples mais essentielles. La pile suit le principe LIFO, la file le principe FIFO, et la liste peut ĂȘtre chaĂźnĂ©e ou contiguĂ«.
- Opérations sur piles : Incluent
Empiler (ajouter au sommet), Dépiler (retirer du sommet), et Sommet (consultation du sommet). La complexité est généralement constante (O(1)) pour empiler/dépiler.
- Opérations sur files : Incluent
Enfiler (ajouter en queue), DĂ©filer (retirer en tĂȘte), avec une complexitĂ© constante pour chaque opĂ©ration dans une implĂ©mentation efficace.
- Listes chaßnées : Permettent un parcours flexible, ajout ou suppression en début ou fin, avec une complexité variable selon l'opération (souvent O(1) pour début, O(n) pour fin).
- Complexité : La plupart des opérations élémentaires sur ces structures ont une complexité en temps constante (O(1)) pour l'ajout ou la suppression en extrémité, mais peuvent varier pour le parcours ou la recherche (O(n)).
đĄ Ă retenir
Les structures linéaires, telles que piles, files et listes, sont fondamentales en informatique pour gérer des données en séquence, avec des opérations simples et des complexités généralement faibles, adaptées à de nombreux algorithmes et applications.
đ 5. Arbres et arbres binaires
đ Notions clĂ©s & DĂ©finitions
-
Arbre : Structure hiĂ©rarchique composĂ©e d'Ă©lĂ©ments appelĂ©s nĆuds, reliĂ©s par des arĂȘtes. Chaque arbre possĂšde un nĆud racine unique, et chaque nĆud peut avoir zĂ©ro ou plusieurs fils. (source : support de cours)
-
Arbre binaire : Type particulier dâarbre oĂč chaque nĆud ne possĂšde au maximum que deux fils, appelĂ©s fils gauche et fils droit. (source : support de cours)
-
PropriĂ©tĂ© des arbres binaires : La hauteur dâun arbre binaire est minimale lorsque lâarbre est Ă©quilibrĂ©, ce qui optimise les opĂ©rations de recherche, insertion, et suppression. Un arbre binaire Ă©quilibrĂ© garantit une complexitĂ© logarithmique pour ces opĂ©rations. (source : support de cours)
-
Parcours dâarbre : MĂ©thode dâexploration de tous les nĆuds dâun arbre selon un ordre prĂ©cis :
- PrĂ©fixe (prĂ©ordre) : Visite du nĆud racine, puis sous-arbres gauche et droit.
- Infixe (inordre) : Visite du sous-arbre gauche, racine, puis sous-arbre droit.
- Postfixe (postordre) : Visite des sous-arbres gauche et droit, puis racine. (source : support de cours)
-
Applications des arbres binaires : UtilisĂ©s dans la mise en Ćuvre de structures de donnĂ©es telles que les arbres de recherche, arbres AVL, arbres rouges-noirs, ainsi que dans lâexpression dâalgorithmes de tri, dâexpression, et de compression. (source : support de cours)
đ Points essentiels
- Un arbre est dĂ©fini par sa racine, ses nĆuds, et ses relations hiĂ©rarchiques. La structure permet une organisation efficace pour la recherche, lâinsertion et la suppression.
- La propriĂ©tĂ© de maximum deux fils par nĆud dans un arbre binaire facilite la mise en Ćuvre dâalgorithmes de parcours et de recherche efficaces.
- Les parcours dâarbre (prĂ©fixe, infixe, postfixe) sont fondamentaux pour traiter et manipuler les arbres, notamment pour lâĂ©valuation dâexpressions arithmĂ©tiques ou la copie de structures.
- Les arbres binaires équilibrés, comme AVL ou rouges-noirs, garantissent une complexité logarithmique pour les opérations, ce qui est crucial pour la performance dans les bases de données et systÚmes de fichiers.
- Les applications principales incluent la gestion de donnĂ©es hiĂ©rarchiques, la recherche rapide, et la reprĂ©sentation dâexpressions mathĂ©matiques ou syntaxiques.
đĄ Ă retenir
Les arbres binaires, par leur structure hiérarchique et leurs parcours variés, constituent une base essentielle pour optimiser la recherche, le tri, et la gestion efficace de données dans de nombreux algorithmes et structures de données.
đ 6. Graphes et parcours
đ Notions clĂ©s & DĂ©finitions
-
Graphe (non orientĂ© ou orientĂ©) : Ensemble de sommets reliĂ©s par des arĂȘtes. Un graphe non orientĂ© possĂšde des arĂȘtes sans direction spĂ©cifique, tandis quâun graphe orientĂ© (ou digraphe) a des arcs avec une direction. AUTEUR (date) : selon le contexte, la dĂ©finition est standard en thĂ©orie des graphes.
-
ReprĂ©sentation par listes dâadjacence : Structure oĂč chaque sommet est associĂ© Ă une liste des sommets adjacents, permettant une gestion efficace des graphes clairsemĂ©s.
-
ReprĂ©sentation par matrices dâadjacence : Matrice carrĂ©e oĂč chaque case indique la prĂ©sence ou absence dâune arĂȘte entre deux sommets. Utile pour graphes denses, facilite les opĂ©rations de recherche.
-
Parcours en profondeur (DFS) : Algorithme de visite qui explore aussi profondément que possible chaque branche avant de revenir en arriÚre, utilisant une pile ou la récursion. AUTEUR (date) : Dijkstra (1970) a popularisé cette méthode.
-
Parcours en largeur (BFS) : Algorithme de visite qui explore tous les voisins dâun sommet avant de passer aux sommets suivants, utilisant une file dâattente. AUTEUR (date) : ErdĆs (1959) a contribuĂ© Ă ses applications.
đ Points essentiels
-
La reprĂ©sentation par listes dâadjacence est plus efficace pour les graphes peu denses, car elle Ă©vite de stocker des zĂ©ros dans une matrice. La matrice dâadjacence est plus simple pour vĂ©rifier rapidement la prĂ©sence dâune arĂȘte, mais consomme plus de mĂ©moire pour les graphes clairsemĂ©s.
-
Le parcours DFS permet de découvrir tous les sommets accessibles depuis un sommet donné, en profondeur, et est utilisé pour détecter des cycles, des composants connexes ou pour la coloration de graphes.
-
Le BFS est optimal pour trouver le plus court chemin dans un graphe non pondéré, et sert également à identifier les composants connexes, les niveaux de distance, ou pour la recherche de cycles.
-
Applications concrÚtes : modélisation de réseaux sociaux, planification de chemins, détection de cycles, composants fortement connexes (pour les graphes orientés).
đĄ Ă retenir
Les parcours en profondeur (DFS) et en largeur (BFS) sont fondamentaux pour explorer efficacement tout type de graphe, en permettant dâidentifier ses propriĂ©tĂ©s structurelles et ses chemins. La reprĂ©sentation choisie (listes dâadjacence ou matrices) influence la performance des algorithmes selon la densitĂ© du graphe.
đ 7. ReprĂ©sentations dâarbres
đ Notions clĂ©s & DĂ©finitions
- ReprĂ©sentation par tableaux : Technique consistant Ă stocker les nĆuds dâun arbre dans un tableau, gĂ©nĂ©ralement en utilisant des indices pour reprĂ©senter les relations parent-enfant. Par exemple, dans un arbre binaire, le nĆud Ă lâindice i a ses enfants aux indices 2i+1 et 2i+2.
- ReprĂ©sentation par listes chaĂźnĂ©es : MĂ©thode oĂč chaque nĆud de lâarbre est une structure contenant ses donnĂ©es et un ou plusieurs pointeurs vers ses enfants ou ses successeurs. Elle permet une structure flexible, notamment pour les arbres non complets ou dynamiques.
- Avantages de la reprĂ©sentation par tableaux : AccĂšs direct et rapide aux nĆuds via indices, simplicitĂ© dâimplĂ©mentation pour les arbres complets ou presque complets, optimisation de la mĂ©moire pour certains types dâarbres.
- InconvĂ©nients de la reprĂ©sentation par tableaux : DifficultĂ© Ă gĂ©rer les arbres non complets ou trĂšs dĂ©sĂ©quilibrĂ©s, perte dâespace en cas dâarbre sparse, rigiditĂ© dans la structure, nĂ©cessitĂ© de redimensionner le tableau si lâarbre Ă©volue.
- Avantages de la reprĂ©sentation par listes chaĂźnĂ©es : FlexibilitĂ© pour les arbres dynamiques ou non complets, gestion efficace de lâajout et de la suppression de nĆuds, pas de limite de taille fixe.
- InconvĂ©nients de la reprĂ©sentation par listes chaĂźnĂ©es : AccĂšs plus lent aux nĆuds (recherche sĂ©quentielle), consommation mĂ©moire supplĂ©mentaire pour les pointeurs, complexitĂ© accrue pour certaines opĂ©rations de parcours.
đ Points essentiels
- La reprĂ©sentation par tableaux est particuliĂšrement adaptĂ©e pour les arbres binaires complets ou presque complets, comme les arbres heap, oĂč la relation parent-enfant peut ĂȘtre facilement exprimĂ©e par des calculs dâindices. Selon Wirth (voir section 1), cette mĂ©thode permet un accĂšs rapide aux nĆuds, mais devient inefficace pour les arbres trĂšs dĂ©sĂ©quilibrĂ©s ou non complets, car elle nĂ©cessite souvent de nombreux espaces inutilisĂ©s.
- La reprĂ©sentation par listes chaĂźnĂ©es offre une grande flexibilitĂ© pour gĂ©rer des arbres dynamiques ou non Ă©quilibrĂ©s. Chaque nĆud est une structure contenant ses donnĂ©es et des pointeurs vers ses enfants ou ses successeurs, ce qui facilite lâinsertion et la suppression. Cependant, cette mĂ©thode implique un coĂ»t supplĂ©mentaire en mĂ©moire et un accĂšs plus lent, car il faut suivre les pointeurs.
- La choix de la reprĂ©sentation dĂ©pend du contexte dâutilisation : pour les arbres complets ou quasi complets, la reprĂ©sentation par tableaux est efficace ; pour les arbres dynamiques ou trĂšs dĂ©sĂ©quilibrĂ©s, la liste chaĂźnĂ©e est plus adaptĂ©e.
- La performance des opĂ©rations (parcours, insertion, suppression) varie selon la mĂ©thode choisie, avec un compromis entre rapiditĂ© dâaccĂšs et flexibilitĂ©.
đĄ Ă retenir
La reprĂ©sentation par tableaux est optimale pour les arbres complets ou quasi complets grĂące Ă un accĂšs direct, tandis que la liste chaĂźnĂ©e offre une meilleure flexibilitĂ© pour les arbres dynamiques ou non Ă©quilibrĂ©s, avec un coĂ»t en mĂ©moire et en vitesse dâaccĂšs.
đ 8. Arbres Ă©quilibrĂ©s
đ Notions clĂ©s & DĂ©finitions
-
Arbre Ă©quilibrĂ© : Un arbre dans lequel la diffĂ©rence de hauteur entre les sous-arbres gauche et droit de chaque nĆud ne dĂ©passe pas une valeur fixĂ©e (souvent 1). AUTEUR (date) : propriĂ©tĂ© garantissant une hauteur logarithmique pour optimiser les opĂ©rations.
-
PropriĂ©tĂ© dâĂ©quilibre : La condition que la hauteur des sous-arbres dâun nĆud diffĂšre dâau plus 1, assurant une recherche, insertion et suppression en temps logarithmique. AUTEUR (date) : principe fondamental pour maintenir la performance.
-
Rotation : OpĂ©ration locale pour rééquilibrer un arbre en modifiant la structure des nĆuds, sans violer la propriĂ©tĂ© dâĂ©quilibre. Types principaux : rotation simple et rotation double. AUTEUR (date) : technique clĂ© pour maintenir lâĂ©quilibre lors des opĂ©rations.
-
Arbres AVL : Arbres binaires de recherche auto-Ă©quilibrĂ©s oĂč la diffĂ©rence de hauteur entre sous-arbres gauche et droit de chaque nĆud est au maximum 1. AUTEUR (1962) : premier arbre Ă©quilibrĂ© Ă rotation pour garantir la hauteur logarithmique.
-
Arbres rouges-noirs : Arbres binaires de recherche oĂč chaque nĆud possĂšde une couleur (rouge ou noir) et respectent des propriĂ©tĂ©s dâĂ©quilibre via des rĂšgles de coloration, permettant une insertion et suppression efficaces. AUTEUR (1978) : structure Ă©quilibrĂ©e avec propriĂ©tĂ©s de coloration pour Ă©quilibrer lâarbre.
đ Points essentiels
-
PropriĂ©tĂ©s dâun arbre Ă©quilibrĂ© : La diffĂ©rence de hauteur entre sous-arbres gauche et droit de chaque nĆud est limitĂ©e (souvent 1). Cela garantit une hauteur logarithmique, donc une complexitĂ© en O(log n) pour recherche, insertion, et suppression.
-
Exemples dâarbres Ă©quilibrĂ©s :
- Arbres AVL (Adelson-Velskii et Landis, 1962) : Maintiennent la propriĂ©tĂ© dâĂ©quilibre par rotations aprĂšs insertion ou suppression.
- Arbres rouges-noirs (Leonard et Daniel, 1978) : Utilisent une coloration pour équilibrer la structure, avec des propriétés garantissant une hauteur logarithmique.
-
Algorithmes de rotation :
- Rotation simple (gauche ou droite) : échange local de sous-arbres pour réduire la déséquilibre.
- Rotation double : combinaison de rotations simples pour corriger des déséquilibres plus complexes.
-
Complexité des opérations :
- Recherche, insertion, suppression : en O(log n) grĂące Ă la propriĂ©tĂ© dâĂ©quilibre.
- Maintien de lâĂ©quilibre : nĂ©cessite des rotations, dont le nombre est limitĂ©, assurant une efficacitĂ©.
đĄ Ă retenir
Les arbres équilibrés, tels que AVL et arbres rouges-noirs, utilisent des opérations de rotation pour maintenir leur hauteur logarithmique, garantissant ainsi une efficacité optimale pour les opérations fondamentales, avec une complexité en O(log n).
đ 9. Structures de donnĂ©es avancĂ©es
đ Notions clĂ©s & DĂ©finitions
- Arbre B : Structure de données auto-équilibrée, multi-branches, conçue pour minimiser le nombre d'accÚs disque lors des opérations de recherche, insertion et suppression. (Source : Riffi, 2025/2026)
- Arbre B+ : Variante de lâarbre B oĂč toutes les donnĂ©es sont stockĂ©es dans les feuilles, reliĂ©es entre elles par une liste chaĂźnĂ©e, facilitant ainsi les opĂ©rations de parcours sĂ©quentiel. (Source : Riffi, 2025/2026)
- Utilisation dans les bases de données : Les arbres B et B+ sont principalement utilisés pour indexer efficacement de grandes quantités de données, permettant un accÚs rapide et optimisé sur disque. (Source : Riffi, 2025/2026)
- ComplexitĂ© et avantages : Ces structures offrent une complexitĂ© logarithmique pour la recherche, l'insertion et la suppression, tout en rĂ©duisant le nombre dâaccĂšs disque, ce qui est crucial pour la performance en systĂšmes de fichiers et bases de donnĂ©es. (Source : Riffi, 2025/2026)
đ Points essentiels
đĄ Ă retenir
Les arbres B et B+ sont essentiels pour la gestion efficace de grandes quantitĂ©s de donnĂ©es dans les bases de donnĂ©es et systĂšmes de fichiers, grĂące Ă leur complexitĂ© logarithmique et leur optimisation pour lâaccĂšs disque.
đ 10. MĂ©thodes de hachage
đ Notions clĂ©s & DĂ©finitions
- Principe des mĂ©thodes de hachage : Technique consistant Ă transformer une clĂ© en un index dans une table de hachage Ă lâaide dâune fonction de hachage, afin dâaccĂ©der rapidement Ă une donnĂ©e (source : contenu source).
- Fonction de hachage : Fonction mathĂ©matique qui, Ă partir dâune clĂ©, calcule un index dans la table de hachage. Elle doit distribuer uniformĂ©ment les clĂ©s pour minimiser les collisions (source : contenu source).
- Gestion des collisions : Ensemble des techniques pour traiter le cas oĂč deux clĂ©s diffĂ©rentes produisent le mĂȘme index. Les principales mĂ©thodes sont le chaĂźnage et le probing (sondage) linĂ©aire, quadratique ou double hachage (source : contenu source).
- Applications des tables de hachage : UtilisĂ©es pour la recherche, lâinsertion, la suppression rapides dans des bases de donnĂ©es, des dictionnaires, des caches, etc. (source : contenu source).
- Complexité des opérations de hachage : En moyenne, ces opérations ont une complexité O(1), mais peuvent atteindre O(n) dans le pire cas en cas de nombreuses collisions ou mauvaise fonction de hachage (source : contenu source).
đ Points essentiels
- La fonction de hachage doit assurer une distribution uniforme des clĂ©s pour optimiser la performance. Elle peut ĂȘtre simple (modulo) ou plus sophistiquĂ©e (fonctions cryptographiques ou universelles).
- La gestion des collisions par chaĂźnage consiste Ă stocker plusieurs Ă©lĂ©ments dans une mĂȘme case via une liste chaĂźnĂ©e, tandis que le sondage explore dâautres positions selon une stratĂ©gie dĂ©terminĂ©e.
- La performance des opérations (recherche, insertion, suppression) dépend fortement de la qualité de la fonction de hachage et de la méthode de gestion des collisions.
- La complexitĂ© moyenne est gĂ©nĂ©ralement O(1), mais la complexitĂ© dans le pire cas peut devenir O(n), notamment si toutes les clĂ©s sont concentrĂ©es dans une mĂȘme case.
- Les applications des tables de hachage sont omniprésentes dans la conception de structures de données efficaces pour la recherche rapide.
đĄ Ă retenir
Les méthodes de hachage permettent un accÚs quasi instantané aux données grùce à une fonction de hachage efficace, mais leur performance dépend fortement de la gestion des collisions et de la qualité de la fonction de hachage.
đ Tableaux de SynthĂšse
| ThÚme | Concepts Clés | Méthodes / Structures | Complexité | Auteurs / Références |
|---|
| Notions dâalgorithme | Suite finie, dĂ©terministe, indĂ©pendant du langage | Algorithme selon EncyclopĂ©dia Universalis | N/A | EncyclopĂ©dia Universalis, Al-Khwarizmi |
| ComplexitĂ© algorithme | Temps d'exĂ©cution, notation grand O | Analyse du pire, meilleur, cas moyen; rĂšgles de calcul | O(n), O(nÂČ), O(log n), etc. | Wirth (1976), Cormen et al. (2009) |
| Tri et recherche | Recherche sĂ©quentielle, tri Ă bulle, tri par sĂ©lection | Recherche linĂ©aire, tri Ă bulle, tri par sĂ©lection | O(n), O(nÂČ) | Wirth (1971) |
| Structures linéaires | Listes, tableaux, piles, files | Listes chaßnées, tableaux statiques/dynamiques | N/A | N/A |
| Arbres et arbres binaires | Arbres, arbres binaires de recherche | Parcours en profondeur, en largeur | O(log n) équilibrés | Cormen et al. (2009) |
| Graphes et parcours | Représentations, parcours en profondeur/breadth | DFS, BFS | O(V+E) | Cormen et al. (2009) |
| ReprĂ©sentations dâarbres | Pointeurs, tableaux, encodages | Parcours, stockage | N/A | N/A |
| Arbres équilibrés | AVL, Red-Black | Rotation, équilibrage | O(log n) | Cormen et al. (2009) |
| Structures de données avancées | Tas, tables de hachage | Heap, hachage direct | O(1) pour recherche | Cormen et al. (2009) |
| Méthodes de hachage | Fonctions de hachage, gestion des collisions | Hachage ouvert, fermé | O(1) en moyenne | Cormen et al. (2009) |
â ïž PiĂšges & Confusions FrĂ©quentes
- Confondre complexitĂ© en O(n) et en O(nÂČ) lors de lâanalyse de tris simples.
- Croire quâun algorithme de recherche dans un tableau triĂ© est toujours plus rapide quâun dans un tableau non triĂ©, sans considĂ©rer le contexte.
- Confondre la complexité dans le pire cas avec la moyenne ou le meilleur cas.
- Oublier que la complexité asymptotique ne considÚre pas les constantes et dépend du comportement à grande échelle.
- Confondre la notion dâalgorithme (abstrait) et de programme (implĂ©mentation concrĂšte).
- Penser quâun arbre Ă©quilibrĂ© garantit une complexitĂ© constante pour toutes les opĂ©rations.
- Confondre la reprĂ©sentation dâun arbre (pointeurs vs tableau) avec ses performances ou ses usages.
â
Checklist Examen
- ConnaĂźtre la dĂ©finition dâun algorithme selon lâEncyclopedia Universalis et ses caractĂ©ristiques principales.
- Savoir lâorigine historique du terme « algorithme » avec Al-Khwarizmi.
- Maßtriser la différence entre algorithme et programme.
- Comprendre la notion de complexité algorithmique, notamment la notation grand O.
- Savoir calculer la complexité dans le pire, meilleur et cas moyen.
- Connaßtre la complexité des principaux algorithmes de tri : tri à bulle, tri par sélection.
- Savoir la différence entre recherche séquentielle dans un tableau trié et non trié.
- ConnaĂźtre la structure et le parcours dâun arbre binaire de recherche.
- Comprendre les principes des arbres équilibrés (AVL, Red-Black).
- Savoir représenter un arbre par pointeurs ou tableau.
- ConnaĂźtre les principales mĂ©thodes de reprĂ©sentation dâun graphe.
- MaĂźtriser les algorithmes de parcours en profondeur (DFS) et en largeur (BFS).
- Connaßtre les structures de données avancées : tas, tables de hachage.
- Comprendre le fonctionnement et la gestion des collisions en hachage.
- Savoir analyser la complexité des opérations sur ces structures.
- Vérifier la maßtrise du vocabulaire spécifique : « complexité », « parcours », « équilibré », « hachage », etc.
Create your own revision sheets
Import your course and AI generates sheets, quizzes and flashcards in 30 seconds.
Sheet generator