Galeria de mapas mentais Análise e Design de Algoritmos
Um mapa mental sobre análise e design de algoritmos Um algoritmo é um cálculo que satisfaz as condições de terminação, certeza, viabilidade, entrada e saída. Não importa qual algoritmo seja usado para encontrar a solução ótima, deve ficar claro qual é a solução ótima.
Editado em 2023-10-28 17:00:08Il s'agit d'une carte mentale sur les anévrismes intracrâniens, avec le contenu principal, notamment: le congé, l'évaluation d'admission, les mesures infirmières, les mesures de traitement, les examens auxiliaires, les manifestations cliniques et les définitions.
Il s'agit d'une carte mentale sur l'entretien de comptabilité des coûts, le principal contenu comprend: 5. Liste des questions d'entrevue recommandées, 4. Compétences de base pour améliorer le taux de réussite, 3. Questions professionnelles, 2. Questions et réponses de simulation de scénarios, 1. Questions et réponses de capacité professionnelle.
Il s'agit d'une carte mentale sur les méthodes de recherche de la littérature, et son contenu principal comprend: 5. Méthode complète, 4. Méthode de traçabilité, 3. Méthode de vérification des points, 2. Méthode de recherche inversée, 1. Méthode de recherche durable.
Il s'agit d'une carte mentale sur les anévrismes intracrâniens, avec le contenu principal, notamment: le congé, l'évaluation d'admission, les mesures infirmières, les mesures de traitement, les examens auxiliaires, les manifestations cliniques et les définitions.
Il s'agit d'une carte mentale sur l'entretien de comptabilité des coûts, le principal contenu comprend: 5. Liste des questions d'entrevue recommandées, 4. Compétences de base pour améliorer le taux de réussite, 3. Questions professionnelles, 2. Questions et réponses de simulation de scénarios, 1. Questions et réponses de capacité professionnelle.
Il s'agit d'une carte mentale sur les méthodes de recherche de la littérature, et son contenu principal comprend: 5. Méthode complète, 4. Méthode de traçabilité, 3. Méthode de vérification des points, 2. Méthode de recherche inversée, 1. Méthode de recherche durable.
Análise e Design de Algoritmos
Capítulo 1 Introdução
Um algoritmo é um cálculo que satisfaz as seguintes condições
Objetivo: resolver problemas
Terminabilidade
certeza
viabilidade
digitar
saída
calcular
给定计算模型机械的执行的规则或计算步骤序列被称为计算
一个计算机程序是一个计算
Cálculo não é um algoritmo
pergunta
Define a relação entre entrada e saída
Algoritmo Festival de Outono é um problema completo, não uma simples instância de problema
Algoritmo de análise
Correção do algoritmo: termina para todas as entradas e produz saídas corretas
Algoritmo incorreto: não termina ou produz saída incorreta para uma entrada
Correção de algoritmos aproximados/estocásticos: termina para todas as entradas, produz soluções aproximadamente corretas ou um pequeno número de soluções incorretas
Motivo da prova de correção
Os programas de depuração não podem provar que não há erros
método
Terminar em todas as entradas
Cada entrada tem a saída correta
complexidade do algoritmo
Objetivo: Analisar a quantidade de recursos exigidos pelo algoritmo para diferentes entradas
Complexidade de tempo, complexidade de espaço, número de entradas e saídas, etc.
função de tamanho de entrada
Tamanho de entrada: tamanho (α)
Complexidade do tempo da instância: o número de operações mais necessárias para produzir um resultado para uma entrada específica
Complexidade de tempo de uma entrada específica
Complexidade do espaço da instância
entrada específica
空间复杂性,对输入产生结果所需要的存储空间大小
是输入大小的函数S(n)
Pior complexidade de tempo
complexidade mínima do algoritmo
complexidade média do algoritmo
Probabilidade de ocorrência multiplicada pela soma de todas as possibilidades de complexidade
Modelo de Análise Algorítmica
modelo de acesso aleatório
Modelo de multiprocessador paralelo
Análise de complexidade de tempo
Não é que um programa leve muito tempo para resolver um problema, mas que o tempo aumenta muito rapidamente à medida que a escala do problema se expande.
Complexidade de tempo de nível constante
Análise de complexidade de tempo do algoritmo de inserção direta
Ao ler o k-ésimo número, compare-o positivamente com o número anterior,
Análise de correção de algoritmo
método invariante de loop
Loop invariante P: os dados e estruturas de dados operados têm propriedades principais
Por exemplo, em um algoritmo de classificação, a propriedade de que a ordem dos números não muda pode ser usada como invariante de loop.
inicialização de loop
Etapas do ciclo
loop encerrado
algoritmo de projeto
dividir e conquistar
programaçao dinamica
algoritmo ganancioso
algoritmo de busca em árvore
Divisão de problemas
Máquina de Turing
Máquina de Turing determinística resolve o problema P em tempo polinomial
Problemas NP solucionáveis por uma máquina de Turing incerta em tempo polinomial
Máquinas de Turing incertas não podem mais ser Não-NP
sub tópico
Capítulo 2 Noções básicas de matemática
2.1 Calculando a ordem da função de complexidade
O conjunto de funções da mesma ordem f(x)=θ(g(x)) onde o conjunto de funções é: θ(g(x)) limite apertado
O limite superior da função de ordem inferior f(n)=0(g(n)) pode ser um limite superior de ordem inferior do que
Função de ordem superior f(n)=Ω(g(n)) limite inferior, melhor caso
Não pode explicar a relação de tamanho, apenas pode explicar a relação de classe; uma função de ordem superior não é necessariamente maior que o seu limite inferior, especialmente uma função de ordem superior [não uma função estritamente de ordem superior];
θ(g(n))⊆0(g(n)) f(n)=O(n^k) Limite polinomial
Limite superior de função de ordem estritamente inferior, mas não limite rígido f(n)=o(g(n))
f(n)=o(g(n))⇒(lim)┬(n→∞) f(n)/g(n) =0
Limite inferior da função de ordem estritamente superior, mas não limite rígido f(n)=ω(g(n))
f(n)=ω(g(n)) se e somente se g(n)=o(f(n))
f(n)=ω(g(n))⇒(lim)┬(n→∞) f(n)/g(n) =∞
propriedades da ordem de uma função
A transitividade inclui os cinco acima
A reflexividade inclui os três primeiros
Simetria estreita
antisimetria
f(n)=0(g(n)) se e somente se g(n)=Ω(f(n))
f(n)=o(g(n)) se e somente se g(n)=ω(f(n))
O significado da ordem das funções em fórmulas matemáticas
2.2 Estimativa e limites de soma
soma linear
Series
Limites para soma direta
sub tópico
sub tópico
2.3 Equações recursivas usam a si mesmas para se definirem
Três métodos principais para resolver equações recursivas
Substituição Adivinha Indução Matemática
Itere e converta em uma soma, estime a soma
Teorema mestre
sub tópico
Capítulo 3 Algoritmos de classificação e divisão e conquista
3.1 Princípio de dividir e conquistar
fase de desenho
Pontos: os subproblemas podem não ser iguais. Divisão do tempo D(n)
Governança: Resolva cada subproblema aT(n)
Soma: combine soluções para subproblemas C(n)
Complexidade de tempo total: T(n) = a(T(n/b)) D(n) C(n)
fase de análise
Construa equações recursivas
Resolver
3.2 Algoritmo de classificação baseado em dividir e conquistar
A principal tarefa da classificação rápida é executar o algoritmo de particionamento e precisar conhecer as condições de contorno
Limite inferior para o problema de classificação
3.3 Estatísticas de mediana e ordem
princípio da redução
Por exemplo, pesquise pela metade
Selecione a pergunta
3.4 Encontre o par de pontos mais próximo
Métodos de divisão e fusão para reduzir f(n)
Algoritmo de espaço unidimensional
Classifique primeiro
algoritmo de dividir e conquistar
apontar
regra
e
Algoritmo de espaço bidimensional
3.5 Classificando em tempo linear
Contando
Use três matrizes A, B e C
A ideia geral: matriz de entrada-A, matriz de saída: B, matriz de contagem: C [base da matriz é o intervalo de valores de A [0-k [valor máximo em A]]] (requisito: A precisa ser uma matriz de inteiros)
[Nota] Use a estrutura de bucket quando o consumo de espaço for grande.
Problemas
A[i] é um número inteiro
E a faixa de valores da matriz de entrada 0-k precisa ser menor, caso contrário a eficiência será bastante reduzida.
Durante o processo de classificação, são necessários um espaço de contagem de comprimento máximo e um espaço de saída auxiliar de comprimento len. Este espaço é relativamente grande e a complexidade do espaço é O (len max).
Complexidade de tempo: O(n k)
raiz
Características
estábulo
Classificar do menor para o maior
algoritmo
Requisitos de entrada: inteiros da matriz com o mesmo número de dígitos d
Complexidade de tempo: O(d(n k[intervalo de valores de entrada, o impacto é relativamente pequeno e pode ser ignorado]))
Problema: d é muito grande
Estendido usando um algoritmo de dividir e conquistar
Divida a matriz com b dígitos em b/r e pegue todos os dados com r dígitos para cima. O intervalo de valores de cada dado é 0-2 ^ r-1.
Classificar usando contagem
O valor ideal de r:lgn arredondado para baixo
Nota: Pode ser usado quando r não for grande.
Classificação de balde
Uma suposição de classificação de balde: a entrada é distribuída de forma independente e uniforme entre 0-1 [condições esperadas para alcançar linearidade]
Ideia de classificação de balde
Divida 0-1 em baldes de tamanhos iguais
A entrada é classificada em buckets
Classificando dados em buckets
Liste todos os dados classificados em cada intervalo
Complexidade de tempo: limite rígido n
Alguns critérios para julgar algoritmos
stable:按照输入顺序合理的排序输出
in-place:没有另外开辟空间
3.6 Encontre o casco convexo
definição de problema
Entrada: uma coleção de pontos no plano, saída de casco convexo
natureza
Para um polígono convexo P, os lados que conectam quaisquer dois pontos em P estão todos dentro de P.
Algoritmo Graham-Scan
No sentido anti-horário, classificado por tamanho do ângulo polar
Girar para a esquerda
Perceber
Os valores máximo e mínimo de xy estão todos no casco convexo. Primeiro, determine um dos pontos como ponto inicial, desenhe uma linha horizontal e atravesse os pontos acima a partir desta linha horizontal [o menor ponto é selecionado]
pseudo-código
Encontre o ponto em Q com o menor valor da coordenada y
Classifique os pontos restantes em Q no sentido anti-horário
Empurre para a pilha S
Se a taxa de composição se mover para a esquerda, retire o elemento superior da pilha
Complexidade de tempo: f(n)=0(n logn)
Análise de correção: Loop invariante [Antes de processar um determinado nó, a pilha S armazena CH (Qi-1) de baixo para cima]
algoritmo de dividir e conquistar
Condições limite
apontar
Dividido em Ql, Qr
regra
e
Basta executar o Graham-Scan na sequência mesclada
Como mesclar sequências
3.7 Transformada Rápida de Fourier FFT
3.8 Multiplicação de inteiros
Otimize o estágio de divisão para reduzir um
Definição do problema: Entrada - inteiros binários de n bits X e Y; saída - o produto de X e Y;
capítulo 4 Algoritmo de programação dinâmica
Resumo do algoritmo
Há uma sensação de exaustão
就是罩子问题和服问题之间的关系之后再使用穷举的方法最后选定最小值作为最优解
注意:覆盖所有情况
4.1 Elementos de programação dinâmica
Motivo: Se os subproblemas não forem independentes uns dos outros, o método de pontuação calculará repetidamente os subproblemas comuns, o que é muito ineficiente.
Objetivo: Problema de otimização - O problema de otimização é fornecer uma função de custo, em Pesquise no espaço de solução do problema a solução ótima com custo mínimo ou máximo
Problemas de programação dinâmica são uma abordagem comum para resolver problemas de otimização
Definição: O problema original é dividido em uma série de subproblemas [número de níveis polinomiais]
Resolvendo subproblemas de baixo para cima
Algoritmo de divisão e conquista de cima para baixo
Âmbito de aplicação: Um tipo de problema que pode ser resolvido à medida que subproblemas podem ser reutilizados
Condições de Uso
Otimizando subestrutura: Quando a solução ótima de um problema contém a solução ótima de um subproblema, dizemos que esta Um problema possui uma subestrutura de otimização.
Subproblemas sobrepostos: Durante o processo de solução do problema, as soluções para muitos subproblemas serão usadas várias vezes.
Quando não há sobreposição, basta usar dividir e conquistar, caso contrário será necessário criar espaço de armazenamento adicional.
Etapas de design de algoritmo
– Analisar a estrutura da solução ótima [quais subproblemas são compostos por soluções ótimas, basta ir até as condições de contorno] – Definir recursivamente o custo da solução ótima – Dividir subproblemas recursivamente até que sejam indivisíveis – Resolva cada subproblema de baixo para cima – Calcule o custo da solução de otimização e economize-o – Obtenha informações para construir a solução ótima – Construir uma solução ótima com base nas informações usadas para construir a solução ótima
4.2 Multiplicação em cadeia de matrizes
Definição do problema: insira a matriz p_i-1*p e produza o método para calcular o custo mínimo;
Multiplicação da matriz
Cumprir a lei associativa, diferentes ordens de cálculo terão custos diferentes
Use métodos de programação dinâmica
Têm subproblemas sobrepostos
Defina recursivamente o custo da solução ideal
sub tópico
Solução estendida: você pode usar o método de memorização e a pontuação pode ser transformada em programação dinâmica.
4.3 Subsequência comum mais longa
definição de problema
Solução de problemas
⚫ Análise estrutural de solução otimizada ⚫ Estabeleça equação recursiva de custo para solução ideal ⚫ Divida subproblemas recursivamente ⚫ Calcule o custo da solução otimizada de baixo para cima e registre as informações de construção da solução otimizada ⚫Construir solução de otimização
Análise otimizada de subestrutura
i-ésimo prefixo: Xi
Otimizar subestrutura
Conveniente usar este método para solução recursiva
Três provas diretas de prova
Sobreposição de subproblemas, número de problemas que precisam ser processados (no máximo mn subproblemas)
É melhor cobrir todas as situações
Para facilitar o cálculo das condições de contorno
Se as condições de contorno forem inconvenientes para calcular, levará no máximo O(m) ou O(n) tempo para calcular os limites.
Divisão do problema: Utilize as condições definidas acima, ou seja, as condições definidas anteriormente para recursão
Calcule o custo da solução de otimização de baixo para cima e resolva para baixo com base na solução acima.
Por fim, resolva de baixo para cima e resolva de acordo com o símbolo da solução ótima marcado por B. A solução obtida é a inversão da solução final.
Pseudocódigo: A solução é encontrada por linhas e as setas são usadas para pesquisar de baixo para cima.
Complexidade de tempo: O(mn) [número de subproblemas], onde o tempo para construir a solução ótima é O(m n)
Complexidade espacial O(mn)
Estratégia de otimização de espaço: você pode projetar C em apenas duas linhas em colunas ou algo parecido
4.4 0/1 problema de mochila
definição de problema
Desenvolva uma estratégia de embalagem que maximize o valor dos itens na sacola sem excesso de peso
Análise preliminar: Existem duas opções para cada item, instalar ou não instalar; o custo de cálculo do plano de instalação e remoção é n [se a xícara de chá/valor for calculada, use tempo constante para comparar para obter o valor máximo]
O custo total de cálculo é O (n2 ^ n)
np problema completo
Solução de problemas
Análise Estrutural de Solução Otimizada
Sobreposição de subproblemas: Quando os pesos dos itens são iguais e ambos são 1, haverá um grande número de subproblemas sobrepostos.
Não é adequado para algoritmo de divisão e conquista [você pode tentar usar memoização]
definição de problema
Estabeleça uma equação recursiva que otimize o custo da solução
Definir a matriz de custos m;
m[eu,j]
i:起始的、计算子问题优化解的代价的矩阵时间
j:指的是包的容量
Resumo das equações recursivas
Subproblema de particionamento recursivo
O que você precisa saber para calcular m[i,j]
Calcule o custo da solução otimizada de baixo para cima e registre as informações de construção da solução otimizada
Solução de otimização de construção
Cálculo do custo total: algoritmo pseudopolinomial
Existem quatro situações no total
4.5 Árvore de pesquisa binária
definição de problema
Definição de árvore de pesquisa binária
Afeta o custo geral da consulta da árvore de pesquisa: o formato da árvore e a probabilidade de consulta do nó
valor esperado da árvore
Nós ímpares são nós folha
Nós pares são nós internos
Valor de custo esperado da árvore E(T)
O valor do custo está relacionado à profundidade da árvore e ao incremento do custo.
O nó raiz deve ser um número par
Solução de problemas
Análise Estrutural de Solução Otimizada
Subestrutura e prova otimizadas
O valor de contribuição da subárvore: a posição da subárvore é fixa, sua probabilidade é fixa e sua diferença de contribuição é a estrela solitária.
Incremento de contribuição: probabilidade * diferença de profundidade
Use subestruturas de otimização para construir soluções ideais
sobreposição de subproblemas
Estabeleça uma equação recursiva que otimize o custo da solução
Estabeleça a equação recursiva do custo de pesquisa para a solução ideal
Condições de limite e outras considerações
tudo coberto
Fórmula: Probabilidade (incremento de custo) [subárvore esquerda, subárvore direita]
W: Incremento; E: Custo esperado;
Fórmula de cálculo recursivo incremental
W[i,j] = w(i,j-1) pi pj = w(i,r-1) w(r 1,j) pr
Subproblema de particionamento recursivo
Calcule o custo da solução otimizada de baixo para cima e registre as informações de construção da solução otimizada
Solução de otimização de construção
4.6 Distância mínima de edição
definição
Converter entre duas strings
Contém apenas três operações: inserir caracteres, excluir caracteres e substituir caracteres [cada uma conta como uma operação básica]
O alinhamento dos personagens afeta a eficiência
Resolver
Análise Estrutural de Solução Otimizada
Propriedades da distância mínima de edição
Não sobreposto: qualquer personagem só pode realizar no máximo uma operação
independência de ordem
simetria
string estendida vazia
sobreposição de subproblemas
Estabeleça uma equação recursiva que otimize o custo da solução
Quatro situações
Condições limite
Primeiro, você precisa considerar as condições de contorno como as condições necessárias para o cálculo inicial.
Algoritmos e Complexidade Algorítmica
Complexidade de tempo O(mn)
Complexidade do espaço: O(mn)
Otimize a estrutura do espaço
Subproblema de particionamento recursivo
Calcule o custo da solução otimizada de baixo para cima e registre as informações de construção da solução otimizada
Solução de otimização de construção
Problema de discriminação de distância de edição mínima
aplicativo
字符串的相似度查询
definição
entrada Saída
analisar
A distância mínima de edição não é menor que o valor absoluto do comprimento dos dois
Complexidade
Duas situações que não requerem cálculo
A diferença de comprimento é maior que o limite de decisão de entrada
O cálculo é necessário para usar o valor do resultado acima maior que 2
complexidade do espaço
O(min{m,n}t): pode ser otimizado
O(t)
complexidade de tempo
O(min{m,n}t)
Cada linha/coluna pode calcular no máximo 2*t 1
capítulo 5 algoritmo ganancioso
A diferença dos dois algoritmos anteriores
子主题
贪心算法:原问题进行选择获取剩余子问题直至子问题为空
delicado
前面两种:原问题划分为子问题,繁重,自底向上
5.1 Princípios básicos
conceito básico
Algoritmos aproximados, algoritmos heurísticos
Solução local ótima, a melhor escolha no momento
exemplo
Problema de troca de moeda
Problema de agendamento regional
usar
Resolva problemas de otimização
Ideia básica
Um algoritmo para resolver um problema de otimização consiste em uma série de etapas, cada etapa possuindo um conjunto de escolhas para fazer a melhor escolha no momento.
Espero alcançar a solução ideal global
Experimente passo a passo, depois sobrecarregue e tente outras coisas para encontrar o algoritmo ganancioso
Aproxime-se gradualmente ou mesmo finalmente alcance a solução ideal
Exemplo
Condições para gerar soluções ótimas
Otimizar subestrutura
Seletivo ganancioso
Indução
Resuma as etapas do algoritmo ou resuma o problema
Cada etapa é melhor que outros algoritmos e produz uma solução ideal
A solução para cada etapa incluída não precisa necessariamente ser uma boa solução para a etapa incluída
argumento de troca
Mais conveniente
Sob a premissa de otimalidade inalterada, substitua gradualmente a partir de uma solução ótima para finalmente obter a solução do algoritmo ganancioso.
Comparar
etapas de projeto
etapas de projeto
algoritmo de seleção ganancioso
subproblema restante
preciso de provas
对于贪心选择来说,所求解的问题具有优化子结构
对于贪心选择算法莱说,具有Greedy选择性
5.2 Questões de seleção de atividades
definição de problema
Solução de problemas
Projetando um método de seleção ganancioso
Análise Estrutural de Solução Otimizada
Prova seletiva gananciosa
Lema 1
Demonstrando seletividade gananciosa
[Nota] É necessário esclarecer quais são as condições para a solução ótima Neste problema, a solução ótima é a atividade mais consistente Depende da quantidade e características de compatibilidade
Lema 2: Otimizar subestrutura
prova por contradição
Lema 3
projeto de algoritmo
Análise de complexidade de algoritmo
5.3 Codificação de Huffman
definição de problema
codificação de caracteres binários
codificação de comprimento fixo
codificação de comprimento variável
codificação de prefixo
definição
árvore de codificação
O custo da codificação de árvores: o custo é a soma esperada da profundidade
C: conjunto de caracteres
B: soma dos custos
F: frequência
Pensamentos gananciosos
Selecione ciclicamente os dois nós com menor frequência para gerar uma subárvore até que uma árvore seja formada
Solução de problemas
Projetando um método de seleção ganancioso
Método de escolha
A estrutura do subproblema restante
Análise Estrutural de Solução Otimizada
Lema 1: Prova de subestrutura otimizada
Lema 2: A posição mais profunda, os dois caracteres da carta de nomeação mínima, o mesmo comprimento máximo
seletividade gananciosa
Otimize a árvore de prefixos para conter o comprimento máximo de dois nós na mesma profundidade
Prova seletiva gananciosa
projeto de algoritmo
Análise de complexidade de algoritmo
5.4 Árvore geradora mínima
definição de problema
Algoritmo de Kruskal
projeto
Otimize a estrutura da solução
subproblema restante
operação de encolhimento
operação de expansão
Prova de subestrutura otimizada
Seletivo ganancioso
Complexidade algorítmica
correção do algoritmo
Algoritmo de Prim
projeto
Otimize a estrutura da solução
Seletivo ganancioso
Complexidade algorítmica
resumo
Algoritmo genérico
quadro
Ideia básica
Descrição do algoritmo
seletividade gananciosa
definição
Corte (S,V-S)
Corte Cruzado
Cumprir com o conjunto de corte de borda A
Do outro lado da borda clara do corte
Teorema 1
Kruskal: Encontre arestas claras em Corte que seguem A [contém uma série de componentes conectados] e pontos não incluídos em A
Algoritmo de Prim
análise
Tempo mínimo de conclusão 5.5 Programação mínima do Mackspan
definição de problema
algoritmo de aproximação
Análise de desempenho
capítulo 6 análise de amortização
Fundamental
Ideia básica
Operações de pilha: ignore estruturas de dados e relacionamentos entre operações
Método de análise amortizado
Objetivo: Analisar o limite superior do custo de n operações em uma determinada estrutura de dados
O custo de cada operação é analisado igualmente através do custo total [limite superior]
O que é determinado é um limite superior, não uma probabilidade
método de agregação
média
métodos de contabilidade
Pré-pagamento [associado ao objeto de dados, o crédito do objeto de dados]
método de energia potencial
Potencial acumulado [associado a toda a estrutura de dados, energia]
método de agregação
analisar
分析过程中要精细化,注意每个操作之间的关联
用数据对象上小的操作代价来来预付之后的大的操作代价
Operações relacionadas
比如multipop的多次是因为前面多次的push,所以需要push操作为他负责
Princípio: Operações diferentes recebem o mesmo custo
A soma de todas as operações, em cada elemento de n
contador binário
Um total de bits lgn
métodos de contabilidade
princípio
Pré-pagamento [associado ao objeto de dados, o crédito do objeto de dados]
Princípio de seleção: O crédito armazenado na estrutura de dados não é negativo
Exemplo
analisar
分析过程中要精细化,注意每个操作之间的关联
用数据对象上小的操作代价来来预付之后的大的操作代价
Operações relacionadas
比如multipop的多次是因为前面多次的push,所以需要push操作为他负责
Operações de pilha
empurrar, pop, multipop
Cada objeto será ejetado no máximo uma vez após ficar em pé
Prova de limite superior:
contador binário
Definir como 0 Definir como 1
Operação principal: definida como 0
método de energia potencial
Há também a prova final sobre o limite superior.
可以使用放缩
实际的代价小于一个值
或者平摊大于
或者都有
princípio
exemplo
pilha
Definição de energia potencial
Adição binária
foco
势能定义
É melhor definir o número total de objetos aumentados por pequenas operações
比如说是栈:pop,占中总的对象数目
二进制加法:1的个数
使得总势能大于等于0
就是在每一次操作之后势能都是大于0的
大操作小操作
foco
分清楚谁是大操作,谁是小操作
用小的操作代价来来预付之后的大的操作代价
Análise de amortização de tabela dinâmica
conceito
Operações suportadas por tabelas dinâmicas
Estrutura de dados: use um array para implementar uma tabela dinâmica
Fator de carga: não menos que uma constante
expressar
tábua]
num[T]
tamanho[T]
expansão e contração
Expansão dinâmica de tabela
Análise de agregação
Condições de análise e análise fina
métodos de contabilidade
Custo real da operação de inserção
poupanças próprias para expansão
Expansão: Grande Operação
Inserção: pequenas operações
Dê a ele o primeiro objeto correspondente sem depósito.
Cobrar pela inserção
Análise de energia potencial
Redução de tabelas dinâmicas
O tempo necessário para armazenar em buffer a tabela
método de energia potencial
Quando a operação principal estiver concluída, a energia potencial é de pelo menos 1
À medida que a chave primária para pequenas operações se aproxima do momento em que grandes operações são necessárias, a energia potencial aumenta gradualmente.
Obtenha força para grandes operações
Quando o ponto-chave for alcançado, será a energia potencial necessária para grandes operações.
relação
之间有一个二倍
1/4的关系
num在大操作之后是size的一半
Grandes operações são operações de contração e expansão 3
而前面的小操作改变的都是num
势能在小操作的过程中一定是增加的需要注意
O total deve aumentar durante a pequena operação! ! ! ! ! ! ! !
Nota: Não importa qual algoritmo seja usado para encontrar a solução ótima, deve ficar claro qual é a solução ótima.