heabiの日記

セキュリティを学びたいです。

最短路問題を解く計算機を作った

1. 計算機を見る

https://heabiside.github.io/calculators/

ここから計算機を使うことができます。JSはその場しのぎ的に書いたのでコードはきれいじゃないです。

 

2. これはなに

ダイクストラ法とベルマンフォード法で最短路問題を解きます。

下の写真はベルマンフォード法で次のグラフの最短路問題(sスタート)を解いたときの見た目です。ループごとに最短路が更新される様子を表に出力しています。

 

f:id:heabi:20211229124312p:plain

このグラフに対する最短路問題を解くと下の写真のようになる

 

 

 

 

f:id:heabi:20211229124423p:plain

上のグラフに対する出力

 

3. 実装方針

簡単に書きます。実装で使ったアルゴリズムの大まかなコードは1のところのリンクにアクセスすれば見れます。

ベルマンフォードに関して言えば、JSでベルマンフォードを計算して、各ループごとにhtmlとして表にして出力しているだけです。

ダイクストラ法も似たような感じで実装しています。

ちなみにこの計算機のところのグラフはdotを使って作成しています。(テキストを書くだけでグラフを自動出力してくれて便利です。)

 

以上です。ここまで読んでいただきありがとうございます。