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

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

2
最も孤立したポイントを効率的に計算する方法は?
有限集合を考えるとの点のRの D、どのように我々は、効率的に「最も孤立点」を計算することができますのx ∈ Sを?SSSRdRd\mathbb R^dx∈Sx∈Sx\in S 「最も孤立したポイント」をxxx x=argmaxp∈Sminq∈S∖{p}d(p,q)x=arg⁡maxp∈Sminq∈S∖{p}d(p,q)x = \arg\max_{p \in S} \min_{q \in S \setminus \{p\}} d(p,q) (必ずしも一意であるわけではありませんが、表記を使用しました。ここで、はユークリッド距離を示します。)つまり、最も近い近傍までの距離が最大のポイントを探しています。x=argminx=arg⁡minx=\arg\minddd 単純なアルゴリズムは、すべてのペアワイズ距離を計算し、すべてのポイントの距離が最小のネイバーを見つけ、それらの最大値を見つけます。これは演算を必要としますが、それよりもうまくできるでしょうか?O(n2)O(n2)O(n^2)


3
線形方程式系を解くための最速の方法
私は、10000までの未知数を含む最大10000の方程式のシステムをできるだけ速く(できれば数秒以内に)解かなければなりません。ガウスの消去はそのためには遅すぎることを知っているので、どのアルゴリズムがこのタスクに適していますか? すべての係数と定数は、pを法とする非負の整数です(pは素数)。ソリューションは1つだけであることが保証されています。pを法とする解が必要です。

2
一対の製品のGCD
私には2つの数値があり、それぞれが私が知っている多数の小さい数値の積です。これら2つの数値のGCD(最大公約数)を見つけたい。プロセスを高速化するために必要な部分分解を利用する方法はありますか? 特に、大きい数値はそれぞれ小さい数値の積であり、それぞれの数値は2 ^ {4000}のオーダーです。小さい数の因数分解については何も知りません。2152152^{15}24000240002^{4000} 編集:入力数は約120,000,000ビットですが、GCDは約500,000ビットです。数字の要素は特に順番に並んでいます。それらはすべて連続した範囲の整数です。 私が見たすべてのGCDアルゴリズムは、部分的に因数分解された形式などではなく、直接数値を使用します。この情報を組み込んでスピードアップできるアルゴリズムはありますか?

4
確定的SATソルバー
次の質問があります。SATソルバーは確定的ですか? たとえば、miniSATアルゴリズムとDPLLアルゴリズムについてです。それらは完全に確定的ですか? これらのアルゴリズムがunSATを返す場合、それは確かにソリューションが存在しないことを意味しますか?

1
多項式時間の制約の影響を受けるセットおよびディスジョイントパーティションのカーディナリティを最小化するにはどうすればよいですか?
私が直面している本当の問題は次のとおりです。 インスタンス:私はすべてのととと行列セットを持っています。K := { 1 、... 、K } I 、J > 0 I ∈ K J ∈ NN:={1,…,n}N:={1,…,n}N:=\{1,\ldots,n\}K:={1,…,k}K:={1,…,k}K:=\{1,\ldots,k\}aij>0aij>0a_{ij}>0i∈Ki∈Ki\in Kj∈Nj∈Nj\in N 質問:のサブセットをできるだけ小さくして、セットを分割する必要があります集合は、すべてのに対して、すべてに対してように、和集合が等しいを設定しますi \ in K_j。SSSNNNKKK|S||S||S|KjKjK_jKKKj∈Sj∈Sj\in SI∈KJ∑j′∈Sj′≠jaij′⩽aij−1,∑j′∈Sj′≠jaij′⩽aij−1,\sum_{j'\in S\\j'\neq j} a_{ij'} \leqslant a_{ij}-1,i∈Kji∈Kji\in K_j 例: n=k=3n=k=3n=k=3および行列 \ begin {bmatrix} 0.6&2.7&1.2 \\ 1.3&2.6&0.8 \\ 1.5&0.4&0.6 \ end {bmatrix}が与えられ⎡⎣⎢0.61.31.52.72.60.41.20.80.6⎤⎦⎥.[0.62.71.21.32.60.81.50.40.6]. \begin{bmatrix} 0.6 & 2.7 & 1.2\\ …

7
教師として:適切なプログラミング言語の選択
この質問に適切な場所かどうかはわかりません。少し話題から外れている場合は申し訳ありません。 最初のプログラミングコースに適した言語を選択することは、関連するすべての教師/講師が心に留めておくべき最も重要なことの1つです。特に、学生が若い場合や数学の知識が限られている場合に役立ちます。 私は現在、数学について中程度の知識を持つ非常に熱心な若者(約16〜17歳)のグループを教えています。彼らは今高校の10年生のクラスに通っています。次期のプログラミング言語を教え始めます。 彼らは、並外れたレベルの創造性と勤勉さを備えた、市内の厳選された学生のグループです。したがって、実際のプログラミング言語での作業は、彼らにとって難しい作業ではないでしょう。そのため、Turtle Art、Scratch、Tynkerなどの単純なグラフィカルおよびドラッグアンドドロップソリューションを選択することは、オプションとは見なされません。 選択する前に確認する必要があるいくつかの要因があります。 シンプルさ:それらのほとんどは、おそらく実際のコーディングアクションをこれまで経験したことがありません。 単純さ、繰り返します。主要なアイデアの1つは、アルゴリズムの考え方を教えることです。洗練された、またはほとんど構文化されていない言語があると、それらは道から外れます。 一般性:言語は、特別な開発ケース向けに設計されていない方がよい。PHPとMATLABを、Web開発と計算/モデリング用にそれぞれ設計された例として取り上げます。 最小限の目的のもの:強制的なオブジェクト指向プログラミング(Javaなど)はありません。または、少なくともOOの概念への依存度は最小限です。 プラットフォーム:ほとんどすべてがWindows上にあるため、Windowsをサポートされる開発環境として持つことが重要です。 セットアップが簡単:開発環境をセットアップする簡単な方法を用意することをお勧めします。 業界の好み:深刻な問題ではありません。ただし、少なくとも現在アクティブな言語で、学生がほぼ実際の開発者エクスペリエンスに到達できるようにする必要があります。 ハードウェアの移植性:言語がハードウェアプログラミングで使用できるほど柔軟であることは重要です(必須ではありません)。(私はVerilogやVHDLのようなハードウェア記述言語については話していません。)その目的は、AVRマイクロプロセッサーやRaspberry Pi GPIOインターフェースのようなより単純なプロセッサーベースのハードウェアのプログラミングです。 知りたい 他に欠けている要素はありますか? また、選択肢としてどの言語を提案しますか?

1
K平均法クラスタリング変換不変条件は何ですか?
データポイントのセットX={x1,x2,…,xm}X={x1,x2,…,xm}X = \{x_1, x_2, \ldots, x_m\}が与えられた場合、で K平均を実行し、クラスター。 X C 1、C 2、... 、CのKxi∈Rdxi∈Rdx_i \in \mathbb{R}^dXXXc1,c2,…,ckc1,c2,…,ckc_1, c_2, \ldots, c_k ここで、新しいデータセットを作成するとY={y1,y2,…,ym}Y={y1,y2,…,ym}Y = \{y_1, y_2, \ldots, y_m\}、およびあり、 K平均を実行してクラスターを取得します。。Y I ∈ R D Y G 1、G 2、··· G Kyi=Axi+byi=Axi+by_i = Ax_i + byi∈Rdyi∈Rdy_i \in \mathbb{R}^dYYYg1,g2,…gkg1,g2,…gkg_1, g_2, \ldots g_k AAAとbのどの条件下でbbb、同じクラスターを取得することが保証されますか? K平均がユークリッド距離を使用しており、両方のアルゴリズムで同じ初期条件を持っていると仮定します。つまり、Xの初期中心が場合、Yの初期中心はここで、です。 g 0 1、… 、g 0 …

1
線形時間での圧縮/エンコードについて
私はNJ Larsson、A. Moffat:Offline Dictionary-Based Compressionの論文を読んでいます。これは、私が正しく理解していれば、バイトペアエンコーディングに非常に似ている圧縮アルゴリズムについて説明しています。 長さnの文字列が与えられた場合、この圧縮方法を使用して線形O(n )時間で圧縮する方法を理解しようとしています。これはどのように正確に行われますか?私はこの論文を読みましたが、どのようにして線形時間を達成するのかまだ理解していません。そのため、別の方法で説明されているのかもしれません。SSSnnnO(n)O(n)\mathcal O (n) 私の最初の混乱は、アルゴリズムの最初のステップで発生します。たとえばabcababcabc、最も一般的なペアabが新しいシンボルに置き換えられる場合などXcXXcXcです。最も一般的なペアをすばやく見つける方法がわかりません。私の素朴なアプローチは、最初のペアabを最初に見て、bc発生数を数え、次に次のペアを見て、発生数を数えるなどです。しかし、これは、最も多くを見つけるためだけにすでに与えます。共通のペア1回。O(n2)O(n2)\mathcal O (n^2) 次に、時間で最も一般的なペアを見つける方法を理解したとしても。私の次の問題は、O(n )回までの最も一般的なペアを見つける必要がないかということです。したがって、これはO(n 2)の合計時間を与えますか?O(n)O(n)\mathcal O(n)O(n)O(n)\mathcal O(n)O(n2)O(n2)\mathcal O(n^2)

1
から
定義。グラフと2つの頂点sおよびtが与えられた場合、k -shortest-paths問題は、G のsとtの間のk最短単純パスを見つけることです。G = (V、E)G=(V,E)G=(V,E)ssstttkkkkkkssstttGGG これらのパスの長さは必ずしも同じである必要はなく、頂点とtは必ずk接続されていることに注意してください。この問題に対して線形時間(nおよびmの観点から)アルゴリズムがあるかどうか疑問に思っていました。ssstttkkkんnnメートルmm 「円のランキングループレスパスアルゴリズムの新しい実装」など、私は文献でいくつかの論文を見てきましたが、時間の複雑さは本当に高いです。また、Epsteinによる他の論文「K最短パスを見つける」では、実行時間O (n + m + k )の単純なパスではないk最短パスを見つけるアルゴリズムを示しています。O (Kn (m + n l o gn ))O(Kn(m+nlogn))O(Kn(m+nlogn))kkkO (n + m + k )O(n+m+k)O(n+m+k) -simple-shortest-paths問題の線形時間アルゴリズムはありますか?kkk

2
平面制約問題を解くためのアルゴリズム(「Pokemon Goモンスターの発見」)
[注:この問題はPokemon Goに触発されました。最初に問題を数学的な用語で説明し、次にポケモンゴーとの関連を説明します。私の目標は、ゲームでごまかすことではありません。私がカンニングしたいのであれば、より良い情報をより簡単に入手できます。] あると仮定NNN点(「未知点」)が平面で、それらを呼び出すn1,…,nNn1,…,nNn_1,\dots,n_N、未知の座標。さらに、既知の場所で測定が行われています。m 1、… 、m MMMMm1,…,mMm1,…,mMm_1,\dots,m_M ましょう測定点から(一般に未知)のユークリッド距離で未知点に。m i n jdist(mi,nj)dist(mi,nj)\text{dist}(m_i, n_j)mimim_injnjn_j 各測定について、次の情報があります。mimim_i 各未知点の正確な座標ためいくつかの既知の定数のためのD 分。そして dist (m i、n j)&lt; d minnjnjn_jdist(mi,nj)&lt;dmindist(mi,nj)&lt;dmin\text{dist}(m_i, n_j)d_\text{min}dist(mi,nj)dist(mi,nj)\text{dist}(m_i, n_j) 未知の点、または与えられた未知の点が可能な平面の領域を計算するための効率的なアルゴリズムはありますか?アルゴリズムには、測定点の座標(X i、Y i)、上記の測定情報、および未知の点の数Nが与えられます。目標は、未知の各ポイントn 1、… 、n Nの可能な場所の領域をできるだけ絞り込むことです。njnjn_j(Xi,Yi)(Xi,Yi)(X_i,Y_i)NNNn1,…,nNn1,…,nNn_1,\dots,n_N ポケモン接続: 拡張現実ゲーム、ポケモンゴーの目標は、自然の中でポケモンを見つけることです。時々、ゲームはポケモンをプレーヤーの位置の「可視範囲」()で表示します。さらに、近くにある(d i s t &lt; d m a x)ポケモンのリストを距離でソートして表示する「ポケモンファインダー」があります。(おおよその距離を1、2、または3つの足跡として表示することも想定されていますが、明らかにバグがあり、常に3つの足跡が表示されます。)dmindmind_{min}dist&lt;dmaxdist&lt;dmaxdist<d_{max}

1
MP3エンコーダーが心理音響モデルを適用する前に高速フーリエ変換を使用するのはなぜですか?
Karlheinz Brandenburgは、次のようなMP3エンコーダーを示しています。 出典:MP3およびAACの説明 FFTを実行する必要がある理由がよくわからないので、FFTにマークを付けました。FFTを実行せずに修正離散コサイン変換(MDCT)を実行した後、心理音響モデルをいわゆるラインに適用できないのはなぜですか? 周波数分解能が十分に正確ではないと言って、ここにいくつかの文献があります。これは、元の信号を(フィルターバンクやMDCTのように)576ラインに分割することは、心理音響モデルが適切に機能するのに十分正確ではないことを意味しますか?FFTはより正確ですか?

3
割り切れないペアごとの最大サブセット
数値のセットがあり、その要素の任意の2つの要素の合計が整数割り切れないように最大サブセットを計算したいと考えています。この問題を解決しようとしましたが、効率的な応答ではない2次の解を見つけました。。ここで、は要素の数、は定数です。二次解より良いですか?K &lt; 100 、N &lt; 10000 N KKKK K&lt;100,N&lt;10000K&lt;100,N&lt;10000K < 100, N < 10000NNNKKK

3
SKIコンビネーター計算(またはラムダ計算)の目的は何ですか?その使用の実際の例は何ですか?
私はそれが何であるかを理解していますが、それがアルゴリズムまたは何かのためにどのように使用されるかはわかりません。多分私は何かが足りない。私はそれをよりよく理解できるように、それがどのように使用されるかの例を私に与えるために誰かを必要としています。

1
プレフィックスパリティ問題のアルゴリズム
プレフィックスパリティの問題は、次のように定義できます。長さ文字列が与えられ、最初はすべての文字がです。次に、次のような更新をサポートできるデータ構造を構築します。n 0SSSんnn000 特定のについて、をまたは変更しますS [ i ] 0 1私iiS[ 私]S[i]S[i]000111 与えられたに対して、のパリティを見つけます。S [ 1 ] + S [ 2 ] + 。。。+ S [ i ]私iiS[ 1 ] + S[ 2 ] + 。。。+ S[ 私]S[1]+S[2]+...+S[i]S[1]+S[2]+...+S[i] 私の頭の上から、データ構造を構築するために線形空間と線形前処理時間のみを使用しながら、時間でこれらのタイプのクエリをサポートできるソリューションがあり。葉が個々の文字に対応する文字列の上に完全なバイナリ検索ツリーを構築し、すべての内部ノードに、そのノードで定義されたサブツリーで葉であるすべての文字の合計を格納するという考え方です。このようにして、両方の更新を時間で簡単にサポートできます。S O (log n )O (ログn )O(log⁡n)O(\log n)SSSO (ログn )O(log⁡n)O(\log n) しかし、私はこの問題の下限を証明する論文を見つけました。更新についてはよりも優れているとは言えず、次の論文も見つけましたhttp://link.springer.com/chapter/10.1007%2F3-540-51542-9_5、およびpdfへの直接リンク。その範囲を達成するアルゴリズムを提供するため、最適です。O (ログんログログん)O(log⁡nlog⁡log⁡n)O(\frac{\log n}{\log \log n}) …

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