¿Qué estructura de datos usa YouTube?

Según el comportamiento de la aplicación, parece que:

  1. Popularidad de contenido : con el propósito de resaltar videos vistos principalmente o videos con el propósito de promoción o cualquier otro tipo de importancia comercial, se pueden usar colas de prioridad con PRN (número de prioridad) en función de los factores establecidos en este punto.
  2. Sugerencias de video : para proporcionar sugerencias de video del usuario basadas en el tipo de videos que ve, los grupos o conjuntos de hash pueden usarse donde cada video es miembro de un conjunto en función de su tipo, género, hashtag, grupo de edad del espectador, geografía, etc. Las sugerencias relevantes de la lista de videos se realizan mediante la unión o intersección de los tipos de video que ve el usuario.
  3. Capacidad de búsqueda en motores de búsqueda : uso masivo de índice para hacer que se pueda buscar usando motores de búsqueda. El marketing en buscadores podría proporcionar otra perspectiva de indexación o clasificación.
  4. Optimización de la búsqueda dentro de la aplicación : para crear resultados de búsqueda, en YouTube, los gráficos pueden usarse para preparar de manera efectiva un conjunto de resultados basado en la proximidad de los servidores desde donde se realiza la búsqueda, de modo que el tiempo de almacenamiento en búfer sea más efectivo. Los servidores y sus enlaces pueden ser los nodos y bordes del gráfico.
  5. Disponibilidad efectiva de contenido : los videos que se reproducen con frecuencia se pueden guardar / replicar en varios servidores para facilitar la disponibilidad, que se almacenan en una cola dedicada.
  6. Detección de contenido duplicado : la automatización de la detección de contenido duplicado se puede hacer usando algunos algoritmos de coincidencia de patrones de video, en los que los videos se combinan en conjugación con algunos algoritmos basados ​​en probabilidad para verificar si se ha cargado algún video duplicado. La coincidencia se puede detectar como un efecto combinado de audio, contenido gráfico, velocidad de fotogramas, deltas (los videos que se reproducen en YouTube se pueden modelar como incrementos delta al fotograma anterior para generar un nuevo fotograma y no colocar el conjunto completo de marcos).

Las posibilidades son numerosas en función del aspecto de la aplicación que está viendo.

Los resultados de búsqueda instantánea que obtiene al escribir parcialmente su consulta de búsqueda utilizan la estructura de datos Trie .

Trie es una información eficiente sobre la estructura de datos TRIE val. Realiza búsquedas de manera más óptima que la mayoría de los algoritmos de búsqueda de cadenas (como KMP, Robin-Karp, etc.). La complejidad de tiempo para la búsqueda es O (M) donde M = longitud máxima de una palabra en el trie. Sin embargo, esto se hace con el costo de un edificio más lento ( O (MN) donde N = número de palabras en el trie).

* Si alguien sabe un poco sobre trie y quiere hacer un problema relacionado con la búsqueda instantánea, resuelva este problema en hackerrank – Solucionar contactos

More Interesting

¿Cuál es una buena manera de ordenar temas en términos de qué aprender primero para la programación competitiva?

Cómo convertirse en un maestro en programación dinámica

¿Cuáles son algunos algoritmos / métodos de aprendizaje automático altamente efectivos?

¿Cuál fue el primer algoritmo ejecutado por computadora?

¿Cuál es el punto de usar programación dinámica cuando la complejidad de tiempo en la mayoría de los códigos es O (n ^ 2) (que no es tan bueno, es decir, usamos dobles para bucles incluso en DP)?

¿Alguien podría dar una explicación detallada del algoritmo de Lee para encontrar contornos cercanos en una región?

¿Cuáles son las posibles amenazas para un algoritmo RSA y cuáles son sus contramedidas?

Cómo demostrar que puedes ir de C a L con secuencias de vuelos

¿Cuál es la mejor manera de reorganizar los datos en la lista para que dos elementos similares no estén uno al lado del otro?

¿Cuándo Quicksort tiene su peor complejidad de tiempo de caso?

¿Por qué hay una diferencia de complejidad de tiempo entre los algoritmos de clasificación en Java cuando estoy usando Integer e integer?

¿Cómo "mira hacia adelante" un algoritmo de aprendizaje por refuerzo para saber qué acción tomar en este momento?

¿Cómo puedo aleatorizar la matriz almacenada y luego usarla como entrada?

¿Qué puedo hacer para mejorar mi habilidad matemática en estructura de datos y programación general?

¿Existe algún estándar de algoritmo de programación de elevadores públicos?