Estoy buscando una cola de prioridad de propósito general en R
. ¿R tiene alguna implementación de cola de prioridad de uso general (paquete) como la clase Java PriorityQueue
o Python heapq
?¿Tiene R una cola de prioridad como PriorityQueue de Java?
Respuesta
Probablemente se podría crear esto con bastante facilidad a ti mismo, ya sea mediante clases (clases referencia se adaptan mejor), o utilizando un data.frame
con un tipo personalizado, combinado con algunas funciones que operan en el mismo (add_to_queue(element, queue_object, priority)
, get_item(queue_object)
). Estas funciones serían los métodos en el caso de la clase de referencia. Me gusta más la solución de la clase de referencia, ya que almacena el estado y la lógica en un solo lugar.
Usted puede usar la siguiente implementation from Rosetta Code, pero ten en cuenta que la inserción toma O (n log n)
PriorityQueue <- function() {
keys <<- values <<- NULL
insert <- function(key, value) {
temp <- c(keys, key)
ord <- order(temp)
keys <<- temp[ord]
values <<- c(values, list(value))[ord]
}
pop <- function() {
head <- values[[1]]
values <<- values[-1]
keys <<- keys[-1]
return(head)
}
empty <- function() length(keys) == 0
list(insert = insert, pop = pop, empty = empty)
}
que siguió adelante e implementé una cola básica como una Referencia de la Clase R. Los detalles se pueden encontrar here. Se ha extendido para manejar una cola de prioridad, como se documentó en here.
Las implementaciones de cola básica y de prioridad ahora están disponibles como el paquete liqueueR en CRAN, con una versión de desarrollo en GitHub.
- 1. Java: cola de prioridad
- 2. ¿Java tiene una cola de prioridad mínima indexada?
- 3. ¿Por qué un PriorityQueue no actuaría como una cola?
- 4. C# cola de prioridad
- 5. Cambiar la prioridad en una cola de prioridad personalizada
- 6. Colas de prioridad en Java
- 7. Cola de prioridad de Java con un comparador anónimo personalizado
- 8. Implementación de cola de prioridad de Brodal
- 9. ¿Cómo se supone que funciona la cola de prioridad de Java?
- 10. Cola de prioridad eliminar tiempo de complejidad
- 11. ¿Cómo iterar sobre PriorityQueue?
- 12. Una cola rápida en Java
- 13. ¿Una cola de prioridad que permite una actualización de prioridad eficiente?
- 14. método de limpieza de cola de prioridad
- 15. Eliminar un elemento de una cola de prioridad
- 16. PriorityQueue/Heap Update
- 17. ¿Cómo puedo hacer una cola de prioridad de valor única en Python?
- 18. ¿Por qué el framework .Net no tiene una clase de cola de prioridad?
- 19. Par dentro de la cola de prioridad
- 20. ¿Estructura de cola de prioridad utilizada?
- 21. Cola de prioridad de doble terminación
- 22. PriorityQueue no sorting on add
- 23. Implementación de cola de prioridad en C
- 24. Interrumpir el tie en una cola de prioridad usando python
- 25. Cola de prioridad concurrente en .NET 4.0
- 26. Servicio con cola de prioridad en Android
- 27. ¿Cómo implementar una cola de prioridad de multiprocesamiento en Python?
- 28. Microsoft Message Queue: indicador de prioridad o una cola separada?
- 29. Qué metaetiqueta tiene prioridad
- 30. ¿Puedo obtener un artículo de PriorityQueue sin eliminarlo todavía?
http://en.wikipedia.org/wiki/Priority_queue para leer en segundo plano en caso de que a alguien le guste implementarlo – Spacedman
No parece que haya mucho trabajo, y parece que podría ser divertido. Lástima que tenga que ir a Ikea hoy ...;) –
Recuerdo que hacer algo como esto con rredis solo tomó una hora o más para lanzar juntos. – Hansi