Büyük O'da O Nedir?


23

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?


13
İngiliz alfabesinin 15. harfidir. Aynı zamanda Yunan alfabesindeki 15. harf.
Joel Etherton 13:11

1
Sadece açıklığa kavuşturmak için: O'nun kullanılan sembolün (Q veya E yerine veya başka bir şey yerine) neden kullanıldığını ve eğer varsa O'nun diğer sembollere göre ne anlama geldiğini açıklıyorsunuz.
SinirliFormsDesigner ile

6
@Joel: Aslında Omicron ve bu özel mektubun neden seçildiğinin ipucudur .
Jörg W Mittag 13:11

bu cevap Omicron teorisini çürütüyor (doğru sanırım).
Hawkeye Parker

Yanıtlar:


31

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ı.


5
Birçok matematikçinin kendisine böyle bir şey ifade ettiği durum olsa da, aslında öyle değildi. 20. yüzyılın başlarından beri teori kitapları okursanız, böyle bir açıklama bulamazsınız. Ne olduğu ve gösterimdeki düşüncelerinin ne olduğunu bulmak için Almanca okuyamıyorum.
Jonathan Henson

1
@Jonathan: Yayın güncellendi.
back2dos 13:11

Çok hoş! Sayı teorisi kitaplarımın hepsine baktım ve hiçbir yerde O'nun bir açıklamasını bulamadım. +1
Jonathan Henson

2
Ben her zaman O'nun bir şey ifade etmediğini söylemek kadar sıralı olarak ilan ettim .
Newtopian,

16

"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.


5
Üzgünüm, ama Bachmann-Landau yazısı bir Alman matematikçi tarafından icat edildi, bu yüzden İngilizce bir kelimeden sonra ismini vereceğini pek sanmıyorum. Aslında, Amerikalı bir matematikçi tarafından icat edilmiş olsa bile , muhtemelen bir Alman kelimesinden sonra isimlendirilirdi, çünkü icat edildiğinde (1920 civarında, sanırım), uluslararası matematik dili Almanca idi. Ayrıca, uzaktan bile karmaşıklıkla ilgisi yok.
Jörg W Mittag

1
@ Jörg: Evet, ancak Alman wiki makalesinin orijin olduğunu iddia ettiği Ordnung olamazdı : de.wikipedia.org/wiki/Landau-Symbole#Geschichte
back2dos 13:11

1
@Ethel, size oy kullanabilmem için makalenizde küçük bir değişiklik yapabilir misiniz? Gerçekten haklısın. Oy vermeden önce düzenlemelisin.
Jonathan Henson,

1
@ Jonathan, tam olarak hangi küçük değişikliği istediğinden emin değilim. Devam edip istediğiniz düzenlemeyi yapabilir misiniz? Veya, back2dos'un yanıtını durdurabiliriz, bazı mükemmel araştırmalar nedeniyle yine de en iyi cevabı bulmuş gibi görünüyor :)
Ethel Evans

1
Hm, ilginç. İsveç'te Big Oh, genellikle "ordning" (sıra için İsveççe kelime) yerine "ordo" (iyi, sıra için latin) olarak adlandırılır.
Vatine

11

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ı.


2
İlginç. Sanırım haklısın. Hem Landau'nun hem de Bachmann'ın kitaplarındaki tanımlara baktım ve aslında a) bir Latince kullanın Oh, bir Yunan Omikronu değil, b) Her ikisi de "Ordnung" kelimesini kullanır ve c) Landau açıkça "Ordnung" anlamına geldiğini belirtir . Düzeltilmiş duruyorum.
Jörg W Mittag

Hangi daha iyi kelime bulunabilir? Yani bir Alman’dan mı? Ordnung ist das Halbe Leben!
JensG

Bence (doğru, aşırı oylanmış, müthiş) cevabınızın ilk cümlesinin şunu okuması gerekir: 'O "Ordnung" (Almanca "Emir" anlamına gelir). Bu cevabın diğer okuyucuların dikkatini çekmesine yardımcı olacaktır.
Hawkeye Parker

5

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.


5
Bir makaleyi basitçe bağlamak çok yardımcı olmaz. Özellikle iş parçacığı ile ilgili bulduğunuz bölümü parola koymak veya alıntı yapmak genellikle iyi bir fikirdir.
Demian Brecht

3
Aşağı oylar gerçekten gerekli mi? Bağladığı makale çok alakalı ve IMHO oldukça yardımcı. Bu arada, en çok oylanan cevap Vikipedi makalesine bir link. Kovan zihninin ikiyüzlülüğünü dengelemek için + 1.
Brandon Moretz

1
-1, çünkü eserin çok güzel ve iyi yazılmış bir makale olmasına rağmen, soru ile ilgisi yok.
Jörg W Mittag

@Jorg, makalenin sorunu çözeceğini asla söylemedim, ama paylaştım çünkü bu kavramlara baktığımda faydalı buldum.
topgun_ivard 13:11

3
@topgun_ivard: Ölü bir bağlantıya dönüşürse ne olur? Paraphrasing, 1) bu konunun izleyicisinin bağlantınızın Coles notlarını almasını sağlar (zaman paradır) ve 2) yayınınızın ölü bir bağlantıda alakasız kalmamasını sağlar.
Demian Brecht

2

"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"


2

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 :

  • Omicron'un içindeki MICRO harfleri vardır ve Omicron sembolünün semantiği kabaca "küçükten küçük" anlamına gelir.
  • Omega'nın içinde MEGA harfleri vardır ve Omega sembolünün semantiği kabaca "büyüktür" anlamına gelir.
  • Theta (Θ) eşit bir işarete benziyor ve Theta sembolünün semantiği kabaca "eşit" anlamına geliyor

Bu kadar. Bunun gerçek bir anlamı yok, sadece anlambilimi daha kolay hatırlamana yardımcı olacak bir kelime oyunudur.


2
Anımsatıcı önerinize inanmayı çok isterdim (bu gerçekten harika bir fikir), bunun Bachmann'ın asıl orijinal amacı olduğuna dair bir kanıt görmem gerekecek. Sağla, ben de seni + 1'leyeceğim.
Jonathan Henson

2
@ Jonathan Henson: Görünüşe göre, Prof. Knuth :-) tarafından yanlış yönlendirildim.
Jörg W Mittag

-5

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ı :)


2
-1 çünkü bu sadece eski düz yanlış VE sorulandan ayrı bir soruya cevap verdi. Soru, neden “O” harfi kullanılmıyor, “Büyük O gösterimi nasıl çalışıyor?” Değil. Big-oh'un nasıl çalıştığı konusunda yanılıyorsunuz ... ... bir dizi boyunca döngü yapmak O (n) 'dir; burada n, dizinin büyüklüğüdür (O) değil İşaretlemenin bir algoritmanın "çevrimleri" ile ilgisi yoktur ... bu bir algoritmanın çalışma zamanının üst sınırının bir ölçümüdür.
Casey Patton

Burada seninle tartışmak istemem, ama demek istediğim bu. Çalışma süresi ne anlama geliyor? Çalışma süresi makinede neyin işlenmesi gerektiği ile belirlenir. Sanırım burada liberal bir şekilde kullanım döngüsü kullanıyorum. Döngü olarak, yinelemeli geçiş söylemeliydim ya da onun gibi bir şey Üst sınır konusunda haklısın ama, ortalamayı belirlemez. Bu yüzden düşüşü kabul ediyorum.
SoftwareSavant
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.