¿Es posible usar los poderes de una matriz de adyacencia para calcular las rutas más cortas que BFS calcularía?

Tu intuición está en la línea correcta, y lo que dices es posible. Sin embargo, es así en gastos generales computacionales adicionales.
Una matriz de adyacencia [matemática] A [/ matemática] tiene entradas [matemática] a_ {ij} = 1 [/ matemática] iff [matemática] (ij) \ en E [/ matemática], y 0 en caso contrario. Dada una columna de esta matriz, para algunas [matemáticas] j \ in \ {1,2, .. n, \} [/ matemáticas], [matemáticas] \ Sigma_ {i = 1} ^ {n} a_ {ij} = [/ math] Número de vértices adyacentes a j. Entonces, al multiplicar esta fila ‘n -1’ veces en la multiplicación de Matrix, tendría el número de caminatas desde i -> j de longitud ‘n-1’ (que es la longitud máxima permitida de una ruta). Puede usar la Multiplicación matricial para encontrar esta ‘k’, de modo que tenga la ruta más corta desde un nodo fijo [math] s [/ math] a todos los demás nodos mirando una columna [math] a_ {is} [/ matemática], para [matemática] i \ in \ {1,2,… n – 1 \} [/ matemática], para [matemática] A ^ {k} [/ matemática], donde [matemática] k \ in \ { 1,2, .. n \} [/ matemáticas]. La primera vez que vea un valor distinto de cero iluminado en la entrada [math] a_ {is} [/ math], sabrá que el valor ‘k’ correspondiente es la longitud de la ruta más corta desde i -> s (o viceversa), ya que este gráfico no está dirigido.

Sin embargo, tenga en cuenta la complejidad computacional ineficiente de este algoritmo. Recuerde que la multiplicación de matrices es costosa, por lo tanto, su análisis del peor de los casos es: [matemática] O (n ^ {2} l [/ matemática] [matemática] og ([/ matemática] [matemática] k)) [/ matemática] , donde [matemáticas] k \ en \ {1,2, …, n-1 \} [/ matemáticas]. El BFS utiliza un enfoque ‘memorizado’ y hace un uso eficiente de la Estructura de datos de la Lista de adyacencia. No importa cuál sea la longitud de la ruta involucrada, el peor análisis de caso para BFS es [matemática] O (n + m) [/ matemática] ~ [matemática] O (n ^ {2}) [/ matemática], incluso en Un gráfico denso.

La razón de esto es que BFS está ‘memorizado’, COMIENZA su procedimiento en el nodo [math] s [/ math]. La multiplicación de matrices es ingenua-recursiva. Utiliza la simetría de los caminos no dirigidos para terminar en una columna particular que le interese. La ecuación recursiva es la misma, pero BFS es la alternativa más inteligente (similar a la programación dinámica) al enfoque de multiplicación matricial más formal e matemáticamente más intuitivo.

¡Espero que esto ayude!

More Interesting

¿Son los métodos en algoritmos Java?

¿Qué papel juega la comprensión de los algoritmos y las estructuras de datos en la construcción de proyectos, conseguir un trabajo y hacer su trabajo?

¿Cómo funciona el algoritmo de búsqueda de ruta de StarCraft II?

¿Qué estructura de datos es mejor para implementar una guía telefónica: Trie o Hash? ¿Por qué?

¿Los algoritmos están sesgados inherentemente hacia las opiniones subjetivas de sus creadores humanos?

¿Cuál fue el primer juego de computadora en usar un generador de números aleatorios?

¿Qué son los proyectos de código abierto? Soy muy bueno en C ++, estructuras de datos y algoritmos. ¿Puedo contribuir a algunos proyectos de código abierto? Si es así, ¿cómo? ¿Tendré que aprender algún idioma nuevo?

Cómo comenzar a aprender cómo crear algoritmos de comercio Quant en Java

¿De qué se tratan las estructuras de datos como curso de informática? . ¿Y depende de algún idioma?

¿Cómo puedo escribir un programa para encontrar el MCM de dos enteros positivos de su factorización prima?

¿Puedo construir un algoritmo de negociación basado en una estrategia de tendencia y usarlo para comerciar divisas durante diez años, por ejemplo?

¿Es cierto que no debería importarme tanto aprender lenguajes de programación sino construir una gran base de estructuras de datos y algoritmos?

Cómo demostrar que este gráfico todavía puede estar fuertemente conectado

Para el siguiente algoritmo sea n = 0. Para cada persona en la sala, establezca n = n + 1 '. ¿Dónde exactamente explica el algoritmo que compones n?

Además de la velocidad, ¿qué otras medidas de eficiencia se podrían usar en un entorno real?