CS論文の実証結果


31

私はCS分野に不慣れであり、私が読んだ論文の多くには経験的な結果がないことに気づきました(コードはなく、補題と証明だけです)。何故ですか?コンピュータサイエンスは科学であると考えると、科学的な方法に従うべきではないでしょうか。


26
簡単な答えは、「コンピューターサイエンス」は多くのことです。(一部の)AIのような一部は実際には科学です。他の部分はエンジニアリングであり、理論的な側面は(応用)数学です。HCIの一部は芸術に似ています。コンピュータサイエンスは広いテントです。
アーロンロス

6
証拠がある場合、なぜ実証的な結果が必要なのですか?
アリヤバータ

2
@Moron:アルゴリズムが実装されていなくても実装可能であることをどのように証明しますか?
ユッカスオメラ

8
理論的CSは数学的物理学に似ているようで、経験的結果も回避します。実験物理学のようなものが必要な場合は、ソフトウェアエンジニアリング、プログラム検証、データベースシステムなどの研究を見ることができます
ヤロスラフブラトフ

4
つべこべ:「科学的方法」?
カベ

回答:


21

数学も科学であり、この分野で公開された経験的結果を見つけるには長い間検索する必要があります(ただし、ある程度はあるはずです)。量子物理学など、経験よりも「補題と証明」が重視される科学分野もあります。とはいえ、ほとんどの科学は理論と実践を(さまざまな比率で)組み合わせており、コンピューターサイエンスも例外ではありません。

コンピューターサイエンスは、数学にルーツがあり(たとえばhttp://en.wikipedia.org/wiki/Alan_Turingのチューリングの伝記を参照)、多くの結果(一般に「理論的コンピューターサイエンス」の分野と呼ばれる)は証明にあります。ある計算モデルのコンピューターは、特定の操作量(FOCS、STOC、SODA、SoCGなどの会議など)で問題を解決できること。それでも、コンピューターサイエンスの他の多くの結果は、実験結果の分析(例:WADS、ALENEXなどの会議)を通じて、これらの理論の実際の生活への適用可能性に関係しています。

実験の観察が新しい理論の生成を促す「自然科学」のように、理想は理論と実践の間の良好なバランスであることがしばしば示唆されます。会議では、実験結果と理論結果の両方(ESA、ICALP、LATIN、CPM、ISAACなど)を受け入れようとします。コンピュータサイエンスの「アルゴリズムとデータ構造」のサブフィールドは、「理論的」会議は一般に実験的な会議よりも上位にランクされるという意味で不均衡に苦しむ可能性があります。これは、HCIやAIなど、コンピューターサイエンスの他のサブフィールドには当てはまらないと思います。

それが役に立てば幸い?


おかげで、それは確かに多くのことに役立ちます。最近グラフ理論に興味があり、私が読んでいた論文では、コードや実験結果がほとんどありませんでした。これが私が尋ねた理由です。あなたが純粋な数学をするとき、あなたは実験結果を出すことができないので、証拠がすべてです。しかし、グラフ理論では、アルゴリズムをコーディングして有用な実験結果を生成するのは難しくありません!MSTの問題を取り上げましょう。現在の業界の実装はPrim / KruskalおよびBoruvskaですが、さらに強力なアルゴリズムは論文に記載されていますが、誰もコーディングしていないため使用されていません。
TOTO

1
はい、グラフ理論からアルゴリズムを実装できます。しかし、グラフ理論の興味深い問題の多く、少なくとも -hardは、アルゴリズムの指数時間の複雑さのために非常に小さな入力のみが(許容できる)計算可能であるため役に立たないでしょう。NP
マチューシャペル

1
トト@確かに何を言っていることはいくつかの問題に適用されますが、MSTの問題のために、あなたは強力なアルゴリズムのいくつかの実装の結果(多分やや古い)見ることができますbooks.google.com/...を
アベル・モリーナ

1
@toto。これが古いアルゴリズムが使用される唯一の理由ではありません。TCSの観点では、は常にO n log n よりも優れています。しかし、big-ohは、アルゴリズムを実際に実行不可能にする大きな定数を隠すことができます。このような作業はTCSの人々を対象にしており、アルゴリズムをコーディングしても何も得られず、読者を混乱させることさえあります。OnOnログn
chazisop

24

アルゴリズムをうまく実装することは、定理を証明するだけではなく、異なるツールセットを使用するスキルです。理論コミュニティによって発見された多くのアルゴリズムは実際に実際に実装されています(このプロセスで理論コミュニティがより大きな役割を果たすことを望みます)。物理学は、理論と実験を同じ研究者に依頼するわけではありませんが、2つのグループがコミュニケーションをとることが期待されています。なぜコンピューターサイエンスに同じ格差が生じるとは思わないのですか?

編集に追加:

ベルラボとAT&Tラボでは、上記の「役割」が意味するものについてのSureshの回答に対する私のコメントを拡大し、アルゴリズムの研究者は開発中の人々と話すことを奨励されました。私はおそらくこれほど多くのことをしませんでしたが、少なくとも1枚の論文を出しました。そして、大学と実務家の理論上の人々の間でより多くのコミュニケーションがあれば、この分野に良いと思います。 。これは、アルゴリズムを思い付くすべての人がそれをコーディングすべきだと思うということではありません(たとえそれが実用的であっても)。

一方、実践的と思われるコーディングアルゴリズム(または学生にコーディングさせる)は、実践者がそれらを適応させるのに役立ちます。一例を考えてみましょう。LempelとZivは、1977年と1978年に新しいデータ圧縮アルゴリズムに関する2つの技術論文を執筆しました。誰もがそれらを無視しました。1984年、Welchは LZ78にわずかな工夫を加えてパフォーマンスをいくらか向上させた技術的ではない技術論文を執筆しそのパフォーマンスを他のデータ圧縮方法と比較した小規模な研究の結果を示しました。それは多くのプログラマーによって読まれたジャーナルで公開され、アルゴリズムは数行の擬似コードによって与えられました。この方法は多くの場所ですぐに採用され、最終的には悪名高い知的財産紛争をもたらしました。

もちろん、アルゴリズムの研究者が実践とコミュニケーションをとる最良の方法の1つは、Google、IBM、または他の会社で外に出て働く卒業生を輩出することであり、すでにそれを行っています。別の方法は、このフォーラムで開業医の質問に答えることです。うまくいけば、それについても合理的な仕事をしています。


4
ですから、物理学では同じ人が両方を行うことを期待していませんが、理論的には両方を行う必要がありますか?それは、計算モデルが物理モデルよりも現実の近似に近いためでしょうか?
スレシュヴェンカト

10
理論家は実務家ともっと話し合うべきだと言っています。物理学の歴史を見ると、理論家が実験家と話すのをやめると悪いことが起こり始めます。現時点では、2つのグループ間で十分なコミュニケーションがとれていると思いますが、それ以上のコミュニケーションは害にならないでしょう。
ピーターショー

3
私は一般化はしませんが、多くの研究者は単にコードを書くことを好まない/好まないので、実際の仕事を学生の一人に任せたいと思います。それは私と私の指導者の場合です。
TOTO

正式な仕様と実際の計算に関連する緊張は、STEMの歴史にさかのぼります。時には正式な仕様がリードし(フォン・ノイマンの「定常デトネーション波の理論について」[1948]対後続の計算シミュレーション)、時には実用的な計算がリードします(ボーディッチの「New American Practical Navigator」 [1827])。偉大な数学者(上記の例のガウスとフォンノイマン)は、しばしば公式な仕様と実際の計算を組み合わせています。
ジョンシド

3
Lempel-Zivの歴史とStackOverflowの投稿を見て、アルゴリズム理論家が実装されたvy開業医を思い付くのに役立つかもしれない非常に簡単な教訓を策定するようになりました:あなたのアルゴリズムが実用的であると思うなら、紙。
ピーターショー

17

経験的方法と理論的コンピューターサイエンスの方法を使用する1つの研究分野は、「実験アルゴリズム」または「アルゴリズムエンジニアリング」と呼ばれる分野です。クリスが述べたように、現代のシステムには複雑なキャッシュとレイテンシの問題があり、モデリングに苦労しているため、高性能コンピューティングはこれに大きく依存しています。

ガース・ブロダルピーター・サンダースは、「証明」と「経験的」の両方の領域で足を維持している研究者の良い例です。

--2013年1月20日更新-また、ロバートセッジウィックによる素晴らしいプレゼンテーションに言及します。


4
ALENEXとESAはどちらも、適用されたアルゴリズムの動作を奨励しており、このトピックに関する会議(SAE)もあります。
スレシュヴェンカト

SAEとは何ですか?そのTLAはグーグル不可です。そのURLを持っていますか?
ピーターブース

5
SAEは、実験アルゴリズムに関するシンポジウムであるSEAの誤植です。
デビッドエップシュタイン

1
より厳密な方法でアルゴリズムエンジニアリングを実行することもできます。つまり、理論モデルを現実に合わせて改良し、正確な分析を行うこともできます。しかし、難しいです。
ラファエル

OCあなたはbeRootn

12

これはあなたがいる分野に依存します。ジェレミーが述べているように、理論対実践のスペクトルがあります。

多くの場合、目的は空間またはランタイムの境界を見つけることであるため、複雑さなどのトピックは理論側に重点が置かれる傾向があります。C ++でアルゴリズムを実装し、それを何度も実行しても、問題がNP完全であることを証明することにはなりません。

正反対として、高性能コンピューティングスーパーコンピューティングなどの会議)はすべて経験的です。メモリ階層とカーネルオーバーヘッドに関して変動が多すぎるため、HPC出版物に誰も証拠を提出しません。

だから何が(どのくらい何かテイクを実行するのでしょうか?)の目標、技術、コミュニティなどに応じて、2つの完全に異なる方法を近づくことになる同じ質問のように思える参照してくださいポール・ヘンイング・カンプだあなたはそれが間違ってやっているの例えば不協和音。


10

プログラミング言語の研究では、新しいプログラミング言語の構成要素や新しいタイプチェックメカニズムに関する多くのアイデアが理論に由来します(おそらく、実際の経験ではなく、おそらく実際の経験に基づいています)。多くの場合、公式/理論/概念の観点からそのようなメカニズムについて論文が書かれています。それは比較的簡単です。次に、最初のハードルがあります:効率または柔軟性の観点から、既存のコンパイラのコンテキストで新しい構成を実装し、それを実験します。これも比較的簡単です。

しかし、プログラミング構造はプログラミングの科学の進歩を構成すると言うことができますか?プログラムの作成が簡単になると言えますか?プログラミング言語が改善されると言えますか?

答えはいいえだ。これらの種類の質問に答えるには、長期間にわたる多数の経験豊富なプログラマーを含む適切な経験的評価が必要です。この研究はほとんど行われていません。プログラミング言語(およびその構成要素)の価値を判断する唯一の方法は、その言語の人気です。そして、プログラミング言語の純粋主義者にとって、これは私たちの仮説が私たちに教えているものに反します。


7

おそらく、あなたの質問の動機が欠けていますが、研究、アルゴリズム、その他の結果を動機づける経験的結果の例はたくさんあります。

MP3は、心理音響を使用して、人間のエンコードのアルゴリズムを最適化します。

π

同じ線に沿って、ベイリーとボルワインは実験数学の大きな支持者です。参照:「実験数学への入門るつぼとしてコンピュータ」「数論で計算エクスカーション」の中で他の人。これはより実験的な数学であると主張する人もいるかもしれませんが、このレベルでは議論は区別が意味的であると主張します。

NP完全問題の相転移は、経験的な結果が頻繁に使用される別の領域です。参照Monasson、Zecchina、カークパトリック、セルマンとTroyanskyゲントとウォルシュが 多く、より多くの(参照ありますが、初心者のために、ここで簡単な調査のために)。

理論的なコンピューターサイエンスや数学のレベルではありませんが、Unixユーティリティgrepの平均ケースランタイムが最適化されたワーストケースアルゴリズムに勝る方法については、人間が読めるテキストを検索しているという事実に依存しているため、ここで議論があります(grepは悪いまたはランダムな文字を含むファイルでは最悪です)。

ガウスでさえ、実験的証拠を使用して、素数定理の仮説を示しました。

データマイニング(より良い推奨システムを作成するためのNetflix賞に対するBellkorのソリューション)は、経験的証拠に完全に基づいた理論であると主張されるかもしれません。人工知能(遺伝的アルゴリズム、ニューラルネットワークなど)は、実験に大きく依存しています。暗号化は、コードメーカーとコードブレーカーの間で絶え間なく行われています。私は実際に少数を挙げただけで、経験的定義を緩めれば、さらに広いネットをキャストできます。

あなたの質問に答えるのに散らばってしまったことをおologiesび申し上げますが、少なくともいくつかの役立つ例を挙げていただければ幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.