¿Cuál es la complejidad del tiempo de iteración a través de std::set
/std::map
? Creo que es lineal en el tamaño del conjunto/mapa, pero no tan seguro. ¿Está especificado en el estándar de idioma?¿Cuál es la complejidad del tiempo de iteración a través de un estándar :: set/std :: map?
Respuesta
En el draft C++11 standard N3337 la respuesta se puede encontrar en el § 24.2.1 párrafo 8:
Todas las categorías de iteradores requieren sólo aquellas funciones que son de realización para una categoría dada en tiempo constante (amortizado).
Desde cada operación en un iterador debe ser constante de tiempo, la iteración a través n
elementos deben ser O(n)
.
Si el mapa/conjunto se implementa como un árbol binario con punteros padres, la iteración a través de todos los elementos visitará cada nodo de árbol como máximo 3 veces. Si la implementación es un árbol b con punteros padres, cada nodo se visitará como máximo 2 * n + 1 veces, n la cantidad de elementos en el nodo. En ambos casos, esto implica una complejidad de tiempo promedio constante para cada paso de iteración. No conozco ninguna otra forma compatible de implementar map/set. – WaltK
Creo que es lineal en el tamaño del conjunto/mapa, pero no tan seguro.
Eso es correcto. Iteración a través de un sistema entero o mapa es O(N)
- 1. ¿Cuál es la complejidad temporal de la iteración TreeSet?
- 2. Complejidad del tiempo de find() en std :: map?
- 3. ¿Cuál es la complejidad del tiempo de cruce de árboles?
- 4. ¿Cuál es la complejidad de tiempo del método java.util.Collections.sort()?
- 5. ¿El orden de iteración a través de std :: map es conocido (y está garantizado por el estándar)?
- 6. ¿Cuál es la complejidad de tiempo de HTML DOM búsquedas
- 7. ¿Cuál es la complejidad de tiempo de LinkedList.getLast() en Java?
- 8. Iteración a través de contenedores estándar en openmp
- 9. ¿Cuál es la complejidad de tiempo de .NET list.sort()
- 10. ¿Cuál es la complejidad de tiempo de HashMap.containsKey() en java?
- 11. Complejidad del tiempo de la tabla hash
- 12. Complejidad del tiempo del algoritmo de Euclides
- 13. ¿Cuál es la complejidad del tiempo de ejecución de las funciones de la lista de python?
- 14. Complejidad del tiempo de la potencia()
- 15. Complejidad del tiempo de un algoritmo recursivo
- 16. Java: iteración a través de HashMap, ¿qué es más eficiente?
- 17. Complejidad del tiempo para acceder a un dict de Python
- 18. Cuál es la complejidad de tiempo de eliminar un nodo en un árbol binario
- 19. ¿Cuál es la complejidad del tiempo A * y cómo se deriva?
- 20. ¿Cuál es la complejidad del tiempo de indexación, inserción y eliminación de estructuras de datos comunes?
- 21. TreeMap - Complejidad del tiempo de búsqueda
- 22. Complejidad del tiempo del algoritmo de Prim
- 23. ¿Cuál es la estructura de datos OCaml estándar con la iteración más rápida?
- 24. Gallop ¿Complejidad del tiempo de búsqueda?
- 25. ¿Cuál es la complejidad del tiempo para hacer estallar elementos de la lista en Python?
- 26. Complejidad del tiempo de consulta SQL
- 27. iteración a través de un impulso :: dynamic_bitset
- 28. Complejidad del tiempo del algoritmo de Fleury
- 29. ¿Cuál es la complejidad del tiempo de ejecución de una instrucción switch?
- 30. ¿La complejidad del tiempo de las operaciones del conjunto python?
La iteración de un contenedor completo siempre será 'O (n)' _al least_ (supongo que implementaciones realmente tontas podrían hacer que _worse_) – Chad
Cuando dice "iterando a través de", ¿exactamente qué quiere decir? ¿Estás escribiendo un ciclo while/for utilizando un iterador estándar? ¿Estás usando uno de los algoritmos estándar? –