[알고리즘] 그래프 - JavaScript

2022. 8. 12. 17:08·알고리즘/풀이 힌트
반응형

그래프? 

정점과 정점 사이를 연결하는 간선으로 이루어진 비선형 자료구조이다. 

정점 집합과 간선 집합으로 표현할 수 있다. 

 

그래프의 특징

  • 정점은 여러 개의 간선을 가질 수 있다. 
  • 크게 방향 그래프와 무방향 그래프로 나눌 수 있다. 
  • 간선은 가중치를 가질 수 있다. 
  • 사이클이 발생할 수 있다. 

무방향 그래프

간선으로 이어진 정점끼리 양방향으로 이동이 가능한 그래프이다. 

표현에 ( A, B )와 ( B, A )는 같은 간선으로 취급한다. 

 

방향 그래프

간선에 방향성이 존재하는 그래프이다.

양방향으로 갈 수 있더라도 ( A, B )와 ( B, A )는 다른 간선으로 취급한다. 

 

JavaScript에서 사용하기

인접 행렬 

const graph = Array.from(
    Array(5),
    () => Array(5).fill(false)
);

graph[0][1] = true;  // 0 => 1 
graph[0][3] = true;  // 0 => 3
graph[3][4] = true;  // 3 => 4

인접 행렬은 그래프의 연결 관계를 이차원 배열로 나타내는 방식이다. 

여기서 만약 가중치를 주고 싶다면 false와 true가 아닌 0, 1, 2, 3, ... 같이 가중치를 넣어주면 된다. 

 

인접 리스트 

const graph = Array.from(
    Array(5),
    () => []
);

graph[0].push(1); // 0 => 1

자바스크립트에서는 배열이 연결 리스트와 같은 역할을 하기 때문에 마찬가지로 배열을 통해서 

구현이 가능하다. 

 

정점의 수만큼 배열을 만들고 각 배열에 연결된 정점을 넣어주면 된다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 > 풀이 힌트' 카테고리의 다른 글

[알고리즘] 트라이 - JavaScript  (1) 2022.08.15
[알고리즘] 힙 - JavaScript  (1) 2022.08.13
[알고리즘] 해시 테이블 - JavaScript  (1) 2022.08.09
[알고리즘] Queue - JavaScript  (0) 2022.08.07
[알고리즘] Stack - JavaScript  (1) 2022.08.05
'알고리즘/풀이 힌트' 카테고리의 다른 글
  • [알고리즘] 트라이 - JavaScript
  • [알고리즘] 힙 - JavaScript
  • [알고리즘] 해시 테이블 - JavaScript
  • [알고리즘] Queue - JavaScript
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    Node.js
    바질 키우기
    Docker
    자바스크립트
    식물
    리얼클래스
    react
    영어독학
    타일러영어
    바질
    알고리즘
    redux
    덤프
    javascript
    리액트
    네트워크
    ReactNative
    타입스크립트
    네이버 부스트캠프
    next.js
    Babel
    CSS
    CCNA
    영어회화
    리얼학습일기
    프로그래머스
    다이소
    ChatGPT
    typescript
    webpack
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[알고리즘] 그래프 - JavaScript
상단으로

티스토리툴바