理論的なコンピューターサイエンスのディナーテーブルの説明?


51

理論的なコンピューター科学者は何をするのかとよく聞かれます。この質問に対していくつかの素晴らしい回答をいただければ幸いです。私は技術的な専門用語に頼る傾向があり、この時点で人々の目は通常glみます。

理論的なコンピューター科学者は、コンピューター科学者ではない人々が理解できる用語で何をしますか?

良い答えは、漠然としていたり​​、ささいなことをせずに、きびきびと、精神的に正確でなければなりません。ボーナスポイントについては、理論上のコンピューター科学者が数学者でもIT専門家でもない理由を示唆する答えが必要です。

この質問は、MOの質問https://mathoverflow.net/questions/3559/colloquial-catchy-statements-encoding-serious-mathematicsに触発されていますが、意図は異なります。

回答:


34

私の回答は一般に、「いくつかの計算が難しい理由を研究しています」です。例として、私は通常、標準学年の学校の方法を使用して加算と乗算を比較します。これらは誰もが行った計算であり、誰もが迅速に行うことの価値を認識しています。多数の場合、乗算は加算よりもはるかに難しいことに誰もが同意します。実際、ほとんどの人は、小学校の方法はできるだけ速くすることを提案しています。それから私は彼らに理由を尋ねます。彼らは、加算と同じくらい簡単な乗算を行う別の方法がないことをどのように知っていますか?

私はその用語を使用していませんが、ほとんどすべての人が、下限を証明することの難しさ(私の特定の関心)について、この時点で少なくともある程度感謝しています。聴衆の背景と興味に応じて、誰かが小学校の方法よりもはるかに高速で乗算する方法を見つけたと言うかもしれません(単に「アルゴリズム」という言葉は目を輝かせます)追加するより。


8
あなたの例では例として加算と乗算を使用しているのが好きです。これらは、ソートや検索よりも素人にとっては恐らくそれほど威圧的ではないようです。
レフReyzin

これは、問題の核心に素早く到達するための本当に素晴らしい方法です、ありがとう!
アンドラスサラモン

3
私は同じ例を挙げました:)私が見た反応は、否定になり、ほとんど私に腹を立てている人々です:「乗算が加算より難しいかどうかわからないというのはどういうことですか?もちろんです。私と一緒にゲームをしますか?」
サショニコロフ

私はこの答えが本当に好きですが、それは私がしていることではありません!私は完全に異なる分野、すなわち従属型理論で働いています。「理論A」対「理論B」を説明する必要がありますか?
コディ

39

具体的な例を挙げます。具体的には、非常に例証的な(しかし単純な)問題で複雑性理論を動機付けることがよくあります。私は聴衆に、名前がアルファベット順に並べられた名前のリストにあるかどうかを小さな子供に指示する方法を聞きます(そして、子供が名前を比較するのに3秒かかることを伝えます)。多くの場合、個人/グループは素朴で直線的なアプローチを考え出します。会話を強制的に対数アルゴリズム(対数とは異なる単語を使用する場合があります)に強制します。この新しいアプローチでは、リストのサイズを2倍にしても、子供の作業が3秒しか増えないことを示しています。そして、私はこれを線形バージョンと直接比較します。

もちろん、私はそれを地球に持ち帰ります。私は彼らに、問題の子供は一般的にはコンピューターですが、それ子供である可能性があり、実際には誰でもである可能性があると言います。私たちが尋ねる質問は、実際にはコンピューターに関するものではなく、問題を解決するために必要なスペース、時間、および情報に関するものです。そして、同じ問題を解決するための2つの異なる方法に類似することにより、複雑さの分析を動機付けます。

私が彼らの注意を引いたとき-私はヘビーヒッターを引き出します。私は彼らに「対数解法があなたが今までに望んでいることができる最高のものであることを証明できますか、またはあなたはより良い何かを見つけることができますか?」と尋ねます。そして、私は彼らに「プロセス(アルゴリズム)が解決することを望むことができない問題がありますか?」と尋ねます。TCSのバックグラウンドを持っていない人々がこれらの質問にどのように取り組んでいるかに驚いています。


1
そして、記録のために、私は人々にある程度興味を持ってもらうという点でかなり幸運でした。
ロススナイダー

1
電話帳が事実上消滅する前に、これはきびきびした2文の応答に変わっていたかもしれません。誰もが知っているランダムアクセス順序リストの標準的な例はありますか?
アンドラスサラモン

確かに、アンドラス。本のインデックス。または、シャッフルされる前に新しいカードパックを入手することもできます。これにより、順不同のケースを検討することができます。
ジョーフィッツシモンズ

@Joe:インデックス付きの教科書を使ったことがない人に定期的に会います。ハリー・ポッターは...インデックスに付属しているかもしれない場合
アンドラス・サラモン

@András:私は大学であまりにも頻繁に食べてきたと思います!ほぼすべての教科書にそれらがあります。
ジョーフィッツシモンズ

21

Scott Aaronsonによるこの記事は、複雑性理論を定量的神学として説明しているので気に入っいます。抜粋は次のとおりです。

計算の複雑さの理論は、実際にはコンピューターに関するものではありません。コンピューターは、時計、電車、エレベーターが相対性理論で果たす複雑さと同じ役割を果たします。それらはポイントを説明するための素晴らしい方法であり、おそらくポイントを発見するために不可欠でしたが、ポイントではありません。

私が考えることができる複雑性理論の最良の定義は、それが量的神学であるということです:神のような仮想の超知的な存在の数学的研究。その懸念は次のとおりです。

  • 神または神が存在した場合、どうすれば彼らは人間に自分自身を明らかにすることができますか?(多神教の場合はIP = PSPACE、またはMIP = NEXP。)

  • どの神が他のどの神よりも強力ですか?(P NP対PP、SZK対QMA、BQP NP対NP BQPなど)

  • 無知な神は、人間に全知を授けることを選択できるでしょうか?(EXP対P /ポリ。)

  • オラクルは信頼できますか?(オラクルは信頼できますか?)

そしてもちろん:

  • 死すべき者は自分自身が神のようになれるでしょうか?(P対NP、BQP対NP)

複数の神々は、最高神の原則と矛盾する属性の異なるレベルを持つことになりますので、神々の複数の論理的に矛盾していると仮定すると、唯一の神が存在することができる(一つの神が他の神々は愚かであるよりも強しである)。
ムハンマド・アル・Turkistany

1
@ウィリアムズ、私のポイントは、素人がこれらの類推と混同されることです。
モハマドアルトルコ

10
私は本当にそうすべきではありませんが、複数の神は神のような特性が完全な秩序を形成するという見方の下でのみ矛盾していることを指摘すべきです。それらが部分的な秩序を形成する場合、複数の神を持つことはまったく問題ありません。(ごめん、ライアン)
Suresh Venkat

@Suresh、あなたは強者が誰なのかわからない2人の神がいる可能性があることを暗示していますか?ここでの二項関係は全順序です。(ごめん、ライアン)
モハマドアルトルコ

18

間違いなく改善できる回答の例:

理論的なコンピューター科学者は、数学用語で計算を研究します。数学者があなたの税金を計算できるのと同様に、彼らはあなたのコンピューターを修正することができます。


20
残念ながら、私が知っているほとんどの人は...数学は正確に税金を計算で良いことだと思う
レフReyzin

11
これは、ダイクストラの有名な引用を思い出させます-「コンピューター科学は天文学が望遠鏡に関するものである以上、コンピューターに関するものではありません」。
ビナヤックパタク

2
レズ-それらの人々はグロテンディク首相について話されるべきです。
ビナヤクパタク

13
Twitterのjondodaから引き出された別の例を次に示します。「コンピューターの科学者に技術サポートを依頼することは、植物学者に芝生を刈るように依頼するようなものです。」この1は...暖かくなってきている
ライアン・ウィリアムズ

4
ライアン、当然のことながら、どちらもタスクを簡単に達成できますが、尋ねられてresしますか?
ジョーフィッツシモンズ

16

これらの方針に沿った優れた(非)回答は、ダイクストラによって与えられたと思います(常に無愛想で絶対主義的な声明に頼るのに良い情報源です:))。

コンピューターサイエンスは、天文学が望遠鏡に関するものである以上、コンピューターに関するものではありません。-EWダイクストラ


11

ここで与えられたブライアンヘイズによって与えられたパーティション問題の紹介が本当に好きです

彼は一連の子供を等しい合計能力のチームに分割する問題を使用し(数字を使用してすべての子供の能力を定量化できると仮定)、この問題を解決するために子供が通常使用する貪欲なアルゴリズムについても説明します。

理解するのは非常に簡単な問題であり、アルゴリズムを理解するのは簡単です。一般的に非常に困難であり、最後のビットをまだ証明できないのは恥ずかしいことです。


これは本当に良いものです。どういうわけか、私は以前ここに気づかなかった。
ライアンウィリアムズ

記事が気に入りました!
arnab

8

私は通常、次のような線に沿って何かで答えます。私はコンピューターで何ができるかを理解しようとしています。完全に正確ではありませんが、かなり近いため、通常、「どういう意味ですか?」また、TSPなどの特定のものを参照できます。私は、巡回セールスマンを、例えば、バーホッピングの問題、不動産エージェントの問題、あまりにも多くの用事があり、時間が足りない問題、または適切と思われるものに言い換えます。

例:「さて、夕食前に靴、食料品、服の買物をし、ケーキを受け取り、髪を切って、その他の雑用をする必要があるとしましょう。すべてのものを入れておくといいでしょう。 GPSに入力すると、4時までにすべての用事を行う順序がわかります。しかし、用事のリストが十分に長い場合は、今のところ、合理的な時間内に、それらを実行するために必要な順序よりもはるかに少ない4 それらを完了することができます。コンピュータでその問題を迅速に解決できるかどうかを知りたいです。」


素晴らしい、私はそれが面白い会話を始める一種の反応だと思います!
アンドラスサラモン

7

問題を解決する最良の方法は何ですか?また、どの問題を解決するのが難しすぎるのですか?英語を含むヨーロッパ言語の単語があります!-「情報学」。情報の科学。米国では、ここの強力なコンピューター産業のために、この理論的コンピューターサイエンスと呼んでいますが、コンピューターなしでの問題解決について少し考えてみてください。人体について考えてみましょう。ほとんど奇跡的な方法で問題を解決します。私たちの目には光が入り、認識しているものを見ることができます。音が耳に入り、理解できる言葉が聞こえます。これらは1日に数千回、私たちが簡単に解決できる情報の問題であり、世界で最も優れたコンピューターは今でも苦労しています。

試行錯誤の戦略を使用して、それらの問題を解決し、不運を殺すには、数百万年の進化のプロセスが必要でした。より合理的なアプローチを取り、幾何学、神学、または微積分学に投資したのと同じくらい多くの人間の創造性をこの新しい問題解決の科学に投資した場合に達成できることを想像してください。私がしていることは、その投資のほんの一部です。


素人の質問に答えて、「あなたは何をしますか?」私はよく「宇宙をじっと見つめ、SFを現実にする方法を考え出すことに多くの時間を費やしています」と答えました。次に、プロジェクトの具体例を示します。これは、いくつかの文で説明されています。


1
私が知っているほとんどの人は、空想科学小説を現実にしようとしている人は物理学者だと思うでしょう。どのように区別しますか?
アンドラスサラモン

2
実験科学者が私が考えたものを構築する場合、私はそれが大好きです。なぜ区別する方法が必要なのですか?しかし、とにかく答えるために:物理学者が物質の性質について考える間、私はマイクロコンピューターについて考えます。違いはありますか?気にするものと強調するものに依存します。
アーロンスターリング

これは、コンピュータサイエンスとは何かを説明しているように聞こえますが、理論的なコンピュータサイエンスとは異なります。
ズバンアンブルス

6

理論的なコンピューターサイエンスは、数学が物理学に使用されていたコンピューターサイエンスです。


2
なぜ「かつて」だったのか?
スレシュヴェンカト

1
「CSからロジック/コンビナトリクス(TCS)へは物理からジオメトリへ」のようなことを聞​​いたことを覚えています。
カベ

3
Suresh、Andrejはこれを主張していると思います:かつて物理学の研究は数学者によって研究された問題の大部分を生み出したと考えられていましたが、この部分は長年にわたって減少しました(現在の数学はもっと広くなっています)。私は数学の歴史についてこれが真実であると断言するのに十分ではありませんが、私が知っていることはそれに沿っています。
ライアンウィリアムズ

1
素人も数学や物理学についても知らないので、私はこのアナロジーが機能するとは思わない。
ズバンアンブルス

5

複雑さの理論に焦点を当てていますが、私は通常、次の答えを出します:「問題を解決するために、空間と時間の観点から境界を研究します。問題には、地図上で最短経路を見つけるか、チェスゲームに勝つことが含まれます」


5

通常、例としてファクタリング問題を挙げます。最初に、15を分割する数を求めます。通常、人々は3、5に答えることができ、1と15が正解かどうか疑問に思うことができます。それから私は巨大な数字(10桁以上)を与え、彼らが私に仕切りが何であるかを教えてくれるかどうか尋ねます。そして、コンピューター科学者でさえ、これは本当に難しい質問だと説明します。

その後、時間があれば、この問題を解決する方法を見つけるか、常に多くの時間がかかることを証明することです(定義方法を正確に知っているという概念)。それから、暗号のちょっとした言葉、それが使われる理由を説明するために、そして科学者のチームが何百もの数字で数字の鍵を破るのにどれくらいの時間がかかるかという言葉数字とは)


5

ほとんどの人は一般にコンピュータ科学者が何をするのか分からないので、提起された質問は本当に難しい質問です。これは他の分野とは大きく異なります。

私は次のアナロジーを使用したいと思います:(T)CSはコンピューター用で、CDプレーヤー(つまりレーザー)の物理学です。ほとんどの人は物理学者が何を扱っているのか、それが正しいかどうかを知っているので、これは実際に非常にうまく機能します。

より具体的な例には、ほとんどの人が関係できるものが含まれます

  • 文字列照合(遅いナイーブアプローチとWord、ブラウザなどでの高速検索の日々の経験)
  • 最短経路問題(ナビゲーションシステムで使用)
  • スケジューリング(相手のオタクの度合いに応じて、ビジネスプロセスまたはCPUのスケジューリングを参照)

次に、PCSの人々は複雑なシステムでの迅速な実装または適切な統合を期待しているのに対し、TCSの人々は、PCSが使用するための安全で再利用可能な知識/技術を提供し、何が可能かを疑問視していることを説明します。

また、コンピューターに対する人々の不満を使うこともできます(「それは私がしたいことをしません!」)。(T)CSは、コンピューターが効率的に理解および処理できる方法(構文、セマンティクス、データ構造、アルゴリズムを参照)で物事を表現する方法を扱っていることを指摘できます。


4

誰かがあなたに質問をするとき、あなたはそれに直接答えるか、あなたが従うためのステップバイステップの手順と彼にステップを正確にたどれば答えが合理的な時間内に得られるという証拠を与えることができます。ステップ自体はそれほど複雑ではなく、この宇宙に存在することができるエンティティによって迅速に実行できるとすると、どのような種類の質問がそのような手順を示しますか?これは理論的コンピューター科学の主題だと思います。


1
唯一の問題は、宇宙に存在するものの話です。そのようなことで、TCSではなく物理学になります。結局、宇宙は有限のオブジェクトであり、TCSの大部分は漸近性を扱っています。
ジョーフィッツシモンズ

うーん、それは良い点です。しかし、宇宙よりも大きい入力サイズでアルゴリズムがどのように実行されるかを知りたいので、本当に漸近を使用しますか?それとも、計算を大まかに独立させるためだけにビッグオー表記を使用しますか?
ビナヤックパタク

まあ、確かに計算可能性の決定などはもっと抽象的なレベルで生きていると思います。
ジョーフィッツシモンズ

4

私のいつもの答えは、きびきびではありませんが、会話が止まることは保証されています(ボーナス!)は、「量子理論が物理学の数学的コアであるように、TCSはコンピューターサイエンスの数学的コアです」です。


3
実際、量子力学ではなく理論物理学が物理学のTCSです。量子力学以外にも、多くの物理理論があります(古典的な一般相対性理論が最も明白な例です)。
ジョーフィッツシモンズ

目標は正確さではありません:)
Suresh Venkat

しかし、その後、「コンピューターサイエンスとは何ですか?」
ビナヤックパタク

4

計算の限界を研究します。特定の計算上の問題をどれくらい迅速に解決できますか?どの解決策を試しても、それを解決するのにどれくらいの時間が必要ですか?次に、これらの例を挙げます(ほとんどの一般人に説明するのは簡単です-そして実際、多くの一般人は直接の経験があります-NP完全問題のいくつかの特性を示し、実際に命を救うことに関係しています)。

明らかに、人々(私を含む)は、スペース、ランダム性、または量子性のような重要な他のリソースを無視したと言っているかもしれません。しかし、フィールド全体について誰かに伝える時間が2分間しかない場合、いくつかのことは省略されます。


4

過去を気まぐれに見たい場合は、「コンピューター」とは、物事を計算することを専門とするを指していたことを聴衆に思い出させます。(そして、彼らが持っている可能性のある性別のステレオタイプに違反したい場合は、これらもしばしば女性であったことを指摘することができます。)

その後、いくつかのことを一度に達成できます。

  • 「コンピューターサイエンス」は「コンピューター」の研究を超えたものになる可能性があるという説得力のある議論を行います。
  • コンピューティングを行う人は、タスクを完了するためにいくつかのルールが必要であることを指摘します(特に、特別なタスクを実行する「コンピューター」でいっぱいの部屋-通信の複雑さや並列化など)。これはマシンでも同じです。
  • 「コンピュータサイエンス」とは、この意味で「コンピューティング」に関連する問題を解決する効果的な方法を見つけることです。
  • 正確にコンピューティングを行っていることは、必要なリソース(時間やスクラッチスペースなど)ほど重要ではないという点を強調します。

4

私は常に、直感的レベルで技術的な概念を説明する、創造的で意図的に冷淡なビデオや記事に向けることから始めます。ここに良い例があります:数学のだらだら:らせん、フィボナッチ、そして植物であること

彼らがコンセプトを理解したら(そして、うまくいけばそれを少し楽しんで)、彼らが学んだことをTCSについて何かに一般化しようとします。たとえば、上記のビデオは、アルゴリズムまたは計算の再帰的なプロセスとしての基本的な説明につながる可能性があります-「いくつかの単純なルールから複雑な構造を生成するもの」。TCSの人々は、どのタイプのルールがどのタイプの構造を生成するかを研究するだけです!

そこから、一般的なTCSからドメイン固有の操作に移行するのは一般的に簡単です。:)


2

特定の例から始めるというロス・スナイダーの提案に従って、P対NPの質問を直接説明することもできます。この質問は、ソリューションを検証することが実際に解決策を見つけるよりも証明しやすいかどうかを解明するものとして素人に説明することができますか?


2

これが私のものです:

コンピュータサイエンスは単なる科学ではなく、多くのエンジニアリングがありますが、科学の部分は計算を理解することです。また、計算とは、情報を整然と生成する物理的なプロセスです。理論的なコンピューターサイエンスでは、計算を理解するには比較的高度な数学が必要だと思います。

生物学における計算、コンピューターサイエンスにおける論理の役割などについてうまく説明しています。


2

たぶん1つは言うことができます

理論的なコンピューター科学者は、コンピューターサイエンスに関連する本当に難しい問題を研究しています。

科学者は創造的である間はコンピューターを使用せずに、紙の上で多くのことを考え、落書き式や風変わりな図面を考え、時々歩き回ります。それによって、即時の実行可能性は最も重要なことではなく、この世界の謎を探求し、理解しようとするアーティストのようです。

次に、コンピューター、インターネット、検索エンジン、セキュアバンキング、3Dムービー、DNAシーケンスなど、理論家による洗練されたソリューションに依存するものに言及することができます。そのいくつかは最初に数十年で見られるかもしれません。

私の経験から、多くの人がコンピューターサイエンス、そして特別な理論には興味深い質問や勉強すべき問題がたくさんあることに気づいたとき、AHAの瞬間があります。その多くは高レベルで説明できます!これはウィキペディア教授のリスト(SIGACT経由)で、お気に入りを選択します:アルゴリズム、データ構造、計算複雑性理論、分散計算、並列計算、VLSI、機械学習、計算生物学、計算幾何学、情報理論、暗号、量子計算、計算数論と代数、プログラムのセマンティクスと検証、オートマトン理論、およびランダム性の研究。


0

理論的なコンピューター科学者は、コンピューター科学者ではない人々が理解できる用語で何をしますか?

VCRの修理担当者とほぼ同じです。両方とも、非常に長いテープの情報を読み書きするマシンから最高のパフォーマンスを引き出す方法を検討します。

これは、あなたが望んでいたものよりも頬にもう少し舌があるかもしれません...


それは確かに会話を続けるでしょう!
アンドラスサラモン

11
ああ、いいね。時計の点滅を12:00に停止する方法を教えてください。
ジェフ

1
確かに、私は通常の組合料金を請求します。
アンドラスサラモン

私はこれが頬のちょっとした舌であったことを知っています、しかし、反対票に気づいて、誰かがそれで深刻な問題を抱えているならば、私は喜んでそれを取り除きます。
ジョーフィッツシモンズ

1
問題ない!私は、一部のCS理論家または一部のVCR修理工が攻撃を仕掛けたのではないかと心配していました。
ジョーフィッツシモンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.