(57)【特許請求の範囲】
【請求項１】
基準クエリとのターゲットクエリの類似性に基づいて、データベースにおける前記ターゲットクエリの実行時間を予測するための前記データベースにおいて前記基準クエリをクラスタリングするコンピュータにより実行される方法であって、
前記基準クエリの前記実行時間を表す数値（ｘ1，…，ｘn）の数（ｎ）を設けるステップと、
予め定められた数（Ｋ）のクラスタに対する前記数値の最適Ｋ平均クラスタリングを算出するステップであって、前記算出するステップは、前記予め定められた数のクラスタに対応する回数、前記数値の数に等しい次数（ｎ）の正方行列（Ｈ）に適用される線形時間行最小検索アルゴリズムを反復するステップを含む、ステップと、
前記数値の前記算出されたクラスタリングに従って、前記基準クエリをクラスタリングするステップと
を備えたことを特徴とする方法。
【請求項２】
前記数値（ｘ1，…，ｘn）は、記憶およびインデックス付けされ、前記算出するステップ内で反復することは、各々のそれぞれの反復ランク（ｋ）において、ならびに前記数値の数（ｎ）未満のそれぞれのインデックス（ｊ）ごとに、前記正方行列（Ｈ）に適用される前記線形時間行最小検索アルゴリズムに従って、前記それぞれの反復ランク（ｋ）に対応するクラスタの数で、前記それぞれのインデックス（ｉ＜＝ｊ）よりも低くインデックス付けされた数値（ｘi）のサブセットに対して達成可能な最小全歪み（ＴＤmin（ｊ，ｋ））の算出を含む、ことを特徴とする請求項１に記載の方法。
【請求項３】
各々のそれぞれの反復ランク（ｋ）において、および前記数値の数（ｎ）未満のそれぞれのインデックス（ｊ）ごとに、行インデックス（ｉ）ごと、および列インデックス（ｊ）ごとに、行列エントリ（Ｈ（ｉ，ｊ））は、
前記行インデックスに先行するインデックス（ｉ−１）に対する前の反復において算出された最小全歪み（ＴＤmin（ｉ−１，ｋ−１））、および
前記行インデックスと前記列インデックスとの間の前記数値の連続するサブセット（ｘｉ，…，ｘｊ）の歪み（ｄｉｓｔｏ（ｉ，ｊ））
の合計に対応する、ことを特徴とする請求項２に記載の方法。
【請求項４】
前記方法は、各々のそれぞれの反復ランク（ｋ）において、前記行最小検索アルゴリズムによって返されるインデックス（Ｃｕｔmin（ｊ，ｋ））を記憶するステップをさらに備えている、ことを特徴とする請求項３に記載の方法。
【請求項５】
前記方法は、前記算出するステップにおいて、前記記憶されたインデックスから最適クラスタリングを判定するステップをさらに備えている、ことを特徴とする請求項４に記載の方法。
【請求項６】
前記記憶されたインデックスから前記最適クラスタリングを判定するステップは、前記記憶されたインデックス（Ｃｕｔmin）における最後にインデックス付けされた数値（Ｃｕｔmin（ｎ，Ｋ））から開始して、前記数値を反復して区分化するステップを備え、各々のそれぞれの反復ランク（ｑ）において、現在形成されているクラスタの開始数値のインデックスは、前記算出するステップ内での反復の間に、前記予め定められた数のクラスタから、前記現在形成されているクラスタの最後にインデックス付けされた数値の前記インデックスに等しい前記行インデックスに対するそれぞれの反復ランク（ｑ）を引いたのに等しいランク（Ｋ−ｑ）の反復において、記憶されたインデックスに等しい、ことを特徴とする請求項５に記載の方法。
【請求項７】
データベースにおいてターゲットクエリの実行時間を予測する方法であって、
請求項１乃至６のいずれか一項に記載の方法によって取得可能な前記データベースにおける基準クエリのクラスタリング、および前記基準クエリの前記実行時間を提供するステップと、
前記基準クエリとの前記ターゲットクエリの類似性に基づいて、前記ターゲットクエリを前記クラスタリングのクラスタに関連付けるステップと、
前記ターゲットクエリに関連付けられた前記クラスタの前記基準クエリの前記実行時間に従って、前記ターゲットクエリの前記実行時間を予測するステップと
を備えたことを特徴とする方法。
【請求項８】
コンピュータによって実行されるとき、前記コンピュータに、請求項１乃至７のいずれか一項に記載の方法を実行させるためのコンピュータ実行可能命令を備えたことを特徴とするコンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムを記憶したことを特徴とするデータ記憶媒体。
【請求項１０】
メモリに結合されたプロセッサを備えたシステムであって、前記プロセッサは、前記メモリに記憶された、請求項８に記載の前記コンピュータプログラムを実行するように構成されていることを特徴とするシステム。
【請求項１１】
前記メモリはデータベースをさらに記憶し、前記プロセッサは、前記データベースにおける基準クエリおよび／または前記データベースにおけるターゲットクエリ上で前記コンピュータプログラムを実行するように構成されていることを特徴とする請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、データベースエンジニアリングの分野に関し、特に、データベースにおいて基準クエリ（reference queries）をクラスタリングする、コンピュータ実装方法、コンピュータプログラム、およびシステムに関する。
【背景技術】
【０００２】
データベースエンジニアリングは、データベース上のクエリに対する異なる種類の最適化を含むことが多く、特に、処理負荷予測を実行することを目的とすることが多い。クエリを実行するのに要する時間は、処理負荷（Workload）もしくは単純に実行時間、またはクエリ実行時間（query runtime）と称される。このことは概して、オプティマイザが最小化する量である（使用されるメモリ空間およびリソースとして他のコストを考慮に入れる必要がある場合でさえ）。クエリに応答するのに必要な時間が、クエリ実行計画（query plan）を算出する時間、およびクエリ実行計画を実行する時間の合計であることに留意することが重要である。一部の技術は、それらの２つの量の間のトレードオフを発見する傾向がある（特許文献１など）。
【０００３】
クエリ実行時間予測の最も重要な適用は、それらの予測を信頼して、大抵は非常に多数の候補から特定の実行計画を選択する、クエリ最適化である。実際の適用では、データベースシステムは、短い時間で（in a few time）多数のクエリに応答する必要があり、すなわち、なぜそれがクエリスケジューリング（非特許文献１の論文で詳述されるように）を実行するかであり、このスケジューリングは、予想されるクエリ実行時間とは異なる基準、クエリを送信したユーザの優先度、対象のタスクの優先度に基づいている。
【０００４】
よって、クエリ実行時間は、クエリをスケジュールするために推定することが必要な１つである主要な情報である。特に、他の重要なクエリの遅延を引き起こすボトルネッククエリを回避することが望まれる。さらに、クエリが所与の制限時間の前に処理されるように、どの程度のリソースをその算出に使用するかを定量化するために、クエリの実行時間を評価することに関心がある。このことは、特許文献２において説明されている、上述したように、クエリの実行時間を予測することは、クエリスケジューリングの中心にあり、したがって、この問題が集中して研究されている。
【０００５】
クエリの実行時間を予測する１つの自然な方法は、既に実行された「同様の」クエリ（および、それに対し使用された時間が記憶されている）の実行時間を探索する（look for）ことである。この種の方法を実装するために、良好な表示（representations）を発見して、それらの間でクエリを比較し、および、例えば、非特許文献２の論文にあるような測定基準（metrics）、または非特許文献３にあるようなモデル選択を使用して、どのようにしてそれらの実行時間をモデル化するかを学習する必要がある。クエリの表示の選択、およびこの表示に従って実行時間をモデル化する方法は、クエリが構築される言語に依存する。例えば、非特許文献４の研究報告は、ＳＰＡＲＱＬ言語のケースを扱っている。
【０００６】
次いで、機械学習アルゴリズムがトレーニングセットに適用された後に、クエリの実行時間の予測を評価することができる。特に、非特許文献５の論文は、クエリの特定の表示を使用して、ＰｏｓｔｇｒｅＳＱＬなどの関係データベースのケースを分析し、および異なる古典的な（classical）機械学習アルゴリズムをテストする。教師なし平均法（Undersupervised averaging）、教師なし線形回帰法、教師なしｋ近傍回帰法、教師なしＮａｄａｒａｙａ−Ｗａｔｓｏｎ回帰法は、全て使用されている概念である。
【０００７】
幾つかの文献は、パワフルメタ方法（powerful meta-method）が、実行時間の範囲においてトレーニングセットのクエリを分割すること、および範囲の各々で機械学習アルゴリズムを適用することから構成されることを証明している。特に、非特許文献６の論文は、この時間の分割を使用している。一部の方法はまた、このパラダイムを再帰的に適用し、および、ＰＱＲツリーを取得し（特許文献３および特許文献４にあるように）、ツリーの各ノードは、トレーニングデータに関して学習された予測因子を使用する（トレーニングデータは、その実行時間が知られているクエリの組であることが想起される）。最もロバストな一般的な方法の１つは、トレーニングセットのクエリのクエリ時間をクラスタリングすること、および、クラスタを発見する所与の（新たな）クエリ（そのクエリからそれは最も近い（クエリとクラスタの中心（centroid）との間の類似性に基づくことが多い、類似性の特定の概念（notion）を使用して）ことを含み、そして、クラスタのクエリ時間に従ってクエリ時間を算出する。上述した非特許文献４の研究報告、および非特許文献７の論文は、例えば、クラスタに関して学習された予測モデルを評価することによって、この最後の算出を実行することができ（単純な平均値とすることができ、そのケースでは、この最後の算出は、ある程度は、量子化（すなわち、予め定められた距離に従って、予め定められた組の値における最も近い１つによる入力値の置き換え）またはＳＶＭとしてのより複雑な機械学習方法にある程度は相当する）。このフレームワークは、クラスタ分析のより一般的な分野に関する。
【０００８】
クラスタ分析は、グループにおけるオブジェクトの区分化し（partitioning）、それによって各グループにおいてデータが同一となる（非特許文献８の論文を参照）タスクに関する。それは、データマイニング（非特許文献９の論文を参照）、機械学習（非特許文献１０の論文を参照）、および大規模検索（非特許文献１１の論文を参照）における主要な問題のように見える。クラスタ分析は、各クラスタに中心（center）を割り当て、１つは、そのクラスタの中心に対する各ポイントを量子化することにある単純な量子化を有する、量子化のための重要なツールである。
【０００９】
Ｋ平均クラスタリング問題は、クラスタ分析の最も有名な問題であり、パルス符号変調のための技術として、１９５７年にＢｅｌｌ研究所においてＳｔｕａｒｔ  Ｌｌｏｙｄによって導入されている。Ｌｌｏｙｄアルゴリズムは、ｐ次元のポイントの集合を入力と見なし、および「全歪み」最小化することを目的とするそれらのポイントの区画（partition）を出力する。このアルゴリズムは、発見的問題解決（heuristic）であるにすぎない（最適なクラスタリングをもたらさない）。しかしながら、実際には、Ｋ平均クラスタリング問題が一次元でないケースにおけるＮＰ困難（NP-hard）であるので、正確なアルゴリズムを期待することはできない。Ｌｌｏｙｄアルゴリズムが最近では広く使用されている。幾つかの変形例がまた提案されている（非特許文献１２を参照）。
【００１０】
一次元の適用が特に重要である。この問題に対する最も有名なアルゴリズムの１つは、１９６７年に開発されたＪｅｎｋｓ  ｎａｔｕｒａｌ  ｂｒｅａｋｓ  ｏｐｔｉｍｉｚａｔｉｏｎと称され（地図製作の国際年鑑における非特許文献１３の論文を参照）、地図製作を目的に導入されている。Ｌｌｏｙｄアルゴリズムとして、それは発見的問題解決であるにすぎない。２０１１年に、ＣＫ平均と称される、正確なアルゴリズムが、ＷａｎｇおよびＳｏｎｇによって開発されている（非特許文献７の論文を参照）。このアルゴリズムは、特許文献５の基礎（corner stone）である。それは時間Ｏ（Ｋ*ｎ2）において実行し、Ｋは要求される数のクラスタであり、およびｎは実数である。さらに最近では（２０１３年に）、Ｍａａｒｔｅｎ  Ｈｉｌｆｅｒｉｎｋが、より効率的なアルゴリズムを開発し、およびそれの実装を提供している。この実装は、コロプレス（choropleth）に対してより正確な、地図製作に特化されているが、このアルゴリズムの文献のみは、Ｗｉｋｉｐｅｄｉａのページである（非特許文献１４）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許出願公開第２００５／００７１３３１号明細書
【特許文献２】米国特許出願公開第２００５／０１９２９３７号明細書
【特許文献３】米国特許第７８９５１９２号明細書
【特許文献４】米国特許出願公開第２００８／０２７０３４６号明細書
【特許文献５】米国特許第１５４３０３６号明細書
【特許文献６】米国特許第５６９４５９１号明細書
【特許文献７】米国特許出願公開第２００６／００３１１８９号明細書
【特許文献８】国際公開第２０１４／０６００５０号
【非特許文献】
【００１２】
【非特許文献１】"Distribution-Based Query Scheduling", by Chi, Hacigum, Hsiung, Naughton, 2013
【非特許文献２】"Predicting Multiple Metrics for Queries: Better Decisions Enabled by Machine Learning", by Ganapathi, Kuno, Dayal, Wiener, Fox, Jordan, and Patterson (2009)
【非特許文献３】"Learning to Predict Response Times for Online Query Scheduling", by Macdonald, Tonellotto, and Ounis (2011)
【非特許文献４】"Predicting SPARQL Query Execution Time and Suggesting SPARQL Queries Based on Query History", by Hasan and Gandon
【非特許文献５】"Dynamic Cost Models for Query Runtime Prediction" by Lima
【非特許文献６】"PQR: Predicting Query Execution Times for Autonomous Workload Management", by Gupta, Mehta, Dayal (2008)
【非特許文献７】Wang and Wong, "Optimal k-means Clustering in One Dimension by Dynamic Programming"
【非特許文献８】Jain et al., "Data Clustering: A Review"
【非特許文献９】Chen et al., "Data mining: an overview from a database perspective"
【非特許文献１０】Murphy, "Machine Learning, A Probabilistic Perspective"
【非特許文献１１】Goodrum,"Image Information Retrieval: An Overview of Current Research"
【非特許文献１２】J.A. Hartigan (1975), "Clustering algorithms", John Wiley & Sons, Inc.
【非特許文献１３】Jenks, "The Data Model Concept in Statistical Mapping"
【非特許文献１４】Fisher's Natural Breaks Classification, accessible at the following URL at the priority date: http://wiki.objectvision.nl/index.php/Fisher%27s_Natural_Breaks_Classification).
【非特許文献１５】"Logic Programming and Databases", Tanca, 1990
【非特許文献１６】"Principles of Distributed Databases", Ozsu, Valduriez, 2011
【非特許文献１７】"A Federated Architecture for information management", McLeod, Heimbigner, 1985
【非特許文献１８】"Survey of graph database models", Angles, Gutierrez, 2008
【非特許文献１９】"Report on a knowledge-based software assistant", Green, Cordell, Luckham, Balzer, Cheatham, Rich,1986
【非特許文献２０】"Management Information Technology Systems", O’Brien, Marakas, 2008
【非特許文献２１】"Efficient query evaluation on probabilistic databases", Dalvi, Suciu, 2007
【非特許文献２２】"TSQL2 Temporal Query Language", Snodgrass, 2009
【非特許文献２３】"Query optimization", by Ioannidis and Yannis, 1996
【非特許文献２４】"An Overview of Query Optimization in Relational Systems", by Chaudhuri and Surajit, 1998
【非特許文献２５】Gray and Neuhoff, "Quantization"
【非特許文献２６】MacQueen, "Some Methods for classification and Analysis of Multivariate Observations"
【非特許文献２７】Bellman, "The theory of dynamic programming"
【非特許文献２８】Bradford and Reinert, "Lower Bounds for Row Minima Searching",1996
【非特許文献２９】Alon and Azar, "Comparison-Sorting and Selecting in Totally Monotone Matrices"
【非特許文献３０】Cechlarova and Szabo, "On the Monge property of matrices"
【非特許文献３１】Bein, Golin, Larmore, and Zhang, "The Knuth-Yao quadrangle-inequality speedup is a consequence of total-monotonicity"
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、これらの既存の方法の全ては、いずれも最適なＫ平均クラスタリングをもたらさず、およびそれらは非常に低速であるので、制限されている。このコンテキスト内で、実行時間予測のためのクラスタクエリに対する改善された解決方法の必要性がいまだに存在する。
【課題を解決するための手段】
【００１４】
したがって、基準クエリとのターゲットクエリ（target query）の類似性に基づいて、データベースにおけるターゲットクエリの実行時間の予測のための、データベースにおける基準クエリをクラスタリングする、コンピュータ実装方法が提供される。方法は、基準クエリの実行時間を表す数値の数を設けるステップを備える。方法はまた、予め定められた数のクラスタに対して数値の最適なＫ平均クラスタリングを算出するステップを備える。算出するステップは、予め定められた数のクラスタに対応する回数、数値の数に等しい次数の正方行列に適用される線形時間行最小検索（Row Minima Searching）アルゴリズムを反復するステップを含む。また、方法は、数値の算出されたクラスタリングに従って、基準クエリをクラスタリングするステップを備える。
【００１５】
方法は、
−その結果、数値がソートおよびインデックス付けされ、算出するステップ内で反復することが、正方行列に適用される線形時間行最小検索アルゴリズムに従って、各々のそれぞれの反復ランク（iteration rank）において、および数値の数未満のそれぞれのインデックスごとに、それぞれの反復ランクに対応するクラスタの数で、それぞれのインデックス未満でインデックス付けされた数値のサブセットに対して達成可能な最小全歪み（minimal total distortion）を算出することを含むことと、
−各々のそれぞれの反復ランクにおいて、ならびに数値の数未満のそれぞれのインデックスごとに、行インデックスごと、および列インデックスごとに、行列エントリ（matrix entry）は、行インデックスに先行するインデックスに対する前の反復において算出された最小全歪みの合計、および行インデックスと列インデックスとの間の数値の連続するサブセットの歪みに対応することと
のうちの１つ以上を備える。
【００１６】
方法は、各々のそれぞれの反復ランクにおいて、行最小検索アルゴリズムによって返されるインデックスを記憶するステップをさらに備える。
【００１７】
方法は、算出するステップにおいて、記憶されたインデックスから最適なクラスタリングを判定するステップ、および／または、記憶されたインデックスから最適なクラスタリングを判定するステップは、記憶されたインデックスにおいて、最後にインデックス付けされた数値から開始して、数値を区分化する（partitioning）ステップであって、各々のそれぞれの反復ランクにおいて、現在形成されているクラスタの開始の数値のインデックスは、予め定められた数のクラスタから、現在形成されているクラスタの最後にインデックス付けされた数値のインデックスに等しい行インデックスに対するそれぞれの反復ランクを減算したものに等しいランクの反復において、算出するステップ内で反復する間に記憶されたインデックスに等しい、ステップをさらに備える。
【００１８】
データベースにおけるターゲットクエリの実行時間を予測する方法がさらに提供される。予測方法は、上記クラスタリングする方法によって取得可能なデータベースにおける基準クエリのクラスタリング、および基準クエリの実行時間を提供するステップを備える。予測方法はまた、基準クエリとのターゲットクエリの類似性に基づいて、ターゲットクエリをクラスタリングのクラスタと関連付けるステップをさらに備える。また、予測方法は、ターゲットクエリに関連付けられたクラスタの基準クエリの実行時間に従って、ターゲットクエリの実行時間を予測するステップをさらに備える。
【００１９】
クラスタリングおよび／また予測方法を実行するための命令を備えたコンピュータプログラムがさらに提供される。
【００２０】
それにコンピュータプログラムを記憶したコンピュータ可読記憶媒体がさらに提供される。
【００２１】
それにコンピュータプログラムを記憶した、メモリに結合されたプロセッサを備えたシステムがさらに提供される。
【００２２】
例では、メモリはデータベースをさらに記憶し、システムは、データベースにおける基準クエリ上でプログラムを実行し、および／または、データベースにおけるターゲットクエリ上でプログラムを実行するように構成されている。
【図面の簡単な説明】
【００２３】
本発明の実施形態は、非限定的な例によって、かつ添付図面を参照して説明される。
【００２４】
【図１】方法の例のフローチャートを示す。
【図２】システムの例を示す。
【図３】方法の例を示す。
【発明を実施するための形態】
【００２５】
図１のフローチャートを参照して、基準クエリとのターゲットクエリの類似性に基づいて（例えば、任意の予め定められたクエリ類似性基準に従って）、データベースにおけるターゲットクエリ（すなわち、例えば、実質的に同一のデータベースに対する別のクエリ）の実行時間を予測するための（すなわち、それ自体が既知であるように、基準クエリ、およびそのような後の予測に関連し／適合されているそれらのクラスタリング）、データベースにおける基準クエリ（すなわち、データベースに対するクエリ）をクラスタリングする、コンピュータ実装方法が提案される。方法は、基準クエリの実行時間を表す数値の数（例えば、任意の数）（すなわち、例えば、その実行時間が実際には全て知られている、それぞれの基準クエリの実質的な実行時間に対応し／表し／等しい各々の数）を設けるステップＳ１０を備える。方法はまた、予め定められた数のクラスタに対する数値の最適Ｋ平均クラスタリングを算出するステップＳ２０を備える。算出するステップＳ２０は、予め定められた数のクラスタに対応する回数、数値の数に等しい次数の正方行列に適用される線形時間行最小検索アルゴリズムを反復するステップを含む。また、方法は、数値の算出されたクラスタリングに従って、基準クエリをクラスタリングするステップＳ３０を備える（すなわち、各々の基準クエリがそのそれぞれの実行時間のクラスタに従って割り当てられる）。そのような方法は、ターゲットクエリの実行時間の後の予測に対して基準クエリのクラスタリングを改善する。
【００２６】
特に、方法によって、本分野でも公知なように、それらの実行時間に基づいて基準クエリ（その実行時間が既知である）をクラスタリングする（Ｓ３０）ことが可能になる。方法は、最適Ｋ平均クラスタリングを算出する（Ｓ２０）ことによって、そのようなクラスタリングを実行する（Ｓ３０）ので、方法は、データベースエンジニアリングの分野において公知なように、後の実行時間予測の観点から比較的良好なクラスタリングを実行する。しかしながら、最も重要なことに、方法は、予め定められた数のクラスタに対応する回数、数値の数に等しい次数の正方行列に適用される線形時間行最小検索アルゴリズムを反復することによって、そのような算出Ｓ２０を実行する。本方法によって実行されるこの特定のアルゴリズムのフレームワークによって、後述するように、最適Ｋ平均クラスタリングの算出が高速に実行される。
【００２７】
方法は、コンピュータによって実行される。これは、方法のステップ（すなわち、実質的に全てのステップ）が、少なくとも１つのコンピュータ、または同様の任意のシステムによって実行されることを意味する。よって、方法のステップは、場合によっては完全に自動で（例えば、設けるステップＳ１０を除く全てのステップ）、または半自動でコンピュータによって実行される。例では、方法のステップの少なくとも一部をトリガすることは、ユーザ−コンピュータの対話を通じて実行される（例えば、設けるステップＳ１０）。要求されるユーザ−コンピュータの対話のレベルは、予想される機械的動作（automatism）に依存することがあり、およびユーザの要求を実装する必要性とのバランスをとられることがある。例では、このレベルは、ユーザにより定義されてもよく、または事前定義されてもよい。
【００２８】
コンピュータ実装方法の典型的な例は、この目的のために適合されたシステムで方法を実行することである。システムは、メモリに結合されたプロセッサを備えてもよく、メモリは方法を実行するための命令を備えたコンピュータプログラムを記憶している。メモリはまた、方法によって処理されるデータを維持するように適合されたデータベースを記憶している。メモリは、場合によっては幾つかの物理的に別個の部分（parts）（例えば、１つはプログラム用であり、場合によっては、１つはデータベース用である）を備えた、そのような記憶に適合された任意のハードウェアである。
【００２９】
図２は、システムの例を示し、システムは、クライアントコンピュータシステム、例えば、ユーザのワークステーションである。例示のクライアントコンピュータは、内部通信バス１０００に接続された中央処理装置（ＣＰＵ）１０１０、またバスに接続されたランダムアクセスメモリ（ＲＡＭ）１０７０を備える。クライアントコンピュータはさらに、バスに接続されたビデオランダムアクセスメモリ１１００と関連付けられたグラフィカルプロセシングユニット（ＧＰＵ）１１１０が設けられる。ビデオＲＡＭ１１００は、フレームバッファとしても本分野で知られている。大容量記憶装置コントローラ１０２０は、ハードドライブ１０３０などの大容量メモリデバイスへのアクセスを管理する。コンピュータプログラム命令およびデータを有形的に具体化するのに適切な大容量メモリデバイスは、例として、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクおよび着脱可能ディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭディスク１０４０を含む、全ての形式の不揮発性メモリを含む。上述したことのいずれかは、特別に設計されたＡＳＩＣ（特定用途向け集積回路）によって補完されてもよく、またはそれに組み込まれてもよい。ネットワークアダプタ１０５０は、ネットワーク１０６０へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、またはキーボードなどの触覚デバイス１０９０を含んでもよい。カーソル制御装置は、ディスプレイ１０８０上の任意の所望の位置においてユーザが選択的にカーソルを位置付けることを可能にするために、クライアントコンピュータにおいて使用される。加えて、カーソル制御装置によって、ユーザは種々のコマンドを選択することが可能になり、および制御信号を入力することが可能になる。カーソル制御装置は、システムに制御信号を入力するための幾つかの信号生成デバイスを含む。概して、カーソル制御装置は、信号を生成するために使用されるマウス、マウスのボタンであってもよい。代わりに、または加えて、クライアントコンピュータシステムは、感知パッド、および／または感知スクリーンを備えてもよい。
【００３０】
コンピュータプログラムは、コンピュータにより実行可能な命令を備えてもよく、命令は、上記システムに方法を実行させる手段を備える。プログラムは、システムのメモリを含む、任意のデータ記憶媒体上で記録可能であってもよい。プログラムは、例えば、デジタル電子回路、またはコンピュータハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組合せで実装されてもよい。プログラムは、装置、例えば、プログラム可能なプロセッサによって実行される機械可読記憶デバイスで有形的に具体化される製品として実装されてもよい。方法のステップは、入力データを操作し、および出力を生成することによって、方法の機能を実行するために、命令のプログラムを実行するプログラム可能プロセッサによって実行されてもよい。よって、プロセッサは、データ記憶システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信し、ならびにそれらにデータおよび命令を送信するようにプログラム可能であってもよく、およびそれらに結合されてもよい。アプリケーションプログラムは、高レベル手続型プログラミング言語、もしくはオブジェクト指向プログラミング言語、または望ましい場合にアセンブリ言語もしくは機械語で実装されてもよい。いずれにしても、言語はコンパイル言語またはインタープリタ言語であってもよい。プログラムは、完全インストールプログラムまたはアップデートプログラムであってもよい。システム上のプログラムのアプリケーションは、方法を実行するための命令におけるいずれかのケースをもたらす。
【００３１】
方法は、特にクエリ実行時間予測に適用される、改善されたデータクラスタリングアルゴリズムを提案する。しかしながら、方法のアルゴリズム的な解決策を詳述する前に、そのコンテキスト（すなわち、その適用）がここで詳述される。
【００３２】
方法は、基準クエリをクラスタリングする。クラスタリングは、基準クエリとのターゲットクエリの類似性（例えば、従来技術の類似性基準などの任意の類似性）に基づいて、データベースにおいてターゲットクエリの実行時間（すなわち、クエリ実行計画を算出する時間、および／もしくはクエリ実行計画を実行する時間、またはさらに方法に入力されるターゲットクエリが、例えば、通常のクエリのクエリ実行計画を算出することから出力されるターゲットクエリがサブクエリの場合にサブクエリを実行する時間）の（後の）予測に対して実行される（すなわち、検討中の特定のデータベース上での実行に対して要する時間）。言い換えると、方法によって、（場合によっては前の）基準クエリの前のクラスタリングに基づいて、（場合によっては後の）所与のクエリ（すなわち、ターゲットクエリ）の実行時間の予測が可能になる。よって、基準クエリは、本分野で既知であり、かつ上述したようなトレーニングセットを形成する。例えば、基準クエリは単に、その実行時間が既知である（例えば、方法の前に、データベースが設けられ、クエリの組が設けられ、組のクエリがデータベース上で実行され、および実行時間の追跡を維持することによって、Ｓ１０において設けられることになるデータの判定が可能になる）任意の組のクエリであってもよい。方法が持続的に反復され、およびクラスタリングが更新される場合に、後に入力されるターゲットクエリはさらに、それが実行され、およびその実際の実行時間が既知であるときに基準クエリに追加されてもよい
【００３３】
基準クエリがクラスタリングされ、およびそれらはその（既知であり、かつ実際の）実行時間（すなわち、持続時間を表す数値の形式でＳ１０において設けられる）に関連付けられる。例では、１つの代表的な実行時間のみが、方法の終わり、例えば、クラスタの中心、すなわち、クラスタの中間（mean）においてクラスタごとに維持される。次いで、（新たな）ターゲットクエリが提供されるとき、予測アルゴリズムは、基準クエリとのターゲットクエリの類似性に基づいて、このターゲットクエリをクラスタの１つと関連付けてもよい。ここで、従来技術に関して議論されたことと関連して上述したものなどの、類似性に基づく任意の関連付けスキームが実装されてもよい。このことは、それ自体が既知である。例えば、クラスタリングＳ３０が利用可能であるとき、ターゲットクエリと全てのクエリ、または各クラスタの１つもしくは複数の代表クエリ（例えば、その実行時間がクラスタの中心に最も近い）との間で評価された、予め定められたクエリ距離基準に従って、ターゲットクエリがクラスタの１つに関連付けられてもよい。この評価は、「最も近い」クラスタの判定につながる（クエリ距離基準に基づいて）。次いで、ターゲットクエリの実行時間が、そのような情報に基づいて予測されてもよい。
【００３４】
実際に、予測アルゴリズムは、ターゲットクエリに関連付けられたクラスタの基準クエリの実行時間に従って、ターゲットクエリの実行時間を予測してもよい。再度、例えば、任意の既存の従来技術に従って、それ自体が既知としてこのことが実行されてもよい。例えば、このステップの効率的かつ直接の実装は、関連付けられたクラスタの中心をとることである（すなわち、ターゲットクエリに対して予測される実行時間が、関連付けられたクラスタの基準クエリの平均実行時間である）。より複合的な実装形態では、サポートベクトルマシンが使用されてもよい。よって、クエリ時間スケジューリング（例えば、同時（concurrent）クエリの総数が予め定められた閾値よりも小さいとき、および／または例えば、夜間においてデータベースがあまりクエリされないことが知られているときに、予め定められた閾値よりも大きい予測される実行時間を有するターゲットクエリが、実行されることが延期されてもよい）、実行計画最適化（execution plan optimization）におけるボトルネックを回避するために方法が特に有益であり、ならびに方法は特に、連合（Federated）データベースシステムに対して適合される。
【００３５】
ここで、Ｓ１０において提供された数値（ｘ１，…，ｘｎ）がさらに議論される。
【００３６】
それらの数値は、このデータベース上での／おけるクエリ（基準クエリ）の実行時間を表すことによってデータベースに関連する。もちろん、データベースは、経時的にわずかに発展することがあるが、本分野で既知の予測スキームの更新を得るように、方法が定期的に反復されてもよい。遷移（transitions）において、Ｓ１０において設けられた実行時間は正確でないことがあるが（データベースが発展していることを理由に）、それらはいまだに良好な近似値（approximations）を形成する。いずれにせよ、そのような更新事項は、当業者にとって自明であり、かつ本議論の対象外である。本議論は、クエリおよびその実行時間が予め定められたデータベースに対して考慮される（クエリの実行時間が当該データベース上でのクエリの実行に要する時間である）ことを意味する、データベース「における」クエリを対象とすることに留意されたい。
【００３７】
ここで、方法によって考慮されるデータベースおよびそのクエリが議論される。
【００３８】
データベース（ＤＢ）は、明確に定義された言語で表現されたクエリを使用して、ユーザが特定の部分の情報を取り出すことができる方法で記憶された、組織化されたデータの集合である。ユーザとデータベースとの間のインタフェースは、データベースマネジメントシステム（ＤＢＭＳ）と称される。最も有名なＤＢＭＳは、ＭｙＳＱＬ、ＰｏｓｔｇｒｅＳＱＬ、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ、Ｏｒａｃｌｅ、ＳＡＰおよびＤＢ２である。
【００３９】
データベースの考えは、非常に包括的であり、かつ多くの種類の機能的に異なるシステムを含む。方法のデータベースは、以下の種類のいずれかのデータベースであってもよい。
−演繹（Deductive）データベース（非特許文献１５で説明されるデータベースなど）。
−分散データベース（非特許文献１６で説明されるものなど）。
−連合データベースシステム（非特許文献１７で説明されるデータベースなど）。
−グラフデータベース（非特許文献１８で説明されるデータベースなど）。
−知識ベース（非特許文献１９で説明されるデータベースなど）。
−オペレーショナルデータベース（非特許文献２０で説明されるデータベースなど）。
−確率データベース（非特許文献２１で説明されるデータベースなど）。
−一時データベース（非特許文献２２で説明されるデータベースなど）。
【００４０】
全てのそれらの種類のデータベースは、それらの情報を記憶するために異なるアルゴリズムのデータ構造を使用するが、それらは全て、クエリの考えによって関連している。クエリを表すために使用される言語がデータベースの性質に依存する場合でさえ、それらの構造は、一般的な形状を共有することが多い。特に、連合データベースシステムは、ユーザが、統合フレームワークの下に、異なる性質の協調データベースと対話することができるように設計される。方法の主要部がクエリおよびその実行時間を取り扱うので、任意の種類のデータベースにそれを使用することができるという意味で包括的である。
【００４１】
方法によって考慮されるクエリはユーザによって記述されてもよく、よって宣言型言語（例えば、ＳＱＬ）で表現されることが多く、および効率的に応答するために変換されてもよい。この変換は、ユーザクエリを再表現し、それによってクエリ計画、すなわち実行計画（Execution Plan）と称される、従属スキーム（dependency scheme）に従って処理されるより小さなサブクエリに分解することができることを目的とする、クエリオプティマイザ（および、それは、非特許文献２３の論文などにおいて処理されてもよい）と称されるユニットによって実行される。クエリ計画は、各ノードが原子的操作（atomic operation）に対応し、および算出がリーフからルートに行われ、ルートの結果がユーザに与えられる回答に対応する（非特許文献２４の論文、または特許文献６および７などで上記引用されたように）、「プレーンノード（plain nodes」のツリーとして表されることが多い。
【００４２】
方法は、クエリ時間上でクラスタリングを使用する方法のカテゴリに属し、方法の主要部は、スカラクラスタリングに関する。上述したように、それらの方法は、クラスタ分析に大いに関連する。方法は、近年の他の最適なクラスタリングデバイスよりも高速な、最適なクラスタリング（標準的な目的関数（standard objective function）である、「全歪みに関して）を生じさせる。実際に、下記で示されるように、方法の算出時間は、最良の発見的問題解決（非最適な量子化を生じさせる）よりも比較可能である（および、さらに高速であることが多い）。
【００４３】
方法は、以下のパイプライン（上記で提示されてもいる）に従ってもよい。
−ステップ１：クエリ時間をクラスタリングする
−ステップ２：各々のクラスタ上でモデルを学習する
−ステップ３：クエリ実行時間を予測する
【００４４】
方法の主要部は、ステップ１にあり、および最適なクラスタリングスキームを算出する高速な方法を提案する。ステップ２および３は既に背景技術の欄で言及されており、ならびにその１つがクエリ上で有する特定のモデルに依存するので（それが表現される言語、それが関連するデータベースのタイプに依存するが、具体的な内在するアプリケーションにも依存する）、本議論は、主としてステップ１のみに焦点があてられ、ステップ２および３の考えは、簡潔に言及されるにすぎない。
【００４５】
先で既に議論されている、各クラスタ上でモデルを学習するステップが、さらに簡単に詳述される。それらの詳細は、全てが従来技術から公知である。
【００４６】
方法がクラスタ上で構築する最も簡単なモデルは、このクラスタに存在する任意のクエリが、クラスタの実行時間の平均に等しい予測実行時間を有することを考慮することにある（このことは、例えば、特許文献８でとられる選択である）。
【００４７】
より複合的な技術は、クエリ（クエリの内部統計として見ることができる特徴のリストにある、特許文献２の論文を参照）の表示に基づいて機械学習アルゴリズムを使用する。例えば、上述した研究報告の特許文献４は、各クラスタにおいて予測子を学習するためにサポートベクトルマシンを使用する。
【００４８】
先で既に議論されている、クエリ実行時間を予測するステップが、さらに簡単に詳述される。それらの詳細は、全てが従来技術から公知である。
【００４９】
新たなクエリが与えられるとき、古典的な方式は、クエリの「最も類似するクラスタ」を発見し、次いでステップ２で学習されたモデルを単に適用することにある。クラスタの数、および各クラスタのサイズの数に応じて、ターゲットクエリと特定のクラスタのうちの１つとの間で実行される比較の数が変化することがある。１つのアプローチは、先で議論された類似性の特定の概念（notion）を使用して、特許文献５で提案されたようにターゲットクエリを各クラスタの中心（centroids）と単に比較することである。
【００５０】
この点において、方法およびその多くの例のコンテキストが提供されているが、方法の主要部に関する詳細（すなわち、後のクラスタリングＳ３０を定義する、算出するステップＳ２０）がまだ提供されていない。これは以下で行われ、以下で提供される全ての実装形態の例が、上記提供された例示的な適用例のいずれかに適用されてもよいことに留意されたい。
【００５１】
前に示されたように、方法は、予め定められた数Ｋのクラスタに対する数値の最適Ｋ平均クラスタリングを算出するステップＳ２０を備える。しかしながら、これは乱暴に（brutally）は行われない。実際に、算出するステップＳ２０は、Ｋに対応する回数を、線形時間行最小検索アルゴリズムを反復することを含む（後述する例では、Ｋ−１回）。行最小検索アルゴリズムの公知なカテゴリの任意の予め定められた線形時間アルゴリズムのその使用によって、算出するステップＳ２０は、複雑度が低い。よって、方法は、Ｋ平均クラスタリング問題の新た解決策であり、かつアルゴリズムによる効率的な解決策を実装する。
【００５２】
算出するステップＳ２０に関するさらなる詳細を提供する前に、スカラ量子化がここで議論される。実際に、方法のクラスタリングＳ２０〜Ｓ３０は、この例では、それらの実行時間を仮想的に「量子化」し、および仮想的に量子化された値に関連してクラスタを定義することによって、それが実行時間に対する基準クエリをクラスタリングすることができるので、スカラ量子化のフレームワークに従う。実際に、クラスタの基準クエリは、クラスタの中心に等しい仮想的な実行時間（すなわち、当該クエリの基準クエリの実行時間の平均値）に関連付けられる。よって、基準クエリの実行時間はこのようにして量子化される。
【００５３】
公知であるように、スカラ量子化は、有限集合
【００５４】
【数１】
0006673683.tif 000002
【００５５】
を使用して、実際の値を近似させる算出ツールであり、デジタルステップと称されるＶの要素は、近似値として使用される値である。スカラ量子化器は、マッピング
【００５６】
【数２】
0006673683.tif 000003
【００５７】
として数学的に定義され、それによって、ｘとｑ（ｘ）との間の距離が小さくなりようになり、距離は、ユークリッド距離などの任意の予め定められた距離である（距離の概念はコンテキストに依存することがある）。
【００５８】
実際に、スカラ量子化器は、間隔（intervals）Ｉ1＝]−∞、ａ1[、Ｉ2＝[ａ1，ａ2[，…，ＩK＝[ａK-1、∞[（ａ1＜…＜ａK-1）への、
【００５９】
【数３】
0006673683.tif 000004
【００６０】
次いで、各々の
【００６１】
【数４】
0006673683.tif 000005
【００６２】
の区画を通じて常に定義され、Ｉiはｘ∈Ｉiとなるような間隔のみを表し、値ｑ（ｘ）＝ｃiを関連付ける。実際の数ａ1，…，ａK-1は「閾値（decision bounds）」と称される。非特許文献２５の論文は、量子化の完全な調査を与える。
【００６３】
方法は、例えば、最も広く使用されている、非特許文献２６で周知であり、かつ定義されたＫ平均法設定に焦点をあてる。この設定では、方法は、Ｓ２０において、昇順にソートされた所与のタプル
【００６４】
【数５】
0006673683.tif 000006
【００６５】
、および所与の整数Ｋ（一般に、Ｋ＝２bであり、ｂは各ｘiをエンコードするのに利用可能なビットの数である）を検索し、量子化器ｑは、最小全歪みを達成するＫのデジタルステップを使用し、全歪みは、
【００６６】
【数６】
0006673683.tif 000007
【００６７】
として定義される。
【００６８】
この量を最小化するために、方法は、各々の実際の値をその最も近いデジタルステップにマッピングする量子化器を単に扱うことができることが明らかである。よって、問題はまさに、
【００６９】
【数７】
0006673683.tif 000008
【００７０】
を最小化するＫの中心ｃ1，…，ｃKを発見することに等しい。
【００７１】
図３は、１０の値および４のデジタルステップに対する例を示す。最適な量子化は、集合｛ｃ1，…，ｃK｝によって与えられ、それによって、
【００７２】
【数８】
0006673683.tif 000009
【００７３】
になる。
【００７４】
この全歪みを最小化することは、量子化ステップ（所与のＫに対する）の間に失われる情報をできるだけ少なくすることを理解される必要がある。各ポイントｘiがその最も近い中心に黙示的に割り当てられており、よって、方法は、クラスタへの区画を構築しており、各クラスタは、所与の中心に割り当てられたポイントの集合に対応する（よって、最良の量子化器を発見することは、「ＰＣＭにおける最小二乗量子化」におけるＬｌｏｙｄによって説明されるように、クラスタリング問題である）。ｋ∈｛１，…，Ｋ｝ごとに、中心ｃkに対応するクラスタをｃkによって表す。実際には、各々の中心がその対応するクラスタのポイントの平均であることを理解することは容易である。さらに、ｘ1＜…＜ｘn、であることが想定されるので、各々のクラスタが連続するサブセットのポイントから構成されることに留意されたい。例えば、Ｋ＝４のクラスタに区分化することを望む４７の実数を有する場合、可能な最適なクラスタリングは、
【００７５】
【数９】
0006673683.tif 000010
【００７６】
である。
【００７７】
全て１＜＝ａ＜＝ｂ＜＝ｎの場合、表記（notation）
【００７８】
【数１０】
0006673683.tif 000011
【００７９】
が導入され、また、
【００８０】
【数１１】
0006673683.tif 000012
【００８１】
を表す。前の例の対応する全歪みは、
ＴＤ＝ｄｉｓｔｏ（１，１７）＋ｄｉｓｔｏ（１８，２４）＋ｄｉｓｔｏ（２５，４２）＋ｄｉｓｔｏ（４３，４７）
として記述することができる。
【００８２】
上述したように、この問題の解決策は既に存在するが、それらは、本方法よりも低速であり、それらのほとんどがまさに発見的問題解決である（すなわち、最適な量子化を生成しない）。
【００８３】
したがって、方法の例示的な実装形態では、数値（ｘ1，…，ｘn）がソートおよびインデックス付けされる。算出するステップＳ２０内での反復は、各々のそれぞれの反復ランクｋにおいて、および数値の数ｎ未満のそれぞれのインデックスｊごとに、正方行列Ｈに適用される線形時間行最小検索アルゴリズムに従って、それぞれの反復ランク（よってｋ）に対応するクラスタｋの数での、ｊ（よってｉ＜＝ｊ）未満のインデックス付けされた数値ｘiのサブセットに対して達成可能な、ＴＤmin（ｊ，ｋ）で表される最小全歪みの算出を含む。
【００８４】
この例では、各々のそれぞれの反復ランクｋにおいて、および数値の数ｎ未満のそれぞれのインデックスｊごとに、行インデックスｉごと、および各々の列インデックスｊごとに、行列エントリＨ（ｉ，ｊ）は、
−行インデックスの前のインデックス（ｉ−１）に対する前の反復において算出された最小全歪み（ＴＤmin（ｉ−１，ｋ−１））、および
−行インデックスと列インデックスとの間の数値の連続するサブセット（ｘi，…，ｘj）の歪み（ｄｉｓｔｏ（ｉ，ｊ））
の合計に対応してもよい。
【００８５】
そのような実装形態は、既存のクラスタリング方法よりも効率が良い（outperform）システム（それはまた、最適Ｋ平均クラスタリングを生成するが、特に時間Ｏ（Ｋ＊ｎ）においてより高速に実行するので）を提供する。一般的な使用では、例示的な方法は、「良好な」発見的問題解決よりも１０倍以上高速に実行することに留意されたい。
【００８６】
例示的なクラスタリングアルゴリズムのさらなる完全な概要がここで議論される。
【００８７】
最適な区画を算出するために、方法は、ダイナミックプログラミングパラダイム（Dynamic Programming paradigm）（非特許文献２７の論文で説明される）を使用する。特に、例示的な方法は、ｊ∈｛１，…，ｎ｝および各々のｋ∈｛１，…，Ｋ｝ごとに、ｊの第１のポイント（ｘ1，…，ｘj）を単に考慮する場合に、最大でｋのクラスタで達成することができる最小全歪みとして定義される値ＴＤmin（ｊ，ｋ）を算出する。
【００８８】
定義によって、全てのｊ∈｛１，…，Ｋ｝に対し、ＴＤmin（ｊ，１）＝ｄｉｓｔｏ（１，ｊ）を有し、なぜならば、１つのクラスタにおいてポイントの組を区分化する唯一の方法がそれら全てをとることであるからである。さらに、全てのｋ∈｛２，…，ｋ｝および全てのｊ∈｛１，…，ｎ｝に対し、式
【００８９】
【数１２】
0006673683.tif 000013
【００９０】
を有する。
【００９１】
この式は、最大でｋのクラスタで（ｘ1，…，ｘj）に対して達成することができる最小全歪みが、或るｉに対し、最大でｋ−１のクラスタおよび最終（final）クラスタとしての[ｘi，…，ｘj]でｉ−１の第１のポイントの最適クラスタリングから構成されるという事実を表す。上記式は、本方法の主要部にある。所与のｋ∈｛２，…，Ｋ｝に対し、全てのｊに対する値ＴＤmin（ｊ，ｋ−１）を算出した場合、方法の１つは、上記式における全ての可能な（possible）ｉ∈｛１，…，ｊ｝を試験することによって、全てのｊに対し、値ＴＤmin（ｊ，ｋ）を算出してもよい。しかしながら、この仮説的な（hypothetical）技術は、非常に低速なアルゴリズムにつながることがある。
【００９２】
これを克服するために、方法は、特定の行列において行最小検索に対する特定のカテゴリのアルゴリズムを使用する。
【００９３】
ここで例示的な方法が依存する行最小検索および全単調性（Total monotonicity）の概念が議論される。
【００９４】
行最小検索アルゴリズムは（非特許文献２８の論文で詳述されるように）、全ての１＜＝ｉ＜＝Ｒ，１＜＝ｊ＜＝Ｃに対し、値ｆ（ｉ，ｊ）を一定時間で計算し、および整数ｐ＝（ｐ1，…，ｐR）のベクトルを出力することでき、それによって
【００９５】
【数１３】
0006673683.tif 000014
【００９６】
とすることができるように、
関数
【００９７】
【数１４】
0006673683.tif 000015
【００９８】
を入力として見なすアルゴリズムである。
【００９９】
以下では、Ｆによって行列Ｆ＝（ｆ（ｉ，ｊ））i,jを表す。完全を期して、行列Ｆが特定の特性を有さない場合に、ベクトルｐを算出するために全てのそのエントリが要求される場合があることに留意されたい。しかしながら、Ｆに関する或る条件下では、抜本的により高速になるアルゴリズムを実装することができる。
【０１００】
行列Ｆは、それが次の条件を満たす場合に全体として単調（monotone）と称される。「ｉ，ｊ，ｋ、ｉ＜ｊに対し、Ｆ（ｋ，ｉ）＜Ｆ（ｋ，ｊ）の場合、全てのｋ'＜＝ｋに対し、Ｆ（ｋ'，ｉ）＜Ｆ（ｋ'，ｊ）」。
【０１０１】
全体的に単調な行列における行最小検索に対する線形−時間アルゴリズムが存在する（非特許文献２９の論文で説明されるように）。そのような予め定められたアルゴリズム（すなわち、線形時間行最小検索アルゴリズム）のいずれかは、行列Ｈ上でＳ２０における方法によって実装されてもよい。特に、発明者は、非特許文献２９の論文で提示された、飛躍的に高速に集束する（with dramatically fast convergence）（従来技術と比較して）周知のＳＭＡＷＫアルゴリズムを使用して当該方法を試験している。
【０１０２】
ここで、方法を飛躍的に高速に実行することを可能にする基本的特性が議論される。その前に、この特性の特定がＫ平均クラスタリング問題と行最小検索に対して提供される周知かつ強力なアルゴリズムとの間の架け橋（bridge）を作成することにつながり、およびＫ平均クラスタリングに関する長年の研究がそのような架け橋を特定してこなかったことに留意されたい。
【０１０３】
＜定理＞
全ての１＜＝ｉ＜ｊ＜ｎに対し、ｄｉｓｔｏ（ｉ，ｊ）＋ｄｉｓｔｏ（ｉ＋１，ｊ＋１）＜＝ｄｉｓｔｏ（ｉ，ｊ＋１）＋ｄｉｓｔｏ（ｉ＋１，ｊ）。
【０１０４】
＜証明＞
まず第一に、１＜＝ａ＜＝ｂ＜＝ｎに対し、ｄｉｓｔｏ（ａ，ｂ）は、定義によって（ｂ−ａ＋１）と乗算した（ｘa，…，ｘb）の変数に等しい。
【０１０５】
したがって、Ｋｏｎｉｇ−Ｈｕｙｇｅｎｓ式から
【０１０６】
【数１５】
0006673683.tif 000016
【０１０７】
有する。
【０１０８】
１＜＝ｉ＜ｊ＜ｎとなるようにｉおよびｊを考える。
【０１０９】
ｐ＝（ｂ−ａ＋１）を表し、
【０１１０】
【数１６】
0006673683.tif 000017
【０１１１】
であり、α＝ｘj+1、β＝ｘiであり、上記特定から
【０１１２】
【数１７】
0006673683.tif 000018
【０１１３】
【数１８】
0006673683.tif 000019
【０１１４】
を有する。
【０１１５】
したがって、式（１）
【０１１６】
【数１９】
0006673683.tif 000020
【０１１７】
である。
【０１１８】
さらに、
【０１１９】
【数２０】
0006673683.tif 000021
【０１２０】
【数２１】
0006673683.tif 000022
【０１２１】
である。
【０１２２】
したがって、式（２）
【０１２３】
【数２２】
0006673683.tif 000023
【０１２４】
である。
【０１２５】
Δ＝ｄｉｓｔｏ（ｉ，ｊ＋１）−ｄｉｓｔｏ（ｉ，ｊ）＋ｄｉｓｔｏ（ｉ＋１，ｊ）−ｄｉｓｔｏ（ｉ＋１，ｊ＋１）を表す。
【０１２６】
証明したい定理は、単純にΔ＞＝０と等しい。
【０１２７】
さらに、式（１）と式（２）とを加算すると、
【０１２８】
【数２３】
0006673683.tif 000024
【０１２９】
が得られる。
【０１３０】
目標は、Δ＞＝０を示すためにこの式を使用することである。
【０１３１】
概念を失うことなく、問題は変換（translation）によって不変であるので、Ｓ＝０であることを想定することができ（それは、
【０１３２】
【数２４】
0006673683.tif 000025
【０１３３】
による全てのポイントを変換することに対応する）、それによって
【０１３４】
【数２５】
0006673683.tif 000026
【０１３５】
とすることができ、
Δ'＝−ｐ（ｐ＋１）β2−ｐ（ｐ−１）α2＋（ｐ−１）（ｐ＋１）（α−β）2
である。
【０１３６】
項（term）をグループ化して、
Δ'＝−（ｐ＋１）β2＋（ｐ−１）α2−２（ｐ＋１）（ｐ−１）αβ
と記述することができる。
【０１３７】
全てのｌ∈｛ｉ＋１，…，ｊ｝に対しα＞＝ｘlであるので、Ｓ＝ｘi＋…＋ｘj＝β＋…＋α＜＝β＋（ｐ−１）α（ｘ1＜＝ｘnであることが想起される）であることに留意されたい。Ｓ＝０であることが想定されるので、
（ｐ−１）α＞＝−β
が得られる。
【０１３８】
さらに、ヌルである合計Ｓのより小さな項であるので、β＜＝０を明確に有し、よって、
−（ｐ−１）αβ＞＝β2
に従う。
【０１３９】
この不等式をΔの最後の式に再注入（reinject）すると、
Δ'＞＝−（ｐ＋１）β2＋（ｐ−１）α2＋２（ｐ＋１）β2＞＝（ｐ−１）α2＋（ｐ＋１）β2
【０１４０】
よって、Δ'＞＝０であり、結果としてΔ＞＝０であり、立証を結論づける。
【０１４１】
ここで、固定されたｋ∈｛２，…，Ｋ｝に対し、方法が全てのｊに対して全てのＴＤmin（ｊ，ｋ−１）を算出したと推定される。関係
【０１４２】
【数２６】
0006673683.tif 000027
【０１４３】
を通じて全てのｊに対して（ＴＤmin（ｊ，ｋ））jを取り出すことができることが想起される。
【０１４４】
ここで、上述した特性がどのようにして、方法が時間Ｏ（ｎ）において（ＴＤmin（ｊ，ｋ−１））jから全ての（ＴＤmin（ｊ，ｋ））jを算出することを支援するかが理解されよう。
【０１４５】
最初に、Ｈ（ｉ，ｊ）＝ＴＤmin（ｉ−１，ｋ−１）＋ｄｉｓｔｏ（ｉ，ｊ）を表す。
【０１４６】
ｄｉｓｔｏ（ｉ，ｊ）＋ｄｉｓｔｏ（ｉ＋１，ｊ＋１）＜＝ｄｉｓｔｏ（ｉ，ｊ＋１）＋ｄｉｓｔｏ（ｉ＋１，ｊ）であるので、ＴＤmin（ｉ−１，ｋ−１）＋ＴＤmin（ｉ，ｋ−１）の両側を加算することによって、
Ｈ（ｉ，ｊ）＋Ｈ（ｉ＋１，ｊ＋１）＜＝Ｈ（ｉ，ｊ＋１）＋Ｈ（ｉ＋１，ｊ）を得る。
【０１４７】
この特性は、行列Ｈ＝（Ｈ（ｉ，ｊ））i,jのＭｏｎｇｅの特性を称され（非特許文献３０の論文を参照）（実際に、方法は、ｊ＜ｉであるがそのような欠けた値（missing value）が実際に本当に問題にならないときに、Ｈ（ｉ，ｊ）の定義を無視してもよく、このことはこれ以上は論述されない）。一部の文献では、Ｋｎｕｔｈ−Ｙａｏ四角形不等式（quadrangle inequality）とも称される（例えば、非特許文献３１の論文を参照）。
【０１４８】
定理によって、行列Ｈは全体として単調であり、すなわち、ｉ＜ｊであるｉ，ｊ，ｋに対し、Ｈ（ｋ，ｉ）＜Ｈ（ｋ，ｊ）である場合、全てのｋ'＜＝ｋに対しＨ（ｋ'，ｉ）＜Ｈ（ｋ'，ｊ）である。これは実際に、Ｍｏｎｇｅの行列の周知の特性であり、証明される必要はない。
【０１４９】
ここで、（ＴＤmin（ｊ，ｋ））jを算出することは、行列Ｈの行の各々の最小値を算出することに等しいことに留意されよう。例示的な方法は、時間Ｏ（ｎ）において解決されるこの副課題に対して偶然に正確に設計されることになる、任意の予め定められた線形時間行最小検索アルゴリズム（ＳＭＡＷＫアルゴリズムなど）を引き起こす。行列Ｈはサイズｎ×ｎの行列であるが、方法はそれを全体として構築する必要はない。方法は、単に、一定の時間で任意のＨエントリを算出する方法をＳＭＡＷＫサブルーチンに提供する。
【０１５０】
よって、実際には、方法のアルゴリズムは最初に、第１の層（ＴＤmin（ｊ，０））jを算出してもよく、次いで、行最小検索（ＲＭＳ）サブルーチンを使用して第２の層（ＴＤmin（ｊ，１））jを算出し、および方法が全ての（ＴＤmin（ｊ，ｋ））j,kを取得する前に、第２の時間でＲＭＳアルゴリズムなどを使用して第３の層（ＴＤmin（ｊ，２））jを算出する。Ｋの層の各々が、算出されることになる時間Ｏ（ｎ）を要するので、アルゴリズム全体が時間Ｏ（Ｋｎ）で動作する。
【０１５１】
この点において、例では、方法はさらに、各々のそれぞれの反復ランクｋにおいて、例えば、専用行列Ｃｕｔminにおいて、行最小検索アルゴリズムによって返されるインデックスを記憶するステップを備えてもよい。この例示的な方法はさらに、算出するステップＳ２０において、記憶されたインデックスから最適クラスタリングを判定するステップを含んでもよい。
【０１５２】
単純かつ直接的な実装形態では、記憶されたインデックスから最適クラスタリングを判定するステップは、行列Ｃｕｔmin内で作用するステップを備える。特に、例示的な方法は、最後にインデックス付けされた数値（Ｃｕｔmin（ｎ，Ｋ））から開始して、数値を反復して区分化する（partition）。各々のそれぞれの反復ランクｑにおいて、現在形成されているクラスタの開始数値のインデックスは、ランクＫ−ｑの反復において（算出するステップＳ２０内での反復の間に）記憶されたインデックスに等しい。
【０１５３】
言い換えると、方法が毎回最小値を算出することに気付く場合、方法はまた、この最小値に到達するインデックスを得ることができる。より正確には、（ＴＤmin（ｊ，ｋ））j,kの各々の値は、そのインデックスを行列（Ｃｕｔmin（ｊ，ｋ））j,kに記憶することができる最小値として算出される。そのことから、方法は、テーブルＣｕｔminを参照することのみで、最適な区分を容易に得ることができる。
【図１】
0006673683.tif 000028
【図２】
0006673683.tif 000029
【図３】
0006673683.tif 000030