3.6 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d8256367417b2b2512c79 | Matriz de incidencia | 1 | 301644 | incidence-matrix |
--description--
Otra forma de representar un gráfico es ponerlo en un matriz de incidencia.
Un 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 los gráficos, tenemos aristas y nodos. Estas serán nuestras "dos clases diferentes de objetos". Esta matriz tendrá las filas como nodos y las columnas como aristas. 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, se pondrá un 1 en las dos filas de una columna en particular. Debajo hay un gráfico de 3 nodos con un borde entre el nodo 1 y el nodo 3.
1
---
1 | 1
2 | 0
3 | 1
He aquí un ejemplo de una matriz de incidencia con 4 bordes y 4 nodos. Recuerde que las columnas son los bordes y las filas son los propios nodos.
1 2 3 4
--------
1 | 0 1 1 1
2 | 1 0 0
3 | 1 0 0 1
4 | 0 0 1 0 0 0 0 0 0 0 0
A continuación se muestra una implementación en JavaScript del mismo objeto.
var incMat = [
[0, 1, 1, 1],
[1, 1, 0, 0],
[1, 0, 0, 1],
[0, 0, 1, 0]
];
Para hacer una gráfica dirigida, use -1 para que un borde deje un nodo en particular y 1 para que un borde entre en un nodo.
var incMatDirected = [
[ 0, -1, 1, -1],
[-1, 1, 0, 0],
[ 1, 0, 0, 1],
[ 0, 0, -1, 0]
];
Los grafos tambien pueden tener pesos en sus aristas. Hasta el momento, tenemos aristas no ponderadas donde solo la presencia y falta de arista es binaria(0 o 1). Puedes tener diferentes pesos dependiendo de tu aplicación. Un peso diferente se representa como números mayores que 1.
--instructions--
Crea una matriz de incidencia de un gráfico no dirigido con cinco nodos y cuatro bordes. Esta matriz debe estar en un arreglo muti-dimensional.
Estos cinco nodos tienen las siguientes relaciones. El primer borde está entre el primer y el segundo nodo. El segundo borde está entre el segundo y el tercer nodo. El tercer borde está entre el tercer y el quinto nodo. El cuarto borde está entre el cuarto y el segundo nodo. Todos los pesos de bordes son uno y el orden de ventaja importa.
--hints--
incMatUndirected solo debe contener cinco nodos.
assert(
incMatUndirected.length === 5 &&
incMatUndirected
.map(function (x) {
return x.length === 4;
})
.reduce(function (a, b) {
return a && b;
})
);
Debería haber un primer borde entre el primer y el segundo nodo.
assert(incMatUndirected[0][0] === 1 && incMatUndirected[1][0] === 1);
Debería haber un segundo borde entre el segundo y el tercer nodo.
assert(incMatUndirected[1][1] === 1 && incMatUndirected[2][1] === 1);
Debería haber un tercer borde entre el tercer y el quinto nodo.
assert(incMatUndirected[2][2] === 1 && incMatUndirected[4][2] === 1);
Debería haber un cuarto borde entre el segundo y el cuarto nodo.
assert(incMatUndirected[1][3] === 1 && incMatUndirected[3][3] === 1);
--seed--
--seed-contents--
var incMatUndirected = [
];
--solutions--
var incMatUndirected = [[1, 0, 0, 0],[1, 1, 0, 1],[0, 1, 1, 0],[0, 0, 0, 1],[0, 0, 1, 0]];