Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

자바스크립트에서 그래프 만들기


가중치와 방향성 및 비방향성 유형을 모두 지원하는 그래프 클래스를 만들 것입니다. 이것은 인접 목록을 사용하여 구현됩니다. 고급 개념으로 이동함에 따라 그래프의 가중치와 방향성이 모두 유용할 것입니다.

인접 목록은 개별 목록의 배열 A입니다. 배열 Ai의 각 요소는 정점 i에 인접한 모든 정점을 포함하는 목록입니다. 2개의 멤버, 노드 및 에지를 사용하여 정의하고 있습니다.

그래프에 노드와 가장자리를 추가하는 데 사용할 클래스와 몇 가지 메서드를 정의하여 그래프 클래스를 설정해 보겠습니다.

우리는 처음에 다음 메소드를 정의할 것입니다 -

  • addNode:그래프에 노드 추가
  • addEdge:그래프에 무방향 가장자리를 추가합니다.
  • addDirectedEdge:방향 가장자리를 추가합니다.

예시

class Graph {
   constructor() {
      this.edges = {};
      this.nodes = [];
   }
   addNode(node) {
      this.nodes.push(node);
      this.edges[node] = [];
   }
   addEdge(node1, node2) {
      this.edges[node1].push(node2);
      this.edges[node2].push(node1);
   }
   addDirectedEdge(node1, node2) {
      this.edges[node1].push(node2);
   }
   display() {
      let graph = ""; this.nodes.forEach(node => {
         graph += node + "->" + this.edges[node].join(", ") + "\n";
      });
      console.log(graph);
   }
}

다음을 사용하여 이러한 메서드와 클래스를 테스트할 수 있습니다.

예시

let g = new Graph();
g.addNode("A");
g.addNode("B");
g.addNode("C");
g.addNode("D");
g.addNode("E");
 
g.addEdge("A", "C");
g.addEdge("A", "B");
g.addDirectedEdge("A", "D");
g.addEdge("D", "E");

g.display();

출력

이것은 출력을 줄 것입니다 -

A->C, B, D
B->A
C->A
D->E
E->D