¿Cuál es el algoritmo detrás de la creación de una nueva fuente que solo muestra publicaciones de tus seguidores?

Hay muchas respuestas posibles a esto, y solo estoy dando mis dos centavos. Abordaré esto únicamente desde una perspectiva de programación y no tendré en cuenta las soluciones más sofisticadas que se pueden proporcionar utilizando las tecnologías existentes.

Así que vamos directo a ello. Deje que el usuario en una red social sea una clase, y una publicación sea otra clase. Cada vez que el usuario desea publicar algo, creamos una instancia de la clase Post. Dejaré los detalles más finos de esta abstracción.

¿Qué queremos decir cuando decimos que dos instancias de la clase Usuario son amigos? Están conectados en un gráfico. Llamemos a esto un gráfico de amistad o FG. Técnicamente, si un usuario tiene n amigos, entonces hay n bordes unidos a ese nodo de usuario en el FG.

Ahora que tenemos nuestra arquitectura básica en su lugar, buscar y mostrar publicaciones pertenecientes a tus amigos es trivial. La aplicación envía tu nueva publicación a todos tus amigos cada vez que creas una.

Un problema más desafiante sería mostrar publicaciones de su red. Supongamos que A y B son amigos, mientras que C y B son amigos, pero A y C no lo son. Ahora, si construimos un gráfico, A y C pertenecen a los mismos componentes conectados pero no son adyacentes. Sin embargo, A podría estar interesado en las publicaciones de C. Entonces, el desafío es predecir cuándo podría ser.

Digamos que C crea una instancia de una publicación y se envía a B. B ofrece algún tipo de retroalimentación positiva para indicar que la publicación fue buena (me gusta, votos a favor, estrellas, corazones, retweets). Si A y C tienen k amigos mutuos (vecinos intermedios) y a casi todos les gusta esa publicación, se reenvía a A. Implementar esto es un poco difícil porque tienes que eliminar publicaciones redundantes y cosas por el estilo. Pronto podremos propagar una publicación realmente agradable a través del componente conectado de esta manera.

Así es como construiría mi estructura de datos subyacente.

More Interesting

Cómo resolver ADAGAME en SPOJ

Sin el uso de un generador de números aleatorios, ¿cuál es el método más complicado que se te ocurre para generar una serie de números enteros?

En file.log, cada línea comienza con una marca de fecha completa. ¿Qué comando podría usarse para devolverme las líneas N-1, N y N + 1 con una diferencia de tiempo mayor que X segundos entre N y N + 1?

¿Qué algoritmos necesito aprender para resolver al menos 5 problemas en los concursos de CodeChef Long?

¿Qué estoy haciendo mal al determinar el big-O de estas funciones Java?

Cómo reducir los componentes fuertemente conectados en nodos únicos de manera eficiente si estoy usando una representación de lista de adyacencia

¿Qué algoritmo deberíamos usar para maximizar el CTR y predecir el CTR al mostrar un anuncio?

¿Por qué conocer estructuras de datos y algoritmos básicos no es suficiente para descifrar la mayoría de las entrevistas técnicas?

¿Cuál es la mejor estrategia para obtener una solución óptima para cualquier problema de codificación solicitado en la entrevista de codificación?

¿Qué representa un peso en los bordes en un gráfico ponderado en la teoría de gráficos?

¿Cuál es el algoritmo del cerebro humano?

¿Dónde encuentro los mejores recursos para aprender algoritmos y estructuras de datos?

¿Por qué Java utiliza una implementación mediocre de hashCode para cadenas?

¿Qué nivel de matemática se requiere para el libro "Introducción a los algoritmos 3ra edición" (MIT Press)?

Dada una expresión matemática 2 + 4 * 6 + 8-11, ¿cómo la colocaría entre corchetes de manera que proporcione el valor máximo? ¿Es posible codificar esto?