<?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=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95</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=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95"/>
	<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;action=history"/>
	<updated>2026-04-16T01:39:48Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=9681&amp;oldid=prev</id>
		<title>Imahori: 基礎編と用語編のマージ</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=9681&amp;oldid=prev"/>
		<updated>2008-03-13T13:59:11Z</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;2008年3月13日 (木) 13:59時点における版&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;'''【けいさんのふくざつさ (computational complexity)】'''&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;'''【けいさんのふくざつさ (computational complexity)】'''&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 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 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;「計算の複雑さ」とは, その計算が必要とする計算資源の量を, 入力の長さに対する関数としてとらえるものである. 計算のモデルとしては, チューリング機械やRAMのモデルが使われ, 資源としては計算時間と計算に必要な領域が評価される. 一般には入力によって計算に必要な資源は変化するので, 入力の長さに関して最悪の場合を考える. 微妙な議論をしている場合以外は, 関数の多項式倍程度の差は無視する場合が多い.&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;「計算の複雑さ」とは, その計算が必要とする計算資源の量を, 入力の長さに対する関数としてとらえるものである. 計算のモデルとしては, チューリング機械やRAMのモデルが使われ, 資源としては計算時間と計算に必要な領域が評価される. 一般には入力によって計算に必要な資源は変化するので, 入力の長さに関して最悪の場合を考える. 微妙な議論をしている場合以外は, 関数の多項式倍程度の差は無視する場合が多い.&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;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;《計算の複雑さ》&lt;/del&gt;|&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;基礎編：計算の複雑さ&lt;/del&gt;]]&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;&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 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;/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;　計算の複雑さの理論でもっとも有名な未解決問題は，&amp;lt;math&amp;gt;{\rm P}\neq {\rm NP}\, &amp;lt;/math&amp;gt;予想である．これはクラス&amp;lt;math&amp;gt;{\rm NP}\, &amp;lt;/math&amp;gt;に属する問題がすべて多項式時間で解けるかどうか，という問題に対する予想である．[[NP困難]]な問題は数多く知られており，その中には実用上，重要な問題も含まれている (文献 [1] に詳細なリストがある)．多くの研究者は，NP困難な問題は多項式時間では解くことはできないであろう，と予想している．つまりこうした計算の複雑さの理論の枠組みによれば，ある問題がNP困難であることを示す，ということは，すなわちその問題が「手に負えない」問題であることを示した，ということであった．&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;/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;/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;　確率的なアルゴリズムとは，計算機の基本的な機能としてコイントスを付加するアプローチである．コイントスを許したチューリングマシンモデル (確率チューリングマシンモデル) を導入し，正解を出力する確率によって問題のクラスを定義する．例えば一方向エラーを許した多項式時間の確率チューリングマシンによって判定できる問題は[[クラスR]]に属する．与えられた数が合成数かどうかを判定する問題が，クラスRに属することはよく知られている．こうしたアルゴリズムについては，文献 [6] が詳しい．&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;/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;　近似アルゴリズムとは，厳密な解ではなく，近似解を得られればよい，というスタンスに立つものである．近似解とは，通常は厳密な解に対する相対誤差が正定数で抑えられるものを言う場合が多い (問題によっては相対誤差でなかったり，正定数ではなく関数であったりする場合もある)．相対誤差が正定数&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;で抑えられる解を&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;近似の解と呼ぶ．近似アルゴリズムでは正定数&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;に対して「入力の長さ」と「&amp;lt;math&amp;gt;1/\epsilon\, &amp;lt;/math&amp;gt;」の多項式時間で&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;近似の解を求めることができるかどうか，という基準で「手に負えない」問題であるかどうかを決める．同じNP困難な問題であっても，こうした観点からは違った性質をもつものがあることがわかっている. つまりNP困難な問題であっても，与えられた任意の正定数&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;に対して，上記の意味での多項式時間で&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;近似の解を求めることができるものがあり，一方では&amp;lt;math&amp;gt;({\rm P}\neq {\rm NP}\, &amp;lt;/math&amp;gt;の仮定のもとでは&amp;lt;math&amp;gt;)\, &amp;lt;/math&amp;gt;多項式時間で&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;近似の解を求めることのできるような&amp;lt;math&amp;gt;\epsilon\, &amp;lt;/math&amp;gt;の大きさに限界がある問題も知られている．後者の問題の属するクラスの一つとして[[クラスMAX SNP]]が知られている．つまりMAX SNP困難な問題は，厳密解だけではなく，よい近似解を求めることですら「手に負えない」問題である，ということになる．ここで注意すべき点は，こうした意味で「手に負えない」問題であっても，ある程度の近似アルゴリズムが知られているものがある，ということである．つまりいくらでもよい近似率を達成するのは困難ではあるが，特定の近似率を実現するのであれば，なんとかなる問題もある．しかしこうした問題の近似率をどこまで小さくできるか，という問題は一般には非常に難しい．こうした問題や最近の結果については，文献[3][8]が詳しい．&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;/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;　計算の複雑さの理論では，こうした「手に負えるかどうか」という観点とは別の切口から問題の複雑さを研究する分野もある．例えば「与えられた問題を並列に効率よく解くことができるかどうか」という観点も実用上，重要な意味を持つ．ある問題に対して，並列化が効果的かどうかは，その問題がどの程度「並列性」を有しているかによる．並列性を有する問題のクラスの一つが[[クラスNC]]である．このクラスに属する問題は，プロセッサを増やせば，その分だけ効率よく問題を解くことができる．多項式時間アルゴリズムを持つ問題の中には，このクラスに属さないであろう，と強く予想されている問題もある．こうした問題はプロセッサ数を増やしても計算の高速化には限界がある．こうした並列計算に関する問題については，文献 [2] のリストが詳しい．&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;/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;　なお本項目全般については，文献 [5, 7] が詳しい．文献 [4] は非常に幅広い話題を網羅した著名なハンドブックである．&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;/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;/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;/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;/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;/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;/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;[1] M. R. Garey and D. S. Johnson, ''Computers and Intractability: A Guide to the Theory of NP-Completeness''}, Freeman, San Francisco,1979.&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;/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;[2] R. Greenlaw, H. J. Hoover and W. L. Ruzzo, ''Limits to Parallel Computation'', Oxford University Press, 1995.&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;/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;[3] D. S. Hochbaum (eds.) ''Approximation Algorithms for NP-hard Problems'', PWS Publishing Company, 1995.&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;/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;[4] J. van Leeuwen (eds.) ''Handbook of Theoretical Computer Science'', Elsevier Science Publishers, 1990.&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;/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;[5] 守屋悦朗,『チューリングマシンと計算量の理論』, 培風館, 1997.&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;/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;[6] R. Motwani and P. Raghavan ''Randomized Algorithms'', Cabbridge, 1995.&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;/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;[7] C.H. Papadimitriou ''Computational Complexity'', Addison-Wesley Publishing Company, 1994.&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;/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;[8] V. V. Vazirani, ''Approximation Algorithms'', Springer, 2001. 浅野孝夫訳, 『近似アルゴリズム』, シュプリンガー・フェアラーク, 2002.&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;/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;/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;[[Category:組合せ最適化&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;/table&gt;</summary>
		<author><name>Imahori</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=8329&amp;oldid=prev</id>
		<title>2007年8月8日 (水) 11:41にKanda.kによる</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=8329&amp;oldid=prev"/>
		<updated>2007-08-08T11:41:23Z</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月8日 (水) 11:41時点における版&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-l2&quot; &gt;2行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;2行目:&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;「計算の複雑さ」とは, その計算が必要とする計算資源の量を, 入力の長さに対する関数としてとらえるものである. 計算のモデルとしては, チューリング機械やRAMのモデルが使われ, 資源としては計算時間と計算に必要な領域が評価される. 一般には入力によって計算に必要な資源は変化するので, 入力の長さに関して最悪の場合を考える. 微妙な議論をしている場合以外は, 関数の多項式倍程度の差は無視する場合が多い.&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;「計算の複雑さ」とは, その計算が必要とする計算資源の量を, 入力の長さに対する関数としてとらえるものである. 計算のモデルとしては, チューリング機械やRAMのモデルが使われ, 資源としては計算時間と計算に必要な領域が評価される. 一般には入力によって計算に必要な資源は変化するので, 入力の長さに関して最悪の場合を考える. 微妙な議論をしている場合以外は, 関数の多項式倍程度の差は無視する場合が多い.&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;/table&gt;</summary>
		<author><name>Kanda.k</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=6448&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=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=6448&amp;oldid=prev"/>
		<updated>2007-07-20T00:42:00Z</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月20日 (金) 00:42時点における版&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=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=2823&amp;oldid=prev</id>
		<title>2007年7月11日 (水) 15:51に122.17.2.240による</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=2823&amp;oldid=prev"/>
		<updated>2007-07-11T15:51: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年7月11日 (水) 15:51時点における版&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;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;【けいさんのふくざつさ (computational complexity)】&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;【けいさんのふくざつさ (computational complexity)】&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; &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;, &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;ins class=&quot;diffchange diffchange-inline&quot;&gt;計算のモデルとしては&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;チューリング機械やRAMのモデルが使われ&lt;/ins&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;ins class=&quot;diffchange diffchange-inline&quot;&gt;入力の長さに関して最悪の場合を考える&lt;/ins&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;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;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;　計算の複雑さの理論でもっとも有名な未解決問題は，${\rm P\neqNP}$予想である．これはクラス${\rm NP}$に属する問題がすべて多項式時間で解けるかどうか，という問題に対する予想である．[[NP困難]]な問題は数多く知られており，その中には実用上，重要な問題も含まれている(文献 [1] に詳細なリストがある)．多くの研究者は，NP困難な問題は多項式時間では解くことはできないであろう，と予想している．つまりこうした計算の複雑さの理論の枠組みによれば，ある問題がNP困難であることを示す，ということは，すなわちその問題が「手に負えない」問題であることを示した，ということであった．&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;　確率的なアルゴリズムとは，計算機の基本的な機能としてコイントスを付加するアプローチである．コイントスを許したチューリングマシンモデル(確率チューリングマシンモデル)を導入し，正解を出力する確率によって問題のクラスを定義する．例えば一方向エラーを許した多項式時間の確率チューリングマシンによって判定できる問題は[[クラスR]]に属する．与えられた数が合成数かどうかを判定する問題が，クラスRに属することはよく知られている．こうしたアルゴリズムについては，文献 [6] が詳しい．&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;　近似アルゴリズムとは，厳密な解ではなく，近似解を得られればよい，というスタンスに立つものである．近似解とは，通常は厳密な解に対する相対誤差が正定数で抑えられるものを言う場合が多い(問題によっては相対誤差でなかったり，正定数ではなく関数であったりする場合もある)．相対誤差が正定数$\epsilon$で抑えられる解を$\epsilon$近似の解と呼ぶ．近似アルゴリズムでは正定数$\epsilon$に対して「入力の長さ」と「$1/\epsilon$」の多項式時間で$\epsilon$近似の解を求めることができるかどうか，という基準で「手に負えない」問題であるかどうかを決める．同じNP困難な問題であっても，こうした観点からは違った性質をもつものがあることがわかっている。つまりNP困難な問題であっても，与えられた任意の正定数$\epsilon$に対して，上記の意味での多項式時間で$\epsilon$近似の解を求めることができるものがあり，一方では(${\rm P}\neq {\rm NP}$の仮定のもとでは)多項式時間で$\epsilon$近似の解を求めることのできるような$\epsilon$の大きさに限界がある問題も知られている．後者の問題の属するクラスの一つとして[[クラスMAX SNP]]が知られている．つまりMAX SNP困難な問題は，厳密解だけではなく，よい近似解を求めることですら「手に負えない」問題である，ということになる．ここで注意すべき点は，こうした意味で「手に負えない」問題であっても，ある程度の近似アルゴリズムが知られているものがある，ということである．つまりいくらでもよい近似率を達成するのは困難ではあるが，特定の近似率を実現するのであれば，なんとかなる問題もある．しかしこうした問題の近似率をどこまで小さくできるか，という問題は一般には非常に難しい．こうした問題や最近の結果については，文献\cite{A-C-06+UEHARA7&lt;/del&gt;,&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A-C-06+Vazirani}が詳しい．&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;　計算の複雑さの理論では，こうした「手に負えるかどうか」という観点とは別の切口から問題の複雑さを研究する分野もある．例えば「与えられた問題を並列に効率よく解くことができるかどうか」という観点も実用上，重要な意味を持つ．ある問題に対して，並列化が効果的かどうかは，その問題がどの程度「並列性」を有しているかによる．並列性を有する問題のクラスの一つが[[クラスNC]]である．このクラスに属する問題は，プロセッサを増やせば，その分だけ効率よく問題を解くことができる．多項式時間アルゴリズムを持つ問題の中には，このクラスに属さないであろう，と強く予想されている問題もある．こうした問題はプロセッサ数を増やしても計算の高速化には限界がある．こうした並列計算に関する問題については，文献 [2] のリストが詳しい．&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;　なお本項目全般については，文献 [5&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;7] が詳しい．文献 [4] は非常に幅広い話題を網羅した著名なハンドブックである．&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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 colspan=&quot;2&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;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[1] M&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;R. Garey and D. S. Johnson, ''Computers and Intractability: A Guide to the Theory of NP-Completeness''}, Freeman, San Francisco,1979.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[2] R. Greenlaw, H. J. Hoover and W. L. Ruzzo, ''Limits to Parallel Computation'', Oxford University Press, 1995.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[3] D. S. Hochbaum (eds.) ''Approximation Algorithms for NP-hard Problems'', PWS Publishing Company, 1995.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[4] J. van Leeuwen (eds.) ''Handbook of Theoretical Computer Science'', Elsevier Science Publishers, 1990.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[5] 守屋悦朗,『チューリングマシンと計算量の理論』&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;培風館&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1997.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[6] R. Motwani and P&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Raghavan ''Randomized Algorithms'', Cabbridge&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1995&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[7] C.H. Papadimitriou ''Computational Complexity'', Addison-Wesley Publishing Company, 1994.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&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 colspan=&quot;2&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;[8] V. V. Vazirani, ''Approximation Algorithms'', Springer, 2001. 浅野孝夫訳, 『近似アルゴリズム』, シュプリンガー・フェアラーク&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2002&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>122.17.2.240</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=1647&amp;oldid=prev</id>
		<title>122.26.167.76: 新しいページ: '【けいさんのふくざつさ (computational complexity)】   　「計算の複雑さ」とは，その計算が必要とする資源の量を，入力の長さに対す...'</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E8%A8%88%E7%AE%97%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%95&amp;diff=1647&amp;oldid=prev"/>
		<updated>2007-07-03T06:47:04Z</updated>

		<summary type="html">&lt;p&gt;新しいページ: &amp;#039;【けいさんのふくざつさ (computational complexity)】   　「計算の複雑さ」とは，その計算が必要とする資源の量を，入力の長さに対す...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;【けいさんのふくざつさ (computational complexity)】&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
　「計算の複雑さ」とは，その計算が必要とする資源の量を，入力の長さに対する関数としてとらえるものである．計算のモデルとしては，チューリングマシンモデルが使われ，資源としては計算時間と計算に必要な領域が評価される．入力によって計算に必要な資源は変化するので，通常入力の長さに関して最悪の場合を考える．微妙な議論をしている場合以外は，関数の多項式倍程度の差は無視する場合が多い．こうした観点から言えば，現在世の中で利用されているフォン・ノイマン型の計算機はすべてチューリングマシンモデルで模倣することができる．また現実的に手に負える問題とは，[[多項式時間アルゴリズム]]で解ける問題だけと考えられている．&lt;br /&gt;
&lt;br /&gt;
　計算の複雑さの理論でもっとも有名な未解決問題は，${\rm P\neqNP}$予想である．これはクラス${\rm NP}$に属する問題がすべて多項式時間で解けるかどうか，という問題に対する予想である．[[NP困難]]な問題は数多く知られており，その中には実用上，重要な問題も含まれている(文献 [1] に詳細なリストがある)．多くの研究者は，NP困難な問題は多項式時間では解くことはできないであろう，と予想している．つまりこうした計算の複雑さの理論の枠組みによれば，ある問題がNP困難であることを示す，ということは，すなわちその問題が「手に負えない」問題であることを示した，ということであった．&lt;br /&gt;
&lt;br /&gt;
　しかし一方ではこうした従来の枠組みによって「手に負えない」とされた問題を，なんとかして現実的な観点から解決できないか，というアプローチもいくつか行われてきた．代表的なものとしては，確率的なアルゴリズムと，近似アルゴリズムとがあげられる．&lt;br /&gt;
&lt;br /&gt;
　確率的なアルゴリズムとは，計算機の基本的な機能としてコイントスを付加するアプローチである．コイントスを許したチューリングマシンモデル(確率チューリングマシンモデル)を導入し，正解を出力する確率によって問題のクラスを定義する．例えば一方向エラーを許した多項式時間の確率チューリングマシンによって判定できる問題は[[クラスR]]に属する．与えられた数が合成数かどうかを判定する問題が，クラスRに属することはよく知られている．こうしたアルゴリズムについては，文献 [6] が詳しい．&lt;br /&gt;
&lt;br /&gt;
　近似アルゴリズムとは，厳密な解ではなく，近似解を得られればよい，というスタンスに立つものである．近似解とは，通常は厳密な解に対する相対誤差が正定数で抑えられるものを言う場合が多い(問題によっては相対誤差でなかったり，正定数ではなく関数であったりする場合もある)．相対誤差が正定数$\epsilon$で抑えられる解を$\epsilon$近似の解と呼ぶ．近似アルゴリズムでは正定数$\epsilon$に対して「入力の長さ」と「$1/\epsilon$」の多項式時間で$\epsilon$近似の解を求めることができるかどうか，という基準で「手に負えない」問題であるかどうかを決める．同じNP困難な問題であっても，こうした観点からは違った性質をもつものがあることがわかっている。つまりNP困難な問題であっても，与えられた任意の正定数$\epsilon$に対して，上記の意味での多項式時間で$\epsilon$近似の解を求めることができるものがあり，一方では(${\rm P}\neq {\rm NP}$の仮定のもとでは)多項式時間で$\epsilon$近似の解を求めることのできるような$\epsilon$の大きさに限界がある問題も知られている．後者の問題の属するクラスの一つとして[[クラスMAX SNP]]が知られている．つまりMAX SNP困難な問題は，厳密解だけではなく，よい近似解を求めることですら「手に負えない」問題である，ということになる．ここで注意すべき点は，こうした意味で「手に負えない」問題であっても，ある程度の近似アルゴリズムが知られているものがある，ということである．つまりいくらでもよい近似率を達成するのは困難ではあるが，特定の近似率を実現するのであれば，なんとかなる問題もある．しかしこうした問題の近似率をどこまで小さくできるか，という問題は一般には非常に難しい．こうした問題や最近の結果については，文献\cite{A-C-06+UEHARA7,A-C-06+Vazirani}が詳しい．&lt;br /&gt;
&lt;br /&gt;
　計算の複雑さの理論では，こうした「手に負えるかどうか」という観点とは別の切口から問題の複雑さを研究する分野もある．例えば「与えられた問題を並列に効率よく解くことができるかどうか」という観点も実用上，重要な意味を持つ．ある問題に対して，並列化が効果的かどうかは，その問題がどの程度「並列性」を有しているかによる．並列性を有する問題のクラスの一つが[[クラスNC]]である．このクラスに属する問題は，プロセッサを増やせば，その分だけ効率よく問題を解くことができる．多項式時間アルゴリズムを持つ問題の中には，このクラスに属さないであろう，と強く予想されている問題もある．こうした問題はプロセッサ数を増やしても計算の高速化には限界がある．こうした並列計算に関する問題については，文献 [2] のリストが詳しい．&lt;br /&gt;
&lt;br /&gt;
　なお本項目全般については，文献 [5, 7] が詳しい．文献 [4] は非常に幅広い話題を網羅した著名なハンドブックである．&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''参考文献'''&lt;br /&gt;
&lt;br /&gt;
[1] M. R. Garey and D. S. Johnson, ''Computers and Intractability: A Guide to the Theory of NP-Completeness''}, Freeman, San Francisco,1979.&lt;br /&gt;
&lt;br /&gt;
[2] R. Greenlaw, H. J. Hoover and W. L. Ruzzo, ''Limits to Parallel Computation'', Oxford University Press, 1995.&lt;br /&gt;
&lt;br /&gt;
[3] D. S. Hochbaum (eds.) ''Approximation Algorithms for NP-hard Problems'', PWS Publishing Company, 1995.&lt;br /&gt;
&lt;br /&gt;
[4] J. van Leeuwen (eds.) ''Handbook of Theoretical Computer Science'', Elsevier Science Publishers, 1990.&lt;br /&gt;
&lt;br /&gt;
[5] 守屋悦朗,『チューリングマシンと計算量の理論』, 培風館, 1997.&lt;br /&gt;
&lt;br /&gt;
[6] R. Motwani and P. Raghavan ''Randomized Algorithms'', Cabbridge, 1995.&lt;br /&gt;
&lt;br /&gt;
[7] C.H. Papadimitriou ''Computational Complexity'', Addison-Wesley Publishing Company, 1994.&lt;br /&gt;
&lt;br /&gt;
[8] V. V. Vazirani, ''Approximation Algorithms'', Springer, 2001. 浅野孝夫訳, 『近似アルゴリズム』, シュプリンガー・フェアラーク, 2002.&lt;/div&gt;</summary>
		<author><name>122.26.167.76</name></author>
	</entry>
</feed>