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

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

11
一意性と速度に最適なハッシュアルゴリズムはどれですか?
一意性と速度に最適なハッシュアルゴリズムはどれですか?例(良い)にはハッシュ辞書が含まれます。 私はSHA-256などのようなものがあることを知っていますが、これらのアルゴリズムは安全であるように設計されています。これは通常、一意性の低いアルゴリズムよりも遅いことを意味します。衝突を避けるために、高速でありながらかなりユニークなハッシュアルゴリズムを設計したいと考えています。
1388 algorithms  hashing 

13
それは私だけですか、またはこれは不可解な技術面接の質問ですか?[閉まっている]
バックグラウンド テクノロジーインタビューで、AがBに等しく、BがCに等しく、AがCに等しい「オブジェクト」(引用符に注意)をトラバースするアルゴリズムを書くように頼まれました。 それでおしまい。それは私が与えられたすべての情報です。 私はインタビュアーに目標を尋ねましたが、どうやら目標はなく、単に「対象」を「横断」するだけでした。 他の人については知りませんが、これは馬鹿げた質問のように思えます。「値を探していますか?」ともう一度尋ねました。いや。それを「トラバース」するだけです。 なぜこの「オブジェクト」を無限にループしたいのですか?多分私のプロセッサを溶かすために?? 答えインタビュアーによると、私は再帰関数を書かれている必要があることでした。 それでは、単に再帰関数を書くように頼まないのはなぜですか?そして、誰も終わらない再帰関数を書くでしょうか? 私の質問: これはあなたの残りの人にとって有効な質問ですか、もしそうなら、私が何が欠けているかもしれないかについてのヒントを提供できますか?おそらく、私は現実世界の問題を解決することについてあまりにも一生懸命に考えています。私は長い間コーディングに成功してきましたが、この技術面接プロセスにより、何も知らない気分になります。

14
テキスト内のコードを確実に検出する簡単な方法は?
GMailにはこの機能があり、添付ファイルがあると思われるメールを送信しようとすると警告が表示されます。 GMail see the attachedは電子メールで文字列を検出したが、実際の添付ファイルは検出しなかったため、[送信]ボタンをクリックすると、[OK /キャンセル]ダイアログが表示されます。 スタックオーバーフローに関連する問題があります。つまり、ユーザーがこのような投稿を入力すると: 私の問題は、データベースを変更する必要があるが、作成しないことです 新しい接続。例: DataSet dsMasterInfo = new DataSet(); データベースdb = DatabaseFactory.CreateDatabase( "ConnectionString"); DbCommand dbCommand = db.GetStoredProcCommand( "uspGetMasterName"); このユーザーはコードをコードとしてフォーマットしませんでした! つまり、Markdownごとに4つのスペースでインデントしたり、コードボタン(またはキーボードショートカットctrl+ k)を使用してインデントしたりしませんでした。 したがって、私たちのシステムは多くの編集を受け入れており、人々は何らかの方法でこれを理解できない人のためにコードを手動でフォーマットする必要があります。これは多くの反抗につながります。エディターのヘルプを何度か改善しましたが、ユーザーの家に行き、キーボードの正しいボタンを押すだけで、次に何をすべきかわからなくなります。 そのため、Google GMailスタイルの警告を検討しています: コードを投稿するつもりでしたか? 私たちはコードのように見えるものを書きましたが、ツールバーのコードボタンまたはctrl+ kコードフォーマットコマンドを使用して、4つのスペースをインデントすることでコードとしてフォーマットしませんでした。 ただし、この警告を表示するには、質問内のフォーマットされていないコードと思われるものの存在を検出する必要があります。これを行う簡単で半信頼性の高い方法は何ですか? Markdownごとに、コードは常に4つのスペースまたはバックティック内でインデントされるため、正しくフォーマットされたものはすぐにチェックから破棄されます。 これは単なる警告であり、評判の低いユーザーが最初の質問をする(または最初の回答を提供する)場合にのみ適用されるため、約5%以下であれば、いくつかの誤検知は問題ありません。 スタックオーバーフローに関する質問はどの言語でも構いませんが、実際にはチェックを「ビッグ10」言語に制限することができます。タグページごとに、C#、Java、PHP、JavaScript、Objective-C、C、C ++、Python、Rubyになります。 Stack Overflowクリエイティブコモンズデータダンプを使用して、潜在的なソリューションを監査し(またはStack Overflowの上位10個のタグからいくつかの質問を選んで)、それがどのように機能するかを確認します。 擬似コードは問題ありませんが、使いやすくしたい場合はc#を使用します。 シンプルであればあるほど(動作する限り)。キッス!ソリューションで、10種類のコンパイラで投稿をコンパイルする必要がある場合、またはベイジアン推論エンジンを手動でトレーニングするために大勢の人がいる場合、それは...正確には思いませんでした。

4
どのアルゴリズム/データ構造を「認識」して名前で知る必要がありますか?[閉まっている]
私はかなり経験豊富なプログラマーだと思っています。私はもう5年以上プログラミングを続けています。しかし、私の弱点は用語です。私は独学なので、プログラミングの方法は知っていますが、コンピューターサイエンスのより正式な側面のいくつかは知りません。それで、名前で認識して知ることができる実用的なアルゴリズム/データ構造は何ですか? アルゴリズムの実装に関する本の推奨を求めているのではないことに注意してください。私はそれらを実装することを気にせず、アルゴリズム/データ構造が問題の良い解決策になるときを認識できるようにしたいだけです。「認識」するアルゴリズム/データ構造のリストをもっと求めています。たとえば、私はこのような問題の解決策を知っています: 0〜999というラベルの付いた一連のロッカーを管理します。人々はロッカーを借りに来て、ロッカーキーを返すために戻ってきます。どのロッカーが無料で、どのロッカーが使用されているかを管理するソフトウェアをどのように構築しますか? ソリューションは、キューまたはスタックになります。 私が探しているのは、「どのような状況でBツリーを使用すべきか-ここでどの検索アルゴリズムを使用すべきか」などです。そして、より複雑な(しかし一般的に使用される)データ構造/アルゴリズムが機能します。 ウィキペディアのデータ構造とアルゴリズムのリストを見てみましたが、それはちょっとやり過ぎだと思います。それで、私が認識すべき重要なものは何かをもっと探していますか?

1
ダイクストラは、彼の論文「The Humble Programmer」で言及されているボランティアにどのような仕事をしましたか?
では、ダイクストラの論文「ハンブルプログラマー」、彼はいくつかのボランティアに解決する問題を与えたことに言及します。 「私は実際に経験豊富なボランティアでプログラミングの実験を少し行ったことがありますが、非常に意図せず、予想外のことが起こりました。私のボランティアの誰も、明白で最もエレガントな解決策を見つけませんでした。綿密な分析の結果、これは共通のソースを持っていることが判明しました。繰り返しの概念は、関連する制御変数をステップアップするという考えに密接に関連しているため、明らかなものを見ることは精神的にブロックされました。彼らのソリューションは効率が悪く、理解するのがむずかしく、それらを見つけるのに非常に長い時間がかかりました。」 ダイクストラがボランティアに与えた問題は何でしたか?解決策は何でしたか?

17
業界で働くとき、big-Oは本当に関連性がありますか?
私が行ったすべてのインタビューで、big-O表記を含む複雑さの数学的分析についてクイズを受けました。 big-O分析は、業界の開発にどの程度関連していますか?どのくらいの頻度でそれを実際に使用しますか?また、問題に対する研ぎ澄まされた考え方を持つことはどのくらい必要ですか?

11
抽象化(LINQなど)の使用がなぜタブーなのですか?[閉まっている]
私は独立した請負業者なので、新しいギグのために年に3〜4回インタビューしています。私は今、そのサイクルの真っin中にあり、インタビューがうまくいったように感じたにもかかわらず、機会を求めて断られました。今年も同じことが何度か起こりました。 今、私は完璧な人ではなく、すべての組織に適しているとは思っていません。とはいえ、バッティング平均は通常よりも低いので、最後の面接者に建設的なフィードバックを丁寧に尋ねると、彼は配達しました! インタビュアーによると、主なことは、低レベルの有機的に成長したアルゴリズムではなく、抽象化(LINQなど)の使用に過度に傾いているように見えたということです。 表面的には、これは理にかなっています-実際、これらのインタビューでもLINQについて口説き、インタビュアーが.NETであってもLINQについてあまり知らなかったため、他の拒否も理にかなっていますみんな)。 だから今、この質問が残っています:「巨人の肩の上に立つ」ことになっていて、私たちが利用できる抽象化(LINQのような)を使用することになっているなら、なぜそれをタブーと考える人がいるのでしょうか?追加のコストなしで同じ目標を達成する場合、「既製」のコードをプルすることは意味がありませんか? LINQは、それがあってもことを私には思われるで抽象化、単純にすべての抽象化で同じ 1は、まったく同じ目的を達成するために書くでしょうアルゴリズム。カスタムアプローチの方が優れているかどうかを確認できるのはパフォーマンステストだけですが、LINQのようなものが要件を満たしていた場合、そもそも独自のクラスを作成する必要はありません。 ここでLINQに注目するつもりはありません。私は、JAVAの世界には匹敵するものがあると確信しています。なぜ、一部の人々が抽象化を使用するという考えに非常に不快になり、彼ら自身が書いていないのかを知りたいのです。 更新 Euphoricが指摘したように、Javaの世界にはLINQに匹敵するものはありません。 したがって、.NETスタックで開発している場合、常にそれを使用してみてはどうでしょうか。人々がそれが何をするのかを完全に理解していない可能性はありますか?

7
プログラマーがメモリからQuickSort / MergeSortアルゴリズムを実装する方法を知ることはどれほど重要ですか?[閉まっている]
私は自分のノートをレビューしていて、さまざまなソートアルゴリズムの実装に出くわしました。 QuickSortとMergeSortの実装を理解しようとすると、私は生計を立てて自分がやっていることを自分自身と考えているにもかかわらず、写真の記憶もアルゴリズムを実装するための純粋な頭脳もない私のメモに依存しています。私が思い出したのは、これらのアルゴリズムの一部は安定しており、一部は安定していないことです。O(nlog(n))またはO(n ^ 2)の時間がかかるものもあります。他のものよりも多くのメモリを使用するものもあります... 私の立場では、標準のAPIにあるもの以外のソートアルゴリズムを使用する必要がないため、この種の仕事に値しないと感じます。つまり、自分でこの種のものを覚えたり、思いついたりすることが実際に不可欠なプログラミングの地位を持っている人はどれくらいいますか?
58 algorithms 

11
有能なプログラマーは、彼自身の最短経路アルゴリズムを考え出すことができますか?
私は、コンピュータープログラマーとしての能力に自信の危機に直面しています。 昨日、グラフ用に自分の最短経路アルゴリズムを考え出そうとしましたが、数時間後にタオルを投げてダイクストラのアルゴリズムを学びました。 これは、優れたプログラマーが数時間で「再発明」できるはずの種類ですか、それとも非現実的ですか? まあ、少なくとも私はバブルソートを再発明することができました:D
58 algorithms 

3
再帰とコアカーソルの違いは何ですか?
これらの違いは何ですか? 再帰 コアカージョン ウィキペディアでは、これらの用語を説明する情報はほとんどなく、明確なコードもありません。 これらの用語を説明する非常に簡単な例は何ですか? corecursionはどのように再帰の二重ですか? 古典的なcorecusiveアルゴリズムはありますか?

11
問題解決のアプローチを紙に書いていますか?[閉まっている]
私はコンピューターサイエンスの新入生で、Pythonで実際のプロジェクトを始めました。教授がクラスで提案したペンと紙の方法を使用すると、非常に効率的であることがわかりました。しかし、問題を書き留めることができず、アルゴリズムを紙に書き出すことができないと、本当に遅くなります。ラボでは、宿題を宿舎に戻す必要があるようです。そこに着いてそれを書き出すと、クラス全体を5分ほどでかかった問題を解決します。 たぶん、私が目の前で人々が研究室を解いているのを見るのがストレスになるからでしょう。または多分それはペンと紙の方法です。 私はフォーラムを閲覧していましたが、誰かがプログラムを紙に書かなければならないなら、プログラマーになってはいけないと書いています。実際にコードを入力する前に、プログラムが何をしているのかを確認し、それを自分のやり方で追跡できるようになったときのほうがずっと良いので、本当に心配です。私は何か間違っていますか? 編集:不明瞭で申し訳ありませんが、紙に書いたとき、問題解決のアプローチ(例の作成、値を含むテーブルの作成など)は実際のコードではありませんでした。紙を使ってアイデアを出しているだけです。

8
私はCSの学生であり、正直なところ、Knuthの本を理解していません[非公開]
私はビル・ゲイツからのこの引用に出くわしました:「もしあなたがすべてを読むことができるならば、あなたは私に履歴書を必ず送るべきです。」彼はThe Art of Programmingの本について話していました。だから私はかなり興味があり、それをすべて読みたいです。しかし、正直なところ、私はそれを理解していません。 私は本当に知的ではありません。だから、これが私がそれを理解できない理由であるに違いないが、私は学ぶことを切望している。現在、基本的なアルゴリズムに関する第1巻を読んでいます。私のような初心者/遅い人に優しい本がありますか?これは知識を深めるのに役立ち、将来Knuthの本を簡単に読むことができますか?


2
双方向データ同期のベストプラクティス/パターン
私の仕事では、多くの場合、データベースシステム間の双方向データ同期のアイデアが現れます。典型的な例は、2つのわずかに異なるCRMシステム(たとえば、Raiser's EdgeとSalesforce)と、それらの間で連絡先データの双方向同期が必要な場合です。 APIの考慮事項は別として、同期する共有キーがあり、使用するアルゴリズム/パターンを純粋に考えている場合、これは技術者以外によって過小評価されることが多いタスクです。 たとえば、次のことに注意する必要があります。 両方のシステムでどのレコードが変更されたかを簡単に検出できますか(または、システム間ですべてのレコードを比較して変更を検出する必要がありますか) N時間に1回の同期を行う場合、両方のシステムで同じレコードが多かれ少なかれ同じ時間に変化する競合に対処する方法 リアルタイム同期(つまり、1つのシステムの更新がすぐに他のシステムの更新をトリガーする)を予定している場合、バグまたはシステムクラッシュによる時間の経過に伴う逸脱の処理方法 個人的に私はこれすべてに取り組む方法を考えることができますが、私が参照できるよく知られたパターン、文献またはベストプラクティスがあるかどうか疑問に思っています。

5
重み付けされたランダムなアイテムを取得する
例えば、私はこの表を持っています + ----------------- + | フルーツ| 重量| + ----------------- + | りんご| 4 | | オレンジ| 2 | | レモン| 1 | + ----------------- + ランダムなフルーツを返す必要があります。ただし、リンゴはレモンの 4倍、オレンジの 2倍の頻度で摘み取る必要があります。 より一般的なケースでは、それはf(weight)頻繁に起こるはずです。 この動作を実装するのに適した一般的なアルゴリズムは何ですか? または、Rubyにすぐに使える宝石がありますか?:) PS 現在のアルゴリズムをRuby https://github.com/fl00r/pickupに実装しました
51 algorithms  ruby  math  random 

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