“Conocimiento software>Quicktime

¿Cuáles son los factores clave que influyen en el rendimiento de los algoritmos en el tiempo de ejecución de contexto prims?

2014/9/21
El rendimiento del algoritmo de Prim, específicamente su tiempo de ejecución, está influenciado por varios factores clave:

1. Estructura de datos para representar el gráfico:

* Matriz de adyacencia:

* ventajas: Fácil de implementar.

* Desventajas: Requiere `o (v^2)` espacio (donde v es el número de vértices). Encontrar el borde de peso mínimo que conecta el árbol con el gráfico restante lleva `o (v)` tiempo en cada iteración del bucle principal.

* tiempo de ejecución general con matriz de adyacencia: `O (V^2)`

* Esto suele ser mejor cuando se trata de gráficos densos (gráficos con muchos bordes, cerca de V^2).

* Lista de adyacencia:

* ventajas: Más eficiente en el espacio para gráficos dispersos (gráficos con relativamente pocos bordes).

* Desventajas: Encontrar el borde de peso mínimo que conecta el árbol al gráfico restante requiere buscar las listas. Esto se puede mejorar con una cola prioritaria.

* Las diferentes implementaciones con colas prioritarias conducen a diferentes tiempos de ejecución (ver más abajo).

2. Tipo de cola de prioridad utilizada:

* Sin cola prioritaria (búsqueda lineal):

* Como se mencionó anteriormente, la búsqueda de las listas de adyacencia linealmente para el borde de peso mínimo es `o (v)` en cada iteración. Dado que el bucle principal itera los tiempos V, la complejidad general es `O (V^2 + E)`, donde E es el número de bordes. Para un gráfico conectado, e> =v-1, por lo que esto se simplifica a `o (v^2)`.

* montón binario (cola prioritaria):

* ventajas: Estándar y relativamente simple de implementar.

* Operaciones: `DIREVED-KEY` y` Extract-min` toman `o (log v)` tiempo.

* tiempo de ejecución general con montón binario: `O (E log v)`

* Esta es generalmente una buena opción para muchos gráficos.

* fibonacci Heap (cola prioritaria):

* ventajas: Proporciona operaciones amortizadas `o (1)` para `disminución de la tecla y` o (log v) `para` extracto-min`.

* Desventajas: Más complejo de implementar que un montón binario. Los factores constantes en la sobrecarga a veces pueden superar la ventaja teórica en la práctica.

* tiempo de ejecución general con el montón de fibonacci: `O (E + V log V)`

* Teóricamente, el más rápido para gráficos suficientemente escasos, pero el rendimiento práctico puede ser cuestionable debido a la complejidad de la implementación.

3. Densidad de gráficos (número de bordes):

* gráficos dispersos (e < Los montones de fibonacci o los montones binarios con listas de adyacencia generalmente funcionan mejor. `O (E log v)` (montón binario) o `o (e + v log v)` (montón fibonacci) se vuelve más ventajoso.

* gráficos densos (e está cerca de V^2): La implementación `O (V^2)` utilizando una matriz de adyacencia a veces puede ser más rápida que los enfoques basados ​​en el montón porque los factores constantes asociados con las operaciones de almacenamiento se vuelven significativos.

4. Estructura de gráficos específica:

* La presencia de pesos de borde muy grandes o muy pequeños puede influir en el comportamiento de la cola prioritaria. Si los pesos son enteros dentro de un rango relativamente pequeño, las implementaciones de colas de prioridad especializadas (por ejemplo, colas de cubos, montones de radix) pueden ofrecer un mejor rendimiento.

5. Detalles de implementación y optimizaciones del compilador:

* Los detalles de bajo nivel, como la implementación específica de la cola de prioridad (por ejemplo, cómo están vinculados los nodos, cómo se realizan las comparaciones), pueden tener un impacto medible. Las buenas prácticas de codificación y las optimizaciones del compilador pueden mejorar el rendimiento.

6. Hardware:

* El hardware subyacente (velocidad de la CPU, ancho de banda de memoria, tamaño de caché) siempre desempeñará un papel, aunque generalmente es menos importante que la elección del algoritmo y las estructuras de datos.

Resumen de complejidades del tiempo:

| Implementación | Complejidad del tiempo |

| ------------------------- | ----------------- |

| Matriz de adyacencia | O (v^2) |

| Lista de adyacencia + Búsqueda lineal | O (v^2) |

| Lista de adyacencia + montón binario | O (E log v) |

| Lista de adyacencia + montón de fibonacci | O (E + V log v) |

En la práctica:

* Para la mayoría de los gráficos prácticos, el uso de una lista de adyacencia con un montón binario es un buen equilibrio de rendimiento y facilidad de implementación.

* Si tiene un gráfico muy escaso y necesita el mejor rendimiento absoluto, considere un montón Fibonacci, pero prepárese para la mayor complejidad de implementación y la posibilidad de que no sea más rápido en la práctica.

* Para gráficos densos, la implementación de la matriz de adyacencia simple puede ser sorprendentemente eficiente.

* Siempre perfile su código con datos realistas para determinar la mejor implementación para sus necesidades específicas. La complejidad teórica es una guía, pero el rendimiento del mundo real puede variar.

Quicktime
¿Qué le permitirá insertar una tabla rápida?
Cómo utilizar QuickTime con archivos MOV
¿Cómo se escribe un script de shell que muestra la hora cada 15 segundos?
¿Cuál es la peor complejidad de tiempo de tiempo en el peor de los casos?
Cómo ver una película en QuickTime Multicast
Cómo editar un archivo Quicktime MOV en una PC
Cómo agregar una imagen a una película QuickTime
Problemas con Quicktime Desinstalar
Conocimiento de la computadora © http://www.ordenador.online