U E D R , A S I H C RSS

Data Structure/Graph


랜만 깨고! 료 구 리를 다.^^;


1. 기본 개념

  • Vertex( )
  • Edge( )
  • Directed Graph - Edge 는 그래
  • Undirected Graph - Edge 는 그래


2. 붓 그리기

  • 모든 Vertex Edge가
  • Vertex Edge 2개


3.

~cpp 
런 모 Undirected Graph가 다고 가다.
         2 
       / |
 0 - 1   |
     | /
     3       
 ..--;
V = { 0, 1, 2, 3 }
E = { (0,1), (1,3), (1,2), (2,3) }


3.1.

  • 2다. Adjacency Matrix(맞나?--;)
  • Undirected Graph
0 1 2 3
0 0 1 0 0
1 1 0 1 1
2 0 1 0 1
3 0 1 1 0
  • Vertex Edge가 때 그 곳 1로
  • LeftUpper -> RightLower 대각로 대

  • Directed Graph

~cpp 
         2 
       / |
 0 <- 1   |
      | /
      3  
 * ....  기가 ..--; 든 < Vertex1, Vertex2 >  다.
 * 만 Vertex1 -> Vertex2로 Edge가 다면 < Vertex1, Vertex2 > 렇게 단 말다.
 * 를 그릴 는 관면
 * <1,0>, <2,1>, <3,1>, <3,2>
  • 로 그리
0 1 2 3
0 0 0 0 0
1 1 0 0 0
2 0 1 0 0
3 0 1 1 0
  • | - 방로 Edge가 때 1로
  • LeftUpper -> RightLower 대각로 대

3.2.

  • Adjacency List(Linked List로 )
0 -> 1 X
1 -> 0 - -> 2 - -> 3 X
2 -> 1 - -> 3 X
3 -> 1 - -> 2 X

3.3. Graph Graph

  • 두 Vertex Edge가 ?
    • : θ(1) - 2 로 arxy 근 가능! 고로 배 단 말다.
    • : θ(n)
  • 는 메모리 ( n개 Vertices, e개 Edges )
    • : θ(n^2) - n X n 개 n^2 --;
    • : 로 된 그래 보면 Head Node 는 n개가 고 Head Node로부는 Node 는 2*e 개가 다. θ(n+e) 고로 리단 말다.
  • 더 : Weighted Graph
    • : 1대 Weight를 다.
    • : 드를 . (귀다)
  • 결론 : 뭐가 더 낳다 꼴 그런 만.. 구 과 같볼때 배 는게 것 같단 말다!


4. 기본

  • Traversal()
    • Depth First Search(리말로 깊 ) : 다는 말다. 가다가 막면 빽. (또는 귀). 로 돌난답다.
    • Breadth First Search(리말로 ) : Vertex를 다. 뺍다. Vertex를 다. 빼면 그 노드 결된 Vertex를 다. Queue가 게 되면 나는 다. 면 그게 바로 Level Order가 되는 것란 말.

5. 리(Minimum Cost Spanning Trees)

  • Weighted Graph , Vertex 막 Vertex까 그린다.

  • Kruskal's Algorithm
    • Edge들 Cost 로 Sort(것부)
    • Edge들 따라 다. 다가 Cycle 기면 그것 말고 다. 다 면 그만둔다.

  • Prim's Algorithm
    • Vertex를 다.
    • Edge 다.
    • 그 Edge Vertex Vertex Edge 다.
    • 반복다.

6. Shortest Paths


6.1. Single Source, All Destination( 모든 곳 Shortest Path를 구 단말다)

  • Dijkstra's Algorithm
    • 렬(Adjancey(??) Matrix)로 (그러까 2)
    • costi, j : i -> j 로 가는 Cost
    • 기값 : S = { V0 } V0 : Source,
    • S : { Shortest Path가 결된 Vertex들 } : 그러까 결되면 S 는다는 말다.
    • distw : v0 w까 Shortest Path 값. 단 w를 고는 S 는 Vertex들만 다.
    • 를 들

~cpp 
    Start Vertex : 4 -> S = {4}
    dist[3] = 1500         
    dist[5] = 250                3,5 는 4 결되 
    dist[others] = 무대
           -> dist[5]가 가 다. 5를 S 는다.
    ...

    ....
   
    반복다.
  • 고리 면,
    • for n-1 반복
      • dist 값 가 되는 Vertex u
      • S = S U {u}
      • dist값 : distw = min { distw, distu + costu, w }

6.2. All Pairs Shortest Path

  • Floyd - Warshall Algorithm
    • 2다. 그런데 고리 (-) Weight 다.(그리로 가면 된다는 말다.) 만 Negative Cycle 된다.
      • Negative Cycle? 그 돌면 - 가 나는길다.
    • A(-1)i, j다. 반복 다. n-1까 반복다.
    • A(k)i, j 라고 면 i j로 가는 Shortest Path 다.단 모든 길 0 ~ k vertex만 다.
    • A(k)i, j = min { A(k-1)i,j, A(k-1)i, k + A(k-1)k, j }

DataStructure

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:05
Processing time 0.0253 sec