C# Union-Find木の実装と応用例をやったので、今回はJavaScriptで同じようなことをやってみます。

まずはHTML部分を示します。

style.css

index.js

どの頂点間をつなぐ辺なのか?そのコストをEdgeクラスを定義して管理します。

グローバル変数と定数を示します。

index.js

find関数はUnion-Find木で使う関数です。iは要素の番号、arr[i]は各要素の親です。

ページが読み込まれたら初期値をセットします。頂点は6つあり、辺の情報として0番と1番をつなぐコストは9、2番と5番をつなぐコストは17…というふうに指定します。

イベントリスナを追加します。計算ボタンがクリックされたらUnion-Find木とクラスカルのアルゴリズムで最小全域木を求めます。クリアボタンがクリックされたらテキストエリアに入力されている文字列をすべて消去します。

calc関数は最小全域木を求める処理をおこないます。