如何将二维数组转换为图形.其中数组的每个元素都与它们的邻居连接(邻居是上、下、右和左).
假设一个2x2数组是:
[
[A, B]
[C, D]
]
图表将是这样的:
图的邻接矩阵是这样的:
A | B | C | D | |
---|---|---|---|---|
A | 0 | 1 | 1 | 0 |
B | 1 | 0 | 0 | 1 |
C | 1 | 0 | 0 | 1 |
D | 0 | 1 | 1 | 0 |
图的邻接列表是这样的:
A -> B,C
B -> A,D
C -> A,D
D -> B,C
这将需要什么算法?
我只是try 在JS中将2D数组转换为图形.
我有一个叫vertex的类:
class Vertex {
constructor(value) {
this.value = value;
this.neighbors = [];
}
/**
*
* @param {Vertex} v
*/
addNeighborsVertex(v) {
this.neighbors.push(v);
}
}
例如2D数组:
let arr = [
["A","B"],
["C","D"]
]
一个可以取二维数组并转换成图形顶点并返回顶点列表的函数.每个顶点都包含了顶点值和它们的邻居.邻居列表也包含顶点的实例.例如,元素"A"的顶点看起来像这样:
{
value : "A",
neighbors : [
instanceOfVertexB,
instanceOfVertexC
]
}
不允许重复."A"和"D"有相同的邻居,也就是"B".在这种情况下,顶点"A"和顶点"D"都持有顶点"B"的相同实例.
如何在js中做到这一点?