51
ANALISIS ALGORITMA JIMMY TIRTAWANGSA <[email protected]> PROGRAM PASCA SARJANA INFORMATIKA UNIVERSITAS TELKOM Semester II 2018-2019

Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Embed Size (px)

Citation preview

Page 1: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

ANALISIS ALGORITMAJIMMY TIRTAWANGSA<[email protected]>

PROGRAM PASCA SARJANA INFORMATIKAUNIVERSITAS TELKOMSemester II 2018-2019

Page 2: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Jadwal● Awal: 28 Januari 2019● PR 1: 7 Maret 2019● TUGAS 1: 21 Maret 2019● UTS: 18 Maret 2019● PR 2: 9 Mei 2019● TUGAS 2: hari ke-(UAS+3)● UAS: TBD (13/20 Mei 2019)

Pertemuan:

Tiap Senin pagi 9:00 - 11:30

Page 3: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Tugas, Nilai, dan IndeksSumber Penilaian:

● UAS 40%● UTS 25%● TUGAS 20%● Kuis & PR 15%

Batas Minimum Indeks:

A. > 70B. -C. -D. < 50E. -

Tugas dan Homework:● Tugaspemrograman di spoj.com

○ signup○ pilih problem yang diumumkan○ tugas submit disini

● submit PR ke email [email protected]

● perhatikan tanggal batas akhir submisi

Page 4: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Rujukan dan Sumber Informasi Harus:

● Cormen, Leserson, Rivest, and Sten: Introduction to Algorithms 3rd ed.

● Kleinberg and Tardos: Algorithm Design● Levitin: Design & Analysis of Algorithms● Gunakan Internet

○ Berbagai materi sejenis di tempat lain○ Google: lecture notes○ Youtube : coursewares○ eBooks

● Diskusi● Banyak latihan sendiri● Hadiri dan ikuti diskusi kelas

Jangan:● Gunakan Internet

○ Untuk Copy solusi (Baca boleh, tapi bukan untuk disalin mentah2)

○ Melakukan tindak plagiat, baik tulisan maupun program○ Saat hadir di kelas (otak anda yang sedang dilatih, situs

Google tidak perlu dilatih lagi)● Bekerja sama, nyontek, dll

○ (Boleh diskusi untuk persiapan PR, tugas dan sebelum ujian)

○ (Tapi pada saat pembuatannya harus bekerja sendiri dengan kata2 sendiri)

● Terlambat submisi● Membuat alasan untuk tidak ikut ujian

● https://jimmytirtawangsa.staff.telkomuniversity.ac.id/

Page 5: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Vertex Cover

● Given an graph G=(V, E)● Find the smallest subset C ⊆ V, such that for ∀(𝒖,𝒗)∈E, then either 𝒖 or 𝒗 or

both is in C● Minimal VC (⇨)● Minimum VC (⇓)

Page 6: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Vertex Cover for Bipartite

● Use Matching solution for Bipartite graph● Create alternative paths starting from unmatched vertex K

○ All matched vertex in L in the path should be in C

● Create alternative paths starting from unmatched vertex L○ All matched vertex in K in the path should be in C

● For unselected matched edges,○ Pick all vertices from the K side (or L side if you prefer) to be in C

● Proof (by Contradiction)○ Suppose the resulting vertex cover C is not minimum (i.e. C is only minimal)○ So, there is another cover C’ (by a different algorithm), where |C’| < |C|○ Let c’ be a subset of C’ that is not intersect w/C, similarly defined for c○ An edge (u,v) must be covered by either u, v or both.○ ...

Page 7: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Vertex Cover for Stars, Trees, and Forest

● Start from leaves (have degree 1)● All leaves parents should be in C

○ Remove leaves and their parents

● Repeat the proces until all edges are processed● Similarly, show the proof (by contradiction)

Page 8: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Vertex Cover for Complete Graph

Page 9: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Vertex Cover

● For some finding minimal is easy● But not for finding the minimum

Page 10: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Indipendent Set

● Given an graph G=(V, E)● Find the largest subset IS ⊆ V, such that for any {𝒖,𝒗}⊆IS, then (𝒖,𝒗)∉E● Some IS (⇨)● Maximum IS (⇓)● Relationship between IS and VC

○ IS ⋃ VC = V and IS ⋂ VC = ∅○ Proof (also by contradiction)

Page 11: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Clique Problem

● Given an graph G=(V, E)● Find the largest subset CL ⊆ V, such that for all {𝒖,𝒗}⊆CL, then (𝒖,𝒗)∈E

○ i.e. the largest complete subgraph in G

● Relationship between IS and Clique○ Proof (again by contradiction)

Page 12: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Easy Problems and Hard Problems

Page 13: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Easy Problems and Hard Problems

● Optimization problems○ e.g. Find maximum values from a set of data

● Decision problems○ e.g. Does certain value exist in a set of data?

● Search problems○ e.g. Find certain value in a set of data

● Are they equivalent?○ Opt ⇒ Dec, just buy checking the result against wanted value○ Dec ⇒ Opt, by repeating the Dec process (polinomially) smartly, Opt value can be found

● So starting from now (unless state otherwise), we are using the Decision/Search version of the problem.

Page 14: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Komputer Deterministik dan Non-deterministik

● Komputer deterministik○ Instruksi berikutnya sudah tertentu (baik karena sekuensial, kondisional, ataupun iteratif)○ → Hanya satu pilihan instruksi untuk dikerjakan○ → Hanya ada satu alur instruksi○ Waktu eksekusi dihitung dari instruksi awal (start) dan berakhir di instruksi akhir (end)

● Komputer non-deterministik○ Instruksi berikutnya berasal dari satu pool instruksi yang legal dilakukan (mirip konkurensi)○ → Mungkin saja ada beberapa instruksi yang secara legal boleh dilaksanakan○ → Pilihan alur instruksi dapat berkembang biak○ Waktu eksekusi dihitung seperti komp. deterministik, tetapi hanya pada alur yang berhenti

secara legal paling awal

● → Deterministik merupakan kasus khusus Non-deterministik

Page 15: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Problem P dan NP

● Jenis problem yang akan dibahas adalah problem dengan waktu eksekusi polinomial pada komputer non-deterministik!

○ waktu polinomial berarti T(n) = O(nc) dimana n = ukuran input dan c konstan > 0■ Ini termasuk O(n), O(n2), O(n lg n), dll, tapi tidak termasuk O(n!), O(2n), O(nn)

○ Karakteristik suatu problem dinyatakan oleh solusi terbaik yang mungkin dibuat■ Bahwa sorting dapat dilakukan dalam waktu O(n.n!) bukan berarti problem tersebut

tergolong problem non-polinomial.■ Sebaliknya jika ada satu input/instan vertex cover (misalnya instan graf berbentuk tree)

dapat diselesaikan dalam waktu O(nc) tidak berarti problem vertex cover adalah problem mudah (easy). Klasifikasi easy/hard bukan per instan tertentu tapi terhadap problem tersebut.

● Ada juga problem dengan T(n) > O(nc) pada komputer nondeterministik

Page 16: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Solusi Vertex CoverInput graf G=(V,E) // n=|V| dan m=|E|1. forall subset W ⊆ V do // ada 2n subset → ada 2n alur eksekusi2. if W meng-cover E then3. sleep |W| times4. else5. sleep forever6. endif7. return W8. endforall

Waktu eksekusi untuk instruksi dicetak tebal …● Uji W meng-cover E : O(|E|) dengan men-tag semua tetangga W dan memeriksa semua dalam E● Sleep |W| times : O(|V|)● Sehingga total TVC = O(|V|+|E|)

Page 17: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Problem NP (NP Class Problems)

● Problem komputasi dengan waktu O(nc) di komputer non-deterministik● Kompleksitas problem optimasi dan pencarian hanya berbeda O(nc)

○ Maka problem yang dibahas berbentuk problem pencarian● Bentuk umum solusi:

○ Generate semua kemungkinan solusi○ Secara non-deterministik (aka. paralel), uji apakah kandidat solusi betul?○ Pilih jawaban betul yang paling cepat diperoleh

● Fokus pada algoritma pengujian/verifikasi kandidat → TUJI = O(nc)○ Diberikan suatu instan problem (aka. satu set input problem tersebut)○ Dan satu sertifikat problem tersebut (biasanya. klaim output untuk problem tersebut)○ Waktu untuk algoritma pengujian benar/tidaknya sertifikat untuk instan problem tersebut.

● Contoh verifikasi untuk:○ Sorting, Searching, Vertex Cover, ...

Page 18: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Problem P (P Class Problems)

● Problem komputasi dengan waktu O(nc) di komputer deterministik● Karena itu pembuktian sebuah problem tergolong P, dengan

○ Menunjukkan solusi/algoritma yang mempunyai kompleksitas O(nc)

● Contoh:○ Semua problem yang pernah dibahas sebelum UTS○ Berbagai problem di DAP, Struktur Data, DAA dengan kompleksitas algoritma O(nc)

Page 19: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-HardnessSesulit semua problem NP

Page 20: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Problem SAT (Assignment Ekspresi Logika)

● Diberikan himpunan 𝒏 variabel logik dan ekspresi CNF dengan 𝒎 klausa● Setiap klausa terdiri dari 𝒍 literal dan setiap literal berupa (𝒙) atau (¬𝒙)● Sebuah klausa True jika sedikitnya satu literalnya True (operasi OR)● Ekspresi CNF True jika semua klausanya True (operasi AND)

● Problem: Adakah assignment ke semua variabel sehingga ekspresi bernilai True?

● Contoh:○ Variabel logika: a, b, c, d○ Klausa: (a,b,c,d), (¬a,¬b), (a,¬c,d), (¬b,¬c,d)○ Q: Assignment a, b, c, dan d agar semua klausa bernilai True.

Page 21: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Problem SAT (Assignment Ekspresi Logika)

● Apakah Problem SAT tergolong NP?○ Diberikan suatu instan SAT dengan n variabel dan m klausa○ Dan sertifikat instan SAT tersebut, yaitu klaim assignment untuk setiap variabelnya○ Bukti adalah algoritma verifikasi kebenaran sertifikat tersebut untuk instan tersebut○ Dan kompleksitas algoritma verifikasi adalah O(𝒎c)

● Contoh:○ Variabel logika: a, b, c, d○ Klausa: (a,b,c,d), (¬a,¬b), (a,¬c,d), (¬b,¬c,d)○ Sertifikat: a=True, b=False, c=False, d=True○ Verifikator:

■ Ganti semua literal dengan nilai variabel yang diberikan → O(nm)■ Evaluasi tiap klausa, True jika sedikitnya salah satu literalnya True. → O(nm)■ Periksa bahwa semua klausa memang bernilai True → O(m)■ Total kompleksitas TVERIFIKATOR SAT(n,m) = O(nm)

Page 22: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

● Klausa dengan 1 literal menentukan nilai yang harus diassign untuk variabel-nya○ Singkirkan semua klausa yang mempunyai literal tersebut tersebut dari daftar○ Hapus literal kebalikannya dari semua klausa yang lain (karena bernilai False)○ Singkirkan variabel untuk literal tersebut dari daftar○ Ulangi sampai semua klausa 1 literal habis

● Cari semua variabel yang hanya digunakan dalam satu bentuk literal (positif/negatif saja)○ Assign variabel dengan nilai sesuai, agar literal menjadi True○ Singkirkan semua klausa pengguna literal tersebut dari daftar klausa○ Ulangi sampai semua variabel dengan satu bentuk literal habis

● ...● Proses diatas memerlukan O(nm + nm) → problem P

2-SAT (Semua klausa dengan literal < 2)

Page 23: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

● Dengan metoda DFS, assign variabel dengan nilai True/False○ Buat graf dengan setiap literal sebagai vertex (1 variabel menjadi 2 node)○ Dalam satu klausa (a,b), jika a False, maka b harus True dan sebaliknya, maka buat edge

(¬a,b) dan (a,¬b)○ Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

■ Tidak ada assignment jika ditemukan path v … ¬v dan sebaliknya ¬v … v● Proses diatas memerlukan O(2n + 2m+ 4nm)=O(nm) → problem P

2-SAT (Semua klausa dengan literal 2)

Page 24: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

3-SAT (Semua klausa mempunyai 3 literal)

● Algoritma verifikator SAT umum juga berlaku untuk 2-SAT dan 3-SAT○ → 2-SAT dan 3-SAT adalah problem (tergolong) NP

● Solusi untuk 3-SAT?○ Cara yang sama dengan 2-SAT sulit diterapkan karena melibatkan 3 literal

Page 25: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Stephen Cook and Leonard Levin

Page 26: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Correctness of O(nc) NP Solutions

● Algoritma yang benar dengan waktu eksekusi O(nc)○ mengeksekusi a.nc langkah, a>0, c>0

○ setiap langkah, mengubah konfigurasi, i.e isi variabel, status, dlsb.○ algoritma benar berarti konfigurasi setiap langkah juga benar○ data input termasuk dalam konfigurasi awal (tersimpan dalam inisialisasi variabel)○ output ada dalam konfigurasi akhir○ AND semua konfigurasi menunjukkan langkah2 benar dari instruksi awal sampai akhir.○ ⇒ Membentuk ekspresi logika representasi perjalanan eksekusi algoritma○ ⇒ Apa nilai variabel2 setiap saat agar konfigurasi setiap langkah benar?○ ⇒ Jika ada assignment seperti itu, algoritma berjalan dengan benar, dan assignment pada

variabel pada konfigurasi terakhir menunjukkan output yang dicari.

Page 27: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Correctness of O(nc) NP Solutions

● Kerumitan koleksi konfigurasi:○ Per satu instruksi hanya mengubah satu variabel/status○ Ada O(nc) eksekusi, sehingga ukuran konfigurasi maksimum O(nc)○ Total perubahan konfigurasi ≈ jumlah eksekusi, O(nc)○ ⇒ Besar ekspresi logika yang merepresentasi eksekusi algoritma juga O(nc)

● Solusi ekspresi tersebut dapat menggantikan eksekusi algoritma○ Set konfigurasi awal○ Cari setting variabel yang membuat seluruh konfigurasi benar○ Cek konfigurasi akhir

● Semua problem NP dapat dijawab dengan bantuan SAT solver dalam O(nc)● ⇒ SAT is NP-hard karena SAT sesulit semua problem NP lain

Page 28: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Cook-Levin Theorem

● Sebuah problem adalah NP-Hard jika setiap problem NP dapat direduksi menjadi problem tersebut

● Sebuah problem disebut NP-Complete jika NP dan sekaligus NP-Hard● Cook-Levin says that: SAT Problem is NP-Complete

○ SAT is NP○ SAT is NP-Hard○ ⇒ SAT adalah problem pertama yang terbukti NP-Complete

Page 29: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-Hard dan NP-Complete

● Jika problem 𝐵 diketahui NP, metoda reduksi dapat menjawab 𝐵○ Gunakan problem 𝑌 diketahui NP-Hard sebagai solver○ Proses reduksi, yaitu transformasi instan problem 𝐵 menjadi instan problem 𝑌.○ Dan (bila perlu) transformasi output solver 𝑌 menjadi output untuk 𝐵○ Total biaya menjawab 𝐵 menggunakan solver 𝑌 adalah TTRANSFORMASI_INSTAN + TRUNNING_Y

● Jika problem 𝐴 diketahui NP-Complete, metoda reduksi dapat menyimpulkan problem 𝑋○ Gunakan problem 𝑋 sebagai solver untuk problem 𝐴○ Proses reduksi, yaitu transformasi instan problem 𝐴 menjadi instan problem 𝑋.○ Total biaya menjawab 𝐴 menggunakan solver 𝑋 adalah TTRANSFORMASI_INSTAN + TRUNNING_X○ ⇒ per implikasi semua problem NP dapat direduksi ke problem 𝑋

Page 30: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-Hard dan NP-Complete

● Jika problem 𝐴 diketahui NP-Complete, metoda reduksi dapat menyimpulkan problem 𝑋○ Gunakan problem 𝑋 sebagai solver untuk problem 𝐴○ Proses reduksi, yaitu transformasi instan problem 𝐴 menjadi instan problem 𝑋.○ Total biaya menjawab 𝐴 menggunakan solver 𝑋 adalah TTRANSFORMASI_INSTAN + TRUNNING_X○ ⇒ per implikasi semua problem NP dapat direduksi ke problem 𝑋

● TTRANSFORMASI_INSTAN = O(nc) untuk mengetahui tentang 𝑋○ Jika TRUNNING_X=O(nc) maka semua problem NP juga O(nc) atau P == NP○ Jika semua problem NP-Complete T = 𝛚(nc) maka P ⊂ NP

Page 31: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

3-SAT NP Hardness

● Reduction from SAT○ 1 and 2 literal clauses, i.e. (𝐱) and (𝐱, 𝐲)

■ add 2 and 1 dummy variables to produce 4 and 2 new clauses■ original 1 clause: (𝐱, 𝐚, 𝐛), (𝐱, 𝐚, ¬𝐛), (𝐱, ¬𝐚, 𝐛), and (𝐱, ¬𝐚, ¬𝐛), ■ original 2 clauses: (𝐱, 𝐲, 𝐚) and (𝐱, 𝐲, ¬𝐚)■ Evaluate that the dummy variables will make no difference to the final results

○ exactly 3 literal clauses○ c > 3 literal clauses

■ add c-3 new dummy variables that act as links between newly created 3 literal clauses■ eg. (𝐮, 𝐯, 𝐰, 𝐱, 𝐲), c = 5, so needs c-3=2 new dummies; 𝐚, 𝐛■ (𝐮, 𝐯, 𝐚), (¬𝐚, 𝐰, 𝐛), (¬𝐛, 𝐱, 𝐲)■ Again evaluation of the new clauses will reveal dummies have no influence to final result

○ Total cost is to cost to create new dummies and new clauses■ new dummies = O((c-3)m)=O(nm) and new clauses = O((c-2)m) = O(nm)

Page 32: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

3-SAT is NP-Complete

1. Show it is NPa. Create a verification process of any instance against its certificateb. Calculate the verification cost is in polynomial, i.e. it is O(nc) for instance size n,

and positive c2. Show it is NP-Hard

a. Create a reduction process of (mainly) input of a known NP-Complete problemb. Show that the reduction is correct, i.e.

i. The original input will give True output for the original NP-C problem,ii. iff the transformed input will give True output for the on-study problem.

c. Calculate that the reduction cost is in polynomial.i. Usually it means the size of the transformed input is in O(nc) of the

original NP-C input size.

Page 33: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-Completeness of Vertex Cover1. ex. Show that VC is NP in O(|V|.|E|)2. Show that VC is NP-Hard; by reduction from 3SAT to VC

a. Reduction from input for 3SAT to input for VC:i. for each defined variable, create two vertices and an edge connecting the two; (𝐯, ¬𝐯)ii. for each clause, create three variables and construct complete subgraph among them

(𝐚, 𝐛, 𝐜) ⇢ {(𝐚, 𝐛), (𝐚, 𝐜), (𝐛, 𝐜)}iii. create connection edges between variable vertex and literal vertex with same valueiv. set k = n + 2m

b. The created vertices are (2n + m) and edges are (n+6m), so reduction cost is bounded by polynomial

c. Show that any instance of 3SAT has valid variable assignment iff transformed instance of VC has also valid vertex cover of size k.

Page 34: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-Completeness of Vertex CoverGiven a graph G=(V, E), and a positive number k, is there VC ⊆ V and |VC|<k, such that if (𝐮, 𝐯) ∈ E then either {𝐮, 𝐯} ∩ VC ≠ ∅

1. ⇒ valid 3SAT instance, so there is valid variable assignmentsa. By way of VC construction, select vertices corresponding to truth-value of the variables

i. It will cover edges for variable verticesii. And edges connecting it to the literal using the same variables’ value

b. Two from each set of vertices for the clauses should be selectedi. They will cover clause edgesii. And also other edges for literals which may use different than assigned value

c. There are n+2m=k selected vertices, and all created edges are covered2. ⇐valid transformed VC instance, so there is a vertex cover of size k

a. By way of the constuctions, at least one vertex of variable gadget has to be selected, as if not, the nobody will cover that edge. (But can both vertices are in cover set)

b. Also at least two vertices from clause gadget for the similar reasons (And all three can also in cover set)c. If exactly only one from var gadget and two from clause gadget and other edges are properly covered, then:

i. The covering vertices will be k = n + 2mii. Selection of variable vertex will correspond to correct variable assignments.

Create an instance of 3SAT w/ no yes answer, and see how the solution of its corresponding VC

Page 35: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Brute Force for Vertex Cover

● Property: V = VC ∪ IS; VC ∩ IS = ∅;● Picking k vertices out of n vertices takes nCk =n!/((n-k)!k!) = O((n/k)k)

a. Then, apply verification algorithm to each candidate ⇢ O((n/k)knm)

● Branch and bounda. Try a vertex v to VC, remove all covered edges from Eb. Or Replace the vertex from VC set to IS and all its neighbor (N(v)) to VCc. Repeat until k vertices have been selected to VC cover set or no more choices to god. If all edges are covered, then the VC cover set is an answer

● i.e. branch on v as VC or N(v) as VC and bounded by k● Cost is total nodes in the visiting tree = O(2km) = O*(2k)

Page 36: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Greedy Approach

1. Put all vertices v with degree(v) < 1 to the IS set○ If degree(v) == 1, i.e. (u,v) is an edge, let u to VC set

2. Select a vertex v with degree(v) the highest as next candidate to VC set○ Mark / remove all edges incident to v from the graph

3. Repeat from (1) until all edges are covered/removed

● Complexity?● Will it give an optimal cover? Will it be an optimum cover?

Page 37: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Approximating Vertex Cover

Either end, or both ends must be in VC1. So, pick any uncover edge (𝐮, 𝐯) from E2. Put both 𝐮, 𝐯 into VC3. Remove all edges incident to either 𝐮, 𝐯 from E4. Repeat from (1) until all edges are removed from E

Total cost is O(|E|)

Page 38: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

𝞪-Approximation Vertex Cover

● Let VC* be the minimum vertex cover○ |VC*| < |VC|

● Look at selected (𝐮, 𝐯), after put in VC the vertices will no be selected again○ So it’s kind of maximal matching M○ Hence |VC| = 2|M|○ Each edge in M covered by different vertex○ |VC*| ≮ |M| or |VC*| ≥ |M| as all edges in M need at least on vertex to cover.

● So |VC*| < |VC| < 2|VC*| ,i.e. The algorithm at worst will select twice bigger vertices than the optimal one, or 𝞪=2

● Lower bound of approximation so far is 𝞪 > 1.3606 (Dinur,Safra, 2005)● Useful for k=|VC*| is small

Page 39: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Reducing to Integer Linear Programming

● Transform to ILP problem:○ Minimize ∑vi∈V(xi)○ where xi+xj >1 for all (vi,vj) ∈ E○ and xi = {0, 1} for all vi∈ V

● Or* to the usual LP version, where xi > 0○ vi is in VC if xi > 0.5○ vi is in IS if xi < 0.5○ vi is in ??? if xi == 0.5

■ (vi,vj) ∈ E, vi=vj=0.5!,■ Both to VC just to be safe, or…?

Page 40: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Parameterized Solution for Vertex Cover

● Reduce the graph size before doing anything “stupid” such as brute force● If degree(v) > k then v has to be in VC otherwise all N(v) must be in VC and

|VC| definitely bigger than k● If degree(v) <= 1 then v can be in IS● So for all vertices 2 < degree(v) < k

○ Have at most k vertex covers, so edges O(k2)○ Have at most ½k2 independent vertex○ So total vertex is k+½k2.

● It is called a kernel of vertex cover○ It can be easily reduced to 2k○ And currently its size is 2k-clog k

● Best algorithm so far: O*(1.2738k)

Page 41: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

More NP-Hard Problems

Page 42: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Hamiltonian Cycle Problem

● HCP: Given unweighted graph G=(V, E),○ Is there a cycle visiting all the vertices?

● HPP: Given unweighted graph G=(V,E) and two vertices s, t,○ Is there a path from s to t passing thru all other vertices?

● TSP: Given weighted complete graph G=(V,E), and a positive number b,○ Is there a cycle visiting all the vertices with total weight < b?

● LP: Given weighted graph G=(V,E), two vertices s and t, and positive number b,○ Is there a path from s to t with total weight > b?

● SP: Given weighted graph G=(V,E), two vertices s and t, and positive number b,○ Is there a path from s to t with total weight < b?

Show that HCP and HPP are equivalent

Page 43: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-Hardness Hamiltonian Cycle Problem

By reduction from Vertex Cover● Every edge in VC is transformed into a “contraption”;

○ to allow fully traversal by either end or both ends of the edge

● For each vertex those contraptions are chained○ covering by a vertex means all traversals from a selected chain

● End of chains are connected to k vertices signifying the requirement of k size vertex cover

○ so a correct cycle will traverse all these k vertices

Page 44: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

NP-Hardness Hamiltonian Cycle Problem

Page 45: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Travelling Salesman Problem

By reduction from Hamiltonian Cycle Problem● Construct a fully complete graph from the graph for HCP● Set weight to 1 if the edge exist in HCP, and n otherwise● Set b to n=|V|

Check what happens if other edges are set to 2 instead of n

Page 46: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Longest Path Problem

By reduction from Hamiltonian Path● Assign weight =1 to each edge in the original graph for HP● Let b = n = |V|-1

Page 47: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Subset Sum Problem

Given a set S of integers and one integer t, Is there a subset S’⊆S such that the sum of all values in in S’ is t?

● S={12, 1, 3, 8, 20, 50, 57, 393, 1600}, t = 44● S={14, 28, 56, 82, 90, 132, 197, 284, 341, 455}, t=515● S={2, 3, 7, 25, 67, 179, 356, 819}, t=390● S={114, 171, 399, 1425, 619, 603, 1092, 283}, t=3030

Page 48: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Subset Sum Problem: Merkle-Hellman Crypto

● Super increasing set: S={2, 3, 7, 25, 67, 179, 356, 819}, t=390● S’={114, 171, 399, 1425, 619, 603, 1092, 283}, t=30301. Let N > sum of S; e.g. N=16002. Let w relatively prime to N, i.e. shared factor is 1; e.g. w=573. Let w-1 be inverse of w within N, i.e. (w.w-1) mod N = 1; here w-1 = 3934. Create new set S’, where bi = wai (mod N); i.e. S’= as above.5. S’ is public key and S is private key6. To encrypt 8 bit data m, c = sum of bimi ; mi = 0/1; e.g. m=D216 7. So, c = sum of (waimi) (mod N); c=30308. To decrypt c, cw-1 (mod N); i.e. c’ = 3030.393 (mod 1600) = 3909. i.e.m sum of (waimi)w

-1) (mod N) = sum of (aimi)(mod N) within original set S10. So, mi is easily recovered

Page 49: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Subset Sum Problem: Merkle-Hellman Crypto

● Invented in 1978● Broken in 1980s

Page 50: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Subset Sum Problem

Given a set S of integers and one integer t, Is there a subset S’⊆S such that the sum of all values in in S’ is t?

By reduction from 3-SAT (n variables and m clauses):● Create 2n+2m integer data of n+m digits for S and a n+m digit integer for t● The first n digits corresponding to each variable (1 < i < n)● The next m digits corresponding to each clause (n+1 < n+j < n+m)● For each variable i, there are two integer data, one for true value and the other for false value of the

integer; place 1 at i-th digit and at (n+j) of the data, where j is the clause which uses same literal of that variable.

● For each clause j, there are two additional data. Each has 1 and 2 at the (n+j)-th digit of the data.● Integer t has 1s for the first n digits and 4 for the rest m digits.

Proof and complexity...

Page 51: Semester II 2018-2019 ANALISIS ALGORITMA · Dan kompleksitas algoritma verifikasi adalah O ... Gunakan metoda DFS/BFS untuk mencari path dari v ke ¬v dan ¬v ke v untuk semua vertek

Games: Sudoku, Mine Sweeper

● Latin Square Problem: http://www.sciencedirect.com/science/article/pii/0166218X84900751

● Sudoko Game: http://www.cs.ox.ac.uk/people/paul.goldberg/FCS/sudoku.html

● Windows Minesweeper Game: http://sed.free.fr/complex/mines.html○ https://www.youtube.com/watch?v=CBP7OAhyff0