Hasil empiris dalam makalah CS

31

Saya baru di bidang CS dan saya perhatikan bahwa di banyak makalah yang saya baca, tidak ada hasil empiris (tidak ada kode, hanya lemma dan bukti). Mengapa demikian? Menimbang bahwa Ilmu Komputer adalah ilmu, tidakkah seharusnya mengikuti metode ilmiah?

toto
sumber
26
Jawaban singkatnya adalah "ilmu komputer" adalah banyak hal. Beberapa bagian seperti (sebagian) AI sebenarnya adalah sains. Bagian lainnya adalah teknik, dan sisi teoretisnya adalah (diterapkan) matematika. Bagian HCI lebih seperti seni. Ilmu komputer adalah tenda yang luas.
Aaron Roth
6
Jika Anda memiliki bukti, mengapa Anda perlu hasil empiris?
Aryabhata
2
@Moron: Bagaimana Anda membuktikan bahwa suatu algoritma dapat diimplementasikan tanpa mengimplementasikannya?
Jukka Suomela
8
CS Teoritis tampaknya mirip dengan Fisika Matematika yang juga menghindari hasil empiris. Jika Anda menginginkan sesuatu seperti Fisika Eksperimental, Anda dapat melihat penelitian dalam Rekayasa Perangkat Lunak, Verifikasi Program, Sistem Basis Data dll
Yaroslav Bulatov
4
nitpicking: " the metode ilmiah"?
Kaveh

Jawaban:

21

Matematika juga ilmu, dan Anda harus mencari waktu yang lama untuk menemukan hasil empiris yang dipublikasikan di bidang ini (walaupun saya kira pasti ada beberapa). Ada domain ilmiah lain di mana "lemma dan bukti" dinilai lebih dari pengalaman, seperti fisika kuantum. Yang mengatakan, sebagian besar ilmu mencampur teori dan praktik (dengan berbagai rasio), dan Ilmu Komputer tidak terkecuali.

Ilmu Komputer berakar pada Matematika (lihat biografi Turing misalnya http://en.wikipedia.org/wiki/Alan_Turing ), dan karena itu banyak hasil (umumnya dijuluki sebagai dalam bidang "ilmu komputer teoretis") terdiri dalam bukti bahwa komputer dalam beberapa model komputasi dapat menyelesaikan beberapa masalah dalam sejumlah operasi tertentu (misalnya konferensi seperti FOCS, STOC, SODA, SoCG, dll.). Namun demikian, banyak hasil lain dari ilmu komputer berkaitan dengan penerapan teori-teori tersebut ke kehidupan praktis, melalui analisis hasil eksperimen (misalnya konferensi seperti WADS, ALENEX, dll ...).

Sering disarankan bahwa cita-cita adalah keseimbangan yang baik antara teori dan praktik, seperti dalam "Ilmu Pengetahuan Alam", di mana pengamatan eksperimen mendorong munculnya teori-teori baru, yang pada gilirannya menyarankan eksperimen baru untuk mengkonfirmasi atau menegaskan teori-teori tersebut: seperti banyak konferensi berupaya menerima hasil eksperimen dan teoretis (mis. ESA, ICALP, LATIN, CPM, ISAAC, dll ...). Subbidang "Algoritma dan Struktur Data" dalam ilmu komputer mungkin menderita ketidakseimbangan dalam arti bahwa konferensi "Teoritis" umumnya lebih tinggi peringkatnya daripada yang eksperimental. Saya percaya bahwa ini tidak benar di subbidang ilmu komputer lainnya, seperti HCI atau AI.

Semoga ini bisa membantu?

Jeremy
sumber
Terima kasih, ini memang banyak membantu. Saya telah tertarik pada teori grafik belakangan ini dan di makalah yang saya baca, hampir tidak ada yang memiliki kode atau hasil eksperimen. Inilah mengapa saya bertanya. Ketika Anda melakukan matematika murni, Anda tidak dapat menghasilkan hasil eksperimen maka bukti adalah segalanya. Tetapi dalam Teori Grafik, itu TIDAK sulit untuk mengkode algoritma Anda dan menghasilkan hasil eksperimen yang berguna! Mari kita ambil masalah MST. Implementasi industri saat ini adalah Prim / Kruskal dan Boruvska, namun, algoritma yang lebih kuat dijelaskan dalam makalah tetapi tidak digunakan karena tidak ada yang pernah mengkodekannya.
toto
1
Ya, Anda bisa menerapkan algoritma dari teori grafik. Tetapi untuk banyak masalah menarik dalam teori grafik, yaitu setidaknya -hard, yang akan sia-sia karena hanya input yang sangat kecil yang akan (dapat diterima) dapat dihitung karena kompleksitas waktu eksponensial dari algoritma. NP
Mathieu Chapelle
1
@ toto Tentu saja apa yang Anda katakan berlaku untuk beberapa masalah, tetapi untuk masalah MST, Anda dapat melihat hasilnya (mungkin agak ketinggalan zaman) dari penerapan beberapa algoritma yang kuat di books.google.com/...
Abel Molina
1
@toto. Ini bukan satu-satunya alasan algoritma lama digunakan. Untuk perspektif TCS, selalu lebih baik daripada . Tapi big-oh dapat menyembunyikan konstanta besar yang membuat algoritma tidak praktis dalam praktik. Pekerjaan semacam itu ditujukan pada orang-orang TCS dan pengkodean algoritma tidak akan memberikan keuntungan atau bahkan membingungkan pembaca. O ( n log n )O(n)O(nlogn)
chazisop
24

Menerapkan algoritma dengan baik adalah keterampilan yang membutuhkan seperangkat alat yang berbeda dari sekadar membuktikan teorema. Banyak algoritma yang ditemukan oleh komunitas teori memang telah diimplementasikan dalam praktiknya (walaupun saya ingin melihat komunitas teori mengambil peran yang lebih besar dalam proses ini). Fisika tidak meminta peneliti yang sama untuk melakukan teori dan eksperimen, meskipun diharapkan kedua kelompok berkomunikasi. Mengapa Anda tidak berharap melihat kesenjangan yang sama dalam ilmu komputer?

TAMBAH DALAM EDIT:

Memperluas komentar saya sebagai jawaban untuk Suresh tentang apa yang saya maksud dengan "peran" di atas, di Bell Labs dan AT&T Labs, para peneliti dalam algoritma didorong untuk berbicara dengan orang-orang dalam pembangunan. Saya tidak melakukan sebanyak ini seperti yang seharusnya saya lakukan, tetapi saya mendapatkan setidaknya satu kertas dari itu, dan saya pikir itu akan baik untuk lapangan jika ada lebih banyak komunikasi antara orang-orang secara teori di universitas dan praktisi . Ini tidak berarti bahwa saya pikir semua orang yang membuat algoritma harus mengkodekannya (walaupun itu praktis).

Di sisi lain, algoritma pengkodean (atau memiliki kode siswa) yang menurut Anda praktis dapat berguna untuk menyesuaikannya dengan praktisi. Pertimbangkan satu contoh. Lempel dan Ziv menulis dua makalah teknis pada tahun 1977 dan 1978 tentang algoritma kompresi data baru. Semua orang mengabaikannya. Pada tahun 1984, Welch menulis sebuah makalah yang kurang teknis memberikan sedikit sentuhan pada LZ78 yang agak meningkatkan kinerjanya, dan memberikan hasil penelitian kecil membandingkan kinerjanya dengan metode kompresi data lainnya. Itu diterbitkan dalam jurnal yang dibaca oleh sejumlah programmer, dan algoritma diberikan oleh beberapa baris pseudocode. Metode ini dengan cepat diadaptasi di sejumlah tempat, akhirnya menghasilkan perselisihan kekayaan intelektual yang terkenal.

Tentu saja, salah satu cara terbaik bagi para peneliti algoritma untuk berkomunikasi dengan praktik adalah menghasilkan mahasiswa pascasarjana yang bekerja dan bekerja di Google, IBM, atau perusahaan lain, dan kami sudah melakukan itu. Cara lain mungkin untuk menjawab pertanyaan praktisi di forum ini. Semoga kami melakukan pekerjaan yang masuk akal juga.

Peter Shor
sumber
4
Jadi Anda mengatakan bahwa meskipun dalam fisika tidak ada harapan orang yang sama melakukan keduanya, dalam teori CS kita harus melakukan keduanya? Apakah itu karena model perhitungan lebih merupakan pendekatan terhadap realitas daripada model fisika?
Suresh Venkat
10
Saya mengatakan bahwa para ahli teori harus berbicara lebih banyak kepada para praktisi. Jika Anda melihat sejarah fisika, hal-hal buruk mulai terjadi ketika para ahli teori berhenti berbicara dengan para peneliti. Saya benar-benar berpikir kami memiliki jumlah komunikasi yang masuk akal antara kedua kelompok saat ini, tetapi tidak ada ruginya memiliki lebih banyak.
Peter Shor
3
Saya tidak akan menggeneralisasi tetapi saya pikir banyak peneliti tidak bisa membuat kode / tidak suka dan mereka lebih suka membiarkan kerja praktek dilakukan oleh salah satu siswa mereka. Itulah yang terjadi dengan saya dan mentor saya.
toto
Ketegangan yang terkait dengan spesifikasi formal versus perhitungan praktis jauh di belakang dalam sejarah STEM. Terkadang lead spesifikasi formal ("Pada teori gelombang detonasi stasioner" [1948] versus simulasi komputasi selanjutnya) dan terkadang lead komputasi praktis (Bowditch "New American Practical Navigator" [1807] versus Gauss '"Disiplines generales circa superficies curva") [1827]). Matematikawan terhebat (Gauss dan von Neumann dalam contoh yang dikutip di atas) sering menggabungkan spesifikasi formal dengan perhitungan praktis.
John Sidles
3
Sejarah Lempel-Ziv, dan melihat posting di StackOverflow, baru saja mengarahkan saya untuk merumuskan sebuah sila yang sangat sederhana yang mungkin membantu mendapatkan para ahli teori algoritma dengan menerapkan para praktisi yang telah diimplementasikan: Jika Anda berpikir algoritma Anda mungkin praktis, masukkan pseudocode ke dalam kertas.
Peter Shor
17

Salah satu area penelitian yang menggunakan metode empiris dan metode Theoretical Computer Science adalah bidang yang disebut "Experimental Algorithmics" atau "Algorithm Engineering". Seperti yang disebutkan Chris, komputasi berkinerja tinggi sangat bergantung pada hal ini karena sistem modern memiliki masalah cache dan latensi yang rumit sehingga kami memiliki pemodelan yang sulit.

Gerth Brodal dan Peter Sanders adalah contoh yang baik dari para peneliti yang mempertahankan kaki di ranah "bukti" dan "empiris".

--Perbaruan 20/01/2013 - Saya juga akan menyebutkan presentasi yang hebat oleh Robert Sedgewick .

Chad Brewbaker
sumber
4
Baik ALENEX dan ESA mendorong kerja algoritma terapan, dan ada juga konferensi (SAE) tentang topik ini.
Suresh Venkat
Apa itu SAE? TLA itu ungoogleable. Apakah Anda punya URL untuk itu?
Peter Boothe
5
SAE adalah salah ketik untuk SEA, Simposium tentang Algoritma Eksperimental.
David Eppstein
1
Anda juga dapat melakukan Algoritma Teknik dengan cara yang lebih ketat, yaitu memperbaiki model teoritik sehingga sesuai dengan kenyataan tetapi masih melakukan analisis yang tepat. Tapi itu sulit.
Raphael
@ Raphael Anda harus memodelkan bola di sekitar setiap simpul komputasi VonNeuman dan secara eksplisit menempatkan dan mendapatkan objek memori dengan biaya latensi yang sebanding dengan jarak; akses acak adalah , diameter bola memori, kecepatan cahaya adalah latensi kasus terbaik Anda. O(CubeRoot(n))
Chad Brewbaker
12

Ini tergantung pada disiplin Anda; seperti yang dikatakan Jeremy, ada spektrum teori vs. praktik.

Topik-topik seperti kompleksitas cenderung ditimbang ke sisi teori, karena seringkali tujuannya adalah untuk menemukan batas untuk ruang atau runtime. Menerapkan algoritma dalam C ++ dan kemudian menjalankannya beberapa kali tidak akan membuktikan bahwa masalah adalah NP-complete.

Sebagai kebalikannya, komputasi kinerja tinggi (dengan konferensi seperti Supercomputing ) semuanya empiris; tidak ada yang akan menyerahkan bukti ke publikasi HPC karena ada terlalu banyak variabilitas berkaitan dengan hirarki memori dan overhead kernel.

Jadi apa yang tampaknya seperti pertanyaan yang sama (Berapa lama waktu yang dibutuhkan untuk menjalankan?) Akan didekati dengan dua cara yang sangat berbeda tergantung pada tujuan, teknik, komunitas, dll. Lihat Poul-Henning Kamp Anda Melakukannya Salah untuk contoh disonansi.

chrisaycock
sumber
10

Dalam penelitian bahasa pemrograman banyak ide untuk konstruksi bahasa pemrograman baru atau mekanisme pemeriksaan tipe baru berasal dari teori (mungkin diinformasikan oleh pengalaman dalam praktik, mungkin tidak). Seringkali sebuah makalah ditulis tentang mekanisme seperti itu dari perspektif formal / teoretis / konseptual. Itu relatif mudah dilakukan. Berikutnya adalah rintangan pertama: menerapkan konstruksi baru dalam konteks kompiler yang ada dan bereksperimen dengannya, dalam hal efisiensi atau fleksibilitas. Ini juga relatif mudah.

Tetapi dapatkah kita kemudian mengatakan bahwa konstruksi pemrograman merupakan kemajuan bagi ilmu pemrograman? Bisakah kita mengatakan itu membuat program menulis lebih mudah? Bisakah kita mengatakan bahwa itu membuat bahasa pemrograman lebih baik?

Jawabannya adalah tidak. Evaluasi empiris yang tepat yang melibatkan sejumlah programmer berpengalaman dalam periode waktu yang besar akan diperlukan untuk menjawab pertanyaan-pertanyaan semacam itu. Penelitian ini hampir tidak pernah dilakukan. Satu-satunya hakim dari nilai bahasa pemrograman (dan konstruknya) adalah popularitas bahasa tersebut. Dan untuk puritan bahasa pemrograman, ini bertentangan dengan apa yang dikatakan hipotesis kami.

Dave Clarke
sumber
7

Mungkin saya kehilangan motivasi untuk pertanyaan Anda, tetapi ada banyak contoh hasil empiris yang memotivasi penelitian, algoritme, dan hasil lainnya.

MP3 menggunakan psychoacoustic untuk mengoptimalkan algoritma pengkodean manusia.

Plouffe memberikan penjelasan tentang penemuan algoritma keran BBP untuk digitπ mana dia menceritakan penggunaan apa pun yang Algoritma Relation Algoritma Mathematica gunakan untuk menemukan rumus.

Sejalan dengan itu, Bailey dan Borwein adalah pendukung besar matematika eksperimental. Lihat "Komputer sebagai Crucible: Pengantar Matematika Eksperimental" , "Wisata Komputasi dalam Teori Angka" antara lain . Orang mungkin berpendapat bahwa ini adalah Matematika yang lebih eksperimental, tetapi saya berpendapat bahwa pada tingkat diskusi ini perbedaannya adalah semantik.

Transisi fase masalah NP-Complete adalah area lain di mana hasil empiris banyak digunakan. Lihat Monasson, Zecchina, Kirkpatrick, Selman dan Troyansky dan Gent dan Walsh sebagai permulaan, meskipun ada banyak, banyak lagi (lihat di sini untuk survei singkat).

Meskipun tidak cukup pada tingkat Ilmu Komputer Teoritis atau Matematika, ada diskusi di sini tentang bagaimana runtime case utilitas unix utilitas grep mengalahkan algoritma kasus terburuk yang dioptimalkan karena bergantung pada fakta bahwa itu mencari teks yang dapat dibaca manusia (grep melakukan hal yang buruk atau terburuk pada file dengan karakter acak di dalamnya).

Bahkan Gauss menggunakan bukti eksperimental untuk memberikan hipotesisnya tentang teorema bilangan prima.

Penambangan data ( solusi Bellkor untuk Hadiah Netflix untuk membuat sistem rekomendasi yang lebih baik) mungkin diperdebatkan sebagai teori yang sepenuhnya didasarkan pada bukti empiris. Kecerdasan Buatan (algoritma genetika, jaringan saraf, dll.) Sangat bergantung pada eksperimen. Kriptografi terus menerus mendorong dan menarik antara pembuat kode dan pemecah kode. Saya benar-benar hanya menyebutkan beberapa dan jika Anda melonggarkan definisi empiris Anda, maka Anda bisa menciptakan jaringan yang lebih luas.

Saya minta maaf karena begitu sibuk menjawab pertanyaan Anda, tetapi saya harap saya telah memberikan setidaknya beberapa contoh yang membantu.

pengguna834
sumber