그래프 알고리즘

6,154 views
5,607 views

Published on

데브루키 알고리즘 스터디

Published in: Education
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,154
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
2
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

그래프 알고리즘

  1. 1. Graph<br />Graph<br />데브루키 알고리즘 스터디<br />2011. 4. 16. 해보리<br />
  2. 2. 오늘의 주제<br />‘그래프’<br />※ 위 그림은 오늘의 내용과 아무 상관이 없습니다.<br />
  3. 3. 그래프를 소개합니다.<br />그래프를 어떻게 표현할 것인가?<br />그래프 순회: 그래프를 따라 산책하기<br />위상 정렬<br />최소 신장 트리<br />최단 경로 탐색<br />오늘의 주제 및 목차<br />
  4. 4. 오늘의 주제 및 목차<br />관련 용어에 대한 이해<br />게임에서의 사용 예<br />
  5. 5. 오늘의 주제 및 목차<br />하지만 이 보다 더 신경 쓴<br />지루하지 않은 발표 하기!!!<br />…가 될 수 있을까??? ㅠ.ㅠ<br />
  6. 6. 각각의 단위 정보를 링크로 연결하여 구조화 시킨 자료 구조<br />그래프란 무엇인가?<br />
  7. 7. 서울<br />강원도<br />경기도<br />충청북도<br />경상북도<br />충청남도<br />전라북도<br />경상남도<br />전라남도<br />부산<br />
  8. 8. 7개의 다리를<br />한번씩만 건너서<br />도시 전체를 밟기<br />쾨니히스베르크의 다리건너기 문제<br />
  9. 9. L. 오일러의 증명<br />한 붓 그리기 문제<br />쾨니히스베르크의 다리건너기 문제<br />
  10. 10. 홀수개인 변을 가진 꼭지점이없을 때…<br />한 붓 그리기 조건<br />홀수개인 변을 가진 꼭지점이<br />두 개만 존재 할 때…<br />
  11. 11. 한 붓 그리기 문제<br />그렇기 때문에쾨니히스베르크의 다리를한번씩만 건너는 방법은 없다.<br />
  12. 12. 쾨니히스베르크의 현재 모습<br />
  13. 13. 잠깐 쉽시다!<br />
  14. 14. 그래프를 이용하면복잡한 문제들을단순화 할 수 있다.<br />
  15. 15. 그래프 색칠 문제 응용<br />4색 문제를 그래프를 이용해 단순화 한 예<br />컴파일러에서 프로세서 레지스터 할당 문제<br />무선 기지국 사이에서 간섭을 없애기 위한 주파수 할당 문제<br />
  16. 16. “정점의 집합을 V, 간선의 집합을 E, 그리고 그래프를 G라고 했을때,G = (V, E)이다”<br />그래프란 무엇인가?<br />- 뇌를 자극하는 알고리즘(P.355)<br />
  17. 17. 그래프 = 꼭지점 + 변Graph = (Vertex, Edge)G = (V, E)<br />그래프란 무엇인가?<br />
  18. 18. 간선<br />A<br />B<br />용어 알아보기<br />정점<br />
  19. 19. A<br />B<br />인접(Adjacent)<br />간선으로 연결되어 있는 두 정점<br />인접 또는 이웃 관계<br />
  20. 20. 경로(Path)<br />무향 경로, 유향 경로, 단순 경로<br />Path<br />
  21. 21. 순환(Cycle)<br />시작점과 끝점이 연결된 경로<br />Cycle<br />
  22. 22. 두 정점 사이에 경로가 존재하는 경우,<br />“이 두 정점이 연결되어 있다”<br />연결성(Connectivity)<br />
  23. 23. 언제까지 할텐가?<br />일단 여기까지가 비타민 퀴즈~<br />용어 설명은 지루하니까…<br />이 뒷 부분은 후다닥~ ^^;<br />
  24. 24. 내차수(內-, in-degree)<br />용어 알아보기<br />한 꼭지점에 이어져 있는 변의 개수(무향)<br />한 꼭지점에 내 외로 이어져 있는 변의 개수(유향)<br />차수<br />외차수(外-, out-degree)<br />
  25. 25. A<br />C<br />무향 그래프<br />B<br />Undirected Graph<br />E = {(A, B), (A, C), (B, C)}<br />
  26. 26. A<br />C<br />유향 그래프<br />B<br />Directed Graph<br />E = {(A, B), (B, C), (C, A)}<br />
  27. 27. 완전 그래프<br />Complete Graph<br />= 클릭(Clique)<br />
  28. 28. 이분 그래프<br />
  29. 29. 완전 이분 그래프<br />
  30. 30. 정규 그래프<br />꼭지점의 모든 차수가 동일<br />Regular Graph<br />
  31. 31. 평면 그래프<br />평면 그래프의 예<br />평면 그래프가 아닌 예<br />
  32. 32. 동형 그래프<br />정점, 차수, 간선의 수가 동일한 두 그래프<br />Isomorphic Graph<br />
  33. 33. 부분 그래프<br />
  34. 34. 그래프를 어떻게 표현할 것인가?<br />아무 이유 없음<br />왠지 지금쯤<br />한번 나와줘야 할 듯 해서…<br />
  35. 35. 인접 행렬<br />행렬(M) = n x n(n은 Vertex)<br />Adjacency Matrix<br />
  36. 36. 인접 리스트<br />Adjacency List<br />
  37. 37. 인접 행렬 Vs. 인접 리스트<br />언제나 그렇듯<br />상황에 맞게 쓰시오~<br />그래프를 표현하기 위한 자료구조로<br />인접 행렬과 인접 리스트 중 무엇이 좋을까?<br />
  38. 38. 깊이 우선 탐색너비 우선 탐색<br />그래프 순회<br />그래프 순회<br />: 그래프를 따라 산책하기<br />
  39. 39. 깊이 우선 탐색<br />DFS(Depth First Search)<br />
  40. 40. 너비 우선 탐색<br />BFS(Breadth First Search)<br />
  41. 41. “어떤 정점이<br />다른 정점과의<br />관계 속에서<br />가지는 위치”<br />위상정렬<br />Topological Sort<br />
  42. 42. 그래프에 방향성이 있어야 한다.<br />그래프 내에 사이클이 없어야 한다.<br />위상정렬의 조건<br />DAG(Directed Acyclic Graph)<br />
  43. 43. 정점<br />진입 간선<br />진출 간선<br />위상정렬 관련 용어<br />진입 간선(Incoming Edge)<br />진출 간선(Outgoing Edge)<br />
  44. 44. 7<br />5<br />11<br />위상정렬<br />8<br />3<br />2<br />10<br />9<br />
  45. 45. 주목적은 위상적 순서를 찾아내는 것이며,<br />이 때문에 순차적 작업을 요하는 <br />부품 조립(선박, 비행기) 등의 분야에서 주로 응용<br />AOV Network<br />Activity on Vertex Network<br />
  46. 46. 가중치?<br />신장 트리?<br />최소 신장 트리?<br />최소 신장 트리<br />
  47. 47. 신장 트리<br />Spanning Tree<br />
  48. 48. 0<br />0<br />0<br />신장 트리<br />1<br />2<br />1<br />2<br />1<br />2<br />3<br />6<br />5<br />4<br />3<br />6<br />3<br />6<br />5<br />5<br />4<br />4<br />7<br />7<br />7<br />Depth First Spanning Tree<br />Breadth First Spanning Tree<br />
  49. 49. 가중치는<br />신장 트리를 구성할 때<br />참고하는 값<br />가중치와 신장 트리<br />Weight & Spanning Tree<br />
  50. 50. 최소의 가중치 값으로<br />구성된 신장 트리<br />최소 신장 트리<br />Minimum Spanning Tree<br />
  51. 51. 하나의 정점을 선택하고<br />연결된 정점의 주변 정보를<br />파악하여 구성<br />프림 알고리즘<br />Prim’s Algorithm<br />
  52. 52. 시작점 선택<br />: 어디에서 출발해도 무관하다.<br />주변 Vertex 확인<br />: 선택된 Edge의 두 Vertex가 연결되었을 때 순환이 생기면 버림<br />: 그렇지 않은 정점들을 신장 트리에 추가<br />Edge 리스트에 Edge가 없을 때까지 반복<br />프림 알고리즘<br />Prim’s Algorithm<br />
  53. 53. 프림 알고리즘<br />
  54. 54. 그래프 내의 모든 간선을 가중치에 따라<br />오름차순으로 정렬한다.<br />간선 목록을 순회하며 <br />사이클이 생기지 않도록<br />최소 신장 트리에 추가한다.<br />크루스칼 알고리즘<br />Kruskal’s Algorithm<br />
  55. 55. 크루스칼 알고리즘<br />
  56. 56. 크루스칼 알고리즘과 유사<br />솔린 알고리즘<br />Sollin’s Algorithm<br />
  57. 57. 다익스트라 알고리즘은 1959년 네덜란드 컴퓨터 과학자<br />EdsgerDijkstra에 의해서 착상되었다.<br />최단 경로 탐색<br />바로 나!<br />Dijkstra algorithm<br />
  58. 58. 비용(Cost) 추가<br />다익스트라 알고리즘<br />※어떤 간선도 음수값을 갖지 않는 방향그래프에서 사용<br />Dijkstra algorithm<br />
  59. 59. 가중 유향 그래프에서 최단 거리 탐색<br />벨만-포드 알고리즘<br />Bellman-Ford algorithm<br />
  60. 60. Warshall Algorithm<br />Floyd Algorithm<br />…<br />최단 경로 탐색<br />이렇게 하다간 끝이 없겠소~ ㅠ.ㅠ<br />
  61. 61. 게임 사용 예<br />급!! 마무리…<br />Q & A<br />감사합니다.<br />

×