이산수학 Ch.5

4,287 views

Published on

아꿈사 (http://cafe.naver.com/architect1)
스터디 발표자료

이산수학 Ch.5 Graph,Tree

Published in: Technology
  • Be the first to comment

이산수학 Ch.5

  1. 1. Mathematical structuresfor Computer Science이산수학<br />5.1 그래프의 정의와 표현<br />5.2 트리<br />아키텍트를 꿈꾸는 사람들<br />(http://cafe.naver.com/architect1)<br />현수명<br />
  2. 2. 그래프의 정의와 표현<br /><ul><li>그래프의 정의
  3. 3. 그래프의 응용
  4. 4. 그래프의 용어
  5. 5. 동형 그래프
  6. 6. 평면 그래프
  7. 7. 그래프의 표현
  8. 8. 트리
  9. 9. 트리의 용어
  10. 10. 트리의 응용
  11. 11. 이진트리의 표현
  12. 12. 트리 순회 알고리즘
  13. 13. 트리에 대한 결과</li></li></ul><li>Graph<br /><ul><li>그래프의 정의
  14. 14. 그래프의 응용
  15. 15. 그래프의 용어
  16. 16. 동형 그래프
  17. 17. 평면 그래프
  18. 18. 그래프의 표현</li></li></ul><li>Example 5.2<br />Graph<br />Node<br />a3<br />Arc<br />g(aX)<br />함수<br />2<br />a2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />5개의 Node와 6개의 Arc<br />
  19. 19. Definition<br />Graph<br />그래프는 순서쌍 (N, A, g)이다<br />N : Node 들의 집합. (공집합 안됨)<br />A : Arc 들의 집합. (공집합 허용,유한개)<br />g : Arc a 의 끝점이라고 하는 비순서쌍 x-y 가 <br />각각의 arc a 로 사상하는 함수<br />
  20. 20. Example 5.3<br />a3<br />Node<br />Arc<br />2<br />a2<br />g(aX)<br />함수<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />g(a1) = 1-2<br />g(a2) = 1-2<br />g(a3) = 2-2<br />g(a4) = 2-3<br />g(a5) = 1-3<br />g(a6) = 3-4<br />
  21. 21. Example 5.4<br />a5<br />a1<br />a2<br />a3<br />2<br />4<br />1<br />a4<br />3<br />g(a3) = (1,3)<br />g(a4) = (3,1)<br />g(a1) = (1,2)<br />
  22. 22. Definition<br />Directed Graph<br />방향성 그래프는 순서쌍 (N, A, g)이다<br />N : Node 들의 집합. (공집합 안됨)<br />A : Arc 들의 집합. (공집합 허용,유한개)<br />g : Node x 와 node y 를 연결하는 arc a 를<br />사상하는 함수로서, 순서쌍인 (x,y) 로 표시<br />
  23. 23. Graph<br /><ul><li>그래프의 정의
  24. 24. 그래프의 응용
  25. 25. 그래프의 용어
  26. 26. 동형 그래프
  27. 27. 평면 그래프
  28. 28. 그래프의 표현</li></li></ul><li>Graph<br /><ul><li>그래프의 정의
  29. 29. 그래프의 응용
  30. 30. 그래프의 용어
  31. 31. 동형 그래프
  32. 32. 평면 그래프
  33. 33. 그래프의 표현</li></li></ul><li>인접adjacent<br />두개의노드가 하나의 아크로 연결되어있는 경우<br />a3<br />2<br />a2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />1과 3은 서로 인접<br />1과 4는 인접하지않음<br />
  34. 34. 루프loop<br />어떤 노드n 에 대하여 아크 n-n 이 있는 경우<br />a3<br />a3 = 2-2 는 루프이다.<br />2<br />a2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />비루프그래프loop-free<br /> 그래프에서 루프가 없는 경우<br />
  35. 35. 병렬 아크parallel arc<br />어떤 두개의노드가 서로 다른 두개의아크들로 연결된 경우<br />a3<br />a1과 a2는 병렬 아크<br />2<br />a2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />단순 그래프simple graph<br /> 그래프가 루프와 병렬 아크를 갖지 않는 경우<br />
  36. 36. 고립 노드isolated node<br />노드가 인접한 노드들을 갖고 있지 않은 경우<br />a3<br />노드5 는 고립 노드<br />2<br />a2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />
  37. 37. 차수degree<br />어떤 노드에 연결되어있는 아크의 수<br />a3<br />노드1 의 차수는 3<br />노드3 의 차수도 3<br />노드4 의 차수는 1<br />노드5 의 차수는 0<br />2<br />a2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />
  38. 38. 부분 그래프subgraph<br />그래프 g 의 노드집합과 아크집합에 대해 <br />각각 이들의 부분 집합으로 이루어진 그래프 g’<br />a3<br />a3<br />a2<br />2<br />a4<br />a1<br />2<br />2<br />a6<br />a5<br />1<br />3<br />4<br />5<br />a2<br />a4<br />a1<br />a1<br />a5<br />a5<br />1<br />1<br />3<br />3<br />부분그래프 g’ 은 원래의 그래프 g 에서 어떤 부분을 삭제하고<br />나머지 부분은 변경하지 않은 채로 얻게 된다<br />
  39. 39. 완전 그래프complete graph<br /> 그래프에서 어떠한 두개의노드가 서로 모두 인접해 있는 경우<br />2<br />a3<br />a4<br />2<br />a2<br />a1<br />a1<br />a5<br />1<br />a5<br />3<br />1<br />3<br />단순 그래프 이면서 완전 그래프<br />
  40. 40. 경로path<br />노드와아크들의 연속적인 순서<br />어떤 노드n0에서 nk까지의 순서<br />n0, a0, n1, a1, … , nk-1, ak-1, nk<br />a3<br />노드2 에서 4 까지의 경로들중에 하나<br /> 2, a1, 1, a2, 2, a4, 3, a6, 4<br />노드2 에서 4 까지 경로의 길이는 4<br />a2<br />2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />경로의 길이length of path<br />경로상에 있는 아크들의 수<br />
  41. 41. 연결 그래프connected graph<br /> 각 노드에서 시작하여 다른 모든 노드까지 경로가 있는 경우<br />2<br />a3<br />a4<br />연결 그래프<br />a3<br />2<br />a2<br />a1<br />a2<br />a1<br />2<br />a4<br />a5<br />1<br />a5<br />3<br />1<br />3<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />연결 그래프아님!<br />
  42. 42. 사이클cycle<br /> 어떤 노드n0에서 시작하여 n0까지 도달하는 경로가 있는 경우<br />1, a1, 2, a4, 3, a5, 1<br />a3<br />a2<br />2<br />a4<br />a1<br />a6<br />a5<br />1<br />3<br />4<br />5<br />비순환 그래프acyclic graph<br /> 그래프에 사이클이 존재하지 않는 경우<br />
  43. 43. Example 5.8<br />K4<br />K1<br />K2<br />K3<br />simple-complete graph<br /> 각각 한 개, 두 개, 세 개, 네 개의 노드들로 구성된 단순, 완전 그래프<br />N 개의 노드들로 구성된 단순,완전 그래프는 Kn으로 표기<br />
  44. 44. 1<br />2<br />완전 그래프는 아니다. <br />각 노드가 다른 모든 노드와<br />인접해 있지 않기 때문<br />{1, 2} 와 {3, 4, 5} 로 표현가능<br />3<br />4<br />5<br />같은 집합에 속한 노드들 사이에는 아크가 없지만,<br />서로 다른 집합에 속한 노드들 사이에는 아크가 있다<br />완전 이분할 그래프bipartite complete graph<br />
  45. 45. Definition<br />완전 이분할 그래프<br /> bipartite complete graph<br />그래프의 노드들을 서로소인 두개의비공집합인<br />N1과 N2로 분할한 경우 다음을 만족하면 완전이분할 그래프이다<br /><ul><li>두개의노드x 와 y 가 인접할수 있는 필요충분조건은 반드시 </li></ul> x ∈ N1이고 y ∈ N2이어야 한다<br /><ul><li>여기서 |N1| = m 이고 |N2| = n 인 경우, </li></ul>완전 이분할 그래프는 Km,n으로 표기한다<br />1<br />2<br />3<br />4<br />5<br />
  46. 46. Graph<br /><ul><li>그래프의 정의
  47. 47. 그래프의 응용
  48. 48. 그래프의 용어
  49. 49. 동형 그래프
  50. 50. 평면 그래프
  51. 51. 그래프의 표현</li></li></ul><li>두개의 그래프가 서로 시각적인 모양은 다르지만<br />노드와아크를 구성하는 구조가 같은 경우가 있다<br />e1<br />2<br />3<br />2<br />3<br />a2<br />e2<br />a2<br />a1<br />a1<br />a<br />b<br />d<br />c<br />4<br />4<br />1<br />1<br />노드와아크에 어떤 함수를 적용했을때<br />아래와 같이 변한다고 가정하면<br /> f1 : 1 -> a f2 : a1-> e2<br /> 2 -> c a2-> e1<br /> 3 -> b<br /> 4 -> d<br />아크a1는 끝점 1 - 3 를 가지고<br />이와 대응하는 <br />아크e2는 끝점 a – b 를 가지고<br />노드a, b 는 결국 노드 1, 3 과 일치한다<br />
  52. 52. Definition<br />동형 그래프<br />isomorphic graph<br />다음의 조건을 만족하면 두 그래프<br /> (N1, A1, g1) 와 (N2, A2, g2) 는 동형이다<br /><ul><li>각 아크a∈ A1 에 대하여 g1 (a) = x - y 와 같은 </li></ul>전단사 함수 f1 : N1-> N2와 f2 : A1-> A2가 존재하면<br /> g2 [f2 (a)] = f1 (x) – f1 (y) 이 존재한다.<br />- 이에 대한 역도 또한 성립한다<br />
  53. 53. e1<br />2<br />3<br />2<br />3<br />a2<br />e2<br />a2<br />a1<br />a1<br />a<br />b<br />d<br />c<br />4<br />4<br />1<br />1<br /> f1 : 1 -> a f2 : a1-> e2<br /> 2 -> c a2-> e1<br /> 3 -> b<br /> 4 -> d<br /><ul><li>각 아크a∈ A1 에 대하여 g1 (a) = x - y 와 같은 </li></ul>전단사 함수 f1 : N1-> N2와 f2 : A1-> A2가 존재하면<br /> g2 [f2 (a)] = f1 (x) – f1 (y) 이 존재한다.<br />g1 (a1) = 1 – 3<br />g2 [f2 (a1)] = f1 (1) – f1 (3) = a - b<br />f2 (a1) = e2<br />g2 [f2 (a1)] = g2 [e2]<br />g2 [e2] = a - b<br />
  54. 54. Graph<br /><ul><li>그래프의 정의
  55. 55. 그래프의 응용
  56. 56. 그래프의 용어
  57. 57. 동형 그래프
  58. 58. 평면 그래프
  59. 59. 그래프의 표현</li></li></ul><li>평면 그래프<br />planar graph<br />그래프를 종이와 같은 평면 위에 그릴수 있는 경우<br /> - 아크들은 반드시 평면 위에서 서로 교차하지 않아야한다<br /> - 즉 아크들이 교차되는 지점은 반드시 노드를 통해서만 가능<br />2<br />3<br />4<br />1<br />
  60. 60. Example 5.13<br />K5는 노드 5개를 갖는 단순, 완전그래프<br />K5 가 평면그래프인가?<br />1<br />K5를 평면위에 그리기 위해서는 <br />아크들을 서로 교차하지않고 모든 노드들이<br />서로 다 인접할수 있도록 해야한다<br />2<br />5<br /><ul><li>노드2,4 연결할수없음
  61. 61. 노드1, 4 연결할수없음</li></ul>3<br />4<br /><ul><li>노드1,3 연결
  62. 62. 노드1, 4 연결 </li></ul>1<br />1<br />5<br />2<br />2<br />5<br /><ul><li>노드2,5 연결
  63. 63. 노드2, 4 연결 </li></ul>3<br />4<br />3<br />4<br />
  64. 64. Definition<br />Euler 공식<br />그래프가 r 개의 영역들, n 개의 노드들, a 개의 아크들로 되어있다고 할때<br /> n – a + r = 2<br />준동형 그래프homeomorphic graph<br />두개의 그래프를 어떤 그래프의 단일 아크 x-y 를 <br />새로운 아크인xv-vy들로 연속적으로 대체하면서 각각 얻을수있는 경우<br />이 두 그래프를 준동형 이라 한다<br />Kuratowshki정리<br />만약 그래프가 K5혹은 K3,3와 준동형인 부분 그래프를 포함하고 있으면<br />이 그래프는 비평면 그래프이다<br />
  65. 65. Graph<br /><ul><li>그래프의 정의
  66. 66. 그래프의 응용
  67. 67. 그래프의 용어
  68. 68. 동형 그래프
  69. 69. 동형 그래프
  70. 70. 그래프의 표현</li></li></ul><li>그래프에 대한 컴퓨터 표현방식<br />인접 행렬<br />adjacency matrix<br />]<br />A = [<br />1<br />1 1 - -<br />1 0 - -<br />- - 0 -<br />- - - 0<br />2<br />3<br />4<br />행렬 원소 (1,1) 의 값 1 은 <br />노드1 에서의 루프를 나타낸다<br />모든 무방향성 그래프의 인접행렬은 대칭적이다.<br />
  71. 71. 그래프에 대한 컴퓨터 표현방식<br />인접 리스트<br />adjacency list<br />즉 Linked list<br />1<br />1<br />2<br />4 •<br />1<br />1<br />3 •<br />2<br />2<br />3<br />3<br />4<br />4 •<br />2<br />4<br />1<br />3<br />3 •<br />4<br />
  72. 72. Tree<br /><ul><li>트리의 용어
  73. 73. 트리의 응용
  74. 74. 이진트리의 표현
  75. 75. 트리 순회 알고리즘
  76. 76. 트리에 대한 결과</li></li></ul><li>Definition<br />트리Tree<br />트리는root 라고 지정된 노드를 갖는<br />비순환(acyclic), 연결(connected) 그래프이다<br />r<br />r<br />
  77. 77. 부모parent<br />부분 트리subtree<br />자식child<br />r<br />리프leaf<br />자식노드를갖고있지 않는 노드<br />노드의 깊이depth of node<br />루트에서 그 노드까지의 경로의 길이<br />
  78. 78. 완전 이진트리complete binary tree<br />각 노드의 왼쪽오른쪽에 차례로 번호를 부여하면서<br />중간에 끊기는 일이 없는 트리<br />이진트리binary tree<br />각 노드가 반드시 두개 이하의 <br />자식노드를 가지는 트리<br />r<br />r<br />1<br />2<br />3<br />5<br />4<br />포화 이진트리full binary tree<br />모든 내부 노드가두개의자식노드를 가지며<br />모든 leaf 노드는 같은 depth 를 갖는 binary tree<br />
  79. 79. Tree<br /><ul><li>트리의 용어
  80. 80. 트리의 응용
  81. 81. 이진트리의 표현
  82. 82. 트리 순회 알고리즘
  83. 83. 트리에 대한 결과</li></li></ul><li>Tree<br /><ul><li>트리의 용어
  84. 84. 트리의 응용
  85. 85. 이진트리의 표현
  86. 86. 트리 순회 알고리즘
  87. 87. 트리에 대한 결과</li></li></ul><li>Example 5.23<br />1<br />2<br />3<br />5<br />4<br />1<br />2<br />3<br />1<br />4<br />5<br />2<br />0<br />6<br />3<br />2<br />3 •<br />4<br />0<br />0<br />0<br />0<br />5<br />4 • •<br />5 • •<br />6 • •<br />0<br />0<br />6<br />연결 리스트<br />배열<br />
  88. 88. Tree<br /><ul><li>트리의 용어
  89. 89. 트리의 응용
  90. 90. 이진트리의 표현
  91. 91. 트리 순회 알고리즘
  92. 92. 트리에 대한 결과</li></li></ul><li>부분트리들을recursive 하게 순회하는 알고리즘<br />r<br />r1<br />…<br />rt<br />r2<br />T1<br />Tt<br />T2<br />전위preorder<br />후위postorder<br />중위inorder<br />
  93. 93. Example 5.24,25<br />a<br />전위preorder <br />루트 – 왼쪽 - 오른쪽<br /> a b d e c f h i g<br />c<br />b<br />중위inorder<br /> 왼쪽 - 루트 - 오른쪽<br />d b e a h f I c g<br />d<br />g<br />f<br />e<br />후위postorder<br /> 왼쪽 – 오른쪽 - 루트<br />d e b h I f g c a<br />i<br />h<br />
  94. 94. Example 5.27<br />*<br />전위prefix notation <br />* + 2 x 4 -> *(2+x)4 -> (2+x)*4<br />4<br />+<br />중위infix notation<br />(2+x)*4<br />2<br />x<br />후위postfix notation <br />2x+4* -> (2+x)4* -> (2+x)*4<br />
  95. 95. Tree<br /><ul><li>트리의 용어
  96. 96. 트리의 응용
  97. 97. 이진트리의 표현
  98. 98. 트리 순회 알고리즘</li></ul>트리에 대한 결과<br />
  99. 99. 감사합니다<br />

×