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

行列の構築と変更に関する質問については、線形代数内で線形演算子を定義するために使用される2次元配列で表されるオブジェクト。

4
0-1行列ベクトル乗算の自動最適化
質問: 行列が密で、ゼロと1だけで満たされている場合、行列ベクトル乗算を効率的に適用するコードを生成するための手順または理論は確立されていますか?理想的には、最適化されたコードは、以前に計算された情報を体系的に使用して、重複する作業を減らします。 つまり、行列 あり、に基づいて事前計算を行い、後でベクトル受け取ったときにを可能な限り効率的に計算します。MMMMMMMvMvMvvvv MMMは「コンパイル時」に知られている長方形の密なバイナリマトリックスであり、は「実行時」にのみ知られている未知の実数ベクトルです。vvv 例1:(スライディングウィンドウ) 簡単な小さな例を使用して、私のポイントを説明します。、行列を考える この行列をベクトルに適用してを取得するとします。結果のエントリは、 M= ⎡⎣⎢⎢⎢11111111111111111111⎤⎦⎥⎥⎥。M=[11111111111111111111].M = \begin{bmatrix}1 & 1 & 1 & 1 & 1\\ & 1 & 1 & 1 & 1 & 1 \\ & & 1 & 1 & 1 & 1 & 1\\ & & & 1 & 1 & 1 …


3
逐次乗算よりも効率的な並列行列指数アルゴリズムはありますか?
実数の行列の累乗(正の整数)を見つけるために1つ必要です。効率的な行列乗算アルゴリズムはたくさんありますが(たとえば、一部の並列アルゴリズムはCannonのDNSです)、行列の能力を正確に見つけることを目的としたアルゴリズムであり、行列乗算の逐次実行よりも効率的ですか?特に並列アルゴリズムに興味があります。

2
最適な順序を見つける
私はこの問題に遭遇し、それに取り組む方法を見つけるのに苦労しています。どんな考えでも大歓迎です! たとえば、行列 -1、0、1が与えられているとします。{−1,0,1}n × k{−1,0,1}n × k\{-1, 0, 1\}^{n\ \times\ k} ⎡⎣⎢⎢⎢⎢⎢⎢1−10−11001−101010000010−11−11− 1⎤⎦⎥⎥⎥⎥⎥⎥[1010−1−100010110−1−1−10111000−1]\begin{bmatrix} 1 & 0 & 1 & 0 & -1 \\ -1 & 0 & 0 & 0 & 1 \\ 0 & 1 & 1 & 0 & -1 \\ -1 & -1 & 0 & 1 …

2
ブール行列の島を数える
ブール行列与えられた、0エントリは海を表し、1エントリは陸を表します。アイランドを垂直または水平に(ただし斜めではなく)隣接する1エントリとして定義します。X 0 1 1n×mn×mn \times mXX\mathrm X000111111 元の質問は、特定のマトリックス内の島の数を数えることでした。著者は再帰的な解決策(O(nm)O(nm)\mathcal{O}(nm)メモリ)について説明しました。 しかし、O(m)O(m)\mathcal{O}(m)またはO(n)O(n)\mathcal{O}(n)または\ mathcal {Oを使用してアイランドを動的にカウントするストリーミング(左から右、次に次の行まで)ソリューションを見つけることに失敗しました}(n + m)O(n+m)O(n+m)\mathcal{O}(n+m)メモリ(時間の複雑さに制限はありません)。それは可能ですか?そうでない場合、どうすればそれを証明できますか? count関数の特定の入力に対して期待される出力のいくつかの例: count⎛⎝⎜010111010⎞⎠⎟=1;count⎛⎝⎜101010101⎞⎠⎟=5;count⎛⎝⎜111101111⎞⎠⎟=1;count(010111010)=1;count(101010101)=5;count(111101111)=1; count\begin{pmatrix} 010\\ 111\\ 010\\ \end{pmatrix} = 1; % count\begin{pmatrix} 101\\ 010\\ 101\\ \end{pmatrix} = 5; % count\begin{pmatrix} 111\\ 101\\ 111\\ \end{pmatrix} = 1; count⎛⎝⎜⎜⎜1111100100010110100011011111⎞⎠⎟⎟⎟=2count(1111100100010110100011011111)=2 count\begin{pmatrix} 1111100\\ 1000101\\ 1010001\\ 1011111\\ \end{pmatrix} = 2 count(101111)=1count(101111)=1 count\begin{pmatrix} 101\\ …

2
2次元ピーク検出の複雑さ(MIT OCW 6.006)
43:30のMIT OCW 6.006の朗読ビデオで、 m列n行の行列Aが与えられた場合、2次元ピーク検出アルゴリズムは、ピークが隣接する隣接セル以上の任意の値である場合、次のように記述されます。m × nm×nm \times nあAAメートルmmんnn 注:を使用して列を説明する際に混乱がある場合は、申し訳ありませんが、これは、朗読ビデオがそれを説明する方法であり、ビデオと一貫性を保つように努めました。それは私をとても混乱させました。んnn 真ん中の列を選択 // 複雑さがありますΘ (1 )n / 2n/2n/2Θ (1 )Θ(1)\Theta(1) 列の最大値を見つける// 列にm行があるため、複雑度 Θ (m )があるn / 2n/2n/2Θ (m )Θ(m)\Theta(m)メートルmm 水平を確認してください。最大値の行の近傍、それがより大きい場合はピークが検出され、それ以外の場合は再帰します// 複雑さT (n / 2 、m )を持ちますT(n / 2 、m )T(n/2,m)T(n/2, m)T(n/2,m)T(n/2,m)T(n/2,m) 次に、再帰を評価するために、暗唱インストラクターは言います は、最大値を見つけるためT(1,m)=Θ(m)T(1,m)=Θ(m)T(1,m) = \Theta(m) T(n,m)=Θ(1)+Θ(m)+T(n/2,m)(E1)(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m) T(n,m) = \Theta(1) + \Theta(m) + …


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

1
XORを使用したバイナリベクトルのセットの最小基底
これが十分に研究された問題ではない場合は驚きますが、この時点で他に何を検索すればよいかわかりません。バイナリベクトルのセット。問題は、最小サイズのバイナリベクトル別のセットを見つけることです、すべてのベクトルは、の一部のサブセットのXOR結果で表現できる(したがって、は基本的に、の追加ではなくXORを使用し、線形結合でバイナリ係数のみを許可する基本です)。んnnS⊂{0,1}nS⊂{0,1}nS \subset \{0,1\}^nnnnB⊂{0,1}nB⊂{0,1}nB \subset \{0,1\}^n|B||B||B|SSSBBBBBBSSS ある意味で、これはバイナリベクトルのPCAの形式です。この問題に関する文献を検索しているときに、この博士論文で議論されている離散基底問題に出くわしました。これは密接に関連しているようです。XORの代わりにORを使用し、ここで追加の入力です(そして、タスクは、からのベクトルでを表す際のエラーを最小限に抑えることです)。この問題はNP困難です。同じことが上記の問題にも当てはまりますか、それとも効率的な解決策はありますか?既存の文献へのポインタがあれば大歓迎です。|B||B||B|SSSBBB

1
行列が1の1つの接続された領域で構成されるように、最小数1を見つける
ましょであるマトリックス。2つのエントリが水平または垂直に隣接していて、両方のエントリが1である場合、それらは隣接していると言います。追加する1の最小数を見つけたいので、すべての1は一連のネイバーを通じて別の1に到達できます。MMM(0,1)(0,1)(0, 1)111111111 例: 100 000 001 ここでは3 1が必要です111: 100 100 111 追加する111の最小数とその場所を効率的に見つけるにはどうすればよいですか?

1
行列乗算アルゴリズムの実行時間を分析するために使用される計算モデルはどれですか?
行列乗算アルゴリズム(Strassenのアルゴリズムなど)の漸近ランタイムについてはすでに学習しましたが、この複雑さを測定するために使用される計算モデルへの明示的で満足のいく参照は見つかりませんでした。実際、私は3つの可能な答えを見つけましたが、どちらも完全に満足できるものではないようです。 ウィキペディアによると、ここで使用されているモデルはマルチテープチューリングマシンです。マトリックス乗算の分析では、スカラー乗算は一定の時間複雑さを持つと想定されているため、これは私にはあまり意味がありません。これは、チューリングマシンには当てはまりません。 一部のテキストは、使用される算術演算の数として複雑さを漠然としか説明していません。しかし、この文脈での算術演算は正確には何ですか?その加算、乗算、そしておそらく減算だと思います。しかし、除算、整数除算、剰余などはどうですか?そして、ビット単位の操作についてはどうでしょうか-これらはどのようにこの設定に適合しますか? 最後に、最近、BSSマシンを計算モデルとして使用する記事を発見しました。しかし、これは私にとっても少し奇妙に思えます。たとえば、整数行列の場合、整数除算などの操作を禁止することはあまり意味がありません。 これらを整理するのを手伝ってくれるだれでもに感謝します。

1
片側誤差のある行列乗算の確率論的検定
3つの行列与えられた場合かどうかをテストします。算術演算および-が\ mathbb {Z}からの数値に適用される場合、一定の時間がかかると仮定します。A 、B 、C∈Zn × nA,B,C∈Zn×nA, B,C \in \mathbb{Z}^{n \times n}A B ≠ CAB≠CAB \neq C+++−−-ZZ\mathbb{Z} O (ん2)O(n2)O(n^2)時間で実行される片側エラーのあるアルゴリズムをどのように記述し、その正しさを証明できますか? 数時間試しましたが、うまくいきません。X ∈Zんx∈Znx \in \mathbb{Z}^nのベクトルの最大半分s \ in S = \ left \ {1、0 \ right \} ^ nS ∈ S={ 1 、0 }んs∈S={1,0}ns \in S = \left\{1, 0\right\}^n がx \ cdot sを満たすという事実を使用する必要があると思います= …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.