Algoritma Desain dan Kompleksitas - Bagaimana berpikir dengan cara seperti itu?

15

Pertanyaan saya adalah pertanyaan umum: Bagaimana saya mulai berpikir dalam hal Algoritma Desain dan Kompleksitas? Saya akan mengambil Program Pascasarjana dalam Desain Algoritma. Saya telah mendaftar sebelumnya tetapi kemudian membatalkannya karena saya tidak bisa mengikutinya. Saya harus mengikuti kursus ini sebagai persyaratan.

Apakah ada 'trik' untuk berpikir dengan cara ini? Saya tahu ini menjelaskannya secara kasar, tetapi terkadang perspektif baru membantu untuk memikirkan suatu subjek secara berbeda.

Masalah utama yang saya miliki dengan kursus ini (dan kursus teori serupa) adalah: Bagaimana saya tahu bahwa solusi yang saya buat sudah benar? Saya menemukan bagian teoritis menjadi sewenang-wenang terutama ketika 'membuktikan' suatu algoritma tertentu bertindak atau berperilaku dengan cara tertentu?

Kursus kami akan menggunakan teks standar: Pengantar Algoritma oleh CLRS.

Apakah ada buku teks / situs / buku / dll. yang mungkin menawarkan cara untuk menjadi percaya diri di bidang ini?

Terima kasih untuk semuanya,

Jason Dane

Jason Dane
sumber
2
Saya sarankan melihat posting ini . Saya secara khusus menyarankan buku Udi Manber.
MS Dousti
1
Diskusi tentang StackOverflow ini menawarkan beberapa saran: stackoverflow.com/questions/2256721/…
Jeffε
2
Saya mendukung rekomendasi Manber. Lihat juga Cara Berpikir tentang Algoritma oleh Jeff Edmonds: amazon.com/Think-About-Algorithms-Jeff-Edmonds/dp/0521614104
Jeff
"Bagaimana saya tahu bahwa solusi yang saya buat sudah benar?" Apakah maksud Anda (1) Anda membuat algoritma tetapi tidak tahu bagaimana membuktikan bahwa itu benar, atau (2) Anda memiliki bukti tetapi Anda tidak yakin apakah itu benar?
Jukka Suomela
Langkah satu: berhenti memberikan jawaban langsung dan merujuk solusi orang lain sebagai gantinya. ;)
Raphael

Jawaban:

18

Saya pikir kursus tentang desain algoritma dan kompleksitas komputasi selalu menantang bagi siswa yang tidak terbiasa dengan mata pelajaran ini karena mereka memang membutuhkan tingkat kematangan matematika dan keterampilan memecahkan masalah. Dalam kursus pascasarjana pertama saya tentang "kompleksitas komputasi", seorang teman saya yang memiliki gelar dalam matematika murni mengatakan kepada saya betapa terkejutnya dia dengan kenyataan bahwa meskipun kursus itu tidak memerlukan banyak latar belakang matematika (setidaknya itulah yang dikatakan dalam garis besar kursus), sebenarnya dibutuhkan hampir semua keterampilan yang ia dapatkan melalui semua gelar sarjana matematika murni!

Saya menemukan bahwa saya paling tahu tentang "jalan" (ketika saya pertama kali memulai studi pascasarjana) dengan membaca dan melakukan latihan dari buku Sipser . Pastikan Anda melakukan latihan karena keterampilan pemecahan masalah dan kematangan matematika adalah apa yang ingin Anda pelajari dan bukan hanya sekumpulan fakta atau definisi.

Namun, buku Sipser hanya baik untuk hal-hal kompleksitas dan kelengkapan NP, tidak cukup untuk mengganti buku CLRS. Satu-satunya masalah dengan buku CLRS adalah bahwa keuntungan dari cakupan yang komprehensif mungkin menjadi kelemahannya karena buku itu mungkin terlihat cukup menakutkan atau membingungkan bagi siswa. Jadi saran saya adalah Anda harus benar-benar pergi ke perpustakaan dan mencari buku tentang algoritma, memindai satu per satu dan memilih yang paling sesuai dengan pola pikir Anda. Dan lagi jangan lupa melakukan latihan!

Untuk algoritma, saya pribadi menyarankan buku-buku berikut (selain yang disarankan oleh Sadeq dan JeffE):

  • Algoritma buku yang sangat mudah dibaca dan indah oleh S. Dasgupta, CH Papadimitriou, dan UV Vazirani.
  • Catatan pembunuh (atau konsep buku) oleh Jeff Erickson. (Karena JeffE terlalu sederhana untuk menyarankan catatannya sendiri, saya harus melakukannya sendiri.)

Secara umum, setiap kali Anda mempelajari algoritma atau struktur data tertentu, jika entah bagaimana eksposisi dalam buku teks Anda tidak cukup jelas bagi Anda, maka cara terbaik adalah mencari di Google untuk catatan kuliah tentang topik tertentu itu. Dalam beberapa kasus, penjelasan berbeda tentang hal yang sama pada akhirnya memberi Anda gambaran lengkap. Setidaknya, begitulah cara kerjanya bagi saya.

Dai Le
sumber
8
+1 untuk catatan pembunuh Jeff. Saya selalu senang membacanya. Kaligrafi Arab dari kata Algoritma sangat indah.
Mohammad Al-Turkistany