タグ付けされた質問 「algorithms」

数学とコンピュータサイエンスでは、アルゴリズムは、関数を計算するための明確に定義された命令の有限リストとして表現される効果的な方法です。アルゴリズムは、計算、データ処理、および自動推論に使用されます。

9
真に乱数を生成することが不可能なのはなぜですか?
私は、100万個の乱数を生成する必要がある趣味の問題を解決しようとしていました。しかし、私はすぐに気付きました、それらをユニークにするのは難しくなっています。乱数生成について読むために、アルゴリズム設計マニュアルを取り上げました。 次の段落があり、私には完全に理解できません。 残念ながら、乱数の生成は実際よりもずっと簡単に見えます。実際、決定論的なデバイスで真に乱数を生成することは基本的に不可能です。フォン・ノイマン[Neu63]は、「ランダムな数字を生成する算術的方法を検討する人は、もちろん罪の状態にあります。」と言っています。ランダムに生成された場合。 決定論的なデバイスで真の乱数を生成することが不可能なのはなぜですか?この文はどういう意味ですか?

8
再帰アルゴリズムでスタックオーバーフローを回避するための方法は何ですか?
質問 再帰アルゴリズムによって引き起こされるスタックオーバーフローを解決する可能な方法は何ですか? 例 Project Eulerの問題14を解決しようとしていますが、再帰アルゴリズムを使用して試してみることにしました。ただし、プログラムはjava.lang.StackOverflowErrorで停止します。分かりました。非常に大きな数のCollat​​zシーケンスを生成しようとしたため、アルゴリズムは実際にスタックをオーバーフローさせました。 解決策 だから私は疑問に思っていました:あなたの再帰アルゴリズムが正しく書かれており、常にスタックをオーバーフローさせると仮定して、スタックオーバーフローを解決するための標準的な方法は何ですか?思いついた2つの概念は次のとおりです。 末尾再帰 繰り返し アイデア(1)と(2)は正しいですか?他のオプションはありますか? 編集 できればJava、C#、Groovy、またはScalaでコードを表示すると役立ちます。 おそらく上記のプロジェクトオイラーの問題を使用しないでください。そうすれば、他の人にとっては甘やかされることはありませんが、他のアルゴリズムを使用できます。階乗かもしれない、または似たようなもの。

6
アルゴリズムの特許を取得できますか?[閉まっている]
アルゴリズムに特許を取得できますか? 私は私に考えさせられたこの声明を見ました: 少なくとも数年間、2021年までは、だれもが輪郭ドットアルゴリズムの改良点の特許を控えることになります。そのため、Outlinerプロジェクトの開発者は、自由にアイデアを実装できます。 このcodeplexプロジェクトから取られました。

2
Google検索をどのように実装しますか?[閉まっている]
インタビューで「Google検索をどのように実装しますか?」そのような質問にどう答えますか?Googleの一部の実装方法を説明するリソース(BigTable、MapReduce、PageRankなど)があるかもしれませんが、これはインタビューに完全には適合しません。 どのような全体的なアーキテクチャを使用しますか?また、これを15〜30分でどのように説明しますか? 最初に、約1万件のドキュメントを処理する検索エンジンの構築方法の説明から始め、シャーディングを介して約5,000万ドキュメントに拡張し、その後、別のアーキテクチャ/技術的飛躍を実現します。 これは、20,000フィートのビューです。私が望んでいるのは詳細です-あなたがインタビューで実際にそれに答える方法です。どのデータ構造を使用しますか。アーキテクチャで構成されているサービス/マシン。典型的なクエリレイテンシはどうなりますか?フェイルオーバー/スプリットブレインの問題はどうですか?等...

14
本質的にランダム/非決定的アルゴリズムの単体テスト
私の現在のプロジェクトは、簡潔に「制約のあるランダムなイベント」の作成に関係しています。私は基本的に検査のスケジュールを生成しています。それらのいくつかは、厳密なスケジュールの制約に基づいています。金曜日の午前10:00に週に1回検査を行います。他の検査は「ランダム」です。「検査は週に3回行う必要がある」、「検査は午前9時から午後9時までの間に行う必要がある」、「同じ8時間内に2つの検査を行うべきではない」などの基本的な構成可能な要件がありますが、特定の検査セットに対して設定された制約の範囲内で、結果の日付と時刻は予測できません。 ユニットテストとTDD、IMOは、このシステムで大きな価値があります。これは、要件の完全なセットがまだ不完全でありながら、段階的にビルドするために使用できるためです。現在、私が必要だとは知らない。厳密なスケジュールは、TDDにとって欠かせないものでした。ただし、システムのランダムな部分のテストを作成するときに、テスト対象を実際に定義するのは難しいと感じています。スケジューラによって生成されるすべての時間は制約内に収まる必要があると断言できますが、実際の時間を非常に「ランダム」にせずにこのようなすべてのテストに合格するアルゴリズムを実装できます。実際、それはまさに起こったことです。時刻は、正確には予測できませんが、許容される日付/時刻範囲の小さなサブセットに分類される問題を発見しました。アルゴリズムは、私が合理的に行うことができると思うすべてのアサーションに合格し、そのような状況で失敗する自動テストを設計することはできませんでしたが、「よりランダムな」結果が与えられると合格します。既存のテストを再構築して何度も繰り返すことで問題が解決したことを実証し、生成された時間が完全に許容範囲内に収まったことを視覚的に確認する必要がありました。 非決定論的な動作を期待するテストを設計するためのヒントはありますか? すべての提案に感謝します。主な意見は、決定論的で、再現性があり、主張可能な結果を​​得るために、決定論的テストが必要だということです。理にかなっています。 制約プロセス(任意の長いバイト配列が最小と最大の間で長くなるプロセス)の候補アルゴリズムを含む一連の「サンドボックス」テストを作成しました。次に、そのコードをFORループで実行し、アルゴリズムにいくつかの既知のバイト配列(開始時に1から10,000,000の値)を与え、アルゴリズムにそれぞれ1009から7919の間の値に制約させます(素数を使用して、アルゴリズムは、入力範囲と出力範囲の間で偶然のGCFを通過しません)。結果の制約値がカウントされ、ヒストグラムが作成されます。「パス」するには、すべての入力をヒストグラム内に反映する必要があり(「失わない」ようにするための健全性)、ヒストグラム内の2つのバケットの差は2より大きくすることはできません(実際には<= 1でなければなりません) 、しばらくお待ちください)。勝ったアルゴリズムがあれば、それをカットして実動コードに直接貼り付け、永続的なテストを実施して回帰することができます。 コードは次のとおりです。 private void TestConstraintAlgorithm(int min, int max, Func<byte[], long, long, long> constraintAlgorithm) { var histogram = new int[max-min+1]; for (int i = 1; i <= 10000000; i++) { //This is the stand-in for the PRNG; produces a known byte array var buffer = …

3
ヘルパーとは何ですか?デザインパターンですか?それはアルゴリズムですか?
たぶん少し冗談かもしれませんが、Googleでどこにもこの答えが見つからないので、ソフトウェアエンジニアリングが答えを持っていることを確認します。 ヘルパーとは何ですか? セマンティクスが深く意味のあるように、どこでも使用されている名前(モジュール名、クラス名、メソッド名)を見てきましたが、コンピューターサイエンスの文脈では(学位はありませんが)どこにも説明や定義を見たことがない! デザインパターンですか?それはアルゴリズムですか?私はかつてモジュールとクラスの両方がsomethingthinghelper(somethingthingはかなり一般的でもある)と呼ばれるプログラムで働いていましたが、すぐにそれを私にとって意味のあるものに名前を変更しましたが、ここで何かを見逃しているように感じます!

28
過去数十年間の人類にとって重要なアルゴリズムはどれですか?[閉まっている]
過去数十年で人類に最も貢献した最も重要なアルゴリズムはどれですか? これは、開発者が知るべき一般的な知識だと思いました。 更新: 可能であれば、特定のプログラミングアルゴリズムに対する回答を保管してください。 最も重要なもののリストを取得したいのですが、回答ごとにアルゴリズムが1つだけです。 アルゴリズムが重要かつ重要である理由を述べることを考慮してください...

20
以下のクラスで非常に優れた実世界のアルゴリズムが存在しますか?[閉まっている]
昨夜、私は別のプログラマーと話し合っていましたが、何かがO(1)であっても、O(1)アルゴリズムに大きな定数がある場合、O(n)の操作はそれを上回る可能性があります。彼は同意しなかったので、ここに持ってきました。 その下のクラスのアルゴリズムを大幅に上回るアルゴリズムの例はありますか?たとえば、O(n)がO(1)より速いか、O(n 2)がO(n)より速いです。 数学的には、定数因子を無視すると、漸近的上限を持つ関数でこれを実証できますが、そのようなアルゴリズムは野生に存在しますか?そして、それらの例はどこにありますか?どのような状況に使用されますか?
39 algorithms  big-o 

10
アルゴリズムとデータ構造を学習するにはどうすればよいですか?[閉まっている]
これは、アルゴリズムとデータ構造を学習する必要があるかどうかを尋ねた前回の質問の続きです。はい、そうです。 今、私は、実験によって、または実際に、またはどんな課題においても、それを学ぶ機会を得られない環境で働いています。適切な本、適切な問題、アルゴリズムやデータ構造を学習するために6か月、1、2年に渡る適切なリソースなど、適切なアプローチとは何ですか?また、問題をデータ構造とアルゴリズムに関連付けることができるように私の心を形成します。

8
プログラミングでDAG(Directed Acyclic Graph)を使用する場合
私は最近ectoという名前のフレームワークを見つけました。 このフレームワークでは、「plasm」という名前の基本コンポーネントは、ecto Directed Acyclic Graphです。ectoでは、plasmはectoスケジューラーで操作できます。 このメカニズムの利点は何ですか、また他のどのような状況でDAGの概念を活用できますか?

11
人間の脳の乱数生成アルゴリズム?[閉まっている]
人間が(やや「真」の)乱数を生成できる実用的で学習しやすい「インヘッド」アルゴリズムを知っていますか、または考案しましたか?「インヘッド」とは、外部ツールやデバイスがないことが好ましいということです。また、高出力(1分あたり多数の乱数)が望ましいです。 SOでこれを尋ねたが、あまり興味を引かれなかった。たぶんこれはプログラマーにより適しています。

12
プログラマーと呼ばれるアルゴリズムとデータ構造を理解する必要がありますか?[閉まっている]
私がコーディングを始めてから6年が経ちました。ActionScript、JavaScript、Java、PHP、Ajax、XML HTML、ASPなどのあらゆる種類のコードにコーディングします。配列、マップ、リンクリスト、セットなどを使用しました。しかし、インタビューを受けるたびに、人々はハッシュ、ツリー、スタック、キューについて質問する可能性が非常に高いです。いくつかのソートアルゴリズムのジャグリングに関する質問があります。私は本当にそれらを知るべきなのか、それとも自分をプログラマーと呼ぶのをやめるべきなのかわかりません。これらすべての質問をしている人が私を選んだとしても、私にこれらの仕事をさせてくれることは決してありません。私は本当にこれらすべてを知る必要がありますか?


9
アルゴリズムはプログラミング言語よりも重要ですか?
現在(2013年)のGoogle Code Jamコンテストでは、40行のコードのみを使用して同じ問題を解決したPythonの人々と比較して、C ++およびJavaの人々が200行以上のコードを必要とする問題がありました。 PythonはC ++やJavaと直接比較することはできませんが、冗長性の違いはおそらくアルゴリズムの効率に影響を与えると考えられます。 言語の選択と比較して、適切なアルゴリズムを知ることはどれほど重要ですか?優れた実装のPythonプログラムを(同じアルゴリズムを使用して)より良い方法でC ++またはJavaで実装でき、これは特定のプログラミング言語の自然な冗長性と関係がありますか?
35 java  c++  algorithms  python 

4
スプレッドシートの背後にあるデータ構造は何ですか?
スプレッドシート(​​他のセルを参照する値または数式を含む名前付きまたはその他の方法で識別されたセルのグループ)がどのように解決されるかを理解したいと思います。既存のプロジェクトを調べてみましたが、GUI、シリアル化、イベントなどで非常に多くのことが行われていたため、スプレッドシートが見つかりませんでした。 その最も簡単な方法はどのように機能しますか?

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