[이산수학] 10강 - 그래프(2)

2026. 5. 27. 00:28·방송통신대학교/🕸️이산수학

✅ 1. 그래프의 탐색

(1) 평면 그래프

  • 평면 그래프: 그래프의 모든 변(간선)이 서로 교차하지 않게 그릴 수 있는 그래프를 평면 그래프라고 함.

  • 평면 그래프가 아닌 예시: 완전 그래프, 완전이분그래프 등은 변(간선)이 교차하는 그래프이기 때문에 평면 그래프가 아님.

  • 평면 그래프의 예시(1): 3-정규그래프는 평면 그래프로 변(간선)이 교차하지 않음. 또한, K4(완전그래프)와 동일한 완전 그래프로도 볼 수 있기 때문에 K4 또한 평면 그래프로 볼 수 있음.
  • K4(완전그래프) 평면 그래프인 이유: 교차된 한 변(간선)을 밖으로 돌아가서 연결되도록 하면 평면 그래프이기 때문임.

  • 평면 그래프의 예시(2): K5(완전그래프) 에서 한 변(간선)을 제거한 그래프는 위와같이 평면 그래프로 만들 수 있음.

(2) 오일러의 공식

  • 오일러 공식을 이해하기 위한 면(Face) 정의: 연결된 평면 그래프에서 변(간선)에서 만들어지는 사이클을 경계로 형성된 공간을 의미하며, 쉽게 말해 위의 f1, f2, f3, f4 의 사이클 공간 자체가 하나의 면이 되는 것임.

  • 오일러의 공식: 꼭지점의 수(v), 변의 수(e), 면의 수(f) 에 대한 공식 v - e + f = 2 가 항상 나오며, 이게 오일러 공식임.

(3) 4색 정리

  • 4색 정리: 평면에 그려진 어떤 지도라도, 국경을 맞댄 이웃 나라끼리 서로 다른 색을 칠할 때 딱 4가지 색만 있으면 모든 나라를 구별해서 칠할 수 있는 정리를 의미한다.

  • 4색 정리 - 평면 그래프 관점: 4색 정리의 또 다르게 정의를 내리면, 평면 그래프가 주어졌을 때, 각 꼭지점에 대하여 인접한 꼭지점과 서로 다른 색으로 칠하는데 필요한 색은 4가지면 충분하다로 정의를 내릴 수도 있음.

(4) 오일러 투어

  • 오일러 트레일: 트레일 자체의 개념은 정점의 중복은 허용이지만, 변(선)에 대한 중복은 허용을 하지 않는다는 개념이며, 반드시 모든 변을 지나갈 필요는 없는 상위적 개념이지만, 오일러 트레일은 모든 변을 반드시 한 번씩만 지나가야 하는 개념임. 즉, 오일러 트레일과 트레일의 차이점으로 볼 수 있음. ( 정점의 중복 허용임 )
  • 오일러 투어: 그래프에 있는 모든 변(선)을 단 한번씩만 거쳐서, 처음 출발했던 꼭지점으로 다시 돌아로는 경로를 의미함.
  • 즉, 시작점과 종점이 같은 오일러 트레일이기 때문에, 닫힌 오일러 트레일로도 볼 수 있음.
  • 정리: "모든 변(간선)을 단 한 번씩만 지나야 한다"는 조건은 오일러 투어에 적용되는 절대적인 규칙인 것임.

(5) 오일러 그래프 정리

  • 오일러 그래프: 오일러 투어를 가지는 그래프를 오일러 그래프라고 부름.
  • 오일러 그래프 정리: 연결 그래프가 오일러 투어를 가지기 위한 필요충분 조건은 그래프의 모든 꼭지점의 차수는 짝수다.
  • 즉, 오일러 투어를 가지기 위해서는 연결 그래프(연결 성분이 하나인 그래프)에서 모든 꼭지점의 차수는 짝수여야 함.

  • (1) 연결 그래프가 오일러 투어를 가지면 모든 꼭지점의 차수는 짝수 증명: 들어가는 간선이 존재한다면, 나가는 간선이 존재해야 하며, 그 이유는 중복된 간선의 사용은 허용하지 않는 트레일 구조이기 때문임.

  • (2) 연결 그래프 G의 모든 꼭지점의 차수는 짝수이면 G는 오일러 그래프 증명: (1) 번의 내용을 토대로 결론을 내리면 모든 꼭지점의 차수가 짝수면, 오일러 투어의 규칙인 간선의 중복 미허용과 모든 간선의 방문을 통해서 나가는 길과 들어오는 길을 따로 만드는 짝수로 해당 명제는 참임을 증명함.
  • 결과적으로 오일러 투어를 가지는 해당 그래프 G는 오일러 그래프로 볼 수 있음.

  • 오일러 그래프 알고리즘 단계별 정리: 
  • 1단계: G의 임의의 꼭지점 v를 고르기.
  • 2단계: v에서 시작하고 v에서 끝나는 임의의 작은 사이클 C를 선택
  • 3단계: 임의의 작은 사이클 C가 오일러 투어이면 즉, 모든 간선을 방문하고, 출발점으로 돌아온 상태이냐를 보고 맞으면 증명을 끝내고 만약 아니라면 아래 과정을 반복
  • 3-1단계: 임의의 작은 사이클 C의 해당하는 모든 변을 제거한 나머지를 가지는 새로운 G' 그래프를 만듦
  • 3-2단계: 버려진 C와 G' 가 공유하는 꼭지점 중 하나를 고르고 w로 정의를 함.
  • 3-3단계: w에서 시작하고 w에서 끝나는 임의의 사이클 C'을 선택
  • 3-4단계: 기존의 C와 새로 선택된 C'을 합쳐서 새로운 C를 만들고, 3단계로 돌아가서 증명이 참인지에 대한 검증을 반복함.
  • 즉, 작은 임의의 면(사이클을 가지는 변들)을 만들고, 오일러 투어인지 보고, 아닐 경우 해당 면의 인접한 꼭지점 아무거나 잡아서 임의의 면 또 만들면서 반복하는 느낌임.

  • 오일러 투어 찾기 예제: a, b, c, d 하나의 면을 v로 두고, 오일러 투어의 조건을 만족하는지 보면 e, f, h, g 가 있어서 조건을 만족하지 못하기 때문에 e, f, h, g 를 w로 두고, w와 v를 합치면 오일러 투어를 만족함.

(3) 해밀턴 경로

  • 해밀턴 경로: 그래프의 모든 꼭지점들을 한 번씩만 지나는 경로를 의미한다.
  • 해밀턴 사이클: 닫힌 해밀턴 경로를 의미하며, 시작점과 종점이 같은 해밀턴 경로이다.
  • 정리하면, 그래프의 모든 꼭지점들을 한 번씩만 모두 지나는 경로만 존재하면 해밀턴 경로이며, 만약 시작점과 종점이 같은 해밀턴 경로라면 이것은 해밀턴 사이클로 부름.

  • 해밀턴 경로 예제: 위의 왼쪽의 그래프 탐색이 해밀턴 경로이며, 모든 정점을 방문을 모습임.
  • 해밀턴 사이클 예제: 오른쪽 그래프 탐색이 해밀턴 사이클이며, 모든 정점을 방문한 뒤 시작점으로 돌아온 모습임.

  • 해밀턴 경로 및 사이클 예제: Herschel Graph 는 해밀턴 경로는 존재하나, 해밀턴 사이클(출발점으로 돌아오는 경로)는 존재하지 않는 특징이 있음.
  • 12면체 그래프는 해밀턴 경로도 되고, 해밀턴 사이클도 가능함.

✅ 2. 그래프의 활용

(1) 가중 그래프

  • 가중 그래프: 그래프의 각 변(간선)에 실수값이 붙여진 그래프를 의미하며, 변에 부여된 값은 가중치 라고 함.

  • 위와 같이 꼭지점(정점)을 연결하는 변(간선)에 가중치의 값이 부여된 그래프(가중 그래프)로 볼 수 있음.

  • 가중 그래프의 쓰임새: 최단경로 문제 또는 최소 신장 트리 문제에 가중 그래프의 가중치를 기반해서 쓰임.
  • 최단경로 문제: 출발지와 도착지가 주어지고, 그 경로상에서 가장 빠른 경로를 찾는 문제임.

  • 최소 신장 트리 문제: 그래프 G 안에서 총 가중치가 가장 작은 사이클이 없는 연결 그래프인 신장 트리를 구하는 문제임.

(2) 최단경로 문제 - 다익스트라 알고리즘

  • 다익스트라 알고리즘: 해당 알고리즘은 최단 경로 문제를 구하기 위한 대표적인 알고리즘임. ( 그 외에도 여러개 있음. )
  • 과정1: 각 정점에 도달하는 임의의 최단거리 배열을 만들어두고, 배열의 각 원소들을 무한으로 초기화
  • 과정2: 만약 시작 정점을 a로 잡는다면, 해당 시작점의 최단거리 배열의 원소는 0으로 초기화. ( 즉, a = 0 )
  • 과정3: a의 인접한 정점 b, e 를 보고 최단거리 배열의 b, e에 해당하는 배열의 원소를 각 2와 4로 초기화
  • 과정4: a의 인접한 정점 중 가장 짧은 거리는 a - b(가중치:2) 이기 때문에, b의 인접한 정점(a,c,d,e,f)의 값을 가중치의 값에 맞게 최단거리 배열의 값을 초기화
  • 과정5: b의 인접한 정점 중 가장 짧은 거리는 b-c(가중치:1) 이기 때문에, c의 인접한 정점은 c-d(가중치:3) 밖에 없으므로, 최단거리 배열 d의 값을 초기화를 시키는데, 이때 d는 과정4에서 이미 5로 초기화가 되어있는데 상태인데, 5보다 4가 작기 때문에 4로 초기화를 진행함.
  • 최종 과정: 해당 과정에서 인접한 정점 중 가중치가 가장 짧은 정점을 선택하는 과정에선 선택된 정점들의 집합 배열을 만들어 따로 저장을 하게 되는데, 이때 해당 선택 배열에 저장 된 정점들의 개수와 그래프의 정점의 개수가 동일해질때 모든 정점들을 다 거쳐서 최단 경로를 구했다고 판단해 반복이 종료됨.

'방송통신대학교 > 🕸️이산수학' 카테고리의 다른 글

[이산수학] 11강 - 트리  (0) 2026.05.28
[이산수학] 9강 - 그래프(1)  (0) 2026.05.21
[이산수학] 8강 - 부울대수  (0) 2026.05.18
[이산수학] 7강 - 함수  (0) 2026.05.15
[이산수학] 6강 - 관계  (0) 2026.05.13
'방송통신대학교/🕸️이산수학' 카테고리의 다른 글
  • [이산수학] 11강 - 트리
  • [이산수학] 9강 - 그래프(1)
  • [이산수학] 8강 - 부울대수
  • [이산수학] 7강 - 함수
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방송통신대학교
    유비쿼터스
    파이썬
    알고리즘
    배열
    운영체제
    함수
    방송대
    Python
    Java
    방통대
    컴퓨터의 이해
    자료구조
    C언어
    컴퓨터과학 개론
    컴퓨터과학과
    spring
    그래프
    자바
    이산수학
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[이산수학] 10강 - 그래프(2)
상단으로

티스토리툴바