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

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

8
対数複雑度のアルゴリズムの直観
、、およびような複雑さを十分に把握していると思います。O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) リストに関しては、は定数ルックアップなので、リストの先頭を取得するだけです。 はリスト全体を検索する場所であり、はリスト内の各要素に対して1回ずつリストを検索します。O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) と間のどこかにあることを知る以外に、を把握する同様の直感的な方法はありますか?Θ(logn)Θ(log⁡n)\Theta(\log n)O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)

8
整数配列の最速のソートアルゴリズムは何ですか?
私は高校時代に多くの分類アルゴリズムに出会いました。ただし、どれが最速かはわかりません(整数のランダム配列の場合)。だから私の質問は: 現在知られている最速のソートアルゴリズムはどれですか? 理論的には、さらに速いものがある可能性はありますか?それで、ソートの最小の複雑さは何ですか?

7
チューリングマシンは「定義上」最も強力なマシンですか?
チューリングマシンが「可能なすべての数学的問題」を実行できることに同意します。しかし、それはアルゴリズムの単なるマシン表現であるためです。最初にこれを行い、次にそれを行い、最後にそれを出力します。 解けるものはすべてアルゴリズムで表すことができるということです(正確には「解ける」の定義だからです)。それは単なるトートロジーです。ここで新しいことは何も言わなかった。 また、アルゴリズムのマシン表現を作成することにより、すべての可能な問題を解決することも新しいことではありません。これも単なるトートロジーです。基本的に、チューリングマシンが最も強力なマシンであると言われるとき、それが効果的に意味するのは、最も強力なマシンが最も強力なマシンであることです! 「最も強力な」の定義:任意の言語を受け入れることができるもの。 「アルゴリズム」の定義:何でもするためのプロセス。「アルゴリズム」のマシン表現:​​何でもできるマシン。 したがって、アルゴリズムのマシン表現が最も強力なマシンになることは論理的です。アラン・チューリングが私たちに与えた新しいものは何ですか?

4
末尾再帰とは何ですか?
再帰の一般的な概念を知っています。クイックソートアルゴリズムを勉強しているときに、テール再帰の概念に出会いました。MITの 18:30秒のクイックソートアルゴリズムのこのビデオでは、教授はこれが末尾再帰アルゴリズムであると述べています。末尾再帰が本当に何を意味するのかは私には明らかではありません。 誰かが適切な例で概念を説明できますか? ここで SOコミュニティによって提供されたいくつかの答え。

4
なぜ多項式時間が「効率的」と呼ばれるのですか?
コンピューターサイエンスで、せいぜい多項式の複雑さが効率的であると見なされるのはなぜですか? 実際のアプリケーション(a)では、複雑さアルゴリズムは時間内に実行されるアルゴリズム、たとえばn 80よりもはるかに高速ですが、前者は非効率であると見なされ、後者は効率的です。ロジックはどこですか?!nlognnlog⁡nn^{\log n}n80n80n^{80} (a)たとえば、宇宙の原子数は約と仮定します。1080108010^{80}

3
バイナリ検索が3項検索よりも高速なのはなぜですか?
バイナリ検索を使用して要素の配列を検索するには、最悪の場合、回の反復が必要です。これは、各ステップで検索スペースの半分をトリミングするためです。代わりに、「三分探索」を使用した場合、各反復で探索空間の3分の2を切り捨てるので、最悪の場合は反復が必要です...log 2 N log 3 N &lt; log 2 NNNNlog2Nlog2⁡N\log_2 Nlog3N&lt;log2Nlog3⁡N&lt;log2⁡N\log_3 N < \log_2 N 三項検索の方が速いように思えますが、なぜ二項検索を使用するのですか?

12
Eveが知らないうちにBobと番号を確認する方法は?
友人のボブが正しい電話番号を持っていることを確認する必要がありますが、直接尋ねることはできません。質問をカードに書いて、イブに渡さなければなりません。イブはそのカードをボブに持って行き、答えをあなたに返します。イブがあなたの電話番号を読み取れないように、ボブがメッセージをエンコードできるようにするには、質問に加えて、カードに何を書く必要がありますか? 注:この質問は、「Googleインタビューの質問」のリストにあります。その結果、ウェブ上にはこの質問のバージョンがたくさんあり、それらの多くは明確な、あるいは正解すらありません。 注2:この質問に対するひそかな答えは、ボブが「私に電話してください」と書くべきだということです。はい、それは非常に賢く、「箱の外」とすべてですが、私たちのヒーローを「ボブ」と彼の盗聴敵「イブ」と呼ぶCSの分野のテクニックを使用しません。 更新: あなたとボブの両方が手作業で合理的に完了できるアルゴリズムのボーナスポイント。 更新2: ボブは任意のメッセージを送信する必要はありませんが、イブがそれをデコードすることなく正しい電話番号を持っていることを確認するだけであることに注意してください。

2
Reynolds&Tymannによる成長の定義の順序
カール・レイノルズとポール・タイマンが書いた「プリンセス・オブ・コンピューター・サイエンス」(2008)という本を読んでいます(Schaum's Outlinesから出版)。 2番目の章では、名前のリストを単純に反復処理し、リスト内で特定の名前が見つかった場合にTRUEを返す順次検索の例を使用してアルゴリズムを紹介します。 著者は続けて言っています(17ページ): 順次検索アルゴリズムの「成長の順序」はnであると言います。この表記はT(n)です。また、成長の順序がT(n)の一定の因子内にあるアルゴリズムは、シータがNLであると言います。「シーケンシャル検索のシータはnです。」問題のサイズはn(検索されるリストの長さ)です。 これを理解するのは本当に難しいと思います。この本はエラーに満ちているので、何かが欠けているのか、上記の段落にタイプミスがあるのか​​はわかりません。一般的な英語では、「... say」で終わる文はめったにありません。 私は非常に混乱しています。 Tは何の略ですか?本は説明しません。時間ですか、シータですか? 「NLのシータ」が「シーケンシャル検索のシータがnである」ことを意味する場合 Lは何の略ですか?「線形」または「長さ」? 出版社に説明を求めて書いた。彼らは私のメッセージを著者に転送すると言った。彼らは答えていない。私は他のソースも調べてみましたが、それでも何かを誤解しているというしつこい感じがします。したがって、この段落を解読するまで休むことはできません。 誰かがその本のコピーを持っており、その段落を理解している場合。次に、その段落が正確かどうか、または他の言葉で説明してもらえれば幸いです。ありがとう。

7
最小スパニングツリーと最短パス
最小スパニングツリーアルゴリズムと最短パスアルゴリズムの違いは何ですか? 私のデータ構造クラスでは、2つの最小スパニングツリーアルゴリズム(PrimおよびKruskal)と1つの最短パスアルゴリズム(Dijkstra)を取り上げました。 最小スパニングツリーとは、すべての頂点にまたがるグラフ内のツリーであり、ツリーの総重量は最小です。最短経路は非常に明白であり、ある頂点から別の頂点への最短経路です。 私が理解していないのは、最小スパニングツリーの総重量が最小であるため、ツリー内のパスは最短パスではないということです。誰かが私に欠けていることを説明できますか? どんな助けも大歓迎です。

2
時間で並べ替えられていない配列の中央値を見つける
並べ替えられていない配列の中央値を見つけるには、n要素に対して時間で最小ヒープを作成し、中央値を取得するためにn / 2要素を1つずつ抽出します。ただし、このアプローチにはO (n log n )時間かかります。O (n ログn )O(nログ⁡n)O(n\log n)nnnn / 2n/2n/2O (n ログn )O(nログ⁡n)O(n \log n) 時間に何らかの方法で同じことを行うことはできますか?できるなら、どうやって?O (n )O(n)O(n)

3
トラバーサルが1つだけの無向ツリーの最長パス
2つの深さ優先検索を使用して、無向木で最長パスを見つけるためのこの標準アルゴリズムがあります。 ランダムな頂点からDFSを開始し、そこから最も遠い頂点を見つけます。それがv ′だと言う。vvvv′v′v' 次に、からDFSを開始して、最も遠い頂点を見つけます。このパスは、グラフ内で最も長いパスです。v′v′v' 問題は、これをより効率的に行えるかどうかです。単一のDFSまたはBFSでそれを行うことはできますか? (これは、無向木の直径を計算する問題と同等に説明できます。)


1
アルゴリズム、言語、問題の違いは何ですか?
このサイトでは、人々はしばしば「アルゴリズム」と「問題」を混乱させるために他の人を修正するようです。これらの違いは何ですか?アルゴリズムを検討し、問題を検討する時期を知るにはどうすればよいですか?そして、これらは形式言語理論における言語の概念とどのように関係していますか?

7
アルゴリズムの漸近的複雑性とアルゴリズム設計の実践との関連性の説明
アルゴリズムと複雑さでは、アルゴリズムの漸近的な複雑さ、つまり、入力のサイズが無限大になるときにアルゴリズムが使用するリソースの量に焦点を当てます。 実際には、必要なのは、有限の(場合によっては非常に多数の)インスタンスで高速に動作するアルゴリズムです。 関心のある有限数のインスタンスで実際にうまく機能するアルゴリズムは、優れた漸近的複雑さを持つ必要はありません(有限数のインスタンスでの良好なパフォーマンスは、漸近的複雑性に関して何も意味しません)。同様に、優れた漸近的複雑さを備えたアルゴリズムは、関心のある有限数のインスタンスでは実際にはうまく機能しない可能性があります(たとえば、大きな定数のため)。 なぜ漸近的な複雑さを使用するのですか?これらの漸近解析は、実際のアルゴリズムの設計にどのように関連していますか?

3
動的計画法の副問題の決定
私はダイナミックプログラミングの手法を複数回使用しましたが、今日、友人から副問題をどのように定義するかを尋ねられ、客観的な正式な回答を提供する方法がないことに気付きました。動的計画法を使用して解決する問題のサブ問題を正式に定義するにはどうすればよいですか?

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