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

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

1
アルゴリズム設計におけるマトロイドとグリードイドはどのくらい基本的ですか?
当初、マトロイドは、いくつかのグラウンドセットIに対するサブセットコレクションの線形独立性の概念を一般化するために導入されました。この構造を含む特定の問題により、貪欲なアルゴリズムが最適なソリューションを見つけることができます。欲張り法によって最適な解決策を見つけることを可能にするより多くの問題を捕捉するために、この構造を一般化するために、後にグリードイドの概念が導入されました。EEEIII これらの構造は、アルゴリズム設計でどのくらいの頻度で発生しますか? さらに、多くの場合、貪欲なアルゴリズムでは最適なソリューションを見つけるために必要なものを完全にキャプチャすることはできませんが、それでも非常に優れた近似ソリューションを見つけることができます(たとえば、Bin Packing)。それを考えると、問題がグリードイドまたはマトロイドにどれだけ「近い」かを測定する方法はありますか?

5
Vertical Sticksチャレンジへのアプローチ方法
この質問は、コンピューターサイエンススタック交換で回答できるため、理論的なコンピューターサイエンススタック交換から移行されました。 7年前に移行され ました。 この問題はinterviewstreet.comから取られています セグメント端点がおよびようなラインセグメントを表す整数の配列が与えられます。各セグメントの上部から水平光線が左に発射され、この光線が別のセグメントに触れるかy軸に当たると停止すると想像してください。n個の整数配列を作成しここで、はセグメント最上部からの光線ショットの長さに等しくなります。を定義します。Y= { y1、。。。、yn}Y={y1,...,yn}Y=\{y_1,...,y_n\}nnn私ii(i 、0 )(i,0)(i, 0)(i 、y私)(i,yi)(i, y_i)v1、。。。、vnv1,...,vnv_1, ..., v_nv私viv_i私iiV(y1、。。。、yn)= v1+ 。。。+ vnV(y1,...,yn)=v1+...+vnV(y_1, ..., y_n) = v_1 + ... + v_n たとえば、Y= [ 3 、2 、5 、3 、3 、4 、1 、2 ]Y=[3,2,5,3,3,4,1,2]Y=[3,2,5,3,3,4,1,2]場合、[ v1、。。。、v8]=[1,1,3,1,1,3,1,2][v1,...,v8]=[1,1,3,1,1,3,1,2][v_1, ..., v_8] = [1,1,3,1,1,3,1,2]、次の図に示すように: 各順列、を計算できます。我々は一様にランダム順列を選択した場合の、の期待値は何である?[ 1 、。。。、N ] V (Y P 1、。。。、Y 、PのN)ppp[1,...,n][1,...,n][1,...,n]V(yp1,...,ypn)V(yp1,...,ypn)V(y_{p_1}, …

1
この頂点サイクルカバー問題に効率的なアルゴリズムはありますか?
この質問は、Computer Science Stack Exchangeで回答できるため、Mathematics Stack Exchangeから移行されました。 3年前に移行され ました。 私は、有向グラフ最大頂点サイクルカバーを見つけるためのアルゴリズムを見つけようとしてきました。つまり、可能な限り多くのサイクルを持つすべての頂点を含む、互いに素なサイクルのセットです。ここでは個々の頂点が循環します)。最小の頂点サイクルカバーを見つける問題と、正確にサイクルの頂点サイクルカバーを見つける問題は、NP完全であることを知っています。しかし、最大のケースはどうですか?G kGGGGGGkkk 私はこの一般的な興味深い答えを見つけますが、私がこれを使用したいグラフは実際にはその構造によってかなり制約されています。 整数のリスト、要素あり、、要素を使用して、ソート後にを参照します。例として:L I S S I LLLLl私lil_iSSSs私sis_iLLL L = (1 、3 、2 、5 、0 、7 、4 、2 、6 、0 、8 、1 )S= (0 、0 、1 、1 、2 、2 、3 、4 、5 、6 、7 、8 )L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8) L = (1, 3, 2, …

3
基数ソート
基数ソートでは、最初に最下位桁でソートし、次に2番目に下位桁でソートします。その後、ソート済みリストになります。 数字のリストがある場合、これらの数字を区別するためにビットが必要です。したがって、作成する基数ソートパスの数はなり。各パスは時間かかるため、基数ソートの実行時間はnnnログnlog⁡n\log nログnlog⁡n\log nO (n )O(n)O(n)O (n ログn )O(nlog⁡n)O(n \log n) しかし、線形時間アルゴリズムであることはよく知られています。どうして?

7
2つの配列が異なる1つの要素。効率的に見つける方法は?
私はコーディング面接の準備をしていますが、この問題を解決する最も効率的な方法を実際に見つけることはできません。 ソートされていない数値で構成される2つの配列があるとします。配列2には、配列1にはない数値が含まれています。両方の配列はランダムに配置された番号を持ち、必ずしも同じ順序または同じインデックスではありません。例えば: 配列1 [78,11、143、84、77、1、26、35 .... n] 配列2 [11,84、35、25、77、78、26、143 ... 21 ... n + 1] 異なる数を見つけるための最速のアルゴリズムは何ですか?その実行時間は何ですか?この例では、探している数字は21です。 私のアイデアは、配列1を実行し、配列2からその値を削除することでした。完了するまで繰り返します。これは、実行時間に近いはずです。O (n ログn )O(nlog⁡n)O(n \log n)

4
5つの要素をソート(順序)するために必要な比較の最小数
5つの要素を並べ替える(順序付ける)ために必要な比較の最小数を見つけ、この比較数を使用してこれらの要素を並べ替えるアルゴリズムを考案します。 解決策: 5つあります!= 120の可能な結果。したがって、ソート手順のバイナリツリーには少なくとも7つのレベルがあります。実際、 ≥120が示す時間 ≥7でも7の比較は十分ではありません。5つの要素を並べ替える(並べ替える)ために必要な比較の最小数は8です。2h2h2^hhhh 私の実際の質問は次のとおりです。8つの比較でそれを行うアルゴリズムを見つけましたが、7つの比較でそれができないことをどのように証明できますか?

4
すべての特定の望ましいプロパティを持つソートアルゴリズムはありませんか?
上のソートアルゴリズムのウェブサイトは、以下の請求が行われます。 理想的なソートアルゴリズムには、次のプロパティがあります。 安定:等しいキーは並べ替えられません。 所定の位置で動作し、追加スペースが必要です。O(1)O(1)O(1) 最悪の場合のキーの比較。O(n⋅lg(n))O(n⋅lg⁡(n))O(n\cdot\lg(n)) 最悪のスワップ。O(n)O(n)O(n) アダプティブ:データがほぼソートされている場合、または一意のキーがほとんどない場合、まで高速化されます。O(n)O(n)O(n) これらのプロパティをすべて備えたアルゴリズムはないため、ソートアルゴリズムの選択はアプリケーションによって異なります。 私の質問は、それは本当ですか これらのすべてのプロパティを持つ[ソート]アルゴリズムはありません もしそうなら、なぜですか?これらすべてが同時に満たすことを不可能にするこれらの特性についてはどうですか?

3
体積を与えて表面積を最小化するアルゴリズム
次のアルゴリズムタスクを検討してください。 入力:正の整数nnnとその素因数分解 Find:制限に従って、を最小化する正の整数x y + y z + x z x y z = nx,y,zx,y,zx,y,zxy+yz+xzxy+yz+xzxy+yz+xzxyz=nxyz=nxyz=n この問題の複雑さは何ですか?多項式時間アルゴリズムはありますか?NPハードですか? この問題は基本的に、体積がで寸法がすべて整数であるすべての直方体のうち、表面積が最小のものを求めます。nnn この問題は、Dan Meyerによって、「1,000人の数学教師が解決できない数学問題」というタイトルで提起されました。これまでのところ、彼が働いていた数学教師の誰も、この問題に対する合理的なアルゴリズムを見つけていません。彼の文脈では、「合理的」の定義は少し不正確ですが、コンピューター科学者として、この問題の複雑さについてより正確な質問をすることができます。 明らかなアプローチは、すべての可能性を列挙することですが、これには指数関数的な時間がかかります。Dan Meyerのブログのコメンターは、残念ながらすべてが間違っていることが判明した多くの効率的な候補アルゴリズムを提案しています。マーティン・ストラウスは、この問題が3パーティションを漠然と連想させるように思われると示唆していますが、それを減らすことはできません。x,y,zx,y,zx,y,z また、コメント/回答で私が見たいくつかの誤解を解消させてください。 2つの問題の目的関数が異なるため、各数値をそのべき乗に置き換えるだけでは、3分割から減らすことはできません。明らかな削減は単に機能しません。2 qqqq2q2q2^q 最適解のいずれピッキング含むことは真実ではない最も近い除数であるとに。私はこれが事実であると仮定している複数の人々を見ますが、実際、それは正しくありません。これは、Dan Meyerのブログ投稿で既に反証されています。たとえば、n = 68を検討します。\ sqrt [3] {68} \ approx 4、および4は68を除算するため、x、y、zの少なくとも1つは4であると考えるかもしれません。ただし、それは正しくありません。最適なソリューションはx = 2、y = 2、z = 17です。別の反例はn = 222、\ sqrt [3] {222} \ approx 6ですが、最適なソリューションはnは3 √x,y,zx,y,zx,y,znnn N=683 …

3
(数学)問題をSATインスタンスに変換する
私がやりたいのは、数学の問題をブール充足可能性問題(SAT)に変え、SATソルバーを使用してそれを解くことです。誰かが私の問題をSATインスタンスに変換するのに役立つマニュアル、ガイド、または何かを知っているのだろうか。 また、指数関数的な時間よりも良い方法でこれを解決したいです。SAT Solverが役立つことを願っています。

2
分割統治の理論的基礎
アルゴリズムの設計に関しては、多くの場合、次の手法を使用します。 動的プログラミング 貪欲戦略 分割統治 最初の2つの方法については、よく知られた理論的基礎、つまりベルマン最適性原理とマトロイド(またはグレドイド)理論がありますが、D&Cに基づくアルゴリズムのこのような一般的なフレームワークは見つかりませんでした。 まず、コンビネータのコンテキストで発生した「アルゴリズムスケルトン」と呼ばれる関数型プログラミングクラスで私たち(またはむしろ教授)が導入したことを認識しています。この例として、D&Cアルゴリズムのスケルトンを次のように指定しました。 定義:A,SA,SA,S空でないセットとします。SSS ソリューションの要素と呼び、の要素:= P(A )P:=P(A)P:=P(A)P:=\mathfrak{P}(A)(つまり、のサブセットAAA)は問題と呼ばれます。次いで、D&C-骨格は 4タプルである(Pβ,β,D,C)(Pβ,β,D,C)(P_\beta, \beta, \mathcal{D}, \mathcal{C})ここで、: PβPβP_\beta問題の集合以上の述語であり、我々は問題のことを言うpppされ、基本的なIFFPβ(p)Pβ(p)P_\beta(p)成り立ちます。 、Aマッピングである P β → Sの各基本的な問題に対する解決策を割り当てます。ββ\betaPβ→SPβ→SP_\beta \rightarrow S は、各問題を一連の副問題に分割するマッピング P → P(P )です。DD\mathcal{D}P→P(P)P→P(P)P \rightarrow \mathfrak{P}(P) は P × P(S )→ Sのマッピングであり、サブ問題の解(「ピボット問題」の種類に応じて)を結合して解を生成します。CC\mathcal{C}P×P(S)→SP×P(S)→SP\times \mathfrak{P}(S) \rightarrow S 次いで、に対して与えられたスケルトンおよび問題Pは、次の汎用関数F S:P → Sは、のために(形式的な意味での)解を計算P。s=(Pβ,β,D,C)s=(Pβ,β,D,C)s=(P_\beta, \beta, \mathcal{D}, \mathcal{C})pppfs:P→ Sfs:P→Sf_s: P\rightarrow Sppp fs(p )= …

1
グラフにエッジを追加すると、最短距離はいくつ変化しますか?
してみましょう、いくつかの完全な、加重、無向グラフとします。からエッジを1つずつ追加して、2番目のグラフを作成します。合計でエッジをに追加します。G ′ = (V 、E ′)E E ′ Θ (| V |)G ′G=(V,E)G=(V,E)G=(V,E)G′=(V,E′)G′=(V,E′)G'=(V, E')EEEE′E′E'Θ(|V|)Θ(|V|)\Theta(|V|)G′G′G' 我々は一つのエッジを追加するたびにに、我々はすべてのペア間の最短距離を考える及び。を追加した結果、これらの最短距離がいくつ変化したかを数えます。してみましょう最短距離の数も変化することを、私たちは追加したときに番目のエッジを、とlet、我々は、合計で追加エッジの数をすること。E ′(V 、E ′)(V 、E ′ ∪ { (u 、v )} )(u 、v )C i i n(u,v)(u,v)(u,v)E′E′E'(V,E′)(V,E′)(V, E')(V,E′∪{(u,v)})(V,E′∪{(u,v)})(V, E' \cup \{ (u,v) \})(u,v)(u,v)(u,v)CiCiC_iiiinnn 大きさは?C=∑iCinC=∑iCinC = \frac{\sum_i C_i}{n} 、も同様。この限界は改善できますか?は追加されたすべてのエッジの平均であると定義しているため、であることが証明されていますが、多くの距離が変化する単一のラウンドはそれほど興味深いものではありません。C = O (n 2)C C = Ω (n …

4
ランダムコンパレータを受け入れるソートアルゴリズム
一般的な並べ替えアルゴリズムは、通常、並べ替えるデータのセットと、2つの個別の要素を比較できる比較関数を受け取ります。コンパレータが順序関係¹の場合、アルゴリズムの出力はソートされたリスト/配列です。 私は、どのソートアルゴリズムが実際には順序関係ではないコンパレーター(特に、各比較でランダムな結果を返すもの)で動作するのか疑問に思っています。「作業」とは、ここでは、入力の順列を返し続け、常に最悪のシナリオに低下したり、無限ループに入ったり、要素が欠落したりするのではなく、通常引用された時間の複雑さで実行されることを意味します。ただし、結果の順序は定義されていません。さらに良いことに、コンパレータがコインフリップの場合、結果の順序は均一な分布になります。 私の大まかな精神的な計算から、マージソートはこれで問題なく、同じ実行時コストを維持し、公平なランダムな順序を生成するように見えます。しかし、クイックソートのようなものは退化する可能性があり、おそらく終了せず、公平ではないと思います。 ランダムコンパレータで説明されているように、他のどのソートアルゴリズム(マージソート以外)が機能しますか? 参考のために、コンパレータは、適切な関数(決定論的)であり、順序関係の公理を満たす場合、順序関係になります。 それは決定論的です。compare(a,b)特定の場合a、b常に同じ結果を返します。 推移的です: compare(a,b) and compare(b,c) implies compare( a,c ) それは反対称です compare(a,b) and compare(b,a) implies a == b (すべての入力要素が別個であると想定しているため、反射性は問題ではありません。) ランダムコンパレータは、これらのすべてのルールに違反します。ただし、順序関係ではないコンパレータはまだランダムではありません(たとえば、おそらく1つのルールに違反している可能性があり、セット内の特定の要素のみに違反している可能性があります)。

8
すべてのデータ型は、ポインターを持つノードに要約されますか?
配列またはベクトルは単なる値のシーケンスです。リンクリストを使用して確実に実装できます。これは、次のノードへのポインタを持つ単なるノードの集まりです。 スタックとキューは、Intro CSコースで一般的に教えられる2つの抽象的なデータタイプです。クラスのどこかで、学生はリンクされたリストを基礎となるデータ構造として使用してスタックとキューを実装する必要があります。つまり、同じ「ノードのコレクション」の考え方に戻ります。 優先キューは、ヒープを使用して作成できます。ヒープは、ルートに最小値を持つツリーと考えることができます。BST、AVL、ヒープを含むあらゆる種類のツリーは、エッジで接続されたノードのコレクションと考えることができます。これらのノードは、1つのノードが別のノードを指すようにリンクされています。 すべてのデータ概念は、他の適切なノードへのポインターを持つノードのみに常に要約できるようです。そうですか?これが単純な場合、教科書は、データが単なるポインターを持つノードの集まりであると説明していないのはなぜですか?ノードからバイナリコードへの移行方法

3
私たちはそれが何であるかを知りませんが、存在する可能性のあるアルゴリズムはありますか?
数学では、非構成的な存在証明がたくさんあります。そのため、特定のオブジェクトが存在することはわかっていますが、それを見つける方法はわかりません。 コンピューターサイエンスでも同様の結果を探しています。特に、アルゴリズムを表示せずに決定可能であることを証明できる問題はありますか?つまり、アルゴリズムで解決できることはわかっていますが、アルゴリズムがどのように見えるのかわかりませんか?


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