Big O notasyonunda Big ve O nedir? Tanımları okudum ve O'nun 'oh' olarak telaffuz ettiği şeyi söylemiyor . Örneğin, O (n) nin, n sayısının işlem sayısı olabileceği doğrusal bir algoritmanın karmaşıklığı olduğunu anlıyorum . ama bir O nedir?
Big O notasyonunda Big ve O nedir? Tanımları okudum ve O'nun 'oh' olarak telaffuz ettiği şeyi söylemiyor . Örneğin, O (n) nin, n sayısının işlem sayısı olabileceği doğrusal bir algoritmanın karmaşıklığı olduğunu anlıyorum . ama bir O nedir?
Yanıtlar:
Tahminim, wikipedia ile çakışan düzen olacaktır .
Düzenleme: (benim kendi (takdir edilen iyileştirmeler)) Alman wikipedia makalesinden çeviri
Analitik sayı teorisi kitabının ikinci sayısında (Alman: "Ordnung von") sırasının bir sembolü olarak büyük harf O (aslında zamanın başkenti bir omicron ) ilk kez kullanılmıştır. Bu terminolojinin, özellikle Alman terminolojisinde günümüzde yaygın olarak ilişkili olduğu bir başka Alman sayı teorisyeni olan Edmund Landau'nun çalışması nedeniyle popülerlik kazandı.
"Büyük", "sermaye" anlamına gelir ve "O", "karmaşıklık sırasına" göre düzen anlamına gelir. "Karmaşıklık sırası" nın O (f (x)) olarak yazılması sözleşmesi nedeniyle adlandırılmıştır, örneğin, büyük bir 'O' harfi veya 'Büyük O' harfi ile. Hiç kimse fazla konuşmuyor çünkü 'herkes' ne anlama geldiğini biliyor ve bunu anlamak karmaşıklık analizini anlamanıza gerçekten yardımcı olmuyor.
Karmaşıklık analizi anlayışı için, topgun_ivard tarafından yayınlanan bağlantının başlamak için iyi bir yer olduğunu düşünüyorum. Veri yapılarını veya algoritmaları içeren iyi bir tanıtım kitabı da yardımcı olabilir.
O sipariş için duruyor.
İlk olarak, Alman matematikçi Paul Bachmann tarafından, 1894'te (s. 401) yayınlanan , sayı teorisi Die Analytische Zahlentheorie üzerine kitaplarının ikinci cildinde tanıtıldı . İlk olarak gösterimi kullandığı bir formülden sonra:
(...) wenn wir durch das Zeichen O (n) Grøsse ausdrücken, Bören Ordnung in Bezug auf n die Ordnung von n nicht überschreitet'deki (...)
Çeviri:
(...) O (n) notasyonu ile n 'ye atıfta bulunan sıranın n (...) sırasını geçmediği bir büyüklüğü belirtiriz.
Başkalarının söylediklerinin aksine, metnindeki hiçbir şey, bunun aslında bir Yunan başkenti omikron olduğunu göstermez. Hem Yunanca hem de Latince karakterlerden bol miktarda kullanıyor, bu yüzden anlatmanın hiçbir yolu yok. Metinde “Ordnung n log n ” vb. Kullanmaya devam ettiği göz önüne alındığında , herhangi bir durumda “Ordnung” (“herhangi bir şüphe varsa” için Almanca ”anlamına geldiği açıktır), ancak yine de kullanımı açık bırakabilir. süslü bir Yunan O.
Ancak, Omikron kökeni sembollerini tanıtıldı nedeniyle Donald Knuth bir retronym daha olasıdır omega (Ω) ve teta (Θ) deki ilgili kavramlar için yaptığı kağıt Büyük Omicron ve Büyük Omega Big Teta , ya da muhtemelen Hardy ve Littlewood kim daha önce bir omega sembolü tanıttı.
Bu makaleyi beğendim , umarım onu da yararlı bulursunuz!
Makaleden bir bölümden alıntı:
Büyük Yunan Harfleri
Büyük O genellikle yanlış kullanılır. Big O veya Big Oh, Big Omicron için kısa. Asimptotik karmaşıklığın üst sınırını temsil eder. Dolayısıyla bir algoritma O (n log n) ise, üst sınır cn log n olacak şekilde bir c sabiti vardır.
Log (n log n) (Big Theta) bundan daha sıkı bağlanmış. Böyle bir algoritma, c1n log n <f (n) <c2n log n olacak şekilde iki c1 ve c2 sabitinin mevcut olduğu anlamına gelir.
Ω (n log n) (Big Omega), algoritmanın cn log n'nin alt sınırına sahip olduğunu söylüyor.
Başkaları da var ama bunlar en yaygın ve Büyük O hepsinden en yaygın olanı. Bu tür bir ayrım tipik olarak önemsizdir ancak dikkate değerdir. Doğru gösterim, sonuçta doğru gösterimdir.
Büyük O Nedir?
Big O notasyonu, anahtar faktör sonsuzluğa doğru yöneldiğinde büyüme oranını anahtar faktörlere indirgeyerek bir algoritmanın göreceli karmaşıklığını tanımlamaya çalışır. Bu nedenle, çoğu zaman asimptotik karmaşıklık ifadesini duyacaksınız. Bunu yaparken, diğer tüm faktörler göz ardı edilir. Bu karmaşıklığın göreceli bir temsilidir.
Büyük O Nedir?
Big O bir algoritmanın performans testi değildir. Ayrıca diğer faktörleri görmezden gelme eğiliminde olduğu için kavramsaldır veya soyuttur. Sıralama algoritması karmaşıklığı, genellikle anahtar faktör olarak sıralanan öğelerin sayısına indirgenir. Bu iyi ama şu gibi hususları dikkate almıyor:
Bellek Kullanımı: Bir algoritma diğerinden çok daha fazla bellek kullanabilir. Duruma bağlı olarak bu, tamamen ilgisizden eleştiriye kadar herhangi bir şey olabilir; Karşılaştırma Maliyeti: Karşılaştırma unsurları gerçekten pahalı olabilir, bu da algoritmalar arasındaki gerçek dünya karşılaştırmasını potansiyel olarak değiştirir; Hareketli Elemanların Maliyeti: elemanların kopyalanması tipik olarak ucuzdur, ancak bu mutlaka geçerli değildir; vb.
"f (x), g-x (x) büyüktür"
Fonksiyonların büyümesini tahmin etmenin matematiksel bir yoludur.
F ve g'nin tam sayı kümesinden veya kümeden veya gerçek sayılardan gerçek sayılar kümesine işlevler olmasını sağlayın. C (k) sabitleri varsa, f (x) 'in O (g (x)) olduğunu söyleriz. <= C | g (x) | her yerde x> k.
Bunu "f (x), g-x (g) 'in büyük-oh'u olarak okursunuz.
Büyük O'ya bazen Alman matematikçi Edmund Landau'dan sonra Landau sembolü denir. Bunun ötesinde bir şey anlamına geldiğini sanmıyorum. Aynı zamanda benzer büyük Omega ve büyük Theta notasyonlarına sahipsiniz. Semboller, üçgenlerinizdeki açıları belirtmek için her zaman olduğu gibi teta kullanmak, lise Düzlemsel Geometri sınıfındaydı.
Düzeltme @ back2dos, O’ya verilen siparişe ilişkin tatmin edici bir açıklama sağlamıştır. İyi iş. Cevabını gör.
Donald Knuth, bilgisayar programlarının karmaşıklığını incelemek için uyguladı.
Gösterimin kullanılma nedenini bulmak istiyorsanız, okumalısınız
1892'den Paul Bachmann tarafından "Analytische Zahlentheorie"
EDIT: Yanlış olduğumu ortaya koyuyor. Bununla birlikte, belki bu, birisinin sembollerini düz tutmasına yardımcı olur, bu yüzden silmeyeceğim.
Aslında, Latince harf değil , Oh , Yunanca Omicron harf . Ne yazık ki, bu ikisinin de aynı glifleri var, bu yüzden zamanla orijinal sürüm bozuldu ve şimdi sadece Oh .
Sembol seçiminin aslında belirli bir anlamı yoktur, anımsatıcı bir araç olarak seçilmiştir :
Bu kadar. Bunun gerçek bir anlamı yok, sadece anlambilimi daha kolay hatırlamana yardımcı olacak bir kelime oyunudur.
GÜNCELLEME: Cevabımı temizlemeye ve daha doğru olmaya çalışıyorum
Big O notasyonu, oradaki büyüme oranlarına göre fonksiyonları tanımlamanın bir yoludur. O sıra anlamına gelir (birinci sıra ikinci sıra n kare vb.). Yanılmıyorsam, bu, N öğeleri verilen bir çalışma zamanı (veya depolama) yöntemi için en kötü senaryo olacaktır. Sıra ne kadar yüksekse, yöntemin yaptığı en kötü işlem de odur.
Örneğin, bir dizideki bir kaydı aramak O (1) 'dir (Ben de aynı şekilde olan bir karma tablo uygulamasına inanıyorum). Bir link listesinin sonuna bir değer eklemek, O (N) olacaktır çünkü eleman ekleyebilmeniz için listenin sonuna gitmeniz gerekir.
Bu cevap benim ilk denememden biraz daha doğru olmalı :)