Apa perbedaan antara batas bawah dan batas ketat?

100

Dengan referensi jawaban ini , apa itu Theta (terikat erat)?

Omega adalah batas bawah, cukup dimengerti, waktu minimum yang dibutuhkan suatu algoritma. Dan kita tahu Big-O untuk batas atas, artinya waktu maksimum yang dibutuhkan algoritme. Tapi saya tidak tahu tentang Theta.

Adeel Ansari
sumber

Jawaban:

155

O besar adalah batas atas, sedangkan Omega adalah batas bawah. Theta membutuhkan Big O dan Omega, jadi itulah mengapa ini disebut sebagai ikatan ketat (harus batas atas dan bawah).

Misalnya, pengambilan algoritme Omega(n log n)membutuhkan n log nwaktu setidaknya , tetapi tidak memiliki batas atas. Pengambilan algoritme Theta(n log n)jauh lebih disukai karena membutuhkan setidaknya n log n (Omega n log n) dan tidak lebih dari n log n (O n log n Besar).

Chris Bunch
sumber
7
Oh .. Sekarang istilah "terikat ketat" muncul cukup menjelaskan diri saya. Terima kasih Chris. Bodoh saya, mungkin saya mengharapkan beberapa ide yang rumit. :)
Adeel Ansari
6
Ya, ada banyak notasi mewah yang dilemparkan tetapi tidak terlalu rumit setelah Anda mengerti.
Chris Bunch
4
Dokumen yang tersedia secara gratis dari Virginia Tech ini menjelaskan dengan contoh perbedaan kinerja antara algoritme dengan kompleksitas yang berbeda dan secara singkat menjelaskan Analisis Asymptotic: people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
Alan
Apa yang Anda maksud dengan "Algoritme yang mengambil Theta (n log n) jauh lebih disukai karena memerlukan setidaknya n log n (Omega n log n) dan tidak lebih dari n log n (Big O n log n).", Sebagai di, apakah itu kompleksitas yang tepat dari algoritma seperti yang Anda tulis mengatakan setidaknya Omega (nlogn) dan di max BigO (nlogn)?
Nikhil Verma
1
Secara sederhana dapatkah kita menyebut: batas atas (Besar (O)) sebagai kasus terburuk? terikat ketat sebagai kasus rata-rata? batas bawah (Omega) sebagai kasus terbaik?
Revanth
113

Notasi Θ ( notasi theta) disebut rapat karena lebih presisi daripada notasi O dan notasi Ω (notasi omega).

Jika saya malas, saya dapat mengatakan bahwa pencarian biner pada array yang diurutkan adalah O (n 2 ), O (n 3 ), dan O (2 n ), dan secara teknis saya akan benar dalam setiap kasus. Itu karena notasi-O hanya menentukan batas atas , dan pencarian biner dibatasi di sisi atas oleh semua fungsi itu, hanya saja tidak terlalu dekat. Perkiraan malas ini tidak akan berguna .

Notasi-sol menyelesaikan masalah ini dengan menggabungkan notasi-O dan notasi-Ω. Jika saya mengatakan bahwa pencarian biner adalah Θ (log n), itu memberi Anda informasi yang lebih tepat. Ini memberi tahu Anda bahwa algoritme dibatasi di kedua sisi oleh fungsi yang diberikan, jadi tidak akan pernah lebih cepat atau lebih lambat dari yang dinyatakan.

Bill the Lizard
sumber
11
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case- Sepertinya sebagian besar orang di dunia komputer hanya malas karena semua orang kebanyakan berbicara tentang kompleksitas Big O saja.
NSP
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every caseJika seseorang bingung dengan ini: Untuk fungsi semacam itu yang tidak rapat secara asimtotik, digunakan notasi small-o. Contoh: - Batas 2n ^ 2 = O (n ^ 2) erat secara asimtotik, tetapi batas 2n = O (n ^ 2) tidak. Baca lebih lanjut: stackoverflow.com/questions/1364444/…
Dragos Strugar
18

Jika ada sesuatu yang O (f (n)) berarti ada k , g (n) sehingga f (n)kg (n) .

Jika ada sesuatu yang Ω (f (n)) artinya ada k , g (n) sehingga f (n)kg (n) .

Dan jika Anda memiliki sesuatu dengan O (f (n)) dan Ω (f (n)) , maka itu adalah Θ (f (n) .

The Artikel Wikipedia layak, jika padat sedikit.

Charlie Martin
sumber
Sekarang membaca notasi keluarga Bachmann-Landau. Terima kasih Charlie, aku pergi ke sana sebelumnya, tetapi kembali tanpa melanjutkannya.
Adeel Ansari
Hei, ada baiknya sering-sering memperbarui informasi tentang doktoral.
Charlie Martin
Perhatikan bahwa notasi O besar Landau tidak terbatas pada kompleksitas algoritmik.
Charlie Martin
Ini terlihat salah. Pada baris pertama harus terbaca "Jika Anda memiliki sesuatu yang O (g (n))", yaitu, gbukan f, dan sisanya dapat dibiarkan apa adanya. Hal yang sama berlaku untuk baris kedua: harus "Jika Anda memiliki sesuatu yang Ω (g (n))". Bisakah Anda memeriksa ulang?
Fabio mengatakan Reinstate Monica
Seluruh topik sangat kacau sehingga seseorang dengan kredibilitas itu juga mungkin salah: D Selain bercanda, seseorang perlu memperbaiki jawaban ini. Ini membingungkan orang (itu sangat membantu saya).
Rad
5

Batas atas asimtotik berarti bahwa algoritme tertentu dijalankan selama jumlah waktu maksimum, bergantung pada jumlah input.

Mari kita ambil algoritma pengurutan sebagai contoh. Jika semua elemen dari sebuah array dalam urutan menurun, maka untuk mengurutkannya, akan memakan waktu berjalan O(n), menunjukkan kompleksitas batas atas. Jika array sudah diurutkan, nilainya akan menjadi O(1).

Umumnya O-notationdigunakan untuk kompleksitas batas atas.


Batas ketat asimtotik (c 1 g (n) ≤ f (n) ≤ c 2 g (n)) menunjukkan kompleksitas batas rata-rata untuk suatu fungsi, memiliki nilai antara batas batas (batas atas dan batas bawah), di mana c 1 dan c 2 adalah konstanta.

sameenu
sumber
1
jika array diurutkan, batasnya akan tetap O (n)
Arun Aravind
2
@ArunAravind Bisakah Anda menjelaskan mengapa?
nbro
3

Ungkapan waktu minimum dan waktu maksimum agak menyesatkan di sini. Ketika kita berbicara tentang notasi O besar, ini bukan waktu yang sebenarnya kita minati, ini adalah bagaimana waktu bertambah ketika ukuran input kita semakin besar. Dan biasanya waktu kasus rata-rata atau terburuk yang kita bicarakan, bukan kasus terbaik , yang biasanya tidak bermakna dalam menyelesaikan masalah kita.

Menggunakan pencarian larik dalam jawaban yang diterima untuk pertanyaan lain sebagai contoh. Waktu yang diperlukan untuk menemukan angka tertentu dalam daftar ukuran n rata-rata n / 2 * some_constant. Jika Anda memperlakukannya sebagai suatu fungsi f(n) = n/2*some_constant, itu meningkat tidak lebih cepat dari g(n) = n, dalam arti seperti yang diberikan oleh Charlie. Juga, itu meningkat tidak lebih lambat dari g(n)keduanya. Oleh karena itu, g(n)sebenarnya merupakan batas atas dan batas bawah f(n)dalam notasi Big-O, jadi kompleksitas pencarian linier adalah tepat n , yang berarti Theta (n).

Dalam hal ini, penjelasan dalam jawaban yang diterima untuk pertanyaan lain tidak sepenuhnya benar, yang mengklaim bahwa O (n) adalah batas atas karena algoritme dapat berjalan dalam waktu konstan untuk beberapa input (ini adalah kasus terbaik yang saya sebutkan di atas, yang sebenarnya bukan yang ingin kami ketahui tentang waktu berjalan).

PolyThinker
sumber
Jadi, dapatkah kita mengatakan bahwa Ω adalah kasus terbaik, dan O adalah yang terburuk ?. . .. dan haruskah kita mengganti istilah sebagai kasus terbaik, dan kasus terburuk, masing-masing?
Adeel Ansari
Kasus terbaik adalah O (1) untuk masalah apa pun?
Zach Langley
1
@ Adeel, tidak, Theta dan O keduanya dapat merujuk pada kasus rata-rata atau kasus terburuk. @ Zach, yah, tidak juga. Terima kasih telah menunjukkannya.
PolyThinker
0

Jika saya malas, saya dapat mengatakan bahwa pencarian biner pada array yang diurutkan adalah O (n2), O (n3), dan O (2n), dan secara teknis saya akan benar dalam setiap kasus.

Kita bisa menggunakan o-notation ("little-oh") untuk menunjukkan batas atas yang tidak rapat secara asimtotik. Baik besar-oh maupun kecil-oh serupa. Tapi, besar-oh kemungkinan besar digunakan untuk mendefinisikan batas atas yang ketat secara asimtotik.

Finn hilang
sumber
0

Tepatnya batas bawah atau $ \ omega $ bfon f (n) berarti himpunan fungsi yang secara asimtotik kurang atau sama dengan f (n) yaitu U g (n) ≤ cf (n) $ \ untuk semua $ `un≥ n 'Untuk beberapa c, n' $ \ dalam $ $ \ Bbb {N} $

Dan batas atas atau $ \ mathit {O} $ on f (n) berarti himpunan fungsi yang secara asimtotik lebih besar atau sama dengan f (n) yang secara matematis mengatakan,

$ g (n) \ ge cf (n) \ untuk semua n \ ge n '$, untuk beberapa c, n' $ \ in $ $ \ Bbb {N} $.

Sekarang $ \ Theta $ adalah perpotongan dari dua tulisan di atas

$\theta $

Seperti jika algoritme seperti "persis $ \ Omega \ kiri (f (n) \ kanan $" maka lebih baik mengatakan $ \ Theta \ kiri (f (n) \ kanan) $.

Atau, kita dapat mengatakan juga bahwa itu memberi kita kecepatan sebenarnya yang $ \omega $memberi kita batas terendah.

PI Gogole
sumber
-2

Perbedaan mendasar antara

Blockquote

Asymptotically upper bound dan asimtotically tight Asym.upperbound berarti algorythm tertentu yang dapat dieksekusi dengan jumlah waktu maksimum tergantung pada jumlah input, misalnya dalam pengurutan algo jika semua elemen array (n) berada dalam urutan menurun maka untuk menaikinya akan mengambil waktu berjalan O (n) yang menunjukkan kompleksitas batas atas, tetapi jika sudah diurutkan maka akan mengambil ohm (1). jadi kami umumnya menggunakan notasi "O" untuk kompleksitas batas atas.

Asym. batas terikat menunjukkan untuk misalnya (c1g (n) <= f (n) <= c2g (n)) menunjukkan batas terikat sedemikian rupa sehingga fungsi memiliki nilai di antara dua batas (batas atas dan batas bawah), memberikan kasus rata-rata.

BOBBY Z
sumber
2
Anda tidak boleh menjawab pertanyaan lama jika jawaban Anda tidak menambahkan sedikit pun pada jawaban yang sudah diterima.
alestanis