<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://orsj-ml.org/orwiki/wiki/index.php?action=history&amp;feed=atom&amp;title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B</id>
	<title>《最短路問題》 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://orsj-ml.org/orwiki/wiki/index.php?action=history&amp;feed=atom&amp;title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B"/>
	<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;action=history"/>
	<updated>2026-04-19T19:03:35Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=7784&amp;oldid=prev</id>
		<title>2007年8月6日 (月) 17:03にKuwashimaによる</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=7784&amp;oldid=prev"/>
		<updated>2007-08-06T17:03:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年8月6日 (月) 17:03時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l32&quot; &gt;32行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;32行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[6] 久保，田村，松井 (編) 『応用数理計画ハンドブック』，朝倉書店，2002.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[6] 久保，田村，松井 (編) 『応用数理計画ハンドブック』，朝倉書店，2002.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:グラフ･ネットワーク|さいたんろもんだい]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kuwashima</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=7732&amp;oldid=prev</id>
		<title>2007年8月6日 (月) 14:57にTetsuyatominagaによる</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=7732&amp;oldid=prev"/>
		<updated>2007-08-06T14:57:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年8月6日 (月) 14:57時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot; &gt;5行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;5行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し, 最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ ([2]).  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し, 最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ ([2]).  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題に対して様々なアルゴリズムが提案されている ([1]). それらのアルゴリズムは, それが適用できるネットワークの種類から大きく二つに分類できる. 一つは, 負の長さの枝が存在しても適用できるアルゴリズムで, もう一つは, 負の長さの枝が存在しない時にのみ適用できるアルゴリズムである.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題に対して様々なアルゴリズムが提案されている ([1&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, 6&lt;/ins&gt;]). それらのアルゴリズムは, それが適用できるネットワークの種類から大きく二つに分類できる. 一つは, 負の長さの枝が存在しても適用できるアルゴリズムで, もう一つは, 負の長さの枝が存在しない時にのみ適用できるアルゴリズムである.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　前者のタイプのアルゴリズムとしては, L. R. Ford [5] とR. E. Bellman [3] によって独立に示された[[ベルマン・フォード法]](Bellman-Ford algorithm)（フォード・ベルマン法ともいう）が良く知られている. この方法では, &amp;lt;math&amp;gt;p(s)=0, p(v)=+\infty\, &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;(v\in V)\, &amp;lt;/math&amp;gt;なる点のラベル&amp;lt;math&amp;gt;p\, &amp;lt;/math&amp;gt;を用意して, 枝&amp;lt;math&amp;gt;(u,v)\, &amp;lt;/math&amp;gt;に対して&amp;lt;math&amp;gt;l(u,v)+p(u)&amp;lt;p(v)\, &amp;lt;/math&amp;gt;ならば&amp;lt;math&amp;gt;p(v)\leftarrow l(u,v)+p(u)\, &amp;lt;/math&amp;gt;とおく．ここで，すべての枝に対して１回ずつこの操作を行うことを基本操作として，ラベルの減少が起る限り高々&amp;lt;math&amp;gt;|V|\, &amp;lt;/math&amp;gt;回基本操作を繰り返す．基本操作が&amp;lt;math&amp;gt;|V|\, &amp;lt;/math&amp;gt;回繰り返された場合には負閉路が検出される．そうでない場合には, 終了時に得られたラベル&amp;lt;math&amp;gt;p\, &amp;lt;/math&amp;gt;によって，&amp;lt;math&amp;gt;l(u,v)+p(u)-p(v)=0\, &amp;lt;/math&amp;gt;を満たす枝の全体からなる&amp;lt;math&amp;gt;G\, &amp;lt;/math&amp;gt;の部分グラフ中の点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から各点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;への有向道が最短路を与える．なお，ベルマン・フォード法の変種で隣接２点間の距離行列のべき乗と同等と見做される行列演算によって理解されるアルゴリズムとして，べき乗法(power method)も知られている. これらは&amp;lt;math&amp;gt;{\rm O}(|V||A|)\, &amp;lt;/math&amp;gt;時間のアルゴリズムである．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　前者のタイプのアルゴリズムとしては, L. R. Ford [5] とR. E. Bellman [3] によって独立に示された[[ベルマン・フォード法]](Bellman-Ford algorithm)（フォード・ベルマン法ともいう）が良く知られている. この方法では, &amp;lt;math&amp;gt;p(s)=0, p(v)=+\infty\, &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;(v\in V)\, &amp;lt;/math&amp;gt;なる点のラベル&amp;lt;math&amp;gt;p\, &amp;lt;/math&amp;gt;を用意して, 枝&amp;lt;math&amp;gt;(u,v)\, &amp;lt;/math&amp;gt;に対して&amp;lt;math&amp;gt;l(u,v)+p(u)&amp;lt;p(v)\, &amp;lt;/math&amp;gt;ならば&amp;lt;math&amp;gt;p(v)\leftarrow l(u,v)+p(u)\, &amp;lt;/math&amp;gt;とおく．ここで，すべての枝に対して１回ずつこの操作を行うことを基本操作として，ラベルの減少が起る限り高々&amp;lt;math&amp;gt;|V|\, &amp;lt;/math&amp;gt;回基本操作を繰り返す．基本操作が&amp;lt;math&amp;gt;|V|\, &amp;lt;/math&amp;gt;回繰り返された場合には負閉路が検出される．そうでない場合には, 終了時に得られたラベル&amp;lt;math&amp;gt;p\, &amp;lt;/math&amp;gt;によって，&amp;lt;math&amp;gt;l(u,v)+p(u)-p(v)=0\, &amp;lt;/math&amp;gt;を満たす枝の全体からなる&amp;lt;math&amp;gt;G\, &amp;lt;/math&amp;gt;の部分グラフ中の点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から各点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;への有向道が最短路を与える．なお，ベルマン・フォード法の変種で隣接２点間の距離行列のべき乗と同等と見做される行列演算によって理解されるアルゴリズムとして，べき乗法(power method)も知られている. これらは&amp;lt;math&amp;gt;{\rm O}(|V||A|)\, &amp;lt;/math&amp;gt;時間のアルゴリズムである．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;11行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;11行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を&amp;lt;math&amp;gt;W\, &amp;lt;/math&amp;gt;とすると，&amp;lt;math&amp;gt;p(v)\, &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;(v\in W)\, &amp;lt;/math&amp;gt;は点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;への(最短)距離に等しく, &amp;lt;math&amp;gt;l(u,v)+p(u)-p(v)=0\, &amp;lt;/math&amp;gt;である枝&amp;lt;math&amp;gt;(u,v)\, &amp;lt;/math&amp;gt;を通って&amp;lt;math&amp;gt;W\, &amp;lt;/math&amp;gt;内において点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;へ行く有向道が点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;への最短路である．&amp;lt;math&amp;gt;W\, &amp;lt;/math&amp;gt;内で最後に(最短)距離が確定した点を&amp;lt;math&amp;gt;u\, &amp;lt;/math&amp;gt;として, &amp;lt;math&amp;gt;l(u,v)+p(u)&amp;lt;p(v)\, &amp;lt;/math&amp;gt;なる各点&amp;lt;math&amp;gt;v\in V-W\, &amp;lt;/math&amp;gt;に対し&amp;lt;math&amp;gt;p(v)\leftarrow l(u,v)+p(u)\, &amp;lt;/math&amp;gt;とおき，&amp;lt;math&amp;gt;V-W\, &amp;lt;/math&amp;gt;中でラベルの最小な点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;を見つけて&amp;lt;math&amp;gt;W\leftarrow W\cup\{v\}\, &amp;lt;/math&amp;gt;とおく．初期には&amp;lt;math&amp;gt;W=\{s\}\, &amp;lt;/math&amp;gt;である．ダイクストラ法は&amp;lt;math&amp;gt;{\rm O}(|A|+|V|\log|V|)\, &amp;lt;/math&amp;gt;時間のアルゴリズムとして実現可能である．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を&amp;lt;math&amp;gt;W\, &amp;lt;/math&amp;gt;とすると，&amp;lt;math&amp;gt;p(v)\, &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;(v\in W)\, &amp;lt;/math&amp;gt;は点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;への(最短)距離に等しく, &amp;lt;math&amp;gt;l(u,v)+p(u)-p(v)=0\, &amp;lt;/math&amp;gt;である枝&amp;lt;math&amp;gt;(u,v)\, &amp;lt;/math&amp;gt;を通って&amp;lt;math&amp;gt;W\, &amp;lt;/math&amp;gt;内において点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;へ行く有向道が点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;への最短路である．&amp;lt;math&amp;gt;W\, &amp;lt;/math&amp;gt;内で最後に(最短)距離が確定した点を&amp;lt;math&amp;gt;u\, &amp;lt;/math&amp;gt;として, &amp;lt;math&amp;gt;l(u,v)+p(u)&amp;lt;p(v)\, &amp;lt;/math&amp;gt;なる各点&amp;lt;math&amp;gt;v\in V-W\, &amp;lt;/math&amp;gt;に対し&amp;lt;math&amp;gt;p(v)\leftarrow l(u,v)+p(u)\, &amp;lt;/math&amp;gt;とおき，&amp;lt;math&amp;gt;V-W\, &amp;lt;/math&amp;gt;中でラベルの最小な点&amp;lt;math&amp;gt;v\, &amp;lt;/math&amp;gt;を見つけて&amp;lt;math&amp;gt;W\leftarrow W\cup\{v\}\, &amp;lt;/math&amp;gt;とおく．初期には&amp;lt;math&amp;gt;W=\{s\}\, &amp;lt;/math&amp;gt;である．ダイクストラ法は&amp;lt;math&amp;gt;{\rm O}(|A|+|V|\log|V|)\, &amp;lt;/math&amp;gt;時間のアルゴリズムとして実現可能である．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を&amp;lt;math&amp;gt;|V|\, &amp;lt;/math&amp;gt;回適用する手間で解くことができる．なお，全点間最短路問題の&amp;lt;math&amp;gt;{\rm O}&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/del&gt;(|V|^3)\, &amp;lt;/math&amp;gt;時間のアルゴリズムであるワーシャル・フロイド法 (Warshall-Floyd algorithm) も知られている.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を&amp;lt;math&amp;gt;|V|\, &amp;lt;/math&amp;gt;回適用する手間で解くことができる．なお，全点間最短路問題の&amp;lt;math&amp;gt;{\rm O}(|V|^3)\, &amp;lt;/math&amp;gt;時間のアルゴリズムであるワーシャル・フロイド法 (Warshall-Floyd algorithm) も知られている.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot; &gt;30行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;30行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[5] L. R. Ford, Jr., &amp;quot;Network Flow Theory,&amp;quot; Report P-923, Rand Corp., Santa Monica,1956.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[5] L. R. Ford, Jr., &amp;quot;Network Flow Theory,&amp;quot; Report P-923, Rand Corp., Santa Monica,1956.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[6] 久保，田村，松井 (編) 『応用数理計画ハンドブック』，朝倉書店，2002.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tetsuyatominaga</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=5789&amp;oldid=prev</id>
		<title>Orsjwiki: &quot;《最短路問題》&quot; を保護しました。 [edit=sysop:move=sysop]</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=5789&amp;oldid=prev"/>
		<updated>2007-07-19T13:05:53Z</updated>

		<summary type="html">&lt;p&gt;&amp;quot;《最短路問題》&amp;quot; を保護しました。 [edit=sysop:move=sysop]&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月19日 (木) 13:05時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Orsjwiki</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=4790&amp;oldid=prev</id>
		<title>2007年7月15日 (日) 05:30に220.104.197.230による</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=4790&amp;oldid=prev"/>
		<updated>2007-07-15T05:30:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月15日 (日) 05:30時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　[[有向グラフ]]&amp;lt;math&amp;gt;G=(V,A)\, &amp;lt;/math&amp;gt;の各[[枝]]&amp;lt;math&amp;gt;a\in A\, &amp;lt;/math&amp;gt;に長さ&amp;lt;math&amp;gt;l(a)\in \mathbf{R}\, &amp;lt;/math&amp;gt;が付与されている[[ネットワーク]]&amp;lt;math&amp;gt;N=(G=(V,A),l)\, &amp;lt;/math&amp;gt;が与えられているとする. 有向グラフ&amp;lt;math&amp;gt;G\, &amp;lt;/math&amp;gt;の任意の2点&amp;lt;math&amp;gt;s,t\in V\, &amp;lt;/math&amp;gt;に対して, 点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;を始点とし点&amp;lt;math&amp;gt;t\, &amp;lt;/math&amp;gt;を終点とする有向道&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;の長さ&amp;lt;math&amp;gt;l(P)\, &amp;lt;/math&amp;gt;は&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;上の枝の長さの総和, &amp;lt;math&amp;gt;l(P)={\sum}_{a\in P}l(a)\, &amp;lt;/math&amp;gt;, と定める. 始点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から終点&amp;lt;math&amp;gt;t\, &amp;lt;/math&amp;gt;への有向道&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;のなかで, その長さを最小にするもの(が存在すれば, それ)を点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;t\, &amp;lt;/math&amp;gt;への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem) という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　[[有向グラフ]]&amp;lt;math&amp;gt;G=(V,A)\, &amp;lt;/math&amp;gt;の各[[枝]]&amp;lt;math&amp;gt;a\in A\, &amp;lt;/math&amp;gt;に長さ&amp;lt;math&amp;gt;l(a)\in \mathbf{R}\, &amp;lt;/math&amp;gt;が付与されている[[ネットワーク]]&amp;lt;math&amp;gt;N=(G=(V,A),l)\, &amp;lt;/math&amp;gt;が与えられているとする. 有向グラフ&amp;lt;math&amp;gt;G\, &amp;lt;/math&amp;gt;の任意の2点&amp;lt;math&amp;gt;s,t\in V\, &amp;lt;/math&amp;gt;に対して, 点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;を始点とし点&amp;lt;math&amp;gt;t\, &amp;lt;/math&amp;gt;を終点とする有向道&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;の長さ&amp;lt;math&amp;gt;l(P)\, &amp;lt;/math&amp;gt;は&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;上の枝の長さの総和, &amp;lt;math&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\textstyle &lt;/ins&gt;l(P)={\sum}_{a\in P}l(a)\, &amp;lt;/math&amp;gt;, と定める. 始点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から終点&amp;lt;math&amp;gt;t\, &amp;lt;/math&amp;gt;への有向道&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;のなかで, その長さを最小にするもの(が存在すれば, それ)を点&amp;lt;math&amp;gt;s\, &amp;lt;/math&amp;gt;から点&amp;lt;math&amp;gt;t\, &amp;lt;/math&amp;gt;への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem) という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し, 最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ ([2]).  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し, 最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ ([2]).  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>220.104.197.230</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=1770&amp;oldid=prev</id>
		<title>2007年7月4日 (水) 11:40にOrsjwikiによる</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=1770&amp;oldid=prev"/>
		<updated>2007-07-04T11:40:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月4日 (水) 11:40時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　[[有向グラフ]]&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;G=(V,A)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の各[[枝]]&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;a\in A&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;に長さ&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(a)\in \mathbf{ R}&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;が付与されている[[ネットワーク]]&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;N=(G=(V,A),l)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;が与えられているとする. 有向グラフ&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;G&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の任意の2点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s,t\in V&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;に対して, 点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;を始点とし点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;t&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;を終点とする有向道&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;P&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の長さ&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(P)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;は&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;P&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;上の枝の長さの総和, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(P)=\&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sum_&lt;/del&gt;{a\in P}l(a)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;, と定める. 始点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から終点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;t&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;への有向道&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;P&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;のなかで, その長さを最小にするもの(が存在すれば, それ)を点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;t&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem) という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　[[有向グラフ]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;G=(V,A)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;の各[[枝]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;a\in A&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;に長さ&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(a)\in \mathbf{R}&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;が付与されている[[ネットワーク]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;N=(G=(V,A),l)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;が与えられているとする. 有向グラフ&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;G&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;の任意の2点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s,t\in V&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;に対して, 点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;を始点とし点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;t&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;を終点とする有向道&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;P&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;の長さ&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(P)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;は&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;P&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;上の枝の長さの総和, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(P)=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;{&lt;/ins&gt;\&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sum}_&lt;/ins&gt;{a\in P}l(a)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;, と定める. 始点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から終点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;t&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;への有向道&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;P&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;のなかで, その長さを最小にするもの(が存在すれば, それ)を点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;t&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem) という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し,最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ [2].  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し, 最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;[2]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題に対して様々なアルゴリズムが提案されている [1]. それらのアルゴリズムは, それが適用できるネットワークの種類から大きく二つに分類できる. 一つは, 負の長さの枝が存在しても適用できるアルゴリズムで, もう一つは, 負の長さの枝が存在しない時にのみ適用できるアルゴリズムである.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題に対して様々なアルゴリズムが提案されている &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;[1]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;. それらのアルゴリズムは, それが適用できるネットワークの種類から大きく二つに分類できる. 一つは, 負の長さの枝が存在しても適用できるアルゴリズムで, もう一つは, 負の長さの枝が存在しない時にのみ適用できるアルゴリズムである.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　前者のタイプのアルゴリズムとしては, L. R. Ford [5] とR. E. Bellman [3] によって独立に示された[[ベルマン・フォード法]](Bellman-Ford algorithm)（フォード・ベルマン法ともいう）が良く知られている. この方法では, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p(s)=0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p(v)=+\infty&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$ $&lt;/del&gt;(v\in V)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;なる点のラベル&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;を用意して, 枝&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;(u,v)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;に対して&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(u,v)+p(u)&amp;lt;p(v)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;ならば&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p(v)\leftarrow l(u,v)+p(u)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;とおく．ここで，すべての枝に対して１回ずつこの操作を行うことを基本操作として，ラベルの減少が起る限り高々&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;|V|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;回基本操作を繰り返す．基本操作が&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;|V|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;回繰り返された場合には負閉路が検出される．そうでない場合には, 終了時に得られたラベル&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;によって，&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(u,v)+p(u)-p(v)=0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;を満たす枝の全体からなる&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;G&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の部分グラフ中の点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から各点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;v&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;への有向道が最短路を与える．なお，ベルマン・フォード法の変種で隣接２点間の距離行列のべき乗と同等と見做される行列演算によって理解されるアルゴリズムとして，べき乗法(power method)も知られている. これらは&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;{\rm O}(|V||A|)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;時間のアルゴリズムである．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　前者のタイプのアルゴリズムとしては, L. R. Ford [5] とR. E. Bellman [3] によって独立に示された[[ベルマン・フォード法]](Bellman-Ford algorithm)（フォード・ベルマン法ともいう）が良く知られている. この方法では, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;p(s)=0, p(v)=+\infty&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;&lt;/ins&gt;(v\in V)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;なる点のラベル&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;p&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;を用意して, 枝&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;(u,v)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;に対して&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(u,v)+p(u)&amp;lt;p(v)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;ならば&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;p(v)\leftarrow l(u,v)+p(u)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;とおく．ここで，すべての枝に対して１回ずつこの操作を行うことを基本操作として，ラベルの減少が起る限り高々&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;|V|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;回基本操作を繰り返す．基本操作が&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;|V|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;回繰り返された場合には負閉路が検出される．そうでない場合には, 終了時に得られたラベル&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;p&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;によって，&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(u,v)+p(u)-p(v)=0&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;を満たす枝の全体からなる&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;G&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;の部分グラフ中の点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から各点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;v&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;への有向道が最短路を与える．なお，ベルマン・フォード法の変種で隣接２点間の距離行列のべき乗と同等と見做される行列演算によって理解されるアルゴリズムとして，べき乗法(power method)も知られている. これらは&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;{\rm O}(|V||A|)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;時間のアルゴリズムである．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$p$&lt;/del&gt;はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;W&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;とすると，&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p(v)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$ $&lt;/del&gt;(v\in W)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;は点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;v&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;への(最短)距離に等しく, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(u,v)+p(u)-p(v)=0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;である枝&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;(u,v)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;を通って&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;W&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;内において点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;v&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;へ行く有向道が点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;v&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;への最短路である．&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;W&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;内で最後に(最短)距離が確定した点を&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;u&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;として, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;l(u,v)+p(u)&amp;lt;p(v)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;なる各点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;v\in V-W&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;に対し&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;p(v)\leftarrow l(u,v)+p(u)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;とおき，&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;V-W&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;中でラベルの最小な点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;v&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;を見つけて&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;W\leftarrow W\cup\{v\}&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;とおく．初期には&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;W=\{s\}&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;である．ダイクストラ法は&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;{\rm O}(|A|+|V|\log|V|)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;時間のアルゴリズムとして実現可能である．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;P\, &amp;lt;/math&amp;gt;&lt;/ins&gt;はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;W&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;とすると，&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;p(v)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;&lt;/ins&gt;(v\in W)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;は点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;v&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;への(最短)距離に等しく, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(u,v)+p(u)-p(v)=0&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;である枝&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;(u,v)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;を通って&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;W&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;内において点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;v&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;へ行く有向道が点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;v&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;への最短路である．&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;W&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;内で最後に(最短)距離が確定した点を&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;u&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;として, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;l(u,v)+p(u)&amp;lt;p(v)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;なる各点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;v\in V-W&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;に対し&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;p(v)\leftarrow l(u,v)+p(u)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;とおき，&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;V-W&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;中でラベルの最小な点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;v&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;を見つけて&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;W\leftarrow W\cup\{v\}&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;とおく．初期には&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;W=\{s\}&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;である．ダイクストラ法は&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;{\rm O}(|A|+|V|\log|V|)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;時間のアルゴリズムとして実現可能である．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;s&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;|V|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;回適用する手間で解くことができる．なお，全点間最短路問題の&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;{\rm O}((|V|^3)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;時間のアルゴリズムであるワーシャル・フロイド法 (Warshall-Floyd algorithm) も知られている.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;|V|&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;回適用する手間で解くことができる．なお，全点間最短路問題の&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;{\rm O}((|V|^3)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &amp;lt;/math&amp;gt;&lt;/ins&gt;時間のアルゴリズムであるワーシャル・フロイド法 (Warshall-Floyd algorithm) も知られている.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l17&quot; &gt;17行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;17行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;参考文献&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;----&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;参考文献&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[1] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, ''Network Flows:Theory, Algorithms, and Applications'', Prentice Hall, New Jersey, 1993.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[1] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, ''Network Flows:Theory, Algorithms, and Applications'', Prentice Hall, New Jersey, 1993.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Orsjwiki</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=1715&amp;oldid=prev</id>
		<title>2007年7月4日 (水) 05:18に122.26.167.76による</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=1715&amp;oldid=prev"/>
		<updated>2007-07-04T05:18:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月4日 (水) 05:18時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　[[有向グラフ]]$G=(V,A)$の各[[枝]&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;}&lt;/del&gt;$a\in A$に長さ$l(a)\in \mathbf{ R}$&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;が付与されているネットワーク}{&lt;/del&gt;ネットワーク&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;}&lt;/del&gt;$N=(G=(V,A),l)$が与えられているとする. 有向グラフ$G$の任意の2点$s,t\in V$に対して, 点$s$を始点とし点$t$を終点とする有向道$P$の長さ$l(P)$は$P$上の枝の長さの総和, $l(P)=\sum_{a\in P}l(a)$, と定める. 始点$s$から終点$t$への有向道$P$のなかで, その長さを最小にするもの(が存在すれば, それ)を点$s$から点$t$への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem)という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　[[有向グラフ]]$G=(V,A)$の各[[枝]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/ins&gt;$a\in A$に長さ$l(a)\in \mathbf{ R}$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;が付与されている[[&lt;/ins&gt;ネットワーク&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;$N=(G=(V,A),l)$が与えられているとする. 有向グラフ$G$の任意の2点$s,t\in V$に対して, 点$s$を始点とし点$t$を終点とする有向道$P$の長さ$l(P)$は$P$上の枝の長さの総和, $l(P)=\sum_{a\in P}l(a)$, と定める. 始点$s$から終点$t$への有向道$P$のなかで, その長さを最小にするもの(が存在すれば, それ)を点$s$から点$t$への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem) という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し,最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ [2].  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し,最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ [2].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;11行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;11行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点$s$からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル$p$はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を$W$とすると，$p(v)$ $(v\in W)$は点$s$から点$v$への(最短)距離に等しく, $l(u,v)+p(u)-p(v)=0$である枝$(u,v)$を通って$W$内において点$s$から点$v$へ行く有向道が点$s$から点$v$への最短路である．$W$内で最後に(最短)距離が確定した点を$u$として, $l(u,v)+p(u)&amp;lt;p(v)$なる各点$v\in V-W$に対し$p(v)\leftarrow l(u,v)+p(u)$とおき，$V-W$中でラベルの最小な点$v$を見つけて$W\leftarrow W\cup\{v\}$とおく．初期には$W=\{s\}$である．ダイクストラ法は${\rm O}(|A|+|V|\log|V|)$時間のアルゴリズムとして実現可能である．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点$s$からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル$p$はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を$W$とすると，$p(v)$ $(v\in W)$は点$s$から点$v$への(最短)距離に等しく, $l(u,v)+p(u)-p(v)=0$である枝$(u,v)$を通って$W$内において点$s$から点$v$へ行く有向道が点$s$から点$v$への最短路である．$W$内で最後に(最短)距離が確定した点を$u$として, $l(u,v)+p(u)&amp;lt;p(v)$なる各点$v\in V-W$に対し$p(v)\leftarrow l(u,v)+p(u)$とおき，$V-W$中でラベルの最小な点$v$を見つけて$W\leftarrow W\cup\{v\}$とおく．初期には$W=\{s\}$である．ダイクストラ法は${\rm O}(|A|+|V|\log|V|)$時間のアルゴリズムとして実現可能である．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点$s$から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を$|V|$回適用する手間で解くことができる．なお，全点間最短路問題の${\rm O}((|V|^3)$時間のアルゴリズムであるワーシャル・フロイド法(Warshall-Floyd algorithm)も知られている.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点$s$から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を$|V|$回適用する手間で解くことができる．なお，全点間最短路問題の${\rm O}((|V|^3)$時間のアルゴリズムであるワーシャル・フロイド法 (Warshall-Floyd algorithm) も知られている.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key orsjml2021_wiki:diff::1.12:old-1714:rev-1715 --&gt;
&lt;/table&gt;</summary>
		<author><name>122.26.167.76</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=1714&amp;oldid=prev</id>
		<title>122.26.167.76: 新しいページ: ''''【さいたんろもんだい (shortest path problem) 】'''  　有向グラフ$G=(V,A)$の各[[枝]}$a\in A$に長さ$l(a)\in \mathbf{ R}$が付与されているネ...'</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%95%8F%E9%A1%8C%E3%80%8B&amp;diff=1714&amp;oldid=prev"/>
		<updated>2007-07-04T05:15:27Z</updated>

		<summary type="html">&lt;p&gt;新しいページ: &amp;#039;&amp;#039;&amp;#039;&amp;#039;【さいたんろもんだい (shortest path problem) 】&amp;#039;&amp;#039;&amp;#039;  　&lt;a href=&quot;/orwiki/wiki/index.php?title=%E6%9C%89%E5%90%91%E3%82%B0%E3%83%A9%E3%83%95&quot; title=&quot;有向グラフ&quot;&gt;有向グラフ&lt;/a&gt;$G=(V,A)$の各[[枝]}$a\in A$に長さ$l(a)\in \mathbf{ R}$が付与されているネ...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''【さいたんろもんだい (shortest path problem) 】'''&lt;br /&gt;
&lt;br /&gt;
　[[有向グラフ]]$G=(V,A)$の各[[枝]}$a\in A$に長さ$l(a)\in \mathbf{ R}$が付与されているネットワーク}{ネットワーク}$N=(G=(V,A),l)$が与えられているとする. 有向グラフ$G$の任意の2点$s,t\in V$に対して, 点$s$を始点とし点$t$を終点とする有向道$P$の長さ$l(P)$は$P$上の枝の長さの総和, $l(P)=\sum_{a\in P}l(a)$, と定める. 始点$s$から終点$t$への有向道$P$のなかで, その長さを最小にするもの(が存在すれば, それ)を点$s$から点$t$への最短路(shortest path)といい, 最短路を求める問題を[[最短路問題]] (shortest path problem)という. 与えられたネットワークにおいて負の長さの有向閉路(負閉路と呼ぶ)が存在する場合には一般に最短路は存在しなくなる. ただし，負閉路を持つネットワーク上でも，初等的な（点を繰り返さない）道で最短なものを求める問題を考えることもあるが，一般的には解くことが難しい問題となる．&lt;br /&gt;
&lt;br /&gt;
　最短路問題は[[組合せ最適化問題]]の中での最も基本的かつ重要な問題の一つである. 例えば, [[ナップサック問題]], [[PERT]], [[巡回セールスマン問題]]など様々な組合せ最適化問題が最短路問題とも関係し,最短路問題において得られた知識はそれらの組合せ最適化問題の解法にも影響を与えている. また, 交通計画や通信ネットワークの分野などでは最短路問題を利用し解析に必要な基本データを算出している. さらに, [[ネットワークフロー問題]], [[配送計画問題]]やネットワークデザインなどのより複雑な問題に対するアルゴリズムにおいて，子問題として最短路問題を解くことがしばしば要求され, その応用は広範囲におよぶ [2]. &lt;br /&gt;
&lt;br /&gt;
　最短路問題に対して様々なアルゴリズムが提案されている [1]. それらのアルゴリズムは, それが適用できるネットワークの種類から大きく二つに分類できる. 一つは, 負の長さの枝が存在しても適用できるアルゴリズムで, もう一つは, 負の長さの枝が存在しない時にのみ適用できるアルゴリズムである. &lt;br /&gt;
&lt;br /&gt;
　前者のタイプのアルゴリズムとしては, L. R. Ford [5] とR. E. Bellman [3] によって独立に示された[[ベルマン・フォード法]](Bellman-Ford algorithm)（フォード・ベルマン法ともいう）が良く知られている. この方法では, $p(s)=0$, $p(v)=+\infty$ $(v\in V)$なる点のラベル$p$を用意して, 枝$(u,v)$に対して$l(u,v)+p(u)&amp;lt;p(v)$ならば$p(v)\leftarrow l(u,v)+p(u)$とおく．ここで，すべての枝に対して１回ずつこの操作を行うことを基本操作として，ラベルの減少が起る限り高々$|V|$回基本操作を繰り返す．基本操作が$|V|$回繰り返された場合には負閉路が検出される．そうでない場合には, 終了時に得られたラベル$p$によって，$l(u,v)+p(u)-p(v)=0$を満たす枝の全体からなる$G$の部分グラフ中の点$s$から各点$v$への有向道が最短路を与える．なお，ベルマン・フォード法の変種で隣接２点間の距離行列のべき乗と同等と見做される行列演算によって理解されるアルゴリズムとして，べき乗法(power method)も知られている. これらは${\rm O}(|V||A|)$時間のアルゴリズムである．&lt;br /&gt;
&lt;br /&gt;
　一方, すべての枝の長さが非負の時に，より高速に最短路を見出すタイプの代表的なアルゴリズムとして, E. W. Dijkstra [4] によって提案された[[ダイクストラ法]] (Dijkstra's algorithm) が知られている.この方法では，出発点$s$からの(最短)距離が小さい順に最短路および(最短)距離が確定していく．初期ラベル$p$はベルマン・フォード法と同じで, アルゴリズム実行中に最短路が確定した点集合を$W$とすると，$p(v)$ $(v\in W)$は点$s$から点$v$への(最短)距離に等しく, $l(u,v)+p(u)-p(v)=0$である枝$(u,v)$を通って$W$内において点$s$から点$v$へ行く有向道が点$s$から点$v$への最短路である．$W$内で最後に(最短)距離が確定した点を$u$として, $l(u,v)+p(u)&amp;lt;p(v)$なる各点$v\in V-W$に対し$p(v)\leftarrow l(u,v)+p(u)$とおき，$V-W$中でラベルの最小な点$v$を見つけて$W\leftarrow W\cup\{v\}$とおく．初期には$W=\{s\}$である．ダイクストラ法は${\rm O}(|A|+|V|\log|V|)$時間のアルゴリズムとして実現可能である．&lt;br /&gt;
&lt;br /&gt;
　ベルマン・フォード法やダイクストラ法など現在提案されている最短路問題に対するアルゴリズムは本質的に始点$s$から全点までの最短路を同時に求める. 全点間の最短路を求めたい場合には, １点から全点への最短路を求めるアルゴリズムを繰り返し適用し求めればよい．この場合, 負の長さの枝が存在する場合には１点からの最短路問題を１回解いてすべての枝の長さを非負に等価変換することが可能であり, 基本的にダイクストラ法を$|V|$回適用する手間で解くことができる．なお，全点間最短路問題の${\rm O}((|V|^3)$時間のアルゴリズムであるワーシャル・フロイド法(Warshall-Floyd algorithm)も知られている.&lt;br /&gt;
&lt;br /&gt;
　最短路問題は有向グラフ上で定義されているが, [[無向グラフ]]上の最短路問題を考えたい場合には, 各枝をそれと同じ長さの互いに逆向きの有向枝で置き換えることにより, 有向グラフの場合に帰着することができる．ただし，負の長さの枝が存在する場合は, この帰着によって負閉路が含まれるので, 通常の最短路問題には帰着されない．&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
[1] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, ''Network Flows:Theory, Algorithms, and Applications'', Prentice Hall, New Jersey, 1993.&lt;br /&gt;
&lt;br /&gt;
[2] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, &amp;quot;Applications of Network Optimization,&amp;quot; in ''Network Models'', M. O, Ball, T. L. Magnanti, C. L. Monma and G. L. Nemhauser, eds., North-Holland, 1995.                            &lt;br /&gt;
&lt;br /&gt;
[3] R. E. Bellman, &amp;quot;On a Routing Problem,&amp;quot; ''Quarterly of Applied Mathematics'', '''16''' (1958), 87-90. &lt;br /&gt;
&lt;br /&gt;
[4] E. W. Dijkstra, &amp;quot;A note on two problems in connexion with graphs,&amp;quot; ''Numerische Mathematik'', '''1''' (1959), 268-271. &lt;br /&gt;
&lt;br /&gt;
[5] L. R. Ford, Jr., &amp;quot;Network Flow Theory,&amp;quot; Report P-923, Rand Corp., Santa Monica,1956.&lt;/div&gt;</summary>
		<author><name>122.26.167.76</name></author>
	</entry>
</feed>