Galería de mapas mentales Análisis y diseño de algoritmos.
Un mapa mental sobre el análisis y diseño de algoritmos. Un algoritmo es un cálculo que satisface las condiciones de terminación, certeza, viabilidad, entrada y salida. No importa qué algoritmo se utilice para encontrar la solución óptima, debe quedar claro cuál es la solución óptima.
Editado a las 2023-10-28 17:00:08,This is a mind map about bacteria, and its main contents include: overview, morphology, types, structure, reproduction, distribution, application, and expansion. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about plant asexual reproduction, and its main contents include: concept, spore reproduction, vegetative reproduction, tissue culture, and buds. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about the reproductive development of animals, and its main contents include: insects, frogs, birds, sexual reproduction, and asexual reproduction. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about bacteria, and its main contents include: overview, morphology, types, structure, reproduction, distribution, application, and expansion. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about plant asexual reproduction, and its main contents include: concept, spore reproduction, vegetative reproduction, tissue culture, and buds. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about the reproductive development of animals, and its main contents include: insects, frogs, birds, sexual reproduction, and asexual reproduction. The summary is comprehensive and meticulous, suitable as review materials.
Análisis y diseño de algoritmos.
Capítulo 1 Introducción
Un algoritmo es un cálculo que satisface las siguientes condiciones
Propósito: resolver problemas
Terminabilidad
certeza
factibilidad
ingresar
producción
calcular
给定计算模型机械的执行的规则或计算步骤序列被称为计算
一个计算机程序是一个计算
El cálculo no es un algoritmo.
pregunta
Define la relación entre entrada y salida.
Algorithm Autumn Festival es un problema completo, no una simple instancia de problema
Algoritmo de análisis
Corrección del algoritmo: termina para todas las entradas y produce salidas correctas
Algoritmo incorrecto: no termina o produce una salida incorrecta para una entrada
Corrección de algoritmos aproximados/estocásticos: termina para todas las entradas, produce soluciones aproximadamente correctas o una pequeña cantidad de soluciones incorrectas
Razones para la prueba de corrección.
Los programas de depuración no pueden probar que no hay errores.
método
Terminar en todas las entradas
Cada entrada tiene la salida correcta.
complejidad del algoritmo
Propósito: Analizar la cantidad de recursos requeridos por el algoritmo para diferentes entradas.
Complejidad temporal, complejidad espacial, número de entradas y salidas, etc.
función de tamaño de entrada
Tamaño de entrada: tamaño (α)
Complejidad del tiempo de instancia: la cantidad de operaciones que son más necesarias para producir un resultado para una entrada específica
Complejidad temporal de una entrada específica
Complejidad del espacio de instancia
entrada específica
空间复杂性,对输入产生结果所需要的存储空间大小
是输入大小的函数S(n)
Peor complejidad del tiempo
complejidad mínima del algoritmo
complejidad promedio del algoritmo
Probabilidad de ocurrencia multiplicada por la suma de todas las posibilidades de complejidad.
Modelo de análisis algorítmico
modelo de acceso aleatorio
Modelo multiprocesador paralelo
Análisis de complejidad del tiempo.
No es que un programa tarde mucho tiempo en resolver un problema, sino que el tiempo aumenta muy rápidamente cuando la escala del problema se expande.
Complejidad temporal de nivel constante
Análisis de complejidad temporal del algoritmo de inserción directa.
Al leer el k-ésimo número, compárelo positivamente con el número anterior,
Análisis de corrección del algoritmo.
método invariante de bucle
P invariante de bucle: los datos y las estructuras de datos operados tienen propiedades clave
Por ejemplo, en un algoritmo de clasificación, la propiedad de que el orden de los números no cambia se puede utilizar como invariante de bucle.
inicialización del bucle
Pasos del ciclo
bucle terminado
algoritmo de diseño
divide y conquistaras
programación dinámica
algoritmo codicioso
algoritmo de búsqueda de árbol
División de problemas
máquina de Turing
P del problema resuelto por una máquina de Turing determinista en tiempo polinómico
Problemas NP solucionables por una máquina de Turing incierta en tiempo polinomial
Las máquinas de Turing inciertas ya no pueden ser No-NP
subtema
Capítulo 2 Conceptos básicos de matemáticas
2.1 Calcular el orden de la función de complejidad
El conjunto de funciones del mismo orden f(x)=θ(g(x)) donde el conjunto de funciones es: θ(g(x)) de límite estrecho
El límite superior de la función de orden inferior f(n)=0(g(n)) puede ser un límite superior de orden inferior que
Función de orden superior f(n)=Ω(g(n)) mejor caso de límite inferior
No puede explicar la relación de tamaño, sólo puede explicar la relación de clase; una función de orden superior no es necesariamente mayor que su límite inferior, especialmente una función de orden superior [no una función estrictamente de orden superior];
θ(g(n))⊆0(g(n)) f(n)=O(n^k ) Límite polinómico
Límite superior de función estrictamente de orden inferior pero no límite estricto f(n)=o(g(n))
f(n)=o(g(n))⇒(lim)┬(n→∞) f(n)/g(n) =0
Función estrictamente de orden superior límite inferior pero no límite estricto f(n)=ω(g(n))
f(n)=ω(g(n)) si y sólo si g(n)=o(f(n))
f(n)=ω(g(n))⇒(lim)┬(n→∞) f(n)/g(n) =∞
propiedades del orden de una función
La transitividad incluye los cinco anteriores.
La reflexividad incluye los tres primeros.
Simetría estrecha
antisimetría
f(n)=0(g(n)) si y sólo si g(n)=Ω(f(n))
f(n)=o(g(n)) si y sólo si g(n)=ω(f(n))
El significado del orden de las funciones en fórmulas matemáticas.
2.2 Estimación y límites de la suma
suma lineal
serie
Límites para la suma directa
subtema
subtema
2.3 Las ecuaciones recursivas se utilizan a sí mismas para definirse a sí mismas.
Tres métodos principales para resolver ecuaciones recursivas
Sustitución Adivina Inducción Matemática
Iterar y convertir en una suma, estimar la suma
Teorema maestro
subtema
Capítulo 3 Algoritmos de clasificación y divide y vencerás
3.1 Principio de divide y vencerás
fase de diseño
Puntos: los subproblemas pueden no ser los mismos. Dividir el tiempo D (n)
Gobernanza: resolver cada subproblema enT(n)
Suma: combinar soluciones a los subproblemas C(n)
Complejidad del tiempo total: T(n) = a(T(n/b)) D(n) C(n)
etapa de análisis
Construir ecuaciones recursivas
Resolver
3.2 Algoritmo de clasificación basado en divide y vencerás
El trabajo principal de la clasificación rápida es realizar el algoritmo de partición y es necesario conocer las condiciones de contorno.
Límite inferior para el problema de clasificación.
3.3 Estadísticas de mediana y orden
principio de reducción
Por ejemplo, buscar por la mitad
Seleccionar pregunta
3.4 Encuentra el par de puntos más cercano
Métodos de división y fusión para reducir f(n)
Algoritmo espacial unidimensional
ordenar primero
algoritmo divide y vencerás
punto
regla
y
Algoritmo espacial bidimensional
3.5 Ordenar en tiempo lineal
Contando
Utilice tres matrices A, B y C
La idea general: matriz de entrada A, matriz de salida: B, matriz de conteo: C [la base de la matriz es el rango de valores de A [0-k [valor máximo en A]]] (requisito: A debe ser una matriz de números enteros)
[Nota] Utilice la estructura de cubo cuando el consumo de espacio sea grande.
Problemas
A[i] es un número entero
Y el rango de valores de la matriz de entrada 0-k debe ser menor; de lo contrario, la eficiencia se reducirá considerablemente.
Durante el proceso de clasificación, se requiere un espacio de conteo de longitud máxima y un espacio de salida auxiliar de longitud len. Este espacio es relativamente grande y la complejidad del espacio es O (len max).
Complejidad del tiempo: O (n k)
Base
Características
estable
Ordenar de menor a mayor
algoritmo
Requisitos de entrada: matriz de números enteros con el mismo número de dígitos d
Complejidad del tiempo: O (d (n k [rango de valores de entrada, el impacto es relativamente pequeño y puede ignorarse]))
Problema: d es demasiado grande
Ampliado utilizando un algoritmo de divide y vencerás
Divida la matriz con b dígitos en b/r y tome todos los datos con r dígitos hacia arriba. El rango de valores de cada dato es 0-2^r-1.
Ordenar usando el conteo
El valor óptimo de r: lgn redondeado hacia abajo
Nota: Se puede utilizar cuando r no es grande.
Clasificación de cubos
Un supuesto de clasificación de cubos: la entrada se distribuye de manera independiente y uniforme entre 0-1 [condiciones que se espera que alcancen la linealidad]
Idea de clasificación de cubos
Divida 0-1 en cubos de tamaño uniforme
La entrada se clasifica en depósitos
Ordenar datos en depósitos
Enumere todos los datos ordenados en cada depósito
Complejidad del tiempo: límite estricto n
Algunos criterios para juzgar algoritmos.
stable:按照输入顺序合理的排序输出
in-place:没有另外开辟空间
3.6 Encuentra el casco convexo
definición del problema
Entrada: una colección de puntos en el plano, salida de casco convexo
naturaleza
Para un polígono convexo P, los lados que conectan dos puntos cualesquiera en P están todos dentro de P.
Algoritmo de escaneo de Graham
En sentido contrario a las agujas del reloj, ordenados por tamaño de ángulo polar
Girar a la izquierda
Aviso
Los valores máximo y mínimo de xy están todos en el casco convexo. Primero, determine uno de los puntos como punto de partida, dibuje una línea horizontal y atraviese los puntos anteriores a partir de esta línea horizontal [se selecciona el punto más pequeño].
pseudocódigo
Encuentre el punto en Q con el valor de coordenada y más pequeño
Ordena los puntos restantes en Q en sentido antihorario
Empujar hacia la pila S
Si la tarifa de composición se mueve hacia la izquierda, saque el elemento superior de la pila.
Complejidad del tiempo: f(n)=0(n logn)
Análisis de corrección: invariante de bucle [Antes de procesar un determinado nodo, la pila S almacena CH (Qi-1) de abajo hacia arriba]
algoritmo divide y vencerás
Condiciones de borde
punto
Dividido en Ql, Qr
regla
y
Simplemente ejecute Graham-Scan en la secuencia fusionada
Cómo fusionar secuencias
3.7 FFT por transformada rápida de Fourier
3.8 Multiplicación de enteros
Optimice la etapa de división para reducir un
Definición del problema: Entrada: enteros binarios de n bits X e Y; salida: el producto de X e Y;
Capítulo 4 Algoritmo de programación dinámica.
Resumen del algoritmo
Hay una sensación de agotamiento.
就是罩子问题和服问题之间的关系之后再使用穷举的方法最后选定最小值作为最优解
注意:覆盖所有情况
4.1 Elementos de programación dinámica
Motivo: si los subproblemas no son independientes entre sí, el método de puntuación calculará repetidamente los subproblemas comunes, lo cual es muy ineficiente.
Propósito: Problema de optimización: el problema de optimización es dar una función de costo, en Buscar en el espacio de solución del problema la solución óptima con coste mínimo o máximo.
Los problemas de programación dinámica son un enfoque común para resolver problemas de optimización.
Definición: El problema original se divide en una serie de subproblemas [número de niveles polinomiales]
Resolver subproblemas de abajo hacia arriba
Algoritmo de arriba hacia abajo de divide y vencerás
Ámbito de aplicación: un tipo de problema que se puede resolver de manera similar, donde los subproblemas se pueden reutilizar.
Condiciones de Uso
Subestructura optimizadora: Cuando la solución óptima de un problema contiene la solución óptima de un subproblema, decimos que este Un problema tiene una subestructura de optimización.
Subproblemas superpuestos: durante el proceso de solución del problema, las soluciones a muchos subproblemas se utilizarán varias veces.
Cuando no haya superposición, simplemente use dividir y conquistar; de lo contrario, necesitará crear espacio de almacenamiento adicional.
Pasos de diseño de algoritmos.
– Analizar la estructura de la solución óptima [qué subproblemas se componen de soluciones óptimas, simplemente vaya a las condiciones de contorno] – Definir recursivamente el coste de la solución óptima. – Dividir los subproblemas de forma recursiva hasta que sean indivisibles. – Resolver cada subproblema de abajo hacia arriba. – Calcule el costo de la solución de optimización y guárdelo. – Obtener información para construir la solución óptima. – Construir una solución óptima basándose en la información utilizada para construir la solución óptima.
4.2 Multiplicación de cadenas de matrices
Definición del problema: ingrese la matriz p_i-1*p y genere el método para calcular el costo mínimo;
Multiplicación de matrices
Satisfacer la ley asociativa, diferentes órdenes de cálculo tendrán diferentes costos
Utilice métodos de programación dinámica.
Tener subproblemas superpuestos
Definir recursivamente el costo de la solución óptima.
subtema
Solución ampliada: puede utilizar el método de memorización y la partitura se puede convertir en programación dinámica.
4.3 Subsecuencia común más larga
definición del problema
resolución de problemas
⚫ Análisis estructural de solución optimizada. ⚫ Establecer una ecuación recursiva de costos para una solución óptima ⚫ Dividir subproblemas de forma recursiva ⚫ Calcule el costo de la solución optimizada de abajo hacia arriba y registre la información de construcción de la solución optimizada ⚫Solución de optimización de construcción
Análisis de subestructura optimizado
prefijo i-ésimo: Xi
Optimizar la subestructura
Es conveniente utilizar este método para soluciones recursivas.
Tres pruebas directas
Superposición de subproblemas, cantidad de problemas que deben procesarse (como máximo mn subproblemas)
Lo mejor es cubrir todas las situaciones.
Para facilitar el cálculo de las condiciones de contorno.
Si las condiciones de contorno no son cómodas de calcular, tomará como máximo O (m) u O (n) tiempo calcular los límites.
División de problemas: utilice las condiciones definidas anteriormente, es decir, las condiciones definidas anteriormente para la recursividad
Calcule el costo de la solución de optimización de abajo hacia arriba y luego resuelva hacia abajo según la solución anterior.
Finalmente resuelve de abajo hacia arriba y resuelve según el símbolo de la solución óptima marcado con B. La solución obtenida es la inversión de la solución final.
Pseudocódigo: La solución se encuentra por filas y las flechas se utilizan para buscar de abajo hacia arriba.
Complejidad del tiempo: O(mn) [número de subproblemas], donde el tiempo para construir la solución óptima es O(m n)
Complejidad espacial O (mn)
Estrategia de optimización del espacio: puede diseñar C en solo dos filas y m columnas o algo así
4.4 0/1 problema de mochila
definición del problema
Desarrollar una estrategia de embalaje que maximice el valor de los artículos en la bolsa sin tener sobrepeso.
Análisis preliminar: Hay dos opciones para cada artículo, instalar o no instalar, el costo de cálculo del plan de instalación y remoción es n [después de calcular la taza de té/valor, use tiempo constante para comparar y obtener el valor máximo]
El costo total del cálculo es O (n2^n)
np problema completo
resolución de problemas
Análisis estructural de solución optimizada
Superposición de subproblemas: cuando los pesos de los elementos son iguales y ambos son 1, habrá una gran cantidad de subproblemas superpuestos.
No apto para el algoritmo divide y vencerás [puedes intentar utilizar la memorización]
definición del problema
Establecer una ecuación recursiva que optimice el costo de la solución.
Definir la matriz de costos m;
m[yo,j]
i:起始的、计算子问题优化解的代价的矩阵时间
j:指的是包的容量
Resumen de ecuaciones recursivas
Subproblema de partición recursiva
Lo que necesitas saber para calcular m[i,j]
Calcule el costo de la solución optimizada de abajo hacia arriba y registre la información de construcción de la solución optimizada
Solución de optimización de construcción
Cálculo del coste total: algoritmo pseudopolinomial
Hay cuatro situaciones en total.
4.5 Árbol de búsqueda binaria
definición del problema
Definición del árbol de búsqueda binaria
Afecta el costo general de consulta del árbol de búsqueda: la forma del árbol y la probabilidad de consulta del nodo
valor esperado del árbol
Los nodos impares son nodos hoja.
Los nodos pares son nodos internos.
Valor de costo esperado del árbol E (T)
El valor del costo está relacionado con la profundidad del árbol y el incremento del costo.
El nodo raíz debe ser un número par.
resolución de problemas
Análisis estructural de solución optimizada
Subestructura y pruebas optimizadas
El valor de contribución del subárbol: la posición del subárbol es fija, su probabilidad es fija y su diferencia de contribución es la estrella solitaria.
Incremento de contribución: probabilidad * diferencia de profundidad
Utilice subestructuras de optimización para construir soluciones óptimas.
superposición de subproblemas
Establecer una ecuación recursiva que optimice el costo de la solución.
Establecer una ecuación recursiva del costo de búsqueda para una solución óptima
Condiciones de contorno y otras consideraciones
todo cubierto
Fórmula: Probabilidad (incremento de costo) [subárbol izquierdo subárbol derecho]
W: Incremento; E: Costo esperado; P: Probabilidad
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 partición recursiva
Calcule el costo de la solución optimizada de abajo hacia arriba y registre la información de construcción de la solución optimizada
Solución de optimización de construcción
4.6 Distancia mínima de edición
definición
Convertir entre dos cadenas
Solo contiene tres operaciones: insertar caracteres, eliminar caracteres y reemplazar caracteres [cada una cuenta como una operación básica]
La alineación de los personajes afecta la eficiencia
Resolver
Análisis estructural de solución optimizada
Propiedades de la distancia mínima de edición
No superpuesto: cualquier personaje solo puede realizar como máximo una operación
independencia del orden
simetría
cadena extendida vacía
superposición de subproblemas
Establecer una ecuación recursiva que optimice el costo de la solución.
cuatro situaciones
Condiciones de borde
Primero, debe considerar las condiciones de contorno como las condiciones requeridas para el cálculo inicial.
Algoritmos y complejidad algorítmica
Complejidad del tiempo O (mn)
Complejidad espacial: O (mn)
Optimizar la estructura del espacio.
Subproblema de partición recursiva
Calcule el costo de la solución optimizada de abajo hacia arriba y registre la información de construcción de la solución optimizada
Solución de optimización de construcción
Problema de discriminación de distancia de edición mínima
solicitud
字符串的相似度查询
definición
de entrada y salida
analizar
La distancia mínima de edición no es menor que el valor absoluto de la longitud de los dos
Complejidad
Dos situaciones que no requieren cálculo
La diferencia de longitud es mayor que el umbral de decisión de entrada.
Se requiere que el cálculo utilice el valor del resultado anterior mayor que 2
complejidad espacial
O(min{m,n}t): se puede optimizar
Antiguo Testamento)
complejidad del tiempo
O(mín{m,n}t)
Cada fila/columna puede calcular como máximo 2*t 1
capítulo 5 algoritmo codicioso
La diferencia con los dos algoritmos anteriores.
子主题
贪心算法:原问题进行选择获取剩余子问题直至子问题为空
delicado
前面两种:原问题划分为子问题,繁重,自底向上
5.1 Principios básicos
concepto basico
Algoritmos aproximados, algoritmos heurísticos.
Solución óptima local, la mejor opción en este momento
ejemplo
problema de cambio de moneda
Problema de programación regional
usar
Resolver problemas de optimización
Idea básica
Un algoritmo para resolver un problema de optimización consta de una serie de pasos, cada paso tiene un conjunto de opciones para tomar la mejor decisión en ese momento.
Esperamos lograr la solución óptima global.
Pruébelo paso a paso, luego sobrecargue y pruebe otras cosas para encontrar el algoritmo codicioso
Acercarse gradualmente o incluso llegar finalmente a la solución óptima
Ejemplo
Condiciones para generar soluciones óptimas.
Optimizar la subestructura
selectivo codicioso
Inducción
Resumir los pasos del algoritmo o resumir el problema.
Cada paso es mejor que otros algoritmos y produce una solución óptima.
La solución para cada paso incluido no necesariamente tiene que ser una buena solución para el paso incluido.
argumento conmutativo
Más conveniente
Bajo la premisa de optimidad sin cambios, reemplace gradualmente desde una solución óptima para finalmente obtener la solución del algoritmo codicioso.
Comparar
pasos de diseño
pasos de diseño
algoritmo de selección codicioso
subproblema restante
necesito pruebas
对于贪心选择来说,所求解的问题具有优化子结构
对于贪心选择算法莱说,具有Greedy选择性
5.2 Problemas de selección de actividades
definición del problema
resolución de problemas
Diseño de un método de selección codicioso
Análisis estructural de solución optimizada
Prueba selectiva codiciosa
Lema 1
Demostrando selectividad codiciosa
[Nota] Es necesario aclarar cuáles son las condiciones para la solución óptima En este problema, la solución óptima es la actividad más consistente. Depende de la cantidad y las características de compatibilidad.
Lema 2: optimizar la subestructura
prueba por contradicción
Lema 3
diseño de algoritmos
Análisis de complejidad del algoritmo.
5.3 Codificación Huffman
definición del problema
codificación de caracteres binarios
codificación de longitud fija
codificación de longitud variable
codificación de prefijo
definición
árbol de codificación
El costo de codificar árboles: el costo es la suma esperada de profundidad
C: juego de caracteres
B: suma de costos
F: frecuencia
Pensamientos codiciosos
Seleccione cíclicamente los dos nodos con la frecuencia más baja para generar un subárbol hasta que se forme un árbol
resolución de problemas
Diseño de un método de selección codicioso
Método de elección
La estructura del subproblema restante.
Análisis estructural de solución optimizada
Lema 1: Prueba de subestructura optimizada
Lema 2: La posición más profunda, los dos caracteres de la carta de nombramiento mínima, la misma longitud máxima
selectividad codiciosa
Optimice el árbol de prefijos para que contenga la longitud máxima de dos nodos a la misma profundidad
Prueba selectiva codiciosa
diseño de algoritmos
Análisis de complejidad del algoritmo.
5.4 Árbol de expansión mínimo
definición del problema
algoritmo de Kruskal
diseño
Optimizar la estructura de la solución
subproblema restante
operación de contracción
operación de expansión
Prueba de subestructura optimizada
selectivo codicioso
Complejidad algorítmica
corrección del algoritmo
algoritmo de primi
diseño
Optimizar la estructura de la solución
selectivo codicioso
Complejidad algorítmica
resumen
Algoritmo genérico
marco
Idea básica
Descripción del algoritmo
selectividad codiciosa
definición
Corte(S,V-S)
Corte transversal
Cumplir con el corte del juego de bordes A.
A lo largo del borde claro del corte
Teorema 1
Kruskal: encuentre bordes claros a través del corte que siguen a A [contiene una serie de componentes conectados] y puntos no incluidos en A
algoritmo de primi
revisar
Tiempo mínimo de finalización 5.5 Programación mínima de Mackspan
definición del problema
algoritmo de aproximación
Análisis de rendimiento
capítulo 6 análisis de amortización
Fundamental
Idea básica
Operaciones de pila: ignore las estructuras de datos y las relaciones entre operaciones
Método de análisis amortizado
Propósito: Analizar el límite superior del costo de n operaciones en una estructura de datos determinada.
El costo de cada operación se analiza igualmente a través del costo total [límite superior]
Lo que se determina es un límite superior, no una probabilidad.
método de agregación
promedio
métodos contables
Pago anticipado [asociado al objeto de datos, el crédito del objeto de datos]
método de energía potencial
Potencial acumulado [asociado a toda la estructura de datos, energía]
método de agregación
analizar
分析过程中要精细化,注意每个操作之间的关联
用数据对象上小的操作代价来来预付之后的大的操作代价
Operaciones relacionadas
比如multipop的多次是因为前面多次的push,所以需要push操作为他负责
Principio: A diferentes operaciones se les asigna el mismo costo.
La suma de todas las operaciones, en cada elemento de n.
contador binario
Un total de bits lgn
métodos contables
principio
Pago anticipado [asociado al objeto de datos, el crédito del objeto de datos]
Principio de selección: el crédito almacenado en la estructura de datos no es negativo
Ejemplo
analizar
分析过程中要精细化,注意每个操作之间的关联
用数据对象上小的操作代价来来预付之后的大的操作代价
Operaciones relacionadas
比如multipop的多次是因为前面多次的push,所以需要push操作为他负责
Operaciones de pila
empujar, hacer estallar, multipop
Cada objeto será expulsado como máximo una vez después de pararse.
Prueba sobre el límite superior:
contador binario
Conjunto 0 Conjunto 1
Operación mayor: establecida en 0
método de energía potencial
También está la prueba final sobre el límite superior.
可以使用放缩
实际的代价小于一个值
或者平摊大于
或者都有
principio
ejemplo
pila
Definición de energía potencial
Suma binaria
enfocar
势能定义
Lo mejor es definir el número total de objetos aumentados por pequeñas operaciones.
比如说是栈:pop,占中总的对象数目
二进制加法:1的个数
使得总势能大于等于0
就是在每一次操作之后势能都是大于0的
大操作小操作
enfocar
分清楚谁是大操作,谁是小操作
用小的操作代价来来预付之后的大的操作代价
Análisis de amortización de tabla dinámica.
concepto
Operaciones soportadas por tablas dinámicas
Estructura de datos: utilice una matriz para implementar una tabla dinámica
Factor de carga: no menos que una constante
expresar
tableta]
número[T]
tamaño[T]
expansión y contracción
Expansión dinámica de la tabla
Análisis de agregación
Condiciones de análisis y análisis fino.
métodos contables
Costo real de operación de inserción
ahorros propios para expansión
Expansión: grandes operaciones
Insertar: operaciones pequeñas
Entrégale el primer objeto correspondiente sin depósito.
Cargo por inserción
Análisis de energía potencial.
Reducción de tablas dinámicas.
El tiempo necesario para amortiguar la tabla.
método de energía potencial
Cuando se completa la operación principal, la energía potencial es al menos 1
A medida que la clave principal para operaciones pequeñas se acerca al momento en que se requieren operaciones grandes, la energía potencial aumenta gradualmente.
Sacar fuerzas para grandes operaciones
Cuando se alcance el punto clave, será la energía potencial necesaria para grandes operaciones.
relación
之间有一个二倍
1/4的关系
num在大操作之后是size的一半
Las grandes operaciones son operaciones de contracción y expansión 3
而前面的小操作改变的都是num
势能在小操作的过程中一定是增加的需要注意
¡El total debe aumentar durante la pequeña operación! ! ! ! ! ! ! !
Nota: No importa qué algoritmo se utilice para encontrar la solución óptima, debe quedar claro cuál es la solución óptima.