¿Por qué no usar Dijkstra o Bellman-Ford para encontrar el camino más corto entre dos personas en Facebook y por qué no usar BFS bidireccional en DVR o LSR?

Para la pregunta 1:

  • Veamos el entorno y el costo del tiempo de ejecución de Dijkstra
    • => Complejidad de tiempo = O (V + E)
    • => Complejidad espacial = O (V + E)
    • => Es un algoritmo de un núcleo, una máquina con un espacio de direcciones
  • Veamos a los usuarios de Facebook db
    • Usuarios en db> 5 mil millones (activo + inactivo)
    • datos distribuidos en múltiples máquinas
    • Molinos de tiempo esperado
  • Como puede ver arriba, el algoritmo realmente no coincide con el contexto y los requisitos
  • ¿Cómo se resuelven?
    • versiones paralelas de algoritmos
    • cachés medio calculados (este caché ayuda a la ejecución en tiempo de ejecución mucho más rápido para múltiples problemas en Facebook)
    • técnicas de poda
    • división de gráficos y aplicación individual de algos en cada parte
    • algoritmos limitantes en pasos específicos (detener después de la profundidad ‘n’)
    • etc …
  • Como Bellman-Ford es aún más complejo que Dijkstra, el mismo problema también se aplica aquí

More Interesting

¿Qué algoritmo se usa para la predicción de abandono?

¿Cuál es el intercambio de espacio temporal en las estructuras de datos?

¿Ha habido algún trabajo teórico que delinee qué clase de algoritmos pueden y no pueden mapearse para mapear / reducir?

¿Cuál es la complejidad temporal del algoritmo babilónico para encontrar la raíz cuadrada?

Sea X la solución del costo O (n ^ k) para un problema Q en NP-c. ¿Implicaría que existe una solución de costo O (n ^ k) para todos los problemas Q 'en NP-c?

¿Cuáles son algunos problemas del mundo real que podrían resolverse con la programación / codificación?

¿Por qué se utilizan montones para la asignación de memoria? ¿Por qué no se utilizan pilas ni ninguna otra?

¿Contamos la estructura original dada mientras contamos el número total de isómeros?

¿Convertir el tamaño de matriz en un número primo ayuda en la implementación de la tabla hash? ¿Por qué?

¿Qué criterios se utilizan para contar un buen algoritmo?

¿Cuál es la mejor manera de procesar consultas de accesibilidad en un DAG con restricciones?

¿Cómo eliminará elementos de manera eficiente mientras itera una Colección?

¿Cómo debo usar el libro Introducción a los algoritmos de Cormen de manera efectiva? ¿Es mejor elegir un tema que haya encontrado en algún lugar de la programación competitiva y leer un algoritmo relacionado con eso o revisarlo de principio a fin?

¿Cómo implementaría el aumento de precios utilizando estructuras de datos?

Cómo implementar un algoritmo de sincronización de reloj Berkeley en C ++