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.0363 sec