Chap 6: Graphs

Similar documents
Chap 6: Graphs

Chap 6: Graphs

chap 5: Trees

Chapter 4. LISTS

Chapter 4. LISTS

11장.그래프

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

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

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

Chapter 4. LISTS

11장 포인터

제 6 장 그래프

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

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

06장.리스트

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

슬라이드 제목 없음

歯MW-1000AP_Manual_Kor_HJS.PDF

(......).hwp

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

1장. 유닉스 시스템 프로그래밍 개요

슬라이드 1

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

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

2005프로그램표지

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

03_queue

C 언어 강의노트

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

**Market Ins_잇단

**창간특집1-스마트

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

*½ºÆä¼È¸®Æ÷Æ®-½ºÅ丮Áö

untitled

CTS사보-2월

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

untitled

Microsoft PowerPoint - Ch_8._Project_Management_(1).ppt [호환 모드]

슬라이드 1

Frama-C/JESSIS 사용법 소개

본 강의에 들어가기 전

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

1장. 리스트

Microsoft PowerPoint Relations.pptx

2002년 2학기 자료구조

chap x: G입력

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

Microsoft PowerPoint - 26.pptx

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

PowerPoint 프레젠테이션

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

7장

chap7.key

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

슬라이드 1

chap x: G입력

EA0015: 컴파일러

07.pert.cpm

03장.스택.key

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Ch.8 Procedures and Environments

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

chap01_time_complexity.key

01장.자료구조와 알고리즘

歯9장.PDF


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

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

**¼Û³âƯÁý2

untitled

Algorithms

슬라이드 1

chap8.PDF

untitled

01 EDITOR S PICK: 068_ _069

vi 사용법

05_tree

슬라이드 1

Microsoft PowerPoint - 07-chap05-Stack.ppt


example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

chap 5: Trees

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

PowerPoint Template

Chapter #01 Subject

Microsoft PowerPoint - Chap5 [호환 모드]


4.1 관계

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 부호기와 복호기.PPT

제목

Microsoft PowerPoint - 27.pptx

강의10

Microsoft PowerPoint Predicates and Quantifiers.ppt

Data structure: Assignment 3 Seung-Hoon Na December 14, 2018 레드 블랙 트리 (Red-Black Tree) 1 본 절에서는 레드 블랙 트리를 2-3트리 또는 2-3-4트리 대한 동등한 자료구조로 보고, 두 가지 유형의 레

슬라이드 1

untitled

Transcription:

5. 작업네트워크 (Activity Networks) 작업 (Activity) 부분프로젝트 (divide and conquer) 각각의작업들이완료되어야전체프로젝트가성공적으로완료 두가지종류의네트워크 Activity on Vertex (AOV) Networks Activity on Edge (AOE) Networks 6 장. 그래프 (Page 1)

5.1 AOV Network 몇가지정의들 : AOV Network: Digraph G (vertex = 작업, edge = 작업들간의선행관계 ) u 에서 v 까지방향경로 (directed path) 가존재할경우 u = predecessor of v, v = successor of u Immediate Predecessor (Successor): <u, v> Partial Order: transitive 이며 irreflexive 한선행관계 Topological Order: vertex 들간의선행관계를고려하여모든 vertex 의선형순서 (linear ordering) 를정의 Topological Sort 작업들간에는 partial order 만존재할수있으므로, topological order 는여러개존재가능 Topological sort: 그중하나의 topological order 생성 6 장. 그래프 (Page 2)

AOV Network 의예 과목번호 과목명 선수과목 C1 C언어 None C2 이산수학 None C3 자료구조 C1, C2 C4 미분적분 I None C5 미분적분 II C4 C6 선형대수 C5 C7 알고리즘분석 C3, C6 C8 어셈블리어 C3 C9 운영체제 C7, C8 C1 프로그래밍언어 C7 C11 컴파일러설계 C1 C12 인공지능 C7 C13 계산이론 C7 C14 병렬알고리즘 C13 C15 수치해석 C5 C1 C2 C4 C3 C5 C8 C7 C6 C15 C9 C1 C12 C13 C11 C14 (b) AOV network representing courses as vertices and edges as prerequisites (a) Courses needed for a computer science degree at a hypothetical university 6 장. 그래프 (Page 3)

Program 6.13: Topological Sort for ( i = ; i < n; i++) { if (every vertex has a predecessor) { fprintf (stderr, "Network has a cycle.\ n"); exit (1); } pick a vertex v that has no predecessors; output v; delete v and all edges leading out of v from the network; } 6 장. 그래프 (Page 4)

그림 6.39: Topological Sort 의동작 V 1 V 1 V 1 V V 2 V 4 V 2 V 4 V 2 V 4 V 3 V 5 V 3 V 5 V 5 (a) initial (b) V (c) V 3 V 1 V 1 V 4 V 4 V 4 V 5 (d) V 2 (e) V 5 (f) V 1 (g) V 4 생성된 topological order : V, V 3, V 2, V 5, V 1, V 4 6 장. 그래프 (Page 5)

AOV Network 의표현 임의의 vertex 가 predecessor 를갖는지조사 각 vertex 에대해 immediate predecessor 의수를나타내는 count field 저장 Vertex 와그에부속된모든 edge 들을삭제 AOV network 을인접리스트로표현 count link struct node { int vertex; struct node *link; }; typedef struct { int count; struct node *link; } hdnode; hdnode graph[max_vertices]; v v 1 v 2 v 3 v 4 v 5 1 1 1 3 Null 2 Null 1 2 4 Null 4 5 Null 5 4 Null 3 Null 6 장. 그래프 (Page 6)

Program 6.14: topsort() void topsort(hdnodes graph[], int n) { int i, j, k, top; struct node *ptr; top = -1; // Predecessor가없는 vertex들의 stack 구성 for (i = ; i < n; i++) if (!graph[i].count) { graph[i].count = top; top = i; } for (i = ; i < n; i++) if (top == -1) { fprintf(stderr, "Network has a cycle.\ n"); exit(1); } else { j = top; top = graph[top].count; // Stack에서제거 printf("v%d, ", j); for (ptr = graph[j].link; ptr!= NULL; ptr = ptr->link) { k = ptr->vertex; // Successor vertex들의 count 감소 graph[k].count--; if (!graph[k].count) { // 새로운 vertex를 stack에삽입 graph[k].count = top; top = k; } } } } 6 장. 그래프 (Page 7)

5.2 AOE Network AOE Network 의정의 Edge: 작업 Vertex: 사건 (event) vertex 로들어오는모든작업이완료할때발생 vertex 에서나가는작업은사건이발생하기전까지는시작될수없다. start v a = 6 a 2 = 5 a 1 = 4 v 1 v 2 v 3 a 3 = 1 v 4 a 4 = 1 a 5 = 2 v 5 a 6 = 8 a 7 = 6 v 6 v 7 a 8 = 4 a 9 = 2 v 8 a 1 = 4 finish event v v 1 v 4 v 7 v 8 interpretation start of project completion of activity a completion of activity a 3 and a 4 completion of activity a 7 and a 8 completion of project (b) Interpretation of some of the events in the activity graph of (a) (a) AOE Network. Activity graph of a hypothetical project 6 장. 그래프 (Page 8)

AOE Network 에서 Critical Path 임계경로 (Critical Path) 시작 vertex 에서종료 vertex 까지가장긴경로 병목현상의원인이됨. Event v i 의 Earliest Time, earliest(i) 시작 vertex v 에서 v i 까지가는가장긴경로의길이 earliest(4) = 7 early(i): 작업 a i 의가장빠른시작시간 a i 가 <k, l> 일경우, early(i) = earliest(k) early(6) = 7 작업 a i 의 Latest Time, late(i) 프로젝트기간을증가시키지않으면서작업이시작될수있는가장나중시간 early(5) = 5 & late(5) = 7, early(7) = 7 & late(7) = 7 임계작업 (Critical Activity) early(i) = late(i) 인작업 a i 6 장. 그래프 (Page 9)

Earliest Time 의계산 작업 a i 가 edge <k, l> 로표현된다고가정 early(i) = earliest[k] late(i) = latest[l] duration of a i earliest[j] 의계산 topsort 알고리즘을이용하여시작 vertex 부터 AOE network 를순회 earliest[] = earliest[j] = max{earliest[i] + duration of <i, j>} for i {immediate predecessors of j} 아래문장을 topsort() 함수의 else 절마지막에추가 if (earliest[k] < earliest[j] + ptr->duration) earliest[k] = earliest[j] + ptr->duration 6 장. 그래프 (Page 1)

그림 6.42: 그림 6.41 의인접리스트 count link vertex dur link V 1 6 2 4 3 5 NULL V 1 1 4 1 NULL V 2 1 4 1 NULL V 3 1 5 2 NULL V 4 2 6 8 7 6 NULL V 5 1 7 4 NULL V 6 1 8 2 NULL V 7 2 8 4 NULL V 8 2 NULL 1 2 3 4 5 6 7 8 6 장. 그래프 (Page 11)

그림 6.42: earliest 의계산 Earliest [] [1] [2] [3] [4] [5] [6] [7] [8] Stack initial [] output V 6 4 5 [3, 2, 1] output V 3 6 4 5 7 [5, 2, 1] output V 5 6 4 5 7 11 [2, 1] output V 2 6 4 5 5 7 11 [1] output V 1 6 4 5 7 7 11 [4] output V 4 6 4 5 7 7 15 13 [7, 6] output V 7 6 4 5 7 7 15 13 17 [6] output V 6 6 4 5 7 7 15 13 17 [8] output V 8 6 장. 그래프 (Page 12)

Latest Times 의계산 마지막 vertex 부터 topsort 알고리즘을이용하여 AOE network 을역방향으로순회 latest[n-1] = earliest[n-1] latest[j] = min{latest[i] duration of <j, i>} for i {immediate successors of j} 역인접리스트 (inverse adjacency list) 를이용 아래문장을 topsort() 함수의 else 절마지막에추가 if (latest[k] > latest[j] ptr->duration) latest[k] = latest[j] ptr->duration 6 장. 그래프 (Page 13)

그림 6.43: 그림 6.41 의역인접리스트 count link vertex dur link V 3 NULL V 1 1 V 2 1 V 3 1 V 4 2 V 5 1 V 6 1 V 7 1 V 8 6 NULL 4 NULL 5 NULL 1 1 3 2 NULL 4 8 NULL 4 6 6 2 2 1 NULL 5 4 NULL 7 4 NULL 1 2 3 4 5 6 7 8 6 장. 그래프 (Page 14)

그림 6.43: latest 의계산 Earliest [] [1] [2] [3] [4] [5] [6] [7] [8] Stack initial 17 17 17 17 17 17 17 17 17 [8] output V 8 17 17 17 17 17 17 15 13 17 [7, 6] output V 7 17 17 17 17 7 9 15 13 17 [5, 6] output V 5 17 17 17 7 7 9 15 13 17 [3, 6] output V 3 2 17 17 7 7 9 15 13 17 [6] output V 6 2 17 17 7 7 9 15 13 17 [4] output V 4 2 6 6 7 7 9 15 13 17 [2, 1] output V 2 2 6 6 7 7 9 15 13 17 [1] output V 1 6 6 7 7 9 15 13 17 [] 6 장. 그래프 (Page 15)

작업 a i 의 Early(i) 와 Late(i) 계산 작업 a i 가 edge <k, l> 로표현된다고가정 early(i) = earliest[k] late(i) = latest[l] duration of a i Activity Early Late Late Early Critical a a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 1 6 4 5 7 7 7 15 13 2 2 6 6 7 7 7 9 15 13 2 2 2 2 2 Yes No No Yes No No Yes Yes No Yes Yes 6 장. 그래프 (Page 16)