投稿

5月, 2022の投稿を表示しています

ダイクストラ法

イメージ
ダイクストラ法とは  グラフのすべての頂点に対して、ある頂点からの最短距離を求めるアルゴリズム。  辺のコスト (距離) は非負である必要がある。  例えば、こんなグラフから、 このように、頂点 0 からの距離 d を求められる。 ダイクストラ法のアルゴリズム スタート地点の頂点からその頂点自身への距離は 0 で最短距離として確定し、その頂点を u とおく。それ以外の頂点の距離は無限大としておく。 すべての頂点への最短距離が確定するまで、以下の操作を繰り返す。 u からの辺がある、すべての頂点 v の距離を、[v の距離] と [(u の距離) + (辺 (u → v))] のうち小さいほうに更新する。 確定していない頂点のうち、距離が最も小さいものを最短距離として確定し、その頂点を u とおく。 例と証明っぽいやつ ダイクストラ法の動き (GIF) 説明  スタート地点を頂点 0 とする。  辺のコストは 0 以上なので、スタート地点の最短距離は 0 で確定する。  頂点 0 から 1 ステップ (1 回の移動) で行ける頂点 (頂点 1、頂点 2) の距離を更新する。  (頂点 1: (初期値: ∞) → (頂点 0 の最短距離: 0) + (頂点 0 から 頂点 1 への辺のコスト: 2) = 2)  (頂点 2: ∞ → 0 + 7)  この時点で、確定していない頂点 1 ~ 4 のうち、距離が最小の頂点、頂点 1 を最短距離と確定できる。  ( 証明的なやつ: 今、頂点 0 から 1 ステップで行ける経路の探索をした。それ以外で、頂点 1 にたどり着くには、頂点 0 から 2 ステップ以上移動しなくてはならない。頂点 0 から 1 ステップ移動するときの最短距離は、頂点 1 に行く場合で、距離は 2 である。辺のコストは非負なので、2 ステップ移動する距離は 2 以上だとわかる。なので、頂点 1 の距離 2 は最短距離であるとわかる。)  次は、新たに確定した頂点、頂点 1 から 1 ステップで行ける頂点の距離を更新する。  (頂点 2: 7 ≦ 2 + 6 なので変化なし、頂点 3: ∞ → 2 + 2)  この時点で、確定していない頂点 2 ~ 4 のうち、距離が最小の頂点、頂点 3 を最短距離と確定できる。  ( 証明...

とりあえず VSCode を入れたい (C++, gcc, Windows)

イメージ
 競プロ用に VSCode を入れたのでメモ。 Visual Studio Code (VSCode) と gcc のインストール VSCode のインストール  まず、VSCode のサイトから [Windows] をクリックでダウンロード ([Windows] と User Installer [64 bit] は同じ) (全ユーザーにインストールしたいなら System Installer)。 ・VSCode のダウンロードリンク  (  https://code.visualstudio.com/download  ) VSCodeUserSetup-x64-X.XX.X.exe (X.XX.X はバージョン) がダウンロードされるので実行。使用許諾契約書に同意すると、追加要素を選択する画面になる。 ・デスクトップ上にアイコンを作成する  デスクトップから VSCode を起動できるようになる。 ・エクスプローラーのファイル コンテキスト メニューに [Code で開く] アクションを追加する  ファイルを右クリックすると [Code で開く] から VSCode でファイルを開ける。 ・エクスプローラーのディレクトリ コンテキスト メニューに [Code で開く] アクションを追加する  フォルダを右クリックすると [Code で開く] から VSCode でフォルダを開ける。 ・サポートされているファイルの種類のエディターとして、Code を登録する  ファイルを右クリックすると出る [プログラムから開く] に [Visual Studio Code] が追加される (そのファイルの種類に VSCode が対応している場合)。 ・PATH への追加  Code コマンドで VSCode を開けるようになる。 で、[次へ] -> [インストール] を押してインストール完了。 gcc のインストール MSYS2 のインストール  いろいろインストールするのに便利な MSYS2 を入れておきたい。msys2-x86_64-XXXXXXXX.exe (XXXXXXXX はバージョン) をダウンロード。 ・MSYS2 のダウンロードリンク (普通はこっち)  (  https://www.msys2.org/ ) ・バージョン違...