¿En qué circunstancias necesitaría un desarrollador web utilizar estructuras de datos como Listas vinculadas, BST y Gráficos?

Al ser un desarrollador front-end, no puedo recordar ningún caso de uso en el que haya utilizado estas estructuras de datos en mis tareas diarias.

Es muy raro en Front End que tenga que usarlos, ya están siendo utilizados en segundo plano por el analizador / compilador / intérprete JS.

La razón es que las aplicaciones front-end residen en la máquina del cliente. Y en la máquina del cliente, no puede almacenar gran parte de la información; y no hay escenarios en los que solo se pueda almacenar en el lado del Cliente, no en el servidor.

Tener demasiados datos en el lado del cliente solo los ralentizará; así que no tiene sentido enviar grandes datos.

Aunque si tiene una aplicación web que se ocupa de grandes conjuntos de datos como Graph Generation o Excel Like Data Editor, entonces podría tener sentido usar uno o algunos de ellos.

El uso de la estructura de datos en Front End no tendrá nada que ver con el escalado de aplicaciones.

Y no hay nada de malo en usar solo matrices y diccionarios. mi aplicación web no tiene nada más que estos; Los objetos JS se comportan como Diccionarios y Matrices son las cosas predeterminadas que uno usaría naturalmente en la parte frontal, ya que es el tipo de colección más básico.


Si le gustó mi respuesta, le agradecería que la votara al presionar el botón azul claro a continuación y pueda seguirme si desea leer más como estos. O puedes visitar mi blog Time to Hack.

En general, una estructura de datos es útil si modela el tipo de información que desea almacenar y tiene tiempos de ejecución eficientes para las operaciones que necesita hacer en esos datos. Por ejemplo, las listas enlazadas almacenan datos secuenciales y permiten inserciones, eliminaciones de ambos extremos y recorridos eficientes, pero no acceso aleatorio.

(Doblemente) Lista vinculada
Propiedades
Las listas enlazadas almacenan datos secuenciales y crecen y se reducen en tiempo lineal. Obtienen esta capacidad a expensas del acceso aleatorio (no puede ver los valores en el medio de la lista vinculada sin una parte transversal de la misma).

Ejemplo de caso de uso
Un uso común de una lista vinculada sería implementar una cola. Una cola toma valores y permite que se eliminen en el orden en que se agregaron. Una cola basada en la lista vinculada puede crecer continuamente sin necesidad de cambiar el tamaño. Imagine un sitio web que toma las solicitudes de los clientes y las maneja en el orden en que se hicieron. Puede almacenar esto en una cola basada en la Lista Vinculada y sentirse seguro sabiendo que, sin importar cuántas solicitudes hayan hecho sus clientes, agregar y eliminar elementos de la cola siempre tomaría tiempo lineal (a diferencia de una implementación basada en una matriz que ocasionalmente necesitaría usar lineal hora de cambiar el tamaño).

Grafico
Propiedades
Un gráfico es una estructura de datos que modela una red de objetos. Es decir, un conjunto de objetos, cada uno de los cuales tiene algún tipo de conexión a cero o más del mismo tipo de objeto. Esta es una estructura increíblemente común para tener datos del mundo real.

Ejemplo de caso de uso
Estás construyendo una red social como Facebook. Tus usuarios pueden tener amigos. Observa que sus datos constituyen un gráfico. Una cuenta es un vértice (también conocido como nodo) y una amistad es un borde (también conocido como enlace). Para responder preguntas sobre las relaciones entre sus usuarios, necesita ejecutar algoritmos gráficos. ¿Quieres saber si Bob es amigo de un amigo de Jim? Ejecute Breadth First Search con una profundidad máxima de 2 y vea si puede encontrar la ruta entre ellos. También puede utilizar los datos recopilados de este gráfico para ayudar a sugerir amigos, obtener información valiosa para los anunciantes, etc.

Árbol de búsqueda binario
Propiedades
Los árboles de búsqueda binarios almacenan datos que se pueden ordenar de tal manera que se puedan recuperar en tiempo logarítmico. También puede atravesar un BST en orden ordenado.

Ejemplo de caso de uso
Debe almacenar información sobre todos los usuarios que están actualmente en línea en su aplicación de chat. Desea poder imprimir los nombres allí en orden ordenado y buscar a través de los nombres para encontrar si un usuario específico está en línea. Un árbol de búsqueda binario le permite realizar ambas operaciones rápidamente.

Siempre es bueno conocer las estructuras de datos estándar.

Se puede evitar el uso de listas vinculadas mediante el uso de una matriz o alguna estructura de datos abstractos similar a un vector. Pero si necesita controlar cómo se asigna la memoria y le gusta usar referencias y punteros, es bueno saber cómo usar listas vinculadas (al menos conceptualmente), para que pueda usar una versión similar. Si está creando una aplicación web que proporciona a los usuarios algo como un documento de Word. Debe cuidar cómo se vincula una página con otra, y puede proporcionar operaciones de búsqueda más rápidas si tiene las páginas físicamente una al lado de la otra.

Si proporciona páginas web a las que el usuario no puede regresar (algo así como un juego / fuente de noticias donde no puede regresar a una posición / ubicación anterior), necesita una estructura de datos similar a un Gráfico Acíclico Dirigido. Si conoce mejor sus datos, puede optar por implementarlos en forma de árbol, y si necesita buscar rápidamente a través de su árbol, necesita un BST.

Debe saber cómo implementar árboles de prefijos si va a proporcionar a sus usuarios una función de búsqueda más rápida. O hashmaps para crear un sistema de inicio de sesión protegido por contraseña.

Siempre necesitarás estructuras de datos y, consciente o no, las utilizarás todos los días.

Como mencionó el diccionario, debe notar que un diccionario es en realidad un BST.

Si está utilizando un lenguaje como Java, en realidad podría estar utilizando muchos de esos conceptos detrás de la abstracción de operaciones comunes.

More Interesting

¿Cuáles son las aplicaciones de las matemáticas en la programación?

¿Qué oración en el lenguaje de la aritmética de Peano es equivalente a decir que un programa dado se detendrá?

¿Cuál es el problema P vs. NP y por qué es tan importante?

¿Qué problema resolvió Alan Turing y cómo eso lo llevó a ser etiquetado como el 'Padre de la Informática'?

¿Qué módulo será más útil, análisis multivariado o análisis bayesiano?

¿Qué ventajas tienen las matemáticas mayores que recién comienzan a estudiar la programación en comparación con la especialización CS?

¿Cómo se descubre la estructura en patrones bidimensionales?

¿Puedo obtener el código fuente para la exponenciación de bases fraccionarias con exponentes fraccionales en Java al igual que la función Math.pow pero sin usar la función?

En Python, ¿cómo sería el código si quisiera que el usuario ingrese un número de 3 dígitos y luego obtenga la suma de esos tres números individuales?

¿Existe un vínculo entre el procesamiento de señales y la teoría de grafos?

¿Hay algún buen sitio web para aprender matemáticas avanzadas paso a paso?

¿Qué tan lejos están las computadoras cuánticas de resolver al menos un problema de NP completo en un tiempo polinómico?

¿Por qué soy bueno en cursos intensivos de programación, pero sigo reprobando en cursos de teoría de informática? ¿Estoy en condiciones de ser ingeniero de software?

¿Qué innovaciones en la teoría de CS de los últimos 10 años han tenido un impacto fuera de la academia? Si iba a hacer un doctorado en CS, ¿debería hacer teoría en lugar de aprendizaje automático?

¿Cuál es una manera fácil de entender la física?