C ++ (Estructuras de Datos y Algoritmos) 76: --- algoritmo voraz (algoritmo codicioso)

  • También conocido como el algoritmo codicioso algoritmo codicioso

En primer lugar, el problema de optimización

  • En este artículo se describe el algoritmo y los ejemplos están detrás del "problema de optimización" . Cada uno contiene un conjunto de problemas de optimización "condiciones restringidas" y una "función de optimización" . Conoce las limitaciones del programa de resolución de problemas llamada "solución factible" . El mejor valor de la función de optimización posible lograr una solución factible se llama "solución óptima"

En segundo lugar, la idea de algoritmo voraz

  • En el algoritmo voraz, necesitamos construir gradualmente una solución óptima . Cada paso, estamos ciertos criterios para tomar una decisión óptima. Cada paso en la toma de decisiones, y no se pueden cambiar en un paso posterior. las decisiones se basan estándar se llama directrices codicia

En tercer lugar, la práctica de buscar el cambio

Descripción del problema

  • Los clientes que utilizan dólares para comprar vendedor de caramelos con la esperanza de encontrar a un niño a cambiar con el menor número de monedas. Supongamos que hay un valor nominal de 25 centavos, 10 centavos, 5 centavos y monedas de 1 centavo, pero el número no está limitado
  • Cada vez que seleccione un dependiente de la tienda de la moneda, hacer mirar para el cambio. La elección se basa en criterios de codicia: en no más que el número total de monedas están buscando, cada vez que la moneda más grande posible entrevista de selección , hasta que el número total de monedas que componen el número total de equal're en busca de cambios
  • Descripción del problema: si se asume que los clientes están buscando 67 centavos

algoritmo voraz para resolver el paso

  • Supongamos que a los clientes que buscan 67 centavos:
    • Los dos primeros pasos eligieron dos $ 25 de monedas (tercer paso no se puede seleccionar a $ 25, de lo contrario el total a más de 67 centavos)
    • Paso selección moneda de 10 céntimos
    • La cuarta etapa de selección de monedas de 5 centavos
    • El paso final es de dos monedas de 1 centavo
  • algoritmo voraz nos da una sensación: este raspar las monedas sueltas, o al menos cerca del número mínimo de monedas

En cuarto lugar, la aplicación práctica de la programación de la máquina

Análisis de aplicaciones

  • Hay un número n de tareas, la máquina no se limitan a, procesamiento de tareas en la máquina. hora de inicio de cada tarea es Si, el tiempo de finalización de la tarea para Fi, Si <Fi. [Si, Fi] es la tarea i período de procesamiento
  • La duplicación de tareas: dos tareas superpuestas i y j, si y sólo si el período de procesamiento solapamiento dos tareas. Por ejemplo período [1, 4] con un período de [2,4] solapamiento, y [1,4] y el tiempo [4,7] no solapamiento
  • Una tarea esquema de asignación es factible: se refiere a dos períodos sin tareas asignadas a la misma máquina la superposición, es decir, cada máquina a lo sumo sólo una tarea en cualquier proceso en tiempo
  • asignación óptima: se refiere a la utilización de la máquina con el plan de distribución viable mínimo

La descripción real del problema

  • Supongamos que n = 7 tareas, numeradas de A a G, el tiempo de procesamiento del mismo como se muestra a continuación:

  • Descripción del problema: la máquina no está limitada, se debe asignar a esta tarea 7 en la máquina en funcionamiento, y el número total de máquinas necesarias es mínima utilizada (tiempo no se requiere)

algoritmo voraz para resolver el paso

  • Codicia directrices pasos: de acuerdo con la hora de inicio de la tarea, si los "viejos" máquinas están disponibles, la tarea asignada a la misma. De lo contrario, la tarea se asigna a una "nueva" máquina
    • Los antiguos medios de máquinas: que se ha utilizado
    • Las nuevas máquinas: de nuevo la máquina no se ha utilizado
  • La hora de inicio y final de la tarea, el resultado final de ejecución se muestra a continuación, todas las tareas en la ejecución global del proceso, se utilizaron tres máquinas

En quinto lugar, la aplicación práctica de la ruta más corta

Descripción del problema

  • Para una red como se muestra a continuación, la distancia entre los dos números figura representan nodos
  • Ahora hay una demanda de este tipo: desde el principio hasta llegar a un cierto punto a otro punto, cada paso en el camino para unirse a una orden. Se supone que la trayectoria de la corriente ha alcanzado su pico q, pero aún no ha llegado al final. Cuando la solicitud de una selección de la ruta: Seleccionar un q asociado recientemente, y el vértice actual no está en el camino

algoritmo voraz para resolver el paso

  • Suponiendo que alcanzó su punto máximo desde el vértice 1 5, codicioso algoritmo de solución es:
    • Paso 1. Seleccionar 1-> 3 longitud de recorrido de 2
    • Paso longitud Select 3-> 2 camino de 2
    • El tercer paso es seleccionar 4-> 2 longitud de trayectoria de 1
    • Paso cuarto selección 2-> 5 de la trayectoria, una longitud de 5
    • Así, una longitud total de 10
  • Nota (Key): De acuerdo con la descripción del problema y algoritmo voraz, la elección final de la ruta es de 10, pero no es el camino más corto (no óptimo). Puede ser realizado, por ejemplo, 1-> 4-> 5 este camino, una longitud total de 6. Así algoritmo voraz no es necesariamente la solución óptima

Otros seis casos

  • Por ejemplo, el algoritmo de árbol de Huffman ( https://blog.csdn.net/qq_41453285/article/details/103649092 ), usando n-1 etapa de ponderación para establecer el mínimo longitud de la trayectoria externa de un árbol binario, cada paso será de dos árboles binarios combinado en una sola. El algoritmo voraz algoritmo usado es: desde el árbol binario de peso más pequeño disponible los dos árboles es una composición de árboles
  • Por ejemplo, las reglas de programación LPT ( https://blog.csdn.net/qq_41453285/article/details/103649089 también un algoritmo codicioso). Se utiliza para horario de n pasos n operaciones. En primer lugar, la duración del trabajo ordenadas por el tiempo. La siguiente tarea es asignada como una máquina de entonces cada paso. Greedy criterio se basa en: la programación actual el menor tiempo. El nuevo finalización del trabajo programado primera máquina (es decir, la primera máquina de reposo). Tenga en cuenta que este problema, el algoritmo voraz no garantiza la solución óptima

Otras siete personas pertenecen al concepto de

  • Se puede conocer a través de algunos de los problemas anteriores, la regla codiciosos no garantiza soluciones óptimas (como el problema del camino más corto arriba), pero siempre cerca de la solución óptima en circunstancias normales. Esta es una regla de oro. Los resultados obtenidos son por lo general cerca de la solución óptima, este algoritmo se llama "heurística"
  • Si entre la heurística y la mejor ofensiva existe una relación limitada, entonces tenemos que llamar a este método heurístico tiene "capacidad limitada"
  • Tener una heurística define propiedades definidas denominan "Aproximación Algoritmo"

Ocho, la aplicación práctica del algoritmo codicioso

Liberadas 1525 artículos originales · ganado elogios 1085 · Vistas de 450.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41453285/article/details/104439879
Recomendado
Clasificación