Cogito Ergo Sum.

我思う故に我あり

トポロジカルソート

 ITエンジニアのための転職・就職支援サービスである「paiza」が提供している、プログラミング教育コンテンツ「paizaラーニング」中の「レベルアップ問題集」に「トポロジカルソートメニュー」が追加された。

 「トポロジカルソート」…、そんなソート聞いたこともなかったのだが、中身を見てみて「なるほどな」と。paizaの「スキルチェック」問題だとAランク問題やSランク問題で、「AtCoder」の「Atcoder Beginner Contest」なんかだとC問題やD問題辺りから、この「トポロジカルソート」が必要になる場合があるのだ。これ、「トポロジカルソート」って言うのか。

 ネットワーク構造やツリー構造を扱うグラフ系の問題で「入次数」や「出次数」がゼロのノードから順番に処理していく必要がある場合があり、まさにその順番を求めるのが「トポロジカルソート」。「トポロジカルソート」という概念(用語)そのものを知らなくとも、そのテの問題を解くこと自体は出来る。出来るのだが…、やはり知っていた方が良いだろうと思う。

 僕の場合は、「これ、『トポロジカルソート』って言うのか!」と知ったことによって、それだけで頭の中が多少整理されたような気がした。頭の中の未整理だった領域の抽象化・一般化が一段階進んだ、と言うか。

 あと、ついでに「DAG(Directed Acyclic Graph)」=「有向非巡回グラフ」という概念(用語)を知ることが出来たのも良かった。「DAG・メモ化再帰メニュー」というのもあるのだけど、「DAG」が何の略なのか説明されておらず、「???」状態だったので…(笑)。