PowerPoint 프레젠테이션

Size: px
Start display at page:

Download "PowerPoint 프레젠테이션"

Transcription

1 그래프알고리즘 14 장. 그래프알고리즘 위상정렬, 최소신장트리, 최단경로, 이행폐쇄, 이중연결, 유니언파인드, 네트워크플로우 학습목표 그래프관련용어를이해한다. 그래프를표현하기위한두가지자료구조를이해한다. 신장트리, 최소신장트리알고리즘들을이해한다. 이행폐쇄, 최단경로알고리즘들을이해한다. 이중연결, 유니언파인드, 네트워크플로우알고리즘들을이해한다. 1

2 그래프 유관한사물 (Object) 또는개념 (Concepts) 을연결. 연결망 (Connection Network 또는 Network). 프로젝트단위작업 (Task) 사이의순서, 분자연결구조, 전자부품연결구조. 전산학, 이산수학의연구주제 Graph Vertices Edges 통신 전화, 컴퓨터 광섬유케이블 전기전자회로 칩, 콘덴서, 저항 선 기계 이음새 스프링, 빔, 막대 급수시스템 저수지, 정화시설 배관 교통 교차로, 공항 고속도로, 항로 일정표 단위작업 선결조건 소프트웨어시스템 함수 함수호출 인터넷 웹페이지 하이퍼링크 게임 말의위치 허용된움직임 분자구조 분자 화학적연결 사회적관계 사람 친구관계 경제 주식, 현금 거래 2

3 그래프용어 G = 정점 (Vertex, Node) 의집합 V + 간선 (Edge) 의집합 E 서브그래프 G (Subgraph) 인접 (Adjacency) 3

4 그래프용어 가중치그래프 (Weighted Graph) 무방향그래프, 방향그래프 (Directed Graph, Undirected Graph) 경로 (Path) 단순경로 (Simple Path) 사이클 (Cycle) 단순사이클 (Simple Cycle) 4

5 그래프용어 연결그래프 (Connected Graph), 절단그래프 (Disconnected Graph) 완전그래프 (Complete Graph) 트리 (Tree) : 연결된, 사이클없는 (Directed Acyclic) 그래프 V 개의정점, 항상 (V-1) 개의간선 그보다많으면사이클, 그보다적으면절단그래프 포리스트 (Forest): 트리의집합 5

6 추상자료형그래프 Create: 새로운그래프를만들기 Destroy: 사용되던그래프를파기하기 InsertVertex: 새로운정점을삽입하기 InsertEdge: 새로운간선을삽입하기 DeleteVertex: 기존정점을삭제하기 DeleteEdge: 기존간선을삭제하기 RetrieveVertex: 키에의해정점레코드를검색하기 IsAdjacent: 인접해있는지확인하기 IsEmpty: 비어있는그래프인지확인하기 6

7 인접행렬 (Adjacency Matrix) 그래프표현 2 차원행렬 : 2 차원배열 직접연결된간선이있으면해당값을 1(True) 대각선요소는무의미. 0 또는 1. 7

8 그래프표현 인접행렬 가중치그래프 : 간선의가중치 가중치 : 정점사이를이동하는데필요한비용이나거리 인접하지않은정점 : 비용무한대. 8

9 그래프표현 인접행렬 무방향그래프의인접행렬은대각선을중심으로대칭메모리절약을위해배열의반쪽만을사용할수있음. 방향성그래프의인접행렬은일반적으로대칭이아님. 배열의인덱스는정점을의미정점 ID를배열인덱스로매핑시키는테이블이필요 Vertex 배열인덱스 a 0 b 1 c 2 d 3 e 4 9

10 정적배열에의한인접행렬 그래프표현 필요한정점의수를예측. int AdjacencyMatrix[Max][Max]; 라고선언 스택메모리 동적배열에의한인접행렬 힙메모리 미리배열크기를결정할필요가없음. 10

11 정수공간 동적배열에의한인접행렬 typedef int * ptrtype; ptrtype p = malloc(sizeof(int)); *p = 20; 연속된정수공간 ptrtype p = malloc(ncol * sizeof(int)); NCol 개의정수가들어갈수있는공간. 이변수공간을마치배열처럼사용포인터기호또는배열기호에의해접근가능 11

12 동적배열에의한인접행렬 행렬 : NRow * NCol 개의정수공간 12

13 동적배열에의한인접행렬 코드 14-1: 동적배열에의한행렬 int ** InitMatrix(int NRow, int NCol, int Value) { int **m; m = malloc(nrow * sizeof(int *)); } for (int i = 0; i < NRow; i++) 소가 m[i] = malloc(ncol * sizeof(int)); for (int i = 0; i < NRow; i++) for (int j = 0; j < NCol; j++) return m; m[i][j] = Value; Value 는초기값 NRow 개의포인터배열을만듦 포인터배열의각요 NCol 개의정수배열을가리킴 모든행에대해서 모든열에대해서 Value 값으로초기화 포인터의포인터를리턴값으로 13

14 동적배열에의한인접행렬 코드 14-2: 동적배열의공간반납 void FreeMatrix(**m) 동적배열 m 의파기 { for (int i = 0; i < NRow; i++) 포인터배열각각에대해 free(m[i]); 가리키는전체공간을반납 } free(m); 포인터배열공간을반납 그래프표현 정방형인접행렬 (Square Adjacency Matrix) 정점및간선개수를추적 그래프자료구조는구조체와그구조체를가리키는포인터로선언 14

15 typedef struct { int V; int E; int **M; 그래프표현 그래프내부정점의수 그래프내부간선의수 } graphtype; typedef graphtype *graphptr; graphptr InitGraph(int V) 인접행렬을가리키는포인터 그래프를가리키는포인터 함수프로토타입 void InsertEdge(graphPtr g, int V1, int V2) 함수프로토타입 15

16 코드 14-4: Graph.c #include <GraphByMatrix.h> 그래프함수 graphptr InitGraph(int V) 정점 V개가들어갈수있는그래프생성 { graphptr G = malloc(sizeof(graphtype)); 그래프구조체를동적으로 생성 G->V = V; 정점의수를 V개로확정 G->E = 0; 생성시의간선수 0 G->M = InitMatrix(V, V, 0); 크기 V 제곱인동적배열만들고 0으로초 기화 return G; } void InsertEdge(graphPtr g, int V1, int V2) 정점 V1, V2를연결하는간 선삽입 { if (g->m[v1][v2] = = 0) 인접행렬값이 0이면 { g->e++; 간선의수를늘리고 g->m[v1][v2] = 1; V1->V2를 1로바꿈 g->m[v2][v1] = 1; 무방향그래프이면 V2->V1도 1로바꿈 } } 16

17 인접리스트 (Adjacency List) 그래프표현 하나의정점에인접한모든노드를연결리스트형태로표시경로에관한정보가아님. 가중치정보를표시하려면노드에가중치필드를추가. 연결리스트를가리키는포인터배열 17

18 인접리스트 인접리스트 무방향그래프 : 하나의간선에대해두개의노드가나타남. 인접리스트의노드수는간선수 E 의 2 배 인접리스트와인접행렬 정점 i 와정점 j 가인접해있는가 : 인접행렬이유리정점 i 에인접한모든노드를찾아라 : 인접리스트가유리공간면에서인접행렬은 V 2 개의공간, 인접리스트는 2E 개의공간이필요 희소그래프, 조밀그래프 간선수가적은그래프를희소그래프 ( 稀少, Sparse Graph) 간선수가많은그래프를조밀그래프 ( 稠密, Dense Graph) 조밀그래프라면인접행렬이유리희소그래프라면인접리스트가유리 18

19 코드 14-5: GraphbyLinkedList.h 인접리스트 typedef struct { int Data; node* Next; } node; typedef node* Nptr; 정점의 ID 번호다음노드를가리키는포인터 typedef struct { int V; 그래프내부정점의수 int E; 그래프내부간선의수 node **L; 포인터배열을가리키는포인터 } graphtype; typedef graphtype *graphptr; 그래프를가리키는포인터 graphptr InitGraph(int V) 함수프로토타입 void InsertEdge(graphPtr g, int V1, int V2) 함수프로토타입 19

20 코드 14-6: GraphbyLinkedList.c #include <GraphbyLinkedList.h> graphptr InitGraph(int V) 인접리스트 정점 V 개가들어갈수있는그래프생성 { graphptr G = malloc(sizeof(graphtype)); 구조체공간을동적으로생성 G->V = V; 정점의수를 V 개로확정 G->E = 0; 생성시에간선수 0 G->L = malloc(v * sizeof(node *)); V개정수포인터배열을동적으로생성 for (int i = 0; i < V; i++) 배열내모든포인터값을 G->L[i] = NULL; return G; 널로초기화 포인터의포인터를리턴값으로 } void InsertEdge(graphPtr g, int V1, int V2) 정점 V1, V2 를연결하는간선삽입 { Nptr temp = malloc(sizeof(node)); 새로운노드를만들고 temp->data = V2; temp->next = g->l[v1]; g->l[v1] = temp; 거기에 V2 의 ID 번호를넣음 새노드가현재첫노드를가리키게 L[V1] 이새로만든노드를가리키게 } 무방향그래프이면 V2 에도 V1 을삽입. 20

21 그래프순회 깊이우선탐색 (DFS) 과너비우선탐색 (BFS) 깊이우선탐색은스택과, 너비우선탐색은큐와직접연관트리의전위순회를일반화한것이깊이우선탐색트리의레벨순회를일반화한것이너비우선탐색 두가지모두방문된노드로는가지않음 확인을위한자료구조가필요 배열값이 TRUE 이면방문된상태 미방문상태로초기화하기위해 FALSE 를쓰는작업. 방문될때마다 TRUE 를쓰는작업. 따라서 O(2V) 번의작업이필요. 21

22 인접행렬 그래프순회의효율 주어진노드에인접한모든노드를찾기위해서그노드를행번호로하는행전체를스캔 O(V). 모든행을스캔 O(V 2 ). 탐색의효율은 O(2V + V2) = O(V 2 ) 인접리스트 현재노드가 A일때, A를헤드로해서 B가방문되었는지확인하기위해리스트스캔 O(E). 나중에현재노드가 B일때, B를헤드로해서 A가이미방문되었는지확인하기위해서한번더읽음 O(E). 탐색의효율은 O(2V+2E) = O(V+E). 희소그래프에서는 (V+E) 가작음. 조밀그래프에서는 V 2 이작음. 22

23 위상정렬 AOV 네트워크 (Activity on Vertex Network) 정점에단위공정을표시 방향성그래프의간선은일의순서를의미 A->B 는 A 공정이완료되어야 B 공정을수행할수있음을의미 수강신청을위한선수과목이수개념과동일함. 어떤공정이어떤공정보다앞서야하는지가문제 위상정렬 : 먼저수행해야될공정부터시작해서일렬로모든공정을나열 23

24 위상정렬 정렬결과가유일하지는않음. 첫번째위상정렬결과는 A, C, D, F, B, E, G 순서로일을진행. 결과화살표는노드를건너뛸수는있으나오른쪽으로가는것만허용. A-D-E-G 로가든 A-C-D-B-E-G 로가든무방 전제조건 : 사이클이존재하면서로어떤것이먼저인지판별하기가불가능. 사이클이없는방향그래프를대그 (DAG: Directed Acyclic Graph) 라고함. 24

25 소스, 싱크 싱크 마지막공정은그공정다음에오는공정이없음. 싱크 (Sink, 가라앉는곳 ) 그노드로들어가는간선은있어도, 거기서나가는간선은없는노드 소스 첫공정은그공정에앞서오는공정이없음. 소스 (Source, 떠오르는곳 ) 그노드로부터나가는간선은있어도, 그리고들어오는간선이없는노드 진입차수, 진출차수 진입차수 ( 進入, In-Degree): 어떤노드로들어가는간선의수진출차수 ( 進出, Out-Degree): 노드에서나가는간선의수싱크는진출차수가 0 인노드, 소스는진입차수가 0 인노드. 25

26 싱크제거에의한위상정렬 싱크인 G 를제거하고 G 와연결된간선들을모두제거. 결과그래프의싱크는 E 와 F. E 와거기에연결된간선들을제거. 순차적으로제거된싱크를연결리스트의맨처음에삽입 연결리스트를처음부터끝까지따라가면그순서가위상정렬순서 ( A, C, D, F, B, E, G) 26

27 싱크제거에의한위상정렬 코드 14-7: 싱크제거에의한위상정렬 TopologicalSort(G) { for (step =1 through N) N 은전체노드의개수 } { Select a Sink T; 싱크가여럿이면아무거나 L.Insert(1, T); 연결리스트의맨앞에삽입 Remove the Sink T and Edges Connected to It: 싱크및연결된간선을삭제 } 27

28 깊이우선탐색에의한위상정렬 소스에서출발하여방향성간선 (Directed Edge) 을계속따라가면그순서가바로위상정렬순서 마지막노드인싱크로부터백트랙하는작업이바로싱크를제거하는작업에해당. 28

29 유의점 깊이우선탐색에의한위상정렬 깊이우선탐색의순서는 A-D-B-E-G-F-C 백트랙이발생한순서대로기록. 탐색순서 A-D-B-E-G-F-C에서가장먼저백트랙이발생한곳은 G. 이후 G, E, B. 이후가정먼저백트랙이발생한곳은 F. 29

30 깊이우선탐색에의한위상정렬 코드 14-8: 깊이우선탐색에의한위상정렬 TopologicalSort(V) { for All Nodes T Adjacent to V 안가본모든노드에대해 if (T Is Unvisited) 더이상갈곳이없을때까지 TopologicalSort(T); 재귀호출 L.ListInsert(1, V); 재귀호출끝나면리스트맨처음에삽입 } 30

31 트리 신장트리 트리 연결된 (Connected), 사이클없는 (Acyclic) 그래프 주어진그래프 G 의신장트리는 G 의서브그래프로서 G 의모든정점과트리를이루기에충분할만큼만의간선으로구성. 주어진연결그래프에서사이클을없앰으로써얻을수있는트리. 정점수 N 개일때, 간선수 (N-1) 이면트리 신장트리의모습은유일하지는않다. 31

32 깊이우선탐색에의한신장트리 깊이우선탐색트리 (Depth First Search Tree) A에서시작해서 A-B-C-D-G-E-F-H-I 로가는탐색순서 B에서시작해서 B-A-F-G-D-C-E-H-I로가는탐색순서 아래에서위로가는화살표 지나온노드이기때문에새로방문하지는않지만보이기는보임. 화살표에해당하는간선을제거하면신장트리 32

33 전철망의설계 최소신장트리 모든역을서로직접연결하면가장이상적장애물이있을때에는직접연결이가능한곳이제한됨. 33

34 최소신장트리 모든역사이에서로갈수있는길이있는가. 다른역을거쳐서가도됨. 연결그래프이어야함. 선로가설비용을최소화하라. 사이클이존재한다면그것을제거함으로써가설비용을줄임 연결성은그대로유지. 따라서신장트리만들면됨. 선로마다가설비용이다른데, 어떤간선을제거해야하는것이전체가설비용을최소화하는가. 즉, 어떤신장트리가가장경제적인가의문제 34

35 최소신장트리 최소신장트리 (MST: Minimum Spanning Tree) 최소비용신장트리. 신장트리중전체가중치의합이최소가되는것 최소신장트리가설 그래프의정점들을두개의그룹으로나누었을때, 두그룹사이를연결하는간선들중에서가장가중치가작은간선은반드시최소신장트리에포함되어야한다. {A, B, C, D} 와 {E, F, G, H} 그룹. 사이를잇는것은 B-E, C- E, D-E, D-F, A-F, A-D 등 6 개의다리. 2 개의다리를모두트리에포함시키면사이클. 다리중하나만선택. 가중치가가장작은 D-F 를선택해야전체가중치가작아짐. 주어진그래프를어떤식으로분할하여그룹화하던간에가설이성립해야함. 35

36 프림알고리즘 프림알고리즘 (Prim's Algorithm) 우선순위우선탐색 (PFS: Priority First Search) 가중치가작을수록우선순위가높다고정의 적용예 어떤노드에서출발해도무관. A 에서출발하는예 A 와인접한세개의노드 G, B, F 중가장가중치가작은것이 B 간선 A-B 를트리에포함. 이트리의정점 A 와 B 에인접한모든노드를대상으로가중치를비교. B-C, A-G, A-F 중가장작은것은 B-C 간선 B-C 를트리에포함 현재연결된트리내부의모든정점에인접한간선중최소가중치간선을선택함. 단, 사이클을유발하는간선은피함. 우선순위큐를사용하여구현 A 를제거하는대신 A 에인접한 G, B, F 를우선순위큐에삽입. 우선순위가높은 B 를삭제하는대신, B 에인접한 C, E, D 를삽입. 36

37 프림알고리즘 프림알고리즘 37

38 크루스칼알고리즘 크루스칼방법 (Kruskal's Method) 가장작은가중치 1 을지닌간선네개중임의로 A-B 를선택 나머지그래프에서가장작은가중치역시 1 이므로이번에는 G- E 를선택 분리된두개의트리 ( 포리스트 ) 가생성 매단계마다그상태에서가장작은가중치를가진간선을선택해서두개의정점또는트리사이를잇는방식. 단사이클을유발하는간선은피함. 탐욕알고리즘 (Greedy Algorithm) 일단가설비용이제일싼것부터먼저건설하고보자 당장눈앞에보이는이득을추구하는것이나중에전체적으로도크게봐도이득이된다 는접근방식 최소신장트리에는이러한접근방법이해결책이됨. 38

39 크루스칼알고리즘 크루스칼알고리즘 39

40 솔린알고리즘 솔린알고리즘 (Sollin's Algorithm) 트리에인접한최소가중치간선을사용두개의서로다른트리를연결 1 단계에서그래프의모든정점이각각트리를형성트리에인접한간선중, 가장가중치가작은것을선택하여화살표로표시트리별로간선을따라다른트리와연결 다시각각의트리에인접한간선들중가장가중치가작은것을선택단계별로각각의트리에서뻗어나가는최소가중치간선을선택하고, 이를선택하여서로다른트리를이어감. 단사이클을유발하는간선은피함. 트리에인접한간선중에서최소가중치를지닌간선을선택한다는점에서프림알고리즘과유사. 포리스트를놓고작업한다는점에서는크루스칼알고리즘과유사. 40

41 솔린알고리즘 솔린알고리즘 41

42 최단경로 주어진도시에서다른도시로가기위해서어떤경로로가는것이가장적은비용이되는가. 42

43 최단경로 최단경로 43

44 다이익스트라알고리즘 최단경로의문제 (Shortest Path Problem) 여러곳을거쳐서간다면전체비용은구간별요금을합산 최소비용다이익스트라알고리즘 (Dijkstra Algorithm) 출발노드가주어졌을때나머지모든노드로가는최소비용및경로. i j A B C D E F A B 0 2 C 0 1 D 1 0 E 1 0 F 0 44

45 다이익스트라알고리즘 도표의 1 단계행 (Row) 을채우기위해서는인접행렬정보를사용 정점중하나를선택하여선택정점칼럼에추가 선택정점은현재의비용중가장작은것, 즉비용 1 을지닌 B. 정점이선택된다는것은해당정점으로가는최소비용이확정된다는것을말함 만약 A 에서다른곳을거쳐서 B 로간다면 C, D, E, F 중하나를거침. 그런데그곳까지가는비용이이미 1 보다크기때문에그곳을거쳐온들이비용보다작을수없음. 단계수 선택정점 비용 [B] 비용 [C] 비용 [D] 비용 [E] 비용 [F] 1 B F 3 B 2 3 C 3 B 4 E 4 C 5 D 5 E 45

46 다이익스트라알고리즘 2 단계에서는나머지 C, D, E, F 를처리 B 로가는최소비용이확정되었으니, B 를거쳐서해당정점으로가는비용이현재비용보다더작지않은가를확인 비용 [C]: 1 단계에서 5 원에갈수있음. 그런데 A-B 1 원에간다고확정되었고, 인접행렬을참조하면 B-C 는 2 원에갈수있으니 3 원이면 A-B-C 로갈수있음. 이값은현재 5 원보다작으니 3 으로바꿈. 인접행렬을참조하면나머지 D, E, F 는 B 에서가는길이없으니 1 단계값들이그대로내려옴. 최소값인정점 F 를선택 3 단계에서는 F 를거쳐서 C, D, E 가는비용을확인. 인접행렬을보면 F 에서 C, D, E 로가는것은없으므로 2 단계값들이그대로내려오고, 그 들중최소값 3 을지닌정점 C 를선택. 단계수 선택정점비용 [B] 비용 [C] 비용 [D] 비용 [E] 비용 [F] 1 B F 3 B 2 3 C 3 B 4 E 4 C 5 D 5 E 46

47 다이익스트라알고리즘 4 단계에서는방금선택된 C 를거쳐서가는길을확인. 3 단계에서 A-C 를최소비용 3 원에가고, 다시 C-E 를 1 원에가면 4 원. 이값은현재 A 에서 C 가는데드는최소비용인무한대보다작음. 따라서해당값을 4 원으로변경. 정점 E 를선택. 5 단계에서는정점 D 로가는최소비용이확정됨. 경로를찾아내기위해서비용이갱신될때마다거쳐온직전노드를표시. 5 단계에서비용 [D] 가 5 원으로갱신된이유는 A-E + E-D = = 5 이었기때문. D 직전에 E 를거쳐온것이므로도표의해당엔트리에 E 를표시하여역추적 단계수선택정점비용 [B] 비용 [C] 비용 [D] 비용 [E] 1 B F 3 B 2 3 C 3 B 4 E 4 C 5 D 5 E 비용 [F] 47

48 다이익스트라알고리즘 도표의행은해당단계에서최소비용 3 단계에서는 D 까지가는비용은현재까지계산된바로는무한대가장작은비용 단계가거듭될수록점차최적화 동적프로그램기법 (Dynamic Programming) 문제가너무커서해결할수없을때 간단한사실하나를알아내는데주력 알려진사실을바탕으로해서하나씩새로운사실을추가하여알려진사실의범위를점차로확대 48

49 이행폐쇄 방향그래프의정점 X 에서정점 Y 로가는길이있는가 Y 가 X 에연결되어있는가하는연결성의문제 가는길이있다면정점 X 에서정점 Y 로직접가는간선을추가 이후질문에즉답이가능 이행폐쇄 (Transitive Closure) 거쳐서갈수있는모든곳을직접가는간선으로연결한그래프 간선의추가에의해서, 대부분의노드들이인접노드로바뀜. 인접행렬로표현하는것이유리 49

50 깊이우선탐색 이행폐쇄 A 로부터시작하는 ACBDGF 라는경로 A 와 CBDGF 가연결되어있음을의미. H 에서출발하면 A 로갈수있으나이연결정보는위경로에포함안됨. 모든 노드에서출발하는깊이우선탐색을별도로실행 모든정점에서출발하는깊이우선탐색 인접리스트로구현하면 O(V*(V+E)), 인접행렬로구현하면 O(V*V 2 ) 50

51 와샬알고리즘 A B C D E F G H A B C D E F G H

52 와샬알고리즘 왼쪽에서오른쪽, 그리고위에서아래순서로 A[B][A] = 1 은 B 에서 A 가는길이있다는의미이는 A 에서갈수있는모든곳을 B 에서갈수있다는의미. 왜냐하면 B 에서 A 를거쳐가면되기때문. A 행을보면현재 C, F 가 A 에서갈수있는곳. 따라서표의 A[B][C], A[B][F] 값을 1 로바꿈. 스캔할때마다 0 이아닌엔트리에주목하되, 이는이전에 0 이었다가 1 로변한것도포함. 다시말해알고리즘실행결과는누적됨. 효율면에서와샬알고리즘은 O(V 3 ). 인접행렬의모든엔트리에대해서스캔을가하여야하므로 V 2. 각각의엔트리에대해서하나의행을탐색하기위해 V 시간이소요. B 에서 C 로갈수있으면 C 에서갈수있는모든곳을찾기위해 C 행을모두탐색 52

53 플로이드알고리즘 플로이드알고리즘 (Floyd's Algorithm) 모든정점으로부터다른모든곳으로가는최단경로. 모든쌍의최단경로 다이익스트라 : 주어진정점으로부터다른모든곳으로가는최단경로 와샬알고리즘의변형 53

54 플로이드알고리즘 A[A][B] = 1 A 에서 B 로갈수있으므로 B 에서갈수있는모든곳을 A 에서갈수있음 B 에서갈수있는모든곳은도표의 B 행에표시 비용 2 에 C 로갈수있음. 따라서 A-B + B-C = = 3. 이비용은현재 A 에서 C 로가는값 A[A][C] 인 5 보다작으므로변경. A[D][B] = 1 D 에서 B 를거쳐 C 로가는 D-B-C 의비용은 D-B + B-C = = 3 이값은현재도표의 A[D][C] 인무한대보다작으므로값을 3 으로변경 도표에는항상지금까지알아낸최소값이기록됨. A B C D E F A B C 0 1 D E 1 0 F 0 54

55 이중연결그래프 이중연결그래프 (Biconnected Graph) 서울 - 경주 - 포항이라는철로. 경주역에장애가발생. 서울에서다른곳을거쳐서포항을갈수있도록설계해야함. 모든정점쌍을연결하는경로가두개이상인그래프. 관절점 (AP: Articulation Point) 만약그것이사라지면그래프가두개이상의그룹으로분리되는그러한정점. 만약이런정점이존재한다면한그룹에서다른그룹으로건너가려면반드시그정점을통과해야함. 관절점이없어야이중연결그래프. 55

56 이중연결그래프 깊이우선탐색트리에의한관절점판단 B 가지워지면두개의서브트리로분리. 오른쪽서브트리의자식노드중 G 가 B 의상위노드를가리킴. 왼쪽서브트리는어떤자식노드도 B 의상위노드를가리키는것이없음. B 의삭제는왼쪽서브트리그룹의분리로이어지고, 결과적으로 B 는관절점 C가없어져도자식인 D가 C의상위노드를가리키므로 C는관절점이아님. 서브트리가하나일경우에는그서브트리에단하나라도삭제된노드의상위노드를향하는연결이있으면그정점은관절점이아님. 루트가 2 개이상의서브트리로나뉜다면루트를삭제했을때서브트리가분리되므로루트가관절점. 루트에하나의서브트리만있다면그루트는관절점이아님. 56

57 집합의그래프표현 집합의그래프표현 집합의원소는정점으로나타냄같은집합에속한다는사실은정점사이의연결로나타냄집합 {A, B, F, D, E} 와집합 {C, G}. 원소끼리연결만되어있다면동일한집합을나타냄 57

58 유니언파인드 유니언파인드 주어진원소들이서로같은집합에속하는가를알아내고 (Find) 만약에그렇지않으면같은집합에속하도록추가하라 (Union) 깊이우선탐색 배열첫요소는노드 A 에서출발한것으로서 BFDE 가탐색결과 D 가 A 와같은집합에속하는가라고질문하면이요소를검색하여답함. 이방법은집합의원소가고정된, 이른바정적상황에알맞은방법 수시로새로운원소가그래프에추가되는동적상황에서는매번깊이우선탐색을가하는데따른시간적비효율이발생 58

59 유니언파인드알고리즘 동적상황에유리 유니언파인드 집합 A 에 E 를추가하는것은간선 A-E 를연결함을의미 A-E 삽입명령이들어오면 A 를루트로그아래 E 를연결 A-B 삽입명령의결과 A 는두개의자식노드를거느림 B-D 삽입은직접 B 에다 D 를연결하지않고 B 의루트아래에 D 의루트를연결 59

60 자료구조로배열을사용 유니언파인드 A-E 가삽입되면표의 * 표시한곳에기록. E 의루트가 A 라는의미 B-D 의삽입은 D 의루트를 B 의루트에삽입. D 의루트는 C 이고, B 의루트는 A 이므로 C 를 A 에삽입. C 의루트가 A 가되어야하므로 C 칼럼에 A 가기록. 노드의루트를발견하기위해서는 while (A[i] Empty) i = A[i]; M 과 N 이같은집합인가 M의루트와 N의루트가일치하는가의문제. 불일치시에는 M-N 삽입 A B C D E A-E 삽입 *A A-B 삽입 C-D 삽입 B-D 삽입 A **A C 60

61 효율 유니언파인드 D-E 삽입, C-E 삽입, B-E 삽입 E 의루트를찾기위한반복문실행에많은시간. 최악의경우표의모든엔트리를참조. 효율은 O(V). 가중치유니언 (Union by Weighting) 자식노드가더많은루트를최종루트로하는방법 (a) 의 J-D 를추가하는작업에서 J 의루트인 J 가 D 의루트인 C 에붙는다. 61

62 경로압축 (Path Compression) 유니언파인드 루트를찾는과정에서나타나는모든노드를직접최종루트아래로. K 의루트인 L 을찾는과정에서만나는것은 K, A, M 2 단계의작업 : 루트를찾으면서나타나는모든노드에표시. 나중에루트를찾으면그노드를모두찾아가서부모노드를변경. 분할 (Halving) 단일패스에경로를단축 : 루트노드를찾아가면서단축작업 방문된노드의자식노드를방문된노드의부모노드에붙이는방법 62

63 네트워크플로우 방향성그래프 G 의가중치에유량 ( 流量, Flow) 을할당 유량을최대화하는문제 상하수도배관이수용하는범위내에서가능한많은유량 통신선로대역폭이수용할수있는범위내에서가능한많은정보 도로가수용할수있는범위내에서가능한많은교통량 네트워크플로우 (Network Flow) 어떤정점에서다른정점으로갈수있는흐름을최대화 어떤간선이수용할수있는용량이초과되면역류가발생 역류를일으키지않으면서유량을최대화하라는문제 63

64 네트워크플로우 네트워크플로우 64

65 네트워크플로우 네트워크플로우 노드 S 는소스, 노드 T 는싱크를나타냄. 가중치 5/3 은최대용량 (Capacity) 5 에현재유량 (Flow) 3 을흘림을의미 개념적간선 S->M->N->T 를잡으면이방향은실제간선의방향과일치. 이를순방향간선 (Forward Edge) 이라부름. 최대용량에서현재유량을뺀차이를슬랙 (Slack, 느슨한정도 ) 이라함. S-M 사이의슬랙은 5-3 = 2 보강경로 (Augmenting Path, Alternating Path) 각노드사이의슬랙은 2, 4, 1 최소슬랙 1만큼을더흘릴수있음. 개선의여지가있는경로를보강경로라함. 65

66 순방향흐름분석 네트워크플로우 S-M-N-T 의순방향흐름은모두최대 N-T 사이가최대용량으로서슬랙이 0 S-Q-P-T 역시최소슬랙 0 소스에서나가는양은 = 13, 싱크로들어오는양은 = 13 어떤노드로들어오는유량과나가는유량의합은같아야한다. 들어오는양이상으로나갈수없고, 나가는양이상으로들어오면역류가발생. 66

67 역방향간선 (Backward Edge) 네트워크플로우 개념적인간선의방향을 S-M-N-P-T 로. N-P 사이의개념적흐름은실제흐름과반대. S-M-N 사이의최소슬랙은 2. 소스에 2 를더부르면 S-M 이 7/5 로, M-N 이 4/4 로증가. 그런데이렇게되면노드 N 이문제. 2 만큼더들어오니그만큼더나가거나, 아니면다른곳에서 2 만큼덜들어오면됨. P-N 사이를보자. N 으로들어오는양을 4/1 로줄이면 2 만큼덜들어오니 N 으로서는무리가없음. 이제 N 의제약이 P 의제약으로바뀜. P 로서는 2 만큼덜내보내야하니그만큼덜들어오든가아니면다른곳으로 2 만큼더내보내면됨. P-T 사이에 6/3 을 2 만큼올려서 6/5 로늘리면이문제는해결됨. 소스에 2 만큼더부어도됨. 67

68 보강경로이론 만약에그래프내에어떠한보강경로도없다면그흐름은최대이다. 어떤그래프에서더이상의보강경로가없는지를어떻게증명하는가? 4)] 커트 68

69 커트 커트 (Cut) 는소스와싱크를분리하는간선의집합 첫째그림은 S, A, M 을소스그룹으로, 나머지정점을싱크그룹으로분리. 소스와싱크를분리하는간선은 A-B, A-N, M-N, M-P, S-Q 등다섯개가존재 둘째그림은 S, M, Q 를소스그룹으로, 나머지를싱크그룹으로분리. 그룹을분리하는간선은 S-A, M-N, M-P, Q-P 등세개가존재한다. 자르는방법에따라서그래프내에는수많은커트가존재한다. 69

70 맥스플로우민커트이론 최대유량은최소커트와같다 각그룹을하나의노드로바라보면그래프는두개의노드와그노드를잇는커다란배관. 두노드를잇는배관의크기는각커트의최대용량 (Capacity) 의합과같음. 여러가지방법으로커트를만들수있으나어떻게자르던최대용량은커트를초과할수없음. 커트용량 첫째커트의최대용량의합은 ( ) = 18. 둘째커트는 ( ) = 15. 이두가지를종합하면최대유량은일단 15 를초과할수없음. 다른커트방법을감안해야함. 최소커트는병목현상에있어서병목에해당 70

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 그래프알고리즘 14 장. 그래프알고리즘 위상정렬, 최소신장트리, 최단경로, 이행폐쇄, 이중연결, 유니언파인드, 네트워크플로우 학습목표 그래프관련용어를이해한다. 그래프를표현하기위한두가지자료구조를이해한다. 신장트리, 최소신장트리알고리즘들을이해한다. 이행폐쇄, 최단경로알고리즘들을이해한다. 이중연결, 유니언파인드, 네트워크플로우알고리즘들을이해한다. 1 Section

More information

Chap 6: Graphs

Chap 6: Graphs 그래프표현법 인접행렬 (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]

More information

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms 2015-1 12. 그래프와관련알고리즘 2015 년 5 월 28 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 그래프 (Graph) 그래프의응용예 Outline 미로찾기 인터넷라우터에서의패킷 forwarding

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

11장.그래프

11장.그래프 ---------------- T STRUTURS USIN ---------------- PTR 그래프 1/32 그래프 (graph) 란? 연결되어있는객체간의관계를표현하는자료구조 가장일반적인자료구조형태 그래프의예 트리 (tree) 지도, 지하철노선도 전기회로의연결상태 OS의프로세스와자원관계 인맥지도 2/32 그래프역사 오일러문제 (1800 년대 ) 다리를한번만건너서처음출발했던장소로돌아오는문제

More information

5장 스택

5장 스택 강의내용 오늘강의내용 ( 월 7 일 ) 중갂고사문제풀이 9. 그래프의숚회. 최소비용신장트리 ( 가중치그래프 ) 예습 ( 월 일 ) : 장가중치그래프 ( 계속 ) 숙제 : 연습문제 (9 장 ) :,,,,,7,8, 번풀어보기 마감일 : 9 년 월 일 ( 화 ) 9. 그래프숚회 그래프숚회 주어진어떤정점을출발하여체계적으로그래프의모든정점들을방문하는것 그래프숚회의종류

More information

Chap 6: Graphs

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

More information

슬라이드 1

슬라이드 1 CHAP 10: 그래프 C 로쉽게풀어쓴자료구조 생능출판사 2005 그래프 그래프 (graph): 연결되어있는객체간의관계를표현하는자료구조 그래프의예 : 전기회로, 프로젝트관리, 지도에서도시들의연결 그래프 : 아주일반적인자료구조 ( 예 ) 트리도그래프의일종으로볼수있다. 그래프이론 (graph theory): 그래프를문제해결의도구로이용하는연구분야 그래프역사 1800

More information

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

쉽게배우는알고리즘 9장. 그래프알고리즘 쉽게배우는알고리즘 장. 그래프알고리즘 http://academy.hanb.co.kr 장. 그래프알고리즘 수학은패턴의과학이다. 음악역시패턴들이다. 컴퓨터과학은추상화와패턴의형성에깊은관련이있다. 컴퓨터과학이다른분야들에비해특징적인것은지속적으로차원이 급상승한다는점이다. 미시적관점에서 거시적관점으로도약하는것이다. - 도널드크누스 - - 한빛미디어 학습목표 그래프의표현법을익힌다.

More information

Chap 6: Graphs

Chap 6: Graphs AOV Network 의표현 임의의 vertex 가 predecessor 를갖는지조사 각 vertex 에대해 immediate predecessor 의수를나타내는 count field 저장 Vertex 와그에부속된모든 edge 들을삭제 AOV network 을인접리스트로표현 count link struct node { int vertex; struct node

More information

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

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

More information

Ch.8 Procedures and Environments

Ch.8 Procedures and Environments Chapter 10 그래프 (graph) SANGJI University Kwangman KO (kkman@sangji.ac.kr) 그래프 (graph) 그래프 연결되어있는객체간의관계를표현하는자료구조 예 : 전기회로, 프로젝트관리, 지도에서도시들의연결 다양한모델에적용할수있는유연성있는자료구조 연결되어있는객체간의관계를표현하는자료구조 꼭지점 (vertex) 와변

More information

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

Chapter 10 그래프 (graph) SANGJI University Kwangman KO Chapter 10 그래프 (graph) SANGJI University Kwangman KO (kkman@sangji.ac.kr) 그래프 (graph) 그래프 연결되어있는객체간의관계를표현하는자료구조 예 : 전기회로, 프로젝트관리, 지도에서도시들의연결 다양한모델에적용할수있는유연성있는자료구조 연결되어있는객체간의관계를표현하는자료구조 꼭지점 (vertex) 와변

More information

chap 5: Trees

chap 5: Trees Chapter 5. TREES 목차 1. Introduction 2. 이진트리 (Binary Trees) 3. 이진트리의순회 (Binary Tree Traversals) 4. 이진트리의추가연산 5. 스레드이진트리 (Threaded Binary Trees) 6. 히프 (Heaps) 7. 이진탐색트리 (Binary Search Trees) 8. 선택트리 (Selection

More information

1장. 리스트

1장. 리스트 01. 그래프를소개합니다 02. 그래프를어떻게표현할것인가? 03. 그래프순회 : 그래프를따라산책하기 04. 최소신장트리 05. 최단경로탐색 06. 위상정렬 라인하르트오일러가 쾨니히스베르크의 7 개의다리문제 를풀기위해고안해낸수학적도구. 7 개의다리를간선 (Edge) 로, 4 개의육지를정점 (Vertex) 로표현. A A Pregel River B C B C D

More information

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

Microsoft PowerPoint - 제10장-그래프.pptx 제 강의. 그래프개념과그래프탐색 학습목차. 그래프의개념. 그래프의표현. 그래프탐색 . 그래프의개념 graph? chart? 오래된그래프문제로다음과 Köenigsberg 다리문제가있다. 이문제는다음과같은지형이있을때임의의한곳 (A,B,C,D) 에서출발하여 a 부터 f 까지 모든다리를한번씩건널수있는가? 하는문제이다. 자료구조의그래프는이러한문제를컴퓨터에표현하고알고리즘을개발하는분야이다.

More information

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

슬라이드 1

슬라이드 1 CHAP 10 : 그래프 yicho@gachon.ac.kr 1 그래프역사 1800 년대오일러에의하여창안 오일러문제 모든다리를한번만건너서처음출발했던장소로돌아오는문제 A,B,C,D 지역의연결관계표현 위치 : 정점 (node) 다리 : 간선 (edge) 오일러정리 모든정점에연결된간선의수가짝수이면오일러경로존재함 따라서그래프 (b) 에는오일러경로가존재하지않음 2 그래프정의

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

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

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

슬라이드 1

슬라이드 1 6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

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

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

Microsoft PowerPoint - 제8장-트리.pptx

Microsoft PowerPoint - 제8장-트리.pptx 제 8 강의. 트리 (Tree) 자료구조 1. 트리의개념 2. 이진트리 3. 이진트리의저장 1 트리자료구조필요성연결리스트의삽입삭제시데이터를이동하지않는장점을살리자. 연결리스트의검색시노드의처음부터찾아가야하는단점을보완하자. 데이터를중간부터찾아가는이진검색의장점을이용하자. 연결리스트의포인터를리스트의중간에두는방법? ptr 10 23 34 42 56 검색을중간부터시작하여좌우중하나로분기,

More information

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

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에대하여 AB=BA 1 가성립한다 2 3 (4) 이면 1 곱셈공식및변형공식성립 ± ± ( 복호동순 ), 2 지수법칙성립 (은자연수 ) < 거짓인명제 >

More information

슬라이드 1

슬라이드 1 CHAP 7: 트리 C 로쉽게풀어쓴자료구조 생능출판사 2005 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 대표이사 응용분야 : 계층적인조직표현 총무부 영업부 생산부 파일시스템 인공지능에서의결정트리 전산팀구매팀경리팀생산 1 팀생산 2 팀 트리의용어 노드 (node): 트리의구성요소 루트 (root): 부모가없는노드

More information

08장.트리

08장.트리 ---------------- T STRUTURES USING ---------------- HPTER 트리 /29 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모-자식관계의노드들로이루어짐 응용분야 : 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀 생산 팀 생산 2 팀 (a) 회사의조직도 내문서 동영상음악사진 영화예능드라마 여행 (b) 컴퓨터의폴더구조

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

05_tree

05_tree Tree Data Structures and Algorithms 목차 트리의개요 이진트리의구현 이진트리의순회 (Traversal) 수식트리 (Expression Tree) 의구현 Data Structures and Algorithms 2 트리의개요 Data Structures and Algorithms 3 트리의접근과이해 트리는계층적관계 (Hierarchical

More information

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

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은 Data structure: Assignment 1 Seung-Hoon Na October 1, 018 1 1.1 Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은 multiline으로 구성될 수 있으며, 한 라인에는 임의의 갯수의 숫자가 순서대로 나열될

More information

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

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

More information

7장

7장 CHAP 7: 트리 C 로쉽게풀어쓴자료구조 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현파일시스템인공지능에서의결정트리 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산 1 팀생산 2 팀 * 예제 : 책그림 7-2, 7-3, 7-4 트리의용어 노드 (node): 트리의구성요소 루트

More information

Microsoft PowerPoint - slide05.pptx

Microsoft PowerPoint - slide05.pptx Im4u 봄방학캠프 DAY 5; Elementary Graph Theory 구종만 jongman@gmail.com 그래프 (Graphs) 가장중요한 (?) 자료형인그래프의소개 그래프문제의큰두가지벽 모델링 : 현실세계의개념을그래프로나타낸다 알고리즘: 그래프로나타낸문제를해결한다 대개의문제에서는한가지벽만있다 모델링 : 문제를풀면서공부 알고리즘 : 비교적배우기쉽다

More information

제 11 장 다원 탐색 트리

제 11 장 다원 탐색 트리 제 11 장 다원탐색트리 Copyright 07 DBLB, Seoul National University m- 원탐색트리의정의와성질 (1) 탐색성능을향상시키려면메모리접근횟수를줄여야함 탐색트리의높이를줄여야함 차수 (degree) 가 2보다큰탐색트리가필요 m- 원탐색트리 (m-way search tree) 공백이거나다음성질을만족 (1) 루트는최대 m 개의서브트리를가진다.

More information

슬라이드 1

슬라이드 1 CHAP 10 : 그래프 그래프 (graph) 연결되어있는객체간의관계를표현하는자료구조 가장일반적인자료구조형태 우리가배운트리 (tree) 도그래프의특수한경우임 전기회로의소자간연결상태 운영체제의프로세스와자원관계 큰프로젝트에서작은프로젝트간의우선순위 지도에서도시들의연결상태 그래프역사 1800 년대오일러에의하여창안 오일러문제 모든다리를한번만건너서처음출발했던장소로돌아오는문제

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >

<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E > 제 7 강의. 고급연결리스트 1. 원형연결리스트 2. 이중연결리스트 3. 연결리스트알고리즘 1 1. 원형연결리스트 (Circularly Linked Lists) 원형연결리스트란? 연결리스트의맨끝노드를첫번째노드와연결시켜서원형으로만든리스트 단순연결리스트 (Singly Linked List) 불편한점 - 연결리스트의노드포인터를알고있을때첫번째노드는바로찾아갈수있지만마지막노드는리스트전체를따라가면서끝을찾아가야한다

More information

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms

Microsoft PowerPoint - ch12 - Graph, Graph Algorithms 그래프탐색 (Graph Search) 그래프의가장기본적인연산 하나의정점으로부터시작하여차례대로모든정점들을한번씩방문 많은문제들이단순히그래프의노드를탐색하는것으로해결 ( 예 ) 도로망에서특정도시에서다른도시로갈수있는지여부 ( 예 ) 전자회로에서특정단자와다른단자가서로연결되어있는지여부 ch12-44 깊이우선탐색 (DFS) 깊이우선탐색 (DFS: depth-first search)

More information

제 6 장 그래프

제 6 장 그래프 제 장 그래프 Copyright DBLAB, Seoul National University 그래프추상데이타타입 () 개요.. Koenigsberg 다리문제 차수 (degree) : 정점에연결된간선의수 오일러행로 (Eulerian walk) c C d g a A Kneiphof B e b D f c a C A B d b e g f D (a) Koenigsberg

More information

06장.리스트

06장.리스트 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :

More information

슬라이드 1

슬라이드 1 CHAP 10 : 그래프 그래프 (graph) 연결되어있는객체간의관계를표현하는자료구조 가장일반적인자료구조형태 우리가배운트리 (tree) 도그래프의특수한경우임 전기회로의소자간연결상태 운영체제의프로세스와자원관계 큰프로젝트에서작은프로젝트간의우선순위 지도에서도시들의연결상태 그래프역사 1800 년대오일러에의하여창안 오일러문제 모든다리를한번만건너서처음출발했던장소로돌아오는문제

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

C 언어 강의노트

C 언어 강의노트 C언어 (CSE2035) (15-1 Lists) Linear list 의구성, Insertion, deletion 윤용운, Ph.D. Dept. of Computer Science and Engineering Sogang University Seoul, Korea Tel: 010-3204-6811 Email : yuyoon0@sogang.ac.kr 2018-01-11

More information

Chapter 08. 트리(Tree)

Chapter 08. 트리(Tree) 윤성우의열혈자료구조 : C 언어를이용한자료구조학습서 Chapter 08. 트리 (Tree) Introduction To Data Structures Using C Chapter 08. 트리 (Tree) Chapter 08-1: 트리의개요 트리의접근과이해 트리는계층적관계 (Hierarchical Relationship) 를표현하는자료구조이다. 트리의예 트리의예

More information

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

Lab 5. 실습문제 (Double linked list)-1_해답.hwp Lab 5. Doubly-linked list 의구현 실험실습일시 : 2009. 4. 13. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 19. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Doubly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Doubly-linked list의각함수를구현한다.

More information

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

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 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2016년 12월15일 ( 목 ) 오전 9시40분 ~) 담당교수 : 서강대학교컴퓨터공학과임인성 < 주의 > 답안지에답을쓴후제출할것. 만약공간이부족하면답안지의뒷면을이용하고, 반드시답을쓰는칸에어느쪽의뒷면에답을기술하였는지명시할것. 연습지는수거하지않음. function MakeSet(x) { x.parent

More information

Microsoft PowerPoint - lec07_tree [호환 모드]

Microsoft PowerPoint - lec07_tree [호환 모드] Tree 2008학년도 2학기 kkman@sangji.ac.krac kr -1- 트리 (Tree) 1. 개요 ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모 - 자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 -2- 트리자료구조를사용하는이유? ~ 다른자료구조와달리비선형구조. ~ 정렬된배열 탐색은빠르지만

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

슬라이드 1

슬라이드 1 Data Structure Chapter 8. 우선순위큐 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 우선순위큐추상데이터타입 우선순위큐 우선순위큐 (priority queue) 정의 : 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게됨 스택이나 FIFO 큐를우선순위큐로구현할수있음

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 10 장. 트리 트리 리스트나스택, 큐가데이터집합을한줄로늘어세운선형자료구조라면트리는두갈래로나누어세운비선형구조이다. 비선형구조를고안한동기는바로이구조가지닌효율성때문이다. 즉, 삽입, 삭제, 검색이라는주작업에대해서선형구조보다나은시간적효율을보일수있다. 학습목표 트리와관련된용어를정확히이해한다. 이진트리의세가지순회방법의차이점을이해한다. 포인터로구현한이진탐색트리의탐색,

More information

2002년 2학기 자료구조

2002년 2학기 자료구조 자료구조 (Data Structures) Chapter 1 Basic Concepts Overview : Data (1) Data vs Information (2) Data Linear list( 선형리스트 ) - Sequential list : - Linked list : Nonlinear list( 비선형리스트 ) - Tree : - Graph : (3)

More information

입학사정관제도

입학사정관제도 자료구조 강의노트 교재 : C 로배우는쉬운자료구조 ( 개정판 ) 출판사 : 한빛미디어 (2011 년 3 월발행 ) 저자 : 이지영 소프트웨어학과원성현교수 1 8 장트리 소프트웨어학과원성현교수 93 1. 트리 트리개요 트리 (tree) 란? 리스트, 스택, 큐등은선형자료구조 (linear data structure) 인것에반해서트리는계층 (hierarchy)

More information

Ch.1 Introduction

Ch.1 Introduction Tree & Heap SANGJI University Kwangman Ko (kkman@sangji.ac.kr) 트리개요 트리 (Tree) ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모-자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 kkman@sangji.ac.kr 2 트리자료구조를사용하는이유?

More information

슬라이드 1

슬라이드 1 CHAP 8: 우선순위큐 yicho@gachon.ac.kr 1 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 리스트 5 장. 리스트 목록이나도표처럼여러데이터를관리할수있는자료형을추상화 데이터삽입, 삭제, 검색등필요작업을가함스택과큐는리스트의특수한경우에해당 학습목표 추상자료형리스트개념과필요작업을이해한다. 배열로구현하는방법, 연결리스트로구현하는방법을숙지한다. C로구현할때와 C++ 로구현할때의차이점을이해한다. 자료구조로서배열과연결리스트의장단점을이해한다. 1 Section 01

More information

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

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ 00. 리스트 자료구조 01. 링크드 리스트 02. 더블 링크드 리스트 03. 환형 링크드 리스트 리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : (

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070> /* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)

More information

Algorithms

Algorithms 자료구조 & 알고리즘 리스트 (List) Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 선형리스트 연결리스트 2 선형리스트 선형리스트 선형리스트의개념 선형리스트의구현 연결리스트 3 선형리스트개념 리스트 (List) 목록, 대부분의목록은도표 (Table) 형태로표시 추상자료형리스트는이러한목록또는도표를추상화한것

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

1장. 리스트

1장. 리스트 01. 링크드리스트 02. 더블링크드리스트 03. 환형링크드리스트 배열과는달리유연하게크기를바꿀수있는자료구조 각노드는다음노드를가리키는포인터를가짐. 각노드를다음노드를가리키는포인터로연결하여만든리스트. Single Linked List 라고도함. 링크드리스트의첫번째노드를헤드 (Head), 마지막노드를테일 (Tail) 이라고한다. C 언어로표현하는링크드리스트의노드 typedef

More information

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7> 제14장 동적 메모리 할당 Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked

More information

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2

정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2 13. 탐색트리 AVL 트리, B- 트리, 2-3-4 트리 정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2 이진탐색트리의예 3 BST 의최선과최악의경우

More information

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

중간고사 (자료 구조)

중간고사 (자료 구조) Data Structures 215 중간고사 문제에서명시적으로기술하지않은부분은교재의내용에근거함. 215. 1. 27. 1 다음용어에대하여간단하게설명하시오 ( 각 3 점 *1=3 점 ) 1 abstract data type 6 Circular linked list 2 recursion 3 time complexity 4 space complexity 5 Single

More information

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

서강대학교공과대학컴퓨터공학과 CSE3081 알고리즘설계와분석 (2 반 ) 기말고사 (2015 년 12 월 17 일 ) 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2015년 12월17일 ( 목 ) 오전 9시 30분 ) 담당교수 : 서강대학교컴퓨터공학과임인성 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2015년 12월17일 ( 목 ) 오전 9시 30분 ) 담당교수 : 서강대학교컴퓨터공학과임인성대상 : 2학년 2학기생 < 주의 > 문제지는총6쪽이며, 제공한답안지에답을쓴후제출할것. 만약공간이부족하면답안지의뒷면을이용하고반드시답을쓰는칸에어느쪽의뒷면에답을기술하였는지명시할것. 연습지는수거하지않음. 1. 다음은

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information

Microsoft PowerPoint - 자료구조2008Chap06

Microsoft PowerPoint - 자료구조2008Chap06 제 6 장연결리스트 연결리스트개요 2 일정한순서를가지는데이터요소들을표현하는방법중의하나이다. 배열과다르게데이터요소들의논리적인순서만유지되고기억장소내에서는각데이터요소들은논리적인순서와는상관없는임의의위치를가지도록하는자료구조이다. 연결리스트에서는각데이터요소들이기억장소내의어떤위치에어떤항목이있는지를표시해주어야한다. 이를위해데이터요소에는데이터값 (value) 뿐만아니라위치정보

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 트리 10 장. 트리 리스트나스택, 큐가데이터집합을한줄로늘어세운선형자료구조라면트리는두갈래로나누어세운비선형구조이다. 비선형구조를고안한동기는바로이구조가지닌효율성때문이다. 즉, 삽입, 삭제, 검색이라는주작업에대해서선형구조보다나은시간적효율을보일수있다. 학습목표 트리와관련된용어를정확히이해한다. 이진트리의세가지순회방법의차이점을이해한다. 포인터로구현한이진탐색트리의탐색,

More information

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

Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 큐 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 1. 큐 v 큐 (Queue) 데이터의삽입과삭제가양쪽끝에서일어나는자료구조

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 5 장. 리스트 리스트 목록이나도표처럼여러데이터를관리할수있는자료형을추상화 데이터삽입, 삭제, 검색등필요작업을가함 스택과큐는리스트의특수한경우에해당 학습목표 추상자료형리스트개념과필요작업을이해한다. 배열로구현하는방법, 연결리스트로구현하는방법을숙지한다. C 로구현할때와 C++ 로구현할때의차이점을이해한다. 자료구조로서배열과연결리스트의장단점을이해한다. 1 목록 ( 도표

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

Microsoft PowerPoint - 08-chap06-Queue.ppt

Microsoft PowerPoint - 08-chap06-Queue.ppt / 큐 (QUEUE) Chapter 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 큐 Ticket ox Dongwon Jeong djeong@kunsan.ac.kr Department of Kunsan National University 전단 () 후단 () 학습목표 큐 DT 큐의개념및추상데이터타입에대한이해

More information

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

쉽게 배우는 알고리즘 강의노트 쉽게배우는알고리즘 장. 정렬 Sorting http://www.hanbit.co.kr 장. 정렬 Sorting 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고,

More information

CH06)자료구조.hwp

CH06)자료구조.hwp 자료구조 (Data Structure) ) 자료구조의정의 프로그램에서사용하기위한자료를저장매체에저장하는방법및각자료간의관계, 처리방법을분석하는이론 자료의표현과연산의기초과학이다. 일련의자료들을조직화, 구조화시킨다. 모든자료구조에대하여연산처리가가능하다. 구현된자료구조에따라프로그램실행시간이다르다. 2) 자료구조의목적 ( 이유 ) 실제적으로물리적인저장장치는일정한규칙으로하나의선형형태로존재하기때문에그특성에맞게적절한형태로

More information

Microsoft PowerPoint - chap10_tree

Microsoft PowerPoint - chap10_tree Chap. 10 : Tree 2007 학년도 2 학기 1. 개요 재귀 (recursion) 의정의, 순환 ~ 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 ~ 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 ~ 정의자체가순환적으로되어있는경우에적합한방법 ~ 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색 -2-

More information

예제 1.3 K 5 와 K 3,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

More information

Microsoft PowerPoint - 26.pptx

Microsoft PowerPoint - 26.pptx 이산수학 () 관계와그특성 (Relations and Its Properties) 2011년봄학기 강원대학교컴퓨터과학전공문양세 Binary Relations ( 이진관계 ) Let A, B be any two sets. A binary relation R from A to B, written R:A B, is a subset of A B. (A 에서 B 로의이진관계

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7 장. 큐 스택, 큐 리스트작업은시간과무관하게정의 스택과큐의작업은시간을기준으로정의 큐는가장먼저삽입된데이터가먼저삭제되는특성의자료형을추상화 학습목표 추상자료형큐의기본개념을스택과대조하여이해한다. 추상자료형큐를구현하기위한세가지방법을이해한다. 원형배열이필요한이유와동작원리를이해한다. 큐의응용예를구체적으로명확하게이해한다. 1 큐 큐 = 대기열 2 큐 대기열을모델링 선입선출,

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

제 1 장 기본 개념

제 1 장 기본 개념 이진트리순회와트리반복자 트리순회 (tree traversal) 트리에있는모든노드를한번씩만방문 순회방법 : LVR, LRV, VLR, VRL, RVL, RLV L : 왼쪽이동, V : 노드방문, R : 오른쪽이동 왼쪽을오른쪽보다먼저방문 (LR) LVR : 중위 (inorder) 순회 VLR : 전위 (preorder) 순회 LRV : 후위 (postorder)

More information

슬라이드 1

슬라이드 1 CHP 6: 큐 C 로쉽게풀어쓴자료구조 생능출판사 2005 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 큐 DT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

Microsoft PowerPoint - 08-Queue.ppt

Microsoft PowerPoint - 08-Queue.ppt Chapter Queue ( 큐 ) Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 큐의개념및추상데이터타입에대한이해 큐의구현방법 배열 링크드리스트 덱 / 데크의개념과구현방법 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In

More information

(Hyunoo Shim) 1 / 24 (Discrete-time Markov Chain) * 그림 이산시간이다연쇄 (chain) 이다왜 Markov? (See below) ➀ 이산시간연쇄 (Discrete-time chain): : Y Y 의상태공간 = {0, 1, 2,..., n} Y n Y 의 n 시점상태 {Y n = j} Y 가 n 시점에상태 j 에있는사건

More information

슬라이드 1

슬라이드 1 컬렉션프레임워크 (Collection Framework) 의정의 - 다수의데이터를쉽게처리할수있는표준화된방법을제공하는클래스들 - 데이터의집합을다루고표현하기위한단일화된구조 (architecture) - JDK 1.2 이전까지는 Vector, Hashtable, Properties와같은컬렉션클래스로서로다른각자의방식으로처리 - 컬렉션프레임워크는다수의데이터를다루는데필요한다양하고풍부한클래스들을제공하므로프로그래머의부담을상당부분덜어준다.

More information

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

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를 리스트에대한설명중틀린것은 구조체도리스트의요소가될수있다 리스트의요소간에는순서가있다 리스트는여러가지방법으로구현될수있다 리스트는집합과동일하다 다음은순차적표현과연결된표현을비교한것이다 설명이틀린것은 연결된표현은포인터를가지고있어상대적으로크기가작아진다 연결된표현은삽입이용이하다 순차적표현은연결된표현보다액세스시간이많이걸린다 연결된표현으로작성된리스트를 개로분리하기가쉽다 다음은연결리스트에서있을수있는여러가지경우를설명했는데잘못된항목은

More information