Saya sering ditanya apa yang dilakukan ilmuwan komputer teoretis. Akan lebih baik memiliki beberapa tanggapan yang bagus untuk pertanyaan ini. Saya cenderung untuk kembali ke jargon teknis dan mata orang biasanya berkaca-kaca pada titik ini.
Apa yang dilakukan ilmuwan komputer teoretis, dalam istilah yang dapat dipahami oleh orang-orang yang bukan ilmuwan komputer?
Jawaban yang baik harus cepat, akurat dalam roh, tanpa terdengar samar atau basi. Untuk poin bonus, jawabannya harus memberi petunjuk mengapa ilmuwan komputer teoretis bukanlah ahli matematika atau praktisi TI.
Pertanyaan ini diinspirasi oleh pertanyaan MO https://mathoverflow.net/questions/3559/colloquial-catchy-statements-encoding-serious-mathematics meskipun tujuannya berbeda.
sumber
Saya memberi orang contoh nyata. Secara khusus, saya sering memotivasi teori kompleksitas dengan masalah yang sangat ilustratif (tetapi sederhana) yang sama. Saya bertanya kepada hadirin bagaimana mereka akan menginstruksikan anak kecil untuk mengetahui apakah namanya ada dalam daftar nama yang diurutkan berdasarkan abjad (dan memberi tahu mereka bahwa anak tersebut memerlukan waktu 3 detik untuk membandingkan satu nama dengan yang lain). Sering terjadi bahwa orang / kelompok akan datang dengan pendekatan linier yang naif. Saya memaksa percakapan untuk beralih ke algoritma logaritma (saya mungkin menggunakan kata yang berbeda dari logaritma) baik dengan meminta orang itu untuk sesuatu yang lebih baik atau dengan menyebutkannya sendiri. Saya tunjukkan kepada mereka bagaimana menggandakan ukuran daftar hanya menambah tiga detik pekerjaan untuk anak dengan pendekatan baru ini. Dan saya membandingkan ini secara langsung dengan versi linear, yang sekarang akan tampak konyol.
Tentu saja, saya membawanya kembali ke bumi. Saya memberi tahu mereka bahwa anak yang dimaksud pada umumnya adalah komputer tetapi bisa juga anak atau siapa saja pada umumnya. Bahwa pertanyaan yang kami ajukan sebenarnya bukan tentang komputer tetapi lebih tentang jumlah ruang, waktu, dan informasi yang Anda butuhkan untuk menyelesaikan masalah. Dan saya memotivasi analisis kompleksitas dengan analogi dengan dua metode berbeda untuk menyelesaikan masalah yang sama.
Ketika saya mendapat perhatian mereka - saya mengeluarkan pemukul berat. Saya bertanya kepada mereka, "dapatkah Anda membuktikan bahwa solusi logaritmik adalah yang terbaik yang dapat Anda harapkan untuk dilakukan atau dapatkah Anda menemukan sesuatu yang lebih baik?" dan saya bertanya kepada mereka "adakah masalah yang tidak bisa diselesaikan oleh proses (algoritma)?" Saya terkejut melihat bagaimana orang mencoba menangani pertanyaan-pertanyaan ini ketika mereka tidak memiliki latar belakang TCS.
sumber
Saya suka posting ini oleh Scott Aaronson , yang menjelaskan teori kompleksitas sebagai teologi kuantitatif. Berikut ini kutipannya:
sumber
Contoh jawaban, yang pasti dapat ditingkatkan:
sumber
Saya pikir jawaban yang sangat baik (bukan) diberikan oleh Dijkstra (selalu merupakan sumber yang baik untuk beralih ke pernyataan berkerak dan absolut :)).
sumber
Saya sangat suka pengantar masalah Pemisahan seperti yang diberikan oleh Brian Hayes yang diberikan di sini .
Ia menggunakan masalah mempartisi sekumpulan anak ke dalam tim dengan kemampuan total yang sama (dengan asumsi Anda dapat mengukur kemampuan setiap anak menggunakan angka), dan juga menjelaskan algoritma serakah yang biasanya digunakan oleh anak-anak untuk menyelesaikan masalah ini.
Ini masalah yang sangat sederhana untuk dipahami, mudah untuk memahami algoritma, mengejutkan bahwa itu (kemungkinan besar) sangat sulit secara umum dan memalukan bahwa kita masih tidak dapat membuktikan bagian terakhir.
sumber
Saya biasanya menjawab dengan sesuatu seperti: Saya mencoba mencari tahu apa yang mungkin dilakukan dengan komputer. Itu tidak sepenuhnya akurat tetapi cukup dekat, dan biasanya orang bertanya sesuatu seperti "Apa maksudmu?" dan saya dapat referensi sesuatu yang spesifik, seperti TSP. Meskipun saya mengubah kata-kata penjual keliling sebagai, katakanlah, masalah bar-hopping, masalah agen real estat, masalah terlalu banyak tugas-tidak-cukup-waktu, atau apa pun yang tampaknya sesuai.
Sebagai contoh: "Baiklah, katakanlah Anda perlu berbelanja sepatu, bahan makanan, dan pakaian, mengambil kue, potong rambut, dan menjalankan beberapa tugas lain sebelum makan malam. Akan lebih baik jika Anda bisa meletakkan semua barang itu ke dalam GPS Anda dan itu bisa memberi tahu Anda apa perintah untuk melakukan semua tugas Anda untuk dilakukan pada jam 4. Tetapi jika daftar tugas cukup lama, bahkan tidak mungkin, sekarang, untuk mencari tahu apakah Anda bisa mendapatkan mereka dilakukan oleh 4 sama sekali , apalagi apa yang memesan yang perlu Anda lakukan dalam, dalam jumlah waktu yang wajar. aku ingin tahu apakah itu mungkin untuk mengatasi masalah tersebut dengan cepat dengan komputer."
sumber
Apa cara terbaik untuk menyelesaikan masalah, dan masalah apa yang terlalu sulit untuk dipecahkan? Ada kata dalam bahasa Eropa - termasuk bahasa Inggris! - "informatika." Ilmu informasi. Di AS, kami menyebutnya ilmu komputer teoretis, karena industri komputer yang kuat di sini, tetapi pikirkan penyelesaian masalah tanpa komputer sebentar. Perhatikan tubuh manusia. Ini memecahkan masalah dengan cara yang hampir ajaib. Cahaya masuk ke mata kita, dan kita bisa melihat hal-hal yang kita kenali . Suara masuk ke telinga kita, dan kita mendengar kata-kata yang kita pahami . Ini adalah masalah-masalah informasi yang kami pecahkan dengan mudah, ribuan kali sehari, yang masih dihadapi oleh komputer-komputer terbaik di dunia.
Butuh proses evolusi jutaan tahun untuk menyelesaikan masalah-masalah itu, menggunakan strategi coba-coba, dan membunuh yang tidak beruntung. Bayangkan apa yang bisa kita capai jika kita mengambil pendekatan yang lebih rasional, dan menginvestasikan sebanyak mungkin kreativitas manusia ke dalam ilmu pemecahan masalah baru ini seperti yang telah kita investasikan ke dalam geometri, teologi, atau kalkulus. Apa yang saya lakukan adalah satu bagian kecil dari investasi itu.
Menanggapi pertanyaan orang awam, "Apa yang Anda lakukan?" Saya sering menjawab, "Saya menghabiskan banyak waktu menatap ke luar angkasa, mencari tahu bagaimana membuat fiksi ilmiah nyata." Lalu saya memberikan contoh spesifik proyek, dijelaskan dalam beberapa kalimat.
sumber
Ilmu komputer teoretis adalah untuk ilmu komputer apa dulu matematika untuk fisika.
sumber
Saya biasanya memberikan jawaban berikut, meskipun berfokus pada teori kompleksitas: "Saya mempelajari batasan-batasan, dalam hal ruang dan waktu, untuk masalah yang harus dipecahkan. Masalahnya termasuk, menemukan jalur terpendek pada peta atau memenangkan permainan catur."
sumber
Biasanya saya memberikan masalah anjak piutang sebagai contoh; Saya pertama kali meminta nomor yang membagi 15; biasanya orang dapat menjawab 3, 5, dan bersenang-senang bertanya-tanya apakah 1 dan 15 adalah jawaban yang benar. Kemudian saya memberikan angka yang sangat besar (lebih dari 10 digit) dan bertanya apakah mereka dapat memberi tahu saya apa pembaginya; dan saya jelaskan, bahkan untuk ilmuwan komputer, ini adalah pertanyaan yang sangat sulit.
Kemudian jika saya punya waktu, saya mencoba menjelaskan bahwa pertanyaannya adalah untuk mencari tahu bagaimana menyelesaikan masalah ini, atau untuk membuktikan bahwa itu akan selalu memakan banyak waktu (gagasan bahwa kita tahu persis bagaimana mendefinisikan). Dan kemudian sedikit kata kriptografi, untuk menjelaskan mengapa itu digunakan, dan kata tentang berapa banyak waktu yang diperlukan tim ilmuwan untuk memecahkan kunci angka dengan ratusan digit (saya menghindari untuk berbicara bit karena orang tampaknya lebih tahu berapa digit)
sumber
Pertanyaan yang diajukan benar-benar sulit karena kebanyakan orang tidak tahu apa yang dilakukan para ilmuwan komputer pada umumnya. Ini sangat berbeda dengan disiplin ilmu lain.
Saya suka menggunakan analogi berikut: (T) CS adalah untuk komputer apa fisika untuk CD-Pemain (yaitu laser). Ini benar-benar berfungsi dengan baik karena kebanyakan orang memiliki gagasan tentang apa yang ditangani oleh fisikawan, apakah itu benar atau tidak.
Contoh-contoh yang lebih spesifik mencakup hal-hal yang dapat dihubungkan dengan kebanyakan orang
Saya kemudian akan menjelaskan bahwa sementara orang PCS akan melihat implementasi yang cepat atau integrasi yang baik dalam sistem yang kompleks, orang-orang TCS bertanya-tanya tentang apa yang mungkin dan membuktikan hal-hal yang menyediakan pengetahuan / teknik yang dapat digunakan kembali untuk digunakan PCS.
Anda juga dapat menggunakan frustrasi orang tentang komputer ("Ini tidak melakukan apa yang saya inginkan!"). Anda dapat menunjukkan bahwa (T) CS berkaitan dengan cara mengekspresikan sesuatu dengan cara yang dapat dipahami dan diproses oleh komputer secara efisien (merujuk pada sintaks, semantik, struktur data, algoritma).
sumber
Ketika seseorang mengajukan pertanyaan kepada Anda, Anda dapat menjawabnya secara langsung atau Anda dapat memberinya prosedur langkah demi langkah untuk diikuti dan bukti bahwa jika langkah-langkah tersebut diikuti secara akurat maka jawabannya akan diperoleh dalam jumlah waktu yang wajar. Mengingat bahwa langkah-langkah itu sendiri tidak terlalu rumit dan dapat dilakukan dengan cepat oleh entitas yang mampu ada di alam semesta ini, pertanyaan macam apa yang menunjukkan prosedur seperti itu? Saya pikir ini adalah subjek Ilmu Komputer Teoritis.
sumber
Jawaban saya yang biasa, yang tidak tajam tetapi dijamin untuk menghentikan percakapan mati (bonus!) Adalah "seperti teori kuantum adalah inti matematika dari fisika, TCS adalah inti matematika dari ilmu komputer".
sumber
Kami mempelajari batas perhitungan. Seberapa cepat Anda bisa memecahkan masalah komputasi tertentu? Berapa banyak waktu yang dibutuhkan untuk menyelesaikannya, tidak peduli solusi apa yang Anda coba? Lalu saya memberi mereka contoh-contoh ini (yang mudah dijelaskan kepada kebanyakan orang awam - dan memang banyak orang awam yang memiliki pengalaman langsung dengan mereka - menunjukkan beberapa sifat dari masalah lengkap NP, dan sebenarnya ada hubungannya dengan menyelamatkan nyawa).
Jelas orang (termasuk saya) mungkin menyindir bahwa saya telah mengabaikan sumber daya penting lainnya seperti ruang, keacakan, atau bahkan kuantum. Tetapi ketika Anda hanya memiliki 2 menit untuk memberi tahu seseorang tentang seluruh bidang, beberapa hal ditinggalkan.
sumber
Jika Anda ingin memberikan pandangan aneh ke masa lalu, ingatkan audiens Anda bahwa "komputer" digunakan untuk merujuk kepada seseorang yang berprofesi menghitung . (Dan jika Anda ingin melanggar beberapa stereotip gender yang mungkin mereka miliki, Anda dapat menunjukkan bahwa ini sering kali adalah wanita juga.)
Anda kemudian dapat mencapai beberapa hal sekaligus:
sumber
Saya selalu memulai dengan mengarahkan mereka ke beberapa video atau artikel yang kreatif dan tidak sopan yang menjelaskan konsep teknis pada tingkat intuitif. Inilah contoh yang bagus: Mencoret-coret dalam Matematika: Spiral, Fibonacci, dan Menjadi Tanaman
Begitu mereka memahami konsepnya (dan semoga sedikit bersenang-senang dengannya), saya mencoba menggeneralisasi apa yang telah mereka pelajari tentang TCS. Misalnya, video di atas dapat mengarah ke penjelasan dasar tentang algoritma atau komputasi sebagai proses rekursif - "sesuatu yang menghasilkan struktur kompleks dari beberapa aturan sederhana." Orang-orang TCS, maka, cukup pelajari jenis aturan apa yang menghasilkan jenis struktur apa!
Dari sana, umumnya cukup mudah untuk beralih dari TCS umum ke hal khusus domain yang Anda lakukan. :)
sumber
Mengikuti saran yang diberikan oleh Ross Snider, untuk memulai dengan contoh spesifik, orang juga dapat langsung menjelaskan pertanyaan P vs NP. Seseorang dapat menggambarkan pertanyaan ini kepada orang awam sebagai mencari tahu apakah memverifikasi suatu solusi terbukti lebih mudah daripada benar-benar menemukannya, atau apakah benar bahwa setiap kali kita dapat memverifikasi suatu solusi, kita dapat menemukannya juga?
sumber
Ini milik saya:
Ini mengarah dengan baik ke berbicara tentang perhitungan dalam biologi, peran logika dalam ilmu komputer, & c.
sumber
Mungkin orang bisa mengatakan itu
Ilmuwan tidak akan menggunakan komputer sembari menjadi kreatif, tetapi lebih banyak berpikir, mencoret-coret formula dan gambar-gambar unik di atas kertas dan sesekali berkeliaran. Dengan demikian kepraktisan langsung bukan hal yang paling penting, itu lebih seperti seorang seniman yang mengeksplorasi dan mencoba memahami misteri dunia ini.
Kemudian orang dapat menyebutkan hal-hal yang bergantung pada beberapa solusi elegan oleh para ahli teori, seperti komputer, internet, mesin pencari, perbankan aman, film 3D, pengurutan DNA, dll. Tetapi orang harus selalu menekankan bahwa belum ada yang tahu aplikasi penelitian saat ini, beberapa di antaranya mungkin pertama kali terlihat dalam beberapa dekade.
Dari pengalaman saya, banyak orang memiliki momen AHA ketika mereka menyadari bahwa ilmu komputer, dan teori khususnya sangat kaya dengan pertanyaan dan masalah yang menarik untuk dipelajari. Banyak yang dapat dijelaskan pada level tinggi! Ini adalah daftar dari Prof. Wikipedia (via SIGACT), pilih favorit Anda: algoritma, struktur data, teori kompleksitas komputasi, komputasi terdistribusi, komputasi paralel, VLSI, pembelajaran mesin, biologi komputasi, geometri komputasi, teori informasi, kriptografi, komputasi kuantum , teori bilangan komputasi dan aljabar, semantik program dan verifikasi, teori automata, dan studi tentang keacakan.
sumber
Hampir sama dengan tukang reparasi VCR. Keduanya mempertimbangkan cara mendapatkan kinerja terbaik dari mesin yang membaca dan menulis informasi ke rekaman yang sangat panjang.
Ini mungkin sedikit lebih banyak bicara daripada yang Anda kejar ...
sumber