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

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

5
学習開発のアルゴリズム[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 これはかなり一般的な質問です。PerlとPythonを少し知っているので、プログラミングをもっと深く学びたいと思います。それを理解したら、アプリケーションの開発を始め、次にWebサイトを開発できるようになります。 一般的なプログラミングの学習に対する私のアプローチを説明できるアルゴリズム(手順のシーケンス:))について知りたいと思います。私はPerl / Pythonに関する小さな質問を投稿しましたが、皆さんから大きな助けをいただいています。 注:-急いで学ぶ必要はありません。時間がかかることはわかっていますが、それで問題ありません。 有効だと思われる提案があれば教えてください。また、Lisp、Haskellなどを学ぶように私を押してはいけません-私は初心者です。

13
プログラミングのどの領域で、アルゴリズムの実行時間は実際に重要な問題ですか?
プロセッサの速度と利用可能なメモリの量のために、アルゴリズムの効率と実行時間は実際には大きな関心事ではないと人々が言うのを時々聞きます。 しかし、そのような考慮事項が最も重要なままである領域がまだあると思います。頭に浮かぶのは、数千のトランザクションを数秒で実行する必要があるアルゴリズム取引と、メモリと電力が不足していることが多い組み込みシステムのプログラミングです。これらの例については正しいですか?また、他のどの領域も例になりますか?
15 algorithms 

5
多くの順列を持つ何かに対してTDDを行う方法は?
非常に多くの異なるパスをたどることができるAIのようなシステム、または実際に複数の異なる入力を持つ任意のアルゴリズムを作成する場合、可能な結果セットには多数の順列が含まれることがあります。 結果の多くの異なる順列を出力するシステムを作成するときに、TDDを使用するにはどのようなアプローチをとるべきですか?

6
RBツリーを完全に理解しなくても大丈夫ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 だから私はちょうどコーメンで赤黒の木を学び、すごい!通常、私はすべてのアルゴリズムとデータ構造を理解して、疑似コードをチートすることなく最初から再構築できるようにします。私はアルゴリズムが本当に好きなので、それらがどのように機能するかを学ぶことを楽しんでいます。通常、1行ずつ行き、コードを見て、何が起こっているのか理解しているかどうかを確認して、いくつかのケースを試します。 何が起こっているのかを理解するだけで、RBツリーにかなりの時間がかかりました。本の説明があっても、コードを理解するのは難しいと感じました。言うまでもなく、回転がどのように/なぜ機能するのか理解できませんでした。直感的ではありません。つまり、3つの(実際には6つの)挿入の場合と、4つの削除の場合ですか?このことを理解することは可能ですか?不正行為をせずにこのコードを再構築することは不可能です。バイナリツリーまでは、いくつかの微調整を行って頭の外にあるものを実装できますが、RBツリーは試してさえいません。つまり、先生でさえ混乱することもあるので、それほど簡単ではないと思いますが、同時に、起こっていることすべてを理解する必要があるのでしょうか、少なくともその理由は何でしょうか?本はしなかった 誰かがどのように回転のアイデアを思いついたのかを本当に説明します。誰かが2回転で挿入の問題を解決できることに気づきましたか?すごい! 私の質問は、本当にRBツリーを100%理解する必要があるのですか?私はそれを完全に理解せずにある種の悪いスキップを感じます。よろしくお願いします!(PS:RB-treeにはタグがなく、実際にはツリーにもタグがなく、バイナリツリーだけなので、アルゴリズムのみを配置します)
15 algorithms 

5
アルゴリズムリフレッシャー。ヒープソートが分類アルゴリズムであるのはなぜですか?
ヒープソートがインプレースソートアルゴリズムと見なされる理由がわかりません。 つまり、並べ替えられる配列の要素(つまりヒープ)が追加された追加のデータ構造を使用して、最小値の抽出と並べ替えプロセスを支援します。 ここでインプレースの定義を誤解しているのではないでしょうか? しかし、たとえば挿入ソートは、インプレースアルゴリズムである、つまり要素に余分なメモリが必要ないことは明らかです。 それで、なぜそれはインプレースと見なされますか?

2
ビデオストリームの高速でロスレスな圧縮
静止カメラからのビデオがあります。解像度とFPSはどちらも非常に高いです。私が取得するデータはバイエル形式で、ピクセルあたり10ビットを使用します。プラットフォームには10ビットデータ型がないため、元のデータは16ビットワードを使用してメモリに保存されます。ネットワークを介してデータを送信する前に、何らかの種類のデータのロスレス圧縮を実装したいと思います。 カメラは動かないので、連続するフレームの大部分はほぼ同一ですが、避けられないノイズのために完全ではありません(ノイズがなくてもノイズを「失う」べきではないため、ノイズ除去はオプションではありません)。 FPSが高いため、変化する部分でさえ、2つの連続するフレーム間であまり変化しません。 ただし、カメラも少し揺れているようです。非常にわずかですが、それでも、静止したオブジェクトでさえ、画像空間では完全にはそうではありません。 圧縮はオンザフライで実行する必要があるため、多くのフレームを収集してそれらをまとめて圧縮することはできませんが、1フレーム後ろを見て参照として使用できます。 上記に基づいて、私が最初に考えたのは、データをビットパックすることで、これらの6つの冗長ビットがすべての単語で無駄にならないようにしました。ただし、エントロピーコーディング(ハフマンなど)を使用すると、その冗長性が自動的に考慮されるため、追加のパッキングは必要ないと考えました。だから私は次のことをしました: 2つの連続するフレーム間でバイナリの差分を取りました。元のデータ範囲は0〜1023(たとえば、符号なし10ビット)でした。差分データは符号付きになり、範囲は-1023〜1023に増加しますが、データの変動(または正しい数学用語)は元のデータよりもはるかに小さくなります。実際、ほとんどの値は驚くことではありませんが、ゼロに近いです。 。 違いにライスコーディングを適用しました。私が理解していることから、ほとんど数値が小さいデータセットには良い選択のように見えます。 これにより、1280x720フレームのサイズが約60%削減され、テストシステム(シングルコアのVirtualBoxのLinux)は、1秒あたり約40の圧縮を(最適化なしで)実行できます。それほど素晴らしいわけではありませんが、合理的だと思います(またはそうでしょうか?)。 より良い方法はありますか?よくある間違いはありますか?逃した一般的な手順はありますか?高解像度のフレームは後で使用される可能性があります-フレームサイズが大きいほど、圧縮率が向上すると思いますか? UPD .: このライブラリをライスエンコーディングに使用しました。ライブラリは非常に低速です(著者自身が実際の使用ではなく学習用と記述しています)。たとえば、ループでビットを1つずつ読み書きするため、パフォーマンスが低下します。最初は〜20 FPSしか与えられませんでしたが、いくつかの非常に基本的な最適化の後、40 FPS(上記のように)になり、後でさらに最適化して80になりました。 しかし、ベクトル化に関しては、残念ながら、Riceコードをベクトル化する方法を考えることができませんでした(それが可能かどうかさえわからない-Riceコードに関するデータを見つけることができませんでした、ハフマンコードについて見つけることができることはこれはシーケンシャルであり、効率的にベクトル化することはできません。これは、ライスコードや他の可変長コードに適用される可能性があります。 また、まったく異なるアプローチを試みました。データを小さな断片に分割し(例:64ピクセルごとに)、単純なゼロ抑制を使用します。ブロック内で最大の数を見つけ、それを表すために必要なビット数をブロックの先頭に書き込みます(私の場合、追加の4ビットが必要でした)。次に、ブロック内のすべての数を同じ数に減らします。ビット。私は圧縮率が悪いと思っていましたが、断片が小さい場合、それらの多くはノイズスパイクを持たないため、バイナリ差は値ごとに4〜6ビットのようなものに減らすことができ、実際にはそれだけでしたRiceコードよりも約5%悪いですが、約2倍高速です(たとえば、私の場合は160 FPS)。私はそれをベクトル化しようとしましたが、ベクトル化をちょっと嫌っています。 負数には先行ゼロがないため、バイナリ差分の後、ライス/ゼロ抑制の前にジグザグエンコーディングを適用しました。

4
必要なときにソリューションに到達する方法の説明を出力するアルゴリズムのパターン
次のシナリオが何度か起こりました。 特定の問題を解決するアルゴリズムをプログラムしました。正常に機能し、正しい解決策を見つけます。今、私はアルゴリズムに「あなたが解決策に到達した方法の完全な説明を書く」ことを伝えるオプションが欲しいです。私の目標は、オンラインデモ、チュートリアルクラスなどでアルゴリズムを使用できるようにすることです。説明なしでリアルタイムにアルゴリズムを実行するオプションが引き続き必要です。使用する良いデザインパターンは何ですか? 例:最大公約数を見つけるためにこのメソッドを実装するとします。現在実装されているメソッドは正しい答えを返しますが、説明はありません。次のようなメソッドのアクションを説明するオプションが必要です。 Initially, a=6 and b=4. The number of 2-factors, d, is initialized to 0. a and b are both even, so we divide them by 2 and increment d by 1. Now, a=3 and b=2. a is odd but b is even, so we divide b by 2. …

3
整数シーケンスの検索
かなり複雑な検索の問題があり、それをなんとか次の説明にまとめました。私はグーグル検索を行ってきましたが、問題にきれいに適合すると思われるアルゴリズムを見つけることができませんでした。特に、任意の整数をスキップする必要があります。たぶんここの誰かが私に何かを指し示すことができますか? 整数Aのシーケンスを例にとります(1(2 3 4)) さまざまな整数のシーケンスを取り、それらのいずれかがそのようなAに一致するかどうかをテストします。 Aには、テストされたシーケンス内のすべての整数が含まれます テストされたシーケンスの整数の順序はAで同じです テストシーケンスにないAの整数は気にしません 最初のものだけでなく、一致するすべてのテストシーケンスが必要です。 例 A = (1 2 3 4) B = (1 3) C = (1 3 4) D = (3 1) E = (1 2 5) BはAと一致します CはAと一致します 順序が異なるため、DはAと一致しません EはAにない整数を含むため、Aとは一致しません この説明が十分に明確であることを願っています。私ができた最善の方法は、テストシーケンスのツリーを構築し、Aを反復処理することです。整数をスキップできるようにする必要があると、多くの失敗した検索パスにつながります。 ありがとう いくつかの提案を読んで、私はあまりにも曖昧にしたいくつかの点を明確にしなければならないと感じています。 繰り返し数が許可されます。実際、これは単一のテストシーケンスがAに一致することを許可するため、非常に重要です。 A =(1234356)、B =(236)、一致は-23 --- 6または-2--3-6のいずれかです 少なくとも数千の非常に多数のテストシーケンスがあると予想され、シーケンスAの最大長は20になる可能性があります。したがって、反復することで各テストシーケンスを1つずつ一致させることは非常に非効率的です。 これが明確でない場合は申し訳ありません。
14 algorithms 

4
パスワードのエントロピーを推定するにはどうすればよいですか?
パスワードの強度に関するさまざまなリソースを読んで、パスワードのエントロピーの大まかな推定値を提供するアルゴリズムを作成しようとしています。 できるだけ包括的なアルゴリズムを作成しようとしています。この時点では、擬似コードしかありませんが、アルゴリズムは次のことをカバーしています。 パスワードの長さ 繰り返されるキャラクター パターン(論理) 異なる文字スペース(LC、UC、数値、特殊、拡張) 辞書攻撃 以下をカバーしておらず、完全にカバーすべきではありません: 順序付け(このアルゴリズムの出力により、パスワードを厳密に順序付けることができます) パターン(空間) 誰でもこのアルゴリズムの弱点についての洞察を提供できますか?具体的には、アルゴリズムにパスワードを入力するとその強度が過大評価される状況を誰もが考えられますか?過小評価は問題ではありません。 アルゴリズム: // the password to test password = ? length = length(password) // unique character counts from password (duplicates discarded) uqlca = number of unique lowercase alphabetic characters in password uquca = number of uppercase alphabetic characters uqd = …

8
数字のリストで「穴」を見つける
並べ替えられていない整数のリストに存在しない(リストの最小値より大きい)最初の(最小の)整数を見つける最も速い方法は何ですか? 私の基本的なアプローチは、それらをソートしてリストをステップすることです、より良い方法はありますか?

10
オブジェクト指向は本当にアルゴリズムのパフォーマンスに影響しますか?
オブジェクト指向は、多くのアルゴリズムを実装する上で非常に役立ちました。ただし、オブジェクト指向言語は「簡単な」アプローチをガイドすることがあり、このアプローチが常に良いものかどうかは疑問です。 オブジェクト指向は、アルゴリズムを高速かつ簡単にコーディングするのに非常に役立ちます。しかし、このOOPは、パフォーマンスに基づいたソフトウェアにとって不利なものになる可能性があります。つまり、プログラムの実行速度です。 たとえば、グラフノードをデータ構造に格納することは、最初は「簡単」に思えますが、Nodeオブジェクトに多くの属性とメソッドが含まれている場合、アルゴリズムが遅くなる可能性はありますか? 言い換えれば、多くの異なるオブジェクト間の多くの参照、または多くのクラスの多くのメソッドを使用すると、「重い」実装になりますか?

3
C ++またはMATLABでのテクニカルペーパーアルゴリズムの実装
私は電気工学の学部生です。信号および画像処理アルゴリズム(再構成、セグメンテーション、フィルタリングなど)に関する多くの技術論文を読んでいます。これらの論文に示されているアルゴリズムのほとんどは、連続時間と連続周波数にわたって定義されており、多くの場合、複雑な方程式の観点から解を提供します。上記の論文で得られた結果を複製するために、C ++またはMATLABでゼロから技術論文をどのように実装しますか? より具体的には、Wang et al(IEEE Trans Med Imaging。1993; 12(3):486-96)の論文「A general cone-beam rebuild algorithm」を見て、どうすれば始めることができるのか疑問に思っていました。アルゴリズムを実装していますか?式10は、再構築された画像の式を示します。どのようにコーディングしますか?各ボクセルを通過し、対応する式を計算するforループがありますか?その式で関数の関数をどのようにコーディングしますか?任意のポイントで関数をどのように評価しますか? ゴンザレスとウッズの本「デジタル画像処理」を読みましたが、まだ迷っています。また、数値レシピの本シリーズについても読んでいます。それは正しい方法でしょうか? 研究論文からアルゴリズムをプログラミングした経験は何ですか?ヒントや提案はありますか?
14 c  algorithms  matlab 

3
AVLツリーと現実の世界
学校では、挿入または削除時にAVLツリーのバランスを取る方法を教えています。 この種の知識は、実際に実際どのように役立つのでしょうか?誰かがこの種の知識が実際にいつ役立つのか例を示すことができますか? 私が見たものから、職場ではそのような詳細はほとんど出てきません... アルゴリズムと一部のデータ構造に関する詳細な知識が重要になることはありますが、AVLツリーの回転(および同様の詳細な概念)などの詳細は重要ではありません。 ありがとう!

3
Google's Goはタイプセーフな言語ですか?
このページhttp://golang.org/doc/go_faq.htmlの書き込み: Goには静的な型がありますが、言語は典型的なオブジェクト指向言語よりも型を軽く感じさせようとします だから私の質問は、ジェネリック(C#など)で安全に入力するか、緩やかに入力する(javascriptなど)か、オプション(Vb.Netのオプションstrictなど)で安全に入力することです

2
Antコロニーアルゴリズム
私はコースプロジェクトのためにアリコロニーシミュレーターに取り組んでいる学生です。そのアルゴリズムは(明らかに)蟻コロニーアルゴリズムです。アルゴリズムにはさまざまな形式がありますが、それらはすべて数学的に詳細すぎるため、次のようなアプローチを採用しました。 アリはコロニーで生まれ、コロニーを維持するために源から食物を集めなければなりません。 すべてのアリは似ています。 アリが移動する領域は1000x1000グリッドであるため、すべてのグリッドポイントはアリが占有する有効なポイントとして機能します。今、私が遭遇したすべてのアルゴリズムは、頂点とエッジを別々に処理することを伴いますが、アリの動きを4方向(上下左右)に制限しているので、フェロモンをどこに置くかは関係ないと思います。 上記のグリッドポイントはフェロモンを保存します。 アリは、食物を運んでいる場合にのみフェロモンを落とします。 位置(i、j)のアリの場合、4つの隣接ノードのフェロモン量を単純な確率式で考慮することにより、次のステップでどこに移動するかを決定します。つまり、ノードに移動する確率は(特定の隣接ノードのフェロモン量)/(4つの隣接ノードのフェロモン量の合計)。 アリは、元の位置に戻ることはできません。それができるのは、食物がある場所にいるか、そのコロニーにいる場合だけです。 今、私の懸念は(そしてプログラムで実際に何が起こっているのか)アリFIRSTが食物のある位置に到達し、それを拾うと、アルゴリズムが機能する方法で、どこにでも移動できることです!これは、フェロモントレイルを離れるのは、餌を食べる前ではなく、最初のアリであるため、既存のトレイルがないためです。 アリがどこにでも移動できる場合、食物源に到達したアリは、ほとんどそれに従う傾向があります。コロニーに向かって戻っていない場合でも。これは、アルゴリズム全体の目的に反します。 だから私の質問は 上記の懸念は有効ですか?いいえの場合、なぜですか?はいの場合、どのように対処しますか? 実際に機能させるために、アルゴリズムの基本的な理解を変更する必要がありますか? 私のような初心者がこの場合見逃すかもしれない他の微妙でありながら重要なことは何ですか?

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