Tengo algunos datos de ruta más cortos para un gráfico. ¿Puedo reconstruir el gráfico a partir de estos datos?
Más precisamente, tengo una matriz booleana (0/1) para cada vértice v en el gráfico (V, E) . El elemento de matriz [s, d] es igual a 1 si v v está en la ruta más corta desde el vértice de origen s hasta el vértice de destino d . Todos los bordes en el gráfico tienen la misma longitud.
Por ejemplo, para el gráfico
(V1) -- (V2) -- (V3)
las tres matrices serían:
V1:
1 1 1
1 0 0
1 0 0
V2:
0 1 1
1 1 1
1 1 0
V3:
0 0 1
0 0 1
1 1 1
Mis preguntas:
1) ¿hay un algoritmo para reconstruir el conjunto de bordes E a partir de estas matrices?
2) ¿la solución es siempre única? (Esto es más una curiosidad personal que un requisito real)
3) ¿se puede generalizar el algoritmo a longitudes de borde no uniformes?
algorithms
kfx
fuente
fuente

v1yv2, entonces exactamente estos dos vértices están en el camino más corto entrev1yv2. Entonces, para cualquier otro vérticev,[v1, v] == 0 == [v, v1]en la matriz dev2y[v2, v] == 0 == [v, v2]en la matriz dev1.Respuestas:
puede extraer la matriz de adyacencia de las matrices de ruta utilizando la siguiente propiedad.
Hay un borde entre 2 vértices
sydsi y solo si el camino más corto entre ellos contiene solosyd.Para una longitud no uniforme, solo obtendrá la solución única si se mantiene la desigualdad del triángulo . De lo contrario, un gráfico con
d(p1,p2)=1d(p2,p3)=2yd(p1,p3)=4mostrará la ruta más corta entrep1yp3como a través enp2lugar de la conexión directa. Lo que significa que el borde [p1, p3] nunca será parte de una ruta más corta.fuente