<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://metabolomics.jp/mediawiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://metabolomics.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Aritalab%3ALecture%2FAlgorithm%2FCooksTheorem</id>
		<title>Aritalab:Lecture/Algorithm/CooksTheorem - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://metabolomics.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Aritalab%3ALecture%2FAlgorithm%2FCooksTheorem"/>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;action=history"/>
		<updated>2026-04-09T00:20:26Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254155&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254155&amp;oldid=prev"/>
				<updated>2011-10-13T23:58:52Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 23:58, 13 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 158:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 158:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;つまり、SAT問題の表現能力はチューリングマシンのあらゆる動作列、すなわちクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス NP に属するいかなる問題でもO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;つまり、SAT問題の表現能力はチューリングマシンのあらゆる動作列、すなわちクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス NP に属するいかなる問題でもO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題と3SAT問題&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SAT &amp;amp; 3SAT&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SAT問題は複雑な論理式が多く使われており、解くのが十分に難しそうです。しかし、各節にリテラルをちょうど3つしか含まないように制約を設けた3-SATISFIABILITYもNP完全であることが簡単に示せます。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SAT問題は複雑な論理式が多く使われており、解くのが十分に難しそうです。しかし、各節にリテラルをちょうど3つしか含まないように制約を設けた3-SATISFIABILITYもNP完全であることが簡単に示せます。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254154&amp;oldid=prev</id>
		<title>Adm: /* NP完全性のインパクト */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254154&amp;oldid=prev"/>
				<updated>2011-10-12T15:50:39Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;NP完全性のインパクト&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:50, 12 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| 問題 x がクラスNPに属する ||&amp;amp;hArr; || 定義より、x に多項式時間でYESという NDTM のプログラムが存在&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| 問題 x がクラスNPに属する ||&amp;amp;hArr; || 定義より、x に多項式時間でYESという NDTM のプログラムが存在&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| ||&amp;amp;hArr; || クックの定理により NDTM &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;の入力とプログラムを多項式時間で変換したSAT問題が存在&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| ||&amp;amp;hArr; || クックの定理により NDTM &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;の入力とプログラム（の可能な全動作列）を多項式時間で変換したSAT問題が存在&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;つまり、SAT問題の表現能力はクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス &lt;/del&gt;NP &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;に属する全ての問題をO&lt;/del&gt;(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;つまり、SAT問題の表現能力はチューリングマシンのあらゆる動作列、すなわちクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス &lt;/ins&gt;NP &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;に属するいかなる問題でもO&lt;/ins&gt;(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==SAT問題と3SAT問題==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==SAT問題と3SAT問題==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254153&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3-SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254153&amp;oldid=prev"/>
				<updated>2011-10-12T15:33:13Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3-SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:33, 12 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 158:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 158:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;つまり、SAT問題の表現能力はクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス NP に属する全ての問題をO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;つまり、SAT問題の表現能力はクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス NP に属する全ての問題をO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題と3-SAT問題&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題と3SAT問題&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SAT問題は複雑な論理式が多く使われており、解くのが十分に難しそうです。しかし、各節にリテラルをちょうど3つしか含まないように制約を設けた3-SATISFIABILITYもNP完全であることが簡単に示せます。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SAT問題は複雑な論理式が多く使われており、解くのが十分に難しそうです。しかし、各節にリテラルをちょうど3つしか含まないように制約を設けた3-SATISFIABILITYもNP完全であることが簡単に示せます。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3-SAT問題はNP完全&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;3SAT問題はNP完全&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3-SATを充足させる変数の &lt;/del&gt;T, F &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;が与えられたらすぐにYESと判断できるため、3-SAT &lt;/del&gt;&amp;amp;isin; NP です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;3SATを充足させる変数の &lt;/ins&gt;T, F &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;が与えられたらすぐにYESと判断できるため、3SAT &lt;/ins&gt;&amp;amp;isin; NP です。&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;ここで SAT から &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3-SAT &lt;/del&gt;への変換を考えます。SATにおける各節 C を以下のように変換します。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;ここで SAT から &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;3SAT &lt;/ins&gt;への変換を考えます。SATにおける各節 C を以下のように変換します。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* 変数を1個含む場合 C = { z }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* 変数を1個含む場合 C = { z }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 185:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 185:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;逆に、置き換えた節 C' が充足可能である時は、必ず z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; のいずれかが T にならざるを得ませんから（背理法ですぐに証明できます）、もとの節 C が充足可能になります。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;逆に、置き換えた節 C' が充足可能である時は、必ず z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; のいずれかが T にならざるを得ませんから（背理法ですぐに証明できます）、もとの節 C が充足可能になります。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3-SAT &lt;/del&gt;問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;3SAT &lt;/ins&gt;問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;このように問題を変換 (reduce) することで、[[Aritalab:Lecture/Algorithm/Reducibility|様々な問題がNP完全であることを証明]]できます。重要な組み合わせ問題に対してこれをCookの定理の翌年に示したのが、現在はバイオインフォマティクスを研究している Richard M Karp でした。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;このように問題を変換 (reduce) することで、[[Aritalab:Lecture/Algorithm/Reducibility|様々な問題がNP完全であることを証明]]できます。重要な組み合わせ問題に対してこれをCookの定理の翌年に示したのが、現在はバイオインフォマティクスを研究している Richard M Karp でした。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254152&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3-SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254152&amp;oldid=prev"/>
				<updated>2011-10-12T15:05:19Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3-SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:05, 12 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 186:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 186:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;このように問題を変換 (reduce) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;できることを用いて、&lt;/del&gt;[[Aritalab:Lecture/Algorithm/Reducibility|様々な問題がNP完全であることを証明]]&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;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;このように問題を変換 (reduce) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;することで、&lt;/ins&gt;[[Aritalab:Lecture/Algorithm/Reducibility|様々な問題がNP完全であることを証明]]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;できます。重要な組み合わせ問題に対してこれをCookの定理の翌年に示したのが、現在はバイオインフォマティクスを研究している Richard M Karp でした。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254151&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3-SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254151&amp;oldid=prev"/>
				<updated>2011-10-12T15:02:34Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3-SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:02, 12 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 162:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 162:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SAT問題は複雑な論理式が多く使われており、解くのが十分に難しそうです。しかし、各節にリテラルをちょうど3つしか含まないように制約を設けた3-SATISFIABILITYもNP完全であることが簡単に示せます。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;SAT問題は複雑な論理式が多く使われており、解くのが十分に難しそうです。しかし、各節にリテラルをちょうど3つしか含まないように制約を設けた3-SATISFIABILITYもNP完全であることが簡単に示せます。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;定理：3&lt;/del&gt;-&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題はNP完全である&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;3&lt;/ins&gt;-&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題はNP完全&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;3-SATを充足させる変数の T, F が与えられたらすぐにYESと判断できるため、3-SAT &amp;amp;isin; NP です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;3-SATを充足させる変数の T, F が与えられたらすぐにYESと判断できるため、3-SAT &amp;amp;isin; NP です。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254150&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3-SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254150&amp;oldid=prev"/>
				<updated>2011-10-12T13:07:11Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3-SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:07, 12 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 186:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 186:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;このように問題を変換 (reduce) できることを用いて、[[Aritalab:Lecture/Algorithm/Reducibility|様々な問題がNP完全であることを証明]]できます。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254149&amp;oldid=prev</id>
		<title>Adm: /* NP完全性のインパクト */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254149&amp;oldid=prev"/>
				<updated>2011-10-07T05:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;NP完全性のインパクト&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:37, 7 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 156:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 156:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題の表現能力は、クラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス &lt;/del&gt;NP に属する全ての問題をO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;つまり、SAT問題の表現能力はクラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス &lt;/ins&gt;NP に属する全ての問題をO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==SAT問題と3-SAT問題==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==SAT問題と3-SAT問題==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254148&amp;oldid=prev</id>
		<title>Adm: /* NP完全性のインパクト */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254148&amp;oldid=prev"/>
				<updated>2011-10-07T05:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;NP完全性のインパクト&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:35, 7 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| 問題 x がクラスNPに属する ||&amp;amp;hArr; || 定義より、x に多項式時間でYESという NDTM のプログラムが存在&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| 問題 x がクラスNPに属する ||&amp;amp;hArr; || 定義より、x に多項式時間でYESという NDTM のプログラムが存在&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| ||&amp;amp;hArr; || クックの定理により NDTM &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;の入力とプログラムを多項式時間で変換したSAT問題が充足可能&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;| ||&amp;amp;hArr; || クックの定理により NDTM &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;の入力とプログラムを多項式時間で変換したSAT問題が存在&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;どんなSAT問題を与えられても多項式時間で解けてしまうアルゴリズムがあるとするならば、クラス &lt;/del&gt;NP に属する全ての問題をO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;時間でSAT問題に変換することで、全体が多項式時間で解けることになります。つまり、SAT問題は &lt;/del&gt;NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SAT問題の表現能力は、クラスNPに属する全ての問題を包含しているのです。そのため、どんなSAT問題を与えられても多項式時間で解くアルゴリズムがあるとするならば、クラス &lt;/ins&gt;NP に属する全ての問題をO(p(n)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;時間でSAT問題に変換することで、それらを多項式時間で解くことになります。つまり、SAT問題は &lt;/ins&gt;NP に属するどの問題と比較しても同等以上に難しい、NP完全であることが示されています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==SAT問題と3-SAT問題==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==SAT問題と3-SAT問題==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254147&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3-SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254147&amp;oldid=prev"/>
				<updated>2011-10-06T05:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3-SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:01, 6 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 177:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 177:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* 変数を k (&amp;gt; 3) 個含む場合 C = { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* 変数を k (&amp;gt; 3) 個含む場合 C = { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: C にしか使わない変数を k&amp;amp;minus;3 個用意し { x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; } 、次の k&amp;amp;minus;2 節で置き換えます。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: C にしか使わない変数を k&amp;amp;minus;3 個用意し { x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; } 、次の k&amp;amp;minus;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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: { { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; } } ... &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k-1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;C' = &lt;/ins&gt;{ { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; } } ... &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k-1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節に含まれる変数の数が 3 個以下の場合、上記の変換において、もとの節における変数のアサインメントで充足可能 &amp;amp;hArr; 置き換えた節が充足可能　であることがすぐにわかります。 新しく導入する変数のアサインメントは T でも F でもよいからです。変数を k 個含むときだけ少し面倒です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節に含まれる変数の数が 3 個以下の場合、上記の変換において、もとの節における変数のアサインメントで充足可能 &amp;amp;hArr; 置き換えた節が充足可能　であることがすぐにわかります。 新しく導入する変数のアサインメントは T でも F でもよいからです。変数を k 個含むときだけ少し面倒です。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節　C = { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } が充足可能な時、少なくともある変数 z&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; が T になっています。もし m が 1 か 2 の場合は x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;にすれば、変換後の節が充足されます。もし &lt;/del&gt;m が k&amp;amp;minus;1 か k の場合は、x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て T &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;にすれば変換後の節が充足されます。もし &lt;/del&gt;m が l の場合は、 x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;l-2&amp;lt;/sub&amp;gt; をすべて T にし、 x&amp;lt;sub&amp;gt;l-1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;にすれば充足されます。 &lt;/del&gt;T となるリテラルが1個以上の場合は T &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;の数が増えるだけです。逆に、置き換えた節が充足可能である時、必ず &lt;/del&gt;z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; のいずれかが T &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;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節　C = { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } が充足可能な時、少なくともある変数 z&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; が T になっています。もし m が 1 か 2 の場合は x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;にすれば、変換後の節 C' が充足されます。もし &lt;/ins&gt;m が k&amp;amp;minus;1 か k の場合は、x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て T &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;にすれば節 C' が充足されます。もし &lt;/ins&gt;m が l の場合は、 x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;l-2&amp;lt;/sub&amp;gt; をすべて T にし、 x&amp;lt;sub&amp;gt;l-1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;にすれば C' が充足されます。 &lt;/ins&gt;T となるリテラルが1個以上の場合は T &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;の数が増えるだけなので、C' の充足性に変化はありません。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;逆に、置き換えた節 C' が充足可能である時は、必ず &lt;/ins&gt;z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; のいずれかが T &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;にならざるを得ませんから（背理法ですぐに証明できます）、もとの節 C が充足可能になります。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254146&amp;oldid=prev</id>
		<title>Adm: /* SAT問題と3-SAT問題 */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/CooksTheorem&amp;diff=254146&amp;oldid=prev"/>
				<updated>2011-10-06T05:00:03Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;SAT問題と3-SAT問題&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:00, 6 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: { { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; } } ... &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k-1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: { { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; } &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; } } ... &amp;amp;and; { &amp;amp;not;x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k-1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節に含まれる変数の数が 3 個以下の場合、上記の変換において、もとの節における変数のアサインメントで充足可能 &amp;amp;hArr; 置き換えた節が充足可能　であることがすぐにわかります。 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;変数を &lt;/del&gt;k 個含むときだけ少し面倒です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節に含まれる変数の数が 3 個以下の場合、上記の変換において、もとの節における変数のアサインメントで充足可能 &amp;amp;hArr; 置き換えた節が充足可能　であることがすぐにわかります。 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;新しく導入する変数のアサインメントは T でも F でもよいからです。変数を &lt;/ins&gt;k 個含むときだけ少し面倒です。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節　C = { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } が充足可能な時、少なくともある変数 z&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; が T になっています。もし m が 1 か 2 の場合は x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F にすれば、変換後の節が充足されます。もし m が k&amp;amp;minus;1 か k の場合は、x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て T にすれば変換後の節が充足されます。もし m が l の場合は、 x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;l-2&amp;lt;/sub&amp;gt; をすべて T にし、 x&amp;lt;sub&amp;gt;l-1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F にすれば充足されます。 T となるリテラルが1個以上の場合は T の数が増えるだけです。逆に、置き換えた節が充足可能である時、必ず z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; のいずれかが T にならざるを得ませんから（背理法ですぐに証明できます）、もとの節が充足可能です。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;もとの節　C = { z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, z&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; } が充足可能な時、少なくともある変数 z&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; が T になっています。もし m が 1 か 2 の場合は x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F にすれば、変換後の節が充足されます。もし m が k&amp;amp;minus;1 か k の場合は、x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て T にすれば変換後の節が充足されます。もし m が l の場合は、 x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;l-2&amp;lt;/sub&amp;gt; をすべて T にし、 x&amp;lt;sub&amp;gt;l-1&amp;lt;/sub&amp;gt; ... x&amp;lt;sub&amp;gt;k-3&amp;lt;/sub&amp;gt; を全て F にすれば充足されます。 T となるリテラルが1個以上の場合は T の数が増えるだけです。逆に、置き換えた節が充足可能である時、必ず z&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ... z&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; のいずれかが T にならざるを得ませんから（背理法ですぐに証明できます）、もとの節が充足可能です。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;以上をまとめると、任意のSAT問題を与えられたら、節の数とほぼ同数の変数を追加に用意するだけで等価な 3-SAT 問題を構成できることが示せました。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	</feed>