ラムダ計算を使用して時間の複雑さを導き出しますか?


43

ラムダ計算を使用してアルゴリズムの時間の複雑さを計算することに利点はありますか?または、この目的のために設計された別のシステムがありますか?

すべての参考文献をいただければ幸いです。

回答:


22

Ohadは、ラムダ計算が複雑度クラスについて話すための基礎として直面する問題についてまったく正しいです。ラムダ計算における還元性の複雑さを特徴付ける作業、特にレービーの博士論文からのラベル付きの最適な還元に関する作業について、かなりの作業が行われました。一般的に、ラムダ計算の優れたコストモデルは、すべてのベータ削減に一定の重みを割り当てるべきではありません。異なる書き換え戦略の下でのコストの不変性の、これは不可欠になります。

2つのリンク:

  1. Lawall&Mairson、1996、最適性と非効率性:ラムダ計算のコストモデルとは何ですか?(.ps.gz) –コストモデルの選択に関係する問題の独創的な調査と、多くの妥当なアイデアが機能しない理由。
  2. Dal Lago&Martini、2008、合理的なマシンとしての弱いラムダ計算 –コールバイバイラムダ計算のコストモデルと文献の良い議論を提供します。

1
興味深い参考文献として、これらの作品については知りませんでした。
Iddo Tzameret

1
このトピックに関する状況は最近変更されました。以下の私の答えをご覧ください。
マーク

23

(typed-)lambda calculusの縮約の長さを測定するという形で、 -calculus に関する定量的な結果があります。しかし、これはもちろん、アルゴリズムの複雑さについて何も言っていません(特に、得られた境界は急速に成長しているということです)。たとえば、Arnold Beckmann、型付き -calculusの縮約の長さの正確な境界、Journal of Symbolic Logic 2001、66(3):1277-1285を参照してください。λλλ

あなたの質問に近いものについては、静的分析によってプログラムの(多項式)実行時の境界(および他のリソースが使用するリソース)を決定できる型システム(関数型プログラミング言語)を開発および研究する現在のプロジェクトがありますプログラム)。そのため、ある意味で、これは、実行時の複雑さを分析するために関数型プログラミングを使用することに利点があるかもしれないことを示唆するかもしれません。プロジェクトホームページはこちらです。

このプロジェクトの代表的な論文は、Jan Hoffmann、Martin Hofmannです。多項式ポテンシャルによる償却リソース分析-関数型プログラムの多項式範囲の静的推論。ではプログラミングに関する第19回ヨーロッパシンポジウム(ESOP'10)。リンク


20

このトピックに関する最近者協会:U.ダルラゴとB. Accatoliは、左端の最外の減少(LOR)の長さがあることを証明 -termがための不変(時間)コストモデルです -calculus。λλλ

チューリングマシン(コスト=時間)と -terms(コスト= LOrの長さ)は、時間の多項式オーバーヘッドで互いにシミュレートできることを示しています。したがって、たとえば、クラスPの定義は、定義に使用する2つの計算モデルのどちらにも依存しません。λ

http://arxiv.org/abs/1405.3311


18

暗黙的な複雑性理論と呼ばれる線形論理に基づいた非常に興味深い一連の作業があります。これは、ラムダ計算にさまざまな型規律を課すことによってさまざまな複雑性クラスを特徴付けます。IIRC、この作業はBellantoniとCook、Leivantが型システムを使用してプリミティブ再帰をバインドし、さまざまな複雑なクラスをキャプチャする方法を見つけたときに始まりました。

一般に、ラムダ計算での作業の魅力は、チューリングマシンのようなモデルに力を与えるさまざまな内包的特徴のより拡張的な(つまり、数学的に扱いやすい)特性を見つけることができる場合があることです。たとえば、チューリングマシンと純粋なラムダ計算の違いの1つは、チューリングがプログラムのコードを受信するため、クライアントが手動でタイムアウトを実装し、アリ溝を実装できるため、並列ORを計算できることです。ただし、タイムアウトはメトリックでモデル化することもでき、Escardoは、ラムダ計算のメトリック空間モデルがPCF +タイムアウトに対して完全に抽象的であると推測しています(そのステータスはわかりません)。メトリック空間は非常によく研究された数学的なオブジェクトであり、その理論体系を利用できることは非常に素晴らしいことです。

ただし、ラムダ計算を使用することの難しさは、開始ゲートから高次の現象に直面することを余儀なくされることです。Church-Turing論文は高型で失敗するため、これは非常に微妙な場合があります。(並列ORはLCとTMの違いを示すため、この現象の簡単な例です。)さらに、関数空間の反分散はより表現力を意味するため、異なるモデル間に厳密な包含すらありません。 1つの順序で表現力が低いことを意味します。


12

私の知る限り、時間/空間の複雑さの概念はラムダ計算で定式化するのが難しいため、ラムダ計算はこの目的にはあまり適していません。

1時間単位の複雑さとは何ですか?ベータ削減?スペースの複雑さの単位はどうですか?文字列の長さ?

ラムダ計算は、チューリングマシンよりもはるかに簡単に構成できるため、アルゴリズムの抽象操作に適しています。


7

また、ラムダ計算のメタレベルの置換を一連の明示的な縮約ステップに分割する明示的な置換の計算を調べることもできます。これは、時間の複雑さを考慮する場合、すべての置換を同じとみなすべきではないというチャールズのポイントに触れています。


7

Nils Anders Danielsson、Agdaのライブラリとして実装されている純粋に機能的なデータ構造の軽量準形式時間計算量分析を参照してください。論文で示された引用も非常に有望に見えます。

私にとって重要なポイントは、単純に型付けされたラムダ計算でアルゴリズムの時間複雑度を導き出すのが適切/有用/合理的/半自動化できることです。アルゴリズムは、たとえば名前による呼び出しのセマンティクスを本質的に使用します。これに加えて、おそらく「ラムダ計算」で複雑さを計算するのではなく、与えられた評価戦略の下でラムダ計算で複雑さを計算するという明らかな点があります。

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