Misalkan menjadi kasus terburuk saat menjalankan masalah pada input ukuran . Mari kita buat masalahnya agak aneh dengan memperbaiki untuk tetapi untuk .
Jadi, apa batas bawah masalahnya? Cara saya memahaminya hanyalah batas bawah . Tetapi kita tahu bahwa menyiratkan bahwa terdapat konstanta , sedemikian rupa sehingga untuk semua , , yang tidak benar. Jadi sepertinya kita hanya bisa mengatakan . Tapi biasanya, kita akan menyebut masalah memiliki batas bawah , kan?
Dengan asumsi , yang berarti ada k yang konstan , n 0 sedemikian rupa sehingga untuk semua n > n 0 , g ( n ) > k n 2 . Mari kita juga asumsikan masalah telah berjalan waktu g ( n ) . Jika kita dapat mengurangi masalah ini untuk semua bilangan prima n ke masalah lain (dengan ukuran input yang sama), dapat kita katakan waktu berjalan dari masalah lain memiliki batas bawah dari Ω ( n ?
Jawaban:
Definisi yang benar dari adalah bahwa ada beberapa k > 0 sedemikian rupa sehingga untuk banyak n , f ( n ) ≥ k n 2 . Definisi tak terhingga sering untuk batas bawah menangani masalah Anda dan bagaimana kami menggunakannya dalam praktik.f(n)=Ω(n2) k>0 n f(n)≥kn2
Saya melakukan posting tentang ini pada tahun 2005.
Beberapa buku teks mendapatkan definisi ini dengan benar, beberapa tidak.
sumber
Dengan definisi Knuth , Anda hanya dapat menegaskan . Seperti yang Anda amati, ini tidak intuitif dan terjadi untuk fungsi yang disebut Vitányi dan Meertens "liar". Mereka mengusulkan untuk mendefinisikanf(n)∈Ω(n)
(Ini sama dengan definisi Lance.) Dengan definisi ini .f(n)∈Ω(n2)
sumber
Saya tidak tahu tentang yang paling banyak digunakan, tapi saya yakin saya tahu penggunaan tertua (untuk ilmu komputer).
Dalam makalah 1965 oleh Hartmanis & Stearns "Tentang kompleksitas algoritma", Corollary 2.1 adalah:
di mana adalah kelas kompleksitas dari semua masalah dihitung di O ( K ( n ) ) . T (n) harus mematuhi T ( n ) ≥ n / k untuk beberapa bilangan bulat k dan semua n dan T ( n ) ≤ T ( n + 1 ) , tetapi tidak harus konstruktif waktu.SK O(K(n)) T(n)≥n/k k n T(n)≤T(n+1)
Fungsi Anda mematuhi aturan pertama untuk tetapi gagal mematuhi aturan kedua.k=1
Konsekuensi 2.2 adalah timbal balik di atas dan menggunakan batas supremum, tetapi masih memiliki persyaratan ini. Saya rasa algoritma semakin kompleks dari tahun ke tahun, mungkin saja persyaratannya sudah longgar.
sumber
Saya pikir kita harus membedakan antara dua hal:
Untuk fungsi, saat kami memperbaiki urutan, definisi lowerbound / upperbound mengikuti darinya. Jika relasi urutannya adalah majorisasi asimptotik (mengabaikan faktor konstan)
maka definisi adalah definisi biasa dan Ω . Keduanya digunakan secara luas di daerah lain seperti kombinatorik.O Ω
Tetapi ketika kita berbicara tentang lowerbound untuk suatu masalah (suatu algoritma) apa yang benar-benar ingin kita katakan adalah bahwa masalahnya memerlukan sejumlah sumber daya (untuk menjalankan algoritma penyelesaian masalah). Seringkali kelas kompleksitas ditentukan oleh fungsi-fungsi seperti , dan kami dengan sederhana mengatakan bahwa masalahnya lebih rendah dibatasi oleh suatu fungsi, tetapi ini hanya berfungsi untuk fungsi-fungsi yang bagus (misalnya waktu berjalan dari algoritma adalah monoton, dll.). Apa yang ingin kita katakan dalam kasus ini adalah bahwa kita perlu n 2 waktu berjalan untuk menyelesaikan masalah, yaitu kurang dari n 2Time(t(n)) n2 n2 waktu berjalan tidak cukup, yang secara resmi menjadi definisi Lance bahwa waktu berjalan algoritma tidak dalam .o(t(n))
sumber