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

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズム設計に関連している場合に使用します。


30
予測可能なランダムジェネレーターの必要性
私はウェブゲームの開発者で、乱数に問題がありました。プレーヤーが剣でクリティカルヒットを得る確率が20%であるとしましょう。つまり、5ヒットのうち1ヒットが重要です。問題は、実際の結果が非常に悪いことです。5ヒットで3クリティカル、15ヒットでまったくクリティカルにならない場合があります。戦いはかなり短い(3-10ヒット)ので、良いランダム分布を得ることが重要です。 現在はPHPを使用していますがmt_rand()、コードをC ++に移動しているだけなので、ゲームの新しいエンジンでこの問題を解決したいと考えています。 解が均一な乱数発生器であるかどうか、または適切な分布を強制するために以前のランダムな状態を覚えているかもしれません。
151 c++  algorithm  random 

4
実際にフィボナッチヒープを効率的に実装した人はいますか?
あなたの誰かがフィボナッチヒープを実装したことがありますか?私は数年前にそうしましたが、配列ベースのBinHeapsを使用するよりも数桁遅くなりました。 当時、私はそれが研究が主張するほど必ずしも良いとは限らないということについての貴重な教訓だと思っていました。ただし、多くの研究論文では、フィボナッチヒープの使用に基づくアルゴリズムの実行時間を主張しています。 効率的な実装を実現できたことがありますか?または、フィボナッチヒープの方が効率的であるほど大きなデータセットを使用しましたか?もしそうなら、いくつかの詳細をいただければ幸いです。

9
窓から猫を投げる
猫がいる高層ビルにいるとします。猫は低い階の窓から落ちても生き残ることができますが、高床から投げられると死にます。最小限の試行回数で、猫が生き残ることができる最長の落下をどのようにして把握できますか? 明らかに、猫が1匹しかいない場合、直線的にしか検索できません。まず1階から猫を投げます。生き残った場合は2回目から投げます。やがて、f階から投げ出された猫は死ぬ。すると、f-1フロアが最大安全フロアであったことがわかります。 しかし、猫が複数いる場合はどうでしょうか。これで、ある種の対数検索を試すことができます。ビルドが100階建てで、猫が2匹いるとします。最初の猫を50階から投げ出して死んだ場合、50階を直線的に検索するだけで済みます。あなたが最初の試みのために低い階を選択した場合、あなたはさらに良いことができます。一度に20フロアの問題に取り組むことを選択し、最初の致命的なフロアが#50であるとします。その場合、最初の猫は20階と40階のフライトを生き延びてから60階で死亡します。41階から49階を個別に確認するだけです。これは合計12回の試行であり、バイナリ除去を使用しようとした場合に必要な50回よりもはるかに優れています。 一般的に、2匹の猫がいるn階建ての建物の場合、最善の戦略は何ですか?それは最悪の場合の複雑さですか?n階とm猫はどうですか? すべての猫が同等であると仮定します。それらはすべて、所定のウィンドウからの落下によって生き残るか、または死亡します。また、すべての試みは独立しています:猫が転倒を生き延びた場合、それは完全に無害です。 これは宿題ではありませんが、学校の課題のために一度解決したかもしれません。今日、気まぐれな問題が頭に浮かんだだけで、その解決策を思い出せません。この問題の名前またはソリューションアルゴリズムの名前を知っている人がいる場合は、ボーナスポイントになります。

23
ローリングまたはスライディングウィンドウイテレータ?
シーケンス/イテレータ/ジェネレータで反復可能なローリングウィンドウ(別名スライディングウィンドウ)が必要です。デフォルトのPython反復は、ウィンドウの長さが1である特別な場合と考えることができます。現在、次のコードを使用しています。誰かがこれを行うためのよりPythonic、冗長ではない、またはより効率的な方法を持っていますか? def rolling_window(seq, window_size): it = iter(seq) win = [it.next() for cnt in xrange(window_size)] # First window yield win for e in it: # Subsequent windows win[:-1] = win[1:] win[-1] = e yield win if __name__=="__main__": for w in rolling_window(xrange(6), 3): print w """Example output: [0, 1, 2] [1, 2, …
150 python  algorithm 

6
複数のフィルターをpandas DataFrameまたはSeriesに適用する効率的な方法
ユーザーがPandas DataFrameまたはSeriesオブジェクトにいくつかのフィルターを適用したいというシナリオがあります。基本的に、実行時にユーザーが指定した一連のフィルタリング(比較操作)を効率的にチェーン化したいと考えています。 フィルターは付加的である必要があります(別名を適用すると結果が絞り込まれます)。 私は現在使用してreindex()いますが、これにより毎回新しいオブジェクトが作成され、基になるデータがコピーされます(ドキュメントを正しく理解している場合)。そのため、大きなSeriesまたはDataFrameをフィルタリングする場合、これは非常に非効率的です。 私が使用していることを考えているapply()、map()または類似した何かが良いかもしれません。私はパンダにかなり慣れていないので、すべてに頭を包み込もうとしています。 TL; DR 次の形式のディクショナリを取得して、各操作を特定のSeriesオブジェクトに適用し、「フィルター処理された」Seriesオブジェクトを返します。 relops = {'>=': [1], '<=': [1]} 長い例 私が現在持っているものの例から始めて、単一のSeriesオブジェクトをフィルタリングするだけです。以下は私が現在使用している関数です: def apply_relops(series, relops): """ Pass dictionary of relational operators to perform on given series object """ for op, vals in relops.iteritems(): op_func = ops[op] for val in vals: filtered = op_func(series, val) series = …
148 python  algorithm  pandas 

30
一連の循環データの平均をどのように計算しますか?
一連の循環データの平均を計算したい。たとえば、コンパスの読みからいくつかのサンプルがあるかもしれません。もちろん問題はラップアラウンドの扱い方です。同じアルゴリズムが文字盤にも役立つかもしれません。 実際の質問はより複雑です-統計は球または「包み込む」代数空間で何を意味するか、たとえば加法群mod n。答えは一意ではない可能性があります。たとえば、359度と1度の平均は0度または180である可能性がありますが、統計的には0の方が良く見えます。 これは私にとって本当のプログラミング問題であり、私はそれを単なる数学の問題のように見えないようにしようとしています。
147 algorithm  math  geometry 

18
Pythonで2つのリストが循環的に同一かどうかを確認する方法
たとえば、私はリストがあります: a[0] = [1, 1, 1, 0, 0] a[1] = [1, 1, 0, 0, 1] a[2] = [0, 1, 1, 1, 0] # and so on それらは異なっているように見えますが、開始と終了が接続されていると想定されている場合、それらは循環的に同一です。 問題は、私が持っている各リストの長さが55で、1つが3つ、0が52個しかないことです。循環条件がない場合、26,235(55選択3)リストがあります。ただし、「循環」という条件が存在する場合、循環的に同一のリストが多数あります。 現在、私は次のように循環的にアイデンティティをチェックしています: def is_dup(a, b): for i in range(len(a)): if a == list(numpy.roll(b, i)): # shift b circularly by i return True return …
145 python  algorithm 

23
リストがソートされているかどうかを確認するPythonの方法
リストがすでに並べ替えられているASCかどうかを確認するためのpython的な方法はありますかDESC listtimestamps = [1, 2, 3, 5, 6, 7] 以下のような何かisttimestamps.isSorted()それを返しますTrueかFalse。 一部のメッセージのタイムスタンプのリストを入力し、トランザクションが正しい順序で表示されるかどうかを確認したいと思います。

12
unordered_setの代わりにsetを使用するのはなぜですか?
C ++ 0xは、他の多くの場所でunordered_set利用可能なものを導入していますboost。私が理解しているのunordered_setは、O(1)ルックアップが複雑なハッシュテーブルです。一方、ルックアップが複雑なsetツリーにすぎませんlog(n)。なぜ誰もがset代わりに使うのunordered_setでしょうか?すなわち、setもはや必要性はありますか?

14
二分探索の複雑さを計算する方法
誰かが二分探索は探索に必要な入力を半分にするので、それがlog(n)アルゴリズムであると誰かが言うのを聞いた。私は数学の出身ではないので、それを理解することはできません。誰かがもう少し詳しく説明できますか?対数系列で何かしなければならないのですか?

8
Amazonおすすめ機能はどのように機能しますか?
Amazon推奨テクノロジーの画面の背後にあるテクノロジーは何ですか?Amazonの推奨は現在市場で最高だと思いますが、それらはどのようにして関連する推奨を提供するのですか? 最近は似たようなレコメンデーションプロジェクトにも関わっていますが、技術的な観点からアマゾンレコメンデーションテクノロジーの内外について知りたいと思います。 任意の入力をいただければ幸いです。 更新: この特許は、パーソナライズされた推奨事項がどのように行われるかを説明していますが、あまり技術的ではないため、いくつかの洞察を提供できれば非常に良いでしょう。 Daveのコメントから、Affinity Analysisはそのような推奨エンジンの基礎を形成します。また、トピックの読み物もいくつかあります マーケットバスケット分析の謎を解く マーケットバスケット分析 アフィニティ分析 推奨読書: データマイニング:概念と手法

18
2つの長方形の交差を検出するアルゴリズム?
2つの長方形が交差しているかどうかを検出するアルゴリズムを探しています(1つは任意の角度で、もう1つは垂直/水平線のみで)。 一方のコーナーがもう一方のALMOSTにあるかどうかのテストは機能します。長方形が十字のような形状を形成する場合、失敗します。 垂直線の特別なケースを必要とする線の勾配を使用しないことは良い考えのようです。

14
並べ替えられた数値の配列に数値を挿入する効率的な方法?
並べ替えられたJavaScript配列があり、結果の配列が並べ替えられたままになるように、配列に1つ以上の項目を挿入します。私は確かに単純なクイックソートスタイルの挿入関数を実装できました。 var array = [1,2,3,4,5,6,7,8,9]; var element = 3.5; function insert(element, array) { array.splice(locationOf(element, array) + 1, 0, element); return array; } function locationOf(element, array, start, end) { start = start || 0; end = end || array.length; var pivot = parseInt(start + (end - start) / 2, 10); if …

22
2つのキューを使用してスタックを実装する
同様の質問が以前にそこで行われましたが、ここでの質問は、2つのキューをスタックとして使用することとは逆です。質問... 彼らの標準的な操作で2つのキューを考えると(enqueue、dequeue、isempty、size)、その標準的な操作でスタックを実装(pop、push、isempty、size)。 ソリューションには2つのバージョンがあるはずです。 バージョンA:アイテムをプッシュする場合、スタックは効率的でなければなりません。そして バージョンB:アイテムをポップするとき、スタックは効率的でなければなりません。 特定の言語の実装よりもアルゴリズムに興味があります。ただし、私がよく知っている言語で表現されたソリューションを歓迎します(java、c#、python、vb、JavaScript、php)。

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