問題タブ [big-o]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - Big O さん、どのように計算/概算しますか?
CS の学位を取得したほとんどの人は、 Big O の略語を知っているはずです。アルゴリズムがどれだけうまくスケールするかを測定するのに役立ちます。
しかし、興味深いのは、アルゴリズムの複雑さをどのように計算または概算するのですか?
sorting - O(n!) よりも悪いソートを書くにはどうすればよいですか
私は自分のアミューズメント用に O(n!) ソートを作成しました。これは、完全に置き換えずに高速に実行するために簡単に最適化することはできません。[いいえ、ソートされるまでアイテムをランダム化しただけではありません]。
時間の複雑さを軽減するために引き抜くことができる無関係なジャンクを追加するだけでなく、さらに悪い Big-O ソートを作成するにはどうすればよいでしょうか?
http://en.wikipedia.org/wiki/Big_O_notationには、さまざまな時間の複雑さが大きくなる順に並べられています。
編集:コードを見つけました。これは、リストのすべての組み合わせのリストを生成する面白いハックを使用した O(n!) 決定論的ソートです。反復可能な組み合わせを返す get_all_combinations の少し長いバージョンがありますが、残念ながら単一のステートメントにすることはできませんでした。[以下のコードでタイプミスを修正し、アンダースコアを削除して、バグが発生していないことを願っています]
python - Pythonの組み込みシーケンスタイプの時間と空間の複雑さはどこにありますか
Pythonソースコードを自分で調べてオブジェクトがどのように機能するかを判断する以外に、この情報のソースを見つけることができませんでした。私がこれをオンラインで見つけることができる場所を誰かが知っていますか?
algorithm - 8歳のビッグオー?
これが私のコードにとって何を意味するかについてもっと尋ねています。私は概念を数学的に理解していますが、それらが概念的に何を意味するのかを理解するのに苦労しています. たとえば、データ構造に対して O(1) 操作を実行する場合、項目が増えるため、実行する操作の数が増えないことは理解しています。また、O(n) 操作は、各要素に対して一連の操作を実行することを意味します。誰かここの空欄を埋めてくれませんか?
- O(n ^ 2)操作は正確に何をしますか?
- そして、操作が O(n log(n)) である場合、それはどういう意味ですか?
- そして、誰かが O(x!) を書くためにクラックを吸わなければならないのですか?
data-structures - 一般的なデータ構造からのインデックス作成、挿入、および削除の時間の複雑さは?
配列、リンクされたリスト、ハッシュ テーブルなどを含む最も一般的なデータ構造に対する操作の Big O 表記の概要はありません。
optimization - ビッグオー記法とは?使いますか?
ビッグオー記法とは?使いますか?
私はこの大学のクラスを逃したと思います:D
誰かがそれを使用し、それを使用した場所の実例を挙げていますか?
以下も参照してください。
algorithm - バランスのとれた分配アルゴリズム
疎結合クラスターのコードに取り組んでいます。ジョブ中に最適なパフォーマンスを実現するために、子が出入りするたびにクラスターにデータを再マッピングさせます。これは最終的にはオプションになりますが、現時点ではデフォルトでデータ バランシングを実行します。私のバランス調整は基本的に、各子がマシンごとの平均ファイル数に 1 を加えた数を超えないようにすることです。除算がきれいでない場合、プラス 1 は残りの部分です。そして、残りは常に子の数よりも少ないため [0 の場合を除きますが、それを除外できます]、バランス調整後の子は最大で avg + 1 になります。
私のアルゴリズムが O(n!) であることに気付くまでは、すべて問題ないように見えます。子供のリストを下に移動し、残りの平均を調べます。誰が多すぎて誰が少なすぎますか。多すぎるリストの各子供について、リストを調べて、少なすぎる子供に送信します。
これに対するより良い解決策はありますか?あるに違いないと感じます。
編集:これは、O(n!)をどのように導出したかを示す擬似コードです:
編集:O(n ^ 2)。Foreach n、n => n*n => n^2。今朝はコーヒーが足りなかったみたい!;)
将来的には、より柔軟で回復力のある分散方法 [重みとヒューリスティックス] に移行したいと考えていますが、今のところ、データの均一な分散が機能しています。
arrays - 配列に n...n+m が含まれているかどうかを判断するアルゴリズム?
Reddit でこの質問を見ましたが、肯定的な解決策は提示されていませんでした。ここで質問するのに最適な質問だと思いました。これは、インタビューの質問に関するスレッドにありました。
サイズ m の int 配列を取り、配列が n...n+m-1 の数値、その範囲のすべての数値、およびその範囲の数値のみで構成されている場合に (True/False) を返すメソッドを作成します。配列がソートされる保証はありません。(たとえば、{2,3,4} は true を返します。{1,3,1} は false を返し、{1,2,4} は false を返します。
これに関して私が抱えていた問題は、インタビュアーが最適化 (より高速な O(n)、より少ないメモリなど) を私に求め続け、一定量のメモリー。それを理解したことがありません。
解決策とともに、配列に一意のアイテムが含まれていると想定しているかどうかを示してください。また、ソリューションがシーケンスが 1 から始まると想定しているかどうかも示してください。
編集:私は今、重複を処理する線形の時間と一定の空間アルゴリズムが存在しないという意見です。誰でもこれを確認できますか?
重複の問題は、O(n) 時間、O(1) 空間で配列に重複が含まれているかどうかを確認するテストに要約されます。これができれば、最初に簡単にテストできます。重複がない場合は、投稿されたアルゴリズムを実行します。では、O(n) 時間 O(1) 空間で重複をテストできますか?
algorithm - すべての Big-O 表記のマスター リストはありますか?
すべての Big-O 表記のマスター リストはありますか? データ構造、アルゴリズム、それぞれに対して実行される操作、平均的なケース、最悪のケースなど。