freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/data-structures/adjacency-matrix.spanish.md

3.7 KiB

id title challengeType videoUrl localeTitle
587d8256367417b2b2512c78 Adjacency Matrix 1 Matriz de adyacencia

Description

Otra forma de representar una gráfica es colocarla en una matriz de adyacencia . Una matriz de adyacencia es una matriz bidimensional (2D) donde cada matriz anidada tiene el mismo número de elementos que la matriz externa. En otras palabras, es una matriz o cuadrícula de números, donde los números representan los bordes. Los ceros significan que no hay ventaja o relación.
1 2 3
------
1 | 0 1 1
2 | 1 0 0
3 | 1 0 0
Arriba 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.
var adjMat = [
[0, 1, 1],
[1, 0, 0],
[1, 0, 0]
];
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.
var adjMatDirected = [
[0, 1, 0],
[0, 0, 1],
[0, 0, 0]
];
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 o 1 ). Puede tener diferentes pesos dependiendo de su aplicación.

Instructions

Cree una matriz de adyacencia de un gráfico no dirigido con cinco nodos. Esta matriz debe estar en una matriz multidimensional. Estos cinco nodos tienen relaciones entre el primer y cuarto nodo, el primer y tercer nodo, el tercer y quinto nodo y el cuarto y quinto nodo. Todos los pesos de los bordes son uno.

Tests

tests:
  - text: <code>undirectedAdjList</code> 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 }) , "<code>undirectedAdjList</code> 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.");'

Challenge Seed

var adjMatUndirected = [
];

Solution

// solution required