Arian Soleimanzadeh
  • 홈
  • 블로그
  • 팟캐스트
  • 비디오
  • 라이브러리
  • 문의
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
패널•빠른 문의

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

상담 예약

짧은 메시지를 남겨주세요 — 가능한 한 빠르게 답변드리겠습니다.

LinkedIn빠른 응답
홈/아티클/Eulerian Path와 Circuit: 모든 간선을 정확히 한 번 사용하기
AlgorithmsGraph Algorithms아티클

Eulerian Path와 Circuit: 모든 간선을 정확히 한 번 사용하기

Eulerian Path와 Circuit의 degree 조건, Hierholzer 알고리즘, 방향/무방향 그래프, 복잡도와 실무 활용을 설명합니다.

2026년 8월 21일9 분 읽기8 조회수
#Graph#Algorithms#Eulerian Path#Eulerian Circuit#Hierholzer#JavaScript#TypeScript

Arian Soleimanzadeh

Software Engineer & Researcher

Eulerian Path와 Eulerian Circuit 시각 가이드

Arian Soleimanzadeh

AI · 코드 · 제품

연구 + 엔지니어링
이 페이지에서
Hamiltonian과의 차이무방향 그래프 조건Hierholzer 알고리즘방향 그래프복잡도실제 활용정리

Eulerian Path는 그래프의 모든 간선을 정확히 한 번씩 사용하는 경로입니다.

Eulerian Circuit은 같은 조건을 만족하면서 마지막에 시작 정점으로 돌아옵니다.

Hamiltonian과의 차이

Eulerian은 간선을 중심으로 합니다.

Code
1
모든 Edge를 정확히 한 번

Hamiltonian은 정점을 중심으로 합니다.

Code
1
모든 Vertex를 정확히 한 번

Eulerian Path에서는 같은 정점을 여러 번 방문할 수 있습니다.

무방향 그래프 조건

Eulerian Circuit이 존재하려면:

  • 간선을 가진 모든 정점이 하나의 연결 성분에 있어야 하고,
  • 모든 정점의 degree가 짝수여야 합니다.

Eulerian Path는 정확히 두 개의 홀수 degree 정점을 허용합니다.

Code
123
홀수 정점 0개 → Circuit
홀수 정점 2개 → Path
2개 초과 → Eulerian Trail 없음

Hierholzer 알고리즘

사용하지 않은 간선을 계속 따라가고, 더 이상 갈 간선이 없을 때 Stack에서 되돌아오며 결과를 구성합니다.

JavaScript
12345678910111213141516171819202122
function eulerTrailDirected(graph, start) {
  const g = Object.fromEntries(
    Object.entries(graph).map(
      ([node, edges]) => [node, [...edges]]
    )
  );

  const stack = [start];
  const path = [];

  while (stack.length) {
    const current = stack[stack.length - 1];

    if ((g[current]?.length ?? 0) > 0) {
      stack.push(g[current].pop());
    } else {
      path.push(stack.pop());
    }
  }

  return path.reverse();
}

방향 그래프

Eulerian Circuit에서는 활성 정점마다:

Code
1
inDegree = outDegree

가 필요합니다.

Eulerian Path에서는 시작 정점과 끝 정점에 각각 하나의 degree 불균형이 생길 수 있습니다.

복잡도

적절한 자료구조에서는:

Code
1
O(V + E)

시간에 동작합니다.

실제 활용

  • 도로 청소
  • 네트워크 링크 점검
  • Route Inspection
  • 한 붓 그리기 퍼즐
  • de Bruijn Graph 기반 DNA Assembly

정리

모든 간선을 덮는 것이 목표라면 Eulerian을 생각하고, 모든 정점을 한 번씩 방문하는 것이 목표라면 Hamiltonian을 생각하면 됩니다.

이 페이지에서
Hamiltonian과의 차이무방향 그래프 조건Hierholzer 알고리즘방향 그래프복잡도실제 활용정리

아티클 정보

게시 정보, 읽기 시간 및 조회 데이터입니다.

게시일

2026년 8월 21일

업데이트

2026년 10월 27일

읽기 시간

9 분 읽기

조회수

8

작성자

Arian Soleimanzadeh

이전 아티클

Prim's Algorithm: MST, Min-Heap와 Cut Property

다음 아티클

Hamiltonian Path와 Cycle: 모든 정점을 정확히 한 번 방문하기

Arian Soleimanzadeh

현대적인 웹 엔지니어링, UI 시스템, 실용적인 AI 제품에 집중한 개인 포트폴리오 — 깨끗한 코드, 명확한 디자인.

빠른 링크

  • 소개
  • 블로그
  • 라이브러리
  • 문의

문의

  • soleimanzadeh.a.work@gmail.com
  • soleimanzadeh.uni@gmail.com

가능 시간: 평일

보통 다음 시간 내에 답변합니다 24시간.

뉴스레터

글, 프로젝트, 새 릴리스에 대한 업데이트를 받아보세요.

© 2026 ariansoleimanzadeh.dev — 모든 권리 보유.

LinkedIn