理論計算機科学

理論計算機科学者および関連分野の研究者のためのQ&A

4
赤と黒の木の部分範囲
ライブラリのバグを修正しようとしていたとき、私は赤と黒の木のサブレンジを見つけることに成功せずに論文を検索しました。私はジッパーと 不変データ構造の削除アルゴリズムで使用される通常の追加操作に似た何かを使用するソリューションを検討していますが、私は見つけることができなかったより良いアプローチ、または最小の複雑さの境界さえあるのだろうかとまだ疑問に思っていますそのような操作で? 明確にするために、赤と黒のツリーと2つの境界が与えられた場合、それらの境界内に属する最初のツリーのすべての要素を含む新しい赤と黒のツリーを生成するアルゴリズムについて説明します。 もちろん、複雑さの上限は、1つのツリーをトラバースし、要素を追加して他のツリーを構築する複雑さです。


1
ミルナーの伝記の歴史的ルーツは何ですか?
ロビン・ミルナーは、グラフのような構造を持ちながらノードをネストできるグラフィカル構造の一種として、バイグラフを定義しました。彼らは、CCSのようなプロセス計算と一般 -calculusを、しかし、ミルナーは、はるかに一般的に使用されることを彼らのために意図されているようだ:セミナーノートまもなく彼の死の詳細の前に最近の動向から。ππ\pi 未来ではなく、振り返ってみると、ミルナーの2009年の教科書 「コミュニケーションエージェントの空間と動き」のプロローグは、歴史的背景の多くを提供していません。Milnerは、Mobile AmbientsとPi計算のルーツを明示的に認めました。しかし、このモデルは非常に一般的であるため、古いモデルへの強力なリンクが存在するはずです。 伝記の歴史的な前身はありますか? 進化するシステムをキャプチャするために使用される方法ではなく、構文要素に焦点を当てた、明白な先例は、AB Kempe、数学フォームの理論に関する覚え書き、ロンドン王立協会の哲学的取引177、1–70、1886です。紙は、頂点とエッジの色付きグラフを導入した可能性があります(以前の使用法については無知ですが、ポインタを歓迎します)。ケンペはまた、ミルナーが考えていたのと同じ種類の一般的な用途のいくつかを持っていたようです。言及すべき先任者は他にいますか? (編集:さらなる回答を集めることを期待して、これをコミュニティWikiにマークします。)

3
終了を部分的な正確さに減らすのはどれくらい難しいですか?
プログラムの検証に精通している場合は、背景の前に質問を読むことをお勧めします。プログラムの検証に慣れていない場合でも、この質問に答えることはできますが、背景を最初に読むことをお勧めします。 バックグラウンド 部分的な正確性の確認は決定できないとしばしば言われます。議論のために、フロイドのスタイルでこの声明を正確にする1つの非常に特定の方法を選んでみましょう-ホア。フローグラフは区別付き有向グラフである初期のノードのすべてのノードが到達可能であるから。プログラムは、そのノードでコマンドです流れ図です。コマンドには3つのタイプがあります(1)前提条件は q、(2)アサーションは qをアサート、(3)割り当てはv:= eです。ここで、qはfol(1次論理)式、eはfol項、vは変数です。 我々は、プログラムがあると言う部分正しい各ノード注釈を付ける方法がある場合、XとA前提条件A(X)と事後条件のB(x)のように、(1)は、最初のノードの前提条件が有効である、(2){ a(x) } x { b(x) }はすべてのコマンドxに適用され、(3)(b(x)はa(y)を意味します)はxからyまでのすべてのエッジに有効です。ここで、Hoareトリプルは次のように定義されます。 { p } assert q { r }は、(pが(q and r)を意味する)が有効であることを意味します { p } は、 q { r }が((pおよびq)がrを暗示する)が有効であることを意味すると仮定する { P } V:= E { R((つまり}手段PとEの代わりにVが)を意味し、Rは)有効です この部分的な正しさを確認することが決定できない理由について、手で波打った議論があります:a(x)とb(x)を入力したら、いくつかのfol式が有効であるかどうかを確認する必要があります。 部分的に正確に終了をエンコードする一般的な方法は、「前回実行されてから終了に向かって進行した」と本質的に言う特別なアサーションを追加することです。これらの進行アサーションは、フローグラフ上のすべての無限ウォーク(初期ノードから開始)に無限に多くの進行アサーションが含まれるように配置する必要があります。具体的には、進行アサーションの形式は 常にassert u < vで、ここでuとvは正の整数であり、割り当てu:= fが先行し、その後に割り当てv:= uが続くとしましょう。ここでfはバリアント関数、uは現在の値、vは以前の値です。ここで、「正の整数」について説明し、それらを比較するため、folよりも少し多く使用できることを確認する必要があります。Peano算術が使用可能であるとしましょう。(この選択については強く感じません。都合が良ければ無視してください。)もちろん、fはプログラムで言及されている他の関数や定数を使用するかもしれません。(プログラムの最初に仮定を追加することは、非論理公理を導入することと同等であることに注意してください。) これで、進行状況のアサーションがあるプログラムがまだ部分的に正しい場合、元のプログラムが終了することがわかります。 質問 終了プログラムを考えると、進行状況の表明のためのバリアント関数を思いつくのは難しいと感じています。しかし、どのくらい難しいですか?(上記の大きな背景があっても、見方によっては、この質問を未解決または未定義のままにしておくことを知っています。) 別の言い方をすれば、終了を部分的な正確さまで減らす問題を形式化し、その複雑さについて何かを述べているリファレンスを探しています。もちろん、これをすべて行う回答は歓迎されます。

2
ツリーにエッジの半分を加えたツリー幅はどれくらいの大きさですか?
Gを2n頂点上のツリーとします。Gのツリー幅、tw(G)=1。ここで、グラフHを得るためにGにn個のエッジを追加するとします。tw(H)の簡単な上限はn + 1です。 tw(H)はO(sqrt(n))であるように思われますが、これは単なる漠然とした予感です。2n頂点のツリーにn個のエッジを追加することによって得られるグラフのツリー幅について、O(n)よりも良い上限を知っていますか?

1
貪欲な推測はなぜそんなに難しいのですか?
私は最近、最短超弦問題の貪欲な推測について学びました。 この問題では、文字列のs1、… 、sns1、…、sns_1,\dots, s_nセットが与えられ、最短のスーパーストリング sssつまり各s私s私s_iがsss部分文字列として現れるようなものを見つけたいです。 この問題はNP困難であり、長い一連の論文の後、この問題の最もよく知られている近似アルゴリズムの比率は2 + 11302+11302+\frac{11}{30} [Paluch '14]。 実際には、生物学者は次の貪欲アルゴリズムを使用します。 各ステップで、すべてのペアで最大のオーバーラップを持つ2つの文字列(別の文字列のプレフィックスである最大のサフィックス)をマージし、残りの文字列(すべての入力文字列のスーパーストリング)になるまでこの新しいインスタンスで繰り返します) 以下の結合222本貪欲アルゴリズムの近似比率では、入力から得ることができるc (a b )k、(b a )k、(a b )kcc(ab)k、(ba)k、(ab)kcc(ab)^k,(ba)^k,(ab)^kc。 興味深いことに、これは最悪の例であると推測されました。つまり、Greedy は最短スーパーストリング問題の222近似を達成するということです。このように自然で簡単なアルゴリズムを分析するのは非常に難しいことを知って非常に驚きました。 この質問がなぜ難しいのかを示唆する直観、事実、観察、例はありますか?

1
PAといくつかの型理論の相対的な一貫性
型理論については、一貫性により、人が住んでいない型を持っていることを意味します。ラムダキューブの強い正規化から、システムとシステムが一貫していることがます。MLTT +帰納的タイプにも正規化の証明があります。ただし、これらはすべてPAのモデルを構築するのに十分強力である必要があり、これはPAがこれらの理論から一貫していることを証明します。システムは非常に強力であるため、教会の数字を使用してモデルを構築することにより、PAの一貫性を証明できると期待しています。MLTT + ITには自然数誘導型があり、一貫性も証明する必要があります。F ω FFFFFωFωF_\omegaFFF これはすべて、これらの理論の正規化証明がPAに内在化できないことを意味します。そう: システム、システム、およびMLTT + ITは実際にPAの一貫性を証明できますか?F ωFFFFωFωF_\omega 可能であれば、システム、、およびMLTT + ITの正規化を証明するには、どのメタ理論が必要ですか?F ωFFFFωFωF_\omega 一般に型理論の証明理論、または特にこれらの型理論のいくつかに良い参照がありますか?

3
言語の統語的モノイドとしてのモノイドの実現について
してみましょうL⊆X∗L⊆X∗L \subseteq X^{\ast}、いくつかの言語であること、そして私たちは、定義構文合同のよう u∼v:⇔∀x,y∈X∗:xuy∈L↔xvy∈Lu∼v:⇔∀x,y∈X∗:xuy∈L↔xvy∈L u \sim v :\Leftrightarrow \forall x, y\in X^{\ast} : xuy \in L \leftrightarrow xvy \in L と商モノイドX∗/∼LX∗/∼LX^{\ast} / \sim_Lあります呼ばれる構文モノイドのLLL。 さて、言語の統語的モノイドとしてどのモノイドが生じるのでしょうか?対称グループ用の言語と、基礎となる有限セット上のすべてのマッピングのセット用の言語を見つけました。しかし、他の言語については、ある言語の構文モノイドとして書くことができなかった有限モノイドがありますか? 与えられたオートマトンについて、関数構成が左から右に読み取られるときに状態の文字によって誘導されるマッピングによって生成されるモノイド(いわゆる変換モノイド)を考慮すると、最小オートマトンの変換モノイドは正確に構文モノイド。この観察は、上記の例を構築するのに役立ちました。 私はまた、任意の有限モノイドの実現が非常に簡単ではないことをしてみましょう単にの要素取り、いくつかのオートマトンの変換モノイドとしてMをのすべての発電状態として、と考えるMのアルファベットの文字とし、遷移が与えられていますQのXいくつかの状態のためのQおよび文字X、その後形質転換モノイドはと同形であるM自体(これはグループが対称群に埋め込む方法についてケーリーの定理に似ています)。MMMMMMMMMqxqxqxqqqxxxMMM

1
どの欲張りアルゴリズムが欲張り選択プロパティを満たしますが、最適な部分構造を持ちませんか?
アルゴリズム入門の教科書に基づいて、貪欲なアルゴリズムの正確性には、2つの特性を持つ問題が必要です。 貪欲な選択プロパティ 最適な下部構造 0/1ナップザック問題など、貪欲な選択プロパティがないために貪欲な解決策が失敗する反例を簡単に見つけることができます。しかし、他の可能性を想像するのはかなり難しいと思います。誰も私に問題と対応する貪欲なアルゴリズムを与えることができますか?

9
大学生向けの直感に反する結果
私は一般的な聴衆の話に対する人々の直感に反する結果の例を探しています。専門家以外から「あなたの直感は何を教えてくれますか?」結果の記述は、cs / mathの大学生に簡単に説明できるはずです。主にコンピューターサイエンスの結果を探しています。 お住まいの地域で最も一般的に興味のある直感に反する/予期しない結果は何ですか

1
有界ツリー幅回路は何に適していますか?
一つは、話すことができるツリー幅は以下のようにして得られた線(頂点)の「moralized」グラフのツリー幅として定義する、ブール回路の:接続する配線とBたびbが有するゲートの出力である(入力として、または逆に); 同じゲートへの入力として使用する場合は、ワイヤaとbを接続します。編集:回路のツリー幅を、それを表すグラフのツリー幅と同等に定義できます。結合性を使用してすべてのANDゲートとORゲートを書き直してファンインを最大2つにする場合、どちらの定義によるツリー幅も係数3まで同じです。aaabbbbbbaaaaaabbb333 一般的には扱いにくいが、制限されたツリー幅のブール回路では扱いやすいことがわかっている問題が少なくとも1つあります。各入力ワイヤが0または1に設定される確率(他とは独立)を与え、特定の出力ゲートは0または1です。これは通常#2SATからの削減により#P-hardですが、ジャンクションツリーアルゴリズムを使用して、ツリー幅が定数よりも小さいと想定される回路でPTIMEで解決できます。 私の質問は、確率論的計算以外に、一般的には扱いにくいが境界付きツリー幅回路では扱いやすいことが知られている他の問題があるかどうか、またはその複雑さは回路サイズとツリー幅の関数として説明できるかどうかを知ることです。私の質問はブールの場合に限定されません。他の半環上の算術回路にも興味があります。そのような問題はありますか?

5
削減することで、問題の扱いやすさについて多少なりとも楽観的になりますか?
ほとんどの複雑性理論家は一般に、次の哲学的ルールを信じているように思えます。 私たちは、問題のための効率的なアルゴリズムを見つけ出すことができない場合は、そして私たちは、問題の減らすことができますAを問題にB、そこにはおそらく問題のための効率的なアルゴリズムではありませんBのいずれか、。AAAAAABBBBBB これが、たとえば、新しい問題がNP-Completeであることが証明されたときに、最終的にP = N Pを示す可能性のある新しいアプローチ(問題)に興奮するのではなく、単に「難しすぎる」として提出する理由です。BBBP=NPP=NPP = NP 私はこれを別の科学分野の仲間の大学院生と話し合っていました。彼女はこの考えを非常に直感に反していると感じました。彼女のアナロジー: あなたは探検家であり、北米大陸とアジア大陸の架け橋を探しています。何ヶ月もの間、米国本土からアジアへの陸橋を見つけることに失敗しました。次に、米国本土が陸路でアラスカ地域に接続されていることを発見します。アラスカからアジアへの陸橋は、米国本土からアジアへの陸橋を意味することに気づきますが、これは存在しないと確信しています。アラスカの近くを探索する時間を無駄にしません。あなたはただ家に帰ります。 私たちの以前の哲学的ルールは、この文脈ではかなり愚かに聞こえます。良い反論は考えられませんでした!だから私はあなたたちにそれを引き渡します:なぜ私たちは問題Aを簡単にするのではなく、問題Bをより難しくするものとして還元を扱うべきですかA → BA→BA \to BBBBAAA

7
コンピュータサイエンスにおけるゲーム理論の応用?
コンピューターサイエンスの学生として、私はゲーム理論を紹介されましたが、このテーマについてはあまり詳しくありませんでした。私はGoogleで検索し、ゲーム理論に関するいくつかの本を見て、コンピュータサイエンスでの使用の確認を提供しました。私は経済学者の観点からゲーム理論の正式な研究を始めました。今、コンピューターサイエンスにおけるゲーム理論の応用を知りたいです。ゲーム理論の要素を利用する人工知能や複雑性理論などの分野におけるコンピューター科学者の最近の主要な成果は何ですか?経済学よりもコンピュータサイエンスに根ざしたゲーム理論にアプローチする方法はありますか?

2
疎グラフの周囲を見つけるための最適なアルゴリズム?
まばらな無向グラフの周囲をどのように見つけるか疑問に思います。スパースとは|E|=O(|V|)|E|=O(|V|)|E|=O(|V|)。最適とは、時間の複雑さが最も低いことを意味します。 無向グラフのためのタージャンのアルゴリズムの変更について考えましたが、良い結果が見つかりませんでした。実際、で2連結成分を見つけることができれば、最初の部分から達成できる何らかの誘導によって、胴回りを見つけることができると考えました。ただし、間違った方向に進んでいる可能性があります。(すなわち)よりも漸近的に優れたアルゴリズムを歓迎します。O(|V|)O(|V|)O(|V|)Θ(|V|2)Θ(|V|2)\Theta(|V|^2)o(|V|2)o(|V|2)o(|V|^2)

1
スターリンのコンパイラは残酷に最適化しますが、どうやって?
JM Siskindの研究声明は次のように述べています。 Stalinは、プログラム全体の静的分析を実行し、その分析の結果を使用して非常に効率的なコードを生成するSchemeの最適化コンパイラです。スターリンは、多数の静的分析手法を利用しています。反復モノバリアントフロー分析を使用して、フロー指向分割を実行するポリバリアントフロー分析の新しい形式を実行します。プロシージャの特殊なコピーのクローニングと、そのようなクローンへのターゲットの呼び出しサイトごとの割り当てです。フロー分析の結果を使用して、ライフタイム分析、エスケープ分析、ポイントツー分析、およびマストエイリアス分析を実行します。これらの分析は、変数のグローバリゼーションやローカリゼーションなどの手法を使用してほとんどのクロージャースロットを削除し、静的バックチェーンを圧縮し、通常プログラムからほとんどのクロージャーを削除する新しい形式の軽量クロージャー変換をサポートします。また、上記の分析を使用して、フロー指向の領域ベースのストレージ管理をサポートします。この場合、ランタイムガベージコレクションは、抽象値ごとおよびプログラムポイントごとに静的な割り当てと割り当て解除に置き換えられます。また、非常に効率的なファーストクラスの継続をサポートするために、Screamerで開拓された技術の拡張を使用して、フロー指向の軽量CPS変換を実行します。最後に、フロー指向のインライン化と低レベルの表現選択をサポートし、タグの実装(または非実装)、タグのチェック、および抽象値ごとおよびプログラムポイントごとのタグディスパッチを選択します。これにより、ほとんどのランタイムタグ、タグチェック、タグ付け、タグストリッピング、タグディスパッチ、ボックス化、およびプログラムからのボックス化解除がなくなります。ランタイムガベージコレクションは、抽象値ごとおよびプログラムポイントごとに静的な割り当てと割り当て解除に置き換えられます。また、非常に効率的なファーストクラスの継続をサポートするために、Screamerで開拓された技術の拡張を使用して、フロー指向の軽量CPS変換を実行します。最後に、フロー指向のインライン化と低レベルの表現選択をサポートし、タグの実装(または非実装)、タグのチェック、および抽象値ごとおよびプログラムポイントごとのタグディスパッチを選択します。これにより、ほとんどのランタイムタグ、タグチェック、タグ付け、タグストリッピング、タグディスパッチ、ボックス化、およびプログラムからのボックス化解除がなくなります。ランタイムガベージコレクションは、抽象値ごとおよびプログラムポイントごとに静的な割り当てと割り当て解除に置き換えられます。また、非常に効率的なファーストクラスの継続をサポートするために、Screamerで開拓された技術の拡張を使用して、フロー指向の軽量CPS変換を実行します。最後に、フロー指向のインライン化と低レベルの表現選択をサポートし、タグの実装(または非実装)、タグのチェック、および抽象値ごとおよびプログラムポイントごとのタグディスパッチを選択します。これにより、ほとんどのランタイムタグ、タグチェック、タグ付け、タグストリッピング、タグディスパッチ、ボックス化、およびプログラムからのボックス化解除がなくなります。非常に効率的なファーストクラスの継続をサポートするために、Screamerで開拓された技術の拡張を使用します。最後に、フロー指向のインライン化と低レベルの表現選択をサポートし、タグの実装(または非実装)、タグのチェック、および抽象値ごとおよびプログラムポイントごとのタグディスパッチを選択します。これにより、ほとんどのランタイムタグ、タグチェック、タグ付け、タグストリッピング、タグディスパッチ、ボックス化、およびプログラムからのボックス化解除がなくなります。非常に効率的なファーストクラスの継続をサポートするために、Screamerで開拓された技術の拡張を使用します。最後に、フロー指向のインライン化と低レベルの表現選択をサポートし、タグの実装(または非実装)、タグのチェック、および抽象値ごとおよびプログラムポイントごとのタグディスパッチを選択します。これにより、ほとんどのランタイムタグ、タグチェック、タグ付け、タグストリッピング、タグディスパッチ、ボックス化、およびプログラムからのボックス化解除がなくなります。これらの分析と最適化により、スターリンは、特に数値が集中するコードの場合、2〜100の範囲で他のすべてのSchemeコンパイラよりも優れた非常に効率的なコードを生成できます。スターリンは多くの場合、手書きのcおよびFortranコードよりも優れたコードを生成します。 クロージャー/関数呼び出しの実装に関する次の非常に興味深い論文を見つけることができました:Flow-Directed Lightweight Closure Conversion。また、著者にメールを送り、クロージャー変換ペーパーに書かれていると言われている他のトピックに関するペーパーについて尋ねました。 Siskind、JM 2000a。フロー指向の軽量CPS変換。準備中。 Siskind、JM 2000b。フロー指向のポリ分散。準備中。 Siskind、JM 2000c。フロー指向の表現選択。準備中。 Siskind、JM 2000d。フロー指向のストレージ管理。準備中 あいにく、彼はそれらの論文を書くことを決して手に入れませんでした。あなたへの私の質問は次のとおりです。これらのトピックをカバーする代替または関連する論文はありますか?スターリン(または他のコンパイラー)が、ガベージコレクションされ、動的に型付けされ、ファーストクラスの機能をサポートし、ファーストクラスの継続でさえも、このような効率的なコードに静的にコンパイルできるSchemeなどの高レベル言語をコンパイルする方法を学ぶことに非常に興味があります。フロー分析に関する論文は非常に豊富ですが、そのような分析の結果を使用して上記の最適化を行うことに関する論文は豊富ではありません。
14 compilers 

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