Reynolds ve Tymann'dan büyüme tanımının sırası


47

Bilgisayar Bilimleri İlkeleri (2008) adlı kitabı Carl Reynolds ve Paul Tymann (Schaum's Outlines tarafından yayınlanan) adlı bir kitap okuyorum .

İkinci bölüm, bir isim listesi boyunca basitçe yinelenen ve belirli bir isim listede bulunursa, TRUE değerini döndüren sıralı bir arama örneği içeren algoritmalar sunar.

Yazar şunları söylemeye devam ediyor (sayfa 17):

Sıralı arama algoritmasının "büyüme sırası" nın n olduğunu söylüyoruz. Bunun için gösterimi T (n) 'dir. Ayrıca, büyüme sırası T (n) 'nin sabit bir faktörü içinde olan bir algoritmanın da NL tetasına sahip olduğunu söylüyoruz. "Sıralı aramada n nin tetası var." Sorunun boyutu n, aranan listenin uzunluğu.

Bunu takip etmek gerçekten zor. Kitap hatalarla doludur, bu yüzden bir şey eksik olup olmadığına veya yukarıdaki paragrafta bir yazım hatası olup olmadığından emin değilim. Genel İngilizce'de, nadiren "... say" ile biten bir cümle görüyorum.

Kafam çok karışık.

T ne anlama geliyor? Kitap açıklamıyor. Zaman için mi yoksa Theta için mi?

Eğer "a'nın NL'sı", "Sıralı aramada n'nin toplamı vardır." L neyi temsil eder? 'Doğrusal' veya 'uzunluk'?

Bir açıklama isteyen yayıncılara yazdım. Mesajımı yazarlara ileteceklerini söylediler. Cevap vermediler. Başka kaynaklara da bakmayı denedim ama yine de bir şeyleri yanlış anladığım konusunda rahatsız edici bir his alıyorum - bu yüzden bu paragrafı çözene kadar dinlenemiyorum.

Herhangi birinin bu kitabın bir kopyası varsa ve bu paragrafı anladıysa. O zaman, bu paragrafın doğru olup olmadığını bana bildirirseniz veya başka bir deyişle açıklarsanız memnun olurum. Teşekkürler.


Zaman karmaşıklığı T (n), Wikipedia'dan : "Bir algoritmanın performans süresi aynı büyüklükteki farklı girdilerle değişebildiğinden, genellikle bir algoritmanın T (n) olarak belirtilen bir algoritmanın en kötü durum zaman karmaşıklığını kullanır. Herhangi bir büyüklük girdisi için alınan azami süre, daha az yaygındır ve genellikle açıkça belirtilirse, ortalama-durum karmaşıklığının ölçüsüdür.Zaman karmaşıklıkları, T (n) fonksiyonunun doğasına göre sınıflandırılır. T (n) = O (n) ile doğrusal zaman algoritması denir ve [...] "
Stefan

1
Ben bu kitap olduğuna inanıyorum ve ben sadece bıraktığım yıldız dışı incelemeye ek olarak, muhtemelen bir tesadüf değil, bugün tarihli başka bir var!
Jason C

Bu deyimin kullanımı en az kullanılan tanım gibi geliyor: Varsaymak ya da farz etmek. "..., diyelim" olarak düşünün. Hala cümlenin mantıklı olduğundan emin değilim.
Roger Krueger

Yanıtlar:


77

Paragraf yanlıştır. Maalesef, materyali anlamayan bir öğrencinin alıştırmaya cevap olarak yazacağı bir şeye benziyor. Bu tür saçmalıkların ders kitaplarında yeri yoktur. Ani hareketler yapmayın. Kitabı yere koy. Kitaptan uzak dur.

Sıralı arama algoritmasının "büyüme sırası" nın n olduğunu söylüyoruz. Bunun için gösterimi .T(n)

No olarak bilinen bir fonksiyonun gösterimi olan T adı verilen bir argüman alır, n . Bu işlev herhangi bir şey ifade etmek için kullanılabilir. Formların programların çalışma süreleri için tekrarlama ilişkileri yazma geleneği var, örneğin, T ( 1 )T(n)Tn FakatTbir "büyüme düzen" değil, burada: bir nüks ilişki yoluyla tanımlanmış belirli bir fonksiyonudur. Ve sadece "T(n)=fiil"yazamazsınızve insanlardan zihninizi okumasını veTfonksiyonununbazı algoritmaların çalışma zamanını gösterdiğinibilmesini beklemezsiniz .  BuradaTzaman duruyor.

T(1)=kT(n)=T(n1)+lognfor n>1
TT(n)=blahTT

Ayrıca, büyüme sırasının sabit bir faktörü içinde olan bir algoritmada NL'nin bir tetası olduğunu söylüyoruz. "Sıralı aramada n nin tetası var ."T(n)n

Bu açıkça belli oldu. Bence yazarlar şöyle bir şeyler yazmaya niyetli

Ayrıca büyüme sırası bazı sabit faktörü dahilindedir bir algoritma olduğunu söylemek bir theta'yı sahiptir n ve biz derler "sıralı arama bir theta'yı sahiptir n ."T(n)nn

Ama, biz deme lütfen "bir theta'yı sahiptir ise, tıpkı" h yüksekliği için gösterim, sen söyleyemem "John bir sahip h 180cm arasında." Sadece kelimelerin doğru bir formu değil. Aslında, "Algoritmanın çalışma süresi" n (veya " nin  n'dir ) deriz  . Özellikle, Θ algoritmalar değil, matematiksel işlevlerden bahsetmek için bir araçtır. Theta, çalışma süresinin bir şey olduğu anlamına gelmez; aksine, çalışma süresi hakkında konuşmak için kullanabileceğiniz bir şey.nhhnnΘ

Bu arada, "NL", orijinal alıntıda göründüğü konumda hiçbir anlam ifade etmeyen karmaşıklık sınıfı nondeterministik logspace anlamına gelir .


12
İlk paragraf beni güldürdü çünkü bu, bilgisayar bilimleri polisinin size söyleyeceği türden bir şeydi :-) (+1 de, bu iyi bir cevap).
Juho

3
Açıkladığınız için çok teşekkür ederim. Gerçekten çok yararlı ve şimdi onu biraz daha iyi anladığımı hissediyorum (ya da en azından beynimde bu paragrafı anlamadığım için üzülmeyin). Şimdi rahatlayabilirim.
JW.

2

T

Büyük O gösteriminin (hem küçük-o hem de Theta'nın) iyi bir açıklaması için , MIT kitabını Profesör Leiserson'ın Algoritmalarına Giriş kitabını tavsiye ederim .

Onotation

Tnotation


1
Büyük O'yu hiç açıklamaya çalışıyor gibi görünmüyorlar - açıkça theta hakkında konuşuyorlar.
David Richerby

Prof. Leiserson'ın metni özellikle Theta'yı BigO'da daha kesin bir varyasyon olarak tanımlar. Theta'nın başka tanımları olabileceğinin farkındayım, ama BigO ile ilgili teta aşina olduğum kişi.
abelenky

2
Olanların bu olduğunu sanmıyorum. Bunun yerine, "T (n) = n" yazmanın ve açıkça söylemeden) herkesin T (n) 'nin bir çalışma zamanı ve özellikle de kendi algoritmalarının çalışma zamanını ifade ettiği sonucuna varacağını varsaymanın yaygın eksikliğinden şüpheliyim. aklında bulundurun ve n, girişin boyutunu ifade eder.
DW
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.