[Algorithm] JavaScript Graph Data Structure
Posted Answer1215
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Algorithm] JavaScript Graph Data Structure相关的知识,希望对你有一定的参考价值。
A graph is a data structure comprised of a set of nodes, also known as vertices, and a set of edges. Each node in a graph may point to any other node in the graph. This is very useful for things like describing networks, creating related nonhierarchical data, and as we will see in the lesson, describing the relationships within one‘s family.
In a Graph, there are Nodes, and connects between nodes are Edges.
For node:
function createNode(key) { let children = []; return { key, children, // the nodes which connect to addChild(child) { children.push(child) } } }
Graph:
function createGraph(directed = false) { const nodes = []; const edges = []; return { nodes, edges, directed, addNode(key) { nodes.push(createNode(key)) }, getNode (key) { return nodes.find(n => n.key === key) }, addEdge (node1Key, node2Key) { const node1 = this.getNode(node1Key); const node2 = this.getNode(node2Key); node1.addChild(node2); if (!directed) { node2.addChild(node1); } edges.push(`${node1Key}${node2Key}`) }, print() { return nodes.map(({children, key}) => { let result = `${key}`; if (children.length) { result += ` => ${children.map(n => n.key).join(‘ ‘)}` } return result; }).join(‘ ‘) } } }
Run:
const graph = createGraph(true) graph.addNode(‘Kyle‘) graph.addNode(‘Anna‘) graph.addNode(‘Krios‘) graph.addNode(‘Tali‘) graph.addEdge(‘Kyle‘, ‘Anna‘) graph.addEdge(‘Anna‘, ‘Kyle‘) graph.addEdge(‘Kyle‘, ‘Krios‘) graph.addEdge(‘Kyle‘, ‘Tali‘) graph.addEdge(‘Anna‘, ‘Krios‘) graph.addEdge(‘Anna‘, ‘Tali‘) graph.addEdge(‘Krios‘, ‘Anna‘) graph.addEdge(‘Tali‘, ‘Kyle‘) console.log(graph.print()) /* Kyle => Anna Krios Tali Anna => Kyle Krios Tali Krios => Anna Tali => Kyle */
以上是关于[Algorithm] JavaScript Graph Data Structure的主要内容,如果未能解决你的问题,请参考以下文章
[Algorithm] Median Maintenance algorithm implementation using TypeScript / JavaScript
[Algorithm] Maximum Contiguous Subarray algorithm implementation using TypeScript / JavaScript
[Algorithm] JavaScript Graph Data Structure