Apa itu O dalam Big O?

23

Apa yang Besar dan O dalam notasi Big O? Saya sudah membaca definisi dan tidak memberi tahu apa yang diucapkan O sebagai 'oh'. Sebagai contoh - Saya mengerti bahwa O (n) adalah kompleksitas dari algoritma linier di mana n bisa menjadi jumlah operasi. tapi apa itu O ?

Karen15
sumber
13
Ini adalah huruf ke 15 dari alfabet bahasa Inggris. Ini juga huruf ke 15 dalam alfabet Yunani.
Joel Etherton
1
Hanya untuk memperjelas: Anda mencari alasan mengapa O adalah simbol yang digunakan (alih-alih Q atau E atau yang lainnya), dan apa artinya, jika ada, O memiliki lebih dari simbol lain?
FrustratedWithFormsDesigner
6
@ Joel: Sebenarnya, ini Omicron, dan itulah petunjuk mengapa surat khusus ini dipilih.
Jörg W Mittag
jawaban ini membantah (benar, saya pikir) teori Omicron.
Hawkeye Parker

Jawaban:

31

Yah, tebakan saya adalah pesanan, yang bertepatan dengan wikipedia .

Sunting: (terjemahan saya sendiri (perbaikan apa pun dihargai)) dari artikel wikipedia Jerman

Huruf kapital O (sebenarnya omicron kapital pada waktu itu) sebagai simbol untuk urutan (Jerman: "Ordnung von") pertama kali digunakan oleh ahli teori bilangan Jerman Paul Bachman dalam edisi kedua bukunya tentang teori bilangan analitik muncul pada tahun 1894. Notasi ini mendapatkan popularitas karena karya Edmund Landau, ahli teori bilangan Jerman lainnya, yang nomenklatur ini secara luas dikaitkan dengan hari ini, terutama dalam terminologi Jerman.

back2dos
sumber
5
Meskipun mungkin banyak matematikawan menyebutnya demikian, tetapi pada awalnya tidak demikian. Jika Anda membaca buku teori angka dari awal abad ke-20, Anda tidak akan menemukan penjelasan seperti itu. Ini adalah apa adanya dan saya tidak bisa membaca bahasa Jerman untuk mencari tahu apa yang dipikirkannya tentang notasi.
Jonathan Henson
1
@ Jonathan: Posting diperbarui.
back2dos
Sangat bagus! Saya mencari di semua buku teori bilangan saya dan saya tidak dapat menemukan penjelasan tentang O di mana pun. +1
Jonathan Henson
2
Saya selalu mengucapkannya sebagai urutan hanya dengan mengatakan O tidak berarti banyak.
Newtopian
16

"Besar" berarti "modal", dan "O" berarti ketertiban, seperti dalam "urutan kompleksitas". Dinamakan demikian karena konvensi penulisan "urutan kompleksitas" sebagai O (f (x)), misalnya, dengan huruf kapital 'O', atau 'O Besar'. Tidak ada yang banyak membicarakannya karena 'semua orang' mengerti apa artinya, dan memahaminya tidak benar-benar membantu Anda memahami analisis kompleksitas.

Untuk pemahaman tentang analisis kompleksitas, saya pikir tautan yang diposting oleh topgun_ivard adalah tempat yang baik untuk memulai. Buku teks pengantar yang baik yang mencakup struktur data atau algoritma juga dapat membantu.

Ethel Evans
sumber
5
Maaf, tetapi notasi Bachmann-Landau ditemukan oleh ahli matematika Jerman, jadi saya hampir tidak berpikir dia akan menamainya dengan kata bahasa Inggris. Bahkan, bahkan jika itu telah ditemukan oleh seorang ahli matematika Amerika, itu mungkin masih akan dinamai kata Jerman, karena ketika itu ditemukan (sekitar tahun 1920, saya pikir), bahasa internasional matematika adalah bahasa Jerman. Plus, itu bahkan tidak jauh ada hubungannya dengan kompleksitas.
Jörg W Mittag
1
@ Jörg: Ya, tetapi bukankah itu hanya Ordnung , yang diklaim oleh artikel wiki Jerman sebagai asal: de.wikipedia.org/wiki/Landau-Symbole#Geschichte
back2dos
1
@Ethel, bisakah Anda membuat sedikit perubahan pada artikel Anda sehingga saya dapat memilih Anda? Anda memang benar. Anda harus mengedit sebelum saya dapat memilih.
Jonathan Henson
1
@ Jonathan, saya tidak yakin apa perubahan kecil yang Anda inginkan. Bisakah Anda teruskan saja dan sunting yang Anda inginkan? Atau, kita bisa membiarkan jawaban back2dos berdiri, sepertinya dia mungkin telah mendapatkan jawaban terbaik karena beberapa penelitian yang sangat bagus :)
Ethel Evans
1
Hm, menarik. Di Swedia, Big Oh biasanya disebut "ordo" (bahasa latin untuk, yah, ketertiban) daripada "penahbisan" (kata Swedia untuk pesanan).
Vatine
11

O berarti ketertiban.

Ini awalnya diperkenalkan oleh ahli matematika Jerman Paul Bachmann dalam volume kedua bukunya tentang teori bilangan Die Analytische Zahlentheorie , yang diterbitkan pada 1894 (hal. 401) . Dia mencatat, setelah formula tempat dia pertama kali menggunakan notasi:

(...) wenn wir durch das Zeichen O (n) einde Grösse ausdrücken, deren Ordnung di Bezug auf n die Ordnung von n nicht überschreitet (...)

Terjemahan saya:

(...) di mana dengan notasi O (n) kami menunjukkan besarnya urutan dengan referensi n tidak melebihi urutan n (...)

Berbeda dengan apa yang dikatakan orang lain, tidak ada dalam teksnya yang menunjukkan bahwa ini sebenarnya adalah ibu kota Yunani omikron. Dia menggunakan banyak karakter Yunani dan Latin, jadi sebenarnya tidak ada cara untuk mengatakannya. Mengingat terus menggunakan "Ordnung n log n " dll dalam teks itu jelas bahwa itu adalah singkatan dari "Ordnung" (bahasa Jerman untuk "pesanan" jika ada keraguan) dalam hal apapun, tetapi itu masih bisa membiarkan penggunaan penggunaan terbuka sebuah O Yunani yang mewah

Namun, asal mula omikron lebih cenderung retronim karena Donald Knuth yang memperkenalkan simbol omega (Ω) dan theta (Θ) untuk konsep terkait dalam makalahnya Big Omicron dan Big Omega dan Big Theta , atau mungkin Hardy dan Littlewood yang memperkenalkan simbol omega sebelumnya.


sumber
2
Menarik. Saya kira kamu benar. Saya hanya mencari definisi di kedua buku Landau dan Bachmann, dan mereka memang a) menggunakan bahasa Latin Oh, bukan bahasa Yunani Omikron, b) keduanya menggunakan kata "Ordnung", dan c) Landau secara eksplisit menyatakan bahwa itu berarti "Ordnung" . Saya berdiri dikoreksi.
Jörg W Mittag
Kata apa yang lebih baik dapat ditemukan? Maksud saya, dari Jerman? Ordnung ist das halbe Leben!
JensG
Saya pikir kalimat pertama dari jawaban Anda (benar, terunggul, luar biasa) harus berbunyi: 'O adalah singkatan dari "Ordnung" (bahasa Jerman yang berarti "Urutan").' Ini akan membantu jawaban ini untuk menarik perhatian pembaca lain.
Hawkeye Parker
5

Saya suka artikel ini , berharap Anda akan merasakan manfaatnya juga!

Mengutip bagian dari artikel:
Huruf Yunani Besar

Big O sering disalahgunakan. Big O atau Big Oh sebenarnya adalah kependekan dari Big Omicron. Ini mewakili batas atas kompleksitas asimptotik. Jadi jika suatu algoritma adalah O (n log n) ada konstanta c sedemikian rupa sehingga batas atas adalah cn log n.

Θ (n log n) (Big Theta) lebih terikat dari itu. Algoritma semacam itu berarti ada dua konstanta c1 dan c2 sedemikian rupa sehingga c1n log n <f (n) <c2n log n.

Ω (n log n) (Omega Besar) mengatakan bahwa algoritma memiliki batas cn log yang lebih rendah.

Ada yang lain tetapi ini adalah yang paling umum dan Big O adalah yang paling umum dari semua. Perbedaan seperti itu biasanya tidak penting tetapi perlu dicatat. Notasi yang benar adalah notasi yang benar.

Apa itu Big O?

Notasi O besar berusaha untuk menggambarkan kompleksitas relatif dari suatu algoritma dengan mengurangi tingkat pertumbuhan ke faktor-faktor kunci ketika faktor kunci cenderung menuju tak terbatas. Karena alasan ini, Anda akan sering mendengar ungkapan kompleksitas asimptotik. Dengan demikian, semua faktor lain diabaikan. Ini adalah representasi relatif dari kompleksitas.

Apa Bukan Big O?

Big O bukanlah tes kinerja suatu algoritma. Ini juga bersifat nosional atau abstrak karena cenderung mengabaikan faktor-faktor lain. Kompleksitas algoritma pengurutan biasanya dikurangi menjadi jumlah elemen yang diurutkan sebagai faktor kunci. Ini baik-baik saja tetapi tidak memperhitungkan masalah akun seperti:

Penggunaan Memori: satu algoritma mungkin menggunakan lebih banyak memori daripada yang lain. Bergantung pada situasinya, ini bisa berupa apa pun dari yang sama sekali tidak relevan hingga kritis; Biaya Perbandingan: Mungkin saja membandingkan elemen sangat mahal, yang berpotensi akan mengubah perbandingan dunia nyata antara algoritma; Biaya Elemen Bergerak: elemen penyalinan biasanya murah tetapi hal ini belum tentu demikian; dll.

topgun_ivard
sumber
5
Menautkan sebuah artikel tidak terlalu membantu. Biasanya merupakan ide yang bagus untuk mengutip atau mengutip bagian yang menurut Anda relevan dengan utas.
Demian Brecht
3
Apakah suara turun benar-benar diperlukan? Artikel yang dia tautkan sangat relevan, dan IMHO cukup membantu. Sementara itu, jawaban pilihan teratas adalah tautan ke artikel Wikipedia. +1 untuk mengimbangi kemunafikan dari hive-mind.
Brandon Moretz
1
-1, karena artikel tersebut, walaupun merupakan artikel yang sangat bagus dan ditulis dengan baik, tidak ada hubungannya dengan pertanyaan.
Jörg W Mittag
@ Jorg, saya tidak pernah mengatakan artikel itu akan menyelesaikan masalah, tapi saya berbagi karena saya merasa berguna ketika saya melihat konsep-konsep ini.
topgun_ivard
3
@topgun_ivard: Jadi apa yang terjadi jika itu berubah menjadi tautan mati? Parafrase memungkinkan 1) audiens utas ini untuk mendapatkan versi Coles note dari tautan Anda (waktu adalah uang), dan 2) memastikan bahwa kiriman Anda tidak dianggap tidak relevan pada tautan mati.
Demian Brecht
2

"f (x) besar-oh dari g (x)"

Ini adalah cara matematika untuk memprediksi pertumbuhan fungsi.

Biarkan f dan g menjadi fungsi dari himpunan bilangan bulat atau himpunan atau bilangan real ke himpunan bilangan real. Kita mengatakan bahwa f (x) adalah O (g (x)) jika ada konstanta C dan k sedemikian sehingga | f (x) | <= C | g (x) | dimanapun x> k.

Anda akan membaca ini sebagai "f (x) adalah besar-oh dari g (x)"

Big-O kadang-kadang disebut simbol Landau setelah ahli matematika Jerman Edmund Landau. Saya tidak berpikir itu berarti apa pun selain itu. Anda juga memiliki notasi Omega-besar dan Theta yang serupa. Simbol yang sewenang-wenang seperti biasa menggunakan theta untuk menunjukkan sudut dalam segitiga Anda berada di kelas Planar Geometry SMA Anda.

Correction @ back2dos telah memberikan penjelasan yang memuaskan untuk O sebagai merujuk pada pesanan. Kerja bagus. Lihat jawabannya.

Donald Knuth menerapkannya untuk mempelajari kompleksitas program komputer.

Jika Anda ingin menemukan alasan notasi digunakan, Anda harus membaca

"Analytische Zahlentheorie" oleh Paul Bachmann dari 1892

Jonathan Henson
sumber
2

EDIT: Ternyata saya salah. Namun demikian, mungkin ini membantu seseorang menjaga simbolnya tetap lurus, jadi saya tidak akan menghapusnya.


Sebenarnya, itu bukan huruf Latin. Oh , itu huruf Yunani, Omicron . Sayangnya, keduanya memiliki mesin terbang yang sama persis, jadi, seiring waktu, versi aslinya rusak, dan sekarang hanya Oh .

Pilihan simbol sebenarnya tidak memiliki makna tertentu, itu dipilih sebagai perangkat mnemonik :

  • Omicron memiliki huruf MICRO di dalamnya, dan semantik simbol Omicron secara kasar berarti "lebih kecil dari"
  • Omega memiliki huruf MEGA di dalamnya, dan semantik simbol Omega kira-kira berarti "lebih besar dari"
  • Theta (Θ) terlihat agak seperti tanda sama dengan, dan semantik simbol Theta secara kasar berarti "sama dengan"

Itu dia. Tidak ada makna nyata untuk itu, itu hanya permainan kata-kata, jika Anda mau, untuk membantu Anda mengingat semantik dengan lebih mudah.

Jörg W Mittag
sumber
2
Sementara saya ingin mempercayai proposisi mnemonik Anda (ini adalah ide yang sangat keren), saya perlu melihat beberapa bukti bahwa ini adalah niat asli sebenarnya dari Bachmann. Berikan, dan saya akan memberi Anda +1.
Jonathan Henson
2
@ Jonathan Henson: Rupanya, saya disesatkan oleh Prof. Knuth :-)
Jörg W Mittag
-5

UPDATE: Mencoba untuk membersihkan jawaban saya dan menjadi lebih akurat

Notasi O besar adalah cara untuk mengkarakterisasi fungsi sesuai dengan tingkat pertumbuhan di sana. O adalah singkatan dari order (order pertama adalah n order kedua sedang n-kuadrat dll). Dan jika saya tidak salah ini akan menjadi skenario kasus terburuk untuk metode runtime (atau penyimpanan) yang diberikan elemen N. Semakin besar urutannya, semakin buruk kinerjanya.
Sebagai contoh mencari catatan dalam array adalah O (1) (Saya percaya pada beberapa implementasi dari tabel hash yang juga terjadi). Menambahkan nilai ke akhir daftar tautan adalah O (N) karena Anda harus sampai ke akhir daftar sebelum Anda dapat menambahkan elemen dll.

Jawaban ini harusnya sedikit lebih benar daripada upaya pertama saya :)

SoftwareSavant
sumber
2
-1 karena ini baru saja salah tua DAN menjawab pertanyaan terpisah dari yang ditanyakan. Pertanyaannya adalah mengapa huruf "O" digunakan, bukan "bagaimana notasi Big O bekerja?". Anda salah tentang bagaimana Big-oh bekerja juga ... perulangan melalui array adalah O (n) di mana n adalah ukuran array, bukan O (1). Notasi tidak ada hubungannya dengan "siklus" suatu algoritma ... ini adalah pengukuran batas atas dari waktu berjalan suatu algoritma.
Casey Patton
Bukan untuk berdebat denganmu di sini, tapi itu yang kumaksud. Apa maksudnya menjalankan waktu dengan benar? Nah, jangka waktu ditentukan oleh apa yang harus diproses pada mesin. Saya rasa saya menggunakan siklus secara bebas di sini. Dengan siklus saya kira saya harus mengatakan iterate-through atau sesuatu seperti itu. Anda benar tentang batas atas, Itu tidak menentukan rata-rata. Karena itu saya menerima downgrade.
SoftwareSavant