본문으로 건너뛰기

9. Graphs

9.1. Graphs and Graph Models

Graph G=(V,E)G=(V,E)는 비어 있지 않은 Vertex VV와 Edge EE로 이루어져 있는 Set이다.
각 Edge는 하나 혹은 두 개의 Vertex와 연결되어 있으며 이를 Endpoint라 한다.
Edge는 Endpoint를 Connect한다고 한다.

경고

Remark

Graph GG의 Vertex set VV가 Infinite할 수 있다.
이를 Infinite graph라고 하며 Finite한 Vertex를 가진 Graph를 Finite graph라 한다.

한 Vertex pair에 하나의 Edge만 있다면 그 Graph를 Simple graph라 하고 한 Vertex pair에 여러 Edge가 존재할 수 있다면 Multigraph라 하며 {u,v}\{u, v\}로 Edge를 나타낼 때 이 Edge가 mm개 존재한다면 Multiplicity가 mm이라고 표현한다.
Vertex pair가 {u,u}\{u,u\} 꼴이라면 이를 Loop라고 하고 동일한 Vertex pair를 연력하는 여러 Edge를 가질 수 있는 Graph를 Pseudograph라고도 한다.
위 Edge들의 방향성이 없는 Graph들을 Undirected graph라고 한다.

Diagraph (V,E)(V,E)는 Nonempty vertex set VV와 Directed edge EE로 구성된다.
각 Directed edge는 Vertex의 Ordered pair와 관련이 있다.
Ordered pair (u,v)(u, v)는 Vertex uu에서 vv로의 Directed edge를 의미하며 Multiple directed edge도 Loop도 존재할 수 있다.
Multiple directed edge가 존재할 수 없는 Graph를 Simple directed graph라 하고 Multiple directed edge가 존재할 수 있는 Graph를 Directed multigraph라 한다.
Directed multigraph의 Edge (u,v)(u,v)mm개 존재한다면 Multiplicity가 mm이라고 표현한다.

Directed edge와 Undirected edge가 혼용된다면 그 Graph를 Mixed graph라고 표현한다.

TypeEdgesMultiple Edges Allowed?Loops Allowed?
Simple graphUndirectedNoNo
MultigraphUndirectedYesNo
PseudographUndirectedYesYes
Simple directed graphDirectedNoNo
Directed multigraphDirectedYesYes
Mixed graphDirected, UndirectedYesYes

Graph Models

Graph는 다양한 Model에서 사용된다.

Example

생태학에서 종간 경쟁은 Niche overlap graph를 사용한다.
두 종이 경쟁할 경우 두 종을 연결하는 Undirected edge가 생성되며 Multiple edge나 Loop가 필요하지 않은 Simple graph로 사용된다.

Example

Influence graph는 집단 행동 연구등에 사용할 수 있고 Vertex는 각 사람, Directed edge는 시작 Vertex인 사람 aa가 끝 Vertex의 bb에게 영향을 줌을 나타낼 수 있고, Loop를 포함하지 않고 Multiple Edge가 생성되지 않으므로 Simple directed graph로 사용된다.

9.2. Graph Terminology and Special Types of Graphs

Basic Terminology

Undirected graph GG에서 두 Vertex u,vu, vGG의 Edge의 endpoint가 될 때 Adjacent(neighbor)라 한다.
Edge ee{u,v}\{u,v\}가 연관이 있다면 이를 Edge ee는 Vertex uu, vv와 Incident이라고 하고 Connect라도고 한다.
Undirected graph에서 Vertex의 Degree는 Vertex에 Incidented edge의 수를 의미하며 Vertex에 Loop가 있을 경우 Degree에 두번 기여한다.
Vertex vv의 Degree를 deg(v)\deg(v)라고 표현한다.

Example\

각 Vertex의 Degreedeg\deg

  • Solution
    deg(a)=4,deg(b)=6,deg(c)=1,deg(d)=5,deg(e)=6\deg(a)=4, \deg(b)=6, \deg(c)=1, \deg(d)=5, \deg(e)=6
정보

Theorem

The handshaking theorem
Undirected graph G=(V,E)G=(V,E)ee개의 Edge를 가질 때 2e=vVdeg(v)2e=\sum_{v\in V}\deg(v)

정보

Theorem

Undirected graph는 홀수 degree를 가진 Vertex가 짝수개 있다.

  • Proof
    Undirected graph G=(V,E)G=(V,E)에서 홀수, 짝수 Degree를 가진 Vertex set V1,V2V_1, V_2로 두면 2e=vVdeg(v)=vV1deg(v)+vV2deg(v)2e=\sum_{v\in V}\deg(v)=\sum_{v\in V_1}\deg(v)+\sum_{v\in V_2}\deg(v)이다.
    두 분리된 Graph 역시 vV2v\in V_2 역시 짝수이므로 vV1deg(v)\sum_{v\in V_1}\deg(v)역시 짝수이다.

(u,v)(u,v)가 Digraph GG의 Edge일 때 uuvv에 Adjacent하다고 하고 vvuu로 부터 Adjacent하다고 한다.
Vertex uu(u,v)(u,v)의 Initial vertex, vv는 Terminal 혹은 End vertex라고 한다.
Loop의 경우 Inital과 Terminal vertex가 동일하다.
Digraph에서 Degree는 In-degree와 Out-degree가 존재하며 Notation으로 각각 deg(v),deg+(v)\deg^-(v),\deg^+(v)로 표현한다.
In-degree deg(v)\deg^-(v)vv를 Terminal vertex로 두는 Edge의 수이며 Out-degree deg+(v)\deg^+(v)의 경우 vv가 Inital vertex인 Edge의 수를 의미한다.
vvDigraph에서 Loop는 In/Out-degree에 1씩 기여한다.

정보

Theorem

Digraph G=(V,E)G=(V,E)에 대해 vVdeg(v)=vVdeg+(v)=E\sum_{v\in V}\deg^-(v)=\sum_{v\in V}\deg^+(v)=|E|

Digraph의 Edge에는 Direction 상관없이 영향을 미치지 않는 여러 Property가 존재한다.
Digraph의 Direction을 무시하여 얻은 Graph를 Underlying undirected graph라고 한다.

Some Special Simple Graphs

Example

  • Complete graph
    Complete graph KnK_nnn개의 Vertex가 있고 서로 다른 Vertex끼리의 Edge가 1개 씩 포함된다.
  • Cycle
    Cycle CnC_nn3n\geq 3일 때 Vertex v1,v2,,vnv_1,v_2,\dots,v_n과 Edge {v1,v2},,{vn1,vn},{vn,v1}\{v_1, v_2\},\cdots,\{v_{n-1},v_{n}\},\{v_n,v_1\}으로 구성되어 있다.
  • Wheels
    Wheel WnW_nn3n\geq 3일 때 Cycle CnC_n에 추가 Vertex를 더하여 이 Vertex에 CnC_n의 Vertex들을 모두 연결하는 Edge를 얻는다.
  • nn-cubes
    nn-cube(nn-dimensional hypercube) QnQ_n은 길이가 nn2n2^n Bit string을 나타내는 Vertex가 있는 Graph이다.
    두 Vertex는 나타내는 Bit 문자열이 정확히 하나의 Bit 위치에서 다를 때 Adjaccent하다.
    QnQ_n에서 Qn+1Q_{n+1}을 생성할 수 있는데 이 때 QnQ_n을 복사하여 원본 첫 Bit에 0, 복사본엔 1을 둬 첫 Bit만이 다른 Vertex들을 연결하는 Edge를 추가함으로 얻을 수 있다.

Bipartite Graphs

Simple graph GG의 Vertex set VV를 두 개의 분리된 Set V1,V2V_1, V_2로 나눌 때 이를 Bipartite graph라고 한다.
Bipartite graph는 V1V_1에서 V2V_2만을 연결하므로 GG의 어떤 Edge도 같은 Set에 존재하는 Vertex를 연결하지 않고 이 때 (V1,V2)(V_1,V_2)는 Graph GG의 Vertex set VV를 Bipartition하였다고 표현한다.

Example

  • Complete bipartite graph
    Complete bipartite graph Km,nK_{m,n}은 Vertex set이 각각 m,nm,n개인 두 개의 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 G=(V,E)G=(V,E)의 Subgraph H=(W,F)H=(W,F)(WVFEW\subseteq V\land F\subseteq E)가 존재할 때 HHGG의 Proper subgraph이기 위해 HGH\not=G여야 한다.

Example

K5K_5의 Subgraph GG

Simple graph G1=(V1,E1),G2=(V2,E2)G_1=(V_1,E_1), G_2=(V_2,E_2)의 Union은 Vertex set이 V1V2V_1\cup V_2이고 Edge set이 E1E2E_1\cup E_2인 Simple graph이다.
G1,G2G_1, G_2의 Union을 Notation G1G2G_1\cup G_2로 나타낸다.

Example


G1G2G_1\cup G_2

  • 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로 표현하곤 한다.

G=(V,E)G=(V,E)가 Simple graph이고 V=n|V|=n일 때 GG의 Vertex들 V1,V2,,VnV_1, V_2, \dots, V_n과 같이 임의로 나열되어 있을 때 GG의 Adjacency matrix A(AG)A(A_G)는 이 Vertex들의 나열에 대해 n×nn\times n 크기의 Zero-one matrix로 Vi,VjV_i, V_j가 Adjacent일 때 (i,j)(i, j) Entry가 1이고 그렇지 않다면 0을 갖는다.
A=[aij]A=[aij], aij={1if {vi,vj}is an edge of G0otherwisea_{ij}=\begin{cases}1 & \text{if }\{v_i,v_j\}\text{is an edge of }G\\0 & \text{otherwise}\end{cases}이다.

Example


위 Simple graph의 Adjacency matrix

  • Solution
    [0110100110010110]\begin{bmatrix}0&1&1&0\\1&0&0&1\\1&0&0&1\\0&1&1&0\end{bmatrix}

Graph의 Adjacency matrix는 Vertex에 대해 선택된 순서에 따라 결정이 된다.
nn개의 Vertex를 가진 Graph에는 n!n!개의 서로 다른 Adjacency matrix가 존재한다(nn개의 Vertex의 순서는 n!n!개 이기에).
Simple graph의 Adjacency matrix는 Symmetric(aij=ajia_{ij}=a_{ji}) vi,vjv_i,v_j가 Adjacent할 때 두 Entry가 1이 되고 그렇지 않다면 0이 된다.
Simple graph의 경우 Loop가 없기에 aii=0a_{ii}=0이다.
Multigraph일 경우 Adjacency matrix는 Zero-one matrix가 아니고 Matrix의 (i,j)(i,j) Entry는 {ai,aj}\{a_i,a_j\}와 Connect된 Edge의 수와 같다.
모든 Undirected graph는 Symmetric adjacency matrix를 가진다.

Simple graph가 Sparse(Edge의 수가 적을 때)할 때 Graph를 표현하기 위해 Adjacency list를 사용하는 것이 더 효과적이다.
각 Vertex의 Degree가 cc를 초과하지 않고 ccnn보다 훨씬 작은 Constant일 경우 각 Adjacency list는 cc개 이하의 Vertex만 포함한다.

Simple graph가 Dense(조밀하다, Edge의 수가 많을 때)할 때, 즉 가능한 모든 Edge의 절반 이상을 포함하는 Graph와 같이 많은 Edge를 포함하고 있을 때 Adjacency matrix를 사용하여 Graph를 표현하는 것이 더 효과적이다.

Incidence Matrices

Graph를 나타내는 다른 방법 중 하나는 Incidence matrix를 사용하는 것이다.
G=(V,E)G=(V,E)의 Undirected graph라고 할 때 v1,v2,,vnv_1,v_2,\dots,v_n의 Vertex와 e1,e2,,eme_1,e_2,\dots,e_m의 Edge가 GG에 존재할 때 Incidence matrix는 V,EV,E에 대한 Ordering에 대한 n×mn\times m matrix로 정의되며 M=[mij]M=[m_{ij}]mij={1when edge ej is incident with vi0otherwisem_{ij}=\begin{cases}1&\text{when edge }e_j\text{ is incident with }v_i\\0&\text{otherwise}\end{cases}이다.

Example

1.
2.
위 Graph의 Incidence matrix

  • Solution 1
    [110000001101000011101000010110]\begin{bmatrix}1&1&0&0&0&0\\0&0&1&1&0&1\\0&0&0&0&1&1\\1&0&1&0&0&0\\0&1&0&1&1&0\end{bmatrix}
  • Solution 2
    [1110000001110110000110000000001100001100]\begin{bmatrix}1&1&1&0&0&0&0&0\\0&1&1&1&0&1&1&0\\0&0&0&1&1&0&0&0\\0&0&0&0&0&0&1&1\\0&0&0&0&1&1&0&0\end{bmatrix}

Isomorphism of Graphs

Simple graph G1=(V1,E1),G2=(V2,E2)G_1=(V_1,E_1), G_2=(V_2,E_2)V1V_1에서 V2V_2로 One-to-one 그리고 Onto function이 존재하는 경우 Isomorphic이라고 한다.
이 때 a,ba, bG1G_1에 Adjacent하면 그 경우 f(a)f(a)f(b)f(b)G2G_2에서 Adjacent해야 한다.
이런 Function ff를 Isomorphism이라고 한다.

Example


Graph G=(V,E),H=(W,F)G=(V,E),H=(W,F)가 Isomorphic인지 여부

  • Solution
    f(u1)=v1,f(u2)=v4,f(u3)=v3,f(u4)=v2f(u_1)=v_1, f(u_2)=v_4,f(u_3)=v_3, f(u_4)=v_2로 One-to-one correspondence을 형성한다.

두 Simple graph가 Isomorphic인 지 확인하는 것은 Vertex nn의 수가 조금이라도 커질 경우 어렵기에 두 Graph가 Isomorphic이 아님을 보여주는 것이 더 쉽다.
Graph 중 하나만 갖는 Property를 찾는다면 그 Property는 Isomorphism에 의해 보존된다.
Isomorphism에 의해 보존되는 Property를 Graph invariant라고 한다.

Example


Graph G,HG,H가 Isomorphic인 지 확인

  • Solution
    G,HG,H 모두 6개의 Vertex와 7개의 Edge를 가졌고 Degree 2인 Vertex로 구성된 Subgraph와 Connect하는 Edge들이 Isomorphic인 것을 확인할 수 있다.
    G,HG,H가 Graph invariant가 일치하기에 Function ff가 Isomorphism인 지 확인하면 된다.
    u1=v6,u2=v3,u3=v4,u4=v5,u5=v1,u6=v2u_1=v_6, u_2=v_3, u_3=v_4,u_4=v_5,u_5=v_1,u_6=v_2로 놓고 Adjacency matrix를 구할 경우 AG=AH=[010100101001010100101010000101010010]A_G=A_H=\begin{bmatrix}0&1&0&1&0&0\\1&0&1&0&0&1\\0&1&0&1&0&0\\1&0&1&0&1&0\\0&0&0&1&0&1\\0&1&0&0&1&0\end{bmatrix}이다.
    G,HG,H는 Isomorphic이다.

9.4. Connectivity

Paths

Path는 Graph의 Vertex에서 시작하여 Graph의 Edge를 따라 Vertex에서 Vertex로 이동하는 Edge의 순서이다.
Nonnegative integer nn, Undirected graph GG에 대해 길이가 nn인 Path는 Vertex uu에서 vv로의 Graph GGnn개의 Edge의 Sequence이다.
Graph가 Simple graph인 경우 이 Vertex Sequnce를 x0,x1,,xnx_0,x_1,\dots, x_n으로 나타낸다.
Path는 Begin vertex uu, End vertex vv가 같으며 길이 n>0n>0일 경우 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에서 a,b,c,d,ea, b, c, d, e는 길이가 4인 Simple Path이다.
a,b,e,d,a,ba,b,e,d,a,b는 길이가 5인 Simple이 아닌 Path이다.

Nonnegative integer nn과 Digraph GG에 대해 Vertex uu에서 vv까지의 길이가 nn인 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이다.
예시로 a,da,d가 서로 연결되어 있지 않기 때문이다.

정보

Theorem

Connected undirected graph의 모든 두 개의 Distinct vertex들은 Simple path가 존재한다.

Connected component란 Connected graph GG의 Connect subgraph에 대해 Not a proper subgraph이다.

Example


위 그림에서의 Graph HH의Connected component

  • Solution
    Graph HH는 3개의 Disjoint connected subgraph H1,H2,H3H_1, H_2, H_3의 Union이다.
    즉, H1,H2,H3H_1, H_2, H_3HH의 Connected component이다.

Connectedness in Directed Graphs

Digraph에서의 Connected는 Vertex uu에서 vv로도, vv에서 uu로도 갈 수 있는 Path가 모든 Vertex에 존재할 경우 Strongly connected, Undirected graph로 전환하였을 때 Connected될 경우 Weakly connected라고 한다.

Digraph GG의 Subgraph 중에서 Strongly connected인 Component를 Strong component라고 한다.

Paths and Isomorphism

Path와 Circuit은 두 Graph가 Isomorphic인지 판단하는 데 사용될 수 있다.
특정 길이의 Simple path로 두 Graph가 Isomorphic이 아닌 지 보여줄 수 있는 Invariant이다.

Example


Graph G,HG, H가 Isomorphic인 지 확인

  • Solution
    G,HG, H는 모두 8개의 Edge와 6개의 Vertex로 구성되어 있고 각 Graph에는 Degree가 3인 Vertex가 4개, Degree 2인 Vertex가 2개 있다.
    HH는 길이가 3인 Simple Circuit v1,v2,v6,v1v_1, v_2, v_6, v_1을 가지고 있으나 GG는 길이가 3인 Curcuit을 가지고 있지 않으므로 G,HG,H는 Not isomorpic이다.

Counting Paths Between Vertices

정보

Theorem

Graph GG를 Vextex v1,,vnv_1, \dots, v_n에 대한 Adjacency matrix AA를 갖는 Graph라고 할 때 길이 rrviv_i에서 vjv_j의 서로 다른 Path의 수는 ArA^r(i,j)(i,j)번째 Entry 수와 같다.

  • Proof
    Mathematical induction을 사용하여 GG가 Adjacency matrix AA를 가지는 Graph라고 할 때 Ar+1=ArAA^{r+1}=A^rA이므로 Ar+1A^{r+1}(i,j)(i,j)번째 Entry는 bija1j+bi2a2j++binanjb_{ij}a_{1j}+b_{i2}a_{2j}+\cdots+b_{in}a_{nj}(bik=(i,k)b_{ik}=(i,k)번째 ArA^r의 Entry)이다.
    Induction hypothesis에 따라 bikb_{ik}는 길이가 rrviv_i에서 vkv_k의 Path의 수이다.
    길이가 r+1r+1viv_i에서 vjv_j까지의 Path는 viv_i에서 Intermediate vertex vkv_k까지의 길이 rr인 Path와 vk,vjv_k,v_j로 이루어진 Edge로 구성되므로 viv_i에서 vkv_k까지의 길이 rr인 Path의 수인 bikb_{ik}vkv_k에서 vjv_j까지의 Edge수인 akia_{ki}의 Product이므로 증명할 수 있다.

Example


aa에서 dd로의 길이가 4인 Path의 개수

  • Solution
    Graph의 Adjacency matrix는 A=[0110100110010110]A=\begin{bmatrix}0&1&1&0\\1&0&0&1\\1&0&0&1\\0&1&1&0\end{bmatrix}이다.
    A4=[8008088008808008]A^4=\begin{bmatrix}8&0&0&8\\0&8&8&0\\0&8&8&0\\8&0&0&8\end{bmatrix}이므로 (1,4)(1,4)번째 Entry인 8이다.

9.5. Euler and Hamilton Paths

Euler Paths and Circuits

Graph GG에 해당하는 Euler circuit은 GG의 모든 Edge를 포함하는 Simple circuit을 의미한다.
GG의 Euler path는 GG의 모든 Edge를 포함하는 Simple path를 의미한다.

간단히 요약하여 Euler path(circuit)은 한붓 그리기이다.

Example


해당 Digraph 중 Euler curcuit의 유무

  • Solution
    Graph H2H_2a,g,c,b,g,e,d,f,aa,g,c,b,g,e,d,f,a로 Euler circuit을 가지고 있다.
    추가적으로 H3H_3c,a,b,c,d,bc,a,b,c,d,b로 Euler path를 가지고 있다.
정보

Theorem

두 개 이상의 Vertex가 있는 Connected multigraph는 모든 Vertex의 Degree가 짝수일 때 Euler circuit이 존재

정보

Pseudocode

Algorithm Constructing Euler Circuits

procedure EulerEuler(GG: connected multigraph with all vertices of even degree)
circuitcircuit := a circuit in GG beginning at an arbitrarily chosen vertex with edges successively added to form a path that returns to this vertex
HH := GG with the edges of this circuit removed
while HH has edges
begin
subsircuitsubsircuit := a circuit in HH beginning at a vertex in HH that also is an endpoint of an edge of circuitcircuit
HH := HH with edges of subcircuitsubcircuit and all isolated vertices removed
circuitcircuit := circuitcircuit with subcircuitsubcircuit inserted at the appropriate vertex
end {circuitcircuit is and Euler circuit}

Example


Mohammed's Scimitars 모양의 Graph GG에 Euler circuit이 있는 지 확인

  • Solution
    모든 Vertex들의 Degree가 짝수이기에 존재한다.
    위 Pseudocode를 참조하여 Euler circuit을 구성할 수 있다.
    먼저 a,b,d,c,b,e,i,f,e,aa,b,d,c,b,e,i,f,e,a인 Circuit을 형성하고 이 Circuit에서의 모든 Edge와 이 Edge가 제거될 때 Isolated(고립)되는 모든 Vertex를 삭제하여 Subgraph HH를 얻는다. HHd,g,h,j,i,h,k,g,f,dd,g,h,j,i,h,k,g,f,d이며 GG의 모든 Edge를 사용하였기에 a,b,d,g,h,j,i,h,k,g,j,d,c,b,e,i,j,e,aa,b,d,g,h,j,i,h,k,g,j,d,c,b,e,i,j,e,a가 Euler circuit임을 알 수 있다.
정보

Theorem

Connected multigraph는 정확히 두 개의 홀수 Degree인 Vertex가 있을 때 Euler path를 가짐(Not an Euler circuit)

Example


그림의 Graph들 중 어떤 Graph가 Euler path를 가지고 있는가

  • Solution
    G1G_1은 Degree가 홀수인 Vertex가 b,db, d이므로 정확히 두 개 가지고 있기에 b,db,d가 End vertex인 Euler path를 가진다(d,a,b,c,d,bd,a,b,c,d,b).
    G2G_2는 Degree가 홀수인 Vertex가 b,db,d이므로 Euler path를 가진다(b,a,g,j,e,d,c,g,b,c,j,db,a,g,j,e,d,c,g,b,c,j,d).
    마지막으로 G3G_3는 Degree가 홀수인 Vertex가 a,b,c,d,e,fa,b,c,d,e,f이므로 Euler path를 가지지 못한다.

Hamilton Paths and Circuits

Hamilton path의 경우 Graph의 모든 Vertex를 정확히 한 번씩 통과하는 Simple Path를 의미하며 이가 Circuit일 경우 Hamilton circuit이라고 한다.
즉 Vertex set V={x0,,xn1,xn}V=\{x_0,\dots,x_{n-1},x_n\}에 대해 0i<jn0\leq i<j\leq n에 대해 xixjx_i\not=x_j일 때 Path x0,,xnx_0,\dots,x_n은 Hamilton path가 된다.

간단히 요약하여 Hamilton path와 circuit의 경우 모든 구역을 돌기 위한 동선과 같다.

Example


Graph들의 Hamilton circuit이나 Hamilton path의 유무

  • Solution
    G1G_1은 Hamilton circuit이 존재한다(a,b,c,d,e,aa,b,c,d,e,a).
    G2G_2는 모든 Vertex를 지나는 Circuit을 위해서{a,b}\{a,b\} Edge를 두 번 포함해야 하므로 Hamilton circuit은 존재하지 않으나 Hamilton path는 존재한다(a,b,c,da,b,c,d).
    G3G_3눈 Hamilton circuit, Hamilton path가 존재하지 않는다.
정보

Theorem

Dirac's Theorem

GGnn개의 Vertex를 가진 Simple graph이며 n3n\geq 3이고 GG의 모든 Vertex들의 Degree가 n2\frac{n}{2}이상일 경우 GG는 Hamilton circuit을 가진다.

정보

Theorem

Ore's Theorem

GGnn개의 Vertex를 가진 Simple graph이며 n3n\geq 3이고 GG의 모든Nonadjacent vertex pair u,vu,v에 대해 deg(u)+deg(v)n\deg(u)+deg(v)\geq n을 만족할 경우 Hamilton circuit을 가진다.

Example

Graycode는 1940년대 AT&T Bell Lab.에서 Digital signal transmitting error의 Effect를 Minimize하기위해 Frank Gray가 발명했다.
회전하는 Pointer의 위치를 Digital form으로 표현할 수 있다.

위 그림은 길이가 3인 Bit string을 사용하는 두 가지 방법이다.
2n2^n개의 Arc로 나눈 후 각 Arc에 nn-bit string을 할당한 것이다.

Pointer가 두 Arc의 Boundary 근처에 있을 때 Pointer의 위치를 읽는데 실수가 발생할 수 있다.
예시로 Bit string 010대신 011이 읽힐 수 있다.
Gray code는 Adjacent arc가 정확히 하나의 Bit만 다르게 Label이 붙은 Arc의 Labeling이다.
즉 이는 길이가 nn인 Bit string을 나열하여 각 String이 정확히 하나의 위치에서만 다르며 이는 nn-cube인 QnQ_n을 Modeling할 수 있다.
즉 위 예시에서의 Gray code는 Q3Q_3에 대한 Hamilton circuit을 사용하여 쉽게 찾을 수 있다.

예시로 Q3Q_3에 의한 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에서 aa에서 zz 사이 Shortest path

  • Solution
    aa에서 시작하는 Path는 a,ba, ba,da, d만 존재하므로 다른 Path가 포함되지 않는다.
    a,ba, b보다 a,da, d가 작으므로 ddaabb보다 더 가까운 Vertex이다.
    다음으로 가까운 Vertex를 찾기 위해 aadd를 통과하는 모든 Path를 살펴보면 bb로 가는 Shortest path는 a,ba, b로 4이며, eea,d,ea,d,e로 5이다. 즉 aa에서 두 번째로 가까운 Vertex는 bb이다.
    aa에서 세 번째로 가까운 Vertex를 찾기 위해 a,d,ba, d, b를 통과하는 Path를 살펴보면 되므로 cca,b,ca,b,c, 즉 7이고 zza,d,e,za,d,e,z로 6이다.
    위 과정으로 인해 aa에서 zz로 가는 Shortest path는 66이 된다.

앞전 Example에서 사용한 Algorithm을 Dijkstra's algorithm이라고 한다.
Dikstra's algorithm은 첫 Vertex aa에는 0, 나머지 Vertex들에게는 \infin을 Labeling한 후 aa에서 각 Vertex까지의 Shortest path를 나타내는 값으로 대치하는 Algorithm이다.

Vextex들의 Distinguished set SkS_k를 만들며 이때의 kk는 반복 횟수가 된다.
Initial set S0=S_0=\empty이다.
Set SkS_kSk1S_{k-1}에서 Sk1S_{k-1}에 포함되지 않은 Label이 가장 작은 Vertex uu를 추가하며 형성한다.
uuSkS_k에 추가되면 SkS_k에 포함되지 않은 모든 Vertex의 Label을 Update한다.
이 때 Lk(v)L_k(v)kk번째 Step에서 Vertex vv의 Label로 SkS_k에 포함된 Vertex만을 포함하는 aa에서 vv까지의 Shortest path의 길이이다.

Vertex vvSkS_k에 포함되지 않은 경우 vv의 Label을 Update하기 위해 Lk(v)L_k(v)SkS_k에 포함된 Vertex만을 포함하는 aa에서 vv까지의 Shortest path의 길이이다.
Lk(a,v)=min{Lk1(a,v),Lk1(a,u)+w(u,v)}L_k(a,v)=\min\{L_{k-1}(a,v),L_{k-1}(a,u)+w(u,v)\}이다(wwuuvv의 Weight이다).

이 Procedure를 Target vertex가 추가될 때 까지 순차적으로 추가하며 반복하여 Shortest path를 구할 수 있다.

정보

Pseudocode

Algorithm Dijkstra's Algorithm

procedure DijkstraDijkstra(GG: weighted connected simple graph, with all weights positive){GG has vertices a=v0,v1,,vn=za=v_0,v_1,\dots,v_n=z and weights w(vi,vj)w(v_i,v_j) where w(vi,vj)=w(v_i,v_j)=\infin if {vi,vj}\{v_i,v_j\} is not an edge in GG}
for ii := 1 to nn
L(vi)L(v_i) := \infin
L(a)L(a) := 0
SS := \empty {the labels are now initialized so that the label of aa is 0 and all other labels are \infin, and SS is the empty set}
while zSz\notin S
begin
uu := a vertex not in SS with L(u)L(u) minimal
SS := S{u}S\cup \{u\}
for all vertices vv not in SS
if L(u)+w(u,v)<L(v)L(u)+w(u,v)<L(v) then L(u)+w(u,v)L(u)+w(u,v)
{this adds a vertex to SS with minimal label and updates the labels of vertices not in SS}
end {L(z)L(z)= length of a shortest path from aa to zz}

정보

Theorem

Dijkstra's algorithm은 Connected simple undirected weighted graph의 Shortest path를 찾으며 O(n2)O(n^2)의 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에 nn개의 Vertex들이 존재하면 시작점 선택 시 (n1)!(n-1)!개의 서로 다른 Hamilton circuit을 조하새야 한다.
첫 Vertex 선택에 nn, 두 번째 Vertex 선택에 n1,n-1,\dots로 반복하기 때문이다.
Undirected graph임을 이용하여 (n1)!2\frac{(n-1)!}{2}개의 Circuit을 조사하여야 한다.

Traveling salesman problem은 실용적, 이론적 중요성을 가지므로 이를 해결하기 위한 효율적인 Algorithm 개발에 많은 노력을 가졌으나 이 문제를 해결하기 위한 Polynomial worst-case time complexity algorithm은 알려져있지 않다.

대신 이를 해결하기 위한 실용적인 접근법은 Approximation algorithm(근사 알고리즘)을 사용할 수 있다.
Algorithm 문제에 정확한 Solution을 제공하지 않으나 정확한 Solution에 근접한 Solution을 제공하는 것이 보장된다.
즉, 총 Weight WW'WWcWW\leq W' \leq cW가 성립하도록 Hamilton circuit을 생성할 수 있다.
예시로 Weighted graph가 Triangle inequality를 만족하는 경우 c=32c=\frac{3}{2}를 만족하는 Polynomial worst-case time complexity algorithm이 존재한다.
일반 Weighted graph에 대해 모든 Positive real number kk에 해당하는 최선의 Solution의 kk배 이하의 Solution을 생성할 수 있는 Algorithm은 알려져있지 않으며 이를 찾는다면 Class P와 Class NP가 동일하다는 것을 보여줄 수 있다.

9.7. Planar Graphs

Graph가 Edge가 교차하지 않고 Plane에 그릴 수 있는 경우 Planar(평면적)이라고 한다.

Example


K4K_4는 Planar인 지

  • Solution

    Planar이다.

Example


Q3Q_3는 Planar인 지

  • Solution

    Planar이다.

Example


K3,3K_{3,3}은 Planar인 지

  • Solution
    K3,3K_{3,3}을 Plane에 그릴 때 Planar graph로 그릴 수 없다.
    K3,3K_{3,3}의 어떤 Planar representation에도 Vertex v1,v2v_1,v_2v4,v5v_4,v_5와 Connected여야 한다.
    이 네 개의 Edge는 Plane을 두 개의 Region R1,R2R_1, R_2로 나누는 Closed curve를 형성한다((a)(a) 참조).

    Vertex v3v_3R1,R2R_1, R_2 중 하나에 위치해야 하고 만약 v3v_3R2R_2에 위치한다고 가정할 때 Closed curve의 내부에서 v3v_3v4,v5v_4,v_5의 Edge가 R2R_2를 두 개의 Subregion R21,R22R_{21}, R_{22}로 나누게 된다((b)(b) 참조).
    이 때 어떠한 방법으로도 마지막 Vertex v6v_6를 Crossing edge가 없이 배치할 수 없다.
    그렇기에 K3,3K_{3,3}은 Not planar graph이다.

Euler's Formula

Graph의 Planar representation은 Plane을 여러 Region으로 나누며 그 중 Unbounded region도 포함된다(아래 예시에서 R6R_6에 해당).

\

정보

Theorem

Euler's formula

GGee개의 Edge와 vv개의 Vertex를 가진 Simple planar graph라고 할 때 GG의 Planar representation에서 rr을 Region의 수라고 할 때 r=ev+2r=e-v+2이다.

  • Proof
    Induction에 의해 증명 가능하다.
    Initial condition인 Relationship r1=e1v1+2r_1=e_1-v_1+2라고 할 때 e1=1,v1=2,r1=1e_1=1, v_1=2, r_1=1이 되므로 성립한다.
    rn=envn+2r_n=e_n-v_n+2가 성립하는 지 확인을 위해 {an+1,bn+1}\{a_{n+1},b_{n+1}\}를 Graph GG에서 Gn+1G_{n+1}이 될 때 추가된 Edge로 가정한다.
    이 두 Vertex들은 공통 Region RR의 Boundary에 존재하여야만이 Crossing edge 없이 GnG_n에 추가할 수 있다.
    새로운 Edge에 의해 RR은 두 개의 Region으로 나뉘게 된다.
    따라서 rn+1=rn+1,en+1=en+1,vn+1=vnr_{n+1}=r_n+1, e_{n+1}=e_n+1, v_{n+1}=v_n이므로 Formula는 여전히 Valid하다.
    다른 경우 새로운 Edge의 두 Vertex중 하나가 GnG_n에 포함되어 있지 않을 경우 새 Region으로 분할하지 않으며 이 때 rn+1=rn,en+1=en+1,vn+1=vn+1r_{n+1}=r_n, e_{n+1}=e_n+1, v_{n+1}=v_n+1이므로 Formula는 여전히 Valid하다.
    모든 상황에서 Formula가 Valid함을 증명했기에 rn=envn+2r_n=e_n-v_n+2가 성립함을 증명하였다.\

Example

Connected planar simple graph가 20개의 Vertex, 각 Vertex의 Degree가 3일 때 이Planar graph의Region의 개수

  • Solution
    v=20,3v=60,2e=60,e=30v=20, 3v=60, 2e=60, e=30이므로 r=ev+2=3020+2=12r=e-v+2=30-20+2=12이다.
정보

Corollary

Connected planar simple graph GGee개의 Edge와 vv개의 Vertex를 가지며 v3v\geq 3일 때 e3v6e\leq 3v-6이다.

  • Proof
    Region의 Degree 개념에 기반하여(Region의 Degree는 Region의 Bound에 있는 Edge의 개수) Connected planar simple graph는 Plane을 rr개의 Region으로 나눈다.
    각 Region의 Degree는 최소 3이 된다(평면 도형은 Triangle부터).
    Region의 Degree의 합은 Graph의 Edge수의 정확히 두 배이므로 각 Region의 Degree가 3 이상이므로 2e=rRdeg(R)32e=\sum_{r\in R}\deg(R)\geq 3이 성립한다.
    따라서 23er\frac{2}{3}e\geq r 이며 Euler's fomula를 사용하여 r=ev+2r=e-v+2이므로 ev+223ee-v+2\leq \frac{2}{3}e를 얻는다.
    정리하여 e3v6e\leq 3v-6임을 알 수 있다.
정보

Corollary

Connected planar simple graph GG가 Degree 5를 초과하는 Vertex를 가질 수 없다.

  • Proof
    GG가 Vertex의 개수가 1, 2일 경우 참이다.
    GG에 Vertex가 3개 이상 있을 경우 위 Corollary에 의해 e3v6e\leq 3v-6이므로 2e6v122e\leq 6v-12이다.
    Vertex의 Degree가 6 이상이라면 Handshaking theorem에 따라 2e=vVdeg(v)2e=\sum_{v\in V} \deg(v)가 성립하므로 2e6v2e\geq 6v가 성립하게 되나 앞전 Corollary와 Contradiction이 되므로 Degree는 5를 초과할 수 없다.
정보

Corollary

Connected planar simple graph가 ee개의 Edge와 vv개의 Vertex를 가질 때 v3v\geq 3이고 길이가 3인 CircuitGG이 존재하지 않을 경우 e2v4e\leq 2v-4이다.

  • Proof
    Region의 Degree 개념에 기반해 구한 Colorary에서 원래 최소 3이였으나 이는 Triangle(즉, 길이가 3인 circuit의 존재)을 의미하므로 Degree가 4 이상이므로 2e=rRdeg(R)42e=\sum_{r\in R}\deg(R)\geq 4를 의미하며 ev+212ee-v+2\leq \frac{1}{2}e임을 얻기에 정리하여 e2v4e\leq 2v-4임을 알 수 있다.

Example

K3,3K_{3,3}이 Nonplanar임을 증명

  • Solution
    K3,3K_{3,3}은 길이가 3인 Circuit이 없으므로 6개의 Vertex와 9개의 Edge를 가졌기에 92v4=89\leq 2v-4=8이므로 거짓이므로 Nonplanar이다.

Kuratowski's Theorem

어떤 Graph가 K3,3K_{3,3}이나 K5K_5를 Subgraph로 가질 경우 그 Graph는 Nonplanar graph가 된다.
만약 Graph가 Planar graph라면 Edge {u,v}\{u,v\}를 제거하고 추가 Vertex ww를 추가하여 Edge {u,w},{w,v}\{u,w\},\{w,v\}를 추가하여 얻은 Graph 또한 Planar graph이다.
이러한 Operation을 Elementary subdivision(초등 분할)이라 하고 Graph G1=(V1,E1)G_1=(V_1,E_1)G2=(V2,E2)G_2=(V_2,E_2)는 동일한 Graph의 Elementary subdivision으로 얻을 수 있을 때 Homeomorphic(동형)이라고 한다.

Example


위 세 Graph가 Homeomorphic임을 증명

  • Solution
    이 세 Graph는 G1G_1에서 Elementary subdivision을 통해 얻을 수 있어 Homeomorphic이다.
    G1G_1은 Elementary subdivision의 Empty sequence를 통해 자신으로 부터 얻을 수 있고 G2G_2를 얻기 위해서 G1G_1에서 {a,c}\{a,c\}를 제거한 후 Vertex ff를 추가한 후 {a,f},{f,c}\{a,f\},\{f,c\}를 추가하고 {b,g}\{b,g\}를 제거한 후 Vertex gg를 추가하여 {g,h},{g,c}\{g,h\}, \{g,c\}를 추가한다.
    G3G_3의 경우 G1G_1에서 {b,e}\{b,e\}를 제거하고 Vertex k,jk,j를 추가해 {b,k},{k,j},{j,e}\{b,k\},\{k,j\}, \{j,e\}를 추가하고 {b,c}\{b,c\}를 제거하고 Vertex g,ig,i를 추가하여 {b,i},{i,g},{g,c}\{b,i\},\{i,g\},\{g,c\}를 추가하여 얻어 Homeomorphic임을 알 수 있다.
정보

Theorem

Kuratowski's theorem

어떤 Graph가 Nonplanar이기 위해 K3,3,K5K_{3,3},K_5 중 하나의 Homeomorphic인 Graph를 Subgraph로 가져야 한다.

Example


위 Petersen graph가 Planar인 지

  • Solution
    Petersen graph는 bbbb가 Endpoint인 세 Edge를 삭제하여 얻은 Subgraph HHK3,3K_{3,3}과 Homeomorphic이므로 Nonplaner이다.

    {d,h}\{d,h\}를 삭제한 후 {e,h},{e,d}\{e,h\}, \{e,d\}를 추가, {e,f}\{e,f\}를 삭제한 후 {a,e},{a,j}\{a,e\}, \{a,j\}를 추가, {i,j}\{i,j\} 삭제한 후 {g,i},{g,j}\{g,i\}, \{g,j\}를 추가하는 Operation을 통해 가능해진다.

9.8. Graph Coloring

Simple graph의 Coloring은 각 vertex에 색을 부여하였을 때 Adjacent vertex끼리 같은 색을 할당하지 않음을 의미한다.

Graph coloring의 최소한의 색깔 수를 Chromatic number라고 하며 이를 Notation χ(G)\chi(G)로 나타낸다.

정보

Theorem

The four color theorem

Planar graph의 Chromatic number는 4를 초과하지 않는다.

Example


Graph G,HG, H의 Chromatic number

  • Solution
    Graph GG의 Chromatic number의 수는 3이 된다.
    이유로 Vertex a,b,ca,b,c를 서로 다른 색으로 칠해야 하기 때문이다.
    GG를 세 가지 색으로 칠할 수 있는지 확인하기 위해 각각 색을 할당할 경우 ddb,cb, c와 Adjacent이므로 aa의 색으로, ggaa와 다른 색으로 칠해진 두 Vertex와 Adjacent이므로 aa와 같은 색으로 칠해 증명할 수 있다.
    Graph HH의 Chomatic number의 수는 추가된 Region에 의해서 a,ga,g가 Adjacent이므로 Chromatic number는 4가 된다.

Simple Example

Chromatic number of Kn=nK_n=n

  • Solution
    모든 Vertex가 Adjacent이므로 χ(Kn)=n\chi(K_n)=n이 된다.

Chromatic number of Km,n=2K_{m,n}=2

  • Solution
    모든 Vertex가 Adjacent 하지 않는 Group이 두 개 이므로 χ(Km,n)=2\chi(K_{m,n})=2가 된다.

Chromatic number of Cn=2+(n%2)C_n=2+(n\%2)

  • Solution
    Cycle CnC_n은 짝수 일 경우 번갈아가며 색칠하여 2, 홀수 일 경우 최대 3개의 색이 필요하다.

Applications of Graph Colorings

Graph coloring은 Scheduling과 Assignment에 관한 다양한 Application이 존재하나 효율적인 Algorithm이 발견되지 않았다.

Example

기말 시험이 대학에서 학생이 동시에 두 개의 시험을 보지 않도록 Scheduling

  • Solution
    Graph model을 사용해 Vertex는 과목, Edge는 과목을 듣는 공통 학생이 존재할 때 존재한다면 이 때 Graph coloring을 통하여 문제를 해결할 수 있다.

    예시로 Graph가 과목 Vertex set{1,2,3,4,5,6,7}\{1,2,3,4,5,6,7\}이 존재하고 Edge가 위와 같이 생성되었다면 Coloring을 통해 총 필요한 구분 수는 4임을 알 수 있다.\