Definisi suatu algoritma berjalan dalam waktu polinomial dan dalam waktu polinomial kuat

18

Wikipedia mendefinisikannya sebagai

Algoritma dikatakan sebagai waktu polinomial jika waktu berjalannya dibatasi oleh ekspresi polinomial dalam ukuran input untuk algoritma, yaitu, untuk beberapa konstanta k.T(n)=HAI(nk)

Algoritme berjalan dalam waktu yang sangat polinomial jika [8]

  • jumlah operasi dalam model perhitungan komputasi dibatasi oleh polinomial dalam jumlah bilangan bulat dalam instance input; dan

  • ruang yang digunakan oleh algoritma dibatasi oleh polinomial dalam ukuran input.

Di Bernhard Korte, Jens Vygen, Optimalisasi Kombinasi :

Definisi 1.4.

Algoritma dengan input rasional dikatakan berjalan dalam waktu polinomial jika

  • ada bilangan bulat k sehingga berjalan dalam waktu , di mana n adalah ukuran input, danHAI(nk)
  • semua angka dalam perhitungan menengah dapat disimpan dengan bit .HAI(nk)

Algoritma dengan input arbitrer dikatakan berjalan dalam waktu yang sangat polinomial jika

  • ada bilangan bulat k sedemikian sehingga berjalan dalam waktu untuk setiap input yang terdiri dari n angka danHAI(nk)
  • ini berjalan dalam waktu polinomial untuk input rasional.

Tolong koreksi saya jika saya salah. Berikut ini adalah perbedaan harfiah yang saya perhatikan:

  • Untuk algoritma waktu polinomial, definisi Korte dan Vygen adalah "definisi Wikipedia + ruang penyimpanan polinomial".

  • Untuk algoritma waktu sangat polinomial, definisi Korte dan Vygen dan definisi Wikipedia keduanya membutuhkan waktu polinomial dalam ukuran penyimpanan input. Tetapi K dan V juga membutuhkan waktu polinomial dalam jumlah angka dalam input apa pun, sementara Wikipedia juga membutuhkan ruang penyimpanan polinomial dalam ukuran input.

Jadi, apakah definisi K dan V dan Wikipedia untuk kedua konsep ini setara? Apa perbedaan dan hubungan lain di antara mereka?

Terima kasih dan salam!

StackExchange untuk Semua
sumber
bagian wikipedia tepat setelah defn memiliki penjelasan yang cukup bagus, bukankah sudah cukup jelas? ini ada hubungannya dengan berapa bit yang mewakili angka, dan angka yang sangat besar dapat memengaruhi pengukuran kompleksitas "ke atas". berpikir defn dengan K&V adalah prob "hampir" setara. Sedangkan untuk input rasional, orang perlu bukti bahwa aritmatika pada rasional tidak meningkatkan ukurannya secara besar-besaran. pikir ini dapat ditunjukkan dengan menemukan LCD semua input dan melakukan semua aritmatika dalam angka wrt LCD.
vzn
@vzn: penjelasan di Wikipedia (1) layak untuk mesin aritmatika vs Turing tetapi cukup dangkal mengenai tujuan dan definisi yang sangat-poli, dan (2) benar-benar salah tentang apa yang dicontohkan GCD.
alexei

Jawaban:

5

Sebelum definisi formal, pertimbangkan apa yang ingin dibedakan dengan klasifikasi "kuat / lemah".

Pertama, pertimbangkan untuk menjalankan keduanya di Mesin Turing. Keduanya akan berjalan dalam sejumlah langkah polinomial dalam panjang input biner yang disandikan. Akibatnya, jumlah operasi aritmatika yang dilakukan oleh keduanya harus polinomial dalam panjang input biner-encoded . Oleh karena itu, untuk kedua mesin Turing, waktu yang berjalan akan tumbuh secara polinomi ketika jumlah nilai input atau besaran mereka bertambah. Untuk menekankan yang terakhir, perhatikan bahwa bahkan yang kuat akan mengambil lebih banyak langkah TM pada besaran yang lebih besar (setidaknya perlu membaca bit tambahan). Dalam keadaan apa pun seseorang tidak menjadi eksponensial (seperti halnya dengan waktu pseudo-polinomial yang tidak berhubungan). Dengan mesin Turing saja, perbedaan mendasar tampaknya tidak terdeteksi.

Sekarang pertimbangkan menjalankan masing-masing pada mesin aritmatika di mana operasi apa pun adalah operasi aritmatika pada bilangan bulat dan operasi aritmatika adalah . Ketika Anda meningkatkan besaran angka-angka input, panjang input biner-encode tumbuh, dan waktu berjalan dari algoritma yang lemah akan tumbuh, namun waktu berjalan dari algoritma yang kuat tidak akan berubah, karena dapat diikat oleh angka nomor input, yang tidak Anda ubah (mis. perkalian matriks vs GCD Euclid).HAI(1)

Himpunan algoritma yang berjalan dalam jumlah operasi aritmatika polinomial dalam jumlah angka input didefinisikan dengan baik, tetapi tumpang tindih dengan kelas algoritma yang mengambil sejumlah langkah TM eksponensial dalam panjang input biner yang dikodekan (lihat contoh ). Oleh karena itu, untuk set ini, properti di paragraf kedua tidak akan berlaku. Untuk mengecualikan persimpangan yang tidak diinginkan, kami menambahkan kondisi untuk ruang polinomial TM [*].

Dalam [1] ini dinyatakan dalam dua cara:

  • Algoritma berjalan dalam waktu yang sangat polinomial jika algoritma tersebut adalah algoritma ruang polinmomial dan melakukan sejumlah operasi aritmatika dasar yang dibatasi oleh polinomial dalam jumlah bilangan input.
  • Algoritma polinomial adalah algoritma ruang polinomial (dalam model mesin Turing standar kami) dan algoritme waktu polinomial dalam model aritmatika (lihat pertanyaan ini untuk klarifikasi).

HAI(n3)HAI(n2)

[*] Kondisi kedua dinyatakan di mana-mana sebagai ruang polinom, sedangkan membutuhkan waktu polinom lebih masuk akal bagi saya. Yang pertama lebih inklusif, tetapi aneh. Apakah ada algoritma polinomial kuat yang membutuhkan lebih dari waktu polinomial? Perhatikan bahwa contoh kuadrat ulang tidak membutuhkan waktu polinom atau ruang polinomial.

[1] Grötschel, Martin; László Lovász, Alexander Schrijver (1988). "Kompleksitas, Nubuat, dan Komputasi Angka". Algoritma Geometris dan Optimalisasi Kombinatorial. Peloncat. ISBN 0-387-13624-X.

Alexei
sumber