¿Cuáles son las aplicaciones de las estructuras de datos?

La estructura de datos es una forma particular de organizar y almacenar datos en una computadora para poder acceder a ellos y modificarlos de manera eficiente.

Las diferentes estructuras de datos son:

Matriz : es una estructura de datos lineal que consiste en una colección de elementos identificados por índice de matriz.

La matriz se puede utilizar para clasificar elementos, puede realizar operaciones de matriz y se puede utilizar en la programación de la CPU.

Una matriz con 5 elementos. Además, la indexación de matriz comienza desde 0.

Pila: es una estructura de datos lineal que sigue un orden particular en el que se realizan las operaciones. El pedido puede ser LIFO (último en entrar, primero en salir). La inserción en una pila se llama PUSH mientras que la eliminación de la pila se llama POP .

Stack se utiliza en la evaluación de expresiones, la función de avance y retroceso en los navegadores web, el análisis de sintaxis, se utiliza en muchos algoritmos como la Torre de Hanoi, el problema del histograma, etc.

Cola : es una estructura lineal que sigue un orden particular en el que se realizan las operaciones. El orden es FIFO (primero en entrar, primero en salir). La inserción en una pila se llama Enqueue mientras que la eliminación de la pila se llama Dequeue .

La cola se utiliza cuando un recurso se comparte entre múltiples consumidores, como en la programación de CPU, la programación de disco. También se utiliza en el reconocimiento de Palindrome.

Árbol binario : es una estructura de datos en árbol en la que cada nodo tiene como máximo dos hijos, a los que se hace referencia como el hijo izquierdo y el hijo derecho.

Un árbol binario de tamaño 9 y altura 3, con un nodo raíz cuyo valor es 2

Las aplicaciones de árbol binario son árbol de búsqueda binaria, montones, intentos binarios, etc. Consulte esto para más aplicaciones: ¿Cuáles son las aplicaciones de los árboles binarios?

Árbol de búsqueda binaria : es un árbol binario donde el valor de cada nodo es mayor o igual que el valor del subárbol izquierdo y el valor de cada nodo es menor o igual que el valor del subárbol derecho.

Un árbol de búsqueda binario de tamaño 9 y profundidad 3, con 8 en la raíz.

Binary Search Tree se utiliza para implementar la indexación multinivel en la base de datos. También se utiliza en el algoritmo de codificación de Huffman y para implementar el algoritmo de búsqueda.

Heap : es una estructura de datos de árbol especializada que satisface la siguiente propiedad : si P es un nodo padre de C, entonces el valor de P es mayor o igual que (en un montón máximo) o menor o igual que (en un min heap) el valor de C.

Max Heap con claves de nodo que son enteros de 1 a 100

Heap se utiliza en Heapsort y en la asignación de memoria dinámica en lisp.

Trie : es una estructura de datos de árbol ordenada que se utiliza para almacenar un conjunto dinámico o una matriz asociativa donde las claves suelen ser cadenas.

Un trie para las teclas “A”, “to”, “tea”, “ted”, “ten”, “i”, “in” y “inn”.

Trie se usa como diccionario, como el que se encuentra en un teléfono móvil para autocompletar y revisar la ortografía. Trie también se usa en el algoritmo Aho-Corasick y en el algoritmo KMP.

Tabla hash : es una estructura de datos que se utiliza para almacenar pares claves / valores. Utiliza una función hash para calcular un índice en una matriz en la que se insertará o buscará un elemento.

Tabla hash con 3 teclas y función hash

Hash Table se utiliza para la búsqueda rápida de datos: tabla de símbolos para compiladores, indexación de bases de datos, cachés, representación de datos única.

Gráfico : es una estructura de datos que consiste en un conjunto finito de vértices llamados Nodos y un conjunto finito de par ordenado llamado Borde . El gráfico puede ser dirigido o no dirigido .

Los gráficos se usan para representar redes. Los gráficos también se usan en redes sociales como LinkedIn, Facebook. Por ejemplo, en Facebook, cada persona está representada con un vértice (o nodo). Cada nodo es una estructura y contiene información como identificación de persona, nombre, género y entorno local. También se utilizan en algoritmos de enrutamiento .

La estructura de datos, per se, es la forma en que los datos se organizan y almacenan en la memoria de la computadora. Por lo tanto, cualquier variable que almacene un valor aprovecha una estructura de datos particular. Los tipos de datos primitivos, como los enteros, simplemente almacenan sus valores en la memoria en formato binario. Los tipos de datos más complejos, como las cadenas, generalmente emplean matrices inmutables : cada carácter se serializa en un dígito y se coloca en una matriz de acuerdo con su posición dentro de la cadena dada. Siempre que necesite modificar una cadena dada a través de métodos de instancia expuestos, se genera una nueva cadena y se asigna a la memoria. Esa es la propiedad de la inmutabilidad : no puede cambiar el objeto existente, solo puede crear uno nuevo que contenga todas las modificaciones necesarias. Por el contrario, las estructuras de datos mutables se pueden modificar en cualquier momento y no se crea ninguna copia a menos que se solicite explícitamente. En el caso de una cadena, la estructura de datos subyacente es Array, que tiene las siguientes propiedades:

  1. Fácil acceso a cualquier carácter en un tiempo constante (no importa qué carácter necesita: el primero, el último, en el medio de la cadena; el tiempo de búsqueda será el mismo);
  2. Asignación de memoria consistente: todos los caracteres se almacenan uno al lado del otro, lo que hace que iterarlos, copiar toda la matriz y algunas otras operaciones sea muy eficiente;
  3. Compacidad: el tamaño de una estructura de datos asignada es pequeño, ya que todos los miembros de datos (los caracteres individuales no usan envoltorios como las Listas y los Árboles ).

Otras estructuras de datos, como los árboles mencionados, son buenos para clasificar sus elementos a un costo de mayor tiempo de operaciones de adición y eliminación (porque necesita algo de tiempo para encontrar el lugar correcto para insertar el nodo o reorganizar el árbol después de que se eliminó el elemento).

Las listas son buenas cuando la cantidad de datos es realmente grande y es un problema encontrar una cantidad constante de memoria libre. Cada elemento de una lista está envuelto en un elemento Node que tiene una referencia al siguiente elemento. Por lo tanto, todos los elementos están encadenados y pueden iterarse relativamente rápido.

Array , List y Tree son las estructuras de datos principales, aunque hay docenas de otras. La elección adecuada de una estructura de datos junto con un algoritmo apropiado, dependiendo de sus necesidades, puede impulsar su aplicación y hacerla muy eficiente o, al ser seleccionado de forma negligente, puede retrasar significativamente su programa, cientos de veces o más.

Puede ver diferentes estructuras de datos aquí y comparar su efectividad aquí Características de rendimiento. Aunque esta tabla es para desarrolladores de Scala, puede brindarle una buena idea sobre el rendimiento de las estructuras de datos generales.

Tabla de hash: utilizada para la búsqueda rápida de datos: tabla de símbolos para compiladores, indexación de bases de datos, cachés, representación de datos única.
Trie: diccionario, como el que se encuentra en un teléfono móvil para autocompletar y revisar la ortografía.
Árbol de sufijos: búsquedas rápidas de texto completo utilizadas en la mayoría de los procesadores de texto.
Pila: operación de deshacer / rehacer en procesadores de texto, evaluación de expresiones y análisis sintáctico, muchas máquinas virtuales como JVM están orientadas a la pila.
Colas: investigación de transporte y operaciones donde se almacenan y mantienen varias entidades para procesarlas posteriormente, es decir, la cola realiza la función de un búfer.
Colas de prioridad: programación de procesos en el núcleo
Árboles – Analizadores, Sistema de archivos
Árbol Radix: tabla de enrutamiento IP
Árbol BSP: gráficos 3D por computadora
Gráficos: conexiones / relaciones en sitios de redes sociales, enrutamiento, redes de comunicación, organización de datos, etc.
Heap: asignación dinámica de memoria en lisp

La estructura de datos está en todas partes … olvídate de la programación … tomando ejemplos de la vida real … déjame darte algunos ejemplos:

Cola : estás en una cola. Primero en llegar, primer servidor o Primero en entrar, primero en salir (FIFO).

Pila : tomas un plato de la pila de platos del restaurante. El plato principal que tomas fue el último que ingresaste cuando alguien lavó los platos y los apiló. List In First Out (LIFO)

Búsqueda : busca en un barrio del diccionario donde las palabras se ordenan alfabéticamente. Sin saberlo, utiliza la búsqueda binaria. ¿Cómo? Por ejemplo, supongamos que va a buscar la palabra “Reina”. Abre al azar una página en el medio y la página comienza con la palabra “K”. Entonces irá a las páginas siguientes para buscar la palabra “Reina” cuando Q viene después de K. Luego, abre otra página desde la página K. Digamos que la palabra comienza desde T. Entonces sabes que “Reina” será antes de eso, pero por supuesto después de K. Así es como buscas la palabra Reina y se llama búsqueda binaria.

Lista : su árbol genealógico es una lista estructurada como árbol. Si todavía no tienes hijos, eres el nodo hoja.

Gráfico : Vas a la escuela o la oficina todos los días. Hay 5 caminos que te llevan a tu escuela / oficina desde casa, pero prefieres elegir la distancia más corta. ¿Cómo? Estructura de datos 🙂

Querido amigo,

No hay una respuesta específica a esta pregunta. Depende totalmente de su visualización y habilidades de lo que aprenda de las Estructuras de datos.
Si pregunta cómo usar la Estructura de datos … .fine … .Pregunta válida. Pero si pregunta cómo trabajar con estructuras de datos, entonces es una pregunta abstracta.

Posiblemente pueda ayudarlo a que le permita comprender el escenario actual detrás de algo … pero cómo trabajar con conceptos … lo siento, nadie puede explicar esto.

Desde mi experiencia, los conceptos en Ingeniería informática no están restringidos a ningún nivel particular de implementación. Cualquier programador puede reutilizar el mismo concepto para diferentes implementaciones.

p.ej. Decir lista vinculada:

utilizar para almacenar la lista de estudiantes o empleados O

almacenar alguna variable interna durante la ejecución del programa y solo imprimiendo esa lista vinculada obtendrá cómo se modifica una variable a lo largo de la ejecución del programa

Depende completamente de tu visualización.

Moraleja de la historia…..

Los conceptos son como herramientas para programadores … ahora, dónde usar qué herramienta y cómo usar esa herramienta solo depende del programador.

Si alguien simplemente quiere ser programador “copiar y pegar”, lo siento, esta publicación no es para ellos.

Si aún desea conocer las implementaciones del mundo real, lea el comentario de Kamal Seth sobre esto.

Primero, todo es una estructura de datos. Incluso un solo número entero.

Cuando llegué a la escuela, ya era un programador de puntos críticos, así que esto fue aprender el lado profesional de un oficio que ya conocía. Data Structures fue la clase en la universidad de la que obtuve el conocimiento más útil. Aprendí sobre los algoritmos de clasificación principales, sobre listas y pilas, etc. Aprendí cuán poderosos podrían ser los campos de bits. Por último, aprender sobre estructuras y uniones es clave para comprender el polimorfismo en lenguajes orientados a objetos.

Para extrapolar sobre eso … nombraré algunas aplicaciones, según lo solicitado.

  • Fundamental para el funcionamiento de estos microprocesadores es un STACK. Una pila es como uno de esos dispensadores de platos en una cafetería: el plato agregado más recientemente será el siguiente plato dispensado. Cada vez que una rutina llama a una subrutina, estas rutinas usan la pila para sus datos temporales, incluida la dirección a donde debe regresar la subrutina.
  • Constantemente en la programación usa SETS. El tipo más común de conjunto es un ARRAY, que es similar a un conjunto ordenado (aunque hay distinciones: un conjunto puede contener el mismo valor dos veces, mientras que los conjuntos no). La barra de menú “Archivo / Editar / Ver …” en la parte superior es una variedad de menús, cada uno con una variedad de elementos de menú.
  • Un conjunto de elementos relacionados comprende una ESTRUCTURA o un REGISTRO. Puede ser ID, nombre, apellido, etc., que se combinan para formar un registro de persona. Las estructuras están en todas partes: hay una estructura para la barra de menús, otra para el menú, otra para los elementos del menú, etc. Algunas estructuras están diseñadas para superponerse de modo que sus valores sean compatibles para algunas funciones (piense en los paquetes de datos de Internet, que tendrán una estructura variable dependiendo del tipo de paquete que sea). Esas estructuras que están diseñadas para superponer son UNIONES.

No recuerdo los detalles de todo lo que aprendí en esa clase, pero si bien podría haber sido un codificador importante en la escuela, esa clase de estructuras de datos tuvo el mayor impacto al convertirme en un ingeniero de software profesional.

Las estructuras de datos son una forma de almacenar y manipular datos. Las diferentes estructuras de datos tienen diferentes fortalezas (y debilidades) y son adecuadas para diferentes tareas. Las diferencias incluyen varios tiempos de inserción, eliminaciones, consultas, etc.

Las estructuras de datos en sí mismas no resuelven problemas. Solo cuando se combinan con algoritmos logran algo .

Las estructuras de datos nos permiten (a los programadores) resolver problemas de manera eficiente a través de algoritmos. Las estructuras de datos correctas pueden hacer o deshacer el algoritmo, que a su vez puede ayudarnos a resolver el problema en cuestión. O no.


La conclusión es la siguiente.

Las estructuras de datos forman los componentes básicos de los algoritmos, que forman la base y la base de la resolución de problemas.

Al final del día , a las personas se les paga para resolver problemas.

Y sucede que hay un montón de problemas en el mundo que se pueden resolver a través del código.

Y para resolver esos problemas a través del código, debe crear algoritmos.

Y para construir algoritmos eficientes, debe comprender las estructuras de datos.

Por lo tanto, vale la pena conocer sus estructuras de datos. Literalmente.

Las colas de prioridad se pueden usar para simulaciones donde simular todo es demasiado costoso.

Se puede usar una pila para almacenar el historial en caso de que desees deshacer.

Las colas se pueden usar para muchos propósitos, buena vista en el proyecto de integración de primavera.

Puede usar un árbol Huffman para la compresión.

Las pruebas se utilizan al procesar texto y para encontrar soluciones para juegos como scrabble.

Para los juegos de voxel, las estructuras de datos son realmente importantes. Debe mantener las lecturas de datos realmente rápidas sin volverse loco con el uso de memoria. Si me preguntas, Minecraft podría haber sido mucho más rápido si la estructura de datos y el acceso se hubieran pensado mejor

Escuela Holberton

Uso más simple de una estructura de datos: un diccionario de inglés a inglés, que se puede construir usando una tabla hash.

Desde aquí, puedes profundizar en DS

  1. Las estructuras de datos en el diseño del sistema operativo, como el administrador de memoria (Linked List + Hash-Map)
  2. BTrees en el diseño de bases de datos
  3. Árboles en sistemas de archivos

¿Cuáles son las aplicaciones del mundo real de algunas estructuras de datos avanzadas, y cuándo elegiría una estructura de datos sobre otra, en el caso de estructuras de datos similares?

¿Cuáles son las aplicaciones en tiempo real de las estructuras de datos?

Cuando quieres que una computadora haga algo por ti, necesita datos. Los datos deben leerse, escribirse y procesarse según el propósito específico en cuestión.

Ahora, si una computadora puede acceder a los datos de manera fácil y rápida, puede funcionar de manera más productiva. Puede pasar tiempo haciendo cosas de procesamiento más relevantes para usted. Sin embargo, si no puede acceder a los datos rápidamente, transcurrirá la mayor parte del tiempo intentando leer y mover datos en la memoria.

Esta es la esencia de las estructuras de datos. Las estructuras de datos dependen del problema. Básicamente son métodos para organizar sus datos en la memoria para que se pueda acceder a ellos y procesarlos rápidamente en relación con una tarea específica.

“En la mayoría de las aplicaciones de estructuras de datos , deseamos realizar no solo una operación, sino una secuencia de operaciones, posiblemente con un comportamiento correlacionado.

Las estructuras de datos se utilizan en una serie de aplicaciones informáticas, como buscar, clasificar, recorrer gráficos, encontrar el camino más corto de una ciudad a otra, resolver problemas de tráfico, procesar solicitudes en línea o transacciones en línea, alertar a los usuarios de los precios del mercado de valores, programar trabajos en sistemas operativos, búsqueda de detalles de un estudiante en una base de datos de la universidad … y así sucesivamente. Si tiene alguna duda, no dude en ponerse en contacto conmigo.

happy_coding!

Cada aplicación de sistema o aplicación en el concepto de estructura de datos de uso móvil como raíz de su diseño y uso.

Para almacenar cualquier dato donde sea necesario. Por ejemplo

la estructura de datos de pila se utiliza para almacenar los enlaces de su sitio web, sea lo que sea que visite. Entonces, cuando hace clic en el botón Atrás o Adelante, se abre el enlace que visitó en el pasado reciente. Lo mismo ocurre con los botones REDO Y UNDO donde sea que se use.

la estructura de datos de cola se utiliza en su sistema (por sistema operativo) para ejecutar varios procesos que ingresan de la manera FIFO (primero en entrar, primero en salir), es decir, el proceso que ingrese primero se moverá primero. Para aclararlo, suponga que le pide a su sistema que haga lo siguiente:

  1. reproducir música
  2. navegador abierto

Pintura abierta

entonces estos 3 se tomarán como procesos diferentes y se realizarán de manera FIFO.

No he entendido completamente esta pregunta, pero déjame intentar responderla. Las estructuras de datos son la columna vertebral de los algoritmos. Cualquier algoritmo se basa en varias combinaciones de estructuras de datos. Cuando uno pregunta dónde se usan las estructuras de datos, la pregunta real es dónde se usan los algoritmos. Y los algoritmos se usan en todas partes. Desde la simple copia de datos hasta los complejos problemas de navegación en todas partes, necesita algoritmos y para crear esos algoritmos, necesita estructuras de datos, ya sea una matriz o un gráfico o cualquier otra cosa.

Puede pensar en cualquier problema físico existente que deba resolverse, necesitaría un Algoritmo para hacerlo y las Estructuras de datos lo ayudarán a crear dicho Algoritmo

No sé si la estructura de datos byt de las aplicaciones es tan importante de aprender. Te enseñará a resolver problemas del mundo real. Hay muchos algoritmos importantes en la estructura de datos.

Deberías aprenderlo con seguridad.

More Interesting

¿Qué debe saber todo programador sobre Lisp?

¿Existe una justificación "rigurosa" de por qué los algoritmos de aprendizaje profundo necesitan una gran cantidad de datos?

¿Cuáles son las aplicaciones en tiempo real del árbol binario enhebrado?

Alguien en mi escuela secundaria dijo que en realidad no puedo resolver un cubo de Rubik porque tengo que confiar en patrones (algoritmos). ¿Cuán verdadera es esta afirmación?

¿Cuáles son algunos algoritmos de redes neuronales artificiales?

No sé nada sobre algoritmos. Por donde puedo empezar

¿Qué algoritmos de clasificación tienen la mejor complejidad de tiempo de caso?

Con los algoritmos de cifrado modernos, ¿es factible que alguien sepa qué algoritmo se utilizó al mirar el texto cifrado?

¿Realmente utilizas los algoritmos informáticos que aprendes en la universidad cuando consigues un trabajo? En caso afirmativo, ¿cuál es el mejor trabajo que puede permitirse en algoritmos?

Si un hombre está limitado por el conocimiento, ¿podemos crear un algoritmo para sus elecciones y determinar su futuro?

¿Existen algoritmos de descenso de gradiente que intenten ajustar valores de datos que representan cada uno un promedio de puntos de datos desconocidos individualmente?

¿Existe un algoritmo para contar el número de subsecuencias divisibles por 8?

¿Existe un formato estandarizado para representar las funciones de la computadora como algoritmos matemáticos?

¿Cuáles son algunos conceptos erróneos comunes sobre los algoritmos?

¿Está bien mi implementación de Búsqueda ternaria?