ユニオン、交差点、および相違点で構成される設定計算は、多くの場合、さまざまな方法で表現できます。ある答えに達するのに必要な計算量を最小限にしようとする理論や具体的な実装はありますか?インテリジェント純粋に機能的なセット
例えば、アモルファス材料のシミュレーションで原子を分解して隣のシェルに分解しようとすると、最初に実際に適用されました。ここで、最初のシェルは特定の起点原子のすぐ隣にあり、ない最初のシェルまたはその前のいずれかの最初のシェルの隣接している原子:
nth 0 = singleton i
nth 1 = neighbors i
nth n = reduce union (map neighbors (nth(n-1))) - nth(n-1) - nth(n-2)
これを解決するために、多くの異なる方法があります。結果を構成する間に各セットのメンバシップを段階的にテストしたり、3つの隣接シェルの結合を計算したり、交差を使用して、最も外側にある2つのシェルを削除することができます。実際には、大きな中間セットの構築を必要とするソリューションは遅くなります。おそらくインテリジェントセット実装は、評価される式を構成し、次にそれを評価して性能を向上させるためにそれを最適化する(例えば中間セットのサイズを縮小する)ことができる。そのような実装は存在しますか?
まあ、私は、単一列のテーブルを持つSQLデータベースは基本的にクエリ言語オプティマイザで設定されていると思います。私はこれらのクエリのどれかがこのクエリに適用される最適化を持っているかどうか、あるいはSQLがこのクエリを表現するのに十分なエキサイティングな言語であるかどうかはわかりません。 –
私はおそらく数十年前に見ましたが、SQLクエリオプティマイザを除いて、答えは「ノー」でした。 – Gene
C++の式テンプレートのような音... – ildjarn