タグ付けされた質問 「check-my-algorithm」

2
関係構成を計算する
定義:を自己ループのないDAGとし、およびをグラフとします。G=(V,E)G=(V,E)G=(V,E)X⊆GX⊆GX \subseteq GY⊆GY⊆GY \subseteq G 入力:。出力:リレーショナル構成リレーショナル構成 in。X,YX,YX,Y X∘YX∘YX \circ YO( | E| | V| )O(|E||V|)\mathcal{O}(|E||V|) ケース1:。およびに対する2つのforループ:ランタイム。|E|≤|V||E|≤|V||E| \le |V|E(X)E(X)E(X)E(Y)E(Y)E(Y)≤O(|E|2)≤O(|E||V|)≤O(|E|2)≤O(|E||V|) \le \mathcal{O}(|E|^2) \le \mathcal{O}(|E||V|) ケース2:|V|≤|E||V|≤|E||V| \le |E| グラフを描く:(。エッジをから黒、赤と呼びます。(V(G),E(X)∪E(Y))(V(G),E(X)∪E(Y))(V(G),E(X) \cup E(Y))(O(|V|)+O(|2E|)))(O(|V|)+O(|2E|)))(O(|V|)+\mathcal{O}(|2E|)))E(X)E(X)E(X)E(Y)E(Y)E(Y) トポロジカルにソートします(Kahn:)。最初のレベルをにすると、エッジはレベルから高いレベルに移動します。O(|V|)+O(|E|)O(|V|)+O(|E|)\mathcal{O}(|V|) + \mathcal{O}(|E|)000 このグラフを2回描画します。 最初のコピーで、偶数レベルで始まるすべての赤いエッジと奇数レベルで始まるすべての黒いエッジを削除します:。O(E)O(E)\mathcal{O}(E) 2番目のコピーでは、「黒の偶数」と「赤の奇数」をすべて削除します:。O(E)O(E)\mathcal{O}(E) 最初のコピーの場合: レベルすべてのノードuuu2i2i2i レベルすべてのノードvvv2i+12i+12i+1 レポートエッジ(実行時)。(u,v)(u,v)(u,v)O(V2)≤O(EV)O(V2)≤O(EV)\mathcal{O}(V^2) \le \mathcal{O}(EV) 2番目のコピーの場合: " " についても同じです。2i+12i+12i+1 報告されたノードを結合し、重複する を破棄します(グラフ表現でこれが可能であることを願っています)。O(V2)&lt;=O(EV)O(V2)&lt;=O(EV)\mathcal{O}(V^2) <= \mathcal{O}(EV) いくつかの人が私のアルゴリズムを調べて、 合ってます …

2
行列乗算プログラムの入れ子ループの不変式
Hoareロジックを使用して2つの行列を乗算するためのプログラムの正確性を証明することについて、卒業論文を作成しています。これを行うには、このプログラムの入れ子ループの不変式を生成する必要があります。 for i = 1:n for j = 1:n for k = 1:n C(i,j) = A(i,k)*B(k,j) + C(i,j); end end end 私は最初に内部ループの不変式を見つけようとしましたが、今までは本当のものを見つけることができません。上記のプログラムの不変式を見つけるのを手伝ってくれる人はいますか?
7 algorithms  loop-invariants  correctness-proof  formal-languages  regular-languages  pumping-lemma  logic  logic  programming-languages  lambda-calculus  term-rewriting  operational-semantics  complexity-theory  time-complexity  computability  proof-techniques  reductions  digital-preservation  distributed-systems  storage  algorithms  dynamic-programming  check-my-algorithm  reference-request  cryptography  quantum-computing  formal-languages  regular-languages  context-free  formal-grammars  algorithms  graphs  network-flow  algorithms  data-structures  randomized-algorithms  lists  computability  proof-techniques  undecidability  terminology  distributed-systems  parallel-computing  artificial-intelligence  heuristics  search-problem  algorithms  computational-geometry  algorithm-analysis  asymptotics  recurrence-relation  mathematical-analysis  master-theorem  algorithms  algorithm-analysis  runtime-analysis  computability  reductions  turing-machines  formal-languages  context-free 

2
正方配列の「重複しない」数値の合計を最大化-証明に役立ちます
質問はスタックオーバーフローに掲載されたこの問題を解決するためのアルゴリズムを求めて: nxnの行列(Aと呼びます)があります。行列Aからポイントのサブセット(Bと呼びます)を選択します。サブセットはn個の要素で構成され、Aの各行と各列から1つだけの要素が取得されます。出力はソリューション( B)これらの制約を考慮して、Bを構成する要素の合計が可能な最大値になるようにします(たとえば、以下の例では25)。Bの複数のインスタンスが見つかった場合(つまり、同じ最大合計を与える異なるソリューション)、最大の最小要素を持つBのソリューションを選択する必要があります。 Bは、nxnの選択行列にすることもできますが、n個の目的の要素のみが非ゼロです。 例:A = |5 4 3 2 1| |4 3 2 1 5| |3 2 1 5 4| |2 1 5 4 3| |1 5 4 3 2| =&gt; Bは |5 5 5 5 5| 私は動的プログラミングソリューションを提案しましたが、これは他のソリューションと同じくらい効率的だと思います。以下の提案されたアルゴリズムをコピーして貼り付けました。 してみましょうの正方形アレイもでの数字。ああAんんnんんn LETの要素示しにおける行と列目を。あ私、jあ私、jA_{i,j}ああAij LETはの正方形サブアレイの数値非重複の最適和を表す行の交点を含むがにと列がに。S(私1:私2、j1:j2)S(私1:私2、j1:j2)S( i_1:i_2, j_1:j_2 )ああA私1私1i_1私2私2i_2j1j1j_1j2j2j_2 次に、重複しない数値の最適な合計が示さS( 1:n , 1:n )れ、次のように与えられます。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.