Ich bin neu im CS-Bereich und habe festgestellt, dass es in vielen der von mir gelesenen Artikel keine empirischen Ergebnisse gibt (kein Code, nur Lemmata und Beweise). Warum das? Wenn man bedenkt, dass Informatik eine Wissenschaft ist, sollte sie nicht der wissenschaftlichen Methode folgen?
31
Antworten:
Mathematik ist auch eine Wissenschaft, und Sie müssten lange suchen, um veröffentlichte empirische Ergebnisse auf diesem Gebiet zu finden (obwohl ich vermute, dass es einige geben muss). Es gibt andere wissenschaftliche Bereiche, in denen "Deckspelzen und Beweise" wichtiger sind als Erfahrung, wie beispielsweise die Quantenphysik. Die meisten Wissenschaften mischen jedoch Theorie und Praxis (mit unterschiedlichen Verhältnissen), und die Informatik ist keine Ausnahme.
Die Informatik hat ihre Wurzeln in der Mathematik (siehe beispielsweise Turings Biografie http://en.wikipedia.org/wiki/Alan_Turing ), und so viele Ergebnisse (im Allgemeinen als "theoretische Informatik" bezeichnet) bestehen in Beweisen Computer in einem Rechenmodell können Probleme bei einer bestimmten Anzahl von Vorgängen lösen (z. B. Konferenzen wie FOCS, STOC, SODA, SoCG usw.). Dennoch beschäftigen sich viele andere Ergebnisse der Informatik mit der Anwendbarkeit dieser Theorien auf das praktische Leben durch die Analyse experimenteller Ergebnisse (z. B. Konferenzen wie WADS, ALENEX usw.).
Es wird oft behauptet, dass das Ideal ein gutes Gleichgewicht zwischen Theorie und Praxis ist, wie in "Naturwissenschaften", wo die Beobachtung von Experimenten die Erzeugung neuer Theorien hervorruft, die wiederum neue Experimente vorschlagen, um diese zu bestätigen oder zu bestätigen: als solche viele Konferenzen versuchen, sowohl experimentelle als auch theoretische Ergebnisse zu akzeptieren (zB ESA, ICALP, LATIN, CPM, ISAAC, etc ...). Das Teilgebiet "Algorithmen und Datenstrukturen" in der Informatik könnte ein Ungleichgewicht aufweisen, da "theoretische" Konferenzen im Allgemeinen einen höheren Stellenwert haben als experimentelle. Ich glaube, dass dies in anderen Bereichen der Informatik wie HCI oder AI nicht der Fall ist.
Ich hoffe es hilft?
quelle
Algorithmen gut zu implementieren ist eine Fähigkeit, die andere Werkzeuge benötigt als nur das Beweisen von Theoremen. Viele Algorithmen, die von der Theoriegemeinschaft entdeckt wurden, wurden tatsächlich in die Praxis umgesetzt (obwohl ich mir wünschen würde, dass die Theoriegemeinschaft eine größere Rolle in diesem Prozess spielt). Die Physik fordert nicht die gleichen Forscher auf, Theorie und Experimente durchzuführen, obwohl erwartet wird, dass die beiden Gruppen kommunizieren. Warum sollten Sie nicht damit rechnen, dass es in der Informatik dieselbe Kluft gibt?
IN EDIT HINZUFÜGEN:
Als Antwort auf Sureshs Frage, was ich oben unter "Rolle" verstehe, wurden Forscher in Algorithmen von Bell Labs und AT & T Labs ermutigt, mit Menschen in der Entwicklung zu sprechen. Ich habe nicht so viel getan, wie ich wahrscheinlich hätte tun sollen, aber ich habe mindestens eine Arbeit herausgeholt, und ich denke, es wäre gut für das Fach, wenn es mehr Kommunikation zwischen theoretischen Personen an Universitäten und in der Praxis geben würde . Das bedeutet nicht, dass ich denke, jeder, der einen Algorithmus entwickelt, sollte ihn codieren (auch wenn er praktisch ist).
Andererseits können Codierungsalgorithmen (oder die Codierung durch einen Schüler), die Sie für sinnvoll halten, hilfreich sein, um sie von Praktikern anpassen zu lassen. Betrachten Sie ein Beispiel. Lempel und Ziv haben 1977 und 1978 zwei technische Artikel über neue Datenkomprimierungsalgorithmen verfasst. Alle haben sie ignoriert. Im Jahr 1984 hat Welch ein viel weniger technisches Papier verfasst , das die Leistung von LZ78 geringfügig verbesserte, und die Ergebnisse einer kleinen Studie vorgelegt, in der die Leistung mit anderen Datenkomprimierungsmethoden verglichen wurde. Es wurde in einer Zeitschrift veröffentlicht, die von einer Reihe von Programmierern gelesen wurde, und der Algorithmus wurde durch einige Zeilen Pseudocode angegeben. Die Methode wurde schnell an mehreren Stellen angepasst, was schließlich zu einem berüchtigten Streit um geistiges Eigentum führte.
Eine der besten Möglichkeiten für Algorithmusforscher, mit der Praxis zu kommunizieren, besteht darin, Studenten hervorzubringen, die bei Google, IBM oder anderen Unternehmen arbeiten, und das tun wir bereits. Ein anderer Weg könnte sein, die Fragen der Praktizierenden in diesem Forum zu beantworten. Hoffentlich machen wir das auch vernünftig.
quelle
Ein Forschungsgebiet, das empirische Methoden und Methoden der Theoretischen Informatik verwendet, ist das Gebiet der "Experimentellen Algorithmik" oder "Algorithm Engineering". Wie Chris bereits erwähnte, ist High Performance Computing in hohem Maße darauf angewiesen, da moderne Systeme komplexe Cache- und Latenzprobleme aufweisen, die wir nur schwer modellieren können.
Gerth Brodal und Peter Sanders sind gute Beispiele für Forscher, die sowohl im "Beweis" - als auch im "empirischen" Bereich Fuß fassen.
--Update 1/20 / 2013-- Ich möchte auch eine großartige Präsentation von Robert Sedgewick erwähnen .
quelle
Dies hängt von der Disziplin ab, in der Sie sich befinden. Wie Jeremy feststellt, gibt es ein Spektrum von Theorie und Praxis.
Themen wie Komplexität tendieren dazu, sich auf die theoretische Seite zu konzentrieren, da das Ziel oft darin besteht, eine Grenze für den Raum oder die Laufzeit zu finden. Das Implementieren eines Algorithmus in C ++ und das wiederholte Ausführen dieses Algorithmus beweisen nicht, dass ein Problem NP-vollständig ist.
Im Gegensatz dazu ist Hochleistungsrechnen (mit Konferenzen wie Supercomputing ) empirisch. Niemand würde jemals einen Proof bei einer HPC-Veröffentlichung einreichen, da es zu viele Unterschiede hinsichtlich der Speicherhierarchie und des Kernel-Overheads gibt.
Was also wie die gleiche Frage aussieht (wie lange dauert es, bis etwas läuft?), Wird auf zwei völlig unterschiedliche Arten angegangen, abhängig von den Zielen, Techniken, der Community usw. Ein Beispiel dafür finden Sie in Poul-Henning Kamps " You're Doing It Wrong" die Dissonanz.
quelle
In der Programmiersprachenforschung gehen viele Ideen für neue Programmiersprachenkonstrukte oder neue Mechanismen zur Typprüfung von der Theorie aus (möglicherweise durch Erfahrungen in der Praxis, möglicherweise nicht). Oft wird eine Arbeit über solche Mechanismen aus einer formalen / theoretischen / konzeptuellen Perspektive geschrieben. Das ist relativ einfach zu machen. Als nächstes kommt die erste Hürde: Die neuen Konstrukte im Kontext eines vorhandenen Compilers zu implementieren und damit hinsichtlich Effizienz oder Flexibilität zu experimentieren. Auch das ist relativ einfach.
Aber können wir dann sagen, dass das Programmierkonstrukt einen Fortschritt in der Wissenschaft der Programmierung darstellt? Können wir sagen, dass es das Schreiben von Programmen erleichtert? Können wir sagen, dass es die Programmiersprache besser macht?
Die Antwort ist nein. Für die Beantwortung derartiger Fragen wäre eine ordnungsgemäße empirische Bewertung erforderlich, an der zahlreiche erfahrene Programmierer über einen längeren Zeitraum hinweg beteiligt sind. Diese Forschung wird kaum jemals durchgeführt. Der einzige Maßstab für den Wert einer Programmiersprache (und ihrer Konstrukte) ist die Popularität der Sprache. Und für Programmiersprachenpuristen widerspricht dies unseren Hypothesen.
quelle
Vielleicht fehlt mir die Motivation für Ihre Frage, aber es gibt viele Beispiele für empirische Ergebnisse, die Forschung, Algorithmen und andere Ergebnisse motivieren.
MP3 verwendet Psychoakustik , um den Algorithmus für die menschliche Kodierung zu optimieren.
Auf der gleichen Linie sind Bailey und Borwein große Befürworter der experimentellen Mathematik. Siehe „Der Computer als Crucible: Eine Einführung in die Experimentelle Mathematik“ , „Computational Ausflüge in Zahlentheorie“ unter anderem . Man könnte argumentieren, dass dies eher experimentelle Mathematik ist, aber ich würde argumentieren, dass die Unterscheidung auf dieser Ebene semantisch ist.
Phasenübergänge von NP-Complete-Problemen sind ein weiterer Bereich, in dem empirische Ergebnisse stark genutzt werden. Sehen Sie sich zunächst Monasson, Zecchina, Kirkpatrick, Selman und Troyansky sowie Gent und Walsh an, obwohl es noch viele weitere gibt (siehe hier für eine kurze Übersicht).
Obwohl es sich nicht ganz um theoretische Informatik oder Mathematik handelt, wird hier diskutiert , wie die durchschnittliche Falllaufzeit des Unix-Dienstprogramms grep optimierte Worst-Case-Algorithmen übertrifft, da es auf der Tatsache beruht, dass es von Menschen lesbaren Text sucht (grep tut so schlecht oder schlecht) am schlimmsten bei Dateien mit zufälligen Zeichen).
Auch verwendete Gauß experimentelle Beweise seine Hypothese von dem Primzahlsatz zu geben.
Data Mining ( Bellkors Lösung für den Netflix-Preis , um ein besseres Empfehlungssystem zu entwickeln) könnte als Theorie angesehen werden, die vollständig auf empirischen Erkenntnissen beruht. Künstliche Intelligenz (genetische Algorithmen, neuronale Netze, etc.) stützt sich stark auf Experimente. Die Kryptographie ist ein ständiges Hin und Her zwischen Codemachern und Codebrechern. Ich habe wirklich nur einige genannt und wenn Sie Ihre Definition von empirisch lockern, dann könnten Sie ein noch breiteres Netz werfen.
Ich entschuldige mich dafür, dass ich so zerstreut auf Ihre Frage geantwortet habe, aber ich hoffe, ich habe zumindest ein paar Beispiele genannt, die hilfreich sind.
quelle