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

9
O(n)時間で5つの繰り返し値を見つける方法は?
あなたはサイズの配列があるとのn ≥ 6n≥6n \geq 6から整数含むにちょうど5を繰り返して、包括的に。時間で繰り返される数を見つけることができるアルゴリズムを提案する必要があります。私の人生では何も考えられません。ソートは、せいぜい思いますか?配列を走査するとになり、ます。ただし、リンクリスト、キュー、スタックなどのトリッキーなものを見たので、並べ替えが必要かどうかはわかりません。111n−5n−5n − 5O(n)O(n)O(n)O(nlogn)O(nlogn)O(n\log n)O(n)O(n)O(n)O(n2logn)O(n2logn)O(n^2\log n)

1
検索と並べ替えアルゴリズムの基本操作の複雑さ[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 Wikiには優れたチートシートがありますが、これは含まれていません。比較またはスワップの。(ただし、通常、スワップ数はその複雑さを決定します)。そこで、以下を作成しました。次の情報は正しいですか?エラーがある場合はお知らせください。修正します。 挿入ソート: 平均ケース/最悪ケース: ; 入力がすでに降順でソートされている場合に発生しますΘ(n2)Θ(n2)\Theta(n^2) ベストケース: ; 入力がすでにソートされている場合Θ(n)Θ(n)\Theta(n) 比較の数:、最悪の場合&にΘ (N )最良の場合にΘ(n2)Θ(n2)\Theta(n^2)Θ(n)Θ(n)\Theta(n) スワップ数:最悪/平均ケース&Θ(n2)Θ(n2)\Theta(n^2)が最良の場合000 選択ソート: 平均ケース/最悪ケース/最良ケース:Θ(n2)Θ(n2)\Theta(n^2) 比較数:Θ(n2)Θ(n2)\Theta(n^2) スワップ数:最悪/平均ケース&0Θ(n)Θ(n)\Theta(n)000最良のケースの中で最もにおいて、アルゴリズムは、あなたが所定の位置に要素を入れ替えたら、あなたは再びそれに触れることはありません、Nスワップが必要です。 マージソート: 平均ケース/最悪ケース/最良ケース:。入力がソートされているかどうかはまったく関係ありませんΘ(nlgn)Θ(nlgn)\Theta(nlgn) 比較数:最悪の場合は&最良の場合はΘ (n )。サイズn&mの2つの配列をマージしていると仮定します。ここでn &lt;Θ(n+m)Θ(n+m)\Theta(n+m)Θ(n)Θ(n)\Theta(n)n&lt;mn&lt;mn<m スワップ数:スワップなし![ただし、インプレースソートではなく追加のメモリが必要] クイックソート: 最悪の場合:Θ(n2)Θ(n2)\Theta(n^2) ; 入力はすでにソートされています ベストケース: ; ピボットが配列をちょうど半分に分割するときΘ(nlogn)Θ(nlogn)\Theta(nlogn) 比較数:最悪の場合&Θ (n l o g nΘ(n2)Θ(n2)\Theta(n^2)最良の場合にΘ(nlogn)Θ(nlogn)\Theta(nlogn) スワップ数:最悪の場合&0Θ(n2)Θ(n2)\Theta(n^2)000、最良の場合は バブルソート: 最悪の場合:Θ(n2)Θ(n2)\Theta(n^2) ベストケース:Θ(n)Θ(n)\Theta(n) ; ソート済み 比較数:Θ(n2)Θ(n2)\Theta(n^2)最悪の場合と最良の場合の スワップ数:最悪の場合&0Θ(n2)Θ(n2)\Theta(n^2)000、最良の場合は 線形検索: 最悪の場合:Θ(n)Θ(n)\Theta(n) ; …

1
長方形の構築サイクル
固定長サイクルを構築する必要があります。これには、 x長方形の内側にコーナーが含まれます。nnnkkkwwwhhh 例: w=5h=3w=5h=3w = 5\\h=3 n=12k=6n=12k=6n = 12\\k = 6 少なくともコーナーが必要であり、コーナーの数と非コーナー要素の数は偶数である必要があることはすでにわかっています。444 次に、指数関数的な時間の複雑さで実行される再帰的アルゴリズムを記述しますが、この処理をはるかに高速に実行できるという強い思いがあります。 問題は、どの正方形がサイクルに確実に含まれるかわからないため、すべての可能性をカバーするために最初のフィールドでアルゴリズムを実行することですが、いくつかのブランチを複数回検索していることを認識しています。w2w2\frac w2 また、サイクルが存在する場合、サイクルが(0、0)のコーナーまたは(0、1)のコーナーで始まることも発見しました このことをスピードアップする方法について誰かがアイデアを持っていますか? ごきげんよう!

2
DAGにエッジを追加するとサイクルが発生するかどうかを確認する
初めに:これはプログラミングコンテストの問題ですが、進行中の問題ではありません。残念ながら、公開されていないため、このタスクへのリンクは提供できません。それは、2011年にワルシャワコンピュータサイエンススクールが主催したポーランドのローカルプログラミングコンテストの1つからのものでした。 エッジのない頂点のあるグラフと、有向エッジのリストがあります。上の番目の第番目のエッジグラフに追加されています。グラフに1秒後にサイクルが発生することを知りたい。VVV (1≤V≤5⋅105)(1≤V≤5⋅105)(1 \le V \le 5 \cdot 10^5)EEE (1≤E≤5⋅105)(1≤E≤5⋅105)(1 \le E \le 5 \cdot 10^5)iiiiii 最も明白な解決策は、各エッジを追加した後にDFSを実行することですが、時間かかります。別の解決策は、トポロジー的にソートされたグラフを維持し、エッジを追加するときに、トポロジーの順序を乱さないように配置することです。これには最大で時間かかります。私はGoogleでいくつかの調査を行いましたが、これが最速のオンラインアルゴリズムのようです。O((V+E)2)O((V+E)2)O((V + E)^2)O(V2)O(V2)O(V^2) 事前にすべてのエッジを知っているので、オフラインアルゴリズムを使用できます。私が考えることができる最速のオフラインアルゴリズムは、バイナリ検索です。番目の2番目以降のグラフにサイクルが含まれている場合、明らかに他の2番目のサイクルがあります。したがって、バイナリ検索を実行してDFS時間を実行することで最小のを見つけることができます。それぞれが時間を費やすため、このソリューションの全体の複雑さは。kkkl≥kl≥kl \ge kkkkO(logE)O(log⁡E)O(\log E)O(V+E)O(V+E)O(V + E)O((V+E)logE)O((V+E)log⁡E)O((V + E) \log E) かなり高速ですが、もっと高速なオフラインアルゴリズムはあるのでしょうか。私が考えることができる1つのことは、このエッジがグラフに追加された時間に等しい各エッジの重みを与えることです。次に、このタスクは、最小の最大エッジウェイトを持つサイクルを見つけることと同じです。それがどこにつながっているかはわかりません。

1
KMPプレフィックス関数と文字列照合オートマトンの間の接続
LET文字列照合オートマトンパターンのための、ありますAP=(Q,Σ,δ,0,{m})AP=(Q,Σ,δ,0,{m})A_P = (Q,\Sigma,\delta,0,\{m\})P∈ΣmP∈ΣmP \in \Sigma^m Q={0,1,…,m}Q={0,1,…,m}Q = \{0,1,\dots,m\} δ(q,a)=σP(P0,q⋅a)δ(q,a)=σP(P0,q⋅a)\delta(q,a) = \sigma_P(P_{0,q}\cdot a) for all and a \ in \ Sigmaq∈Qq∈Qq\in Qa∈Σa∈Σa\in \Sigma σP(w)σP(w)\sigma_P(w)の最長プレフィックスの長さPPPの接尾辞であるwwwであり、 σP(w)=max{k∈N0∣P0,k⊐w}σP(w)=max{k∈N0∣P0,k⊐w}\qquad \displaystyle \sigma_P(w) = \max \left\{k \in \mathbb{N}_0 \mid P_{0,k} \sqsupset w \right\}。 さて、聞かせて\パイプレフィックス機能からクヌース-モリス-プラット法であるが、ππ\pi πP(q)=max{k∣k&lt;q∧P0,k⊐P0,q}πP(q)=最高{k|k&lt;q∧P0、k⊐P0、q}\qquad \displaystyle \pi_P(q)= \max \{k \mid k < q \wedge P_{0,k} \sqsupset P_{0,q}\}。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.