Sto cercando una coda di priorità per uso generale in R
. R ha qualche implementazione (pacchetto) di priorità di priorità generale come la classe Java PriorityQueue
o Python heapq
?R ha una coda di priorità come PriorityQueue di Java?
risposta
si potrebbe forse creare questa abbastanza facilmente da soli, sia utilizzando le classi (classi di riferimento in forma migliore), o utilizzando un data.frame
con un tipo personalizzato, combinato con alcune funzioni che operano su di esso (add_to_queue(element, queue_object, priority)
, get_item(queue_object)
). Queste funzioni sarebbero i metodi nel caso della classe di riferimento. Mi piace la soluzione della classe di riferimento meglio poiché memorizza sia lo stato che la logica in un unico punto.
È possibile utilizzare il seguente implementation from Rosetta Code, ma attenzione che l'inserimento prende 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)
}
sono andato avanti e implementato una coda di base come una classe di riferimento R. I dettagli possono essere trovati here. È stato esteso per gestire una coda di priorità, come documentato here.
Le implementazioni di coda di base e prioritarie sono ora disponibili come pacchetto liqueueR su CRAN, con una versione di sviluppo su GitHub.
- 1. Aggiornamento di Java PriorityQueue quando i suoi elementi cambiano priorità
- 2. Come si suppone che la coda di priorità Java funzioni?
- 3. java ha una coda con priorità minima indicizzata?
- 4. Perché un PriorityQueue non si comporta come una coda?
- 5. Modificare la priorità in una coda di priorità personalizzata
- 6. C# Coda con priorità
- 7. La coda di priorità ordinata Scala ha sempre il numero più basso come testa, ordine crescente
- 8. Coda priorità doppia priorità
- 9. Implementazione coda di priorità brodale
- 10. Rimozione di un elemento arbitrario dalla coda di priorità
- 11. Come si dovrebbe iterare correttamente una coda di priorità?
- 12. Algoritmo di Dijkstra con coda di priorità
- 13. Una coda veloce in Java
- 14. Coda priorità mutabile simultanea
- 15. Estrazione di unique_ptr da una coda di priorità
- 16. Coppia all'interno della coda di priorità
- 17. Coda di priorità rapida con aggiornamenti incrementali
- 18. PriorityQueue/Heap Update
- 19. Perché la coda con priorità massima non ha DECREASE-KEY?
- 20. Coda prioritaria con priorità più alta prima in Python
- 21. Esiste una coda di priorità immutabile mantenuta in Scala?
- 22. Coda priorità basata su database
- 23. Coda priorità Java con un comparatore anonimo personalizzato
- 24. Implementazione di una coda di priorità che può essere ripetuta in C++
- 25. Go: utilizzo di un contenitore/heap per l'implementazione di una coda di priorità
- 26. Java - PriorityQueue vs ordinati LinkedList
- 27. coda di priorità di coppie in ordine inverso
- 28. Spring AMQP RabbitMQ che implementa la coda di priorità
- 29. Coda prioritaria in swift
- 30. Java 8 ha l'ottimizzazione della coda?
http://en.wikipedia.org/wiki/Priority_queue per la lettura di sottofondo nel caso in cui qualcuno sperimenti di implementarlo – Spacedman
Non sembra molto lavoro, e sembra che potrebbe essere divertente. Peccato che io debba andare a Ikea oggi ...;) –
Ricordo di aver fatto qualcosa del genere con Rredis che mi ci è voluta circa un'ora per gettare insieme. – Hansi