気になる技術的なことについて少しずつ書いていけたらと思っております。2013-12-23【アルゴリズム】ワーシャルフロイドまた気づいたらこんな時間だ。まともな時間に書けるような生活習慣にしたいものだ。CreateJSの仕様に長い時間苦しんでおり、AquaTypographyの解説が出来ない(次までにバグが取れないようなら次の作品に行きます)なので今回は競技プログラミングをやっていた経験から便利なアルゴリズムを紹介する。ワーシャルフロイドとは?全ノードの最短経路をO(N^3)で実現出来る素晴らしいアルゴリズム。このアルゴリズムの特徴はなんと言っても数行で全てのノード間の最短経路が求められるところにある。d[k][j]);え、この数行で全てのノード間の最短経路が求まるの?とびっくりした方も多いと思います。はい、このコードでノード間の距離をしっかりと初期化していれば求まります。初期化も含めたコードだとこんな感じ。ダイクストラで最短経路探索)forループのi,j,kにはそれぞれ役割があり、i:接続元ノードj:接続先ノードk:中間ノードと、なっている。場合AノードからEノードを通してBノードにアクセスした場合、A->B間の距離が短くなっていれば更新するが、もちろんわざわざEノードを通さなくても、A->Bは既に1となっているのでこの結果は採択されない。今度はB->E->Cという経路を通ることで、B->E間の距離は2となり、現在の距離よりも小さいので更新する。これでB->Cの最適な距離が求まった。この結果を保持した状態で次はこのような例でやってみよう。5という距離が計算される。本来ならC->Aというパスは存在しないが、求められた最短経路をパスとして構成されるようになる。この繰り返しで結果的に全てのノード間のパスが構成され、最短経路が求まっている訳だ。簡単に覚えられるワーシャルフロイド法を覚えてみても損はない。中間ノードを順次変えながら全てのノードの組み合わせで最短距離が計算されるのだが、そのコードがあの数行のシンプルなコードに収まるのは考えた人の着眼点には敬意を表する。以上、アルゴリズム講座でした。React・Reduxの導入からサーバーサイドレンダリングによるUXの向上まで【書評】現場で役立つシステム設計の原則~変更を楽で安全にするオブジェクト指向の実践技法isucon9予選で赤い彗星になれず予選落ちしました月別アーカイブ参加グループ焼き肉ブログはてなブログをはじめよう!dorivenさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。