2

定義上、アルゴリズムは実行される媒体から独立しています。たとえば、プログラミング言語でアルゴリズムを実装する前に、Excel テーブルを使用してデータ構造を操作し、移動/シャッフル/マーキングの実験を行います。

アルゴリズムの機能を設計およびシミュレートするために、どのようなツールと手法を使用していますか? 描画プログラムはどのように使用しますか? 特殊仕様言語?

4

7 に答える 7

3

私は通常、それを紙にスケッチしてから、Common Lispで簡単に実装して、REPLでテストします。

于 2008-11-28T12:28:51.167 に答える
3

アルゴリズムは言語に依存しません。しかし、あなたが使用する媒体は言語、期間です。Excel を使用するということは、アルゴリズムの一部を表現するために Excel の「言語」 (行、列、セルなど) を使用していることを意味します。完全な完成品ではないかもしれませんが、それを Excel で表現しました。

UML ダイアグラムは、アルゴリズムを表現するための言語です。紙の上のスケッチは表現のための言語です。プラトニックな理想アルゴリズムをすべての具体的な表現から分離することは困難です。あなたが何をしようとも、あなたはそれを何かの言語で表現しています。

秘訣は、アルゴリズムを特定の言語機能や制限から切り離すことです。

これを行うには、「非公式」表記が役立ちます。英語 (またはその他の自然言語)、数学、図表などはすべて、実装上の癖や問題のない言語でアルゴリズムを表現するための候補です。

英語での概要から始めます。MS-Word や書式設定が気を散らすものでさえないプレーンテキスト。

非常に複雑なものの場合、少し補足的な数学が、プログラムの状態に関する正式な主張を行うのに役立ちます。

また、UML 図も役立ちます。私はArgo UMLを使用しています-- 安くて効果的です。

このトピックの詳細については、正式な検証システムについてお読みください。

于 2008-11-28T13:06:02.450 に答える
2

ツール自体は使用しませんが、Java で実装する前に、groovy などの高レベルのスクリプト言語でアルゴリズムを大まかに作成することがよくあります。

高レベルのスクリプト言語では、言語についてあまり心配する必要がなく、アルゴリズムに集中できることがわかりました。次に、アルゴリズムを証明したら、それをより制限的な言語に移植できます。

于 2008-11-28T12:23:34.140 に答える
2

私は通常、ホワイトボード (職場に 1 つ、自宅に 2 つ) を使用して大まかなアルゴリズムをスケッチし、問題の非常に小さなインスタンスを試します。コーディングする必要がある場合は、Python でプロトタイプを作成します。

私は通常、正式な仕様書を作成する必要がある場合にのみ、描画プログラムを使用します。ただし、これらは通常、UML ダイアグラムに Visio を使用するなど、アルゴリズムよりも高いレベルの設計を示しています。

于 2008-11-28T12:55:09.600 に答える
0

定義上、アルゴリズムは実行されるメディアから独立しています。

それはどのような定義ですか?誰が作ったの?そして、彼らは漏れのある抽象化について知っていましたか?

優れたアルゴリズムは、多くの場合、使用しているプラ​​ットフォームについて知っている必要があります。それが当てはまらない場合、プログラムはGPUに対して自動的に並列化され、量子コンピューターで動作するように簡単に書き直すことができます。

とはいえ、多くの基本的なアルゴリズムは確かにプラットフォームに依存しません。奇妙なことに、私は実際にC++を使用してアルゴリズムをいじるのが最も快適だと感じています。ただし、これを行うときは、高レベルの抽象化に大きく依存しているため、ポインターなどをいじりません。一方、STLは実際には、アルゴリズムを試すための非常に豊富なツールキットを提供します。

そして、ビルと同じように、私はホワイトボードをかなりよく使用します。私は実際に私の居間に1m*2mのホワイトボードを持っています。気味の悪い。;-)

于 2008-11-28T18:25:08.967 に答える
0

アルゴリズムの複雑さに依存すると思います。

実際に紙にフローチャートの簡単なスケッチを描くことがよくあります。優れた作図ツールがいくつかありますが、古き良き時代のスケッチを一枚の紙に描くほど速いツールはまだ見つかりません。

それ以外では、VB.NET の Windows フォームまたはコンソール アプリケーションでアルゴリズムの非常に「簡単で汚い」モックアップをまとめることになることがよくあります。LINQ-to-SQL などの最近の機能を使用すると、非常に短い時間でデータベース アクセスに依存するプロトタイプを作成することもできます。

于 2008-11-28T12:22:41.180 に答える
0

私は通常、アルゴリズムを実装する Python で何かをハックします。適切なコーディング ガイドラインを完全に無視します。たとえば、データを格納するためのクラスは作成しませんが、すべての情報を格納し、「オブジェクト」を表すために、ますます大きなタプルを作成します。これは、できるだけ早くアルゴリズムの動作バージョンを取得するためです。それを理解したら、ターゲット言語でより適切な方法で実装します。

于 2008-11-28T18:54:59.530 に答える