알고리즘 7 주차

14
알알알알 7 알알 10.11.03

Upload: gavin-johnson

Post on 04-Jan-2016

76 views

Category:

Documents


0 download

DESCRIPTION

알고리즘 7 주차. 10.11.03. 그래프 추상 데이터 타입 (1). 그래프의 정의 G = (V, E) : 그래프 G 는 2 개의 집합 V 와 E 로 구성 V : 공백이 아닌 노드 또는 정점 (vertex) 의 유한집합 V 만 표현 : V(G) 로 표기 E : 상이한 두 정점을 잇는 간선 (edge) 의 유한집합 E 만 표현 : E(G) 로 표기 무방향 그래프 (undirected graph) 간선을 표현하는 두 정점의 쌍에 순서가 없는 그래프 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 알고리즘  7 주차

알고리즘 7 주차

10.11.03

Page 2: 알고리즘  7 주차

그래프 추상 데이터 타입 (1)• 그래프의 정의

– G = (V, E) : 그래프 G 는 2 개의 집합 V 와 E 로 구성– V : 공백이 아닌 노드 또는 정점 (vertex) 의 유한집합

• V 만 표현 : V(G) 로 표기– E : 상이한 두 정점을 잇는 간선 (edge) 의 유한집합

• E 만 표현 : E(G) 로 표기

• 무방향 그래프 (undirected graph)– 간선을 표현하는 두 정점의 쌍에 순서가 없는 그래프– (v0, v1) = (v1, v0)

• 방향 그래프 (directed graph)– 유방향 그래프 또는 다이그래프 (digraph)– 간선을 표현하는 두 정점의 쌍에 순서가 있는 그래프– vj → vk 를 < vj, vk > 로 표현 (vj 는 꼬리 (tail), vk 는 머리

(head))– < vj, vk > ≠ < vk, vj >

Page 3: 알고리즘  7 주차

그래프 추상 데이터 타입 (2)

V(G1)={0, 1, 2, 3} E(G1)={(0, 1), (0, 3), (1, 2), (1, 3), (2, 3)}

V(G2)={0, 1, 2} E(G2)={<0, 1>, <1, 0>, <1, 2>}

V(G3)={0, 1, 2, 3, 4} E(G3)={(0, 1), (1, 2), (3, 4)}

그래프 예와 각 그래프의 정점 집합과 간선 집합

0

1

3

2

0

1

2

0

1

3

4

2

G1 G2 G3

Page 4: 알고리즘  7 주차

그래프 표현• 그래프 표현 방법–인접 행렬 (adjacency matrix)–인접 리스트 (adjacency list)–인접 다중 리스트 (adjacency multilist)

• 그래프에 수행시키려는 연산과 적용하려는 응용에 따라 선택

Page 5: 알고리즘  7 주차

인접 행렬 (1)• 인접 행렬 (adjacency matrix)

– n≥1 개의 정점을 가지는 그래프 G = (V, E) 에 대해 크기가 nⅹn인 2 차원 배열 a[n, n]

– 부속 행렬 (incidence matrix) 이라고도 함– 인접 행렬로 표현하는데 필요한 공간 : n2 비트

• 무방향 그래프 : 행렬의 상위 삼각이나 하위 삼각만 저장한다면 거의 반 정도의 공간을 절약

– 인접 행렬의 정보• 무방향 그래프 : 행 i 의 합은 정점 i 의 차수• 방향 그래프 : 행 i 의 합은 정점 i 의 진출 차수 , 열 i 의 합은

정점 i 의 진입 차수

E(G)j)(i, 0,

E(G)j)(i, 1, j]a[i,

Page 6: 알고리즘  7 주차

인접 행렬 (2)

0

1

3

2

0

1

2

0

1

3

4

2

G1 G2 G3

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

[0] [1] [2] [3]

[0][1][2][3]

a[4, 4]

0 1 01 0 10 0 0

[0] [1] [2]

[0][1][2]

a[3, 3]

0 1 0 0 01 0 1 0 00 1 0 0 00 0 0 0 10 0 0 1 0

[0] [1] [2] [3]

[0][1][2][3]

a[5, 5]

[4]

[4]

그래프 G1, G2, G3 에 대한 인접 행렬 표현

Page 7: 알고리즘  7 주차
Page 8: 알고리즘  7 주차
Page 9: 알고리즘  7 주차
Page 10: 알고리즘  7 주차

인접 리스트 (1)

• 인접 리스트 (adjacency list)– n 개의 정점 각각에 대한 인접한 정점들을 리스트로 만듦– 인접 리스트의 구현

• 연결 리스트• 순차 표현

• 연결 리스트로 구현한 인접 리스트– 각각의 정점의 리스트 : 헤더 노드와 vertex 필드 , link

필드로 구성된 리스트 노드로 이루어짐– n 개의 정점과 e 개의 간선을 가진 그래프에서

• 무방향 그래프는 n 개의 헤더 노드와 2e 개의 리스트 노드 필요• 방향 그래프는 n 개의 헤더 노드와 e 개의 리스트 노드 필요

Page 11: 알고리즘  7 주차

인접 리스트 (2)0

1

3

2

0

1

2

G1

G2

header vertexlink[0]

[1]

[2]

[3]

3 null

3 null

1

0 2

1 3 null

0 1 2 null

null

header

[0]

[1]

[2]

1 null

0 2 null

(a) G1 에 대한 인접 리스트

(b) G2 에 대한 인접 리스트

Page 12: 알고리즘  7 주차

프로젝트 작성은 이렇게 ..

Page 13: 알고리즘  7 주차
Page 14: 알고리즘  7 주차

반복되는 공지• 과제는 당일의 실습 파일입니다 .

– 이 말은 항상 과제가 있다는 것입니다 .– 가끔 그 주의 실습 내용 이외의 것을 해오라 할 땐 수업 끝날 때 꼭 얘기 해드립니다 . 물론 이런

상황은 별로 없을 것이라 생각합니다만 .. 갈 때 잘 들어주세요 .

• 과제는 e-campus 에 제출하며 기간은 그 주 실습 날부터 다음주 실습 날까지 입니다 .– 가끔 바로 과제 제출 게시판을 열지 못하는 경우가 있지만 , 반드시 실습 전에는 개설합니다 . 혹시

안 열려있다면 다음주 실습 날까지 간간히 확인해 보세요 .

– 혹시 못 내셨다면 늦게라도 [email protected]에 제출하세요 .

– 메일로 낸다면 제목 및 파일의 형식은 해당주차 _ 학번 _ 이름을 꼭 지켜주세요 . ( Ex) 7 주차_20025176_ 박제훈 ) 주차는 해당 주차의 ppt 제목에 있습니다 .

– 보통 당일의 실습 내용은 과제 제출기간이 종료된 시점에서 2 주안에 http://testspace.egloos.com에 제가 짠 소스를 올립니다 . 못해서 제출을 못한 분은 그 소스를 참조하셔서 제출하세요 . 단 , 복사 - 붙여 넣기는 되도록이면 하지 않았으면 좋겠습니다 . 본인에게 전혀 도움이 되지 않는 코딩 방법입니다 .