ผลต่างระหว่างรุ่นของ "204512-53/lecture11"
Chatchapol (คุย | มีส่วนร่วม) |
|||
(ไม่แสดง 22 รุ่นระหว่างกลางโดยผู้ใช้ 3 คน) | |||
แถว 1: | แถว 1: | ||
− | '''จดบันทึกคำบรรยายโดย: | + | '''จดบันทึกคำบรรยายโดย:'' |
− | นายชัชพล | + | นายชัชพล นุโยค รหัส 5214550049 (Part I) |
− | นายสุรเดช | + | นายสุรเดช วัฒนอุดมโรจน์ รหัส 5214550324 (Part I) |
+ | นายชัยณรงค์ เหมือนรุ่ง รหัส 5214550057 (Part II) | ||
+ | นายศศิน เทียนดี รหัส 5214550278 (Part II) | ||
+ | น.ส.นันทณัฏฐ์ ภูทอง รหัส 5214550171 (Part II) | ||
+ | น.ส.ชนาพร คุรุรัตน์พันธ์ รหัส 5214550031 (Part II) | ||
---- | ---- | ||
− | + | Part I | |
''' NP Completeness ''' | ''' NP Completeness ''' | ||
แถว 49: | แถว 53: | ||
ถ้าสมมติให้ Independent Set [[ไฟล์:NPComplete7.gif]] Vertex Cover | ถ้าสมมติให้ Independent Set [[ไฟล์:NPComplete7.gif]] Vertex Cover | ||
− | '''Lemma''' : พิจารณาเซต [[ไฟล์:NPComplete1.gif]] ใดๆ ให้ A เป็น imdenpendent set โดย V-A เป็น Vertec Cover | + | '''Lemma''' : พิจารณาเซต A [[ไฟล์:NPComplete1.gif]] V ใดๆ ให้ A เป็น imdenpendent set โดย V-A เป็น Vertec Cover |
'''Proof''' : Indenpendent set [[ไฟล์:NPComplete2.gif]]Vertex Cover | '''Proof''' : Indenpendent set [[ไฟล์:NPComplete2.gif]]Vertex Cover | ||
แถว 59: | แถว 63: | ||
X' = T(x) เป็น instance ของ B และ |X'| = Poly (|X|) | X' = T(x) เป็น instance ของ B และ |X'| = Poly (|X|) | ||
ถ้า x เป็น instance ตอบ "Yes" ใน A | ถ้า x เป็น instance ตอบ "Yes" ใน A | ||
− | + | => x' เป็น instance ตอบ "Yes" ใน B | |
ถ้า x เป็น instance ตอบ "No" ใน A | ถ้า x เป็น instance ตอบ "No" ใน A | ||
− | + | => x' เป็น instance ตอบ "No" ใน B | |
'''Lemma''' : ถ้า A [[ไฟล์:NPComplete2.gif]]B และมี Algorithm ที่แก้ปัญหา B ได้ใน Polynomial time จะมี Algorithm ที่แก้ปัญหา A ใน Polynomial time ได้ด้วย | '''Lemma''' : ถ้า A [[ไฟล์:NPComplete2.gif]]B และมี Algorithm ที่แก้ปัญหา B ได้ใน Polynomial time จะมี Algorithm ที่แก้ปัญหา A ใน Polynomial time ได้ด้วย | ||
แถว 85: | แถว 89: | ||
---- | ---- | ||
+ | Part II | ||
+ | |||
+ | [[ไฟล์:Np1.jpg]] | ||
+ | |||
+ | พิจารณา กราฟ G = (V,E) , C [[ไฟล์:NPComplete6.gif]] V เรียกว่า Clique | ||
+ | ก็ต่อเมื่อ [[ไฟล์:NPComplete4.gif]] u,v [[ไฟล์:NPComplete6.gif]] C ที่ u[[ไฟล์:NPComplete5.gif]]s | ||
+ | (u,v)[[ไฟล์:NPComplete6.gif]] E | ||
+ | |||
+ | |||
+ | == CLIQUE == | ||
+ | |||
+ | ให้กราฟ G = (V,E) และจำนวนเต็ม K | ||
+ | กราฟ G clique = (V,E') เป็น Complement ของ G | ||
+ | ถ้า | ||
+ | (u,v)[[ไฟล์:NPComplete6.gif]] E <--> (u,v)[[ไฟล์:Np-notnot.jpg]] E' | ||
+ | |||
+ | Lemma กราฟ G = (V,E) มี Independent Set ขนาด K ใน G clique = (V,E') มี Clique ของ K | ||
+ | Proof (->) | ||
+ | ให้ I เป็น Independent Set ขนาด K ใน G | ||
+ | พิจารณาโหนด u,v [[ไฟล์:NPComplete6.gif]] I ใดๆ ที่ u[[ไฟล์:NPComplete5.gif]]v เนื่องจาก ณ เป็น Indep ใน G(u,v)[[ไฟล์:Np-notnot.jpg]] E | ||
+ | จากนิยามของ G clique , จะได้ว่า (u,v) [[ไฟล์:NPComplete6.gif]] E clique | ||
+ | ดังนั้นทุกๆ u,v [[ไฟล์:NPComplete6.gif]] I ที่ u[[ไฟล์:NPComplete5.gif]]v ,(u,v)[[ไฟล์:NPComplete6.gif]] E Clique | ||
+ | นั้นคือ I เป็น Clique ใน G clique | ||
+ | เนทาองจาก |I| = K , G plus มี Clique ขนาด k 9k,9hv'dki | ||
+ | Proof (<-) | ||
+ | [[ไฟล์:TB-CLIQUE1.jpg]] | ||
+ | |||
+ | |||
+ | == SAT == | ||
+ | [[ไฟล์:TB-SAT.jpg]] '''Note :''' Clause ที่เป็นการ OR กับของตัวแปรหรือนิเสธของตัวแปร เรียกว่า Disjunction ตัวอย่างเช่น <math>(X_1 \lor X_2)</math> | ||
+ | |||
+ | == ปัญหา 3-Satisfiability (3-SAT) == | ||
+ | |||
+ | [[ไฟล์:TB-3SAT.jpg]] | ||
+ | |||
+ | รับค่า CNF Formula <math>\boldsymbol{\phi}</math> ที่แต่ละ clause มีตัวแปร <math>\le</math> 3 ตัว | ||
+ | ถามว่าทำให้ <math>\boldsymbol{\phi}</math> เป็นจริงได้หรือไม่ ? | ||
+ | :::กรณี <math>3-SAT \le_p SAT</math> | ||
+ | ในกรณีนี้เป็นจริงอยู่แล้วเพราะ 3-SAT เป็นกรณีเฉพาะของ SAT แต่เราต้องการพิสูจน์ว่า | ||
+ | :::<math>SAT \le_p 3-SAT</math> | ||
+ | plan: แสดงว่าสำหรับ CNF <math>\boldsymbol{\phi}</math> ใดๆ มีวิธีการสร้าง <math>\boldsymbol{\psi}</math> ที่เป็น 3-CNF ที่ | ||
+ | :::ถ้า <math>\boldsymbol{\phi} \in SAT, \boldsymbol{\psi} \in 3-SAT</math> | ||
+ | :::และถ้า<math>\boldsymbol{\phi} \notin SAT, \boldsymbol{\psi} \notin 3-SAT</math> | ||
+ | ในเวลา Polynomial time<br/> | ||
+ | ตัวอย่างที่ 1 | ||
+ | :::<math>\boldsymbol{\phi} = (X_1 \lor X_2 \lor \neg X_3 \lor X_4)</math> | ||
+ | ให้ใช้วิธีการเพิ่มตัวแปร <math>Z_1</math> จะเปลี่ยนไปอยู่ในรูป | ||
+ | :::<math>\boldsymbol{\psi} = (X_1 \lor X_2 \lor Z_1) \land (\neg X_3 \lor X_4 \lor \neg Z_1)</math> | ||
+ | ตัวอย่างที่ 2 | ||
+ | :::<math>\boldsymbol{\phi} = (X_1 \lor X_2 \lor \neg X_3 \lor X_4 \lor \neg X_5)</math> | ||
+ | ให้ใช้วิธีการเพิ่มตัวแปร <math>Z_1, Z_2</math> จะเปลี่ยนไปอยู่ในรูป | ||
+ | :::<math>\boldsymbol{\psi} = (X_1 \lor X_2 \lor \neg Z_1) \land (Z_1 \lor \neg X_3 \lor \neg Z_2) \land (Z_2 \lor X_4 \lor \neg X_5)</math> | ||
+ | <br/> | ||
+ | '''Note : '''การเติมตัวแปร Z จะต้องเติมแล้วทำให้ค่าความจริงของ <math>\boldsymbol{\phi}</math> equivalence กับค่าความจริงของ <math>\boldsymbol{\psi}</math> | ||
+ | |||
+ | === ปัญหา Independent Set === | ||
+ | นิยาม ให้ Undirected graph G = (V,E) จะกล่าวว่า <math>I \subseteq V</math> เป็น Independent Set ถ้าทุกๆ คู่ของโหนด <math>U, V \subseteq I</math> ไม่มีเส้นเชื่อมกัน<br/> | ||
+ | [[ภาพ:Independenset.jpg]]<br/> | ||
+ | ปัญหา Independent set ให้กราฟ G = (V,E) และ integer k, มี Independent set I ใน G ที่ <math>|I| \ge k</math> หรือไม่ ?<br/> | ||
+ | เราสามารถลดรูปปัญหา 3-SAT ไปเป็นปัญหา Independent set ได้<br/><br/> | ||
+ | <math>3-SAT \le_p </math>Independent set<br/> | ||
+ | ให้ 3-CNF Formular ที่ประกอบด้วย clauses <math>C_1,C_2,...,C_m</math> จะสร้างกราฟ G ดังนี้ | ||
+ | *พิจารณา clause C<sub>1</sub> สร้างโหนด V<sub>11</sub>,V<sub>12</sub>,V<sub>13</sub> สำหรับแต่ละตัวแปรหรือนิเสธของตัวแปรใน C<sub>1</sub><br/> | ||
+ | *เพิ่มเส้นเชื่อม (V<sub>11</sub>,V<sub>12</sub>),(V<sub>11</sub>,V<sub>13</sub>),(V<sub>13</sub>,V<sub>11</sub>)<br/> | ||
+ | *สำหรับโหนดที่แทนตัวแปรกับนิเสธของตัวแปรเดียวกับเพิ่มเส้นเชื่อมระหว่างโหนดเหล่านี้<br/><br/> | ||
+ | :::<math>(X_1 \lor X_2 \lor X_3) \land (\neg X_1 \lor X_2 \lor \neg X_4) \land (X_4 \lor \neg X_3 \lor \neg X_2)</math> | ||
+ | [[ภาพ:3-SAT.jpg]]<br/> | ||
+ | :::ถ้า <math>\boldsymbol{\phi} \in 3-SAT</math> จะมี independence set ขนาด m ใน G | ||
+ | :::ถ้ามี independence set ขนาด m ใน G <math>\Rightarrow \boldsymbol{\phi} \in 3-SAT</math> | ||
+ | |||
+ | == Class NP (Non-deterministic Polynomial time) == | ||
+ | ปัญหา L จะอยู่ใน <math>\mathbb{N}\mathbb{P}</math> ถ้ามี polynomail time algorithm V ที่ <math>\forall x \in L</math> มี certificate P ที่ <math>\left | P \right | = poly \left ( \left | x \right | \right )</math> และ V(x,p) = 1<br/> | ||
+ | แล้ว <math>\forall x \in L</math>, <math>V \left ( x,P \right ) = 1</math> | ||
+ | และ <math>\forall x \notin L</math>, <math>V \left ( x,P \right ) = 0</math><br/> | ||
+ | '''สรุป ปัญหา NP''' คือกลุ่มปัญหาที่สามารถตรวจคำตอบได้ภายใน polynomial time ซึ่งปัญหาง่ายๆ ก็อยู่ใน NP ด้วย<br/> | ||
+ | '''ปัญหา NP-Complete : '''ปัญหา <math>X \in </math>NP-Complete ถ้าสำหรับทุกปัญหา <math>Y \in NP</math> แล้ว <math>Y \le_p X</math><br/> | ||
+ | '''Cook-Lavin Theorem''' -> Proof ว่า SAT เป็น NP-Complete<br/><br/> | ||
+ | :::<math>SAT \le_p 3-SAT \le_p Independent set</math><br/> | ||
+ | สรุป ทั้ง 3-SAT และ independent set เป็น NP-Complete<br/> | ||
+ | '''Note : '''Steps ในการแสดงว่าปัญหา X เป็น NP-Complete คือ <br/> | ||
+ | 1. Proof ว่า <math> X \in NP </math> 2. Proof ว่ามีปัญหา Y ที่เป็น NP-Complete ที่ <math> Y \le_p X </math> | ||
+ | |||
+ | |||
+ | === ปัญหา Vertex Cover === | ||
+ | เซต <math>\mathbf{C}</math> เป็น Vertex Corver ของกราฟ <math>\mathbf{G} = (\mathbf{V},\mathbf{E})</math> ถ้า <math>C \subseteq V</math> และทุกๆ edge <math>(U,V) \in E, U \in C</math> หรือ <math> V \in C</math><br/> | ||
+ | ปัญหา Vertex Corver จะให้กราฟ <math>\mathbf{G}</math>, integer k ถามว่า <math>\mathbf{G}</math> มี vertex corver ที่มีขนาด <math>\le</math> k หรือไม่ ?<br\> | ||
+ | *Independent set <math>\le_p</math> Vertex Corver<br\> | ||
+ | **'''Lemma''' พิจารณากราฟ <math>\mathbf{G} = (\mathbf{V},\mathbf{E}), I \subseteq V</math> เป็น Independent Set<br/> | ||
+ | (รูปภาพ) | ||
+ | <br/> | ||
+ | รับกราฟ <math>\mathbf{G}</math> ถามว่ามี independent set <math>\le</math> k ? | ||
+ | สร้าง instance ของ Vertex Corver ที่มีกราฟ <math>\mathbf{G}</math> ถามว่าใน <math>\mathbf{G}</math> มี Vertex Corver ขนาด n-k หรือไม่ ? เมื่อ n = จำนวนโหนดใน <math>\mathbf{G}</math><br\> | ||
+ | <br/> | ||
+ | Vertex Corver เป็น NP Complete เนื่องจากสามารถตรวจได้ว่ากราฟมี Vertex Corver ขนาดไม่เกิน k โดยใช้ Certificate เป็น Vertex Corver นั้น <math>\Rightarrow VC \in NP</math> | ||
+ | |||
+ | === ปัญหา 3-Color บทเรียนเก่า(เพิ่มเติม) === | ||
+ | ให้กราฟ <math>\mathbf{G}</math> ต้องการกำหนดสีให้กับแต่ละโหนด โดยที่คู่ของโหนดที่มีเส้นเชื่อมถึงกันห้ามใช้สีเดียวกัน สามารถทำได้โดยใช้สี <math>\le</math> 3 สีหรือไม่ ?<br/> | ||
+ | [[ภาพ:3-Color.jpg]]<br/> | ||
+ | จะแสดงว่า 3-Color เป็น NP Complete<br/> | ||
+ | 1. แสดงว่า <math>3-Color \in NP</math> | ||
+ | :ใช้การกำหนดสีให้กับแต่ละโหนดเป็น Certificate ตรวจว่า | ||
+ | ::1) ใช้สีไม่เกิน 3 สี | ||
+ | ::2)ไม่มี edge เติมโหนดที่มีปัญหาทำได้ polynomial time | ||
+ | ::ซึ่งสามารถทำได้ใน polynomial time<br/> | ||
+ | 2. แสดงว่า <math>3-Color \le_p 3-SAT</math><br/> | ||
+ | :กำหนดโหนด 3 โหนดแทนสี 3 สี จากนั้นสร้างกราฟดังนี้<br/> | ||
+ | [[ภาพ:3-Color2.jpg]]<br/> | ||
+ | :ถ้าให้ clause <math> X_1 \lor \neg X_2 \lor X_3</math> ต้องสร้างกราฟให้มีตัวใดตัวหนึ่งเป็นจริงและอีก 2 ตัวเป็น false ได้กราฟดังนี้<br/> | ||
+ | [[ภาพ:3-Color3.jpg]]<br/> | ||
+ | :กราฟนี้จะบังคับให้ต้องมีตัวใดตัวหนึ่งเป็น True นั่นคือ <math>3-Color \le_p 3-SAT</math><br/> |
รุ่นแก้ไขปัจจุบันเมื่อ 06:42, 12 ตุลาคม 2553
'จดบันทึกคำบรรยายโดย:
นายชัชพล นุโยค รหัส 5214550049 (Part I) นายสุรเดช วัฒนอุดมโรจน์ รหัส 5214550324 (Part I) นายชัยณรงค์ เหมือนรุ่ง รหัส 5214550057 (Part II) นายศศิน เทียนดี รหัส 5214550278 (Part II) น.ส.นันทณัฏฐ์ ภูทอง รหัส 5214550171 (Part II) น.ส.ชนาพร คุรุรัตน์พันธ์ รหัส 5214550031 (Part II)
Part I NP Completeness
NP: Non-deterministic Polynomial time คือ เซตของ Algorithm ที่ไม่สามารถแก้ไขปัญหาได้ในเวลาที่เป็น polynomial โดยการนิยามเซตของปัญหาเพื่อประโยชน์ในการเปรียบเทียบระดับความยาก-ง่ายของ Algorithm ซึ่งเซตของปัญหาสามารถแบ่งเป็นเซต P, NP, NP-hard และ NP-complete
ในการเปรียบเทียบ Algorithm ใดๆ เราจะทำการพิจารณา Algorithm ว่าจัดอยู่ในเซตของปัญหาใด โดยใช้เทคนิคการลดรูปของปัญหา (Reduction) ว่าเป็นกลุ่มเดียวกับปัญหาที่อยู่ในเซตหรือไม่ ถ้าอยู่ในกลุ่มเดียวกันจะกล่าวว่า Algorithm มีความยากเท่ากัน ความยาก คือ มี Algorithm ที่มีประสิทธิภาพแก้ไขปัญหาหรือไม่
ปัญหา A สัมพันธ์ ปัญหา B
ปัญหา A ไม่ยากไปกว่า ปัญหา B
โดยมีความหมายว่า ถ้ามี Algorithm ที่สามารถแก้ปัญหา B ได้ ปัญหา A ก็จะสามารถแก้ได้เช่นกัน
ปัญหาที่ 1 : Independent Set เป็นปัญหากลุ่ม Decision Problem
นิยาม : ให้ Undirected graph G = (V, E) จะกล่าวว่า I V เป็น Independent Set ก็ต่อเมื่อ สำหรับทุกๆโหนด U,V I, U V ไม่มีเส้นเชื่อมระหว่าง U และ V
ปัญหา : ให้กราฟ G = (V, E) และ integer k, มี Independent set ขนาด ≥ k หรือไม่
ในภาพทำการเลือกโหนด (k) เท่ากับ 1 จะกล่าวว่ามี Independent set ขนาด 1
สามารถนำไปใช้แก้ปัญหา หาคนที่ไม่รู้จักกันในห้อง หรือ การเปิด-ปิดไฟแดงที่แยก
ปัญหาที่ 2 : Vertex Cover
นิยาม : C V เป็น Vertex Cover ก็ต่อเมื่อ (U,V) E,U C หรือ V C
ปัญหา : ให้กราฟ G = (V, E) และ จำนวนเต็ม k ถามว่ามี vertex cover ขนาด ≤ k หรือไม่
ถ้าสมมติให้ Independent Set Vertex Cover
Lemma : พิจารณาเซต A V ใดๆ ให้ A เป็น imdenpendent set โดย V-A เป็น Vertec Cover
Proof : Indenpendent set Vertex Cover
นิยาม : ปัญหา A เป็น Polynomial time เพื่อลดปัญหา B ถ้ามี Algorithm T ที่ทำงานใน Polynomial time สำหรับทุกๆ instance X ของ A จะได้ T(x) เป็น instance ของ B
X' = T(x) เป็น instance ของ B และ |X'| = Poly (|X|)
ถ้า x เป็น instance ตอบ "Yes" ใน A => x' เป็น instance ตอบ "Yes" ใน B
ถ้า x เป็น instance ตอบ "No" ใน A => x' เป็น instance ตอบ "No" ใน B
Lemma : ถ้า A B และมี Algorithm ที่แก้ปัญหา B ได้ใน Polynomial time จะมี Algorithm ที่แก้ปัญหา A ใน Polynomial time ได้ด้วย
Proof : ให้ M เป็น Polynomial time Algorithm ที่แก้ปัญหา B จะได้ว่า A B นั้นคือ มี Polynomial time Algorithm T ที่ instance x ของ A x' = T(x) มีขนาด poly(|x|) และคำตอบของ x ในปัญหา A ตรงกับของ x' ในปัญหา B
สำหรับ Algorithm M' ดังนี้
M'(x) : x' = T(x) return M(x')
แต่เนื่องจาก |x'| = poly(|x|)
ดังนั้น เวลาในการคำนวณ M(x')คือ poly(|x'|) = poly(poly(|x|)) = poly(|x|)
จากนิยาม M'(x) เป็นคำตอบของ x ใน A เหลือแต่ต้องตรวจสอบว่า M' ทำงานใน Polynomial time หรือ poly(|x|)
Part II
พิจารณา กราฟ G = (V,E) , C V เรียกว่า Clique ก็ต่อเมื่อ u,v C ที่ us (u,v) E
เนื้อหา
CLIQUE
ให้กราฟ G = (V,E) และจำนวนเต็ม K กราฟ G clique = (V,E') เป็น Complement ของ G ถ้า (u,v) E <--> (u,v) E'
Lemma กราฟ G = (V,E) มี Independent Set ขนาด K ใน G clique = (V,E') มี Clique ของ K Proof (->) ให้ I เป็น Independent Set ขนาด K ใน G พิจารณาโหนด u,v I ใดๆ ที่ uv เนื่องจาก ณ เป็น Indep ใน G(u,v) E จากนิยามของ G clique , จะได้ว่า (u,v) E clique ดังนั้นทุกๆ u,v I ที่ uv ,(u,v) E Clique นั้นคือ I เป็น Clique ใน G clique เนทาองจาก |I| = K , G plus มี Clique ขนาด k 9k,9hv'dki
Proof (<-)
SAT
Note : Clause ที่เป็นการ OR กับของตัวแปรหรือนิเสธของตัวแปร เรียกว่า Disjunction ตัวอย่างเช่น
ปัญหา 3-Satisfiability (3-SAT)
รับค่า CNF Formula ที่แต่ละ clause มีตัวแปร 3 ตัว ถามว่าทำให้ เป็นจริงได้หรือไม่ ?
- กรณี
ในกรณีนี้เป็นจริงอยู่แล้วเพราะ 3-SAT เป็นกรณีเฉพาะของ SAT แต่เราต้องการพิสูจน์ว่า
plan: แสดงว่าสำหรับ CNF ใดๆ มีวิธีการสร้าง ที่เป็น 3-CNF ที่
- ถ้า
- และถ้า
ในเวลา Polynomial time
ตัวอย่างที่ 1
ให้ใช้วิธีการเพิ่มตัวแปร จะเปลี่ยนไปอยู่ในรูป
ตัวอย่างที่ 2
ให้ใช้วิธีการเพิ่มตัวแปร จะเปลี่ยนไปอยู่ในรูป
Note : การเติมตัวแปร Z จะต้องเติมแล้วทำให้ค่าความจริงของ equivalence กับค่าความจริงของ
ปัญหา Independent Set
นิยาม ให้ Undirected graph G = (V,E) จะกล่าวว่า เป็น Independent Set ถ้าทุกๆ คู่ของโหนด ไม่มีเส้นเชื่อมกัน
ปัญหา Independent set ให้กราฟ G = (V,E) และ integer k, มี Independent set I ใน G ที่ หรือไม่ ?
เราสามารถลดรูปปัญหา 3-SAT ไปเป็นปัญหา Independent set ได้
Independent set
ให้ 3-CNF Formular ที่ประกอบด้วย clauses จะสร้างกราฟ G ดังนี้
- พิจารณา clause C1 สร้างโหนด V11,V12,V13 สำหรับแต่ละตัวแปรหรือนิเสธของตัวแปรใน C1
- เพิ่มเส้นเชื่อม (V11,V12),(V11,V13),(V13,V11)
- สำหรับโหนดที่แทนตัวแปรกับนิเสธของตัวแปรเดียวกับเพิ่มเส้นเชื่อมระหว่างโหนดเหล่านี้
- ถ้า จะมี independence set ขนาด m ใน G
- ถ้ามี independence set ขนาด m ใน G
Class NP (Non-deterministic Polynomial time)
ปัญหา L จะอยู่ใน ถ้ามี polynomail time algorithm V ที่ มี certificate P ที่ และ V(x,p) = 1
แล้ว ,
และ ,
สรุป ปัญหา NP คือกลุ่มปัญหาที่สามารถตรวจคำตอบได้ภายใน polynomial time ซึ่งปัญหาง่ายๆ ก็อยู่ใน NP ด้วย
ปัญหา NP-Complete : ปัญหา NP-Complete ถ้าสำหรับทุกปัญหา แล้ว
Cook-Lavin Theorem -> Proof ว่า SAT เป็น NP-Complete
สรุป ทั้ง 3-SAT และ independent set เป็น NP-Complete
Note : Steps ในการแสดงว่าปัญหา X เป็น NP-Complete คือ
1. Proof ว่า 2. Proof ว่ามีปัญหา Y ที่เป็น NP-Complete ที่
ปัญหา Vertex Cover
เซต เป็น Vertex Corver ของกราฟ ถ้า และทุกๆ edge หรือ
ปัญหา Vertex Corver จะให้กราฟ , integer k ถามว่า มี vertex corver ที่มีขนาด k หรือไม่ ?<br\>
- Independent set Vertex Corver<br\>
- Lemma พิจารณากราฟ เป็น Independent Set
- Lemma พิจารณากราฟ เป็น Independent Set
(รูปภาพ)
รับกราฟ ถามว่ามี independent set k ?
สร้าง instance ของ Vertex Corver ที่มีกราฟ ถามว่าใน มี Vertex Corver ขนาด n-k หรือไม่ ? เมื่อ n = จำนวนโหนดใน <br\>
Vertex Corver เป็น NP Complete เนื่องจากสามารถตรวจได้ว่ากราฟมี Vertex Corver ขนาดไม่เกิน k โดยใช้ Certificate เป็น Vertex Corver นั้น
ปัญหา 3-Color บทเรียนเก่า(เพิ่มเติม)
ให้กราฟ ต้องการกำหนดสีให้กับแต่ละโหนด โดยที่คู่ของโหนดที่มีเส้นเชื่อมถึงกันห้ามใช้สีเดียวกัน สามารถทำได้โดยใช้สี 3 สีหรือไม่ ?
จะแสดงว่า 3-Color เป็น NP Complete
1. แสดงว่า
- ใช้การกำหนดสีให้กับแต่ละโหนดเป็น Certificate ตรวจว่า
- 1) ใช้สีไม่เกิน 3 สี
- 2)ไม่มี edge เติมโหนดที่มีปัญหาทำได้ polynomial time
- ซึ่งสามารถทำได้ใน polynomial time
2. แสดงว่า
- กำหนดโหนด 3 โหนดแทนสี 3 สี จากนั้นสร้างกราฟดังนี้
- ถ้าให้ clause ต้องสร้างกราฟให้มีตัวใดตัวหนึ่งเป็นจริงและอีก 2 ตัวเป็น false ได้กราฟดังนี้
- กราฟนี้จะบังคับให้ต้องมีตัวใดตัวหนึ่งเป็น True นั่นคือ