Udemy – Javascript –

Udemy – 자바스크립트 – 그래픽

유데미 자바스크립트

그래프

그래프는 정점, 노드 또는 점의 유한하고 다양한 세트로 구성된 데이터 구조입니다.

그래프는 노드 또는 노드 간의 연결 모음입니다.


이진 트리와 달리 노드만 함께 연결하면 됩니다.

차트 사용

  • 소셜 네트워크
  • 좌표/지도
  • 라우팅 알고리즘
  • 시각적 계층


차트 유형

  • 정점: 노드
  • 에지: 노드와 노드를 연결하는 선
  • 유향/무향 그래프
    • 무방향 그래프: 특정 경로/방향 없이 두 노드 사이를 오갈 수 있음


  • 유방향 그래프: 모든 모서리에는 방향이 있습니다.

    방향이 정해진 곳만 갈 수 있다


  • 가중/비가중 그래프
    • Weighted Graph : 경로별로 값을 더한 그래프
      • 예를 들어 최단 경로를 찾는 데 사용됩니다.


  • 비가중 차트: 값이 없는 차트입니다.

정렬 차트

이웃 행렬



연결된 VERTEX를 1로 표현하여 테이블(행) 형태의 차트를 생성합니다.

인접 목록


  • 0(1, 5)에 연결된 노드
  • 1(0, 2)에 연결된 노드
  • 2에 연결된 노드(1, 3)
  • 3에 연결된 노드(2, 4)
  • 4에 연결된 노드(3, 5)
  • 5에 연결된 노드(4, 0)

배열과 목록을 사용하여 가장자리 저장


이웃 목록

class Graph {
    constructor(){
        this.adjacencyList = {}
    }

    addVertex(vertex){
        // 똑같은 vertex가 들어오면, 이미 있는 것을 덮어 쓴
        if(!
this.adjacencyList(vertex)) this.adjacencyList(vertex) = (); } addEdge(v1, v2) { this.adjacencyList(v1).push(v2); this.adjacencyList(v2).push(v1); } removeEdge(v1, v2) { this.adjacencyList(v1) = this.adjacencyList(v1).filter( v => v !
== v2 ); this.adjacencyList(v2) = this.adjacencyList(v2).filter( v => v !
== v1 ); } removeVertex(vertex) { while (this.adjacencyList(vertex).length){ const adjacencyVertex = this.adjacencyList(vertex).pop(); this.removeEdge(vertex, adjacencyListVertex); } delete this.adjacencyList(vertex) } }