Eso depende de cómo interpretes esta pregunta.
¿Qué pasaría si no pudieras usar matrices porque no eran parte del lenguaje de programación, pero tuvieras tablas hash y otras estructuras de datos similares?
Luego, podría simular matrices con solo una desaceleración esperada del factor O (1) en comparación con la situación de que se admitan de forma nativa, utilizando una tabla hash cuyas claves son de 0 a N-1, donde N es la longitud de la matriz que desea para simular.
- Me acabo de unir a TopCoder porque quiero aprender las estructuras de datos y cómo codificarlas en C, pero no tengo idea de dónde comenzar en TopCoder ya que puedo ver 3 categorías en el sitio, pero no pude encontrar la forma correcta. ¿Qué debo hacer para comenzar?
- ¿Cuál es el algoritmo hash más popular para almacenar contraseñas?
- Cómo evitar buscar directamente una solución al resolver problemas de algoritmos
- ¿Por qué es imposible tener un tipo de comparación mejor que el tiempo O (nlogn)?
- Si quiero resolver problemas del mundo real, ¿qué debo hacer, encontrar esos problemas y luego aprender las estructuras de datos y algoritmos requeridos o viceversa?
¿Qué pasaría si no pudiera asignar memoria contiguamente y solo pudiera solicitar fragmentos de memoria de tamaño constante del asignador de memoria?
Entonces también podría simular una matriz, pero algunas operaciones de matriz inevitablemente * tendrían una desaceleración del factor logarítmico. Puede simular una matriz de N entradas usando un árbol. Piense en poner todos los datos en las hojas y dejar que todas las hojas estén al mismo nivel en el árbol. Entonces tiene un nodo padre por cada dos nodos en el nivel anterior. Al acceder a un elemento por índice, usted determina la ruta a seguir en el árbol en función de la representación en bits del índice (vaya al elemento secundario izquierdo cuando vea un bit 0 y al elemento secundario derecho cuando vea un bit).
* Prueba: si solo puede acceder a un número constante K de ubicaciones en cada operación, después de las operaciones T, el número de ubicaciones de memoria posibles que son “accesibles” para su algoritmo es [matemática] K ^ T [/ matemática]. Para un algoritmo que pueda necesitar acceder a cualquiera de las N ubicaciones donde N es la longitud de la matriz, debe ser que [matemática] K ^ T \ geq N [/ matemática], por lo tanto [matemática] T \ geq \ log_K N [ /mates].