--- id: 587d8256367417b2b2512c78 title: Adjacency Matrix challengeType: 1 videoUrl: '' localeTitle: Matriz de adjacência --- ## Description
Outra maneira de representar um gráfico é colocá-lo em uma matriz de adjacência . Uma matriz de adjacência é uma matriz bidimensional (2D) onde cada matriz aninhada tem o mesmo número de elementos que a matriz externa. Em outras palavras, é uma matriz ou grade de números, onde os números representam as arestas. Zeros significa que não há vantagem ou relacionamento.
1 2 3
------
1 | 0 1 1
2 | 1 0 0
3 | 1 0 0
Acima está um gráfico muito simples, não direcionado, no qual você tem três nós, onde o primeiro nó está conectado ao segundo e terceiro nó. Nota : Os números na parte superior e esquerda da matriz são apenas rótulos para os nós. Abaixo está uma implementação JavaScript da mesma coisa.
var adjMat = [
[0, 1, 1]
[1, 0, 0]
[1, 0, 0]
];
Ao contrário de uma lista de adjacências, cada "linha" da matriz deve ter o mesmo número de elementos que os nós no gráfico. Aqui temos uma matriz de três por três, o que significa que temos três nós em nosso gráfico. Um gráfico direcionado seria semelhante. Abaixo está um gráfico onde o primeiro nó tem uma borda apontando para o segundo nó e, em seguida, o segundo nó tem uma borda apontando para o terceiro nó.
var adjMatDirected = [
[0, 1, 0]
[0, 0, 1]
[0, 0, 0]
];
Gráficos também podem ter pesos em suas bordas. Até agora, temos arestas não ponderadas onde apenas a presença e a falta de aresta é binária ( 0 ou 1 ). Você pode ter pesos diferentes dependendo do seu aplicativo.
## Instructions
Crie uma matriz de adjacência de um gráfico não direcionado com cinco nós. Essa matriz deve estar em uma matriz multidimensional. Esses cinco nós têm relações entre o primeiro e o quarto nó, o primeiro e o terceiro nó, o terceiro e o quinto nó e o quarto e o quinto nó. Todos os pesos de borda são um.
## Tests
```yml tests: - text: undirectedAdjList deve conter apenas cinco nós. 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: Deve haver uma borda entre o primeiro e o quarto nó. testString: 'assert((adjMatUndirected[0][3] === 1) && (adjMatUndirected[3][0] === 1), "There should be an edge between the first and fourth node.");' - text: Deve haver uma borda entre o primeiro e o terceiro nó. testString: 'assert((adjMatUndirected[0][2] === 1) && (adjMatUndirected[2][0] === 1), "There should be an edge between the first and third node.");' - text: Deve haver uma borda entre o terceiro e o quinto nó. testString: 'assert((adjMatUndirected[2][4] === 1) && (adjMatUndirected[4][2] === 1), "There should be an edge between the third and fifth node.");' - text: Deve haver uma borda entre o quarto e o quinto nó. testString: 'assert((adjMatUndirected[3][4] === 1) && (adjMatUndirected[4][3] === 1), "There should be an edge between the fourth and fifth node.");' ```
## Challenge Seed
```js var adjMatUndirected = [ ]; ```
## Solution
```js // solution required ```