์ดํƒœํ™
ํ™'story
์ดํƒœํ™
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (171)
    • TW (39)
    • AI (47)
      • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ (10)
      • Kaggle (2)
      • Machine Learning (26)
      • Computer Vision (0)
      • Deep Learning (0)
      • ROS2 (7)
    • Computer Science (29)
      • Data Structure (0)
      • Algorithm (18)
      • Computer Architecture (5)
      • SOLID (0)
      • System Programing (6)
    • LOLPAGO (10)
      • ํ”„๋ก ํŠธ์—”๋“œ (10)
      • ๋ฐฑ์—”๋“œ (0)
    • BAEKJOON (2)
    • React (5)
    • ์–ธ์–ด (8)
      • C++ (8)
    • GIT (0)
    • MOGAKCO (19)
    • ๋ฏธ๊ตญ ์—ฌํ–‰๊ธฐ (3)
    • etc. (7)
      • Blog (2)
      • ์ฝœ๋ผํ†ค (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • kaggle
  • react
  • ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•
  • C++
  • LOLPAGO
  • ML
  • ๋จธ์‹ ๋Ÿฌ๋‹
  • pytorch
  • baekjoon
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • Ai
  • ๋ฐฑ์ค€
  • algorithm
  • computer architecture
  • ๊ธฐ๊ณ„ํ•™์Šต
  • NLP
  • ๋”ฅ๋Ÿฌ๋‹
  • tw
  • computerscience
  • ROS2

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
์ดํƒœํ™

ํ™'story

[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(3) - DFS(2), Biconnected Graph
Computer Science/Algorithm

[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(3) - DFS(2), Biconnected Graph

2022. 10. 13. 04:21

๐Ÿค” ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ทธ๋ž˜ํ”„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ•์ด๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜ํ”„๋Š” ์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ์‹œ๊ฐ„์€ ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด DFS์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์•Œ์•„๋ณด๊ณ  Biconnected Graph์—์„œ Articulation Point๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ง‘์ค‘์ ์œผ๋กœ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿ‘‰ ์ด์ „ ํฌ์ŠคํŒ…

๋”๋ณด๊ธฐ

2022.10.04 - [Computer Science/Algorithm] - [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด

 

[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด

๐Ÿค” ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ•์ด๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์Šค

2t-hong.tistory.com

 

2022.10.08 - [Computer Science/Algorithm] - [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)

 

[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)

๐Ÿค”๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ž˜ํ”„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ•์ด๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…

2t-hong.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Connected graph G์— ๋Œ€ํ•œ ๋ฌธ์ œ

 

โœ๏ธ DFS tree์˜ ์„ฑ์งˆ

 

Problem 1 : G์˜ ๋ชจ๋“  articulation point ์ฐพ๊ธฐ.

Problem 2 : Problem 1์„ ์ด์šฉํ•˜์—ฌ G์˜ bioconnected component์ฐพ๊ธฐ

 

 

 

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DFS tree์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—  Articulation Point์™€ ๊ด€๋ จ๋œ DFS tree์˜ ์„ฑ์งˆ์„ ๋จผ์ € ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

โœ๏ธ Lemma 1 

DFS tree ์˜ root node ์˜ child node๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด root node๋Š” articulation point์ด๋ฉฐ, ์—ญ๋„ ์„ฑ๋ฆฝํ•œ๋‹ค.

 

 

 

 

 

์ฆ๋ช… 1

 

์ด๋•Œ ๋งŒ์•ฝ $(r, a)์™€ (r, b)$๋ฅผ ํฌํ•จํ•˜๋Š” cycle์ด ์กด์žฌํ•˜๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” back edge๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋ชจ์ˆœ์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

์ฆ๋ช… 2

 

 

 

 

 

 

 

โœ๏ธ Lemma 2

DFS tree์—์„œ (i) s ๊ฐ€ v์˜ child node์ด๊ณ  (ii) s์˜ descendant(s ํฌํ•จ)๊ณผ v์˜ proper ancestor(v ๋ฏธํฌํ•จ)๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” back edge๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋‘ non-root node v, s๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ v๋Š” articulation point์ด๋‹ค.

 

 

 

 

 

์ฆ๋ช… 1

 

๋งŒ์•ฝ ์œ„ ์กฐ๊ฑด์„ ํ•ด๋‹นํ•˜๋Š” node s๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด v๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด s์˜ subtree์ƒ์˜ ์–ด๋–ค node๋„ ํ•ด๋‹น node ์—์„œ v์˜ proper ancestor๋กœ ๊ฐ€๋Š” path๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ v๋Š” articulation point ์ž…๋‹ˆ๋‹ค.

 

ํ•ด๋‹น path๊ฐ€ ์กด์žฌํ•˜๋ ค๋ฉด s์—์„œ v์˜ proper ancestor๋กœ ๊ฐ€๋Š” back edge๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ v๋Š” articulation point ์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

์ฆ๋ช… 2

 

 

 

 

 

โœ๏ธ Lemma 3

DFS tree ์˜ leaf node๋Š” articulation point ๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

 

 

 

 

์ฆ๋ช…

Leaf node๋Š” child node๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— node๋ฅผ ์ œ๊ฑฐํ•ด๋„ ๋‚˜๋จธ์ง€๋Š” ์—ฌ์ „ํžˆ tree edge ๋งŒ์œผ๋กœ tree ๊ฐ€ ๋˜๋ฉฐ, tree์˜ ์ •์˜์— ์˜ํ•ด ํ•ด๋‹น ๊ทธ๋ž˜ํ”„๋Š” ์—ฌ์ „ํžˆ connected ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

์˜ˆ์ œ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ articulation point์™€ biconnected component๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

๐Ÿ”Ž Problem 1 

Connected Graph G๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ G์˜ ๋ชจ๋“  articulation point ์ฐพ๊ธฐ

 

 

โœ๏ธ Solution 1.

Vertex๋ฅผ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•˜๋ฉด์„œ DFS๋ฅผ ์ด์šฉํ•˜์—ฌ connectivity check๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

Vertex v๋ฅผ ์ œ๊ฑฐํ•œ ๋’ค G๊ฐ€ disconnected์ด๋ฉด v๋Š” articulation point์ž…๋‹ˆ๋‹ค.

 

์ด๋ฅผ ์ˆ˜๋„ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

for each vetex v:

	remove v;
    test resulting graph for connectivity;
    put back v;

 

 

ํ•ด๋‹น ์ฝ”๋“œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” $O(n(n + m))$์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

โœ๏ธ Solution 2.

 

Connected Graph G๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™์€ Tree ํ˜•ํƒœ์˜ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ์œ„์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ Articulation Point๋Š” Node 2์™€ Node 6์ž…๋‹ˆ๋‹ค.

 

์ด๋Š” DFS Tree ์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•˜์—ฌ Articulation Point๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

์ด์œ 

Node 2 : Lemma1์— ์˜ํ•ด Child node๊ฐ€ ๋‘ ๊ฐœ ์ด๋ฏ€๋กœ articulation point ์ž…๋‹ˆ๋‹ค.

 

Node 6: Lemma2์— ์˜ํ•ด Node 6์˜ child Node์ธ Node 7์˜ descendant๋กœ ๋ถ€ํ„ฐ Node 6์˜ proper ancestor๋กœ์˜ back edge๊ฐ€ ์—†์œผ๋ฏ€๋กœ articulation point ์ž…๋‹ˆ๋‹ค.

 

 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์ ์ธ ์ฐจ์›์—์„œ ์ ‘๊ทผํ•˜๊ธฐ

์œ„์˜ Tree๊ทธ๋ž˜ํ”„๋ฅผ DFS tree์˜ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ •์ ์„ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•˜๋ฉด์„œ DFS๋ฅผ ์ด์šฉํ•ด ์—ฐ๊ฒฐ ๋˜์–ด์žˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.

 

DFS tree์˜ ๊ฐ node v์— ๋Œ€ํ•ด, v์˜ ์–ด๋–ค descendant u (u = v์ผ ์ˆ˜ ์žˆ์Œ)์™€ incidentํ•œ back edge (u, w)๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด

 

$$low(v) = min(pre(v), pre(w))$$

 

๋กœ ์ •์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

KEY LEMMA

Non Root Node v๊ฐ€ low(u) ≥ pre(v)๋ฅผ ๋งŒ์กฑํ•˜๋Š” child node u๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, v๋Š” articulation point ์ด๋ฉฐ, ์—ญ๋„ ์„ฑ๋ฆฝํ•œ๋‹ค.



KEY LEMMA ์ฆ๋ช…

low(u) ≥ pre(v)๋ผ ํ•˜์ž.(u๋Š” v์˜ child node)

v์˜ proper ancestor ๋Š” v๋ณด๋‹ค pre-order number๊ฐ€ ํ•ญ์ƒ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฏ€๋กœ child node u์—์„œ v์˜ proper ancestor๋กœ์˜ backedge๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด๋Š” " Lemma 2 " ์— ์˜ํ•ด v๋Š” articulation point ์ด๋‹ค.


์•„๋ž˜์˜ ๊ทธ๋ฆผ์—์„œ Node 6์˜ ๊ฒฝ์šฐ child node 7์˜ low๋Š” 8์ด๋ฏ€๋กœ low(7) ≥ pre(6)์„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.









์—ญ๋„ ์„ฑ๋ฆฝํ•จ์„ ์ฆ๋ช…


 

 

 

 

 

 

 

 

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ฐ”ํƒ•์œผ๋กœ DFS tree๋ฅผ ์ด์šฉํ•˜์—ฌ articulation point๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ƒ๊ฐ์˜ ํ๋ฆ„์€ "DFS ๋ฅผ ํ•œ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๋ชจ๋“  articulation point๋“ค์„ returnํ•œ๋‹ค"์ž…๋‹ˆ๋‹ค.

 

 

 

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•„๋ž˜์˜ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

 

 


1. Root node๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•˜๋Š”๋ฐ child๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ ์žˆ๋Š”์ง€ ํ™•์ธ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์‰ฝ๊ฒŒ ํŒ๋ณ„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


2. Non root node์˜ ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

    i) DFS ์—์„œ low๊ฐ’์„ ๊ณ„์† updateํ•ด ๋‚˜๊ฐ€๋ฉฐ, low(v)๊ฐ’์€ postvisit(v) ์‹œ์ ์—์„œ ์™„์ „ํžˆ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
    ii) ๋”ฐ๋ผ์„œ vertex v์˜ child node u์— ๋Œ€ํ•œ explore๊ฐ€ ๋๋‚œ ๋’ค, pre(v)์™€ low(u)๋ฅผ ๋น„๊ตํ•˜์—ฌ, low(u) ≥ pre(v)์ด๋ฉด 
        v๋Š” articulation point์ž…๋‹ˆ๋‹ค.

 

DFS ๋„์ค‘ low(v)๋Š” ์–ด๋–ป๊ฒŒ update ํ•˜๋‚˜์š”?

 

์ดˆ๊ธฐ๊ฐ’์€ pre(v) ← previsit(v) ๋•Œ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

 

Back edge(v, u)๊ฐ€ ์žˆ๋‹ค๋ฉด low(v) = min (low(v), pre(u)) ๋กœ update ๋ฉ๋‹ˆ๋‹ค.

 

v์˜ child u์— ๋Œ€ํ•œ explore๊ฐ€ ๋๋‚˜๋ฉด low(v) = min (low(v), low(u)) ๋กœ updateํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

์ด๋ฅผ ์ˆ˜๋„์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ˆ˜๋„์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

โœ๏ธ ์‹œ๊ฐ„ ๋ณต์žก๋„

DFS๋ฅผ ์ด์šฉํ•˜์—ฌ articulation point๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š”

 

1) DFS๋ฅผ ํ†ตํ•ด low, pre, post๊ฐ’์„ ์ฐพ์œผ๋ฉฐ tree๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์— $O(n+m)$

2) ๋ชจ๋“  ์ •์ ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ low์™€ pre๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๋ฐ์— $O(n)$

 

$$O(n + m)$$

 

์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Problem 2

Problem 1์„ ์ด์šฉํ•˜์—ฌ G์˜ biconnected component ์ฐพ๊ธฐ

 

 

์—ฌ๊ธฐ์„œ Graph๋Š” connected ๋ผ ๊ฐ€์ •ํ•˜๋ฉฐ, ์•„๋‹Œ ๊ฒฝ์šฐ graph์˜ ๊ฐ connected component์— ๋Œ€ํ•ด biconnected component๋ฅผ c์ฐพ์Šต๋‹ˆ๋‹ค.

 

Biconnected component๋Š” edge๋ฅผ partitioningํ•˜๋ฏ€๋กœ biconnected component๋ฅผ ํ•˜๋‚˜ return ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น component์— ์†ํ•ด์žˆ๋Š” edge๋“ค์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๋˜ํ•œ DFS๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

 

DFS๋ฅผ ํ•˜๋ฉด์„œ ๊ฑฐ์ณ๊ฐ€๋Š” edge๋ฅผ ์ €์žฅํ•˜๋Š” stack์„ ์ด์šฉํ•˜์—ฌ biconnected component๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

Vertex v๋ฅผ exploreํ•˜๋ฉด์„œ edge(v, u)๋ฅผ check ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น edge๋ฅผ stack์— pushํ•ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ v๋ฅผ explore ํ•˜๋ฉด์„œ v์˜ child node u์— ์˜ํ•ด v๊ฐ€ articulation point์ž„์ด ๋ฐํ˜€์ง€๊ฑฐ๋‚˜(low(u) ≥ pre(v)) root node์— ๋Œ€ํ•œ explore๊ฐ€ ๋๋‚˜๋ฉด edge(u, v)๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ stack ์ƒ์˜ ๋ชจ๋“  edge๋“ค์„ popํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ํ•˜๋‚˜์˜ biconnected component๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

Articulation point๋ฅผ ์ฐพ์„ ๋•Œ์™€๋Š” ๋‹ฌ๋ฆฌ root node case๋ฅผ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•ด์ค„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

 

 

์ด๋ฅผ ์ˆ˜๋„์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

ํ•ด๋‹น ์ˆ˜๋„์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ž„์˜๋กœ ์ง€์ •ํ•œ v๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ DFS๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

articulation point๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜์ง€๋งŒ stack์„ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ vertex์˜ ๊ฐ’์„ stack์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

articulation์„ ์ฐพ๊ฒŒ ๋˜๋ฉด low(u)์™€ pre(v)๋ฅผ ๋น„๊ตํ•˜์—ฌ stack์— ์ €์žฅ๋œ ๊ฐ’๋“ค์„ popํ•ด์ค๋‹ˆ๋‹ค.

 

๊ทธ๋•Œ pop๋˜์–ด์ ธ ๋‚˜์˜จ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์ด biconnected component์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

โœ๏ธ ์‹œ๊ฐ„๋ณต์žก๋„

1) DFS๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐ์— $O(n + m)$

2) push์™€ pop์„ ๊ฐ m๋ฒˆ ์ง„ํ–‰ํ•˜์—ฌ $O(m)$

 

ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š”

 

$$O(n + m)$$

 

์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š”Directed Graph์—์„œ DFS๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

'Computer Science > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Algorithm] ๋ถ„ํ• ์ •๋ณต(4) - Selection  (0) 2022.10.20
[Algorithm] ๋ถ„ํ• ์ •๋ณต(3) - Matrix Multiplication  (0) 2022.10.20
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)  (0) 2022.10.08
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด  (0) 2022.10.04
[Algorithm] ๋ถ„ํ• ์ •๋ณต(5) - Median of Medians  (0) 2022.10.04
    'Computer Science/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(4) - Selection
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(3) - Matrix Multiplication
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด
    ์ดํƒœํ™
    ์ดํƒœํ™
    ๊ณต๋ถ€ํ•˜์ž ํƒœํ™์•„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”