9. Graphs
9.1. Graphs and Graph Models
Graph 는 비어 있지 않은 Vertex 와 Edge 로 이루어져 있는 Set이다.
각 Edge는 하나 혹은 두 개의 Vertex와 연결되어 있으며 이를 Endpoint라 한다.
Edge는 Endpoint를 Connect한다고 한다.
Remark
Graph 의 Vertex set 가 Infinite할 수 있다.
이를 Infinite graph라고 하며 Finite한 Vertex를 가진 Graph를 Finite graph라 한다.
한 Vertex pair에 하나의 Edge만 있다면 그 Graph를 Simple graph라 하고 한 Vertex pair에 여러 Edge가 존재할 수 있다면 Multigraph라 하며 로 Edge를 나타낼 때 이 Edge가 개 존재한다면 Multiplicity가 이라고 표현한다.
Vertex pair가 꼴이라면 이를 Loop라고 하고 동일한 Vertex pair를 연력하는 여러 Edge를 가질 수 있는 Graph를 Pseudograph라고도 한다.
위 Edge들의 방향성이 없는 Graph들을 Undirected graph라고 한다.
Diagraph 는 Nonempty vertex set 와 Directed edge 로 구성된다.
각 Directed edge는 Vertex의 Ordered pair와 관련이 있다.
Ordered pair 는 Vertex 에서 로의 Directed edge를 의미하며 Multiple directed edge도 Loop도 존재할 수 있다.
Multiple directed edge가 존재할 수 없는 Graph를 Simple directed graph라 하고 Multiple directed edge가 존재할 수 있는 Graph를 Directed multigraph라 한다.
Directed multigraph의 Edge 가 개 존재한다면 Multiplicity가 이라고 표현한다.
Directed edge와 Undirected edge가 혼용된다면 그 Graph를 Mixed graph라고 표현한다.
| Type | Edges | Multiple Edges Allowed? | Loops Allowed? |
|---|---|---|---|
| Simple graph | Undirected | No | No |
| Multigraph | Undirected | Yes | No |
| Pseudograph | Undirected | Yes | Yes |
| Simple directed graph | Directed | No | No |
| Directed multigraph | Directed | Yes | Yes |
| Mixed graph | Directed, Undirected | Yes | Yes |
Graph Models
Graph는 다양한 Model에서 사용된다.
Example
생태학에서 종간 경쟁은 Niche overlap graph를 사용한다.
두 종이 경쟁할 경우 두 종을 연결하는 Undirected edge가 생성되며 Multiple edge나 Loop가 필요하지 않은 Simple graph로 사용된다.
Example
Influence graph는 집단 행동 연구등에 사용할 수 있고 Vertex는 각 사람, Directed edge는 시작 Vertex인 사람 가 끝 Vertex의 에게 영향을 줌을 나타낼 수 있고, Loop를 포함하지 않고 Multiple Edge가 생성되지 않으므로 Simple directed graph로 사용된다.
9.2. Graph Terminology and Special Types of Graphs
Basic Terminology
Undirected graph 에서 두 Vertex 는 의 Edge의 endpoint가 될 때 Adjacent(neighbor)라 한다.
Edge 가 가 연관이 있다면 이를 Edge 는 Vertex , 와 Incident이라고 하고 Connect라도고 한다.
Undirected graph에서 Vertex의 Degree는 Vertex에 Incidented edge의 수를 의미하며 Vertex에 Loop가 있을 경우 Degree에 두번 기여한다.
Vertex 의 Degree를 라고 표현한다.
Example\
각 Vertex의 Degree
- Solution
Theorem
The handshaking theorem
Undirected graph 가 개의 Edge를 가질 때
Theorem
Undirected graph는 홀수 degree를 가진 Vertex가 짝수개 있다.
- Proof
Undirected graph 에서 홀수, 짝수 Degree를 가진 Vertex set 로 두면 이다.
두 분리된 Graph 역시 역시 짝수이므로 역시 짝수이다.
가 Digraph 의 Edge일 때 는 에 Adjacent하다고 하고 는 로 부터 Adjacent하다고 한다.
Vertex 는 의 Initial vertex, 는 Terminal 혹은 End vertex라고 한다.
Loop의 경우 Inital과 Terminal vertex가 동일하다.
Digraph에서 Degree는 In-degree와 Out-degree가 존재하며 Notation으로 각각 로 표현한다.
In-degree 는 를 Terminal vertex로 두는 Edge의 수이며 Out-degree 의 경우 가 Inital vertex인 Edge의 수를 의미한다.
Digraph에서 Loop는 In/Out-degree에 1씩 기여한다.
Theorem
Digraph 에 대해
Digraph의 Edge에는 Direction 상관없이 영향을 미치지 않는 여러 Property가 존재한다.
Digraph의 Direction을 무시하여 얻은 Graph를 Underlying undirected graph라고 한다.
Some Special Simple Graphs
Example
- Complete graph
Complete graph 은 개의 Vertex가 있고 서로 다른 Vertex끼리의 Edge가 1개 씩 포함된다. - Cycle
Cycle 은 일 때 Vertex 과 Edge 으로 구성되어 있다. - Wheels
Wheel 은 일 때 Cycle 에 추가 Vertex를 더하여 이 Vertex에 의 Vertex들을 모두 연결하는 Edge를 얻는다. - -cubes
-cube(-dimensional hypercube) 은 길이가 인 Bit string을 나타내는 Vertex가 있는 Graph이다.
두 Vertex는 나타내는 Bit 문자열이 정확히 하나의 Bit 위치에서 다를 때 Adjaccent하다.
에서 을 생성할 수 있는데 이 때 을 복사하여 원본 첫 Bit에 0, 복사본엔 1을 둬 첫 Bit만이 다른 Vertex들을 연결하는 Edge를 추가함으로 얻을 수 있다.
Bipartite Graphs
Simple graph 의 Vertex set 를 두 개의 분리된 Set 로 나눌 때 이를 Bipartite graph라고 한다.
Bipartite graph는 에서 만을 연결하므로 의 어떤 Edge도 같은 Set에 존재하는 Vertex를 연결하지 않고 이 때 는 Graph 의 Vertex set 를 Bipartition하였다고 표현한다.
Example
- Complete bipartite graph
Complete bipartite graph 은 Vertex set이 각각 개인 두 개의 Subset으로 나누어진 Graph
Some Applications of Special Types of Graphs
Simple graph에서 Matching은 Graph의 Edge set의 Subset으로 두 개의 Edge가 동일한 Vertex에 Connect되지 않는 것을 의미한다.
Maximal matching은 가장 많은 Edge를 가진 Matching을 의미한다.
New Graphs from Old
문제 해결을 위해 Original graph 전체가 다 필요하지 않을 수 있다.
이 때 Original graph의 Subgraph만을 이용하여 조금 더 편하게 문제를 해결 가능하다.
Graph 의 Subgraph ()가 존재할 때 가 의 Proper subgraph이기 위해 여야 한다.
Example
의 Subgraph
Simple graph 의 Union은 Vertex set이 이고 Edge set이 인 Simple graph이다.
의 Union을 Notation 로 나타낸다.
Example
- Solution\
9.3. Representing Graphs and Graph Isomorphism
두 Graph가 동일한 형태를 가질 때 Vertex set 간 One-to-one correspondence가 존재해 Edge를 보존함을 의미하며 이 때 두 Graph가 Isomorphic(동형)이라고 한다.
Representing Graphs
Multiple edge가 없는 Graph를 표현하는 하나의 방법은 Graph의 모든 Edge를 나열하는 것이다.
다른 방법으로는 Adjacency list(인접 목록)을 사용하여 Graph의 각 Vertex에 Adjacent한 Vertex들을 지정한다.
Example
Adjacency list를 사용하여 위 Simple graph를 표현
- Solution
(Vertex : Adjacent vertices)
a : b, c, e
b : a
c : a, d, e
d : c, e
e: a, c, d
Example
Adjacency list를 사용하여 위 Directed graph를 표현
- Solution
(Initial vertex : Terminal vertices)
a : b, c, d, e
b : b, d
c : a, c, e
d :
e : b, c, d
Adjacency Matrices
Graph를 Edge list나 Adjacency list로 표현하여 Graph algorithm을 수행하는 것이 번거로울 때 Matrix로 표현하곤 한다.
가 Simple graph이고 일 때 의 Vertex들 과 같이 임의로 나열되어 있을 때 의 Adjacency matrix 는 이 Vertex들의 나열에 대해 크기의 Zero-one matrix로 가 Adjacent일 때 Entry가 1이고 그렇지 않다면 0을 갖는다.
즉 , 이다.
Example
위 Simple graph의 Adjacency matrix
- Solution
Graph의 Adjacency matrix는 Vertex에 대해 선택된 순서에 따라 결정이 된다.
개의 Vertex를 가진 Graph에는 개의 서로 다른 Adjacency matrix가 존재한다(개의 Vertex의 순서는 개 이기에).
Simple graph의 Adjacency matrix는 Symmetric() 가 Adjacent할 때 두 Entry가 1이 되고 그렇지 않다면 0이 된다.
Simple graph의 경우 Loop가 없기에 이다.
Multigraph일 경우 Adjacency matrix는 Zero-one matrix가 아니고 Matrix의 Entry는 와 Connect된 Edge의 수와 같다.
모든 Undirected graph는 Symmetric adjacency matrix를 가진다.
Simple graph가 Sparse(Edge의 수가 적을 때)할 때 Graph를 표현하기 위해 Adjacency list를 사용하는 것이 더 효과적이다.
각 Vertex의 Degree가 를 초과하지 않고 가 보다 훨씬 작은 Constant일 경우 각 Adjacency list는 개 이하의 Vertex만 포함한다.
Simple graph가 Dense(조밀하다, Edge의 수가 많을 때)할 때, 즉 가능한 모든 Edge의 절반 이상을 포함하는 Graph와 같이 많은 Edge를 포함하고 있을 때 Adjacency matrix를 사용하여 Graph를 표현하는 것이 더 효과적이다.
Incidence Matrices
Graph를 나타내는 다른 방법 중 하나는 Incidence matrix를 사용하는 것이다.
의 Undirected graph라고 할 때 의 Vertex와 의 Edge가 에 존재할 때 Incidence matrix는 에 대한 Ordering에 대한 matrix로 정의되며 의 이다.
Example
1.
2.
위 Graph의 Incidence matrix
- Solution 1
- Solution 2
Isomorphism of Graphs
Simple graph 가 에서 로 One-to-one 그리고 Onto function이 존재하는 경우 Isomorphic이라고 한다.
이 때 가 에 Adjacent하면 그 경우 와 가 에서 Adjacent해야 한다.
이런 Function 를 Isomorphism이라고 한다.
Example
Graph 가 Isomorphic인지 여부
- Solution
로 One-to-one correspondence을 형성한다.
두 Simple graph가 Isomorphic인 지 확인하는 것은 Vertex 의 수가 조금이라도 커질 경우 어렵기에 두 Graph가 Isomorphic이 아님을 보여주는 것이 더 쉽다.
Graph 중 하나만 갖는 Property를 찾는다면 그 Property는 Isomorphism에 의해 보존된다.
Isomorphism에 의해 보존되는 Property를 Graph invariant라고 한다.
Example
Graph 가 Isomorphic인 지 확인
- Solution
모두 6개의 Vertex와 7개의 Edge를 가졌고 Degree 2인 Vertex로 구성된 Subgraph와 Connect하는 Edge들이 Isomorphic인 것을 확인할 수 있다.
가 Graph invariant가 일치하기에 Function 가 Isomorphism인 지 확인하면 된다.
로 놓고 Adjacency matrix를 구할 경우 이다.
즉 는 Isomorphic이다.
9.4. Connectivity
Paths
Path는 Graph의 Vertex에서 시작하여 Graph의 Edge를 따라 Vertex에서 Vertex로 이동하는 Edge의 순서이다.
Nonnegative integer , Undirected graph 에 대해 길이가 인 Path는 Vertex 에서 로의 Graph 의 개의 Edge의 Sequence이다.
Graph가 Simple graph인 경우 이 Vertex Sequnce를 으로 나타낸다.
Path는 Begin vertex , End vertex 가 같으며 길이 일 경우 Circuit이라고 한다.
Path와 Circuit은 해당 Vertex를 Pass through한다고 하거나 Edge를 Traverse한다고 하며 같은 Edge를 포함하지 않을 경우 Simple이라고 말한다.
Remark
Path 대신 Walk라는 용어를 사용하여 Graph의 Vertex와 Edge의 교대로 이루어진 Sequence를 의미할 수도 있다.
이 때 Circuit 대신 Close walk라는 용어를 사용한다.
Simple path 대신 Trail이라는 용어를 사용한다.
Example
그림의 Simple graph에서 는 길이가 4인 Simple Path이다.
는 길이가 5인 Simple이 아닌 Path이다.
Nonnegative integer 과 Digraph 에 대해 Vertex 에서 까지의 길이가 인 Path는 Edge들의 Sequence이며 Multiple graph가 아닌 경우 Vertex의 Sequence나 나열로 나타내기도 한다.
앞전과 마찬가지로 Begin vertex와 End vertex가 같으며 길이가 0이 아니라면 Circuit이나 Cycle이라고 부른다.
중복된 Edge가 없을 경우 Simple하다고 표현한다.
Connectedness in Undirected Graphs
Undirected graph의 Vertex들이 서로 Connected라고 표현하기 위해서는 모든두 Vertex를 연결할 수 있는 Path가 존재해야 한다.
Example
그림의 왼쪽 Graph는 Connected graph, 오른쪽 그래프는 Not connected graph이다.
예시로 가 서로 연결되어 있지 않기 때문이다.
Theorem
Connected undirected graph의 모든 두 개의 Distinct vertex들은 Simple path가 존재한다.
Connected component란 Connected graph 의 Connect subgraph에 대해 Not a proper subgraph이다.
Example
위 그림에서의 Graph 의Connected component
- Solution
Graph 는 3개의 Disjoint connected subgraph 의 Union이다.
즉, 는 의 Connected component이다.
Connectedness in Directed Graphs
Digraph에서의 Connected는 Vertex 에서 로도, 에서 로도 갈 수 있는 Path가 모든 Vertex에 존재할 경우 Strongly connected, Undirected graph로 전환하였을 때 Connected될 경우 Weakly connected라고 한다.
Digraph 의 Subgraph 중에서 Strongly connected인 Component를 Strong component라고 한다.
Paths and Isomorphism
Path와 Circuit은 두 Graph가 Isomorphic인지 판단하는 데 사용될 수 있다.
특정 길이의 Simple path로 두 Graph가 Isomorphic이 아닌 지 보여줄 수 있는 Invariant이다.
Example
Graph 가 Isomorphic인 지 확인
- Solution
는 모두 8개의 Edge와 6개의 Vertex로 구성되어 있고 각 Graph에는 Degree가 3인 Vertex가 4개, Degree 2인 Vertex가 2개 있다.
는 길이가 3인 Simple Circuit 을 가지고 있으나 는 길이가 3인 Curcuit을 가지고 있지 않으므로 는 Not isomorpic이다.
Counting Paths Between Vertices
Theorem
Graph 를 Vextex 에 대한 Adjacency matrix 를 갖는 Graph라고 할 때 길이 인 에서 의 서로 다른 Path의 수는 의 번째 Entry 수와 같다.
- Proof
Mathematical induction을 사용하여 가 Adjacency matrix 를 가지는 Graph라고 할 때 이므로 의 번째 Entry는 (번째 의 Entry)이다.
Induction hypothesis에 따라 는 길이가 인 에서 의 Path의 수이다.
길이가 인 에서 까지의 Path는 에서 Intermediate vertex 까지의 길이 인 Path와 로 이루어진 Edge로 구성되므로 에서 까지의 길이 인 Path의 수인 와 에서 까지의 Edge수인 의 Product이므로 증명할 수 있다.
Example
에서 로의 길이가 4인 Path의 개수
- Solution
Graph의 Adjacency matrix는 이다.
이므로 번째 Entry인 8이다.
9.5. Euler and Hamilton Paths
Euler Paths and Circuits
Graph 에 해당하는 Euler circuit은 의 모든 Edge를 포함하는 Simple circuit을 의미한다.
의 Euler path는 의 모든 Edge를 포함하는 Simple path를 의미한다.
간단히 요약하여 Euler path(circuit)은 한붓 그리기이다.
Example
해당 Digraph 중 Euler curcuit의 유무
- Solution
Graph 는 로 Euler circuit을 가지고 있다.
추가적으로 은 로 Euler path를 가지고 있다.
Theorem
두 개 이상의 Vertex가 있는 Connected multigraph는 모든 Vertex의 Degree가 짝수일 때 Euler circuit이 존재
Pseudocode
Algorithm Constructing Euler Circuits
procedure (: connected multigraph with all vertices of even degree)
:= a circuit in beginning at an arbitrarily chosen vertex with edges successively added to form a path that returns to this vertex
:= with the edges of this circuit removed
while has edges
begin
:= a circuit in beginning at a vertex in that also is an endpoint of an edge of
:= with edges of and all isolated vertices removed
:= with inserted at the appropriate vertex
end { is and Euler circuit}
Example
Mohammed's Scimitars 모양의 Graph 에 Euler circuit이 있는 지 확인
- Solution
모든 Vertex들의 Degree가 짝수이기에 존재한다.
위 Pseudocode를 참조하여 Euler circuit을 구성할 수 있다.
먼저 인 Circuit을 형성하고 이 Circuit에서의 모든 Edge와 이 Edge가 제거될 때 Isolated(고립)되는 모든 Vertex를 삭제하여 Subgraph 를 얻는다. 는 이며 의 모든 Edge를 사용하였기에 가 Euler circuit임을 알 수 있다.
Theorem
Connected multigraph는 정확히 두 개의 홀수 Degree인 Vertex가 있을 때 Euler path를 가짐(Not an Euler circuit)
Example
그림의 Graph들 중 어떤 Graph가 Euler path를 가지고 있는가
- Solution
은 Degree가 홀수인 Vertex가 이므로 정확히 두 개 가지고 있기에 가 End vertex인 Euler path를 가진다().
는 Degree가 홀수인 Vertex가 이므로 Euler path를 가진다().
마지막으로 는 Degree가 홀수인 Vertex가 이므로 Euler path를 가지지 못한다.
Hamilton Paths and Circuits
Hamilton path의 경우 Graph의 모든 Vertex를 정확히 한 번씩 통과하는 Simple Path를 의미하며 이가 Circuit일 경우 Hamilton circuit이라고 한다.
즉 Vertex set 에 대해 에 대해 일 때 Path 은 Hamilton path가 된다.
간단히 요약하여 Hamilton path와 circuit의 경우 모든 구역을 돌기 위한 동선과 같다.
Example
Graph들의 Hamilton circuit이나 Hamilton path의 유무
- Solution
은 Hamilton circuit이 존재한다().
는 모든 Vertex를 지나는 Circuit을 위해서 Edge를 두 번 포함해야 하므로 Hamilton circuit은 존재하지 않으나 Hamilton path는 존재한다().
눈 Hamilton circuit, Hamilton path가 존재하지 않는다.
Theorem
Dirac's Theorem
가 개의 Vertex를 가진 Simple graph이며 이고 의 모든 Vertex들의 Degree가 이상일 경우 는 Hamilton circuit을 가진다.
Theorem
Ore's Theorem
가 개의 Vertex를 가진 Simple graph이며 이고 의 모든Nonadjacent vertex pair 에 대해 을 만족할 경우 Hamilton circuit을 가진다.
Example
Graycode는 1940년대 AT&T Bell Lab.에서 Digital signal transmitting error의 Effect를 Minimize하기위해 Frank Gray가 발명했다.
회전하는 Pointer의 위치를 Digital form으로 표현할 수 있다.
위 그림은 길이가 3인 Bit string을 사용하는 두 가지 방법이다.
즉 개의 Arc로 나눈 후 각 Arc에 -bit string을 할당한 것이다.
Pointer가 두 Arc의 Boundary 근처에 있을 때 Pointer의 위치를 읽는데 실수가 발생할 수 있다.
예시로 Bit string 010대신 011이 읽힐 수 있다.
Gray code는 Adjacent arc가 정확히 하나의 Bit만 다르게 Label이 붙은 Arc의 Labeling이다.
즉 이는 길이가 인 Bit string을 나열하여 각 String이 정확히 하나의 위치에서만 다르며 이는 -cube인 을 Modeling할 수 있다.
즉 위 예시에서의 Gray code는 에 대한 Hamilton circuit을 사용하여 쉽게 찾을 수 있다.
예시로 에 의한 Hamilton circuit에 의해 생성된 Bit string의 순서는 000, 001, 011, 010, 110, 111, 101, 100이다.
9.6. Shortest-Path Problems
Edge마다 숫자(비용)가 할당된 Graph를 Weighted graph라고 한다.
Weighted graph 관련 Problem은 주로 모든 Vertex에서 Complete graph를 정확히 한번 방분하는 최단 비용 Path(Circuit)을 찾는 것이다.
A Shortest-Path Algorithm
Weighted graph에서 두 Vertex 간 Shortest path를 찾는 다양한 Algorithm이 존재한다.
Example
위 Weighted graph에서 에서 사이 Shortest path
- Solution
에서 시작하는 Path는 와 만 존재하므로 다른 Path가 포함되지 않는다.
보다 가 작으므로 는 에 보다 더 가까운 Vertex이다.
다음으로 가까운 Vertex를 찾기 위해 와 를 통과하는 모든 Path를 살펴보면 로 가는 Shortest path는 로 4이며, 는 로 5이다. 즉 에서 두 번째로 가까운 Vertex는 이다.
에서 세 번째로 가까운 Vertex를 찾기 위해 를 통과하는 Path를 살펴보면 되므로 는 , 즉 7이고 는 로 6이다.
위 과정으로 인해 에서 로 가는 Shortest path는 이 된다.
앞전 Example에서 사용한 Algorithm을 Dijkstra's algorithm이라고 한다.
Dikstra's algorithm은 첫 Vertex 에는 0, 나머지 Vertex들에게는 을 Labeling한 후 에서 각 Vertex까지의 Shortest path를 나타내는 값으로 대치하는 Algorithm이다.
Vextex들의 Distinguished set 를 만들며 이때의 는 반복 횟수가 된다.
Initial set 이다.
Set 는 에서 에 포함되지 않은 Label이 가장 작은 Vertex 를 추가하며 형성한다.
가 에 추가되면 에 포함되지 않은 모든 Vertex의 Label을 Update한다.
이 때 는 번째 Step에서 Vertex 의 Label로 에 포함된 Vertex만을 포함하는 에서 까지의 Shortest path의 길이이다.
Vertex 가 에 포함되지 않은 경우 의 Label을 Update하기 위해 는 에 포함된 Vertex만을 포함하는 에서 까지의 Shortest path의 길이이다.
즉 이다(는 와 의 Weight이다).
이 Procedure를 Target vertex가 추가될 때 까지 순차적으로 추가하며 반복하여 Shortest path를 구할 수 있다.
Pseudocode
Algorithm Dijkstra's Algorithm
procedure (: weighted connected simple graph, with all weights positive){ has vertices and weights where if is not an edge in }
for := 1 to
:=
:= 0
:= {the labels are now initialized so that the label of is 0 and all other labels are , and is the empty set}
while
begin
:= a vertex not in with minimal
:=
for all vertices not in
if then
{this adds a vertex to with minimal label and updates the labels of vertices not in }
end {= length of a shortest path from to }
Theorem
Dijkstra's algorithm은 Connected simple undirected weighted graph의 Shortest path를 찾으며 의 Operator(Addition, Condition)을 사용한다.
The Traveling Salesman Problem
Traveling salesman problem은 각 Vertex를 정확히 한 번 방문하고 Begin vertex로 돌아오는 Weighted undirected graph에서 Shortest Hamilton circuit을 찾는 것과 같다.
즉, Traveling slaesman problem을 해결하기 위해 가장 간단한 방법은 모든 Hamilton circuit을 찾은 후 그 중 Shortest circuit을 찾는 것이다.
Graph에 개의 Vertex들이 존재하면 시작점 선택 시 개의 서로 다른 Hamilton circuit을 조하새야 한다.
첫 Vertex 선택에 , 두 번째 Vertex 선택에 로 반복하기 때문이다.
Undirected graph임을 이용하여 개의 Circuit을 조사하여야 한다.
Traveling salesman problem은 실용적, 이론적 중요성을 가지므로 이를 해결하기 위한 효율적인 Algorithm 개발에 많은 노력을 가졌으나 이 문제를 해결하기 위한 Polynomial worst-case time complexity algorithm은 알려져있지 않다.
대신 이를 해결하기 위한 실용적인 접근법은 Approximation algorithm(근사 알고리즘)을 사용할 수 있다.
Algorithm 문제에 정확한 Solution을 제공하지 않으나 정확한 Solution에 근접한 Solution을 제공하는 것이 보장된다.
즉, 총 Weight 가 가 성립하도록 Hamilton circuit을 생성할 수 있다.
예시로 Weighted graph가 Triangle inequality를 만족하는 경우 를 만족하는 Polynomial worst-case time complexity algorithm이 존재한다.
일반 Weighted graph에 대해 모든 Positive real number 에 해당하는 최선의 Solution의 배 이하의 Solution을 생성할 수 있는 Algorithm은 알려져있지 않으며 이를 찾는다면 Class P와 Class NP가 동일하다는 것을 보여줄 수 있다.
9.7. Planar Graphs
Graph가 Edge가 교차하지 않고 Plane에 그릴 수 있는 경우 Planar(평면적)이라고 한다.
Example
는 Planar인 지
- Solution
Planar이다.
Example
는 Planar인 지
- Solution
Planar이다.
Example
은 Planar인 지
- Solution
을 Plane에 그릴 때 Planar graph로 그릴 수 없다.
의 어떤 Planar representation에도 Vertex 는 와 Connected여야 한다.
이 네 개의 Edge는 Plane을 두 개의 Region 로 나누는 Closed curve를 형성한다( 참조).
Vertex 는 중 하나에 위치해야 하고 만약 가 에 위치한다고 가정할 때 Closed curve의 내부에서 와 의 Edge가 를 두 개의 Subregion 로 나누게 된다( 참조).
이 때 어떠한 방법으로도 마지막 Vertex 를 Crossing edge가 없이 배치할 수 없다.
그렇기에 은 Not planar graph이다.
Euler's Formula
Graph의 Planar representation은 Plane을 여러 Region으로 나누며 그 중 Unbounded region도 포함된다(아래 예시에서 에 해당).
\
Theorem
Euler's formula
를 개의 Edge와 개의 Vertex를 가진 Simple planar graph라고 할 때 의 Planar representation에서 을 Region의 수라고 할 때 이다.
- Proof
Induction에 의해 증명 가능하다.
Initial condition인 Relationship 라고 할 때 이 되므로 성립한다.
가 성립하는 지 확인을 위해 를 Graph 에서 이 될 때 추가된 Edge로 가정한다.
이 두 Vertex들은 공통 Region 의 Boundary에 존재하여야만이 Crossing edge 없이 에 추가할 수 있다.
새로운 Edge에 의해 은 두 개의 Region으로 나뉘게 된다.
따라서 이므로 Formula는 여전히 Valid하다.
다른 경우 새로운 Edge의 두 Vertex중 하나가 에 포함되어 있지 않을 경우 새 Region으로 분할하지 않으며 이 때 이므로 Formula는 여전히 Valid하다.
모든 상황에서 Formula가 Valid함을 증명했기에 가 성립함을 증명하였다.\
Example
Connected planar simple graph가 20개의 Vertex, 각 Vertex의 Degree가 3일 때 이Planar graph의Region의 개수
- Solution
이므로 이다.
Corollary
Connected planar simple graph 가 개의 Edge와 개의 Vertex를 가지며 일 때 이다.
- Proof
Region의 Degree 개념에 기반하여(Region의 Degree는 Region의 Bound에 있는 Edge의 개수) Connected planar simple graph는 Plane을 개의 Region으로 나눈다.
각 Region의 Degree는 최소 3이 된다(평면 도형은 Triangle부터).
Region의 Degree의 합은 Graph의 Edge수의 정확히 두 배이므로 각 Region의 Degree가 3 이상이므로 이 성립한다.
따라서 이며 Euler's fomula를 사용하여 이므로 를 얻는다.
정리하여 임을 알 수 있다.
Corollary
Connected planar simple graph 가 Degree 5를 초과하는 Vertex를 가질 수 없다.
- Proof
가 Vertex의 개수가 1, 2일 경우 참이다.
에 Vertex가 3개 이상 있을 경우 위 Corollary에 의해 이므로 이다.
Vertex의 Degree가 6 이상이라면 Handshaking theorem에 따라 가 성립하므로 가 성립하게 되나 앞전 Corollary와 Contradiction이 되므로 Degree는 5를 초과할 수 없다.
Corollary
Connected planar simple graph가 개의 Edge와 개의 Vertex를 가질 때 이고 길이가 3인 Circuit이 존재하지 않을 경우 이다.
- Proof
Region의 Degree 개념에 기반해 구한 Colorary에서 원래 최소 3이였으나 이는 Triangle(즉, 길이가 3인 circuit의 존재)을 의미하므로 Degree가 4 이상이므로 를 의미하며 임을 얻기에 정리하여 임을 알 수 있다.
Example
이 Nonplanar임을 증명
- Solution
은 길이가 3인 Circuit이 없으므로 6개의 Vertex와 9개의 Edge를 가졌기에 이므로 거짓이므로 Nonplanar이다.
Kuratowski's Theorem
어떤 Graph가 이나 를 Subgraph로 가질 경우 그 Graph는 Nonplanar graph가 된다.
만약 Graph가 Planar graph라면 Edge 를 제거하고 추가 Vertex 를 추가하여 Edge 를 추가하여 얻은 Graph 또한 Planar graph이다.
이러한 Operation을 Elementary subdivision(초등 분할)이라 하고 Graph 과 는 동일한 Graph의 Elementary subdivision으로 얻을 수 있을 때 Homeomorphic(동형)이라고 한다.
Example
위 세 Graph가 Homeomorphic임을 증명
- Solution
이 세 Graph는 에서 Elementary subdivision을 통해 얻을 수 있어 Homeomorphic이다.
은 Elementary subdivision의 Empty sequence를 통해 자신으로 부터 얻을 수 있고 를 얻기 위해서 에서 를 제거한 후 Vertex 를 추가한 후 를 추가하고 를 제거한 후 Vertex 를 추가하여 를 추가한다.
의 경우 에서 를 제거하고 Vertex 를 추가해 를 추가하고 를 제거하고 Vertex 를 추가하여 를 추가하여 얻어 Homeomorphic임을 알 수 있다.
Theorem
Kuratowski's theorem
어떤 Graph가 Nonplanar이기 위해 중 하나의 Homeomorphic인 Graph를 Subgraph로 가져야 한다.
Example
위 Petersen graph가 Planar인 지
- Solution
Petersen graph는 와 가 Endpoint인 세 Edge를 삭제하여 얻은 Subgraph 가 과 Homeomorphic이므로 Nonplaner이다.
를 삭제한 후 를 추가, 를 삭제한 후 를 추가, 삭제한 후 를 추가하는 Operation을 통해 가능해진다.
9.8. Graph Coloring
Simple graph의 Coloring은 각 vertex에 색을 부여하였을 때 Adjacent vertex끼리 같은 색을 할당하지 않음을 의미한다.
Graph coloring의 최소한의 색깔 수를 Chromatic number라고 하며 이를 Notation 로 나타낸다.
Theorem
The four color theorem
Planar graph의 Chromatic number는 4를 초과하지 않는다.
Example
Graph 의 Chromatic number
- Solution
Graph 의 Chromatic number의 수는 3이 된다.
이유로 Vertex 를 서로 다른 색으로 칠해야 하기 때문이다.
를 세 가지 색으로 칠할 수 있는지 확인하기 위해 각각 색을 할당할 경우 는 와 Adjacent이므로 의 색으로, 는 와 다른 색으로 칠해진 두 Vertex와 Adjacent이므로 와 같은 색으로 칠해 증명할 수 있다.
Graph 의 Chomatic number의 수는 추가된 Region에 의해서 가 Adjacent이므로 Chromatic number는 4가 된다.
Simple Example
Chromatic number of
- Solution
모든 Vertex가 Adjacent이므로 이 된다.
Chromatic number of
- Solution
모든 Vertex가 Adjacent 하지 않는 Group이 두 개 이므로 가 된다.
Chromatic number of
- Solution
Cycle 은 짝수 일 경우 번갈아가며 색칠하여 2, 홀수 일 경우 최대 3개의 색이 필요하다.
Applications of Graph Colorings
Graph coloring은 Scheduling과 Assignment에 관한 다양한 Application이 존재하나 효율적인 Algorithm이 발견되지 않았다.
Example
기말 시험이 대학에서 학생이 동시에 두 개의 시험을 보지 않도록 Scheduling
- Solution
Graph model을 사용해 Vertex는 과목, Edge는 과목을 듣는 공통 학생이 존재할 때 존재한다면 이 때 Graph coloring을 통하여 문제를 해결할 수 있다.
예시로 Graph가 과목 Vertex set이 존재하고 Edge가 위와 같이 생성되었다면 Coloring을 통해 총 필요한 구분 수는 4임을 알 수 있다.\