¿Cuáles son algunos ejemplos de problemas para los cuales una cola prioritaria resulta útil?

El algoritmo de Dijkstra (ruta más corta de una sola fuente; http://en.wikipedia.org/wiki/Dij…) es uno.

Otra es que si desea obtener los N elementos más grandes de un grupo de listas ordenadas (cada uno de longitud aproximadamente N), puede usar un montón mínimo como cola prioritaria.

Desplácese por todas las listas en paralelo, insertando elementos en el montón si son más grandes que el mínimo actual y desactivándolo cada vez que haya más de N elementos en el montón. Puede finalizar el recorrido por cada lista cuando su valor es menor que el mínimo actual en el montón. Hay algunos casos malos, pero en promedio terminan tomando aproximadamente O (N log N) y es mucho más rápido que ordenar todas las listas en una lista grande y tomar el primer N.

Por ejemplo, para algo como Twitter, si tuviera una lista de tweets ordenados por tiempo para cada persona que está siguiendo y desea generar su página de inicio de Twitter, puede usar el método anterior.

  • Algoritmos de árbol de expansión mínimo (Prim y Kruskal, realmente no recuerdo los más inteligentes).
  • Mantener una pequeña lista ordenada de elementos que se transmiten desde una fuente de datos externa (los principales resultados K ​​de una consulta de búsqueda manejada en una tarea de reducción de mapa o cualquier otro esquema de procesamiento paralelo a gran escala)
  • Cualquier tarea de programación basada en prioridades (procesos del sistema operativo, aunque hay otros esquemas más complejos que también manejan esto)