You are on page 1of 8

Alasan paling kuat mengapa ilmuan computer teoritis percaya terhadap p = np karena

adanya kelas NP-complete masalah. Kelas ini memberitahukan jika ada masalah NPcomplete dapat diselesaikan dalam solusi polinomial waktu, yaitu P =NP, namun tidak ada
polinomail waktu untuk setiap masalah NP-complete. HAM-CYCLE adalah salah satu masalah
NP-complete. Jika kita dapat menentukan HAM-CYCLE dalam polinomial waktu,maka kita
dapat menyelsaikan masalah dalam NP di polinomial waktu, jika NP-P harus berubah menjadi
tidak kosong dengan HAM - CYCLE NP - P .
Bahasa NP-complete dalam arti paling sulit di bahasa NP untuk membandingkan
relative kekerasan bahasa menggunakan gagasan tepat disebut polinomial waktu
reducibility. Kemudian secara resmi mendefiniskan NP-complete dengan sketsa buktu
bahasa tersebut di sebut SIRCUIT-SAT adalah NP-complete.

Reducibility

Secara intuitif , masalah Q dapat direduksi menjadi masalah lain, Q jika ada contoh
dari Q dapat " dengan mudah diulang " sebagai turunan dari Q, solusi yang menyediakan
solusi untuk contoh Q. Mengingat contoh ax + b = 0 , kita mengubahnya untuk 0x2 + ax + b = 0 ,
yang solusinya menyediakan solusi untuk ax + b = 0 . Jadi, jika masalah Q mengurangi ke yang
lain Masalah Q , maka Q adalah "tidak sulit untuk memecahkan " dari Q . Kembali ke kerangka
formal - bahasa untuk masalah keputusan , mengatakan bahwa a L1 bahasa polinomial - waktu
direduksi menjadi L2 bahasa , ditulis L1 P L2 , jika ada polinomial - waktu fungsi dihitung f :
{ 0 , 1 } * { 0 , 1 } * untuk semua x { 0 , 1 } * , x L1 jika dan hanya jika f ( x ) L2 . ( 34.1
)
memanggil fungsi f fungsi reduksi , dan algoritma polinomial - waktu F
yang menghitung f disebut algoritma reduksi. Gambar 34.4 mengilustrasikan ide pengurangan
polinomial - waktu dari bahasa L1 ke L2 bahasa lain . Setiap bahasa adalah bagian dari { 0 , 1 }
* . pengurangan fungsi f menyediakan pemetaan polinomial - waktu sedemikian rupa sehingga
jika x L1 , kemudian f ( x ) L2 . Selain itu, jika x ? L1 , maka f ( x )? L2 . fungsi
reduksi

peta setiap contoh x dari masalah keputusan diwakili oleh L1 bahasa ke misalnya f (x) dari
masalah diwakili oleh L2. Memberikan jawaban f (x) L2 memberikan jawaban apakah x
L1. Pengurangan polinomial-waktu memberi kita alat yang ampuh untuk membuktikan bahwa
berbagai bahasa milik P.
Lema34.3
Jika L1, L2 {0, 1} * merupakan bahasa sehingga L1 P L2, maka L2 P berarti L1 P.

Bukti Misalkan A2 menjadi algoritma polinomial-waktu yang memutuskan L2, dan biarkan F
menjadi algoritma reduksi polinomial-waktu yang menghitung fungsi pengurangan f

NP-kelengkapan
Pengurangan polinomial-waktu menyediakan sarana formal untuk menunjukkan bahwa satu
masalah setidaknya sesulit yang lain, untuk dalam faktor polinomial-waktu. Artinya, jika
L1 P L2, maka L1 tidak lebih dari satu faktor polinomial sulit daripada L2, notasi untuk
pengurangan adalah mnemonik. Bahasa NP-lengkap, yang merupakan masalah yang paling
sulit di NP. Sebuah bahasa L {0, 1} * adalah NP-lengkap jika
1. L NP, dan
2. L P L untuk setiap L NP.
Jika bahasa L memenuhi properti 2, tetapi belum tentu properti 1, kita mengatakan bahwa L
adalah NP-hard. Definisi NPC menjadi kelas bahasa NP-lengkap. Sebagai teorema
menunjukkan, NP-kelengkapan adalah pokok memutuskan apakah P sebenarnya sama dengan
NP.
teorema34.4
Jika ada masalah NP - lengkap polinomial - waktu dipecahkan , maka P = NP . Ekuivalen,
jika ada masalah dalam NP tidak polinomial - waktu dipecahkan , maka tidak ada NP lengkap
masalah adalah polinomial - waktu dipecahkan .
Bukti Misalkan L P dan juga bahwa L NPC . Untuk setiap L NP , L PL oleh properti
2 dari definisi NP kelengkapan.
Lemma 34.3 L P , yang membuktikan pernyataan pertama dari teorema. Untuk
membuktikan pernyataan kedua , perhatikan bahwa itu adalah kontrapositif dari pernyataan
pertama
.
Hal ini untuk alasan ini bahwa penelitian ke P = Pusat pertanyaan NP sekitar .Masalah NP lengkap . Kebanyakan ilmuwan komputer teoritis percaya bahwa P = NP , yang mengarah ke
hubungan antara P , NP , dan NPC ditunjukkan pada Gambar 34.6 . Tapi , untuk semua kita
tahu , seseorang mungkin datang dengan algoritma polinomial waktu untuk masalah NP lengkap , sehingga membuktikan bahwa P = NP . Karena tidak adanya algoritma polinomial waktu untuk setiap masalah NP - lengkap belum ditemukan ,bukti bahwa masalah adalah NP lengkap memberikan bukti kemampuan interaksi .

Circuit satisfiability
masalah pada NP lengkap,setelah dibuktikan bahwa setidaknya satu masalah adalah NP lengkap , kita dapat menggunakan polinomial waktu reducibility untuk membuktikan NP kelengkapan masalah lain . kemudian focus pada adanya masalah pada NP - lengkap : sirkuit
satisfiability masalah . Sayangnya, bukti formal bahwa masalah sirkuit - satisfiability
adalah Npcomplete membutuhkan detail teknis.
Sebaliknya , informal menggambarkan bukti yang bergantung pada pemahaman
dasar boolean kombinasional sirkuit .. Unsur combinational boolean adalah setiap sirkuit
unsur yang memiliki jumlah konstan input dan output boolean dan yang melakukan fungsi
yang didefinisikan dengan baik . Nilai Boolean diambil dari himpunan { 0 , 1 } , di mana 0
merupakan SALAH dan 1 mewakili BENAR . Unsur-unsur combinational boolean yang kita
gunakan dalam masalah sirkuit satisfiability menghitung fungsi boolean sederhana , dan
mereka dikenal sebagai gerbang logika . angka 34.7 menunjukkan tiga gerbang logika dasar
yang kita gunakan di sirkuit satisfiability masalah: gerbang NOT ( atau inverter) , gerbang ,
dan gerbang OR . gerbang NOT membutuhkan masukan biner x tunggal , yang nilainya 0 atau
1 , dan menghasilkan biner keluaran z yang nilainya berlawanan bahwa dari nilai input.
Masing-masing dari yang lain dua gerbang membutuhkan dua input biner x dan y dan
menghasilkan output biner z tunggal . Operasi dari setiap pintu gerbang , dan setiap elemen
combinational boolean , bisa dijelaskan oleh tabel kebenaran , ditunjukkan di bawah setiap
pintu gerbang pada Gambar 34.7 . Sebuah tabel kebenaran memberikan output dari elemen
kombinasional untuk setiap pengaturan yang mungkin dari input . Sebagai contoh, tabel
kebenaran untuk gerbang OR mengatakan bahwa ketika input adalah x = 0 dan y = 1 , nilai
output adalah z = 1 . Kami menggunakan simbol untuk menunjukkan fungsi NOT , untuk
menunjukkan dan fungsi , dan untuk menunjukkan fungsi OR . Jadi, misalnya , 0 1 = 1 .

Generelasasi gerbang AND dan OR untuk mengambil lebih dari dua input . Gerbang
input AND and OR adalah 1 jika semua input adalah 1 , dan outputnya adalah 0 sebaliknya.
Sebuah kawat dapat menghubungkan output dari satu elemen ke input lain , sehingga
memberikan nilai output dari elemen pertama sebagai nilai input kedua. Gambar 34.8
menunjukkan dua serupa combinational boolean sirkuit , mereka berbeda dalam satu pintu .
Bagian ( a) dari gambar juga menunjukkan nilai-nilai pada kabel individu , mengingat input x1
= 1 , x2 = 1 , x3 = 0 . Jumlah input elemen diberi makan oleh kawat disebut fan -out dari
kawat . Jika tidak ada output elemen terhubung ke kawat , kawat adalah sirkuit masukan ,
menerima nilai-nilai input dari sumber eksternal . input terhubung ke kawat , kawat adalah
output rangkaian , memberikan hasil perhitungan sirkuit ke dunia luar . ( Sebuah kawat
internal yang juga dapat menyebar ke output rangkaian . ) Sirkuit kombinasional Boolean
tidak mengandung siklus . misalkan kita membuat grafik diarahkan G = ( V , E ) dengan satu
titik untuk setiap elemen kombinasional dan dengan k diarahkan tepi untuk setiap kawat
yang fan -out adalah k ; ada diarahkan edge ( u , v ) jika kawat menghubungkan output dari
elemen u ke input dari elemen v Kemudian G harus acyclic. Sebuah tugas kebenaran untuk
rangkaian kombinasional boolean adalah satu set boolean masukan nilai-nilai. Kita
mengatakan bahwa satu-output sirkuit kombinasional boolean satisfiable: tugas kebenaran
yang menyebabkan output dari rangkaian menjadi 1. Sebagai contoh, rangkaian pada Gambar
34.8 (a) memiliki tugas yang memuaskan x1 = 1, x2 = 1, x3 = 0

tidak ada penugasan nilai untuk x1 , x2 , dan x3 menyebabkan rangkaian pada Gambar 34.8b
untuk menghasilkan 1 output; selalu menghasilkan 0 , dan karena itu unsatisfiable . Masalah
sirkuit - satisfiability adalah , " Mengingat sirkuit kombinasional boolean terdiri dari
gerbang AND , OR , dan NOT, itu satisfiable " . Satu dapat merancang sebuah graphlike
encoding yang memetakan sirkuit C diberikan ke dalam string biner C yang panjangnya
polinomial dalam ukuran sirkuit itu sendiri . SIRKUIT - SAT = { C : C adalah sirkuit
kombinasional boolean satisfiable } . Masalah sirkuit - satisfiability muncul di bidang
hardware - dibantu komputer optimasi . Jika subcircuit selalu menghasilkan 0 , subcircuit
yang dapat diganti dengan subcircuit sederhana yang menghilangkan semua gerbang logika
dan memberikan nilai 0 konstan sebagai yang output. Jika ada k input , ada 2k mungkin
tugas . Ketika ukuran C adalah polinomial dalam k , memeriksa masing-masing mengambil ( 2k
) waktu , yang superpolynomial dalam ukuran circuit. satisfiability adalah NP-lengkap. Ada
dua bagian, berdasarkan pada dua bagian dari definisi NP-kelengkapan.
Lema34.5
Masalah sirkuit - satisfiability milik NP kelas .
Bukti menyediakan dua input, polinomial - waktu algoritma A yang dapat memverifikasi
SIRKUIT - Sab Salah satu masukan untuk A adalah (a encoding standar ) a combinational
boolean Rangkaian C. Input lainnya adalah pemberian sesuai dengan tugas nilai boolean ke
kabel di C. Algoritma A dibangun sebagai berikut . Untuk setiap gerbang logika di sirkuit ,
cek bahwa nilai yang diberikan oleh pemberian pada kabel output dengan benar dihitung
sebagai fungsi dari nilai-nilai pada kabel input. Kemudian , jika output dari Seluruh
rangkaian adalah 1 , output algoritma 1 , karena nilai-nilai ditugaskan untuk input
C memberikan tugas memuaskan . Jika tidak , A output 0 . Setiap kali sirkuit C satisfiable
adalah masukan untuk algoritma A , ada pemberian yang panjangnya polinomial dalam ukuran
C dan A yang menyebabkan output 1 . kapan saja sirkuit unsatisfiable adalah input, tidak
ada pemberian bisa menipu A menjadi percaya bahwa sirkuit satisfiable . Algoritma A
berjalan dalam waktu polinomial : dengan implementasi yang baik , waktu linier sudah cukup .
SIRKUIT - SAT dapat diverifikasi dalam polinomial waktu , dan SIRKUIT - SAT NP .
Bagian kedua membuktikan bahwa SIRKUIT - SAT adalah NP - lengkap adalah untuk
menunjukkan bahwa bahasa adalah NP - keras. Artinya , menunjukkan bahwa setiap bahasa
di NP adalah polinomial - waktu direduksi menjadi SIRKUIT - Sab Bukti nyata dari fakta ini

penuh dari seluk-beluk teknis . Sebuah program komputer disimpan dalam memori komputer
sebagai urutan instruksi . Sebuah instruksi yang khas mengkodekan operasi yang akan
dilakukan , alamat operan dalam memori , dan alamat dimana hasilnya akan disimpan . A
khusus lokasi memori , yang disebut program counter , melacak mana instruksi akan
dieksekusi selanjutnya . Program counter secara otomatis bertambah setiap kali instruksi
diambil , sehingga menyebabkan komputer untuk mengeksekusi instruksi secara
berurutan .Pelaksanaan instruksi dapat menyebabkan nilai yang akan ditulis ke program
counter, bagaimanapun, dan kemudian eksekusi sekuensial normal dapat diubah,
memungkinkan komputer untuk lingkaran dan melakukan cabang bersyarat. Kami menyebut
wilayah tertentu memori komputer konfigurasi. Pelaksanaan instruksi dapat dilihat sebagai
pemetaan satu konfigurasi yang lain. Yang penting, perangkat keras komputer yang
menyelesaikan pemetaan ini dapat diimplementasikan sebagai sirkuit kombinasional boolean,
yang
dilambangkan
dengan
M
dalam
bukti
lemma
berikut.
Bukti Misalkan L bahasa di NP . Algoritma polinomial waktu F komputasi fungsi
pengurangan f yang memetakan setiap string biner x ke sirkuit C = f ( x ) sedemikian rupa
sehingga x L jika dan hanya jika C SIRKUIT Sab Karena L NP , harus ada
algoritma A yang memverifikasi L dalam polinomial waktu . Algoritma F yang akan kita
membangun akan menggunakan dua input algoritma A untuk menghitung fungsi pengurangan
f . Biarkan T ( n ) menyatakan kasus terburuk dari algortima A pada panjang - n masukan
string , dan membiarkan k 1 menjadi konstan sehingga T ( n ) = O ( nk ) dan panjang
pemberian adalah O ( nk ). Ide dasar dari bukti ini adalah untuk mewakili perhitungan A
sebagai berurutan konfigurasi . Seperti ditunjukkan dalam Gambar 34.9 , masing-masing
konfigurasi dapat dipecah menjadi bagian yang terdiri dari program A , program counter
dan mesin bantu wilayah , input x , y pemberian , dan penyimpanan yang bekerja . Dimulai
dengan konfigurasi awal c0 , setiap ci konfigurasi dipetakan ke ci +1 oleh rangkaian
kombinasional M menerapkan perangkat keras komputer . Output algoritma A - 0 atau 1 ditulis ke beberapa lokasi yang ditunjuk dalam kerja penyimpanan ketika A selesai
mengeksekusi , dan jika kita berasumsi bahwa sesudahnya A menghentikan , yang nilai tidak
pernah berubah . Jadi, jika algoritma berjalan untuk paling T ( n ) langkah , output muncul
sebagai salah satu bit di cT ( n ) . Algoritma reduksi F membangun sebuah sirkuit
kombinasional tunggal yang menghitung semua konfigurasi yang dihasilkan oleh konfigurasi
awal yang diberikan . Idenya adalah untuk tempel bersama T ( n ) salinan sirkuit M. Output
dari rangkaian i , yang menghasilkan konfigurasi ci , diumpankan langsung ke input dari ( i
+1 ) st sirkuit . Dengan demikian, konfigurasi bukan berakhir dalam wilayah register , hanya
tinggal sebagai nilai-nilai pada kabel yang menghubungkan salinan M.

mengingat polinomial - waktu algoritma pengurangan F harus lakukan . Mengingat masukan


x , harus menghitung sirkuit C = f ( x ) yang satisfiable jika dan hanya jika ada y pemberian
tersebut bahwa A ( x , y ) = 1 . Ketika F memperoleh input x , itu TSJ menghitung pertama
n = | x | dan membangun sebuah sirkuit kombinasional C terdiri dari T ( n ) eksemplar. M.
Input ke C adalah konfigurasi awal sesuai dengan perhitungan yang pada A ( x , y ) , dan
output adalah konfigurasi cT ( n ) . Rangkaian C = f ( x ) yang menghitung F diperoleh
dengan memodifikasi C sedikit . Pertama , masukan ke C sesuai dengan program A ,
program awal counter, input x , dan keadaan awal dari memori yang ditransfer langsung ke
ini nilai-nilai diketahui . Dengan demikian , input hanya tersisa untuk sirkuit sesuai dengan
pemberian y. Kedua , semua output ke sirkuit diabaikan , kecuali satu bit dari cT ( n ) yang
sesuai dengan output dari rangkaian A. C ini , jadi dibangun , TSJ menghitung C ( y ) = A
( x , y ) untuk setiap y masukan panjang O ( nk ) . Algoritma reduksi F , ketika memberikan
string input x , menghitung seperti sirkuit C dan output itu . Dua sifat tetap harus
dibuktikan . Pertama , kita harus menunjukkan bahwa F dengan benar menghitung fungsi

pengurangan f . Artinya , kita harus menunjukkan bahwa C adalah satisfiable jika dan hanya
jika ada pemberian y tersebut bahwa A ( x , y ) = 1 . Kedua , kita harus menunjukkan bahwa
F berjalan dalam waktu polinomial ,menunjukkan bahwa F dengan benar menghitung fungsi
pengurangan ,ada pemberian y panjang O ( nk ) sehingga A ( x , y ) = 1 . Kemudian , bit y ke
masukan dari C , output dari C adalah C ( y ) = A ( x , y ) = 1 . Dengan demikian maka C
adalah satisfiable . Untuk arah lain , anggaplah bahwa C adalah satisfiable . Oleh karena
itu , ada sebuah masukan y ke C sehingga C ( y ) = 1 , menyimpulkan bahwa A ( x , y ) = 1 .
Dengan demikian , F dengan benar menghitung fungsi pengurangan . Untuk melengkapi
sketsa bukti , menunjukkan bahwa F berjalan dalam waktu polinomial di n = | x | .
Pengamatan pertama adalah bahwa jumlah bit yang diperlukan untuk merupakan konfigurasi
adalah polinomial dalam n . Program untuk A sendiri memiliki konstan ukuran, independen
dari panjang input x . Panjang input x adalah n , dan panjang pemberian y adalah O ( nk ) .
Sejak algoritma berjalan untuk paling O ( nk ) langkah , jumlah penyimpanan kerja yang
dibutuhkan oleh A adalah polinomial dalam n juga. Oleh karena itu, bahasa SIRKUIT-SAT
setidaknya sesulit bahasa di NP, dan karena itu milik NP, itu adalah NP-lengkap.
Teorema 34.7
Masalah sirkuit-satisfiability adalah NP-lengkap.

You might also like