Chap 6: Graphs

Similar documents
Microsoft PowerPoint - 제10장-그래프.pptx

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

11장.그래프

Chap 6: Graphs

Chap 6: Graphs

슬라이드 1

5장 스택

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

제 6 장 그래프

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

1장. 리스트

Ch.8 Procedures and Environments

Chapter 10 그래프 (graph) SANGJI University Kwangman KO

Chapter 4. LISTS

Chapter 4. LISTS

슬라이드 1

선형자료구조 16.1 그래프 배열, 스택, 큐, 리스트를사용하여해결할수있다. 비선형자료구조 순환, 트리, 이진트리로복잡한문제를해결한다. 그래프 (graph) ; 인터넷과같은통신네트워크나고속도로나철도와같은교통네트워크에적합하다. 그래프 (graph) 링크에의해연결되어있는노

Chapter 4. LISTS

쉽게배우는알고리즘 9장. 그래프알고리즘

chap 5: Trees

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

Microsoft PowerPoint - slide05.pptx

슬라이드 1

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

chap01_time_complexity.key

03_queue

슬라이드 제목 없음

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

chap x: G입력

chap x: G입력

untitled

슬라이드 1


Microsoft PowerPoint - Chap5 [호환 모드]

06장.리스트

7장

chap 5: Trees

중간고사 (자료 구조)

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

쉽게 배우는 알고리즘 강의노트

11장 포인터

歯MW-1000AP_Manual_Kor_HJS.PDF

Microsoft PowerPoint - 08-Queue.ppt

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

5.스택(강의자료).key

Microsoft PowerPoint - 제3장-배열.pptx

C 언어 강의노트

슬라이드 1

슬라이드 1

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

1장. 리스트

서강대학교공과대학컴퓨터공학과 CSE3081 알고리즘설계와분석 (2 반 ) 기말고사 (2015 년 12 월 17 일 ) 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2015년 12월17일 ( 목 ) 오전 9시 30분 ) 담당교수 : 서강대학교컴퓨터공학과임인성

슬라이드 1

untitled

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

PowerPoint 프레젠테이션

Microsoft PowerPoint - 08-chap06-Queue.ppt

슬라이드 1

2002년 2학기 자료구조

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74

03장.스택.key

슬라이드 1

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Microsoft PowerPoint - Chap6 [호환 모드]

untitled

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

04장.큐

2014밝고고운동요부르기-수정3

2005프로그램표지

UI TASK & KEY EVENT

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

DBPIA-NURIMEDIA

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

01_List

untitled

ABC 10장

데이터구조 (Chapter 3: Stacks and Queues) 2011 년봄학기 숙명여자대학교이과대학멀티미디어과학과박영호

슬라이드 1

Microsoft PowerPoint - ch07 - 포인터 pm0415

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

Lab 3. 실습문제 (Single linked list)_해답.hwp

C 언어 프로그래밊 과제 풀이

슬라이드 1

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 자료구조2008Chap06

Microsoft PowerPoint - 제8장-트리.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

chap8.PDF

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

슬라이드 1

sna-node-ties

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

PL10

<4D F736F F F696E74202D20C0DAB7E1B1B8C1B65FC3E2BCAEBCF6BEF7>

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

chap x: G입력

슬라이드 1

Transcription:

그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page )

인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v] = 무방향성그래프 : A[][] 는대칭행렬 방향성그래프 : A[][] 는비대칭행렬 대칭행렬 : A[n(n-)/] 로구현가능 6 장. 그래프 (Page )

인접리스트 (Adjacency List) 인접행렬의 n 행들을 n 개의연결리스트로표현 즉, 그래프 G 의각 vertex 에대해한개의연결리스트가존재 headnodes vertex link null null null null null null null 6 장. 그래프 (Page )

인접다중리스트 (Adjacency Multilist) Edge 별로하나의노드를할당 각 edge 를검사했다는표시를나타내는데용이 marked vertex vertex path path headnodes N N N4 N N N4 N null N5 edge(, ) edge(, ) edge(, ) N4 N5 N6 edge(, ) The lists are: vertex : N N N vertex : N N4 N5 vertex : N N4 N6 vertex : N N5 N6 N5 null N6 N6 null null edge(, ) edge(, ) 6 장. 그래프 (Page 4)

그래프표현방법들의분석 G 에존재하는 edge 수? 혹은 G 가연결되었는지검사. 인접행렬 : n(n )/ 개의항을조사 O(n ) 인접리스트 : O(n+e) Good if e << n / (sparse graphs) Digraph 에서 vertex 의 in-degree 를조사 인접행렬 : O(n) 인접리스트 : O(n+e) 역인접리스트 (inverse adjacency list) 를별도유지 in-degree 와 out-degree 를모두표현할수있는인접리스트구조를구현 ( 그림 6.) tail head column link for head row link for tail null null null 6 장. 그래프 (Page 5)

Orthogonal Representation of G Headnodes (shown twice) row column NULL NULL NULL NULL NULL NULL tail head 6 장. 그래프 (Page 6)

. 기초적인그래프연산들. 깊이우선탐색 (Depth First Search). 너비우선탐색 (Breadth First Search). 연결요소 (Connected Components) 4. 신장트리 (Spanning Trees) 5. 이중결합요소와단절점 (Biconnected Components and Articulation Points) 6 장. 그래프 (Page 7)

. Depth First Search 알고리즘 출발 vertex, v 의인접리스트부터방문 v 에인접하면서아직방문하지않은 vertex, w 를선택 w 를시작점으로하여다시깊이우선탐색시작 recursion 을이용하여구현 #define FALSE #define TRUE short int visited[max_vertices]; void dfs(int v) { struct node *w; visited[v] = TRUE; printf("%5d", v); for (w = graph[v]; w; w = w link) if (!visited[w vertex]) dfs(w vertex); } 6 장. 그래프 (Page 8)

Depth First Search 의동작과정 struct node *graph[]; struct node { int vertex; struct node *link}; V null 4 null V V 5 6 null V V 4 V 5 V 6 4 5 V 7 6 7 4 5 6 null depth first search order : v, v, v, v 7, v 4, v 5, v, v 6 6 장. 그래프 (Page 9)

. Breadth First Search 알고리즘 출발 vertex, v 의인접리스트부터방문 v 에인접한모든 vertex 들을먼저방문 그다음, v 에인접한첫번째 vertex 에인접한 vertex 중에서아직방문하지않은 vertex 들을다시차례대로방문 (Queue 를이용 ) struct queue { int vertex; struct queue *link; }; void addq(.); int deleteq(.); 6 장. 그래프 (Page )

Program 6.: Breadth First Search void bfs(int v) { // Vertex v부터탐색수행. visited[] 배열은 FALSE로초기화. 큐를사용 node_pointer w; struct queue *front = NULL, *rear = NULL; printf("%5d", v); visited[v] = TRUE; addq(&front, &rear, v); while (front) { v = deleteq(&front); for (w = graph[v]; w; w = w link) if (!visited[w vertex]) { printf("%5d", w vertex); addq(&front, &rear, w vertex); visited[w vertex] = TRUE; } } } 6 장. 그래프 (Page )

Breadth First Search 의동작과정 V V V V V 4 V 5 V 6 V 7 4 5 6 7 null 5 4 4 null 6 null 5 6 null breadth first search order : v, v, v, v, v 4, v 5, v 6, v 7 6 장. 그래프 (Page )

. Connected Components 무방향성그래프가연결되어있는지검사? dfs() 나 bfs() 를호출한후, 방문되지않은 vertex 가존재하는지를검사 그래프의 connected component 들을출력? void connected (void) { /* determine the connected components of a graph */ int i for (i = ; i < n; i++) if (!visited[i]) { dfs(i); printf("\ n"); } } 6 장. 그래프 (Page )

.4 Spanning Trees 정의 그래프 G 에포함된 edge 들로구성되며, G 의모든 vertex 들을포함하는트리 DFS 나 BFS 를이용하여 spanning tree 구성 Depth first spanning tree Breadth first spanning tree V V V V V V V V 4 V 5 V 6 V V 4 V 5 V 6 V 7 depth first spanning tree V 7 breadth first spanning tree 6 장. 그래프 (Page 4)