1 2 3Arriba hay un gráfico muy simple, no dirigido, donde tiene tres nodos, donde el primer nodo está conectado al segundo y tercer nodo. Nota : Los números en la parte superior e izquierda de la matriz son solo etiquetas para los nodos. A continuación se muestra una implementación de JavaScript de la misma cosa.
------
1 | 0 1 1
2 | 1 0 0
3 | 1 0 0
var adjMat = [A diferencia de una lista de adyacencia, cada "fila" de la matriz debe tener el mismo número de elementos que los nodos en el gráfico. Aquí tenemos una matriz de tres por tres, lo que significa que tenemos tres nodos en nuestro gráfico. Un gráfico dirigido se vería similar. A continuación se muestra un gráfico donde el primer nodo tiene un borde que apunta hacia el segundo nodo, y luego el segundo nodo tiene un borde que apunta al tercer nodo.
[0, 1, 1],
[1, 0, 0],
[1, 0, 0]
];
var adjMatDirected = [Los gráficos también pueden tener pesos en sus bordes. Hasta ahora, tenemos bordes no ponderados donde solo la presencia y la falta de borde es binaria (
[0, 1, 0],
[0, 0, 1],
[0, 0, 0]
];
0
o 1
). Puede tener diferentes pesos dependiendo de su aplicación. undirectedAdjList
solo debe contener cinco nodos.
testString: 'assert((adjMatUndirected.length === 5) && adjMatUndirected.map(function(x) { return x.length === 5 }).reduce(function(a, b) { return a && b }) , "undirectedAdjList
should only contain five nodes.");'
- text: Debe haber un borde entre el primer y cuarto nodo.
testString: 'assert((adjMatUndirected[0][3] === 1) && (adjMatUndirected[3][0] === 1), "There should be an edge between the first and fourth node.");'
- text: Debe haber un borde entre el primer y tercer nodo.
testString: 'assert((adjMatUndirected[0][2] === 1) && (adjMatUndirected[2][0] === 1), "There should be an edge between the first and third node.");'
- text: Debe haber un borde entre el tercer y quinto nodo.
testString: 'assert((adjMatUndirected[2][4] === 1) && (adjMatUndirected[4][2] === 1), "There should be an edge between the third and fifth node.");'
- text: Debe haber un borde entre el cuarto y quinto nodo.
testString: 'assert((adjMatUndirected[3][4] === 1) && (adjMatUndirected[4][3] === 1), "There should be an edge between the fourth and fifth node.");'
```