[알고리즘] 그래프 - 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)
  • 태그

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

티스토리툴바