29

!cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.1 그래프와 그래프의 표현 199

10. 그래프 이론

그래프(graph)라는 용어는 수학에서 매우 다른 두 가지의 뜻으로 사용된다. 우

리가 함수 y=x2의 그래프라고 말할 때는, 두 번째 수가 첫 번째 수의 제곱인 모든 순

서쌍 (x, y)들을 좌표 평면 상에 표시한 것을 말한다.

이 장에서 그래프라는 단어는 함수의 그래프와는 매우 다른 의미를 가진다. 직

관적으로 그래프는 점들과 이들을 연결하는 곡선의 집합을 말한다. 그러나 그래프 이론

에서 점 Ai와 Aj를 포함하는 곡선의 모양에 관련이 있는 것이 아니라, 오직 Ai와 Aj 사

이의 직접적인 연결(path)의 존재 여부에만 관심을 가진다. 예를 들어, [그림 10-1]과

[그림 10-2]에 나타나있는 두 개의 그래프 G1과 G2는 똑같은데, G1의 각각의 점들과 이

들을 연결하는 곡선들은 G2의 점들과 연결 직선에 대응되고 반대의 경우도 마찬가지

다. G1과 G2를 같은 것으로 봄으로써, 그래프에 관한 많은 흥미로운 이론을 만들고 이

들 이론을 광범위하게 적용을 할 수 있다.

[그림 10-1] [그림 10-2]

10.1 그래프와 그래프의 표현

[그림 10-1]과 [그림 10-2]와 같은 그래프 표현들은 그래프의 개념을 이해하는

데 도움을 주지만 정의를 말해주지는 않는다. 그래프의 정의를 이야기하기 위해 먼저

점(point)을 꼭지점(vertex)으로, 곡선(curve)을 변(edge)으로 생각하자.

정의 1.1(그래프) 그래프는 꼭지점 {A1, A2, ... }의 집합 V와 이들을 연결하는 변의 집합

E로 정의된다. 변은 서로 다른 꼭지점 AiAj들의 쌍을 순서에 상관없이 나타낸 집합이다.

Page 2: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

200 10. 그래프 이론

변 AiAj는 변 AjAi와 같은 것으로 간주되고, 꼭지점 Ai와 Aj의 각각의 쌍에 대하여 AiAj가

E 안에 있다면 한번만 나타난다. 그래프의 차수(order)는 V 안의 꼭지점의 개수이다.

[그림 10-1]과 같은 기하학적 그림들을 그래프의 표현(representation of the

graph)이라고 부른다. [그림 10-1]과 [그림 10-2]는 두 개의 집합

(1) V={A 1,A 2,A 3,A 4}

(2) E={A 1A 2,A 2A 3,A 1A 4,A 2A 4}

로 정의된 그래프 G의 표현이다.

그래프 G는 또한 행렬 A = [aij]에 의해 표현될 수 있다. 만약 Ai와 Aj가 하나

의 선에 의해 연결된다면 aij = 1로 두고, 만약 Ai와 Aj가 연결되지 않는다면 aij = 0이

라고 하자. 그러면 A는 그래프 G의 행렬 표현(matrix representation) 또는 G의 결

합 행렬(incidence matrix)이라고 불린다. 예를 들어, [그림 10-2]에서 보이는 그래프

에 대한 결합 행렬은

(3) A=

0 1 0 11 0 1 10 1 0 01 1 0 0

.

정의 1.1에서 추상적인 성질을 알아보았으므로 이전의 언어를 사용하여 꼭지점

을 점으로 변을 선이나 곡선으로 언급하도록 하자. 만약 어떤 두 개의 곡선도 끝점을

제외하고 어떤 교점도 갖지 않는 평면 그림(plane diagram)으로 표현될 수 있다면, 그

러한 그래프를 평면형(planar)이라고 한다. 예를 들어, 5개점들의 모든 쌍이 각각 하나

의 선에 의해 연결된 [그림 10-3]의 K5와 A1, A2, A3에서 B1, B2, B3 사이 모두가 하나

씩의 선으로 연결된 [그림 10-4]의 K3,3은 평면형이 아닌 그래프의 예들이다.

[그림 10-3 그래프 K5] [그림 10-4 그래프 K3,3의 두 형태]

그래프 G의 부그래프(subgraph) H는 G의 부분 집합 중에서, 그래프를 형성

할 수 있는 점들과 변들의 집합이다. 그러므로 만약 부그래프 H 안에 있도록 G의 변

Page 3: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.1 그래프와 그래프의 표현 201

중 하나인 A3A5를 선택한다면, 점 A3과 A5도 역시 H 안에 있어야만 한다. 평면형이 아

닌(nonplanar) 모든 그래프는 K5 혹은 K3,3를 부그래프로 포함해야 한다. 이러한 결론이

옳다는 증명을 위해서, 그래프 안에 나타나기도 하는 어떤 “성가신" 점들을 제거할 필

요가 있다.

점 Ai의 차수(degree)는 Ai를 끝점으로 가지는 변의 개수, 즉 Ai에서 만나는

변의 개수이다. 예를 들어, 그래프 K5([그림 10-3])에서, 각각의 점들(vertices)은 차수 4

를 가진다. 그래프 K3,3([그림 10-4])에서, 각각의 점들은 차수 3을 가진다.

변에 하나 또는 그 이상의 점들을 더하는 것에 의해 새로운 그래프를 형성할

수 있다. K3,3으로부터 A1B1을 연결하는 변 위에 새로운 점 C를 더하는 것에 의해 새로

운 그래프를 형성할 수 있다. 이것은 G를 형성하기 위해 변 A1B1을 새로운 두 개의 변

A1C와 CB1로 바꾼다는 것을 의미한다. 새로운 점 C는 차수 2인 점이다. 이러한 방법으

로 얻어진 새로운 그래프 G도 평면형(planar)이 아니다. 그러나 C를 더했기 때문에, 이

것은 K3,3과 같은 부그래프를 포함하지 않는다. 이러한 과정을 거꾸로 생각하면, 주어진

그래프에서 차수가 2인 어떤 점 C를 없애는 과정을 생각할 수 있을 것이다. 즉, 만약

AC와 BC가 그래프 G의 변이고 C의 차수가 2라면, C를 없애고 2개의 변 AC와 BC를

하나의 변 AB로 대체한다. 이러한 것들을 바탕으로 Kuratowski에 의한 유명한 정리를

알 수 있다.

정리 1.2 (Kuratowski) 어떤 그래프가 평면형일 필요충분조건은, ‘그래프에서 차수가 2

인 모든 점들을 없애면, K5나 K3,3인 부그래프를 포함하지 않는다.’는 것이다.

예제 1.3 K5와 K3,3의 결합 행렬을 만들고, 각 꼭지점의 차수를 표시하여라.

>> K5 = ones(5,5) - diag(diag(ones(5,5))); degree = sum(K5)degree = 4 4 4 4 4

>> K33 = [zeros(3) ones(3); ones(3) zeros(3)], degree = sum(K33)K33 = 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0

degree = 3 3 3 3 3 3

Page 4: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

202 10. 그래프 이론

그래프들은 여러 사회적 구조를 연구하는데 매우 유용하다. 전형적인 응용으로

n명의 사람들의 집합과 그 사람들 사이에서 대칭 관계를 생각해보자. 예를 들어,

(A) 두 명의 사람은 서로 안다.

(B) 두 명의 사람은 같은 클럽에 속해 있다.

(C) 두 명의 사람은 서로 결코 다시 말하지 않기로 맹세했다.

와 같은 관계가 있을 수 있다. 관계 (A)를 예를 들어 그래프 이론에 대해 살펴보도록

하자. 사람들을 나타내는데 점을 이용하고 관계를 선으로 표시하는 것에 의해 관계

(A)에 묘사되어진 사회적 구조를 그래프 이론에 관련시킬 수 있다. 만약 Ai와 Aj가 철

수와 영희로 표현되는 점이라면, 점 Ai와 Aj를 연결하는 선을 그리는 것과 필요충분조

건은 Ai와 Aj가 친한 것이다. 여기서 철수는 영희를 알지만 영희는 철수를 모르는 비대

칭 가능성은 무시한다. 이러한 비대칭 상황은 방향성이 있는 10.2절 유향그래프 이론에

서 다룰 것이다. 또한, 영희가 그녀 자신을 아는지 아닌지에 대해선 관여하지 않기로

하자. 왜냐하면 그래프 안에서 변은 어느 한 점에서 자기 자신으로 연결되는 것을 허락

하지 않기 때문이다. 물론, 그래프의 정의를 Ai와 자기 자신을 연결하는 곡선인 루프

(loop)나 똑같은 쌍들의 점들을 연결하는 두 개 또는 그 이상의 곡선들을 허락하는 것

으로 바꿀 수 있지만, 이러한 일반적인 형태의 그래프에 대해서는 여기서 논의하지 않

기로 하자. 여러 개의 변은 만약 어떤 사람들의 친밀감의 “강도"를 표현하는 다이어그

램을 원한다면 유용할 것이다.

관계 (A)에 대하여 구체적인 예를 들어 살펴보자. 다섯 명의 사람 A1, A2, A3,

A4, A5 중에서 어떤 세 명도 서로 알지 못하고 어떤 세 명도 서로 모르지 않다고 가정

한 상황을 그래프로 표현하면, 아래와 같은 두 개의 그래프를 얻을 수 있다.

[그림 10-5 그래프 G] [그림 10-6 그래프 G*]

이들 그래프로 표현되는 5명의 관계에서 만약 서로 아는 세 명의 사람들이 있다면, 이

것은 [그림 10-5] 안의 삼각형에 의해 표현될 수 있다. 유사하게, 서로 모르는 세 명의

사람들은 [그림 10-6]에서 보여 지는 G* 안의 삼각형으로 나타내질 수 있다. 명백하게,

이 그래프들 중 어느 것도 삼각형을 포함하지 않는다.

[그림 10-5]와 [그림 10-6]에서와 같이 변의 존재 여부를 바꾸는 것으로, 임의

의 그래프 G로부터 보완적(complementary) 그래프 G*를 얻을 수 있다. 점 Ai와 Aj

가 G*안에서 연결된다와 필요충분조건은 그 점들이 G안에서 연결되지 않는 것이다. 이

때, 그래프 G와 G*는 서로 보완적이라고 말한다.

Page 5: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.2 유향그래프 203

예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적 그래프 Gs의 결합 행렬을 구하여라.

>> G = [0 1 1 0 0; 1 0 0 1 0; 1 0 0 0 1; 0 1 0 0 1; 0 0 1 1 0];>> Gs = ones(size(G)) - G - diag(ones(length(G),1)) % Delete self-loopsGs = 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0

10.2 유향그래프

이 절에서는 그래프의 변에 방향(direction)을 할당하여 그래프를 새롭게 정의

하여 볼 것이다. 그래프에서 변의 방향은 Ai에서 Aj로 가는 선을 AiAj로 쓰고 반대의

경우를 AjAi로 표시한다. 그러면 AiAj를 유향변(directed line)이라고 말하고 [그림

10-7]처럼 화살표에 의해 방향을 표시한다. 유향변 AiAj에 대해서 점 Ai는 시작점

(initial point, first point, starting point)이라고 하고 Aj는 끝점(terminal point,

second point, final point)이라고 한다. 그래프나 유향그래프는 무한개의 점과 무한개의

변을 가질 수 있으나, 이 교재에서는 유한개의 점과 변을 가진 그래프와 유향그래프에

대해서만 생각할 것이다.

정의2.1 유향그래프(digraph) 유향그래프는 유향변들의 집합 E와 꼭지점 {A1, A2, ...}의

집합 V이다. 집합 E는 AiAj와 AjAi를 둘 다 포함할 수 있지만, 시작점과 끝점이 같은 루

프(loop)는 포함하지 않는다. (digraph는 directed graph의 줄인 말이다.)

정의2.2 동형구조(Isomorphism) 만약 유향그래프(또는 그래프) H 안의 점들을 재배열

하여 G와 동일하게 만들 수 있으면, 유향그래프(또는 그래프) G와 H는 동형구조

(isomorphic)라고 말한다.

두 개의 점에서의 모든 가능한 유향 그래프를 그려보면, [그림 10-7]에서처럼

단지 네 가지의 경우가 존재한다.

[그림 10-7 두 점을 가진 유향그래프의 표현]

Page 6: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

204 10. 그래프 이론

만약 점들의 재배열을 허락한다면 [그림 10-7]에서 그래프 G3은 A1을 A2로, A2를 A1으

로 바꾸는 것에 의해 G2와 동일하게 될 수 있다. [그림 10-7]에서 G3는 G2의 동형구조

임을 알 수 있다. 그러므로 두 점을 가진 서로 다른 유향그래프는 오직 세 개만이 존재

한다.

유향그래프를 이용하면 구성원간의 사회적 구조를 표현할 수가 있고, 이 표현

은 사회학자와 그와 유사한 분야의 사람들에게 유용한 도구가 될 수 있다. 다음의 예들

은 유향그래프로 표현되어질 수 있는 여러 상황을 설명하는 예들이다.

(A) n명의 사람들이 있을 때, A1가 A2를 알고 있다고 가정하자. 그러면 상응

하는 유향그래프 G는 유향변 A1A2를 포함한다. 만약 A2가 A1을 알지 못하면, G는 [그

림 10-7]의 부그래프 G2를 포함한다. 그러나 만약 A1과 A2가 서로 알면, [그림 10-7]의

G4를 G의 부그래프로 포함한다. 만약 n 명의 사람들의 집합 안의 모든 사람들이 집합

안의 그 밖의 모든 사람들을 안다면, 유향그래프는 n(n-1)개의 유향변을 가질 것이다.

만약 ‘안다’를 ‘좋아 한다’, ‘기대 한다’ 또는 ‘신뢰 한다’로 바꾼다면 역시 유사한 형태의

구조를 가지게 된다. 그러므로 AiAj가 G 안에 있다는 것과 필요충분조건은 Ai가 Aj를

좋아하는(기대하는, 신뢰하는) 것이다.

(B) 군대나 또는 독재 정권 안에서 명령할 수 있는 사람과 그것에 복종해야만

하는 사람들이 누군지가 대개의 경우 명확하다. 군대에 있는 사람들이나 독재 정권하의

시민들은 G의 점들로 표현될 수 있고 유향변 AiAj가 G 안에 있다는 것의 필요충분조

건은 Ai가 Aj에게 명령을(복종해야만 하는) 할 수 있다는 것이다. 그러한 유향그래프는

대개 여러 가지를 가진 나무 모양이 되지만, 민주적인 조직일수록 설득에 의해 Aj가 Ai

의 의견을 바꿀 수 있어 유향변 AjAi가 동시에 존재할 수 있다.

(C) 통신 네트워크는 적합한 통신 수단을 가지고 있는 n명의 사람 A1, A2, ...,

An으로 구성된다. 개인들은 G 안의 점들에 의해 표현되고, 유향변 AiAj가 존재한다는

것과 필요충분조건은 Ai가 Aj와 통신할 수 있다는 것이다. 이러한 관계가 대칭이 될 필

요는 없다. AiAj가 G안에 있지만 AjAi는 그렇지 않을 경우가 발생할 수 있다. 예를 들

어, 라디오에 의한 통신이나, 비둘기에 의한 통신은 일방향 통신의 예들이다.

(IV) 라운드 로빈 토너먼트(round robin tournament)에서 각각의 경기자들은

한 경기에서 모든 다른 경기자들과 경기한다. 유향변 AiAj가 유향그래프 안에 있다는

것과 필요충분조건은 경기자 Ai와 경기자 Aj가 싸워 Ai가 승리하였다는 것이다. 만약

무승부가 없다면, G 안의 점들의 각각의 쌍은 정확히 하나의 유향변에 의해 연결된다.

Page 7: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.2 유향그래프 205

그러한 유향그래프는 우월 유향그래프(dominance digraph)라고 불린다. 만약 G가 우월

유향그래프라면 i≠j인 각각의 쌍 i, j에 대하여 AiAj가 G 안에 있거나 AjAi가 G*안에

있지만 둘 다 있지는 않다. (좀 더 자세히 보려면 10.4절을 보시오)

(V) G의 점들이 개인으로만 표현될 필요는 없다. 각 점들이 어떤 특정 진술을

나타낸다고 가정하자. 만약 Ai가 Aj를 추론하는 것을 증명할 수 있다면 유향변 AiAj는

G 안에 있다. 많은 정리들을 포함하는 오랜 수학적 작업 안에서, 유향그래프 G는 이제

까지는 자각되지 못했을 새로운 결과를 알게 하는데 매우 도움이 될 수 있다. 명확하게

하기 위해서, 선 A2A3, A5A9, A6A7, A9A1, A7A5, A3A6이 G 안에 있다고 하자. 그러면

바로 A2A1역시 G 안에 있어야만 한다는 것을 알 수 있고, 결과적으로(어떠한 추가적

노력 없이도) A2가 A1을 추론한다는 또 다른 정리를 얻는다.

유향그래프로 표현될 수 있는 다른 흥미로운 구조들은 이 밖에도 많다. 유향그

래프를 연구함으로써, 이러한 구조들의 성질에 대해 보다 자세히 알 수 있다. 그러나

매번 그래프의 표현을 그림으로 그리는 것은 복잡한 여러 현상을 기술하는데 효과적이

지 못하다. 따라서 10장 1절에서 살펴본 결합행렬을 이용하는 것이 효과적일 때가 많

다. G의 결합 행렬의 정의에 의해, aij=1이라는 것과 필요충분조건은 유향변 AiAj가 G

안에 있다(Ai가 Aj와 통신하고 있다)는 것이다. 행렬 A는 다이어그램보다 어떤 정보도

더 포함하지 않는다. 어떤 경우에는 다이어그램으로부터 더욱 쉽게 원하는 정보를 얻을

수 있고, 또 다른 경우에는 행렬 A가 더 유리할 수도 있다. 따라서 그래프를 그림으로

표현하느냐 결합 행렬로 표시하느냐는 단지 취향의 문제이기도 하다. 그러나 행렬 A는

컴퓨터로 보내질 수 있고, 만약 그래프 G의 차수가 매우 크다면 이를 그림으로 그리는

것은 쉽지 않아 결합행렬 표현하는 것이 유리하다. (C)에서 묘사된 통신 네트워크를 예

로 들어, 그래프의 성질과 결합행렬에 대해 보다 자세히 살펴보도록 하자.

예제 2.3 [그림 10-8]의 유향그래프(통신 네트워크)에 대한 결합 행렬을 구하고 유향그래프를 그려주는 프로그램을 작성하여라.

[그림 10-8 통신 네트워크 그래프]

Page 8: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

206 10. 그래프 이론

function prGraph(A, x, y)% prGraph(A, x, y) shows a directed graph % Incidence matrix A of order n with vertex (x(1:n),y(1:n)) % Arrow Consists of 5 points (Zs, Zt, Zn+Nt, Zn-Nt, Zt)% where Zn = 0.9*Zt + 0.1*Zs and Nt is perpendicular to Zt-ZsArrowX = [1 0 0 0; 0 1 0 0; 0.1 0.9 .01 -.01; 0.1 0.9 -.01 .01; 0 1 0 0];ArrowY = [0 0 1 0; 0 0 0 1; -.01 .01 0.1 0.9; .01 -.01 0.1 0.9; 0 0 0 1]; n = length(A);if size(A,1) ~= size(A,2) error('Incidence matrix A must a square matrix')elseif nargin == 1 x = rand(n,1); y = rand(n,1);elseif nargin ~= 3 error('prGraph(A, x, y) requires A OR A,x,y')elseif length(x)~=n || length(y)~=n error('Vector x and y must match with the incident matrix A')end newplot;for i = 1:n text(x(i), y(i), sprintf('o %d',i)); for j = 1:n if A(i,j) == 0; continue; end z = [x(i); x(j); y(i); y(j)]; line(ArrowX*z, ArrowY*z); endend

>> A = [0 1 1 0 1 0; 0 0 1 0 0 0; 0 1 0 1 0 0; 0 0 1 0 1 1; 0 0 1 0 0 1; 0 1 1 1 1 0]; >> x = [0 0 1 2 3 3]; y = [2 0 1 1 2 0];>> prGraph(A, x, y)

o 1

o 2

o 3 o 4

o 5

o 6

Page 9: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.2 유향그래프 207

예제 2.3은 매우 흥미로운 사실들을 보여주고 있다. 예를 들어, 어떤 사람도

A1에게 통신하지 않는다. 이것은 [그림 10-8]에서 뿐 만 아니라, 행렬 A의 첫 번째 열

이 모두 0이라는 사실을 관찰함으로서도 알 수 있다. 점 Ai의 외차수(outdegree)는

Ai로부터의 선의 개수이고 od(Ai)로 표시된다. 유사하게, Ai의 내차수(indegree)는 Ai

로 끝나는 선의 개수로 id(Ai)로 쓰인다. Ai의 차수는 d(Ai)로 표시하고, 정의에 의해,

(4) d(Ai) = id(Ai) + od(Ai).

명백히 od(Ai)는 A의 i 번째 행 안의 원소의 합이고, id(Ai)는 i 번째 열 안의 원소의

합이다. 예제 2.3의 결합 행렬 A로부터 A6은 가장 큰 바깥차수를 가지고 A3은 가장 큰

안차수를 가진다는 것을 알 수 있다.

예제 2.4 [그림 10-8] 유향그래프에서 각 꼭지점의 외차수, 내차수를 구하여라.

>> A = [0 1 1 0 1 0; 0 0 1 0 0 0; 0 1 0 1 0 0; 0 0 1 0 1 1; 0 0 1 0 0 1; 0 1 1 1 1 0]; >> od = sum(A,2)'od = 3 1 2 3 2 4

>> id = sum(A)id = 0 3 5 2 3 2

위 예제에서 A4는 A2와 통신하지 않지만 경로 A4A3, A3A2에 의한 2 단계 안

에 A2와 통신할 수 있다. 그러한 수열(sequence)을 2-단계 통신(two-stage

communication)이라고 부른다. 일반적으로, 만약 G 안에 각 선의 끝점이 다음 선의 시

작점이 되는 k 개의 유향변 AiAq, AqAr, ...,AtAu, AuAj의 수열이 존재하면 Ai는 Aj에

k-단계 통신(k-stage communication)을 가진다고 한다. 다음 정리에서처럼 행렬 A

를 사용해서 k-단계 통신이 가능한 경우의 수인 k-단계 통신의 수를 계산하기 쉽다.

정리 2.5 A를 G의 결합 행렬(incidence matrix)라고 하고,

(5) A k=

s 11 s 12 … s 1n

s 21 s 22 … s 2n

⋮ ⋮ … ⋮s n1 s n2 … s nn

라 하자. 그러면 sij는 Ai에서 Aj로 가는 k-단계 통신의 경우의 수이다.

((증명)) 일반적인 경우는 수학적 귀납법(mathematical induction)에 의해 따르기 때문에,

k=2에 대한 증명만 하는 것으로도 충분하다. k=2일 때,

(6) s ij=a i1a 1j+a i2a 2j+⋯+a ina nj.

Page 10: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

208 10. 그래프 이론

여기서 aikakj=1과 필요충분조건은 aik=1과 akj=1이다. 이런 일이 발생하는 것과의 필요충

분조건은 Ai가 Ak와 통신하고 Ak는 Aj와 통신하는 것이다. 때문에 Ai에서 Aj로 가는 각각

의 2-단계 통신에 대하여, (6)의 오른편이 1이 된다. 역으로, 합 sij에서 각각의 1에 대해

서, Ai에서 Aj로 가는 2-단계 통신이 존재한다. ▨

예제 2.6 [그림 10-8]과 같은 네트워크에 대해 2-단계와 3-단계의 수를 찾아라.

>> A = [0 1 1 0 1 0; 0 0 1 0 0 0; 0 1 0 1 0 0; 0 0 1 0 1 1; 0 0 1 0 0 1; 0 1 1 1 1 0]; >> A2=A^2, A3=A^3A2= 0 1 2 1 0 1 0 1 0 1 0 0 0 0 2 0 1 1 0 2 2 2 1 1 0 2 1 2 1 0 0 1 3 1 1 2A3= 0 3 3 3 2 1 0 0 2 0 1 1 0 3 2 3 1 1 0 3 6 3 3 3 0 1 5 1 2 3 0 5 5 5 3 2

A3의 첫 번째 열이 모두 0이기 때문에, 3 단계 안에서 어떤 사람도 A1에게 통

신하지 않음을 알 수 있다. 그러나 행렬 A3는 또한 3 단계 안에서 A6이 A3과 통신할

수 있는 5가지 다른 방법이 있음을 말해 주지만, [그림 10-8]로부터는 바로 명확히 알

수 없다. 만약 순서대로 점들에 이름을 붙인다면, 5개의 순열은 (1)A6A3A2A3,

(2)A6A3A4A3, (3)A6A4A5A3, (4) A6A4A6A3, (5)A6A5A6A3이다. i 번째 행의 원소들의 합

은 i=6 일 때 가장 크고 이 합은 20이다. 결과적으로, 만약 어떤 사람이 3 단계에서 소

문을 만들어서 널리(가장 많은 수의 변형을 가지고) 퍼트리고 싶다면 A6에게 말해야만

한다. j 번째 열의 원소들의 합을 보았을 때, j=3 일 때, 최대값 23을 가진다는 것을 알

수 있다. 결과적으로, 어떤 사람이 A3에게 듣는 것에 의해 3-단계 전달 이후에 가장 큰

많은 이야기(정보 혹은 틀린 정보)를 듣게 될 것이다.

어떤 사람은 2 단계나 그 이상의 단계에서 자기 자신과 통신할 수 있다. 이것

은 같은 점 Ai를 가지고 시작하고 끝낸 유향변 AiAq, AqAr, ...,AtAu, AuAi의 수열에 의

한 유향그래프에서 표현된다. 그러한 수열은 순환(cycle)이라고 불리고 단지 꼭지 점

의 순서로 표시된다. 그러므로 [그림 10-8]에서 보여 지는 유향그래프는 순환 A2A3A2,

A2A3A4A6A2, A2A3A4A5A6A3A2을 포함한다. 그러므로 만약 A2로 표현되는 사람이 루머

를 시작하면, 그는 나중에 똑같은 소문(변형될 가능성이 있는)를 듣게 될 것이다.

Page 11: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.3 그래프에서의 거리 209

예제 2.6에서 3-단계 전달로는 누구도 A1에게 통신할 수 없고, 또한 A2에서

A2로, A2에서 A4로의 3-단계 전달도 불가능함을 보았다. 그렇다면, 이들 통신은 보다

많은 전달 단계를 거치면 가능할 지를 판단해야 할 것이다. 그러기 위해서는, “그래프

의 차수까지의 전달경로가 필요한 통신은 있을 수 있으나 그래프의 차수까지 전달되어

지지 않는 통신은 불가능하다”는 사실을 이용할 수 있다. 이와 같이 연결 가능한 경로

를 모두 모은 그래프를 그래프의 closure라 한다.

예제 2.7 [그림 10-8]과 같은 네트워크에 대해 이 그래프의 closure를 찾아라

>> A = [0 1 1 0 1 0; 0 0 1 0 0 0; 0 1 0 1 0 0; 0 0 1 0 1 1; 0 0 1 0 0 1; 0 1 1 1 1 0]; >> closure = A^length(A) > 0closure = 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1

10.3 그래프에서의 거리

그래프 안의 출발점에서 도착점까지의 지나간 점들을 경로라고 한다. 이러한

경로를 이용하여 그래프 상의 점들 사이의 거리를 측정할 수 있다.

정의 3.1(경로, Path) 그래프 G 안에 변 AiAq, AqAr, ...,AtAu, AuAj과 함께 점 Ai, Aq, ...,

Au, Aj의 집합은, 만약 어떤 변도 반복되지 않으면 Ai와 Aj를 연결하는 경로(path)를 형성

한다고 말한다. 경로 길이(the length of path)는 경로에 포함된 변의 수이다.

만약 G가 그래프가 아니라 유향 그래프라면, 자연이 변이 점들의 순서에 의해 방향을

가지고, 이러한 경우에 경로를 Ai에서 Aj로 가는 경로라고 언급한다. 만약 Ai와 Aj(경

로의 처음과 마지막 점)가 같다면, 그 경로는 닫힌 경로(closed path)라고 불린다, 그

렇지 않으면, 그 경로는 열린 경로(open path)라고 불린다. 닫힌 경로는 회선

(circuit)이라고도 불린다.

경로 안에서 어떤 점들은 한 번 이상 발생하기도 하지만 변은 결코 한 번 이

상 경로 안에 나타날 수 없다는 것은 매우 중요한 사실이다. 만약 어떤 두 개의 점도

같지 않다면, 그 경로는 단순 경로(simple path)라고 불린다. 만약 처음과 끝점을 제

Page 12: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

210 10. 그래프 이론

외하고(이 때 이 두 점은 같다) 어떤 두 개의 점들도 같지 않으면, 그 경로는 단순 닫

힌 경로(simple closed path)라고 불린다.

만약 그래프 G 안에 Ai와 Aj를 연결하는 경로가 존재한다면, Ai와 Aj는 연결

되었다(connected)고 한다. 그렇지 않으면, Ai와 Aj는 연결되지 않았다고 한다. 만약 G

안의 모든 점들의 쌍이 연결되어 있으면, 그래프 G는 연결되었다고 말한다. 유향 그래

프에서는 연결성은 더욱 복잡한데, 그 이유는 Ai에서 Aj로 가는 경로는 존재하지만 Aj

에서 Ai로의 경로가 존재하지 않을 수도 있기 때문이다. 그러한 경우에는 Ai는 Aj에 연

관되지만 Aj는 Ai에 연관되지 않는다.

예제 3.2 [그림 10-9]에서 보여 지는 유향그래프에 대해서, 다음과 같이 (a)A1에서 A9로 (b)A9에서 A1로 (c)A1에서 A5로 (d)A5에서 A9로 (e)A9에서 A5로 가는 단순 경로(simple path)와 그 경로의 길이를 각각 찾아라.

[그림 10-9 구차 유향그래프]

((답)) L(XYZ)는 점 X, Y, Z를 순서대로 통과하는 경로의 길이를 표시한다고 하자. (a) L(A1A6A9)=2, L(A1A3A6A9)=3, L(A1A3A5A8A6A9)=5. (b) A9에서 A1로 가는 경로는 존재하지 않는다. (c) L(A1A3A5)=2, L(A1A6A5)=2, L(A1A3A6A5)=3. (d) L(A5A8A6A9)=3. (e) L(A9A6A5)=2, L(A9A8A6A5)=3.

이를 일반화하여 Ai에서 Aj로 가는 일정한 길이의 모든 경로를 찾는 프로그램을 작성하고, A1에서 A9로 가는 길이 2인 경로와 5인 경로를 모두 표시하여라.

function findPath(A, path, pos)% findPath(A, path, pos-or-len) with incident matrix A find outs % all possible paths from path(1) to path(end) of fixed length % path(1:pos) = starting to current nodes, path(end) = ending node% path = [path(1) zeros(1,len-1) path(end)] if len>=length(path)% Caution: The output path may visit the same edge more than once if pos>=length(path); path = [path(1) zeros(1,pos-1) path(end)]; pos = 1;

Page 13: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.3 그래프에서의 거리 211

end if pos+1==length(path) if A(path(pos),path(end)) > 0 disp(path); end returnend for k = 1:length(A) if A(path(pos),k) > 0 path(pos+1) = k; findPath(A, path, pos+1); endend

>> A = [0,0,1,0,0,1,0,0,0; 1,0,1,1,0,0,0,0,0; 0,0,0,0,1,1,0,0,0; 0,1,0,0,0,1,1,0,0; 0,0,0,0,0,0,0,1,0; 0,0,0,0,1,0,1,0,1; 0,0,0,0,0,0,0,0,0; 0,0,0,0,0,1,0,0,0; 0,0,0,0,0,1,1,1,0];

>> findPath(A, [1,9], 2) 1 6 9>> findPath((A, [1,9], 5) 1 3 5 8 6 9 1 3 6 9 6 9 1 6 5 8 6 9 1 6 9 8 6 9

Ai에서 Aj로 가는 여러 개의 경로들이 존재하는 경우에, 가장 짧은 경로의 길

이를 Ai에서 Aj로의 길이라고 부른다. [그림 10-9]에서 보여 지는 유향 그래프에서, A1

에서 A9로 가는 세 개의 경로를 찾을 수 있다. 명백하게, D(A1, A9)=2이다. 그러나 유

향그래프 안에서 D(A9, A1)은 존재하지 않는다. D(A1, A5)=2, D(A5, A9)=3, D(A9,

A5)=2이다. 유클리드 평면 기하학으로부터 어떤 세 개의 점 A1, A2, A3에 대해서 다음

과 같은

(7) D(A1, A2) ≤ D(A1, A3) + D(A3, A2)

삼각 부등식(triangle inequality)을 생각해볼 수 있다. 그래프 또는 유향그래프 중 하나

에 대해서, 다음의 정리를 생각해 볼 수 있다.

정리 3.3 A1, A2, A3를 그래프(또는 유향그래프)의 임의의 점들이라고 하자. 만약 관련된

모든 거리가 존재한다면, 부등식 (7)이 존재한다.

정리 3.4 그래프에서 만약 Ai와 Aj를 연결하는 경로가 존재한다면,

(8) D(Ai, Aj) = D(Aj, Ai)

Page 14: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

212 10. 그래프 이론

이나, 유향그래프라면, (8)은 사실이 아닐 수 있다. 이것에 대해 알아보기 위해 [그림

10-9]을 다시 살펴보면, D(A5, A9)=3, D(A9, A5)=2.

그래프 상의 두 점 사이를 연결하는 최단 경로의 길이를 구하는 알고리즘은

여러 가지가 있다. 그 중 간단하면서도 효율적인 방법은 다음과 같이 정리할 수 있다.

d ( 0)ij = { 0 if i= j

1 if A ij=1,i≠jBigDis if A ij=0,i≠j

d ( k)ij = min(d ( k- 1)

ij ,d ( k- 1)ik +d ( k- 1)

kj ), 1≤k≤n

[그림 10-9]의 유향그래프의 각 점 사이를 연결하는 최단 거리를 구하면 다음과 같다.

예제 3.5 유향그래프에서 두 점 사이의 경로가 존재하는지 여부와 최단 거리를 계산하는 프로그램을 작성하고, [그림 10-9]의 각 점들 사이의 거리를 구하여라.

function Dist = shortPath(A)% shortPath(A) returns minimum path length from Ai to Aj% Dist(i,j) == BigDist means that there is no path from i to j n = length(A); Dist = A; BigDist = Inf;for i = 1:n for j = 1:n if A(i,j) == 0 && i ~= j Dist(i,j) = BigDist; end endend for k = 1:n for i = 1:n for j = 1:n Dist(i,j) = min(Dist(i,j), Dist(i,k)+Dist(k,j)); end endend

>> A = [0,0,1,0,0,1,0,0,0; 1,0,1,1,0,0,0,0,0; 0,0,0,0,1,1,0,0,0; 0,1,0,0,0,1,1,0,0; 0,0,0,0,0,0,0,1,0; 0,0,0,0,1,0,1,0,1; 0,0,0,0,0,0,0,0,0; 0,0,0,0,0,1,0,0,0; 0,0,0,0,0,1,1,1,0];

> shortPath(A)Dist = 0 Inf 1 Inf 2 1 2 3 2 1 0 1 1 2 2 2 3 3

Page 15: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.3 그래프에서의 거리 213

Inf Inf 0 Inf 1 1 2 2 2 2 1 2 0 2 1 1 3 2 Inf Inf Inf Inf 0 2 3 1 3 Inf Inf Inf Inf 1 0 1 2 1 Inf Inf Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf 2 1 2 0 2 Inf Inf Inf Inf 2 1 1 1 0

유향그래프에서 거리에 대한 개념은 조직 안에서 개인의 위치를 측정하는데

사용될 수 있다. 조직에 대한 유향그래프 G를 생각해보자. 그러면 변들은 다양한 해석

이 주어질 수 있다. 예를 들어, 유향변 AiAj는 (A) Ai가 Aj와 통신한다, 또는 (B) Ai가

Aj의 일을 감독한다거나 (C) Ai가 Aj에게 명령을 준다는 것을 의미할 수 있다. (B)나

(C) 같은 해석에서, Ai는 Aj보다 높은 지위를 가진다는 것은 명백하며, 만약 연결 체인

에서 Aj가 Ai로부터 더 멀리 있다면 이런 위계에서의 지위는 더 높아진다. 이런 자연스

런 관찰을 바탕으로 Harary는 다음과 같은 지위에 대한 수치적 측정 방법을 소개했다.

정의 3.6 위치(Status) G가 조직을 표현하는 유향그래프라고 하자. 그러면 G 안에서의

Ai의 지위(status of Ai)를 S(Ai)로 표시하면

(9)

인데, 즉 S(Ai)는 Ai로부터 유한한 거리를 가지는 (즉, Ai에서 Aj로의 경로가 존재하는)

모든 개인 Aj 사이의 거리의 합이다.

예제 3.7 두 조직의 구조가 [그림 10-10]에서 주어진 그래프와 같다고 하자. A1, A2, A4, A5와 B1, B2, B6에 대한 위치(status)를 계산하라.

[그림 10-10 조직 내에서의 관계를 표시하는 유향 그래프]

Page 16: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

214 10. 그래프 이론

((답)) 직접적인 계산은 아래와 같다:S(A1) = 10, S(A2) = 2, S(A4) = 3, S(A5) = 0,S(B1) = 15, S(B2) = 3, S(B6) = 6.

>> A = [ 0 1 1 0 0 0 0 0 0; 0 0 0 0 1 1 0 0 0; 0 0 0 0 0 0 1 1 0; 0 0 0 0 0 0 1 1 1; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0];>> Dist = shortPath(A), Dist(find(Dist==Inf))=0; Status=sum(Dist,2)'Dist = 0 1 1 Inf 2 2 2 2 Inf Inf 0 Inf Inf 1 1 Inf Inf Inf Inf Inf 0 Inf Inf Inf 1 1 Inf Inf Inf Inf 0 Inf Inf 1 1 1 Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf Inf Inf Inf 0Status = 10 2 2 3 0 0 0 0 0

>> B = [0,1,1,0,0,0,0,0,0; 0,0,0,1,0,0,0,0,0; 0,0,0,0,1,0,0,0,0; 0,0,0,0,0,0,1,0,0; 0,0,0,0,0,0,1,1,1; 0,0,0,0,1,0,0,0,1; 0,0,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,0];>> Dist = shortPath(B), Dist(find(Dist==Inf))=0; Stauts = sum(Dist,2)'Dist = 0 1 1 2 2 Inf 3 3 3 Inf 0 Inf 1 Inf Inf 2 Inf Inf Inf Inf 0 Inf 1 Inf 2 2 2 Inf Inf Inf 0 Inf Inf 1 Inf Inf Inf Inf Inf Inf 0 Inf 1 1 1 Inf Inf Inf Inf 1 0 2 2 1 Inf Inf Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf Inf Inf Inf 0 Inf Inf Inf Inf Inf Inf Inf Inf Inf 0Stauts = 15 3 7 1 3 6 0 0 0

A1과 B1이 둘 다 똑같은 수의 사람들을 가지고 있는 조직의 우두머리라고 할

지라도, 위치에 대한 Harary 측정은 B1에게 A1보다 더 큰 위치를 준다.

Page 17: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.4 토너먼트 경기 그래프 215

10.4 토너먼트 경기 그래프

각 경쟁자가 모든 다른 경쟁자와 경기하고 비기지 않는다고 가정하는 라운드

로빈 토너먼트(round robin tournament)는 자연스럽게 유향그래프 G를 만들어 준다.

각 경기자는 한 점으로 표현되고, 유향변 AiAj가 G 안에 있다와 필요충분조건은 Ai가

Aj를 이기는 것이다.

정의 4.1 토너먼트(Tournament) 유향그래프 G는, 만약 모든 다른 점들의 쌍 Ai와 Aj에

대하여, AiAj가 G 안에 있거나 AjAi가 G 안에 있지만 둘 다 있지는 않은 성질을 가진다

면 토너먼트(tournament)라고 부른다.

토너먼트는 우월 유향그래프(dominance digraph)라고도 불리는데, 그것은

집합 안의 어떤 두 사람 사이에서 항상 한 사람이 다른 사람보다 우월한 (명령을 주는,

영향을 끼치는) 우월 관계를 표현하기 때문이다. 토너먼트에 관한 결합 행렬은 토너먼

트 행렬(tournament matrix) 또는 우월 행렬(dominance matrix)이라고 불린다.

주어진 세 개의 점에 대해서, 단지 두 가지 타입의 토너먼트가 가능하다. [그

림 10-11]에서 보여 지는 것으로 알 수 있다. 이러한 두 개의 유향 그래프에 대한 결합

행렬은

(10) C=

0 1 00 0 11 0 0

and D=

0 1 10 0 10 0 0

이다.

[그림 10-11 3점으로 구성된 우월 유향 그래프]

유향그래프 C는 순환(cycle)이라고 불린다. 유향그래프 D는 추이적(transitive)이라고

말한다. 추이성(transitivity)에 대한 개념을 명백히 하기 위해 기호 >>을 우월함을 가

Page 18: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

216 10. 그래프 이론

리키는 것으로 표시한다. 즉 Ai >> Aj는 Ai가 Aj보다 우월하다 또는 토너먼트에서 Ai

가 Aj를 이겼다는 것을 의미한다. 정의에 의해, Ai >> Aj과 필요충분조건은 유향변

AiAj가 유향그래프 안에 있는 것이다. 우선

(T) 만약 Ai >> Aj이고 Aj >> Ak이면, Ai >> Ak이다.

정의4.2 추이적(Transitive) 토너먼트(또는 우월 유향그래프)는, 만약 모든 세 개의 점에

대해서 조건 (T)가 참이면, 추이적(transitive)이라고 말한다.

Si를 점 Ai의 바깥 차수라고 하자. 정의에 의해, 이것은 정확히 Ai가 이길 경기

의 수(또는 Ai가 우월한 사람들의 수)이다. Si 값을 Ai에 대한 점수라고 불린다. 한 점

Ai에 대하여, Ai로부터 시작된 두 점으로 이루어진 변을 생각해 보면, Ai와 이 변의 두

끝점은 자동적으로 추이적이 된다. 만약 Ai로부터 시작되는 Si개의 변이 존재하면, Ai는

Si(Si-1)/2 개의 추이적 세 점들 안에서 우월하다. 결과적으로 공식

(11) t= ∑n

i= 1

S i(S i-1)

2

은 어떤 토너먼트에서 추이적 세 점들의 총 수를 준다. 세 점들의 총 수는 단지 n 개

의 물건에서 3개를 가지는 조합(combinations)의 수이고, 이것은 n(n-1)(n-2)/6이다. 세

점은 추이적(transitive)이거나 순환적(cyclic) 중 하나이기 때문에,

(12) c=n(n-1)(n-2)

6-t=

n(n-1)(n-2)6

- ∑n

i= 1

S i(S i-1)

2

은 순환적인 세 점의 수를 준다.

예제 4.3 아래 결합 행렬은 어느 테니스 경기 토너먼트의 결과이다.

(13)

A1 A2 A3 A4 A5 A6 A7A1 0 0 0 1 1 1 1

A2 1 0 1 1 0 1 0

A =A3 1 0 0 0 1 1 1

A4 0 0 1 0 0 1 1

A5 0 1 0 1 0 0 1

A6 0 0 0 0 1 0 0

A7 0 1 0 0 0 1 0

이 토너먼트에 얼마나 많은 순환적 세 점과 얼마나 많은 추이적 세 점이 있는가?

>> A = [0,0,0,1,1,1,1; 1,0,1,1,0,1,0; 1,0,0,0,1,1,1; 0,0,1,0,0,1,1; 0,1,0,1,0,0,1; 0,0,0,0,1,0,0; 0,1,0,0,0,1,0];

>> score = sum(A,2)'score = 4 4 4 3 3 1 2

Page 19: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.4 토너먼트 경기 그래프 217

>> transitive = sum(score.*(score-1)/2)transitive = 25

>> n=length(A); cycle = n*(n-1)*(n-2)/6 - transitivecycle = 10

위의 예제에서 나온 토너먼트 경기에서 A1, A2, A3는 모두 같은 승수를 가진

다. 이와 같은 경기에서 더 이상의 추가적인 경기 진행 없이 승리자를 설정하기 위한

방법으로 2-단계의 우월성의 수를 설명하려 한다. 만약 Ai >> Aj이고 Aj >> Ak이면,

이러한 순열을 Ai에 대한 2-단계 우월성이라고 부른다. Ai에 대한 2-단계 우월성의 수

는 A2의 i 번째 행 안의 원소들의 합이다.

(14)

Row sum

0 2 1 1 1 2 2 9

1 0 1 1 3 3 3 12

A2 = 0 2 0 2 2 2 2 10

1 1 0 0 2 2 1 7

1 1 2 1 0 3 1 9

0 1 0 1 0 0 1 3

1 0 1 1 1 1 0 5

이 계산에서, 첫 번째 상을 A2에게 주고, 두 번째 상은 A3에게 주고 세 번째 상은 A1

에게 준다. Ai에 대한 1-단계와 2-단계 우월성의 총 수(total number)를 Ai의 승수

(power)이라고 한다. 이 예에서 A2의 승수는 4+12=16이다.

예제 4.4 예제 4.3 경기 토너먼트의 결과에서 승수(power)값을 구하시오.

>> A = [0,0,0,1,1,1,1; 1,0,1,1,0,1,0; 1,0,0,0,1,1,1; 0,0,1,0,0,1,1; 0,1,0,1,0,0,1; 0,0,0,0,1,0,0; 0,1,0,0,0,1,0];

>> score = sum(A,2)';>> power = score + sum(A^2,2)'power = 13 16 14 10 12 4 7

Page 20: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

218 10. 그래프 이론

정리 4.5 우월 유향그래프의 1단계에서 가장 많은 수의 사람들에게 우월한 사람은 모

든 사람에게 2단계에서 우월하다.

((증명)) 단지 첨자를 선택하는 것에 의해, A1을 가장 많은 수의 사람에게 우월한 사람

이라고 가정하고 이들을 A2, A3, ..., Ak라고 하자. B를 A1이 우월하지 않은 어떤 다른 사

람들이라고 하자. 1 단계에서 A1은 B에 우월하지 않기 때문에, B가 A1보다 우월하다.

([그림 10-12])

[그림 10-12 우월 관계 그래프]

2단계에서 A1이 B보다 우월하지 않다고 가정하자. 그러면 B와 연결하는 변은 B에서 A2

로 가야만 한다; 즉, B가 A2에 우월하다. 유사하게, B는 A3, ..., Ak에 우월하다. 그러므로

B는 A1보다 1 단계에서 더 많은 사람들에게 우월하다. 이것은 A1에 대한 가정에 모순

이다. 때문에, Ai와 B를 연결하는 변 중 적어도 하나는 Ai에서 B로 가야만 하고 그래서,

A1이 B에게 2 단계에서도 우월하다. ▧

어떤 토너먼트가 추이적(transitive)이라는 말은, 토너먼트 안의 어느 세 점들

도 순환(cyclic)이 아닐 경우를 말한다. 결론적으로, 식 (12)에 의해 주어진 순환인 세

점들의 수는 추이적인 것으로부터 토너먼트의 편차를 측정하는 좋은 지표가 될 수 있

다. 순환인 세 점의 최대 수(maximum number)는 다음의 정리에서 알 수 있다.

정리 4.6 n 개의 점을 가진 어떤 토너먼트에서 순환(cycle)의 수

(15) ≤

i f

i f

이고, 만약 적당하게 토너먼트가 선택되면, 등식이 성립할 수 있다.

Page 21: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.5 군집 검출 219

10.5 군집 검출

군집이라 함은 집단 안에서 함께 서로간의 교류를 가진 최대 구성원의 모임을

말한다. 이를 보다 엄밀하게 정의하면 다음과 같다.

정의5.1 통신 네트워크 안에서의 군집(clique)은 모임 안의 어떤 두 사람이 서로 통신하

는 성질을 가진 3명 이상의 개인들의 모임 중 최대의 모임이다.

예제 5.2 (a) A1, A2, A3, A4 각각은 모두와 통신한다(단, 자기 자신과는 제외하고) (b) A5는 단지 A1과만 통신한다, (c)A6은 A2, A4, A5와 통신한다. 위와 같은 성질들을 가진 6명의 개인들의 집합 {A1, A2, A3, A4, A5, A6}이 있다고 가정하자. 모든 가능한 군집(cliques)을 찾아라.

((답)) 군집의 정의로부터, 부분 집합 안의 모든 개인들의 쌍 사이에서 양방향 통신이 존재하는 가장 큰 가능한 부분 집합(적어도 3명 이상인)을 찾아야만 한다. 단지 2개의 군집 {A1, A2, A3, A4}과 {A2, A4, A6}만이 있음을 알 수 있다. 단지 2명뿐이기 때문에 부분 집합 {A1, A5}는 군집이 아니다. 또한, 부분 집합 {A1, A2, A3}도 군집이 아닌데, 최대가 아니기 때문이다.

만약 어떤 집합 안의 개인의 수가 크면, 단순한 관찰로 군집을 결정하기가 어

렵다. 그래서 행렬을 이용하여 군집의 존재를 찾고 여러 관련된 계산을 수행하기 위해

서 컴퓨터를 사용한다. A=[aij]는 n명의 개인들을 가진 특별한 통신 네트워크에 대한

결합 행렬이라고 하자. 그리고 다음과 같이 새로운 행렬 B=[bij]를 만들 수 있다. 만약

aij=1이고 aji=0이면 bij=0;그 밖의 모든 다른 경우에는 bij=aij. 행렬 B는 A의 대칭 커널

(symmetric kernel)이라고 불린다. 예를 들어, 예제 5.2의 결합 행렬을 A라고 하면

(16)

A1 A2 A3 A4 A5 A6

A1 0 1 1 1 1 1

A2 1 0 1 1 1 1

A = A3 1 1 0 1 1 1

A4 1 1 1 0 1 1

A5 1 0 0 0 0 0

A6 0 1 0 1 1 0

이다. 여기서, a16, a25, a35, a36, a45, a65에 있는 1을 0으로 바꾼다면, 우리는 대칭 커널

Page 22: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

220 10. 그래프 이론

(17) B=

0 1 1 1 1 01 0 1 1 0 11 1 0 1 0 01 1 1 0 0 11 0 0 0 0 00 1 0 1 0 0

를 얻을 수 있다. (MATLAB 명령 B = A.*A’을 이용하여 구할 수 있다.) B의 정의로

부터 bij=1과 필요충분조건은 Ai와 Aj 사이에 양방향 통신이 존재하는 것이다. 군집의

존재에 대한 연구를 위해 B 대신 B3에 대해 설명한다.

정리 5.3 A를 통신 네트워크에 대한 결합행렬이라고 하고 B를 A의 대칭 커널이라고

하자. b(3)ii을 B3의 i 번째 행과 i 번째 열의 원소라고 하자. 만약 b(3)ii이 양수이면 Ai는 어

떤 군집에 속한다. 역으로, Ai는 어떤 군집에 속하면, b(3)ii이 양수이다.

((증명)) b(3)ii이 양수라고 가정하자. 그러면 정리 2.4에 의해 Ai에서 Aj로 가는 적어도

하나의 3-단계 통신이 존재한다. Ai가 자신과는 통신하지 않기 때문에, Aj와 Ak 두 사

람이 있어야만 한다(j≠k). 그래서

Ai Aj Ak Ai

(화살표는 통신의 방향이다). 만약 통신이 상호간에 일어나는 것이라면 B는 0 아닌 원

소를 가지는 행렬이기 때문에

Ai Aj Ak Ai

이어야만 한다 : 때문에 Ai, Aj, Ak는 같은 군집의 멤버이다. 역으로, 만약 Ai가 어떤 군

집에 속한다면, Ai에서 Ai로 가는 3-단계 통신이 존재하고, 그렇기 때문에 bii(3)이 양수이

다. ▨

예제 5.4 통신 네트워크에 관한 행렬 A가

A=

0 1 0 11 0 0 00 1 0 11 0 1 0

라고 가정하자. 어떤 사람들이 군집에 속해 있는가?

>> A = [0 1 0 1; 1 0 0 0; 0 1 0 1; 1 0 1 0];>> B = A.*A'B = 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0

>> B3 = B^3

Page 23: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.5 군집 검출 221

B3 = 0 2 0 3 2 0 1 0 0 1 0 2 3 0 2 0

B3의 대각선에 있는 모든 원소들이 0이기 때문에, 정리 5.3으로부터 어떤 군집

도 존재하지 않음을 알 수 있다. 그러나 정리 5.3은 군집이 있는 경우에도 군집 안의

개인들의 수나 Ai가 속한 군집의 수에 관련된 어떤 정보도 제공하지 않는다. 다음의 정

리는 개인 Ai가 속해 있는 군집의 크기(size)에 대한 정보를 준다.

정리 5.5 어떤 개인 Ai가 정확히 하나의 군집에 속해 있다고 가정하자. 그러면 이 군집

이 m명의 멤버를 가진다는 것과 필요충분조건은

(18) bii(3) = (m-1)(m-2).

((증명)) m=4인 경우에 대해 증명하도록 하겠다. 일반적인 경우는 유사한 논리로 따르면

된다. Ai가 정확히 하나의 군집에 속하고 군집의 크기는 4라고 가정하자. 그러면 bii(3)=

(4-1)(4-2) = 6. {Ai, Aj, Ak, Al}을 군집의 4명의 사람이라고 하자. 군집의 정의에 의해, 이

4명의 사람들 사이에는 양방향 통신이 존재한다([그림 10-13]).

[그림 10-13 군집 관계 그래프]

이 유향 그래프로부터 Ai에서 Aj로 3-단계 관계(3-step connection)가 Ai로 시작

하는 그래프 안에서 어떤 삼각형 둘레를 도는 것에 의해 형성될 수 있음을 알 수 있다.

그러므로 아래의 6개의 관계를 얻는다.

반시계방향 시계방향

Ai Aj Ak Ai Ai Ak Aj Ai

Ai Aj Al Ai Ai Al Aj Ai

Ai Ak Al Ai Ai Al Ak Ai

그러므로, bii(3)≥6이다. bii

(3)>6이라고 가정하면, B3이 대칭인 3-단계 관계(3-stage

Page 24: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

222 10. 그래프 이론

connections)이기 때문에,

Ai Ap Aq Ai

인 Ap, Aq가 존재해야만 한다. 결과적으로, Ai가 또 다른 군집에 속하거나 Ai는 4명 이상

의 개인을 가진 군집에 포함된다. 이것은 A가 크기 4인 정확히 하나의 군집에 속한다

는 가정에 모순이다. 따라서 bii(3)=6이다.

역방향을 증명하기 위해, bii(3)=6을 가정한다. Ai가 크기 4인 군집에 포함된다는

것을 보여야만 한다. bii(3)≠0이기 때문에, 양방향 통신을 포함하는 Ai에서 Ai로 가는 3-

단계 관계가 존재해야만 한다. 그러므로

Ai Aj Ak Ai

인 Aj와 Ak가 존재한다. 만약 단지 양방향 통신만이 존재했었다면, bii(3)=2. bii

(3)=6로 주어

졌기 때문에, Ai에서 Ai로 가는 또 다른 3-단계 관계가 존재해야만 한다. 다시 말해서,

Ai Al Ap Ai

인 Al, Ap가 집합 안에 존재한다. Ai가 단지 하나의 군집에 속하기 때문에, Ai, Aj, Ak, Al,

Ap은 모두 똑같은 군집에 속해야만 한다. 즉 5명으로 구성된 군집임을 알 수 있고, 정

리의 첫 번째 부분에 의해 bii(3)≥(5-1)(5-2)=12이어야만 한다. bii

(3)=6<12이기 때문에, Al이

나 Ap는 Aj이나 Ak가 되어야만 한다. 때문에 Ai는 크기 4인 하나의 군집에 속한다. ▨

정리 5.5는 만약 개인 Ai가 하나 이상의 군집에 속한다면 직접적으로 적용될

수 없다. 그러나, 행렬 B3을 주의 깊게 살핀다면 때때로 위 정리를 유용하게 쓸 수 있

다.

예제 5.6 행렬 A가

A=

0 1 1 0 11 0 1 1 11 1 0 1 10 1 1 0 11 0 1 1 0

인 통신 네트워크 안에서 모든 군집을 찾아라.

>> A = [0 1 1 0 1; 1 0 1 1 1; 1 1 0 1 1; 0 1 1 0 1; 1 0 1 1 0];>> B = A.*A'; B3 = B^3, B3d = diag(B3)'B3 = 4 8 8 4 8 8 4 8 8 4 8 8 8 8 8 4 8 8 4 8 8 4 8 8 4

B3d = 4 4 8 4 4

Page 25: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.6 Königsberg 다리 문제와 일반화 223

식 (18)에 의해서

bii(3)(m=3)=2, bii

(3)(m=4)=6, bii(3)(m=5)=12

임을 알 수 있다. 따라서 B3의 대각원소로부터 A1이 정확히 두 개의 3명으로 이루어진

군집(2+2=4)에 속한다는 것을 쉽게 알 수 있다. 유사하게, A2, A4, A5는 각각 두 개의 3

명으로 이루어진 군집에 속한다. b33(3)=8이기 때문에, A3은 3명과 4명으로 이루어진 군

집(8=2+6)에 속하거나, 네 개의 3명으로 이루어진 군집(8=2+2+2+2)에 속한다. 어떤 다

른 사람도 4명으로 이루어진 군집에 속하지 않으므로, 첫 번째 경우는 불가능하다. 때

문에 A3은 네 개의 3명으로 이루어진 군집에 속한다.

10.6 오일러 다리 문제와 일반화

그래프 이론은 Euler가 오랜 시간동안 Königsberg 시민들을 괴롭히던 문제를

푼 1736년에 탄생했다. Euler 시대에는 Königsberg의 마을에 Pregal 강의 둑을 연결하

는 7개의 다리가 있었고 [그림 10-14]에서 보여 지는 것처럼 두 개의 섬이 있었다.

[그림 10-14 Königsberg의 다리]

일요일에 산책하는 것이 오랫동안 이 곳 시민들의 관습이었고, 그들 중 많은 사람이 7

개의 다리를 각각 정확히 한 번씩만 건너는 산책로를 찾으려고 노력하였다. 많은 시간

이러한 길을 찾으려 하였지만 아무도 그런 길을 찾아 내지 못하였다. Euler에게 이 오

랜 문제를 말했을 때, 그는 즉시 그런 길은 절대 없다는 것을 증명하였다. 다음이 그가

사용한 논리다.

땅의 각각의 조각은 그래프의 점과 관련시킬 수 있고, 땅의 두 조각과 연결하

는 각각의 다리를 그래프의 변으로 간주할 수 있다. 이러한 해석을 가지고 Königsberg

의 마을과 다리는 [그림 10-15]에서 보여 지는 그래프 G로 표현된다. 이 그래프는 4개

Page 26: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

224 10. 그래프 이론

의 점 {A, B, C, D}와 7개의 변으로 이루어졌음을 알 수 있다. 점 B의 차수는 5이고

점 A, C, D는 각각 3인 차수를 가진다.

[그림 10-15 Königsberg 다리의 그래프]

각각의 다리를 한 번만 지나면서 모든 다리를 지나는 길을 찾기 위해서, [그림

10-15]와 같은 그래프 G의 모든 변을 지나는 경로를 찾으면 된다. 이것은 종이에서 펜

을 띄지 않고 어떤 변도 중복되지 않게 그래프 G를 그리는 게임으로 생각할 수 있다.

이것이 불가능하다는 것을 알기 위해서, 펜이 각 점을 지나는 각각의 시점에서 그 점에

서 만나는 두 변의 자취를 생각해 보자. 펜은 나중에 그 점으로 돌아올 수 있지만, 펜

이 각각의 점을 통과할 때 두 개씩의 변을 새로 만든다. 따라서 모든 점은 매번 짝수개

의 차수 증가를 가질 것이다. 따라서 시작점과 끝점을 제외한 모든 점의 차수는 반드시

짝수이어야 한다. 그럼 시작점과 끝점의 차수에 대해 살펴보자. 점 S에서 출발한다면,

이 점은 홀수 차수를 가질 것이다. 만약 점 E에서 끝난다면, E는 또한 홀수 차수를 가

질 것이다. 물론, 만약 같은 점에서 시작하고 끝나는 닫힌 경로(closed path)의 경우, 그

점의 차수는 짝수가 될 것이다. Königsberg 다리 문제([그림 10-15])에 대한 그래프가

홀수 차수를 가지는 4개의 점을 가지기 때문에, 각 변을 정확히 한 번만 지나는 길을

찾는 것은 불가능하다. 때문에 Königsberg의 시민들은 7개의 다리를 정확히 한 번만

지날 수 없다.

정의 6.1 (오일러 경로) 그래프 G의 Euler 경로(path)는 G의 각 변을 정확히 한 번씩만

포함하는 경로이다. 만약 시작과 끝이 같은 점이면 Euler 경로는 닫혀있다(closed)고 하

고, 만약 끝점이 시작점과 다르면 Euler 경로는 열려있다(open)고 한다.

정리 6.2 G를 유한개의 점을 가지는 연결된(connected) 그래프라고 하자. 만약 G가 닫

힌(closed) Euler 경로를 가진다면, 모든 점들은 짝수 차수를 가진다. 역으로, 만약 모든

점들이 짝수 차수를 가지면, G는 닫힌 Euler 경로를 가진다.

Page 27: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.6 Königsberg 다리 문제와 일반화 225

정리 6.3 G를 유한한 수의 점을 가지는 연결된(connected) 그래프라고 하자. 만약 G가

열린(open) Euler 경로면, 점들 중 두 개(처음과 마지막)는 홀수 차수이고, 다른 모든 점

들은 짝수 차수를 가진다. 역으로, 만약 점들 중 2개가 홀수 차수이고 나머지 모든 점

들이 짝수 차수이면, G는 열린 Euler 경로를 가진다.

정의6.4 (헤밀튼 경로) G안의 Hamilton 경로(path)는 G 안의 각 점들을 정확히 한 번만

포함한다. 만약 Hamilton 경로가 닫혀있으면(closed), Hamilton 서킷(circuit)이라고 부른다.

참고: 주어진 그래프 G에 대하여 헤밀튼 경로가 존재하는지를 결정하는 문제는 난이도

가 NP-Complete로 컴퓨터(튜링 머신)로 계산하기 매우 어려운 문제로 알려져 있다.

예제 6.5 [그림 10-16]에서 보여지는 각각의 그래프에 대해, (만약 존재한다면) Euler 경로를 찾아라. (만약 존재한다면) Hamilton 경로를 찾아라.

[그림 10-16 Euler 경로와 Hamilton 경로 찾기]

((답)) G에 대해 점 2와 9는 차수 3을 가진다. 모든 다른 점들은 짝수(2 또는 4) 차수이다. 정리 6.2에 의해, G는 닫힌 Euler 경로를 갖지 않지만, 정리 6.3에 의해 G는 2나 9로 시작해서 9나 2로 끝나는 열린(open) Euler 경로를 가진다.

그래프 H는 차수 5인 네 개의 점을 가진다. 때문에 H는 열리거나 닫힌 어떤 Euler path도 갖지 않는다.

G와 G에 대한 Hamilton 경로를 실험에 의해 찾을 수 있다. Euler와 Hamilton 경로는 [그림 10-17]에서 보여진다. G는 또한 Hamilton 서킷임을 알 수 있다. 그러나 H는 Hamilton 서킷이 아니다.

Page 28: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

226 10. 그래프 이론

[그림 10-17 Euler 경로와 Hamilton 경로]

10.7 연습문제

#1. n개의 꼭지점들 중 임의의 두 꼭지점 사이에 항상 연결 관계가 있는 그래프를 완

전 그래프라 한다. 입력받은 그래프의 차수에 해당하는 완전그래프의 결합 행렬을

출력하는 프로그램을 작성하여라.

#2. 그림 10-5와 10-6의 그래프에 대한 결합행렬 A을 구하고, A2과 A3을 출력하는 프로

그램을 작성하여라.

#3. i+j가 3의 배수인 두 점 Ai 와 Aj 사이에만 연결 변이 있는 그래프의 결합행렬을 출

력하는 프로그램을 작성하여라.

#4. 주어진 결합행렬 A로부터, 그래프 안의 각 꼭지점의 차수(내차수+외차수)를 계산하

는 프로그램을 작성하고, 임의의 그래프에 대하여 외차수 od(:)의 합이 짝수(2*변의

수)임을 확인하여라.

Page 29: !cdE - Math at Ewhamath.ewha.ac.kr/~jylee/Finite/TextBook-2017/Chap10.pdf · V cdE ! 예제 1.4 [그림 10-5]에 그려진 그래프 G의 결합 행렬을 만들고, G의 보완적

10.7 연습문제 227

#5. [그림 10-9]에서 다음 점들 사이의 거리를 계산해 보아라.

(a) D(A1, A6) (b) D(A9, A2) (c) D(A7, A5)

#6. 예제 3.2의 findPath에서 같은 변을 두 번 이상 반복하는 경로는 출력하지 않도록

프로그램을 수정하여, 출발점 i=1, 도착점 j=9이고 길이 5인 모든 경로를 출력하여

보아라.

#7. 다음은 6개 팀이 참여한 경기 결과를 나타낸 우열 결합행렬이다. 1단계 우월승수와

2단계 우월승수를 합한 승수(Power)를 구하는 프로그램을 작성하여라.

A=

0 1 0 1 1 10 0 1 1 1 11 0 0 1 1 10 0 0 0 0 10 0 0 1 0 00 0 0 0 1 0

#8. 주어진 결합행렬 A가 우열 결합행렬인가를 조사하는 함수

isDomGraph(A)

를 작성하여라.

#9. 주어진 결합행렬 A로 표시되는 유향그래프가 Euler 경로를 가지는 지를 판별하는

함수

isEulerPath(A)

를 작성하여라.

#10.(Challenging) 그림 [10-16]과 같이 주어진 유향 그래프에서 Euler 경로를 출력하는

프로그램을 작성하여라.

#11.(Challenging) 완전경로라 함은 유향그래프 상의 모든 꼭지점들을 딱 한 번씩 모두

방문하는 경로를 말한다. 주어진 결합행렬로부터 완전 경로를 구하는 프로그램을 작

성하여라.