Urutan definisi pertumbuhan dari Reynolds & Tymann

47

Saya membaca buku berjudul Principles of Computer Science (2008), oleh Carl Reynolds dan Paul Tymann (diterbitkan oleh Schaum's Outlines).

Bab kedua memperkenalkan algoritma dengan contoh pencarian berurutan yang hanya mengulangi melalui daftar nama dan mengembalikan TRUE jika nama yang diberikan ditemukan dalam daftar.

Penulis melanjutkan dengan mengatakan (halaman 17):

Kami mengatakan bahwa "urutan pertumbuhan" dari algoritma pencarian sekuensial adalah n. Notasi untuk ini adalah T (n). Kami juga mengatakan bahwa suatu algoritma yang urutan pertumbuhannya berada dalam beberapa faktor konstan T (n) memiliki theta NL katakan. "Pencarian berurutan memiliki theta n." Ukuran masalahnya adalah n, panjang daftar yang dicari.

Saya merasa ini sangat sulit untuk diikuti. Buku ini penuh dengan kesalahan, jadi saya tidak yakin apakah saya melewatkan sesuatu atau apakah ada kesalahan ketik pada paragraf di atas. Secara umum bahasa Inggris saya jarang melihat kalimat yang diakhiri dengan "... say".

Saya sangat kebingungan.

Apa T berdiri untuk? Buku itu tidak menjelaskan. Apakah ini untuk Waktu atau untuk Theta?

Jika "a theta of NL" berarti "Pencarian berurutan memiliki theta of n." Untuk apa L berdiri? 'Linier' atau 'panjang'?

Saya telah menulis kepada penerbit untuk meminta penjelasan. Mereka mengatakan akan meneruskan pesan saya kepada penulis. Mereka belum menjawab. Saya juga telah mencoba melihat sumber-sumber lain tetapi saya masih merasa bahwa saya salah paham terhadap sesuatu - jadi saya tidak dapat beristirahat sampai saya memecahkan kode paragraf ini.

Jika ada yang memiliki salinan buku itu, dan telah memahami paragraf itu. Lalu, saya akan menghargai jika Anda bisa memberi tahu saya apakah paragraf itu akurat atau menjelaskannya dengan kata lain. Terima kasih.

JW.
sumber
Kompleksitas waktu T (n), dari Wikipedia : "Karena waktu kinerja suatu algoritma dapat bervariasi dengan input berbeda dengan ukuran yang sama, orang biasanya menggunakan kompleksitas waktu terburuk dari suatu algoritma, dilambangkan sebagai T (n), yang didefinisikan sebagai jumlah maksimum waktu yang diambil pada setiap input ukuran n. Kurang umum, dan biasanya ditentukan secara eksplisit, adalah ukuran kompleksitas kasus rata-rata. Kompleksitas waktu diklasifikasikan berdasarkan sifat fungsi T (n). Misalnya, suatu algoritma dengan T (n) = O (n) disebut algoritma waktu linear, dan [...] "
Stefan
1
Saya percaya ini adalah buku ini dan, selain ulasan non-bintang yang baru saja saya tinggalkan, ada tanggal lain hari ini, yang mungkin bukan kebetulan!
Jason C
Penggunaan kata itu terasa seperti definisi yang paling jarang digunakan: Mengasumsikan atau mengira. Anggap saja "..., katakanlah." Masih tidak yakin kalimat itu masuk akal.
Roger Krueger

Jawaban:

77

Paragrafnya salah. Sayangnya, kelihatannya persis seperti hal yang seorang siswa yang tidak mengerti materi akan menulis sebagai jawaban untuk latihan. Omong kosong semacam ini tidak memiliki tempat di buku teks. Jangan melakukan gerakan tiba-tiba. Letakkan buku itu. Menjauh dari buku.

Kami mengatakan bahwa "urutan pertumbuhan" dari algoritma pencarian sekuensial adalah n. Notasi untuk ini adalah .T(n)

Tidak. adalah notasi untuk fungsi yang disebut T , yang mengambil argumen yang disebut n . Fungsi itu dapat digunakan untuk mengartikan apa pun. Ada sesuatu dari tradisi menulis hubungan pengulangan untuk waktu berjalan program dalam bentuk, misalnya, T ( 1 )T(n)Tn TetapiTbukan "tatanan pertumbuhan", di sini:Tadalah fungsi spesifik yang didefinisikan melalui relasi perulangan. Dan Anda tidak bisa hanya menulis "T(n)=bla" dan berharap orang membaca pikiran Anda dan tahu bahwa fungsi Tmenunjukkan waktu berjalan beberapa algoritma. T di sini berarti waktu.

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

Kami juga mengatakan bahwa suatu algoritma yang urutan pertumbuhannya berada dalam beberapa faktor konstan memiliki theta NL katakan. "Pencarian berurutan memiliki theta n ."T(n)n

Ini jelas telah hancur. Saya pikir penulis bermaksud untuk menulis sesuatu seperti,

Kami juga mengatakan bahwa suatu algoritma yang urutan pertumbuhannya berada dalam beberapa faktor konstan memiliki theta n dan kami mengatakan, "Pencarian berurutan memiliki theta n ."T(n)nn

Tapi, tolong, kami tidak mengatakan "memiliki theta of ," sama seperti, jika h adalah notasi Anda untuk tinggi, Anda tidak akan mengatakan "John memiliki h 180cm." Itu hanya bukan bentuk kata yang benar. Kami benar-benar mengatakan, "Waktu berjalan dari algoritma adalah theta  n (atau theta of  n )." Perhatikan khususnya, bahwa ΘnhhnnΘ adalah alat untuk berbicara tentang fungsi matematika, bukan algoritma. Theta tidak berarti waktu berlari adalah sesuatu; alih-alih, ini adalah sesuatu yang dapat Anda gunakan untuk berbicara tentang waktu berjalan.

"NL", omong-omong, menandakan kompleksitas kelas nondeterministic logspace , yang tidak masuk akal sama sekali pada posisi yang muncul dalam kutipan asli.

David Richerby
sumber
12
Paragraf pertama membuat saya tersenyum karena itu persis seperti yang akan diberitahukan polisi ilmu komputer kepada Anda :-) (+1 juga, ini adalah jawaban yang bagus).
Juho
3
Terima kasih banyak atas penjelasannya. Memang sangat membantu dan sekarang saya merasa saya memahaminya sedikit lebih baik (atau, setidaknya, tidak merasa cemas di otak saya karena tidak memahami paragraf itu). Saya bisa santai sekarang.
JW.
2

T

Untuk deskripsi yang bagus tentang notasi Big O (dan juga little-o dan Theta), saya merekomendasikan buku MIT Introduction to Algorithms oleh Prof. Leiserson.

Onotation

Tnotation

kasar
sumber
1
Kedengarannya mereka tidak mencoba menjelaskan O besar - mereka secara eksplisit berbicara tentang theta.
David Richerby
Teks Prof. Leiserson secara khusus menggambarkan Theta sebagai variasi yang lebih tepat tentang BigO. Saya menyadari mungkin ada definisi lain dari Theta, tetapi theta yang berhubungan dengan BigO adalah yang saya kenal.
abelenky
2
Saya tidak berpikir ini yang terjadi. Sebagai gantinya, saya menduga itu adalah kecerobohan umum dari penulisan "T (n) = n" dan mengasumsikan (tanpa mengatakannya secara eksplisit) bahwa setiap orang akan menyimpulkan bahwa T (n) mengacu pada waktu berjalan, dan khususnya waktu berjalan dari algoritma yang mereka gunakan. ada dalam pikiran, dan n mengacu pada ukuran input.
DW