「最小全域木の生成-クラスカル算法-」(中級):OCaml演習 -71問目-
無向グラフについての練習問題と答案です。問題は、OCaml公式ページのものを使いました。答案の作成時間は、約三日でした。
問題71.
所与の標識付きグラフ(labeled graph)における最小全域木(minimum spaning tree)を求める関数ms_treeを書け。
定義と用語
標識付きグラフ:辺に重みが付けられたグラフ(記事では重付きグラフと呼びます)
最小全域木:辺の重みの総和が最小になる極大木
極大木: 全ての節を含む木
木: 閉路を持たない連結グラフ
連結グラフ: 孤立節を持たないグラフ
孤立節:いずれの節とも隣接していない節
答案
本問の解き方
前回の記事で予告したように、今回はクラスカルの算法を使います。
算法が決まってしまえば、後はその通りに実装するだけなので小学生でもできるでしょう…でしょう…
イキって偉そうなことを書きましたが、グラフ項形式のままだと、どうしても閉路の判断を実装できませんでした。
しかたがないので、隣接リスト形式に変換、再変換しています。
つまり、私の実力は小学生以下と言うことですね…
コード
![](https://assets.st-note.com/img/1738660400-tVi3OUkC4jspmbozcla8H2ML.png?width=1200)
感想
前回の記事のビュー数が一週間で「4」でした。読まれた数ではなく、インプレッションの数が「4」です。
さすがに、この状況だと記事を書く意味が全くありません。
そこで、Zennに切り替えることにしました。
Zennには技術レベルの高い記事が多いので、(たとえ自身の記事が読まれなくても)、他人の記事を読むだけで楽しめます。
正直、noteの上っ面だけのカスみたいな記事にはウンザリしていたので、良いキッカケになりました。
別にnoteを否定したい訳ではありません。
noteは、情弱向けに情報商材を売りつけるプラットフォームとしては優秀だと思います。
ただ、今の私には、バカたちを騙すための技術も能力も不足しています。
いつかアホどもをペテンにかける自信が付いたら、ぜひnoteに有料のゴミをまき散らしに戻りたいと思います。
古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。