Galerie de cartes mentales Analyse et conception d'algorithmes
Une carte mentale sur l'analyse et la conception d'algorithmes. Un algorithme est un calcul qui satisfait aux conditions de terminaison, de certitude, de faisabilité, d'entrée et de sortie. Quel que soit l’algorithme utilisé pour trouver la solution optimale, il doit être clair quelle est la solution optimale.
Modifié à 2023-10-28 17:00:08Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
La gestion de projet est le processus qui consiste à appliquer des connaissances, des compétences, des outils et des méthodologies spécialisés aux activités du projet afin que celui-ci puisse atteindre ou dépasser les exigences et les attentes fixées dans le cadre de ressources limitées. Ce diagramme fournit une vue d'ensemble des 8 composantes du processus de gestion de projet et peut être utilisé comme modèle générique.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
La gestion de projet est le processus qui consiste à appliquer des connaissances, des compétences, des outils et des méthodologies spécialisés aux activités du projet afin que celui-ci puisse atteindre ou dépasser les exigences et les attentes fixées dans le cadre de ressources limitées. Ce diagramme fournit une vue d'ensemble des 8 composantes du processus de gestion de projet et peut être utilisé comme modèle générique.
Analyse et conception d'algorithmes
Chapitre 1 Introduction
Un algorithme est un calcul qui satisfait aux conditions suivantes
Objectif : résoudre des problèmes
Terminabilité
certitude
faisabilité
entrer
sortir
calculer
给定计算模型机械的执行的规则或计算步骤序列被称为计算
一个计算机程序是一个计算
Le calcul n'est pas un algorithme
question
Définit la relation entre l'entrée et la sortie
L'algorithme du Festival d'automne est un problème complet, pas un simple problème
Algorithme d'analyse
Exactitude de l'algorithme : se termine pour toutes les entrées et produit des sorties correctes
Algorithme incorrect : ne se termine pas ou produit une sortie incorrecte pour une entrée
Exactitude des algorithmes approximatifs/stochastiques : se termine pour toutes les entrées, produit des solutions approximativement correctes ou un petit nombre de solutions incorrectes
Raison de la preuve d'exactitude
Les programmes de débogage ne peuvent pas prouver qu'il n'y a pas d'erreurs
méthode
Terminer sur toutes les entrées
Chaque entrée a la bonne sortie
complexité de l'algorithme
Objectif : Analyser la quantité de ressources requise par l'algorithme pour différentes entrées
Complexité temporelle, complexité spatiale, nombre d'entrées et de sorties, etc.
fonction de taille d'entrée
Taille d'entrée : taille (α)
Complexité temporelle de l'instance : nombre d'opérations les plus nécessaires pour produire un résultat pour une entrée spécifique
Complexité temporelle d'une entrée spécifique
Complexité de l'espace d'instance
entrée spécifique
空间复杂性,对输入产生结果所需要的存储空间大小
是输入大小的函数S(n)
Pire complexité temporelle
complexité minimale de l'algorithme
complexité moyenne de l'algorithme
Probabilité d'occurrence multipliée par la somme de toutes les possibilités de complexité
Modèle d'analyse algorithmique
modèle d'accès aléatoire
Modèle multiprocesseur parallèle
Analyse de la complexité temporelle
Ce n’est pas qu’un programme prenne beaucoup de temps pour résoudre un problème, mais que le temps augmente très rapidement lorsque l’ampleur du problème s’étend.
Complexité temporelle de niveau constant
Analyse de la complexité temporelle de l'algorithme d'insertion directe
Lors de la lecture du kème nombre, comparez-le positivement avec le nombre précédent,
Analyse de l'exactitude de l'algorithme
méthode invariante de boucle
Invariant de boucle P : les données et les structures de données sur lesquelles opèrent ont des propriétés clés
Par exemple, dans un algorithme de tri, la propriété selon laquelle l’ordre des nombres ne change pas peut être utilisée comme invariant de boucle.
initialisation de la boucle
Étapes du cycle
boucle terminée
algorithme de conception
diviser et conquérir
programmation dynamique
algorithme gourmand
algorithme de recherche arborescente
Division du problème
Machine de Turing
La machine déterministe de Turing résout le problème P en temps polynomial
Problèmes NP résolubles par une machine de Turing incertaine en temps polynomial
Incertain Les machines de Turing ne peuvent plus être non-NP
sous-thème
Chapitre 2 Bases mathématiques
2.1 Calcul de l'ordre de la fonction de complexité
L'ensemble des fonctions du même ordre f(x)=θ(g(x)) où l'ensemble des fonctions est : θ(g(x)) liaison étroite
La limite supérieure de la fonction d'ordre inférieur f(n)=0(g(n)) peut être une limite supérieure d'ordre inférieur à celle-ci.
Fonction d'ordre supérieur f(n)=Ω(g(n)) limite inférieure, meilleur des cas
Cela ne peut pas expliquer la relation de taille, cela peut seulement expliquer la relation de classe ; une fonction d'ordre supérieur n'est pas nécessairement supérieure à sa limite inférieure, en particulier une fonction d'ordre supérieur [pas une fonction d'ordre strictement supérieur] ;
θ(g(n))⊆0(g(n)) f(n)=O(n^k ) Liaison polynomiale
Limite supérieure de fonction d'ordre strictement inférieur mais pas de limite étroite f(n)=o(g(n))
f(n)=o(g(n))⇒(lim)┬(n→∞) f(n)/g(n) =0
Limite inférieure de fonction d'ordre strictement supérieur mais pas de limite étroite f(n)=ω(g(n))
f(n)=ω(g(n)) si et seulement si g(n)=o(f(n))
f(n)=ω(g(n))⇒(lim)┬(n→∞) f(n)/g(n) =∞
propriétés de l'ordre d'une fonction
La transitivité inclut les cinq ci-dessus
La réflexivité comprend les trois premiers
Symétrie serrée
antisymétrie
f(n)=0(g(n)) si et seulement si g(n)=Ω(f(n))
f(n)=o(g(n)) si et seulement si g(n)=ω(f(n))
La signification de l'ordre des fonctions dans les formules mathématiques
2.2 Estimation et limites de la somme
somme linéaire
série
Limites pour la sommation directe
sous-thème
sous-thème
2.3 Les équations récursives s'utilisent elles-mêmes pour se définir
Trois méthodes principales pour résoudre des équations récursives
Substitution Deviner Induction Mathématique
Itérer et convertir en somme, estimer la somme
Théorème principal
sous-thème
Chapitre 3 : Algorithmes de tri et de division et conquête
3.1 Principe de diviser pour mieux régner
phase de conception
Points : les sous-problèmes peuvent ne pas être les mêmes. Diviser le temps D(n)
Gouvernance : Résoudre chaque sous-problème aT(n)
Somme : combiner les solutions aux sous-problèmes C(n)
Complexité temporelle totale : T(n) = a(T(n/b)) D(n) C(n)
étape d'analyse
Construire des équations récursives
Résoudre
3.2 Algorithme de tri basé sur diviser pour régner
La tâche principale du tri rapide est d'exécuter l'algorithme de partitionnement et de connaître les conditions aux limites.
Limite inférieure du problème de tri
3.3 Statistiques médianes et de commande
principe de réduction
Par exemple, recherchez par moitié
Sélectionnez une question
3.4 Trouver la paire de points la plus proche
Méthodes de division et de fusion pour réduire f(n)
Algorithme spatial unidimensionnel
Trier en premier
algorithme diviser pour régner
indiquer
règle
et
Algorithme spatial bidimensionnel
3.5 Tri en temps linéaire
Compte
Utilisez trois tableaux A, B et C
L'idée générale : tableau d'entrée-A, tableau de sortie : B, tableau de comptage : C [la base du tableau est la plage de valeurs de A [0-k [valeur maximale dans A]]] (exigence : A doit être un tableau d'entiers)
[Remarque] Utilisez la structure de compartiment lorsque la consommation d'espace est importante.
Problèmes
A[i] est un entier
Et la plage de valeurs du tableau d'entrée 0-k doit être plus petite, sinon l'efficacité sera considérablement réduite.
Pendant le processus de tri, un espace de comptage de longueur maximale et un espace de sortie auxiliaire de longueur len sont nécessaires. Cet espace est relativement grand et la complexité spatiale est O (len max).
Complexité temporelle : O(n k)
Base
Caractéristiques
écurie
Trier du plus bas au plus élevé
algorithme
Conditions de saisie : Tableau d'entiers avec le même nombre de chiffres d
Complexité temporelle : O(d(n k[plage de valeurs d'entrée, l'impact est relativement faible et peut être ignoré]))
Problème : d est trop grand
Étendu à l'aide d'un algorithme diviser pour régner
Divisez le tableau avec b chiffres en b/r et prenez toutes les données avec r chiffres vers le haut. La plage de valeurs de chaque donnée est 0-2^r-1.
Trier en utilisant le nombre
La valeur optimale de r : lgn arrondie à l'inférieur
Remarque : Il peut être utilisé lorsque r n’est pas grand.
Tri au seau
Une hypothèse de tri par compartiment : l'entrée est répartie indépendamment et uniformément entre 0 et 1 [conditions attendues pour atteindre la linéarité]
Idée de tri au seau
Divisez 0-1 dans des seaux de taille égale
Les entrées sont triées dans des compartiments
Tri des données dans des compartiments
Répertorier toutes les données triées dans chaque compartiment
Complexité temporelle : limite étroite n
Quelques critères pour juger les algorithmes
stable:按照输入顺序合理的排序输出
in-place:没有另外开辟空间
3.6 Trouver la coque convexe
définition du problème
Entrée : une collection de points sur le plan, sortie coque convexe
nature
Pour un polygone convexe P, les côtés reliant deux points quelconques de P sont tous dans P.
Algorithme Graham-Scan
Dans le sens inverse des aiguilles d'une montre, triés par taille d'angle polaire
Tourner vers la gauche
Avis
Les valeurs maximales et minimales de xy se trouvent toutes sur la coque convexe. Tout d'abord, déterminez l'un des points comme point de départ, tracez une ligne horizontale et parcourez les points ci-dessus à partir de cette ligne horizontale [le plus petit point est sélectionné]
pseudocode
Trouvez le point dans Q avec la plus petite valeur de coordonnée y
Triez les points restants dans Q dans le sens inverse des aiguilles d'une montre
Pousser dans la pile S
Si les frais de composition se déplacent vers la gauche, faites ressortir l'élément supérieur de la pile.
Complexité temporelle : f(n)=0(n logn)
Analyse d'exactitude : invariant de boucle [Avant de traiter un certain nœud, la pile S stocke CH (Qi-1) de bas en haut]
algorithme diviser pour régner
Conditions aux limites
indiquer
Divisé en Ql, Qr
règle
et
Exécutez simplement Graham-Scan sur la séquence fusionnée
Comment fusionner des séquences
3.7 FFT à transformation de Fourier rapide
3.8 Multiplication d'entiers
Optimiser l'étape de division pour réduire un
Définition du problème : Entrée – entiers binaires de n bits X et Y ; sortie – le produit de X et Y ;
chapitre 4 Algorithme de programmation dynamique
Résumé de l'algorithme
Il y a un sentiment d'épuisement
就是罩子问题和服问题之间的关系之后再使用穷举的方法最后选定最小值作为最优解
注意:覆盖所有情况
4.1 Éléments de programmation dynamique
Raison : Si les sous-problèmes ne sont pas indépendants les uns des autres, la méthode de score calculera à plusieurs reprises les sous-problèmes communs, ce qui est très inefficace.
Objectif : Problème d'optimisation - Le problème d'optimisation est de donner une fonction de coût, en Rechercher dans l'espace de solution du problème la solution optimale avec un coût minimum ou maximum
Les problèmes de programmation dynamique sont une approche courante pour résoudre les problèmes d'optimisation
Définition : Le problème initial est divisé en une série de sous-problèmes [nombre de niveaux polynomiaux]
Résoudre les sous-problèmes de bas en haut
Algorithme descendant « diviser pour régner »
Champ d'application : un type de problème qui peut être résolu de manière similaire, où les sous-problèmes peuvent être réutilisés
conditions d'utilisation
Optimisation de la sous-structure : lorsque la solution optimale d'un problème contient la solution optimale d'un sous-problème, on dit que ceci Un problème a une sous-structure d’optimisation.
Sous-problèmes qui se chevauchent : au cours du processus de résolution du problème, les solutions de nombreux sous-problèmes seront utilisées plusieurs fois.
Lorsqu’il n’y a pas de chevauchement, utilisez simplement diviser pour régner, sinon vous devrez créer un espace de stockage supplémentaire.
Étapes de conception de l'algorithme
– Analyser la structure de la solution optimale [quels sous-problèmes sont composés de solutions optimales, il suffit d’aller aux conditions aux limites] – Définir de manière récursive le coût de la solution optimale – Diviser les sous-problèmes de manière récursive jusqu’à ce qu’ils soient indivisibles – Résoudre chaque sous-problème de bas en haut – Calculer le coût de la solution d’optimisation et l’enregistrer – Obtenir des informations pour construire la solution optimale – Construire une solution optimale basée sur les informations utilisées pour construire la solution optimale
4.2 Multiplication en chaîne matricielle
Définition du problème : saisir la matrice p_i-1*p ; afficher la méthode pour calculer le coût minimum.
Multiplication matricielle
Satisfaire à la loi associative, différents ordres de calcul auront des coûts différents
Utiliser des méthodes de programmation dynamique
Avoir des sous-problèmes qui se chevauchent
Définir de manière récursive le coût de la solution optimale
sous-thème
Solution étendue : vous pouvez utiliser la méthode de mémorisation et la partition peut être transformée en programmation dynamique.
4.3 Sous-séquence commune la plus longue
définition du problème
résolution de problème
⚫ Analyse structurelle de la solution optimisée ⚫ Établir une équation récursive des coûts pour une solution optimale ⚫ Diviser les sous-problèmes de manière récursive ⚫ Calculez le coût de la solution optimisée de bas en haut et enregistrez les informations de construction de la solution optimisée ⚫Solution d'optimisation de construction
Analyse de sous-structure optimisée
i-ième préfixe : Xi
Optimiser la sous-structure
Pratique d'utiliser cette méthode pour une solution récursive
Trois preuves directes
Chevauchement des sous-problèmes, nombre de problèmes qui doivent être traités (au plus mn sous-problèmes)
Il est préférable de couvrir toutes les situations
Pour faciliter le calcul des conditions aux limites
Si les conditions aux limites ne sont pas pratiques à calculer, le calcul des limites prendra au plus un temps O(m) ou O(n).
Division du problème : utilisez les conditions définies ci-dessus, c'est-à-dire les conditions définies précédemment pour la récursivité
Calculez le coût de la solution d'optimisation de bas en haut, puis résolvez vers le bas en fonction de la solution ci-dessus.
Enfin, résolvez de bas en haut et résolvez selon le symbole de la solution optimale marqué par B. La solution obtenue est l'inversion de la solution finale.
Pseudocode : la solution est trouvée par lignes, et les flèches sont utilisées pour rechercher de bas en haut.
Complexité temporelle : O(mn) [nombre de sous-problèmes], où le temps pour construire la solution optimale est O(mn)
Complexité spatiale O(mn)
Stratégie d'optimisation de l'espace : vous pouvez concevoir C en seulement deux lignes et m colonnes ou quelque chose comme ça
4.4 0/1 problème de sac à dos
définition du problème
Développer une stratégie d'emballage qui maximise la valeur des articles dans le sac sans être en surpoids
Analyse préliminaire : il existe deux options pour chaque élément, installer ou non ; le coût de calcul du plan d'installation et de retrait est n [si la tasse de thé/valeur est calculée, utilisez un temps constant pour comparer afin d'obtenir la valeur maximale]
Le coût total du calcul est O(n2^n)
np problème complet
résolution de problème
Analyse structurelle de la solution optimisée
Chevauchement des sous-problèmes : lorsque les poids des éléments sont les mêmes et que les deux sont égaux à 1, il y aura un grand nombre de sous-problèmes qui se chevauchent.
Ne convient pas à l'algorithme diviser pour mieux régner [vous pouvez essayer d'utiliser la mémorisation]
définition du problème
Établir une équation récursive qui optimise le coût de la solution
Définir la matrice de coût m ;
m[je,j]
i:起始的、计算子问题优化解的代价的矩阵时间
j:指的是包的容量
Résumé des équations récursives
Sous-problème de partitionnement récursif
Ce qu'il faut savoir pour calculer m[i,j]
Calculez le coût de la solution optimisée de bas en haut et enregistrez les informations de construction de la solution optimisée
Construire une solution d’optimisation
Calcul du coût total : algorithme pseudopolynomial
Il y a quatre situations au total
4.5 Arbre de recherche binaire
définition du problème
Définition de l'arbre de recherche binaire
Affecte le coût global des requêtes de l'arbre de recherche : la forme de l'arbre et la probabilité de requête du nœud
valeur attendue de l'arbre
Les nœuds impairs sont des nœuds feuilles
Les nœuds pairs sont des nœuds internes
Valeur de coût attendue de l'arbre E(T)
La valeur du coût est liée à la profondeur de l'arbre et à l'incrément de coût.
Le nœud racine doit être un nombre pair
résolution de problème
Analyse structurelle de la solution optimisée
Sous-structure et preuve optimisées
La valeur de contribution du sous-arbre : la position du sous-arbre est fixe, sa probabilité est fixe et sa différence de contribution est l'étoile solitaire.
Incrément de contribution : probabilité * différence de profondeur
Utiliser des sous-structures d'optimisation pour construire des solutions optimales
chevauchement de sous-problèmes
Établir une équation récursive qui optimise le coût de la solution
Établir une équation récursive des coûts de recherche pour une solution optimale
Conditions aux limites et autres considérations
tout est couvert
Formule : Probabilité (incrément de coût) [sous-arbre gauche, sous-arbre droit]
W : Incrément ; E : Coût attendu ; P : Probabilité ;
Formule de calcul récursif incrémental
W[i,j] = w(i,j-1) pi pj = w(i,r-1) w(r 1,j) pr
Sous-problème de partitionnement récursif
Calculez le coût de la solution optimisée de bas en haut et enregistrez les informations de construction de la solution optimisée
Construire une solution d’optimisation
4.6 Distance d'édition minimale
définition
Convertir entre deux chaînes
Il ne contient que trois opérations : insérer des caractères, supprimer des caractères et remplacer des caractères [chacune compte comme une opération de base]
L'alignement des caractères affecte l'efficacité
Résoudre
Analyse structurelle de la solution optimisée
Propriétés de la distance d'édition minimale
Sans chevauchement : tout personnage ne peut effectuer qu'une seule opération au maximum.
indépendance de l'ordre
symétrie
chaîne étendue vide
chevauchement de sous-problèmes
Établir une équation récursive qui optimise le coût de la solution
quatre situations
Conditions aux limites
Tout d’abord, vous devez considérer les conditions aux limites comme les conditions requises pour démarrer les calculs.
Algorithmes et complexité algorithmique
Complexité temporelle O(mn)
Complexité spatiale : O(mn)
Optimiser la structure de l'espace
Sous-problème de partitionnement récursif
Calculez le coût de la solution optimisée de bas en haut et enregistrez les informations de construction de la solution optimisée
Construire une solution d’optimisation
Problème de discrimination de distance d'édition minimale
application
字符串的相似度查询
définition
entrée sortie
analyser
La distance d'édition minimale n'est pas inférieure à la valeur absolue de la longueur des deux
Complexité
Deux situations qui ne nécessitent pas de calcul
La différence de longueur est supérieure au seuil de décision d'entrée
Le calcul doit utiliser la valeur de résultat ci-dessus supérieure à 2
complexité de l'espace
O(min{m,n}t) : peut être optimisé
O(t)
complexité temporelle
O(min{m,n}t)
Chaque ligne/colonne peut calculer au plus 2*t 1
algorithme gourmand du chapitre 5
La différence avec les deux algorithmes précédents
子主题
贪心算法:原问题进行选择获取剩余子问题直至子问题为空
délicat
前面两种:原问题划分为子问题,繁重,自底向上
5.1 Principes de base
concept de base
Algorithmes approximatifs, algorithmes heuristiques
Solution optimale locale, le meilleur choix du moment
exemple
Problème de pièce d'échange
Problème d'horaire régional
utiliser
Résoudre les problèmes d'optimisation
Idée basique
Un algorithme pour résoudre un problème d’optimisation se compose d’une série d’étapes, chacune comportant un ensemble de choix permettant de faire le meilleur choix du moment.
J'espère parvenir à la solution optimale globale
Essayez-le étape par étape, puis surchargez et essayez d'autres choses pour trouver l'algorithme gourmand
Aborder progressivement voire finalement atteindre la solution optimale
Exemple
Conditions pour générer des solutions optimales
Optimiser la sous-structure
Gourmand sélectif
Induction
Résumer les étapes de l'algorithme ou résumer le problème
Chaque étape est meilleure que les autres algorithmes et produit une solution optimale
La solution pour chaque étape incluse ne doit pas nécessairement être une bonne solution pour l'étape incluse
argument commutatif
Plus pratique
Sous le principe d'une optimalité inchangée, remplacer progressivement une solution optimale pour finalement obtenir la solution de l'algorithme glouton.
Comparer
étapes de conception
étapes de conception
algorithme de sélection glouton
sous-problème restant
besoin d'une preuve
对于贪心选择来说,所求解的问题具有优化子结构
对于贪心选择算法莱说,具有Greedy选择性
5.2 Problèmes de sélection des activités
définition du problème
résolution de problème
Concevoir une méthode de sélection gourmande
Analyse structurelle de la solution optimisée
Preuve sélective gourmande
Lemme 1
Démonstration de la sélectivité gourmande
[Note] Il est nécessaire de clarifier quelles sont les conditions pour la solution optimale Dans ce problème, la solution optimale est l’activité la plus cohérente Dépend de la quantité et des caractéristiques de compatibilité
Lemme 2 : Optimiser la sous-structure
preuve par contradiction
Lemme 3
conception d'algorithmes
Analyse de la complexité des algorithmes
5.3 Codage de Huffman
définition du problème
codage de caractères binaires
codage de longueur fixe
codage à longueur variable
codage du préfixe
définition
arbre de codage
Le coût du codage des arbres : le coût est la somme attendue de la profondeur
C : jeu de caractères
B : somme des frais
F : fréquence
Pensées gourmandes
Sélectionnez cycliquement les deux nœuds avec la fréquence la plus basse pour générer un sous-arbre jusqu'à ce qu'un arbre soit formé
résolution de problème
Concevoir une méthode de sélection gourmande
Méthode de choix
La structure du sous-problème restant
Analyse structurelle de la solution optimisée
Lemme 1 : Preuve de sous-structure optimisée
Lemme 2 : La position la plus profonde, les deux caractères de la lettre de nomination minimum, même longueur maximale
sélectivité gourmande
Optimiser l'arborescence des préfixes pour contenir la longueur maximale de deux nœuds à la même profondeur
Preuve sélective gourmande
conception d'algorithmes
Analyse de la complexité des algorithmes
5.4 Arbre couvrant minimal
définition du problème
Algorithme de Kruskal
conception
Optimiser la structure de la solution
sous-problème restant
opération de rétrécissement
opération d'agrandissement
Preuve de sous-structure optimisée
Gourmand sélectif
Complexité algorithmique
exactitude de l'algorithme
L'algorithme de Prim
conception
Optimiser la structure de la solution
Gourmand sélectif
Complexité algorithmique
résumé
Algorithme générique
cadre
Idée basique
Description de l'algorithme
sélectivité gourmande
définition
Couper (S, VS)
Coupe croisée
Respecter la Coupe de bord du jeu A
Sur le bord clair de la coupe
Théorème 1
Kruskal : recherchez les bords clairs à travers Cut qui suivent A [contient une série de composants connectés] et les points non inclus dans A
L'algorithme de Prim
revoir
Temps de réalisation minimum 5.5 Planification minimale du Mackspan
définition du problème
algorithme d'approximation
Analyse de performance
analyse de l'amortissement du chapitre 6
Fondamental
Idée basique
Opérations de pile : ignorer les structures de données et les relations entre les opérations
Méthode d'analyse amortie
Objectif : Analyser la borne supérieure du coût de n opérations sur une structure de données donnée
Le coût de chaque opération est analysé également à travers le coût total [borne supérieure]
Ce qui est déterminé est une limite supérieure et non une probabilité
méthode d'agrégation
moyenne
méthodes comptables
Prépaiement [associé à l'objet de données, le crédit de l'objet de données]
méthode de l'énergie potentielle
Potentiel accumulé [associé à l'ensemble de la structure des données, énergie]
méthode d'agrégation
analyser
分析过程中要精细化,注意每个操作之间的关联
用数据对象上小的操作代价来来预付之后的大的操作代价
Opérations associées
比如multipop的多次是因为前面多次的push,所以需要push操作为他负责
Principe : Différentes opérations ont le même coût
La somme de toutes les opérations, sur chaque élément de n
compteur binaire
Un total de bits lgn
méthodes comptables
principe
Prépaiement [associé à l'objet de données, le crédit de l'objet de données]
Principe de sélection : Le crédit stocké dans la structure de données est non négatif
Exemple
analyser
分析过程中要精细化,注意每个操作之间的关联
用数据对象上小的操作代价来来预付之后的大的操作代价
Opérations associées
比如multipop的多次是因为前面多次的push,所以需要push操作为他负责
Opérations de pile
pousser, pop, multipop
Chaque objet sera éjecté au plus une fois après s'être arrêté
Preuve sur la limite supérieure :
compteur binaire
Régler sur 0 Régler sur 1
Opération majeure : mis à 0
méthode de l'énergie potentielle
Il y a aussi la preuve finale concernant la limite supérieure.
可以使用放缩
实际的代价小于一个值
或者平摊大于
或者都有
principe
exemple
empiler
Définition de l'énergie potentielle
Addition binaire
se concentrer
势能定义
Il est préférable de définir le nombre total d'objets augmenté par de petites opérations
比如说是栈:pop,占中总的对象数目
二进制加法:1的个数
使得总势能大于等于0
就是在每一次操作之后势能都是大于0的
大操作小操作
se concentrer
分清楚谁是大操作,谁是小操作
用小的操作代价来来预付之后的大的操作代价
Analyse d'amortissement de table dynamique
concept
Opérations prises en charge par les tables dynamiques
Structure de données : utiliser un tableau pour implémenter une table dynamique
Facteur de chargement : pas moins qu’une constante
exprimer
tablette]
num[T]
taille[T]
expansion et contraction
Extension de table dynamique
Analyse d'agrégation
Conditions d'analyse et analyse fine
méthodes comptables
coût réel de l'opération d'insertion
propres économies pour l'expansion
Expansion : grandes opérations
Insérer : petites opérations
Donnez-lui le premier objet correspondant sans caution.
Frais d'insertion
Analyse de l'énergie potentielle
Réduction des tables dynamiques
Le temps nécessaire pour mettre la table en mémoire tampon
méthode de l'énergie potentielle
Lorsque l'opération majeure est terminée, l'énergie potentielle est d'au moins 1
À mesure que la clé primaire pour les petites opérations approche du moment où de grandes opérations sont nécessaires, l’énergie potentielle augmente progressivement.
Puiser dans la force pour les grandes opérations
Lorsque le point clé sera atteint, ce sera l’énergie potentielle nécessaire aux grandes opérations.
relation
之间有一个二倍
1/4的关系
num在大操作之后是size的一半
Les grandes opérations sont des opérations de contraction et d'expansion 3
而前面的小操作改变的都是num
势能在小操作的过程中一定是增加的需要注意
Le total doit augmenter pendant la petite opération ! ! ! ! ! ! ! !
Remarque : Quel que soit l'algorithme utilisé pour trouver la solution optimale, il doit être clair quelle est la solution optimale.