Red de conocimiento informático - Conocimiento sistemático - Encuentre la distancia más corta entre dos puntos cualesquiera en la matriz de adyacencia. El procedimiento es el siguiente, ¿alguien puede explicar qué significa?

Encuentre la distancia más corta entre dos puntos cualesquiera en la matriz de adyacencia. El procedimiento es el siguiente, ¿alguien puede explicar qué significa?

Según los requisitos de lz, el más adecuado es el algoritmo de floyd

El siguiente es el código escrito de acuerdo con este algoritmo que lz puede convertirlo en una función por sí mismo

D=[0. 1 0 1 0 0

1 0 1 0 0 0 0

0 1 1 0 1 1 1 1

1 0 1 0 1 0 1 0

0 0 1 1 1 1 1 0 1

0 0 1 0 1 0 0];

n=longitud(D);

para k=1:n

para i=1:n

para j=1:n

para j=1:n

si 0

si D(i,j)==0 & i~=j

D(i,j )=D(i,k)+D(k,j);

si no

D(i,j)=min(D(i, j),D(i ,k)+D(k,j));

fin

fin

fin

fin

end

end

end

La respuesta se almacena en la matriz D, donde

D =

0 1 2 1 2 3

1 0 1 2 2 2

2 1 0 1 1 1

1 2 1 0 1 2

2 2 1 1 0 1

3 2 1 2 1 0

El algoritmo se basa en O(n3). 256^3=2^24 es aproximadamente igual a 16 millones

La eficiencia es completamente asequible.