Apakah basis log Big O (logn) e?

96

Untuk jenis struktur data pohon pencarian biner, saya melihat notasi Big O biasanya dicatat sebagai O (logn). Dengan huruf kecil 'l' di log, apakah ini menunjukkan basis log e (n) seperti yang dijelaskan oleh logaritma natural? Maaf untuk pertanyaan sederhana ini, tetapi saya selalu kesulitan membedakan antara logaritma tersirat yang berbeda.

BuckFilledPlatypus
sumber
58
Seperti yang ditunjukkan orang lain dengan meyakinkan, itu tidak masalah. Semua logaritma berbeda satu sama lain dengan konstanta yang hanya bergantung pada basis yang terlibat. Karena faktor-faktor ini adalah konstanta, mereka tidak relevan untuk keperluan analisis asimtotik. Kedua, sejauh menentukan dasar tersirat, itu tergantung pada konteks. Sebagai aturan umum gunakan yang berikut: 1. Ketika seorang ahli matematika menulis yang log ndia maksud adalah logaritma natural. 2. Ketika seorang ilmuwan komputer menulis yang log ndia maksud adalah basis dua. 3. Ketika seorang insinyur menulis yang log ndia maksud adalah basis sepuluh. Ini biasanya benar.
jason
4
@Jason, konvensi lain (dalam matematika) adalah bahwa ln n berarti logaritma natural dan log n adalah basis sepuluh. Pikirkan ln singkatan dari 'logaritma naturelle' Prancis.
Pria Internet
2
Basis dari logaritma adalah jumlah anak yang dimiliki setiap node. Jika ini adalah pohon biner maka itu adalah log basis 2.
Paul
3
Saya menghargai jawaban Anda, Jason, dan inilah sesuatu untuk dipikirkan. Ketika saya telah meneliti apa basis lognya (saya berasumsi 2), saya telah melihat jawaban yang sama: bahwa tidak masalah karena Anda dapat menghilangkan konstanta, log_10 (2). Masalah saya dengan ini adalah, misalnya: 5 log_10 (5) <5 sedangkan 5 log_2 (5)> 5. Saya memasukkan ini dengan cepat dalam perhitungan saya untuk membantu membuat konsep di mana O (n logn) memiliki waktu berjalan yang lebih baik atau lebih buruk daripada O (n). Bergantung pada basisnya, itu TIDAK masalah. Oleh karena itu, menurut saya jawaban yang BENAR untuk pertanyaan ini adalah bahwa log secara kontekstual berarti basis 2 di sebagian besar aplikasi ilmu komputer.
Doug Mead
@ Jason, menurut saya lebih mudah menggunakan ln (interpretasi matematikawan);). Dua contoh lainnya masuk akal.
belford

Jawaban:

77

Setelah diekspresikan dalam notasi big-O (), keduanya benar. Namun, selama derivasi dari O () polinomial, dalam kasus biner pencarian, hanya log 2 adalah benar. Saya berasumsi bahwa perbedaan ini adalah inspirasi intuitif untuk pertanyaan Anda.

Juga, menurut pendapat saya, menulis O (log 2 N) lebih baik untuk contoh Anda, karena lebih baik mengkomunikasikan turunan dari run-time algoritma.

Dalam notasi O besar (), faktor konstanta dihilangkan. Mengonversi dari satu basis logaritma ke yang lain melibatkan perkalian dengan faktor konstanta.

Jadi O (log N) setara dengan O (log 2 N) karena faktor konstanta.

Namun, jika Anda dapat dengan mudah mengeset log 2 N dalam jawaban Anda, melakukannya lebih bersifat pedagogis. Dalam kasus pencarian pohon biner, Anda benar bahwa log 2 N dimasukkan selama penurunan runtime big-O ().

Sebelum mengekspresikan hasil sebagai notasi O besar (), perbedaan sangat penting. Saat menurunkan polinomial untuk dikomunikasikan melalui notasi O besar, tidak benar untuk contoh ini menggunakan logaritma selain log 2 N, sebelum menerapkan notasi O () -. Segera setelah polinomial digunakan untuk mengkomunikasikan runtime kasus terburuk melalui notasi big-O (), tidak masalah logaritma apa yang digunakan.

Heath Hunnicutt
sumber
4
Tetapi sangat mudah untuk menunjukkan bahwa log_2 nada Θ(log_a n)untuk basis apa pun a, jadi saya tidak yakin saya melihat bagaimana menggunakan basis 2 "lebih benar".
bcat
1
Kinopkio dan bcat, terima kasih telah membantunya menjadi berguna. Awalnya tidak terlalu bagus. :)
Heath Hunnicutt
2
Saya menambahkan kejelasan tetapi saya sangat terluka karena menurut Anda jawaban saya mungkin membingungkan orang. Sebenarnya, sebagian besar jawaban disini tidak mempertimbangkan intuisi OP dan mencoba mengajarinya banyak. Saya tidak terlalu kagum dengan persaingan, saya agak sedih dengan standar rendah untuk pedagogi.
Heath Hunnicutt
11
"selama penurunan polinomial O (), dalam kasus penelusuran biner, hanya log2 yang benar." -1 untuk matematika yang buruk. Definisi dari x (n) ~ O (f (n)) mengatakan bahwa terdapat konstanta c sehingga c * (f (n)) <x (n) untuk semua n> n_0. Dengan demikian, koefisien konstan sama sekali tidak relevan selama analisis.
rlbond
3
Karena log2 (x) sama dengan log10 (x) / log10 (2), Anda dapat menurunkannya dengan cara apa pun. Log tidak sepenuhnya berbasis 2 di titik mana pun.
rlbond
80

Notasi O besar tidak dipengaruhi oleh basis logaritmik, karena semua logaritma dalam basis yang berbeda dihubungkan oleh faktor konstanta , O(ln n)ekivalen dengan O(log n).

masukkan deskripsi gambar di sini

Cade Roux
sumber
2
grafiknya rapi tetapi pikirkan tentang turunan dari O () - polinomial ... sebelum O () diterapkan, hanya log-base-2 yang benar untuk pencarian biner.
Heath Hunnicutt
1
@Heath Hunnicutt: Tidak. log_2 xBerbeda log_b xdengan faktor konstan c(b)untuk setiap basis yang tidak bbergantung x.
jason
4
Tetapi mengapa Anda membicarakan hal itu, jika tidak ada hubungannya dengan pertanyaan dan hanya membingungkan?
Hobbs
4
Hobbs: Karena fakta itulah yang menjadi alasan OP terinspirasi untuk bertanya. Saya mencoba menghubungkan ide-idenya dengan jawaban, jadi dia mengerti mengapa dia memiliki intuisinya, mengapa itu tidak berlaku untuk O (), tetapi tidak untuk menerapkan secara berlebihan apa yang dia pelajari di sini ke bagian derivasi dari analisis. Jawaban singkat yang tidak membahas akar penyebab kesalahpahaman dapat menyebabkan kesalahpahaman lebih lanjut. Itu pedagogi yang buruk.
Heath Hunnicutt
4
@Heath Hunnicutt: Jika Anda melakukan analisis asimtotik, tidak masalah. Bahwa Anda menunggu hingga menit terakhir untuk memberikan O besar tidak mengubah fakta bahwa saya dapat mengalikan dan membagi semua logaritma saya dengan konstanta konyol dan mengubah basis di semua langkah. Artinya, jika saya memiliki beberapa analisis yang melibatkan log_2 n, saya bisa masuk dan mengganti di log_2 nmana saja log_pi 2 * log_2 n / log_pi 2dan kemudian berakhir dengan analisis yang ada di log_pi 2 * log_pi nmana-mana. Sekarang analisis saya adalah dalam istilah log_pi n.
jason
9

Tidak masalah apa basa itu, karena notasi O besar biasanya ditulis hanya menunjukkan urutan tertinggi secara asimtotik n, sehingga koefisien konstan akan hilang. Karena basis logaritma yang berbeda setara dengan koefisien konstanta, maka basis tersebut menjadi berlebihan.

Karena itu, saya mungkin akan menganggap log base 2.

Daniel Pryden
sumber
@Kinopiko: Apa sebenarnya yang salah tentang itu? Lebih tepatnya, bagaimana jawaban saya sebenarnya berbeda dari jawaban Anda dan orang lain di sini?
Daniel Pryden
Ah, mungkin kesalahan saya dalam penggunaan "koefisien". Saya akan mengedit untuk memperjelas.
Daniel Pryden
Itulah masalah utama saya dengan jawaban Anda. Juga, agak tidak jelas apa yang Anda maksud dengan "mereka masih akan berpengaruh". Beberapa berpengaruh pada apa?
bcat
1
Jawaban Anda membahas koefisien urutan tertinggi. Apa yang Anda katakan sejauh ini benar, tetapi itu bukanlah alasan bahwa basis logaritma tidak relevan. Alasannya adalah perbedaan antara logaritma basis yang berbeda adalah konstanta yang diserap oleh O ().
1
@Kinopiko: Oke. Saya pikir kami mengatakan hal yang sama. Saya akan mengatakan O (100) = O (1) karena O (100) = O (100 * 1) = O (C * 1) = O (1). Itulah yang saya maksud dengan ekspresi konstan yang tidak berguna. Artinya, urutan dari setiap konstan 1.
Daniel Pryden
7

Keduanya benar. Pikirkan tentang ini

log2(n)=log(n)/log(2)=O(log(n))
log10(n)=log(n)/log(10)=O(log(n))
logE(n)=log(n)/log(E)=O(log(n))
karton
sumber
2

Ya, kalau bicara soal big-O notation, base nggak jadi soal. Namun, secara komputasi ketika dihadapkan pada masalah pencarian yang sebenarnya, itu penting.

Saat mengembangkan intuisi tentang struktur pohon, sangat membantu untuk memahami bahwa pohon pencarian biner dapat dicari dalam waktu O (n log n) karena itu adalah tinggi pohon - yaitu, dalam pohon biner dengan n node, pohon kedalaman adalah O (n log n) (basis 2). Jika setiap node memiliki tiga anak, pohon tersebut masih dapat dicari dalam waktu O (n log n), tetapi dengan logaritma basis 3. Secara komputasi, jumlah anak yang dimiliki setiap node dapat berdampak besar pada performa (lihat misalnya: teks tautan )

Nikmati!

Paul

Paul
sumber
Anda bermaksud mengatakan bahwa tinggi pohon biner adalah log n, bukan n log n, bukan?
sel
1

Secara teknis basis tidak masalah, tetapi Anda umumnya dapat menganggapnya sebagai basis 2.

Tim Sylvester
sumber
1

Pertama, Anda harus memahami apa artinya fungsi f (n) menjadi O (g (n)).

Definisi formalnya adalah: * Fungsi f (n) dikatakan O (g (n)) iff | f (n) | <= C * | g (n) | setiap kali n> k, di mana C dan k adalah konstanta. *

Jadi misalkan f (n) = log basis a dari n, di mana a> 1 dan g (n) = log basis b dari n, di mana b> 1

CATATAN: Ini berarti nilai a dan b dapat berupa nilai apa pun yang lebih besar dari 1, misalnya a = 100 dan b = 3

Sekarang kita mendapatkan yang berikut: log basis a dari n dikatakan O (log basis b dari n) iff | log basis a dari n | <= C * | basis log b dari n | setiap kali n> k

Pilih k = 0, dan C = log basis a dari b.

Sekarang persamaan kita terlihat seperti berikut: | log base a dari n | <= basis log a dari b * | basis log b dari n | setiap kali n> 0

Perhatikan ruas kanan, kita dapat memanipulasi persamaan: = log basis a dari b * | log basis b dari n | = | basis log b dari n | * basis log a dari b = | basis log a dari b ^ (basis log b dari n) | = | basis log a dari n |

Sekarang persamaan kita terlihat seperti berikut: | log base a dari n | <= | basis log a dari n | setiap kali n> 0

Persamaannya selalu benar tidak peduli berapa nilai n, b, atau a, selain batasannya a, b> 1 dan n> 0. Jadi log basis a dari n adalah O (log basis b dari n) dan karena a, b tidak masalah kita bisa menghilangkannya.

Anda dapat melihat video YouTube di sini: https://www.youtube.com/watch?v=MY-VCrQCaVw

Anda dapat membaca artikelnya di sini: https://medium.com/@randerson112358/omitting-bases-in-logs-in-big-o-a619a46740ca

tempmail
sumber