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

3.6 KiB

id title challengeType videoUrl localeTitle
587d8256367417b2b2512c78 Adjacency Matrix 1 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

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

var adjMatUndirected = [
];

Solution

// solution required