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.
Jawaban:
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.
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 ) T n
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.
Ini jelas telah hancur. Saya pikir penulis bermaksud untuk menulis sesuatu seperti,
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 Θn h h n n Θ 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.
sumber
Untuk deskripsi yang bagus tentang notasi Big O (dan juga little-o dan Theta), saya merekomendasikan buku MIT Introduction to Algorithms oleh Prof. Leiserson.
sumber