Diferencia entre revisiones de «Algoritmo voraz»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
m Revertidos los cambios de 209.124.106.61 a la última edición de AVBOT
Línea 5: Línea 5:
Cada conjunto <math>S</math> que satisfaga las restricciones se le suele denominar prometedor, y si éste además logra que la función objetivo se minimice o maximice (según corresponda) diremos que <math>S</math> es una ''solución óptima''.
Cada conjunto <math>S</math> que satisfaga las restricciones se le suele denominar prometedor, y si éste además logra que la función objetivo se minimice o maximice (según corresponda) diremos que <math>S</math> es una ''solución óptima''.


=== Elementos de los que consta la técnica ===hola
=== Elementos de los que consta la técnica ===
*El conjunto <math>C</math> de '''candidatos''', entradas del problema.
*El conjunto <math>C</math> de '''candidatos''', entradas del problema.
*Función '''solución'''. Comprueba, en cada paso, si el subconjunto actual de candidatos elegidos forma una solución (no importa si es óptima o no lo es).
*Función '''solución'''. Comprueba, en cada paso, si el subconjunto actual de candidatos elegidos forma una solución (no importa si es óptima o no lo es).

Revisión del 21:34 26 may 2009

Un algoritmo voraz (también conocido como ávido o devorador) es aquel que, para resolver un determinado problema, sigue una metaheurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima. Este esquema algorítmico es el que menos dificultades plantea a la hora de diseñar y comprobar su funcionamiento. Normalmente se aplica a los problemas de optimización.

Esquema

Dado un conjunto finito de entradas , un algoritmo voraz devuelve un conjunto (seleccionados) tal que y que además cumple con las restricciones del problema inicial. Cada conjunto que satisfaga las restricciones se le suele denominar prometedor, y si éste además logra que la función objetivo se minimice o maximice (según corresponda) diremos que es una solución óptima.

Elementos de los que consta la técnica

  • El conjunto de candidatos, entradas del problema.
  • Función solución. Comprueba, en cada paso, si el subconjunto actual de candidatos elegidos forma una solución (no importa si es óptima o no lo es).
  • Función de selección. Informa de cuál es el elemento más prometedor para completar la solución. Éste no puede haber sido rechazado o escogido con anterioridad. Cada elemento es considerado una sola vez. Luego, puede ser rechazado o aceptado y pertenecerá a .
  • Función de factibilidad. Informa si a partir de un conjunto se puede llegar a una solución. Lo aplicaremos al conjunto de seleccionados unido con el elemento más prometedor.
  • Función objetivo. Es aquella que queremos maximizar o minimizar, el núcleo del problema.

Funcionamiento

El algoritmo escoge en cada paso al mejor elemento posible, conocido como el elemento más prometedor. Se elimina ese elemento del conjunto de candidatos () y, acto seguido, comprueba si la inclusión de este elemento en el conjunto de elementos seleccionados () produce una solución factible.

En caso de que así sea, se incluye ese elemento en . Si la inclusión no fuera factible, se descarta el elemento. Iteramos el bucle, comprobando si el conjunto de seleccionados es una solución y, si no es así, pasando al siguiente elemento del conjunto de candidatos.

Una vez finalizado el bucle, el algoritmo comprueba si el conjunto es una solución o no, devolviendo el resultado apropiado en cada caso. El algoritmo se muestra a continuación:

 // Esquema general de un algoritmo voraz
 
 función 
   // es el conjunto de candidatos//
   
   mientras  y no solución(S) hacer
     
     
     si  entonces
       
   si solución(S) entonces
     devolver  // es una solución//
   si no
     devolver  //No hay soluciones//

Ejemplos de algoritmos voraces

Temas relacionados

Referencias

  • Brassard, Gilles; Bratley, Paul (1997). «Algoritmos voraces». Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X. 

Enlaces externos

En inglés: