Cara Terbaik Belajar Tentang Algoritma Dalam Kedalaman

8

Saya telah membaca situs ini dengan penuh minat, tetapi saya menemukan banyak hal yang terlintas di kepala saya. Ini membuat saya ingin belajar lebih banyak tentang algoritma dan CS secara umum. Sejauh yang saya tahu dari penelitian saya, ada 2 cara utama untuk melakukan ini.

  1. Saya bisa dengan sebuah buku tebal yang bagus dan mengerjakannya perlahan tapi pasti.

  2. Saya dapat "belajar sambil melakukan" dan dengan buku yang bagus, tetapi alih-alih membacanya dari depan ke belakang, pindah ke bagian yang menarik minat saya dan bekerja untuk menerapkan dan menerapkan algoritma yang saya sukai.

  3. ?

Pertanyaan saya adalah, manakah di atas yang Anda gunakan dan apakah Anda akan merekomendasikan pendekatan yang sama kepada orang lain?

Daniel Gratzer
sumber
1
Anda mungkin menemukan jawaban saya di cstheory bermanfaat.
Dai

Jawaban:

15

Saya belajar tentang algoritma dalam kursus universitas bertahun-tahun yang lalu. Tetapi jika Anda ingin melakukan algoritma menggunakan buku, maka Anda perlu yang bagus. Dua buku menonjol bagi saya sebagai cara untuk masuk ke algoritma:

  • Manual Desain Algoritma oleh Steven S. Skiena
  • Pengantar Algoritma oleh T Cormen, C Leiserson, R Rivest dan C Stein

Yang pertama mungkin lebih merupakan manual manual, sedangkan yang kedua lebih seperti Alkitab, tetapi dengan bukti.

Strategi yang dapat Anda ikuti akan terdiri dari membaca, melakukan latihan teoretis, dan kemudian mengimplementasikan sebanyak yang Anda bisa, dengan fokus pada algoritma / masalah yang Anda temukan menarik atau menantang atau keduanya. Jadi, cobalah untuk mencakup semua aspek algoritma, bukan hanya mengimplementasikannya. Ini akan mencakup mempelajari kompleksitas waktu dan ruang mereka dan membuktikan kebenarannya. Studi tentang algoritma lebih dari sekedar mengimplementasikan algoritma.

Setelah mendapatkan pengalaman yang cukup, mulailah mengkhususkan diri. Jika Anda tertarik pada Geometri Komputasi atau algoritma non-pemblokiran, misalnya, maka mulailah menjelajahi buku dan makalah penelitian di bidang ini.

Spesialisasi itu baik, tetapi teknik sampel dari daerah lain juga bagus, jadi membaca secara luas tentang algoritme (dan menerapkan algoritme semacam itu) adalah cara yang baik untuk mempertahankan serangkaian keterampilan yang luas.

EDIT: Setelah melalui algoritma pengantar, Anda dapat berkonsultasi dengan buku-buku seperti Algoritma Acak oleh Motwani & Raghavan atau Algoritma Approximation oleh Vazirani . Buku-buku ini adalah survei (dan sampai batas tertentu, latihan pembelajaran yang baik dalam teknik matematika) dalam teknik desain algoritma yang lebih maju. Mereka juga memperluas wawasan Anda ke banyak bidang lain di CS seperti Grafik dan Jaringan, desain dan Optimasi Struktur Data.

Dave Clarke
sumber
Mulai membaca salinan Manual Desain Algoritma online dan saya sangat menyukainya! Terima kasih!
Daniel Gratzer
3
Saya akan mengulangi satu kalimat sedikit: Studi tentang algoritma hanya kebetulan tentang penerapan algoritma.
JeffE
13

Ajarkan kelas algoritma.

Atau mungkin lebih baik:

menulis buku teks algoritma.

JeffE
sumber
3
+1. Awalnya saya menganggap ini sebagai lelucon, tetapi mempertimbangkannya kembali dan menyadari bahwa tidak ada yang membuat Anda memahami sesuatu secara mendalam seperti ketika Anda dipaksa untuk membantu orang lain untuk mempelajari konsep yang sama. Tentu saja ini termasuk, untuk seorang profesor, baik kelas mengajar, menyiapkan catatan kuliah, catatan dan tentu saja, menulis buku teks ;-) Dua sen saya: mempersiapkan latihan juga sangat membantu. Untuk seorang siswa, saya setuju dengan strategi yang diusulkan oleh @Dave Clarke.
Massimo Cafaro
Tidak, @vzn, jawaban ini benar-benar serius.
JeffE
ah juga takut itu - maka jawaban yang sesuai / disesuaikan dengan siapa pun yang bukan guru atau profesor (yang merupakan subset yang sangat sempit dari populasi) mungkin "mengajarkan algoritma kepada teman Anda" atau "menulis deskripsi tentang algoritma dari memori & minta seseorang mencoba membaca dan mengikutinya "
vzn
5
Jangan terlalu kaku. Mengapa Anda harus dibayar untuk mengajar (atau menulis) untuk mengajar (atau menulis)? Ajari kolega Anda. Ajari anak-anak Anda. Relawan di sekolah menengah setempat atau perguruan tinggi komunitas. Buat video YouTube di hari libur Anda. Mulai algoritma Pechakucha Night.
JeffE
menyentuh. tebak itu bekerja jika "buku teks" juga secara longgar diambil sebagai "menulis di buku catatan spiral terikat, tidak diterbitkan"
vzn
2

Cobalah memecahkan masalah berdasarkan suatu algoritma segera setelah Anda membacanya. Selain itu, untuk memahami algoritma dan mengimplementasikannya dengan lebih baik, Anda harus memiliki pemahaman yang lebih baik tentang struktur data. Ada buku yang sangat bagus tentang struktur data yang ditulis oleh Sahni. Anda dapat menggunakan itu dan untuk algoritma Anda dapat memecahkan masalah buku tantangan pemrograman. Pertanyaan cukup bagus di sana.

Lina Clark
sumber
1

Jika Anda belum belajar tentang algoritma di universitas saya sarankan mengambil salah satu kelas online, Anda dapat mempertimbangkan mendaftar untuk salah satu kursus di coursera.org atau mengikuti video yang diposting oleh Stanford University.

Menandai
sumber
Udacity juga menawarkan kursus di udacity.com/overview/Course/cs215 .
jonsca