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

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

1
二分根ツリー同型
私の木は根が張られており、すべての頂点に最大で2つの子があります。以下の質問の一部またはすべてを解決するのに役立つリファレンスが必要です。 n個の頂点を持つツリーの同型クラスはいくつありますか? 与えられた2つのツリーが同型であるかどうかを判断するための古典的なアルゴリズムは何ですか? 素敵な(計算可能な?)同型不変量はありますか? もちろん、答えは木を定義するために使用された構造に依存するかもしれませんが、構造の正しい選択は私が求めている答えの一部だと思います。

2
ゼロ知識証明:抽象例
だから私はウィキペディアでZKPについて読んでいました、要約の抽象的な例は次のようになります: ペギーはビクターに秘密の言葉をビクターに明かさずにAとBを接続する洞窟内部のドアの秘密を知っていることをビクターに証明したいと考えています(図を参照)。 ペギーはビクターに知られていないランダムなエントリを取ります ビクターはペギーに叫び、パスAまたはBから出ます(ランダムに選択) そのため、ビクターに秘密の言葉を明かさずに、ビクターが選択した経路から抜け出すには、彼女が秘密の言葉を知っている必要があります。これが行われる回数が増えるほど、ビクターは信頼を築きます。 しかし、なぜビクターはペギーがどの道から入ってくるかを見ることができないのですか?これは秘密の言葉が何であるかについての追加情報を明らかにしないので。 どうしてビクターは彼女がどのように入るのかわからず、彼女に4つの可能性を示すように頼むことができません。 Aから入り、Aを出る Aから入り、Bを出る Bから入り、Aから出る Bから入り、Bを出る


1
ゴールデンチケットのように、古いSATソルバーを使用して新しいソルバーを発見する方法
ランスフォートナウの著書『ゴールデンチケット』では、NP完全問題の多項式時間アルゴリズムが得られたら、それを使用してより高速なアルゴリズムを見つけることができると述べています。それがどのように行われるか教えていただけますか?そして、それが完了すると、新しいアルゴリズムを使用して、固定小数点まで、さらに高速な1つの広告を検出できます。以下は本からの正確な引用です: 「では、1つの願いだけを叶えてくれる魔神に何を求めますか?」とアドバイザーは言った。 「わからない」とスティーブは答えた。 「あなたはすべての願いを叶える精霊を求めます。」 ことわざの電球がスティーブの頭から消えた。彼はクリーク問題をどこかに解決するためのより良いアルゴリズムがあるはずだと知っていましたが、彼自身でそれを理解することはできませんでした。しかし、彼は精巧な清華コードを持っていました。そこで彼は、清華ルーチンを使用してNP問題のより良いアルゴリズムを検索するプログラムを作成しました。 イリノイ大学を拠点とする全米スーパーコンピューティングアプリケーションセンター(NCSA)のコンピューティングリソースを使用する許可を得た。数週間の処理時間の後、彼の作業は少し成果を上げ、清華コードより5%改善された新しいアルゴリズムを見つけました。研究論文には十分ですが、実際の影響を与えるには不十分です。 彼の顧問は単に「新しいコードを使ってもう一度やり直してください」と言った。 そこでスティーブは新しいコードを使用して、NP問題のさらに高速なアルゴリズムを見つけました。数週間後、彼は20パーセント改善しました。 しかし、彼の顧問は感銘を受けませんでした。"もう一回やってみよう。" スティーブは、「見つけた新しいコードを自動的に試し続けるようにコンピューターをセットアップしないのはなぜですか?」 顧問はその見た目、彼が悟りを達成した、または少なくとも明白なことに気付いた学生に言った見た目を与えました。 スティーブはオフィスに戻り、より高速なコードを検索するコードを書くというトリッキーなプロセスを開始し、このより高速なコードを使用してさらに高速なコードを見つけ、それ以上の改善が見られなくなるまでこのプロセスを続けました。 次にSATに焦点を当てます。MiniSATは高速SATソルバーですが、多項式時間ほどではありません。 MiniSATを使用して新しいSATソルバーを機械的に検出する方法

2
指定された高さのすべてのバイナリツリーをリストするアルゴリズム
私は与えられた高さのすべての二分木をリストするアルゴリズムを見つけようとしました hhh。 私はそれらを数えようとしているわけではないことに注意してください:そのような木の数はOEIS(A001699)で与えられています。 私が見ることができたすべてのアルゴリズムは、指定された数のノードのすべてのバイナリツリーをリストします。問題を解決する非常に非効率的な方法は、間にいくつかのノードを持つすべてのツリーをチェックすることによって続行されますh + 1h+1h+1 そして 2h + 1− 12h+1−12^{h+1}-1、しかしこれはまったく素晴らしいことではありません。 ポインタや参照は大歓迎です。

3
Erathosthenesのふるいを使用した除数の総和関数
私が出会った次のような問題オンライン問題バンクから:にそこにあるの和を計算するように要求照会それぞれが の約数の和である。それが与えられている。 105 105 ~10^5~Σk = LRσ(k )∑k=LRσ(k)\sum_{k = L}^{R} \sigma(k)σ(k )σ(k)\sigma(k)kkk1 ≤ L ≤ R ≤ 5 ⋅1061≤L≤R≤5⋅1061 \leq L \leq R \leq 5\cdot 10^6 私の解決策(以下で説明)はErathosthenesのふるいに基づいています。私はそれをC ++で実装しましたが、平均で約秒で動作し、遅すぎます。この問題は少なくとも2倍速く解決できることはわかっていますが、その方法はわかりません。0.90.90.9 だからここに私の解決策があります(配列は0ベースです): M = 5 * 1e6 M = array of zeroes of size M + 1 A[1] = 1 for (k = …

1
加算、減算、乗算のみを使用して*より大きい*関数を実装することは可能ですか?
すべての値は有限フィールドです。これ以上の機能を書きたいZtZtZ_t GT(x,y)={1,0,if x>y,otherwise.GT(x,y)={1,if x>y,0,otherwise.GT(x,y) = \begin{cases} 1, & \text{if } x > y, \\ 0, & \text{otherwise}. \end{cases} 加算、乗算、減算のみを使用し、除算は使用しないでください。 等式関数 EQU(x,y)={1,0,if x==y,otherwise.EQU(x,y)={1,if x==y,0,otherwise.EQU(x,y) = \begin{cases} 1, & \text{if } x == y, \\ 0, & \text{otherwise}. \end{cases} このように計算できます EQU(x,y)=1−(x−y)pEQU(x,y)=1−(x−y)pEQU(x,y) = 1 - (x-y)^p、ここで、pはオイラーの傾斜関数 です。これは、が素数であるためです。p=phi(t)=t−1p=phi(t)=t−1p=phi(t)=t-1ttt 大なり関数は同様の方法で記述できますか? より大きい関数は、準同型暗号化アプリケーションが暗号化された整数のベクトルから最大整数値を見つけるために使用されます。

2
素なセグメントの可視性の問題に対するアルゴリズム
我々は考える互いに素なセグメントと点任意のセグメントではありません。アルゴリズムを見つけて、どのセグメントがから見えるかを確認したい。セグメントから見えるがから見える点がある場合。nnnPPPO(nlogn)O(nlog⁡n)O(n \log n)PPPPPPPPP 私のアイデアは、 1つのエンドポイントがあるスイープハーフラインを使用し、ポイントを時計回りに次数で並べ替え、最も近い可視セグメント(見つけ方はわかりません)のエンドポイントから開始し、回転します一度に1つの可視セグメントと一部の可能な非可視セグメントを検出します。今のところしか考えられません。誰でもアルゴリズムを提案できますか?PPPO(n2)O(n2)O(n^2)O(nlogn)O(nlog⁡n)O(n \log n)

1
アルゴリズムに関する厳密な本
私はアルゴリズムクラスを完全に楽しんだが、厳格さに欠けていると感じた。ほとんどの場合、提示されたアルゴリズムが機能する理由と、提示された時間の複雑さがなぜあるのかを直感的に理解できましたが、そのようなことを証明したいと思います。そのため、多くの一般的なアルゴリズムについて説明し、アルゴリズムの正確さと時間の複雑さを証明することに焦点を当てた本が欲しいです。何か良い推奨事項はありますか?

3
なぜほとんど(またはすべて)の多項式時間アルゴリズムが実用的ですか?
私は最近、論文の興味深いコメントを読んで、数学がいかに奇妙に役立つかを知りました。これは、多項式時間が実際に効率的である必要がないことを述べています(たとえば、は多項式時間ですが、効率的ではありません)。しかし、多項式時間のすべてのアルゴリズムも、多くてもなどのように、現実的であるとは言えませんか?私の質問は次のとおりだと思います:O(n999999999999999999999)O(n999999999999999999999)O(n^{999999999999999999999})O(n4)O(n4)O(n^4) これは意外ですか? 多項式時間であるが実用的ではないアルゴリズムの例はありますか?

1
セット頂点からセットへの最短経路を見つける方法
私がグラフ、頂点のサブセット、および頂点の2番目のセット持っている場合、 2セット?つまり、すべての -パスの中で最短のパスを探しています。すべてのエッジの重みが正であると仮定することもできます。G=(V,E)G=(V,E)G=(V,E)S⊂VS⊂VS \subset VS′⊂(V∖S)S′⊂(V∖S)S' \subset (V\setminus S)SSSS′S′S' これが私がこれまでこの問題に取り組んだ方法です: 前の操作でフロイドワーシャルアルゴリズムを適用して計算されたグラフの距離行列情報がすでにあります。(d)(d)(d)GGG 次に、各頂点についてすべての頂点を反復処理し、行列最小値を持つペアを見つけます。SSSS′S′S'(s1,s2)(s1,s2)(s_1,s_2)ddd 次にダイクストラのアルゴリズムを使用してと間の最短経路を計算し、頂点セットと接続します。s1s1s_1s2s2s_2SSSS′S′S' これと同じ結果を達成するためのより効率的な方法はありますか?

1
すべてのバルーンに当たる光線の最小数を計算するための貪欲な戦略
以下の最小ザップ問題は、「Greedy Algorithm」に関するJeff Ericksonの講義の演習11 です。 最小ザップ問題は、次のようにより正式に述べることができます。セットを考えるCCC の nんn 平面内の円。それぞれが半径と (x,y)(x,y)(x, y) 中心の座標。すべての円と交差する原点からの光線の最小数を計算します CCC。あなたの目標は、この問題の効率的なアルゴリズムを見つけることです。(下図の「9-balloons-with-4-rays」の例を参照してください) 質問:風船と交差しない光線を発射することが可能だとします。この特別な場合の最小ザップ問題を解決する貪欲なアルゴリズムを説明および分析します。 この問題への取り組みに問題があります。貪欲なアプローチは、ほとんどの円と交差して再帰する光線を使用することだと思いましたが、これは間違っていると言われました。どうしてこれなの? そして、風船と交差しない光線があるという事実の意味は何ですか?いくつかの最適なソリューションがこの事実を使用していることを証明するはずですか? どんな助けもいただければ幸いです!私は最近アルゴリズムを学び始めました:) hengxinの回答に基づくアルゴリズム:https ://cs.stackexchange.com/a/52293/42816 数学的帰納法による証明 注:O(n log n)実装を使用しませんでした 次に、数学的帰納法を使用して、このアルゴリズムの正確性を証明します。私たちの貪欲なアルゴリズムは最適解よりも悪いことはできないことを示します。 しましょう S′S′S'私たちの貪欲なアルゴリズムによって発射された光線のセットになります。しましょうSSS 別の最適なソリューションによって撮影された光線のセットである。 私たちの基本ケースはいつですか n=1n=1n = 1。破壊するオブジェクトは1つだけであり、貪欲なアルゴリズムは1つのレイを使用しますが、これもたまたま最適です。これはチェックアウトです。 ここで、帰納法の仮説について、貪欲なアルゴリズムが最大で nnn オブジェクト。 ここで、最初の光線が αα\alpha の S′S′S' それよりも悪いことはできません SSS。 今考えてみましょう n+1n+1n+1オブジェクトの状況。次に、並べ替えますS′S′S' そして SSS による αα\alpha、時計回り。今から発生する最初の光線を調べてみましょうαα\alpha時計回り。にS′S′S'、この最初の光線、それを呼び出します R′R′R'、おそらくそれよりも悪いことはできません SSS、 あれを呼べ RRR、私たちの貪欲なアルゴリズムは、この光線が最初のオブジェクトを含むほとんどのオブジェクトと交差することを示しているため、 αα\alpha。したがって、RRR …

2
長方形の封じ込めのための効率的なアルゴリズム
一連の nnn 行に間隔があり、 O(nlogn)O(nlog⁡n)O(n \log n)他の区間に含まれる区間を見つけるアルゴリズム(たとえば、Manber、「アルゴリズムを設計するための誘導の使用」、1988)。ありますかO (n ログn )O(nlog⁡n)O(n \log n) 高次元の軸整列長方形のアルゴリズム? 私はインターネットで検索して自分で考えようとしましたが、より高い次元の一般化を見つけることができませんでした。たとえば、んnn 平面上の軸に沿った長方形の場合、タスクは、他の長方形に含まれる長方形を見つけることです。

2
時々減少しないwhileループのループバリアント?
私が持っているテストの練習問題に取り組んでおり、ループバリアントのすべての例は、ループの反復ごとに減少しました。これについては、a <bの場合、値は同じままです。私の試みはまた、時々aがbより大きくなり、その逆になるため、負の可能性があるループバリアントを取得しました。この質問のループバリアントを見つけて証明するためのアドバイスはありますか? def mystery(a,b): # Precondition: a >= 0 and b >= 0 while a >= 0 and b >= 0: if a < b: a, b = b, a else: a = a - 1 return a 編集:この質問に興味がある人にとって、私の最善の解決策は次のとおりです。 f1=a+2b+1f1=a+2b+1f_{1} = a + 2b + 1

2
なぜこのグラフはMSTヒューリスティックの2近似限界のタイトさを示しているのですか?
これは私が与えられた宿題の問題であり、何時間も頭を掻き集めてきました(そのため、いくつかの指針に満足しています)。私はすでに、近似比がよりも悪くなることはないことを知っています。ホイールグラフがあります。各エッジのコストはで、エッジで接続されていないすべてのノード間の距離はです。ホイールグラフは次のです。222111222W6W6W_6 MSTヒューリスティックアルゴリズムの出力であると思われるものを青色でマークしました。しかし、すべてのノードは一度しかアクセスできないため、これも最適なソリューションだと思います。したがって、ツアーの費用は最適とMSTの両方でになります。777 このタイプのグラフが、MSTヒューリスティックの近似境界がタイトであることをどのように示しているかはわかりません(必ずしもこのインスタンスではなく、一般にグラフ)。誰かが私を啓発できますか?222WんWnW_n

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