Prolog: Büyük notasyonu, insan aklının sevdiği dilin bir parçası olarak bazı notasyonların gücünün ve belirsizliğinin klasik bir örneğidir. Ne kadar kafa karışıklığına sebep olursa olsun, kolayca tanımlayabildiğimiz ve verimli bir şekilde kabul edebileceğimiz fikirlerini iletmek için gösterilmeye devam ediyor.O
Büyük gösteriminin ne anlama geldiğini tamamen anlıyorum . Benim sorunum derken , burada büyüklüğü girişinde bir algoritma çalışıyor .OT(n)=O(f(n))T(n)n
Üzgünüz, fakat büyük notalarının anlamını anlıyorsanız, bir sorununuz yok .O
Bunun anlamını anlıyorum. Fakat ve iki farklı şeydir. bir tam sayıdır, Ama bir dizi dışarı tükürüyor, yani teknik diyebiliriz olamayacağını bir işlev değil eşittir , tek sorarsa Eğer ne değeri arasında Cevabın ne olacağını? Cevabı yok.T(n)O(f(n))T(n)O(f(n))T(n) O ( f ( n ) ) O ( f ( n ) ) O(f(n))O(f(n))
Önemli olan anlambilimdir . Önemli olan, insanların asimptotik davranışı veya ilgilendiğimiz zaman veya mekan karmaşıklığını tanımlayacağı kesin yorumlarına (biri) kolayca karar verebilmeleridir. nın varsayılan kesin yorum / tanımı Vikipedi'den çevrildiği gibi ,T(n)=O(f(n))
T gerçek veya karmaşık değerli bir fonksiyondur ve , öyle ki, gerçek değerli bir fonksiyondur, gerçek pozitif bir sayı bazı sınırsız bir alt tanımlanan, her ikisi de bir her yeterince büyük değerler için kesinlikle pozitiftir . Yeterince büyük değerlerinin tümü için , nin mutlak değeri en fazla pozitif bir sabitidir . Yani, pozitif bir gerçek sayı ve gerçek bir sayı öyle kiff(n)nnT(n)f(n)Mn0
for all n≥n0,|T(n)|≤Mf(n) for all n≥n0.
Lütfen bu yorumlamanın tanım olarak kabul edildiğini unutmayın . Size çeşitli şekillerde büyük ölçüde yardımcı olabilecek diğer tüm yorum ve anlayışlar ikincil ve sonuç niteliğindedir. Herkes (en azından buradaki her cevaplayıcı) bu yorumu / tanımı / anlambilimi kabul eder. Bu yorumu uygulayabildiğiniz sürece, muhtemelen çoğu zaman iyisinizdir. Rahatla ve rahat ol. Çok fazla düşünmek istemezsiniz, tıpkı İngilizcenin ya da Fransızcanın bazı düzensizlikleri ya da birçok doğal dilin hakkında çok fazla düşünmediğiniz gibi. Sadece bu tanımı kullanarak gösterimi kullanın.
T(n)O ( f ( n ) ) , T ( n ) O ( f ( n ) ) O ( f ( n ) ) bir tam sayıdır, Ama bir dizi dışarı tükürüyor, yani teknik diyebiliriz olamayacağını bir işlev değil eşittir , tek sorarsa Eğer ne değeri arasında Cevabın ne olacağını? Cevabı yok.O(f(n))T(n) O(f(n))O(f(n))
Aslında, soru yanlış olduğu için hiçbir cevap olamazdı. kesin bir sayı anlamına gelmez. Bu adı olan bir işlev için beklemeye kastedilmektedir olan ve biçimsel bir parametredir (ki çeşit sınırlanan ait de ). yazarsanız, bu kadar doğru ve daha da doğrudur . Eğer haritaları bu işlevi için ve fonksiyonu haritaları olmasıdır için , aynı zamanda, yazma için gelenekseldir ya daT(n)Tnnf(n)T=O(f)Tnn2fnn3f(n)=O(n3)n2=O(n3)O. Lütfen ayrıca tanımlamanın bir fonksiyon olduğunu ya da olmadığını söylemediğini not edin. Sol tarafın sağ tarafa eşit olması gerektiği söylenemez! Eşit işaretin normal anlamda eşitlik anlamına gelmediğinden, eşitliğin her iki tarafını da değiştirebileceğiniz ve eşdeğer bir ilişki ile desteklenmesi gerektiği konusunda şüphelisiniz . (Eşit işaretin kötüye kullanılmasının daha da ünlü bir örneği, bazı dillerde olduğu kadar hantal olmak yerine, çoğu programlama dilinde atama anlamında eşit işaret kullanılmasıdır .)O:=
Sadece bir eşitlikten endişe ediyorsak (Ben de dili kötüye kullanmaya başlıyorum. Bu bir eşitlik değil ; ancak eşitliktir, çünkü notasyonda eşit bir işaret vardır veya bir eşitlik olarak yorumlanabilir. ), , bu cevap yapılır.T(n)=O(f(n))
Ancak, soru aslında devam ediyor. Örneğin, ne anlama geliyor ? Bu eşitlik yukarıdaki tanım kapsamında değildir. Yer tutucu sözleşmesini başka bir kongre tanıtmak istiyoruz . İşte Vikipedi'de belirtildiği gibi tam yer tutucu sözleşmesi bildirimi .f(n)=3n+O(logn)
Daha karmaşık kullanımda, bir denklemdeki farklı yerlerde her iki tarafta da birkaç kez görünebilir. Örneğin, için aşağıdakiler doğrudur .O(⋯)n→∞
(n+1)2=n2+O(n)
(n+O(n1/2))(n+O(logn))2=n3+O(n5/2)
nO(1)=O(en)
Bu gibi ifadelerin anlamı şöyledir: Sol taraftaki her bir yerine getiren herhangi bir fonksiyon için, sağ taraftaki her yerine getiren bazı fonksiyonlar vardır , öyle ki tüm bu fonksiyonlar denklemde kullanılır. iki tarafın eşit olmasını sağlar. Örneğin, yukarıdaki üçüncü denklem şu anlama gelir: "Herhangi bir işlev için , bazı işlevler öyle ki "O(⋯)O(⋯)f(n)=O(1)g(n)=O(en)nf(n)=g(n)
Burada , yürürlükteki başka bir yer tutucu sözleşmesi örneği için kontrol etmek isteyebilirsiniz .
Şimdiye kadar büyük notasyonunun set-teorik açıklamasını kullanmadığımı fark etmiş olabilirsiniz . Yaptığım tek şey, sadece " bir dizi işlev" gibi küme-teorik bir açıklama olmadan bile göstermek , büyük ifadesini tam ve mükemmel bir şekilde anlayabiliriz . Bu set-teorik açıklamayı yararlı bulursanız, lütfen yine de devam edin.OO(f(n))O
Büyük , , küçük , küçük , çok değişkenli kullanım ve daha fazlası gibi asimptotik davranışa yönelik göstergeler ailesinin daha ayrıntılı bir analiz ve kullanım şekli için CLRS'nin "asimptotik gösterimi" bölümündeki bölümü kontrol edebilirsiniz . Vikipedi girişi de oldukça iyi bir referanstır.ΘΩoω
Son olarak, 1 ve 2 değişkenli büyük gösteriminde bazı belirsizlikler / tartışmalar vardır . Bunları kullanırken iki kez düşünmek isteyebilirsiniz.O