計算問題を厳密に定式化する方法は?


20

私はしばしば、計算の問題(またはその複雑さ)のアルゴリズムを求めたい人とやり取りしますが、私たち(コンピューター科学者)が理解するために厳密な方法でそれを表現しません。

CLRSのような本を参照することは、例えばグラフの隣接リストとその中の2つの頂点がそれらの頂点間の最短経路を計算する場合、通常は非常に簡単に厳密に述べる方法があるため、役に立たない。

CSに関する最低限の知識を持つ人が、コンピューター科学者が理解できる厳密な方法で計算問題を定式化し、述べる方法を学ぶことができる良い本(または他のリソース)はありますか?

本は、さまざまな分野や実世界の例から計算問題を厳密に定式化する方法の多くの例を持っていることが望ましい。


明確化

質問をより具体的にするために、1、2年生のCS学部生のレベルで、セット、関数、グラフ、リストなどの基本的な数学/ CSの用語を知っていると仮定しましょう(私がいる人の場合)マインド)。たとえば、AhoやUllmanのような入門書を読んだことがあります(完全に理解していないかもしれませんが)。


2
これは良い質問だと思いますが、良い答えがあるかどうかはわかりません。「コンピューター科学者ではない人に、コンピューター科学者のように考えることを教えることができる方法はあるのか」というような質問をしているように感じます。そして、その答えは「はい、彼らをコンピューター科学者にします」です。とはいえ、一部のソフトウェアエンジニアリング研究者は、このようなことを研究している可能性があります。
jmite

3
また、これはある程度ユースケースの目的だと思います。誰かが問題を適切に定式化する方法を理解していない場合は、与えられたプログラムに何をしてもらいたいのか、それぞれの場合に予想される動作のいくつかのシナリオをリストします。プログラマーはそれから仕様を開発します。とは言っても、私は理論家であり、エンジニアではないので、間違っている場合は、気軽に修正してください。
jmite

@jmite、コメントありがとうございます。ソフトウェアエンジニアリングの一部は、クライアントが何を望んでいるかを理解しようとすることです(彼らはそれを要件分析と呼んでいます)。しかし、それは通常、大規模プロジェクト向けです。私はそのようなプロジェクトについて話しているのではなく、厳密に述べられていないこのサイトで得られるような簡単な質問です。私は、多くの例を使って論理のステートメントを述べる方法を人々に教える本を見てきました。アルゴリズムと計算の問題に似たようなものがあることを願っています。
カベ

1
とはいえ、私は、特に大人が簡単に習得できない特定の考え方が必要だと考えています。私は、人々に技術的なものを落として、問題をできるだけ簡単に日常のオブジェクトの観点から説明するように試みました。問題は、通常、何らかの制約を忘れるか、実際のシステムでO(N)の操作がO(1)のように聞こえるようにすることです。したがって、間違った問題の厳密な定義に非常に近いものになります。
svinja

2
ある意味では、要求されることは矛盾しています。なぜなら、問題を厳密に定式化することは、専門家/専門家から素人を区別する重要な学んだスキルの1つであるからです...
vzn

回答:


3

これに関する優れたリソースは、学者にはかなりよく知られていますが、専門家以外にはあまり知られていませんが、Donald E. Knuth、Tracy L. Larrabee、Paul M. RobertsによるMathematical Writingです。出版された本、講義ビデオ、メモのセットがあります。それは、例えば論文を作成するなど、数学の書き方を習得しようとする人々の観点から書かれていますが、すべてのアドバイスは、問題を正確に定式化しようとする素人の場合に非常に当てはまります。数学的な書き込みが学ぶことは手ごわいながら、厳密に策定-と書籍の詳細情報として、/定義に科学的なアプローチで解決する、などを経由してアルゴリズムや証明-計算/アルゴリズムの問題。

また、古典的なGarey&Johnsonのテキスト、Computers&Intractabilityは問題を正確に定式化する方法を正確に説明していませんが、多くの例を示し、同様の問題のセクションに編成された多様な理論/概念/技術の「パターン」を示しています計算/アルゴリズムの問​​題を記述するための「ビルディングブロック」として使用されます。


vznに感謝します。これらは数学を書くための素晴らしいリソースですが、私は別のものを探していません。問題は数学でうまく書くことではなく、専門家が質問をしている人が探しているものを理解し、彼らを助けることができるように、計算問題を明確に定式化する方法を学ぶためのリソースです。
カベ

yw; あなたはそれらは2つの異なるものであり、言葉/フレーズであると言いますが、私は彼らが[ソフトウェアエンジニアリングフレーズを借りるために]「密結合」
-vzn

3

エマニュエル・ヴィオラ(ノースイースタン大学の教授(T)CS)がホームページで公開している、この素敵でニートで珍しい、比較的新しい/未知のrefに出会ったところです。41pp。それは、含意などの非常に基本的な数学的概念から始まり、その後、エルデス・セケレスの定理やラムジー理論などの高度なトピックにまで及びます。


0

Robert Laforeの「Algorithms and Data Structures」という本を購入してください。

この本では、すべてのアルゴリズムは、詩のような物語として説明されています。次に、アルゴリズムのLaforeバージョンと、後でCLRSバージョンを与えます。

おそらくこのように、人は直感的な説明から厳密な説明にどのように翻訳するかについての感覚を得るでしょう。

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