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

4.2 KiB

id title challengeType videoUrl localeTitle
587d8256367417b2b2512c79 Incidence Matrix 1 Matriz de incidencia

Description

Otra forma de representar una gráfica es colocarla en una matriz de incidencia. Una matriz de incidencia es una matriz bidimensional (2D). En términos generales, una matriz de incidencia relaciona dos clases diferentes de objetos entre sus dos dimensiones. Este tipo de matriz es similar a una matriz de adyacencia. Sin embargo, las filas y columnas significan algo más aquí. En las gráficas, tenemos aristas y nodos. Estas serán nuestras "dos clases diferentes de objetos". Esta matriz tendrá las filas, los nodos y las columnas, los bordes. Esto significa que podemos tener un número desigual de filas y columnas. Cada columna representará un borde único. Además, cada borde conecta dos nodos. Para mostrar que hay un borde entre dos nodos, colocará un 1 en las dos filas de una columna en particular. A continuación se muestra un gráfico de 3 nodos con un borde entre el nodo 1 y el nodo 3.
1
---
1 | 1
2 | 0
3 | 1
Aquí hay un ejemplo de una incidence matrix con 4 aristas y 4 nodos. Recuerde, las columnas son los bordes y las filas son los nodos mismos.
1 2 3 4
--------
1 | 0 1 1 1
2 | 1 1 0 0
3 | 1 0 0 1
4 | 0 0 1 0
A continuación se muestra una implementación de JavaScript de la misma cosa.
var incMat = [
[0, 1, 1, 1],
[1, 1, 0, 0],
[1, 0, 0, 1],
[0, 0, 1, 0]
];
Para hacer un gráfico dirigido, use -1 para un borde que sale de un nodo particular y 1 para un borde que ingresa a un nodo.
var incMatDirected = [
[0, -1, 1, -1],
[-1, 1, 0, 0],
[1, 0, 0, 1],
[0, 0, -1, 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. Un peso diferente se representa como números mayores que 1.

Instructions

Cree una matriz de incidencia de un gráfico no dirigido con cinco nodos y cuatro bordes. Esta matriz debe estar en una matriz multidimensional. Estos cinco nodos tienen relaciones siguiendo relaciones El primer borde está entre el primer y el segundo nodo. El segundo borde está entre el segundo y tercer nodo. El tercer borde está entre el tercer y quinto nodo. Y el borde cuatro está entre el cuarto y el segundo nodo. Todos los pesos de borde son uno y el orden de borde es importante.

Tests

tests:
  - text: <code>incMatUndirected</code> solo debe contener cinco nodos.
    testString: 'assert((incMatUndirected.length === 5) && incMatUndirected.map(function(x) { return x.length === 4 }).reduce(function(a, b) { return a && b }) , "<code>incMatUndirected</code> should only contain five nodes.");'
  - text: Debe haber un primer borde entre el primer y el segundo nodo.
    testString: 'assert((incMatUndirected[0][0] === 1) && (incMatUndirected[1][0] === 1), "There should be a first edge between the first and second node.");'
  - text: Debe haber un segundo borde entre el segundo y tercer nodo.
    testString: 'assert((incMatUndirected[1][1] === 1) && (incMatUndirected[2][1] === 1), "There should be a second edge between the second and third node.");'
  - text: Debe haber un tercer borde entre el tercer y quinto nodo.
    testString: 'assert((incMatUndirected[2][2] === 1) && (incMatUndirected[4][2] === 1), "There should be a third edge between the third and fifth node.");'
  - text: Debe haber un cuarto borde entre el segundo y cuarto nodo.
    testString: 'assert((incMatUndirected[1][3] === 1) && (incMatUndirected[3][3] === 1), "There should be a fourth edge between the second and fourth node.");'

Challenge Seed

var incMatUndirected = [

];

Solution

// solution required