• Tidak ada hasil yang ditemukan

Teori P NP NP Completeness (2018)

N/A
N/A
Protected

Academic year: 2018

Membagikan "Teori P NP NP Completeness (2018)"

Copied!
55
0
0

Teks penuh

(1)

Teori P, NP, dan

NP-Complete

Bahan Kuliah IF2211 Strategi Algoritma

Oleh: Rinaldi Munir

(2)
(3)

Pendahuluan

• Kebutuhan waktu algoritma yang mangkus bervariasi, mulai dari O(1), O(log log n), O(log n), O(n), O(n2), dan

O(n3).

• Semua algoritma tersebut digolongkan “bagus” dan dikenal sebagai solusi polinomial. Hal ini karena

kebutuhan waktunya secara asimptotik dibatasi oleh

fungsi polinomial. Misalnya log(n) < n untuk semua n  1.

• Sebaliknya, ada persoalan yang tidak terdapat solusi waktu polinomial untuk menyelesaikannya, misalnya TSP yang memiliki kompleksitas O(n!). Persoalan

(4)

Definisi

Polynomial-time algorithm adalah algoritma yang

kempleksitas waktu kasus-terburuknya dibatasi oleh fungsi polinom dari ukuran masukannya.

T(n) = O(p(n))  p(n) adalah polinom dari n

Contoh:Persoalan sorting  T(n) = O(n2), T(n) = O(n log n) Persoalan searchingT(n) = O(n), T(n) = O(log n) Perkalian matriks  T(n) = O(n3), T(n) = O(n2.83)

• Diluar itu, algoritmanya dinamakan nonpolynomial-time algorithm.

Contoh: TSP, integer knapsack problem, graph coloring,

(5)

Bin-packing problem: Terdapat sejumlah kardus masing-masing dengan kapasitas C dan n barang berukuran S1, S2, ..., Sn, Kemaslah n barang ke dalam M kardus

sedemikian sehingga ukuran total barang di dalam setiap kardus tidak melebihi C. Temukan minimal M

yaitu paling sedikit jumlah kardus untuk menampung n

(6)

• Sebuah persoalan dikatakan tractable jika ia dapat diselesaikan dalam waktu yang wajar (reasonable).

• Sebuah persoalan dikatakan intractable jika ia tidak dapat diselesaikan dalam waktu yang wajar dengan

bertambahkanya ukuran persoalan.

• Apa yang dimaksud dengan waktu yang wajar? Standar waktunya adalah polynomial time.

Polynomial time: O(n2), O(n3), O(1), O(n lg n)

Not in polynomial time: O(2n), O(nn), O(n!) untuk n

(7)

Beberapa terminologi lain

Dikaitkan dengan Mesin Turing, sebuah persoalan dikatakan:

Solvable, jika terdapat mesin Turing yang dapat

menyelesaikannya.

Unsolvable, jika tidak dapat dibuat mesin Turing untuk

menyelesaikannya.

Solvable problem dapat dibagi menjadi dua kategori:

1. Tractable

(8)

• Adakah persoalan yang insolvable? Ada, contoh

persoalan yang terkenal dikemukakan oleh Alan Turing pada tahun 1963, yaitu halting problem.

Halting problem: diberikan sebuah program komputer dan input untuk program tersebut, tentukan apakah

(9)

• Jadi, untuk program P dan input I,

A(P, I) = 1, jika program P berhenti untuk masukan I

= 0, jika program P tidak berhenti

• Sebagai contoh, kode program berikut

while (true) { }

akan terus berulang tanpa berhenti (infinite loop)

Sedangkan program

printf ("Hello World!“);

(10)

• Sebuah program yang lebih kompleks mungkin lebih sulit untuk menganalisisnya.

• Masalahnya adalah, apakah program benar-benar berhenti? Bagaimana membuktikan bahwa program benar-benar berhenti?

• Jika program tidak berhenti, tidak ada cara untuk

mengetahui apakah program akhirnya akan berhenti atau loop forever.

• Turing membuktikan tidak ada algoritma yang dapat diterapkan untuk setiap program dan masukan

(11)

Alan Mathison Turing, (23 June 1912 – 7 June 1954), was an

English mathematician, logician,

cryptanalyst, and computer

scientist. He was highly influential in the development of computer science, providing a formalisation of the concepts of "algorithm" and "computation" with the Turing

machine, which played a

(12)

Teori NP

• Dalam membahas teori NP, kita hanya membatasi pada persoalan keputusan (decision problem)

• Persoalan keputusan adalah persoalan yang solusinya hanya jawaban “yes” atau “no”.

Contoh: 1. Diberikan sebuah integer x.

Tentukan apakah elemen x terdapat di dalam tabel?

2. Diberikan sebuah integer x.

Tentukan apakah x bilangan prima?

3. Diberikan sebuah graf G, apakah G graf Hamilton?

• Setiap persoalan optimasi yang kita kenal memiliki

decision problem yang bersesuaian.

(13)

1. Travelling Salesperson Problem

• Diberikan graf berarah dengan bobot (weight) pada

setiap sisinya. Sebuah tur di dalam graf tersebut dimulai dari sebuah simpul,mengunjungi simpul lainnya tepat

sekali dan kembali lagi ke simpul asalnya.

Travelling Salesperson Optmization Problem (TSOP)

adalah persoalan menentukan tur dengan total bobot sisi minimal  TSP yang sudah biasa dikenal.

Travelling Salesperson Decision Problem (TSDP) adalah persoalan untuk menentukan apakah terdapat tur

(14)

2. Knapsack Problem

• Diberikan n buah objek dan sebuah knapsack dengan kapasitas W. Setiap objek memiliki profit masing-masing.

Integer Knapsack Optimization Problem adalah

menentukan objek-objek yang dimasukkan ke dalam

knapsack namun tidak melebihi W sehingga

memberikan total profit maksimum.  Knapsack problem yang sudah kita kenal

Integer Knapsack Decision Problem adalah persoalan untuk menentukan apakah dapat memasukkan

(15)

3. Graph Colouring Problem

Graph-Colouring Optimization Problem adalah

menentukan jumlah minimal warna yang dibutuhkan untuk mewarnai graf sehingga dua simpul bertetangga memiliki warna berbeda.  Graph Colouring problem

yang kita kenal.

Graph-Colouring Decision Problem adalah menentukan, untuk suatu integer m, apakah terdapat pewarnaan yang menggunakan paling banyak m warna sedemikian

(16)

• Kita belum menemukan algoritma polinomial untuk persoalan optimasi atau persoalan keputusan pada contoh-contoh di atas.

• Namun, jika kita dapat menemukan algoritma polinomial untuk jenis persoalan optimasi tersebut, maka kita juga mempunyai algoritma waktu-polinom untuk persoalan keputusan yang bersesuaian.

(17)

• Contoh: jika pada persoalan Travelling Salesperson Optimization Problem (TSOP) tur minimal adalah 120,

• maka jawaban untuk persoalan Travelling Salesperson Decision Problem (TSDP) adalah “yes” jika d  120, dan “no” jika d < 120.

• Begitu juga pada persoalan Integer Knapsack

Optimization Problem, jika keuntungan optimalnya

adalah 230, jawaban untuk persoalan keputusan integer knapsack yang berkoresponden adalah “yes” jika P

(18)

P Problems

P Problems adalah himpunan semua persoalan keputusan yang dapat dipecahkan oleh algoritma dengan kebutuhan waktu polinom.

• Semua persoalan keputusan yang dapat diselesakan dalam waktu polinom adalah anggota himpunan P.

Contoh: Persoalan mencari apakah sebuah key terdapat di dalam sebuah larik adalah P Problems.

(19)

• Apakah Travelling Salesperson Decision Problem

(TSDP) termasuk P Problems?

• Meskipun belum ada orang yang menemukan algoritma TSDP dalam waktu polinom, namun tidak seorang pun dapat membuktikan bahwa TSDP tidak dapat

dipecahkan dalam waktu polinom.

(20)

• Algoritma deterministik adalah algoritma yang dapat ditentukan dengan pasti apa saja yang akan dikerjakan selanjutnya oleh algoritma tersebut.

• Algoritma deterministik bekerja sesuai dengan nature

komputer saat ini yang hanya mengeksekusi satu operasi setiap waktu, diikuti oleh operasi selanjutnya (sequential), begitu seterusnya.

• Algoritma non-deterministik adalah algoritma yang

berhadapan dengan beberapa opsi pilihan, dan algoritma memiliki kemampuan untuk menerka opsi pilihan yang tepat.

• Algoritma deterministik dijalankan oleh komputer

(21)

Contoh 1: TSDP

Algoritma non-deterministik TSDP:

for i := 1 to n do

pilih sebuah sisi (edge) dari graf G

hapus sisi tersebut dari himpunan sisi end

• Solusi dapat diverifikasi dengan menghitung semua bobot sisi yang terpilih dan memeriksa apakah

jumlahnya lebih kecil dari d

(22)

Contoh 2 (Persoalan sirkuit Hamilton): Diberikan

sebuah graf G. Apakah G mengandung sirkuit Hamilton? Sirkuit Hamilton adalah sirkuit yang melalui setiap simpul di dalam graf tepat satu

Algoritma non-deterministik:

1. Terkalah permutasi semua simpul

2. Periksa (verifikasi) apakah permutasi tersebut

(23)

• Ada dua tahap di dalam algoritma non-deterministik:

1. Tahap menerka (non-determinsitik): Diberikan

instance persoalan, tahap ini secara sederhana

(misalnya) menghasilkan beberapa string S. String ini dapat dianggap sebagai sebuah terkaan pada sebuah solusi. String yang dihasilkan bisa saja tidak bermakna (non-sense).

2. Tahap verifikasi (deterministik): memeriksa apakah S menyatakan solusi. Keluaran tahap ini adalah “true” jika

(24)

Contoh pada TSDP:

Tahap verifikasi

function verify(G:graph; d:number, S:claimed_tour) Algoritma

(25)

• Meskipun kita tidak pernah menggunakan algoritma non-deterministik untuk menyelesaikan persoalan, namun kita menyatakan bahwa algoritma non-deterministik “menyelesaikan” persoalan keputusan apabila:

1. Untuk suatu instance dimana jawabanya adalah “yes”,

terdapat beberapa string S yang pada tahap verifikasi menghasilkan “true”

2. Untuk suatu instance dimana jawabannya adalah “no”,

(26)

• Contoh untuk TSDP dengan d = 15:

[v1, v4, v2, v3, v1] False S bukan sebuah tur

^%@12*&a% False S bukan sebuah tur

[v1, v3, v2, v4, v1] True S sebuah tur, total bobot  15

• Kita dapat menyatakan bahwa algoritma non-deterministik

“menyelesaikan” TSDP dalam dua tahap tersebut

v1 v2

(27)
(28)

NP Problems

NP = non-deterministik polynomial

Polynomial-time non-deterministic algorithm adalah

algoritma non-deterministik dimana tahap verifikasinya adalah algoritma dengan kebutuhan waktu polinom.

NP Problems adalah himpunan persoalan keputusan

yang dapat diselesaikan oleh algoritma non-deterministik dalam waktu polinom.

(29)

• TSDP adalah contoh persoalan NP, sebab jika diberikan sebuah terkaan string (tur), maka dibutuhkan O(n) untuk memverifikasi solusi.

Integer Knapsack Decision problem dan Graph Coloring Decision Problem semuanya adalah NP.

• Semua persoalan P juga adalah NP, sebab tahap menerka tidak

terdapat di dalam persoalan P. Karena itu, P adalah himpunan bagian dari NP.

NP P  NP

(30)

Adakah persoalan yang bukan NP? Ada, yaitu

persoalan

intractable

. Contohnya

halting

problem

.

Kita telah menyebutkan sebelumnya bahwa

TSDP belum terbukti apakah P atau bukan.

Dengan kata lain, tidak seorangpun pernah

(31)

Pertanyaan apakah P = NP adalah salah satu

pertanyaan penting dalam ilmu komputer.

Pertanyaan ini penting sebab, seperti telah

disebutkan sebelumnya, kebanyakan persoalan

keputusan adalah NP.

Karena itu, jika P = NP, maka betapa banyak

persoalan keputusan yang dapat dipecahkan

secara mangkus dengan algoritma yang

(32)

Namun kenyataannya, banyak ahli yang

telah gagal menemukan algoritma

waktu-polinom untuk persoalan NP.

(33)

• The P versus NP problem is a major unsolved problem in computer science. Informally, it asks whether every problem whose solution can be quickly verified by a computer can also be quickly solved by a computer. It was introduced in 1971 by Stephen Cook in his seminal paper "The complexity of theorem proving procedures"[2] and is considered by many to be the most important

open problem in the field.[3] It is one of the seven

Millennium Prize Problems selected by the Clay

Mathematics Institute to carry a US$1,000,000 prize for the first correct solution.

(34)

The Clay Mathematics Institute Millenium Prize

Problems:

1. Birch and Swinnerton-Dyer Conjecture

2. Hodge Conjecture

3. Navier-Stokes Equations

4. P vs NP

5. Poincaré Conjecture

6. Riemann Hypothesis

7. Yang-Mills Theory

(35)
(36)

NP-Complete Problems

• NP-Complete (NPC) adalah persoalan NP yang paling menarik.

Definisi NPC. Sebuah persoalan X dikatakan NPC jika: 1) X termasuk ke dalam kelas NP

2) Setiap persoalan di dalam NP dapat direduksi dalam waktu polinom menjadi X

NP P

(37)

• Cara termudah untuk membuktikan sebuah persoalan X adalah NPC adalah menemukan sebuah metode

sederhana (algoritma dalam waktu polinom) untuk

mentransformasikan persoalan yang sudah dikenal NPC menjadi persoalan X tersebut.

• Dengan kata lain, untuk menunjukkan bahwa X adalah NPC, caranya adalah sebagai berikut:

1) Tunjukkan bahwa X adalah anggota NP

2) Pilih instance, Y, dari sembarang persoalan NPC. 3) Tunjukkan sebuah algoritma dalam waktu polinom

untuk mentransformasikan (mereduksi) Y menjadi

(38)

P1

P2

P3

P4

Y: Persoalan

NPC yang dipilih X

(39)

Contoh: TSDP adalah persoalan yang telah terbukti NPC. Kita ingin menunjukkan bahwa persoalan Sirkuit Hamilton (HCP, Hamiltonian Circuit Problem) juga

adalah NPC.

Persoalan HCP: Diberikan sebuah graf G dengan n buah simpul, tentukan apakah graf tersebut mengandung

(40)

• Untuk mentransformasikan HCP menjadi TSDP, maka algoritma transformasi yang sederhana adalah sbb:

1. Setiap sisi di dalam graf G diberi nilai (bobot) 1

2. Nyatakan persoalan menjadi TSDP, yaitu adakah tur dengan total bobot  n?

• Dengan transformasi ini, maka persoalan HCP sudah ditransformasi menjadi instans persoalan TSDP.

• Transformasi ini (yaitu memberi bobot setiap sisi dengan nilai 1) membutuhkan waktu polinom (yaitu dalam term

(41)

• Misalkan di dalam graf G = (V, E), |E| = m, yaitu jumlah sisi di dalam graf adalah n. Maka, algoritma memberi setiap sisi di dalam graf G dengan 1 adalah sbb:

for tiap sisi (u, v)  E do

(u, v)  1

end

Jumlah pengulangan untuk (u, v)  1 adalah sebanyak

m kali, sehingga:

(42)

• Contoh ini memberikan sugesti bahwa jika transformasi dari sembarang persoalan NP menjadi instans persoalan NPC dapat dilakukan, maka jika algoritma dalam waktu polinom ditemukan untuk X, maka semua persoalan di dalam NP dapat diselesaikan dengan mangkus.

• Dengan kata lain, jika X adalah NPC dan termasuk ke dalam P – yaitu algoritma yang mangkus (polinom, deterministik) untuk X ditemukan -- maka dapat

menjawab bahwa P = NP. Hal ini karena transformasi tersebut sederhana (membutuhkan waktu polinom).

(43)

• Persoalan di dalam NPC dikatakan persoalan yang paling sukar (hardest) karena jika ada persoalan NPC dipecahkan dalam waktu polinomial, maka semua persoalan di dalam NP dapat dipecahkan dalam waktu polinomial.

• Sebaliknya, jika P  NP, maka tidak ada persoalan NPC dapat dipecahkan dalam waktu polinomial. Sebagai

(44)

Persoalan NP-Complete lainnya:

PARTITION problem

SUM OF SUBSET problem

CLIQUE problem

GRAPH COLORING problem

SAT (Satisfiability problem)

Vertex cover

N-PUZZLE

Knapsack problem

Subgraph isomorphism problem

(45)

PARTITION: Diberikan

n

buah bilangan bulat

positif. Bagilah menjadi dua himpunan bagian

disjoint

sehingga setiap bagian mempunyai

jumlah nilai yang sama (catatan: masalah ini

tidak selalu mempunyai solusi).

(46)

SUM OF SUBSET: Diberikan sebuah himpunan

bilangan bulat. Carilah upahimpunan yang

jumlahnya =

m

.

Contoh: A = {-4, -1, 1, 2, 3, 8, 9} dan

m

= 0.

Maka salah satu solusinya adalah {-4, -1, 2, 3}

CLIQUE: sebuah

clique

adalah subset dari

himpunan simpul di dalam graf yang

(47)
(48)

Sumber

:

Complexity Theory, based on

(49)

SAT

• SAT = Satisfiability Problem

Sumber: Complexity Theory, based on

(50)
(51)
(52)
(53)
(54)
(55)

Referensi

Dokumen terkait

Jika komitmen organisasi terhadap penyusunan ARG ini tinggi maka adanya mutasi ataupun tekanan eskternal itu tidak mengganggu komitmen kita untuk menysusun

Hal yang sangat mungkin jika kita yang telah membuat video, mempunyai keinginan untuk memasukkan video buatannya ke dalam situs Youtube, sehingga dapat ditonton oleh semua

Gadget adalah hal yang sangat populer saat ini. Hampir setiap orang menggunakan gadget untuk berbagai keperluan. Salah satu fungsinya adalah berkomunikasi dan mencari informasi dengan cepat. Gadget membutuhkan sebuah program yang berfungsi untuk mengatur berjalannya perangkat tersebut. Menurut Yulikuspartono (2009:29) mengemukakan bahwa “ program merupakan sederetan instruksi atau statement dalam bahasa yang dimengerti oleh komputer yang bersangkutan”. Program merupakan sebuah elemen inti untuk kinerja suatu perangkat. Program inilah yang akan mengolah dan menjalankan perintah yang diberikan oleh user agar dapat di kelola oleh perangkat/device. Program juga dibuat oleh manusia, dan orang yang membuat program ini disebut dengan Programmer. Seorang programmer membuat program dengan menggunakan bahasa pemrograman. Bahasa pemrograman inilah yang disusun dengan berdasarkan logika atau algoritma menusia yang di terjemahkan ke algoritma manusia yang di terjemahkan ke perangkat. Bahasa pemrograman ini dibuat untuk memudahkan manusia dalam membuat suatu aplikasi atau program. Bahasa pemrograman bisa di klasifikasikan dari beberapa sudut pandang. Salah satu pengklasifikasian bahasa pemrograman adalah pendekatan dari notasi bahasa pemrograman tersebut, apakah lebih dekat ke bahasa mesin atau ke bahasa manusia. Dengan cara ini, bahasa pemrograman dapat di kelompokan menjadi dua yakni bahasa tingkat rendah (low level languages) dan bahasa tingkat tinggi (high level language). Bahasa tingkat tinggi adalah bahasa yang mudah dipahami oleh manusia, C++ merupakan salah satu contoh dari bahasa tingkat tinggi. Contoh lain dari bahasa tingkat tinggi ini seperti Pascal, Perl, Java, dan lain-lain sebagainya. Sedangkan bahasa tingkat rendah adalah bahasa mesin atau bahasa assembly. Secara sederhana sebuah komputer hanya dapat mengeksekusi program yang ditulis dalam bentuk bahasa mesin. Oleh karena itu, jika suatu program ditulis dalam bahasa tingkat tinggi maka program tersebut harus diproses terlebih dahulu sebelum bisa dijalankan dengan komputer. Hal ini merupakan salah satu kekurangan bagi bahasa tingkat tinggi dimana diperlukan waktu untuk memproses suatu program sebelum program tersebut di jalankan. Sebagai bahasa yang beraras tinggi, yang menggunakan perintah-perintah yang mudah dimengerti oleh manusia, C++ mempunyai keunggulan yakni bersifat universal. Sebagai bahasa yang universal, C++ bisa dijumpai di berbagai platform (Linux, Unix, Windows, Mac, dan lain-lain). Artinya, jika kita menguasai C++ di platform PC, sangat mudah untuk berpindah di Linux ataupun system operasi yang lain.