Dado un gráfico de N vértices y la distancia entre los bordes de los vértices almacenados en tuplas T1 = (d11, d12, …, d1n) to Tn = (dn1, dn2, …, dnn)
. Descubra un árbol de expansión mínimo de este gráfico a partir del vértice V1. Además, imprima la distancia total recorrida necesaria para recorrer este árbol generado.
Example:
For N =5
T1 = (0, 4, 5, 7, 5)
T2 = (4, 0, 6, 2, 5)
T3 = (5, 6, 0, 2, 1)
T4 = (7, 2, 2, 0, 5)
T5 = (5, 5, 1, 5, 0)
Selection of edges according to minimum distance are:
V1 -> V2 = 4
V2 -> V4 = 2
V4 -> V3 = 2
V3 -> V5 = 1
Thus, MST is V1 -> V2 -> V4 -> V3 -> V5 and the distance travelled is 9 (4+2+2+1)
Literalmente, no tengo idea de cómo crear una gráfica de n vértices en R.
Busqué en google pero no entendí cómo abordar el problema anterior.
Por favor, ayúdame.
r
minimum-spanning-tree
Magie
fuente
fuente
igraph
paquete , o esta pregunta o esta función ?mst(g)
pero ¿quizás tambiénmst(g, weights = E(g)$weights)
?sum(E(mg)$weight)
, ¿dóndemg
está el gráfico de árbol de expansión mínimoRespuestas:
Su pregunta no parece coincidir con el título: ¿busca la creación del gráfico, no el MST? Una vez que tiene un gráfico, como dice @ user20650, el MST en sí mismo es fácil.
Es fácil crear un gráfico de tamaño n , pero existe una gran complejidad sobre qué nodos están conectados y sus pesos (distancias) de los que no nos habla, por lo que esta es una ilustración realmente básica.
Si suponemos que todos los nodos están conectados a todos los demás nodos (gráfico completo), podemos usar
make_full_graph
. Si ese no es el caso, necesita datos para decir qué nodos están conectados o utilizar un gráfico aleatorio.El siguiente problema son las distancias. No nos ha proporcionado ninguna información sobre cómo se distribuyen esas distancias, pero podemos demostrar su asignación al gráfico. Aquí, solo usaré números aleatorios uniformes [0-1]:
El siguiente bit es solo el MST, usando
minimum.spanning.tree
:El resultado se
mst
ve así:fuente
user20650
me ayudó. Es suficiente.