定期宣伝

弊社はエンジニアを熱烈募集しています. 以下から気軽にカジュアル面談申し込んでください. 就職・転職を考えている知人にも積極的に宣伝してください.

Spir | Smart scheduling calendar

この勉強会の宣伝もお願いします. 参加者が増えるほど質や頻度が上がると思います. #Acompany競プロ勉強会 で実況や感想,質問を呟くなども.

Slido

以下のリンクから匿名発言が出来ます. 質問だけじゃなく実況なども気軽にしてください.

Join Slido: Enter #code to vote and ask questions

QR Code for Acompany 競プロ勉強会21.png

無向グラフの Lowlink(復習)

240730_lowlink

  1. dfs で木を作り、通りがけ順に番号を振る。
  2. 各辺に対して dfs で初めてその辺を見るときの向きで向き付けする
  3. 各頂点 $v$ に対して、木以外の辺を高々一回通って到達出来る最小の番号を $\mathrm{low}(v)$ とする

名称未設定ファイル-ページ1のコピーのコピー.drawio (3).png

lowlink を使うと二重辺連結成分分解・二重頂点連結成分分解が線形時間で求められた。

SCC

SCC の定義

有向グラフにおいて、任意の2頂点 $u,v$ に対して双方向に有向パスが存在する時、そのグラフは強連結であると呼ぶ。

一般に有向グラフが与えられたとき、頂点集合を強連結で極大な部分集合の集合に分割することが出来る。 このような分割は一意的に定まり、分割後の部分集合族のことを **SCC(Strongly Connected Components:強連結成分)**と呼ぶ。 (分割後のある部分集合のことを指したり、強連結成分を求めるアルゴリズムのことを指して SCC と呼ぶことも多い)

有向グラフ

有向グラフ

7個の強連結成分

7個の強連結成分

あるいは、 有向グラフが与えられた時、頂点上の同値関係**「(そのグラフにおいて)双方向に有向パスが存在する」**が定まり、その同値類を SCC と呼ぶ のように考えることも出来る。

SCC を求めるアルゴリズム