(57)【要約】【課題】所定の対象に関する所望の検索を可能にする。【解決手段】本願に係る情報処理装置は、取得部と、選択部とを有する。取得部はデータ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する。選択部は、連結ノードを判定対象とする判定処理において、連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択する。【選択図】図４
2019194815.tif 000002
【特許請求の範囲】
【請求項１】
データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得部と、
前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記選択部は、
前記検索クエリとの類似性に基づく前記判定処理の前記判定対象ノードを選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択部は、
前記連結ノードのうち、前記処理対象数の閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記選択部は、
前記検索に用いられるパラメータに応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記選択部は、
前記検索における検索範囲に関するパラメータに応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項３または請求項４に記載の情報処理装置。
【請求項６】
前記選択部は、
前記検索の処理時間に関する条件に応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項３〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記選択部は、
前記検索の検索精度に関する条件に応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項３〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記選択部は、
前記連結ノードのうち、前記所定のノードとの類似性が高い方から順に前記閾値に達するまで、前記判定対象ノードを選択する
ことを特徴とする請求項３〜７のいずれか１項に記載の情報処理装置。
【請求項９】
前記選択部は、
前記連結ノードのうち、前記所定のノードとの類似性が低い方から順に前記閾値に達するまで、前記判定対象ノードを選択する
ことを特徴とする請求項３〜７のいずれか１項に記載の情報処理装置。
【請求項１０】
前記選択部は、
前記連結ノードのうち、前記閾値に達するまで、ランダムに前記判定対象ノードを選択する
ことを特徴とする請求項３〜７のいずれか１項に記載の情報処理装置。
【請求項１１】
前記取得部は、
前記検索中の所定の繰返し処理において処理対象となっている前記所定のノードの前記連結ノードを取得する
ことを特徴とする請求項１〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記取得部は、
前記所定の繰返し処理の対象となるノード群から選択された一のノードである前記所定のノードの前記連結ノードを取得する
ことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記取得部は、
前記所定のノードを始点とする有向エッジである前記エッジにより、前記所定のノードと連結される前記連結ノードを取得する
ことを特徴とする請求項１〜１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記取得部は、
前記複数のノードが類似性に基づいて連結された前記グラフ情報の前記検索において、前記所定のノードの連結ノードを取得する
ことを特徴とする請求項１〜１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記取得部は、
前記複数のノードの各々が前記処理対象数以上の本数の前記エッジにより他のノードと連結された前記グラフ情報の前記検索において、前記所定のノードの連結ノードを取得する
ことを特徴とする請求項１〜１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記選択部により選択された前記判定対象ノードに対する前記判定処理結果に基づいて、前記検索クエリに類似するノードである類似ノードを決定する決定部、
をさらに備えることを特徴とする請求項１〜１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記決定部により決定された前記類似ノードに関する情報を提供する提供部、
をさらに備えたことを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記取得部は、
所定のユーザから前記検索クエリを取得し、
前記提供部は、
前記類似ノードに関する情報を前記所定のユーザが利用する端末装置に提供する
ことを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
コンピュータが実行する情報処理方法であって、
データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得工程と、
前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択工程と、
を含むことを特徴とする情報処理方法。
【請求項２０】
データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得手順と、
前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来、種々の情報を検索する技術が提供されている。例えば、無向エッジによって生成されたグラフ情報（グラフデータ）を用いて検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０９０３５１号公報
【特許文献２】特許第５２０８００１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、所定の対象に関する所望の検索を可能にすることが難しい場合がある。例えば、グラフ情報におけるノード間の連結関係をそのまま用いて静的に検索を行う場合、処理時間（検索時間）を優先して検索を行なったり、処理精度（検索精度）を優先して検索を行なったりするなど、種々の条件に応じた検索を行うことが難しいといった課題がある。
【０００５】
本願は、上記に鑑みてなされたものであって、所定の対象に関する所望の検索を可能にする情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願に係る情報処理装置は、データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得部と、前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択部と、を備えたことを特徴とする。
【発明の効果】
【０００７】
実施形態の一態様によれば、所定の対象に関する所望の検索を可能にすることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る情報処理の一例を示す図である。
【図２】図２は、実施形態に係る情報処理に用いるインデックスの一例を示す図である。
【図３】図３は、実施形態に係る情報処理システムの構成例を示す図である。
【図４】図４は、実施形態に係る情報処理装置の構成例を示す図である。
【図５】図５は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【図６】図６は、実施形態に係るインデックス情報記憶部の一例を示す図である。
【図７】図７は、実施形態に係るグラフ情報記憶部の一例を示す図である。
【図８】図８は、実施形態に係る閾値用情報記憶部の一例を示す図である。
【図９】図９は、実施形態に係る検索処理情報記憶部の一例を示す図である。
【図１０】図１０は、実施形態に係る情報処理の一例を示すフローチャートである。
【図１１】図１１は、実施形態に係る情報処理の一例を示すフローチャートである。
【図１２】図１２は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【０００９】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１０】
（実施形態）
〔１．情報処理〕
図１を用いて、実施形態に係る情報処理の一例について説明する。図１は、実施形態に係る情報処理の一例を示す図である。図１では、情報処理装置１００が所定の対象群をグラフ構造化したグラフ情報（グラフデータ）を検索することにより、クエリ等の一の対象に類似するノード（オブジェクト）を抽出する場合を示す。なお、対象とする情報（オブジェクト）は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。以下では、グラフ情報（グラフデータ）を単に「グラフ」と記載する場合がある。図１では、所定の処理の対象となるノードを選択する選択処理や所定のノードを抽出する抽出処理等の種々の処理が含まれる情報処理（以下「検索処理」ともいう）を示す。
【００１１】
なお、情報処理装置１００が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置１００は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置１００は、各対象から生成された所定の数値（例えば２進数の値や１６進数の値）を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離（類似度）が定義されていれば任意の形態のデータであっても良い。
【００１２】
〔１−１．グラフ情報について〕
情報処理装置１００は、図１中のグラフ情報ＧＲ１１−１〜ＧＲ１１−６に示すように、各ベクトル（ノード）が有向エッジにより連結されたグラフを用いて情報処理を行う。図１に示すグラフ情報ＧＲ１１−１〜ＧＲ１１−６は、検索（検索処理）の過程を模式的に示す図であり、グラフ情報ＧＲ１１−１〜ＧＲ１１−６は、同一のグラフである。以下、グラフ情報ＧＲ１１−１〜ＧＲ１１−６について、特に区別なく説明する場合には、グラフ情報ＧＲ１１と記載する。なお、図１中のグラフ情報ＧＲ１１に示すようなグラフ情報は、情報処理装置１００が生成してもよいし、情報処理装置１００は、図１中のグラフ情報ＧＲ１１に示すようなグラフ情報を情報提供装置５０（図３参照）等の他の外部装置から取得してもよい。
【００１３】
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「Ａ」から所定のノード「Ｂ」に連結される有向エッジとは、参照元をノード「Ａ」とし、参照先をノード「Ｂ」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て双方向エッジであってもよい。
【００１４】
例えば、このようにノード「Ａ」を参照元とするエッジをノード「Ａ」の出力エッジという。また、例えば、このようにノード「Ｂ」を参照先とするエッジをノード「Ｂ」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する２個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【００１５】
例えば、情報処理装置１００は、数百万〜数億等の単位の膨大な画像情報に対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置１００は、図１中のグラフ情報ＧＲ１１に示すように、ノードＮ３〜Ｎ９等に示すような複数のノード（ベクトル）を含むグラフ情報を取得する。図１の例では、説明を簡単にするために、１０個のノード及び１個のクエリを図示して処理の概要を説明するが、グラフ情報ＧＲ１１にはノードＮ１、Ｎ２等の多数のノードが含まれる。また、図１の例では、グラフ情報ＧＲ１１における各ノードは、そのノードとの間の距離が近い方から所定数のノードへのエッジ（出力エッジ）が連結される。例えば、所定数は、目的や用途等に応じて、２や５や１０や１００等の種々の値であってもよい。例えば、所定数が２である場合、ノードＮ１からは、ノードＮ１からの距離が最も近いノード及び２番目に距離が近い２個のノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル（Ｎ次元ベクトル）間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離等の種々の距離が用いられてもよい。例えば、距離は、２つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
【００１６】
また、このように「ノードＮ＊（＊は任意の数値）」と記載した場合、そのノードはノードＩＤ「Ｎ＊」により識別されるノードであることを示す。例えば、「ノードＮ１」と記載した場合、そのノードはノードＩＤ「Ｎ１」により識別されるノードである。
【００１７】
また、図１中のグラフ情報ＧＲ１１では、ノードＮ５は、ノードＮ９９へ向かう有向エッジであるエッジＥ５３が連結される。すなわち、ノードＮ５は、ノードＮ９９とエッジＥ５３により連結される。このように「エッジＥ＊（＊は任意の数値）」と記載した場合、そのエッジはエッジＩＤ「Ｅ＊」により識別されるエッジであることを示す。例えば、「エッジＥ４１」と記載した場合、そのエッジはエッジＩＤ「Ｅ４１」により識別されるエッジである。例えば、ノードＮ５を参照元とし、ノードＮ９９を参照先として連結されるエッジＥ５３により、ノードＮ５からノードＮ９９に辿ることが可能となる。この場合、有向エッジであるエッジＥ５３は、ノードＮ５を中心として識別される場合、出力エッジとなり、ノードＮ９９を中心として識別される場合、入力エッジとなる。
【００１８】
言い換えると、有向エッジであるエッジＥ５３は、ノードＮ５側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードＮ９９側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。また、図１では図示を省略するが、ノードＮ９９は、ノードＮ５へ向かう有向エッジ（エッジＮ９９１とする）が連結されてもよい。このように、ノードＮ９９からの出力エッジであるエッジＮ９９１がノードＮ５に連結されてもよい。この場合、ノードＮ５とノードＮ９９との間には、ノードＮ５からノードＮ９９へ向かう有向エッジであるエッジＥ５３と、ノードＮ９９からノードＮ５へ向かう有向エッジであるエッジＮ９９１との２個のエッジが連結される。
【００１９】
また、図１中のグラフ情報ＧＲ１１は、ユークリッド空間であってもよい。また、図１に示すグラフ情報ＧＲ１１は、各ベクトル間の距離等の説明のための概念的な図であり、グラフ情報ＧＲ１１は、多次元空間である。例えば、図１に示すグラフ情報ＧＲ１１は、平面上に図示するため２次元の態様にて図示されるが、例えば１００次元や１０００次元等の多次元空間であるものとする。なお、各ノードに対応するベクトルデータは、Ｎ次元の実数値ベクトルであってもよい。
【００２０】
また、図１の例では、グラフ情報ＧＲ１１においては、適宜「ノードＮ＊（＊は任意の数値）」の図示を省略し、各ノードに対応する「○」内に「ノードＮ＊」の「＊」の値を付すことにより表現する。すなわち、「ノードＮ＊」の部分の「＊」が一致するノードに対応する。例えば、グラフ情報ＧＲ１１中の左上の「○」であって、内部に「８」が付された「○」は、ノードＩＤ「Ｎ８」により識別されるノード（ノードＮ８）に対応する。また、図１の例では、グラフ情報ＧＲ１１−１以外のグラフ情報ＧＲ１１−２〜ＧＲ１１−６では、各エッジの符号の図示を省略する。
【００２１】
ここで、各ノード間の距離は、ノード（画像情報）の類似性を示し、距離が近いほど類似している。本実施形態においては、グラフ情報ＧＲ１１における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する画像情報の類似性が、グラフ情報ＧＲ１１内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図１の例では、グラフ情報ＧＲ１１における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフ情報ＧＲ１１における各ノード間の距離が長いオブジェクト同士の類似度が低い。
【００２２】
例えば、図１中のグラフ情報ＧＲ１１において、ノードＮ４とノードＮ６とは近接している、すなわち距離が短い（近い）。そのため、ノードＮ４に対応するオブジェクトと、ノードＮ６に対応するオブジェクトとは類似度が高いことを示す。また、図１中のグラフ情報ＧＲ１１において、ノードＮ８とノードＮ９９とは遠隔にある、すなわち距離が長い（遠い）。そのため、ノードＮ８に対応するオブジェクトと、ノードＮ９９に対応するオブジェクトとは類似度が低いことを示す。
【００２３】
〔１−２．処理例〕
ここから、図１を用いて情報処理の詳細を説明する。なお、図１に示す各ステップは、検索処理の概要を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。なお、情報処理装置１００が行う検索処理は、図１中のクエリＱＥ１１に対応する類似ノードが抽出されれば、どのような処理フローであってもよい。また、図１の例では、クエリＱＥ１１に対応する類似ノードの抽出数を「３」である場合を示す。すなわち、図１の例では、クエリＱＥ１１に対応する類似ノードは、グラフ情報ＧＲ１１からクエリＱＥ１１の３個の類似ノードを抽出する。
【００２４】
図１に示す検索用情報ＳＩＮＦ１１−１〜ＳＩＮＦ１１−６は、検索処理の過程における情報の管理を模式的に示す。検索用情報ＳＩＮＦ１１−１〜ＳＩＮＦ１１−６は、グラフ情報ＧＲ１１−１〜ＧＲ１１−６の各々に対応する。例えば、検索用情報ＳＩＮＦ１１−１は、グラフ情報ＧＲ１１−１における検索処理時に対応する情報を示す。以下、検索用情報ＳＩＮＦ１１−１〜ＳＩＮＦ１１−６について、特に区別なく説明する場合には、検索用情報ＳＩＮＦ１１と記載する。例えば、情報処理装置１００は、検索用情報ＳＩＮＦ１１に対応する情報を記憶部１２０（図４参照）に格納し、記憶部１２０に記憶された検索用情報ＳＩＮＦ１１に基づいて検索処理を行う。
【００２５】
図１の例では、情報処理装置１００が検索クエリ（以下「クエリＱＥ１１」とする）に類似するオブジェクトに対応するノード（「類似ノード」ともいう）を抽出する場合を示す。例えば、情報処理装置１００は、クエリＱＥ１１をユーザが利用する端末装置１０（図３参照）から取得する。以下では、クエリＱＥ１１を取得した後の検索処理の詳細を説明する。クエリＱＥ１１は、画像情報（画像データ）であってもよいし、画像情報がベクトル化された情報であってもよい。なお、以下では、クエリＱＥ１１がノード（オブジェクト）のベクトル情報に対応する情報であるものとする。例えばクエリＱＥ１１は、Ｎ次元ベクトルであるものとする。
【００２６】
まず、情報処理装置１００は、グラフ情報を取得する（ステップＳ１１）。例えば、情報処理装置１００は、グラフ情報記憶部１２３（図７参照）からグラフ情報ＧＲ１１を取得する。例えば、グラフ情報ＧＲ１１は、所定の基準に基づいて生成された近傍グラフであってもよい。例えば、グラフ情報ＧＲ１１は、ｋ近傍（k-nearest  neighbor）グラフである。図１の例では説明を簡単にするために、グラフ情報ＧＲ１１は、ｋが「４」であり、各ノードから近傍の４個のノードに出力エッジが連結されたグラフである場合を例に説明する。なお、ｋは「５０」や「２００」等の種々の値であってもよい。
【００２７】
なお、グラフは、ｋ近傍グラフに限らず、近似ｋ近傍グラフ等、複数のノードが有向エッジに連結されたグラフであればどのようなグラフであってもよい。また、図１では、処理の説明に必要なノード及びエッジのみを図示し、他のノードやエッジについては図示を省略する。例えば、図１中のグラフ情報ＧＲ１１では、ノードＮ３〜Ｎ９、Ｎ５６、Ｎ７８、Ｎ９９とクエリＱＲ１１のみを図示し、Ｎ１、Ｎ２等の他のノードについては図示を省略する。また、図１中のグラフ情報ＧＲ１１では、ノードＮ４、Ｎ５からの出力エッジのみを図示し、Ｎ３、Ｎ６〜Ｎ９、Ｎ５６、Ｎ７８、Ｎ９９等からの出力エッジについては図示を省略する。
【００２８】
そして、情報処理装置１００は、検索の起点となるノード（以下「起点ノード」ともいう）決定する（ステップＳ１２）。図１の例では、情報処理装置１００は、所定のインデックス情報（インデックスデータ）を用いて、起点ノードを決定する。以下では、インデックス情報（インデックスデータ）を単に「インデックス」と記載する場合がある。
【００２９】
例えば、情報処理装置１００は、図２中の情報群ＧＩＮＦ１１に示すようなインデックス情報ＩＮＤ１１を用いて起点ノードを決定する。図２は、実施形態に係る情報処理に用いるインデックスの一例を示す図である。なお、インデックス情報ＩＮＤ１１は、情報処理装置１００が生成してもよいし、情報処理装置１００は、インデックス情報ＩＮＤ１１を情報提供装置５０等の他の外部装置から取得してもよい。
【００３０】
図１の例では、情報処理装置１００は、インデックス情報ＩＮＤ１１に基づいて、クエリＱＥ１１に対応する起点ノードを決定する。情報処理装置１００は、インデックス情報記憶部１２２（図６参照）に記憶されたインデックス情報ＩＮＤ１１を用いて、起点ノードを決定する。例えば、インデックス情報ＩＮＤ１１は、グラフ情報ＧＲ１１中のいくつかのノードに到達可能なツリー構造を有するインデックスである。図２の例では説明を簡単にするために、インデックス情報ＩＮＤ１１は、ノードＮ１〜Ｎ５の５個のノードに到達するルートのみを図示するが、多数（例えば５００や１０００等）の他のノードへ到達するルートが含まれてもよい。
【００３１】
図２中のインデックス情報ＩＮＤ１１は、図６中のインデックス情報記憶部１２２に示す階層構造を有する。例えば、インデックス情報ＩＮＤ１１は、ルートＲＴの直下に位置する第１階層のノード（ベクトル）が、節点ＶＴ１、ＶＴ２、ＶＴ３等であることを示す。また、例えば、インデックス情報ＩＮＤ１１は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４（図示せず）であることを示す。例えば、インデックス情報ＩＮＤ１１は、節点ＶＴ２−１の直下の第３階層のノードが、ノードＮ１、Ｎ２、すなわちグラフ情報ＧＲ１１中のノード（ベクトル）であることを示す。また、インデックス情報ＩＮＤ１１は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３、Ｎ４、Ｎ５、すなわちグラフ情報ＧＲ１１中のノード（ベクトル）であることを示す。
【００３２】
例えば、情報処理装置１００は、図１中のインデックス情報ＩＮＤ１１に示すような木構造型のインデックス情報を用いて、グラフ情報ＧＲ１１における起点ノードを決定する。図１の例では、情報処理装置１００は、クエリＱＥ１１に基づいて、インデックス情報ＩＮＤ１１を上（ルートＲＴ）から下へ辿ることにより、インデックス情報ＩＮＤ１１の近傍候補となる起点ノードを決定（特定）する。これにより、情報処理装置１００は、効率的に検索クエリ（クエリＱＥ１１）に対応する起点ノードを決定することができる。なお、図１の例では、情報処理装置１００は、２個のノードを起点ノードに決定する。
【００３３】
例えば、情報処理装置１００は、インデックス情報ＩＮＤ１１をルートＲＴからリーフノード（グラフ情報ＧＲ１１中のノード）まで辿ることにより、クエリＱＥ１１に対応する起点ノードを決定してもよい。図１の例では、情報処理装置１００は、インデックス情報ＩＮＤ１１をルートＲＴからノードＮ４やノードＮ５まで辿ることにより、ノードＮ４やノードＮ５を起点ノードとして決定する。
【００３４】
例えば、情報処理装置１００は、木構造に関する種々の従来技術を適宜用いて、インデックス情報ＩＮＤ１１をルートＲＴからリーフノードまで辿ることにより、辿りついたリーフノードを起点ノードとして決定してもよい。例えば、情報処理装置１００は、クエリＱＥ１１との類似度に基づいて、インデックス情報ＩＮＤ１１を下へ辿ることにより、起点ノードを決定してもよい。例えば、情報処理装置１００は、ルートＲＴから節点ＶＴ１、ＶＴ２等のいずれの節点に辿るかを、クエリＱＥ１１と節点ＶＴ１、ＶＴ２との類似度に基づいて決定してもよい。例えば、情報処理装置１００は、ルートＲＴから節点ＶＴ１、ＶＴ２等のうち、クエリＱＥ１１との類似度が最も高い節点ＶＴ２へ辿ると決定してもよい。また、例えば、情報処理装置１００は、節点ＶＴ２から節点ＶＴ２−１〜ＶＴ２−４等のうち、クエリＱＥ１１との類似度が最も高い節点ＶＴ２−２へ辿ると決定してもよい。
【００３５】
例えば、情報処理装置１００は、節点ＶＴ２−２からノードＮ３、Ｎ４、Ｎ５等のうち、クエリＱＥ１１との類似度が高い節点ノードＮ４へ辿ると決定してもよい。そして、情報処理装置１００は、ノードＮ４がグラフ情報ＧＲ１１中のノードであるため、ノードＮ４を起点ノードに決定する。また、情報処理装置１００は、ノードＮ４から上位の節点ＶＴ２−２に戻り、節点ＶＴ２−２からノードＮ３、Ｎ５等のうち、クエリＱＥ１１との類似度がノードＮ４の次に高い節点ノードＮ５へ辿ると決定してもよい。そして、情報処理装置１００は、ノードＮ５がグラフ情報ＧＲ１１中のノードであるため、ノードＮ５を起点ノードに決定する。これにより、図１中のグラフ情報ＧＲ１１−１に示すように、情報処理装置１００は、２個のノードＮ４、Ｎ５を起点ノードに決定する。
【００３６】
そして、情報処理装置１００は、検索用情報ＳＩＮＦ１１−１に示すように、起点ノードの決定に基づいて、検索用情報ＳＩＮＦ１１を更新する。検索用情報ＳＩＮＦ１１中の集合Ｓは、繰り返し処理の対象となる所定のノード（対象ノード）が含まれる集合（情報群）を示す。検索用情報ＳＩＮＦ１１中の集合Ｒは、検索処理による抽出候補となるノード（候補ノード）が含まれる集合（情報群）を示す。また、検索用情報ＳＩＮＦ１１中の集合Ｃは、重複検索を回避するために後述する判定処理の対象から除外されるノードが含まれる集合（情報群）を示す。例えば、検索用情報ＳＩＮＦ１１中の集合Ｃは、候補ノードとして集合Ｒに追加されたノードや判定処理の対象に既になったノード（以下、併せて「処理済みノード」ともいう）が含まれる集合（情報群）を示す。
【００３７】
なお、検索用情報ＳＩＮＦ１１−１に更新される前の検索用情報ＳＩＮＦ１１（検索用情報ＳＩＮＦ１１−０）においては、集合Ｓ、集合Ｒ、集合Ｃの各々は空集合であるものとする。すなわち、集合Ｓ、集合Ｒ、集合Ｃの初期設定は、空集合であってもよい。
【００３８】
図１の例では、情報処理装置１００は、検索用情報ＳＩＮＦ１１−１に示すように、起点ノードに決定されたノードＮ４、Ｎ５を集合Ｓに追加する。また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−１に示すように、集合ＲにノードＮ４、Ｎ５を追加する。このように、情報処理装置１００は、起点ノードに決定されたノードＮ４、Ｎ５を、抽出候補として、集合Ｒに追加する。そして、図１の例では、情報処理装置１００は、検索用情報ＳＩＮＦ１１−１に示すように、集合ＣにノードＮ４、Ｎ５を追加する。
【００３９】
なお、上記の処理は一例であり、情報処理装置１００は、所望の検索処理が実現可能であれば、どのような処理を行ってもよい。例えば、情報処理装置１００は、起点ノードに決定されたノードＮ４、Ｎ５を集合Ｒや集合Ｃに追加しなくてもよい。また、起点ノードの数は２個に限らず、情報処理装置１００は、１個の起点ノードや３個以上の起点ノードを決定してもよい。例えば、情報処理装置１００は、ノードＮ３〜Ｎ５の３個のノードを起点ノードとして決定してもよい。なお、情報処理装置１００は、インデックス情報ＩＮＤ１１を用いずに、起点ノードを決定してもよい。例えば、情報処理装置１００は、ランダムに起点ノードを決定してもよい。情報処理装置１００は、検索開始時にグラフ情報ＧＲ１１からランダムに１個以上のノードを選択し、それを起点ノードとしてもよいし、または、予め指定された１個以上のノードを起点ノードとしても良い。
【００４０】
次に、情報処理装置１００は、対象ノードを決定する（ステップＳ１３）。情報処理装置１００は、集合Ｓに含まれるノードから、対象ノードを決定する。情報処理装置１００は、検索用情報ＳＩＮＦ１１−１中の集合Ｓに含まれるノードＮ４、Ｎ５から、対象ノードを決定する。情報処理装置１００は、集合Ｓに含まれるノードのうち、最もクエリＱＥ１１に類似するノードを対象ノードに決定する。図１の例では、情報処理装置１００は、ノードＮ４、Ｎ５のうち、最もクエリＱＥ１１に類似するノードＮ４を対象ノードに決定する。そして、情報処理装置１００は、集合ＳからノードＮ４を対象ノードとして抽出する。情報処理装置１００は、検索用情報ＳＩＮＦ１１−２に示すように、検索用情報ＳＩＮＦ１１を更新する。具体的には、情報処理装置１００は、検索用情報ＳＩＮＦ１１−２に示すように、対象ノードとして抽出されたノードＮ４を集合Ｓから除外する。
【００４１】
そして、情報処理装置１００は、対象ノードにエッジにより連結されたノード（連結ノード）のうち、判定処理の対象となるノード（判定対象ノード）を選択する（ステップＳ１４）。ここでいう判定処理は、処理対象となるノードを抽出候補に含めるか否かを判定する処理であるものとする。すなわち、ここでいう判定処理は、そのノードを集合Ｒに追加するか否かを判定する処理である。
【００４２】
情報処理装置１００は、対象ノードからの出力エッジが連結された連結ノードのうち、判定対象ノードを選択する。図１の例では、情報処理装置１００は、対象ノードであるノードＮ４からのエッジＥ４１〜Ｅ４４が連結されたノードＮ６〜Ｎ９の４個のノードのうち、判定対象ノードを選択する。
【００４３】
情報処理装置１００は、処理対象数の閾値に基づいて判定対象ノードを選択する。情報処理装置１００は、図１中の閾値情報ＴＬ１１に示すように、閾値ＴＨ１１の値「３」に基づいて判定対象ノードを選択する。すなわち、図１の例では、情報処理装置１００は、ノードＮ４の４個の連結ノードであるノードＮ６〜Ｎ９のうち、閾値ＴＨ１１の値「３」に基づいて、３個のノードを判定対象ノードとして選択する。このように、情報処理装置１００は、連結ノードのうち、判定処理の対象となるノードの数を制限することにより、高速な検索を行うことを可能にする。閾値ＴＨ１１には、「３」に限らず、「５」や「２０」等の種々の値が用いられてもよい。なお、閾値については種々の情報に基づいて決定されてもよいが詳細は後述する。
【００４４】
また、情報処理装置１００は、対象ノードの連結ノードのうち、所定の基準に基づいて、判定対象ノードを選択する。例えば、情報処理装置１００は、対象ノードの連結ノードのうち、対象ノードとの類似度に基づいて、判定対象ノードを選択する。具体的には、情報処理装置１００は、対象ノードの連結ノードのうち、対象ノードとの間の距離に基づいて、判定対象ノードを選択する。なお、情報処理装置１００は、対象ノードの連結ノードのうち、処理済みノードとして集合Ｃに含まれるノード以外のノードを、判定対象ノードを選択してもよい。例えば、情報処理装置１００は、ノードＮ４の連結ノードであるノードＮ６〜Ｎ９のうち、ノードＮ９が処理済みノードとして集合Ｃに含まれる場合、ノードＮ９以外のノードＮ６〜Ｎ８から、判定対象ノードを選択してもよい。なお、情報処理装置１００は、対象ノードの連結ノードの数が処理対象数の閾値以下である場合、その対象ノードの連結ノードの全てを、判定対象ノードとして選択してもよい。
【００４５】
図１の例では、情報処理装置１００は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。情報処理装置１００は、図１中の連結ノード情報ＮＬ１１に示すような、対象ノードであるノードＮ４とその連結ノードであるノードＮ６〜Ｎ９の各々との間の距離に基づいて、判定対象ノードを選択する。図１中の連結ノード情報ＮＬ１１は、距離が短い方から順に並べられているものとする。すなわち、図１の例では、ノードＮ６のノードＮ４との距離Ｄ４６が最も短く、ノードＮ９のノードＮ４との距離Ｄ４９が２番目に短く、ノードＮ７のノードＮ４との距離Ｄ４７が３番目に短く、ノードＮ８のノードＮ４との距離Ｄ４８が最も長い。
【００４６】
図１の例では、情報処理装置１００は、対象ノードであるノードＮ４とその連結ノードであるノードＮ６〜Ｎ９の各々との間の距離が近い方から順に閾値に達するまで、判定対象ノードを選択する。情報処理装置１００は、図１中のグラフ情報ＧＲ１１−２に示すように、４個のノードＮ６〜Ｎ９のうち、ノードＮ６、Ｎ９、Ｎ７の３個のノードを判定対象ノードに選択する。なお、図１の例では、説明を簡単にするため、３個のノードが１度に判定対象ノードとして選択される場合を示したが、情報処理装置１００は、各判定処理時において１個ずつ判定対象ノードを選択してもよい。例えば、情報処理装置１００は、図１１中のステップＳ３０６に示すように、連結ノードから１個ずつノードを判定対象ノードとして選択し、判定対象を行う処理を繰り返してもよい。
【００４７】
なお、上記は一例であり、情報処理装置１００は、種々の基準に基づいて、連結ノードから判定対象ノードを選択してもよい。情報処理装置１００は、連結ノードのうち、対象ノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択してもよい。また、情報処理装置１００は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択してもよい。また、以下に説明する判定処理において検索範囲を規定する範囲（以下「半径ｒ」とする場合がある）は、判定処理を行う前の初期値が「∞（無限大）」であるものとする。なお、半径ｒは、クエリＱＥ１１を中心とした超球の半径であってもよい。
【００４８】
そして、情報処理装置１００は、判定処理を行う（ステップＳ１５）。図１の例では、情報処理装置１００は、ノードＮ６、Ｎ９、Ｎ７のうち、クエリＱＥ１１と最も近いノードＮ６を判定対象ノードとして判定処理を行う。
【００４９】
情報処理装置１００は、判定対象ノードであるノードＮ６を抽出候補とするかを判定する。例えば、情報処理装置１００は、ノードＮ６とクエリＱＥ１１間の距離（「距離ＤＱ６」とする）が半径ｒ以下である場合、ノードＮ６を抽出候補と判定する。例えば、距離ＤＱ６は、所定の距離関数ｄ（ｘ、ｙ）を用いて、ｄ（Ｎ６，ＱＥ１１）により導出される。以下、所定の距離関数ｄ（ｘ、ｙ）中の「ｘ」、「ｙ」は所定の距離関数ｄの変数（引数）である。所定の距離関数ｄ（ｘ、ｙ）は、変数ｘ、ｙへの値の割当てに基づいて、変数ｘ、ｙに割り当てられた値に対応する距離を示す値を出力する。以下では、所定の距離関数ｄ（ｘ、ｙ）を「距離関数ｄ」と記載する場合がある。また、例えば、所定の距離関数ｄ（ｘ、ｙ）の出力値を示す場合、距離ｄ（ｘ、ｙ）と記載する場合がある。例えば、距離関数ｄは、ユークリッド距離やマハラノビス距離やコサイン類似度等を算出する関数であってもよい。
【００５０】
距離関数ｄは、２個の変数の各々にベクトルが割り当てられた（入力された）場合、そのベクトル間の距離（類似度）を示す値を出力する。例えば、距離関数ｄは、２個のベクトルを変数として、そのベクトル間の距離（類似度）を示す値を出力する関数である。例えば、距離関数ｄは、入力された１個のノードのベクトルと検索クエリのベクトルとに基づいて、そのノードと検索クエリとの間の距離（類似度）を示す値を出力する。図１の例では、情報処理装置１００は、半径ｒが「∞」であり、距離ＤＱ６は半径ｒ以下であるため、ノードＮ６を抽出候補と判定する。このような判定結果に基づいて、情報処理装置１００は、判定対象ノードであるノードＮ６を抽出候補として抽出する（ステップＳ１６）。
【００５１】
また、情報処理装置１００は、ノードＮ６を対象ノードとするかを判定する。例えば、情報処理装置１００は、距離ＤＱ６が半径ｒ（１＋ε）以下である場合、ノードＮ６を対象ノードとすると判定する。図１の例では、情報処理装置１００は、半径ｒが「∞」であり、距離ＤＱ６は半径ｒ（１＋ε）以下であるため、ノードＮ６を対象ノードとすると判定する。これにより、情報処理装置１００は、ノードＮ６を対象ノードとして抽出する。なお、上記の「ε」は、探索範囲を決定するための係数（以下「検索範囲係数ε」ともいう）であり、所定の実数が割り当てられる。例えば、図１の例では、検索範囲係数εは、「０．１」等の値が割り当てられる。なお、検索範囲係数εには、「−０．０５」等のマイナス値や０が割り当てられてもよい。
【００５２】
そして、情報処理装置１００は、検索用情報ＳＩＮＦ１１−３に示すように、ノードＮ６の判定処理に基づいて、検索用情報ＳＩＮＦ１１を更新する。図１の例では、情報処理装置１００は、検索用情報ＳＩＮＦ１１−３に示すように、抽出候補と判定されたノードＮ６を集合Ｒに追加する。検索用情報ＳＩＮＦ１１−３中の集合Ｒには、３個のノードＮ６、Ｎ４、Ｎ５が含まれる。これにより、情報処理装置１００は、集合Ｒに含まれるノード数が３個となり、抽出数に達する。なお、検索用情報ＳＩＮＦ１１−３中の集合Ｒに示すノードＮ６、Ｎ４、Ｎ５の順に、クエリＱＥ１１との間の距離が短いことを示す。すなわち、ノードＮ６、Ｎ４、Ｎ５は、ノードＮ６がクエリＱＥ１１との間の距離が最も短く、ノードＮ６、Ｎ４、Ｎ５の順でクエリＱＥ１１との間の距離が短いことを示す。
【００５３】
また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−３に示すように、対象ノードとすると判定されたノードＮ６を集合Ｓに追加する。また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−３に示すように、集合ＣにノードＮ６を追加する。
【００５４】
そして、情報処理装置１００は、抽出候補となるノード数が抽出数「３」に等しくなったため、検索範囲を更新する（ステップＳ１７）。情報処理装置１００は、候補ノード数が抽出数「３」に等しくなったため、半径ｒの値を更新する。具体的には、情報処理装置１００は、半径ｒの値を、候補ノードのうちクエリＱＥ１１から最も遠いノードと、クエリＱＥ１１との間の距離に更新する。
【００５５】
図１の例では、検索用情報ＳＩＮＦ１１−３中の集合Ｒに示すようにノードＮ５が候補ノードのうち最も遠いノードであるため、情報処理装置１００は、半径ｒの値を「∞」から「ｄ（Ｎ５，ＱＥ１１）」に更新する。これにより、情報処理装置１００は、図１中のグラフ情報ＧＲ１１−３に示すように、半径ｒに対応する範囲を範囲ＡＲ１１に更新する。また、情報処理装置１００は、図１中のグラフ情報ＧＲ１１−３に示すように、半径ｒ（１＋ε）に対応する範囲を範囲ＡＲ２１に更新する。
【００５６】
そして、情報処理装置１００は、判定処理を行う（ステップＳ１８）。図１の例では、情報処理装置１００は、ノードＮ６、Ｎ９、Ｎ７のうち、ノードＮ６の次にクエリＱＥ１１と近いノードＮ９を判定対象ノードとして判定処理を行う。
【００５７】
情報処理装置１００は、判定対象ノードであるノードＮ９を抽出候補とするかを判定する。例えば、情報処理装置１００は、ノードＮ９とクエリＱＥ１１間の距離（「距離ＤＱ９」とする）が半径ｒ以下である場合、ノードＮ９を抽出候補と判定する。例えば、距離ＤＱ９は、距離関数ｄを用いて、ｄ（Ｎ９，ＱＥ１１）により導出される。図１の例では、情報処理装置１００は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」であり、距離ＤＱ９は半径ｒより大きいため、ノードＮ９を抽出候補としないと判定する。情報処理装置１００は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ９が範囲ＡＲ１１外に位置するためノードＮ９を抽出候補としないと判定する。このような判定結果に基づいて、情報処理装置１００は、判定対象ノードであるノードＮ９を抽出候補として抽出しない（ステップＳ１９）。
【００５８】
また、情報処理装置１００は、ノードＮ９を対象ノードとするかを判定する。例えば、情報処理装置１００は、距離ＤＱ９が半径ｒ（１＋ε）以下である場合、ノードＮ９を対象ノードとすると判定する。図１の例では、情報処理装置１００は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」であり、距離ＤＱ９は半径ｒ（１＋ε）以下であるため、ノードＮ９を対象ノードとすると判定する。情報処理装置１００は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ９が範囲ＡＲ２１内に位置するためノードＮ９を対象ノードにすると判定する。これにより、情報処理装置１００は、ノードＮ９を対象ノードとして抽出する。
【００５９】
そして、情報処理装置１００は、検索用情報ＳＩＮＦ１１−４に示すように、ノードＮ６の判定処理に基づいて、検索用情報ＳＩＮＦ１１を更新する。図１の例では、情報処理装置１００は、検索用情報ＳＩＮＦ１１−４に示すように、ノードＮ９が抽出候補と判定されなかったため、集合Ｒを更新しない。また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−４に示すように、対象ノードとすると判定されたノードＮ９を集合Ｓに追加する。また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−４に示すように、集合ＣにノードＮ９を追加する。例えば、抽出候補となるノード数が抽出数「３」に等しいが、ノードＮ５が候補ノードのうち最も遠いノードであることに変更が無いため、情報処理装置１００は、検索範囲を更新しない。
【００６０】
そして、情報処理装置１００は、判定処理を行う（ステップＳ２０）。図１の例では、情報処理装置１００は、ノードＮ６、Ｎ９、Ｎ７のうち、ノードＮ９の次にクエリＱＥ１１と近いノードＮ７を判定対象ノードとして判定処理を行う。
【００６１】
情報処理装置１００は、判定対象ノードであるノードＮ７を抽出候補とするかを判定する。例えば、情報処理装置１００は、ノードＮ７とクエリＱＥ１１間の距離（「距離ＤＱ７」とする）が半径ｒ以下である場合、ノードＮ７を抽出候補と判定する。例えば、距離ＤＱ７は、距離関数ｄを用いて、ｄ（Ｎ７，ＱＥ１１）により導出される。図１の例では、情報処理装置１００は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」でり、距離ＤＱ７は半径ｒ以下であるため、ノードＮ７を抽出候補と判定する。情報処理装置１００は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ７が範囲ＡＲ１１内に位置するためノードＮ７を抽出候補にすると判定する。このような判定結果に基づいて、情報処理装置１００は、判定対象ノードであるノードＮ７を抽出候補として抽出する（ステップＳ２１）。
【００６２】
また、情報処理装置１００は、ノードＮ７を対象ノードとするかを判定する。例えば、情報処理装置１００は、距離ＤＱ７が半径ｒ（１＋ε）以下である場合、ノードＮ７を対象ノードとすると判定する。図１の例では、情報処理装置１００は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」であり、距離ＤＱ７は半径ｒ（１＋ε）以下であるため、ノードＮ７を対象ノードとすると判定する。情報処理装置１００は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ７が範囲ＡＲ２１内に位置するためノードＮ７を対象ノードにすると判定する。これにより、情報処理装置１００は、ノードＮ７を対象ノードとして抽出する。
【００６３】
そして、情報処理装置１００は、検索用情報ＳＩＮＦ１１−５に示すように、ノードＮ７の判定処理に基づいて、検索用情報ＳＩＮＦ１１を更新する。図１の例では、情報処理装置１００は、検索用情報ＳＩＮＦ１１−５に示すように、抽出候補と判定されたノードＮ７を集合Ｒに追加する。ここで、情報処理装置１００は、集合Ｒに含まれるノードがＮ４〜Ｎ７の４個となるため、集合Ｒから１個のノードを除外する。情報処理装置１００は、集合Ｒから最もクエリＱＥ１１との間の距離が遠いノードＮ５を除外する。これにより、検索用情報ＳＩＮＦ１１−５中の集合Ｒには、３個のノードＮ６、Ｎ７、Ｎ４が含まれる。なお、検索用情報ＳＩＮＦ１１−５中の集合Ｒに示すノードＮ６、Ｎ７、Ｎ４の順に、クエリＱＥ１１との間の距離が短いことを示す。すなわち、ノードＮ６、Ｎ７、Ｎ４は、ノードＮ６がクエリＱＥ１１との間の距離が最も短く、ノードＮ６、Ｎ７、Ｎ４の順でクエリＱＥ１１との間の距離が短いことを示す。
【００６４】
また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−５に示すように、対象ノードとすると判定されたノードＮ７を集合Ｓに追加する。また、情報処理装置１００は、検索用情報ＳＩＮＦ１１−５に示すように、集合ＣにノードＮ７を追加する。
【００６５】
そして、情報処理装置１００は、抽出候補となるノード数が抽出数「３」に等しく、候補ノードのうち最も遠いノードが変更されたため、検索範囲を更新する（ステップＳ２２）。情報処理装置１００は、候補ノードのうちノードＮ４が最も遠いノードとなったため、半径ｒの値を更新する。具体的には、情報処理装置１００は、半径ｒの値を、候補ノードのうちクエリＱＥ１１から最も遠いノードと、クエリＱＥ１１との間の距離に更新する。
【００６６】
図１の例では、検索用情報ＳＩＮＦ１１−５中の集合Ｒに示すようにノードＮ４が候補ノードのうち最も遠いノードであるため、情報処理装置１００は、半径ｒの値を「ｄ（Ｎ５，ＱＥ１１）」から「ｄ（Ｎ４，ＱＥ１１）」に更新する。これにより、情報処理装置１００は、図１中のグラフ情報ＧＲ１１−５に示すように、半径ｒに対応する範囲を範囲ＡＲ１２に更新する。また、情報処理装置１００は、図１中のグラフ情報ＧＲ１１−５に示すように、半径ｒ（１＋ε）に対応する範囲を範囲ＡＲ２２に更新する。
【００６７】
そして、情報処理装置１００は、上述した処理を対象ノードが無くなるまで繰り返し処理する（ステップＳ２２）。情報処理装置１００は、集合Ｓが空（空集合）になるまで上述した処理を繰り返す。例えば、情報処理装置１００は、検索用情報ＳＩＮＦ１１−５中の集合Ｓに含まれるノードＮ５、Ｎ６等を対象ノードとして上述した処理を繰り返す（ステップＳ２３）。
【００６８】
これにより、情報処理装置１００は、クエリＱＥ１１について、抽出数「３」に対応する３個の類似ノードを決定する（ステップＳ２４）。図１の例では、情報処理装置１００は、検索用情報ＳＩＮＦ１１−６中の集合Ｒに示すように、ノードＮ６、Ｎ７、Ｎ５６をクエリＱＥ１１の類似ノードに決定する。すなわち、情報処理装置１００は、集合Ｒに含まれるノードＮ６、Ｎ７、Ｎ５６を類似ノードに決定する。例えば、情報処理装置１００は、ノードＮ６、Ｎ７、Ｎ５６を示す情報をクエリＱＥ１１の類似ノードとして、検索の要求元へ提供する。例えば、情報処理装置１００は、クエリＱＥ１１に基づく検索結果として、ノードＮ６、Ｎ７、Ｎ５６を示す情報を、検索の要求元へ提供する。
【００６９】
上述したように、情報処理装置１００は、対象ノードの連結ノードのうち、閾値の数のノードを判定対象ノードとして選択する。例えば、情報処理装置１００は、対象ノードの連結ノードの数よりも小さい閾値を用いることにより、対象ノードの連結ノードの全てを判定対象ノードとせずに、所定の基準で連結ノードの一部を判定対象ノードとして選択する。言い換えると、情報処理装置１００は、グラフ情報におけるノード間の連結関係を動的に変更して判定対象ノードを選択する。これにより、情報処理装置１００は、辿るノードの数を動的に調整して、対象ノードの連結ノードの全てを判定対象ノードとする場合に比べて検索速度（処理速度）を向上させることができる。
【００７０】
このように、情報処理装置１００は、対象ノードの連結ノードのうち辿るノードの数を動的に調整することで、生成済みの一のグラフ情報を用いる場合であっても、異なる処理速度や検索精度を実現することができる。すなわち、情報処理装置１００は、生成済みの静的なグラフ情報（以下「静的グラフ」ともいう）を用いる場合あっても、判定対象ノードとして選択するノード数を動的に変更することにより、種々の処理速度や検索精度を満たす検索処理を行うことができる。これにより、情報処理装置１００は、所定の対象に関する所望の検索を可能にすることができる。
【００７１】
例えば、図１に示すような有向エッジを含むグラフデータの生成においては、出力エッジ（外向きエッジ）、入力エッジ（内向きエッジ）を調整しようとする場合、上述のように出力エッジと入力エッジとは表裏一体の関係なので独立に調整するができない。また、出力エッジや入力エッジを調整したグラフが生成できたとしても、ユーザの検索速度（処理速度）等の性能要求は個別の検索要求ごとに違う可能性があり、静的に生成された静的グラフでは異なる性能要求に対応できないといった課題もある。また、特定の条件（時間優先や精度優先）に最適化されたグラフ対して、各検索時において個別に時間優先であったり、精度優先であったりする場合があり、このような検索時の個別の要求条件に対して対応ができないといった課題もある。そこで、情報処理装置１００は、静的グラフを用いた検索において、ユーザの性能要求や個別の検索要求ごとに動的に判定対象ノードの数を変更して検索処理を行う。
【００７２】
このように、情報処理装置１００は、対象ノードの連結ノードを判定対象とする判定処理において、判定処理の処理対象数に関する基準に基づいて、連結ノードから判定対象ノードを選択する。これにより、情報処理装置１００は、検索処理ごとに要求される条件ごとに動的に判定対象ノードの数が調整された、所望の検索を行うことができる。したがって、情報処理装置１００は、ユーザの性能要求や個別の検索要求ごとに動的に対応した、所望の検索を行うことができる。そのため、情報処理装置１００は、所定の対象に関する所望の検索を可能にすることができる。
【００７３】
〔１−３．グラフ情報〕
なお、情報処理装置１００は、検索処理に種々のグラフ情報を用いてもよい。例えば、対象ノードへの入力エッジを検索時に動的に変更することは困難であるが、情報処理装置１００は、対象ノードからの出力エッジ（連結エッジ）を変更することができる。そのため、情報処理装置１００は、各ノードを対象ノードとした探索時に、利用する対象ノードの出力エッジ（連結エッジ）を変更する。例えば、情報処理装置１００は、各ノードに付与されているエッジの長さに基づいて、判定対象ノードを選択する。例えば、情報処理装置１００は、探索時に到達したノードにおいて実際に付与されたエッジよりも少ないエッジを用いて判定対象ノードを選択する。これにより、情報処理装置１００は、所望の検索時間を満たす検索を行うことができる。
【００７４】
このように、情報処理装置１００は、検索時に利用するエッジ数を調整する（削減する）ため、グラフの各ノードには調整範囲を包含するように多くのエッジ付与しておくことが望ましい。例えば、情報処理装置１００は、各ノードが処理対象数（閾値）以上の本数のエッジにより他のノードと連結されたグラフを生成する。例えば、情報処理装置１００は、要求される検索精度を満たすようにグラフの各ノードに多くのエッジ付与しておくことが望ましい。このように、情報処理装置１００は、所望の検索精度を満たすように生成されたグラフ情報（「グラフ情報ＧＲ５１」とする）を用いてもよい。例えば、情報処理装置１００は、所望の検索精度を満たすように多くのエッジがノードに付与されたグラフ情報ＧＲ５１を生成する。
【００７５】
この場合、情報処理装置１００は、グラフ情報ＧＲ５１を用いた検索において、対象ノードの全連結ノードを判定対象ノードとして選択することにより、所望の検索精度を満たす検索を行うことができる。また、情報処理装置１００は、グラフ情報ＧＲ５１を用いた検索において、処理速度を向上させたい場合、対象ノードの連結ノードうち一部を判定対象ノードとして選択することにより、処理速度を向上させた検索を行うことができる。
【００７６】
また、情報処理装置１００は、各ノード間が全て連結された完全グラフを用いてもよい。この場合、情報処理装置１００は、完全グラフのうち処理速度の要求に基づいて判定対象ノードとして選択するノード数を動的に変更することで、所望の処理速度を満たす検索処理を行うことができる。
【００７７】
〔１−４．インデックス情報〕
図２の例に示すインデックス情報（インデックスデータ）は一例であり、情報処理装置１００は、種々のインデックス情報を用いて、グラフ情報を検索してもよい。情報処理装置１００は、検索時の起点ノードの決定に用いるインデックスを生成してもよい。例えば、情報処理装置１００は、高次元ベクトルを高速に検索するための検索インデックス（インデックス情報）を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【００７８】
例えば、情報処理装置１００は、図２に示すようなツリー構造（木構造）に関するインデックス情報ＩＮＤ１１をインデックスとして生成してもよい。例えば、情報処理装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスをインデックスとして生成してもよい。例えば、情報処理装置１００は、ＶＰ木（Vantage-Point  tree）に関する検索インデックスをインデックスとして生成してもよい。
【００７９】
また、例えば、情報処理装置１００は、その他の木構造を有するインデックスとして生成してもよい。例えば、情報処理装置１００は、木構造のインデックスのリーフがグラフに接続する種々のインデックスを生成してもよい。例えば、情報処理装置１００は、木構造のインデックスのリーフがグラフ中のノードに対応する種々のインデックスを生成してもよい。また、情報処理装置１００は、このようなインデックスを用いて検索を行う場合、インデックスを辿って到達したリーフ（ノード）からグラフを探索してもよい。
【００８０】
なお、上述したようなインデックスは一例であり、情報処理装置１００は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のインデックスを生成してもよい。例えば、情報処理装置１００は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、インデックスを生成してもよい。例えば、情報処理装置１００は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のインデックスを生成してもよい。情報処理装置１００は、上述のようなインデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置１００は、上述のようなインデックスとグラフとを用いることにより、所定の対象に関してより高速な検索を可能にすることができる。
【００８１】
〔１−５．閾値について〕
図１の例では、閾値として「３」を用いる場合を示したが、情報処理装置１００は、種々の情報を適宜用いて閾値を決定してもよい。この点について以下説明する。なお、情報処理装置１００は、下記の閾値の決定に限らず、ユーザが所望の検索精度や処理時間を満たすことが可能であれば、どのように閾値を決定してもよい。
【００８２】
例えば、情報処理装置１００は、探索範囲を決定する係数である検索範囲係数「ε」に基づいて、利用するエッジ数、すなわち閾値を決定してもよい。情報処理装置１００は、上記のように探索範囲を決定する係数「ε」に基づいて検索精度（検索時間）を調整するため、設定された係数「ε」を用いて閾値を決定する。例えば、情報処理装置１００は、下記の式（１）のように係数「ε」を用いて閾値を決定（導出）してもよい。
【００８３】
【数１】
2019194815.tif 000003
【００８４】
ここで、上記式（１）の左辺中の「ｅｐ」は、閾値の値「ｅｐ」を示す。また、上記式（１）の右辺中の「ε」は、検索範囲係数「ε」を示す。また、上記式（１）の右辺中の「ｗｅ」は、検索範囲係数「ε」に掛ける所定係数を示す。また、上記式（１）の右辺中の「ｅ０」は、初期値（所定定数）を示す。例えば、「ｗｅ」には「２０」といった種々の数値が割り当てられ、「ｅ０」には数値「３０」といった種々の数値が割り当てられる。例えば、「ε」が「０．１」であり、「ｗｅ」が「１０」であり、「ｅ０」が「５」である場合、上記の式（１）は、「ｅｐ＝１０１０×０．１＋５」となる。すなわち、「ｅｐ」が「１５（＝１０１＋５）」となり、閾値が「１５」に決定される。なお、情報処理装置１００は、閾値を決定可能であれば、上記式（１）に限らず、種々の情報（関数等）に基づいて、閾値を決定してもよい。
【００８５】
なお、上記式（１）中の右辺の各変数の値は情報処理装置１００が生成（導出）してもよいし、情報処理装置１００は、上記式（１）中の右辺の各変数の値を情報提供装置５０（図３参照）等の他の外部装置から取得してもよい。検索範囲係数「ε」や所定係数「ｗｅ」や初期値「ｅ０」の値は、情報処理装置１００が生成（導出）してもよいし、情報提供装置５０（図３参照）等の他の外部装置から情報処理装置１００が取得してもよい。検索範囲係数「ε」は、ユーザにより指定されてもよい。
【００８６】
ここで、実際の検索処理においては、ユーザは検索範囲係数「ε」ではなく検索精度または処理時間を指定することが想定される。そのため、情報処理装置１００は、検索精度または処理時間から検索範囲係数「ε」を決定し、その検索範囲係数「ε」に基づいて閾値を決定してもよい。例えば、情報処理装置１００は、検索範囲係数「ε」を要求される検索時間や検索精度に基づいて決定（導出）してもよい。この場合、情報処理装置１００は、下記の式（２）を用いて、検索時間や検索精度から検索範囲係数「ε」を決定（導出）してもよい。
【００８７】
【数２】
2019194815.tif 000004
【００８８】
ここで、上記式（２）の左辺中の「ε」は、検索範囲係数「ε」を示す。また、上記式（２）の右辺中の「ｆ（）」は、変数ｘに基づいて検索範囲係数「ε」を導出する関数を示す。また、上記式（２）の右辺中の「ｘ」は、関数ｆに入力される変数を示す。例えば、「ｘ」には、検索時間や検索精度に関する値が割り当てられる。
【００８９】
例えば、上記関数ｆが、指定された検索時間に対応する検索範囲係数「ε」を出力する関数である場合、情報処理装置１００は、変数ｘに検索時間を割り当てることにより、対応する検索範囲係数「ε」の値「ｅｐ」を算出する。この場合、情報処理装置１００は、ユーザが要求する検索時間を示す値を取得し、関数ｆの変数ｘにその値を割り当てることにより、ユーザが要求する検索時間を満たすための検索範囲係数「ε」を算出する。
【００９０】
また、例えば、上記関数ｆが、指定された検索精度に対応する検索範囲係数「ε」を出力する関数である場合、情報処理装置１００は、変数ｘに検索精度を割り当てることにより、対応する検索範囲係数「ε」の値「ｅｐ」を算出する。この場合、情報処理装置１００は、ユーザが要求する検索精度を示す値を取得し、関数ｆの変数ｘにその値を割り当てることにより、ユーザが要求する検索精度を満たすための検索範囲係数「ε」を算出する。
【００９１】
なお、上記式（２）に示すような検索範囲係数「ε」を算出する関数ｆは情報処理装置１００が生成してもよいし、情報処理装置１００は、関数ｆを情報提供装置５０（図３参照）等の他の外部装置から取得してもよい。
【００９２】
例えば、情報処理装置１００は、要求された検索精度に基づいて、検索処理による測定を行い、上記式（２）を生成してもよい。例えば、情報処理装置１００は、要求された検索精度に基づいて検索処理による測定を行い、上記式（１）及び上記式（２）を生成してもよい。
【００９３】
例えば、情報処理装置１００は、要求された検索精度に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式（２）を生成してもよい。例えば、情報処理装置１００は、要求された検索精度に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式（１）及び上記式（２）を生成してもよい。
【００９４】
例えば、情報処理装置１００は、要求された処理時間に基づいて、検索処理による測定を行い、上記式（２）を生成してもよい。例えば、情報処理装置１００は、要求された処理時間に基づいて検索処理による測定を行い、上記式（１）及び上記式（２）を生成してもよい。
【００９５】
例えば、情報処理装置１００は、要求された処理時間に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式（２）を生成してもよい。例えば、情報処理装置１００は、要求された処理時間に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式（１）及び上記式（２）を生成してもよい。
【００９６】
また、情報処理装置１００は、下記の式（３）を用いて、検索時間や検索精度から直接閾値を算出してもよい。例えば、情報処理装置１００は、検索処理において上記の「ε」が用いられない場合、下記の式（３）を用いて、検索時間や検索精度から直接閾値を決定（導出）してもよい。例えば、情報処理装置１００は、検索処理において上記の「ε」が固定値である場合、下記の式（３）を用いて、検索時間や検索精度から直接閾値を決定（導出）してもよい。例えば、情報処理装置１００は、検索処理において上記の「ε」が固定値であり、「ε」の決定時から要求する検索精度や処理時間が変更された場合、下記の式（３）を用いて、検索時間や検索精度から直接閾値を決定（導出）してもよい。
【００９７】
【数３】
2019194815.tif 000005
【００９８】
ここで、上記式（３）の左辺中の「ｅｐ」は、閾値の値「ｅｐ」を示す。また、上記式（３）の右辺中の「ｇ（）」は、変数ｘに基づいて閾値を導出する関数を示す。また、上記式（３）の右辺中の「ｘ」は、関数ｇに入力される変数を示す。例えば、「ｘ」には、検索時間や検索精度に関する値が割り当てられる。
【００９９】
例えば、上記関数ｇが、指定された検索時間に対応する閾値を出力する関数である場合、情報処理装置１００は、変数ｘに検索時間を割り当てることにより、対応する閾値の値「ｅｐ」を算出する。この場合、情報処理装置１００は、ユーザが要求する検索時間を示す値を取得し、関数ｇの変数ｘにその値を割り当てることにより、ユーザが要求する検索時間を満たすための閾値を算出する。
【０１００】
また、例えば、上記関数ｇが、指定された検索精度に対応する閾値を出力する関数である場合、情報処理装置１００は、変数ｘに検索精度を割り当てることにより、対応する閾値の値「ｅｐ」を算出する。この場合、情報処理装置１００は、ユーザが要求する検索精度を示す値を取得し、関数ｇの変数ｘにその値を割り当てることにより、ユーザが要求する検索精度を満たすための閾値を算出する。
【０１０１】
なお、上記式（３）に示すような閾値を算出する関数ｇは情報処理装置１００が生成してもよいし、情報処理装置１００は、関数ｇを情報提供装置５０（図３参照）等の他の外部装置から取得してもよい。
【０１０２】
例えば、情報処理装置１００は、要求された検索精度に基づいて、検索処理による測定を行い、上記式（３）を生成してもよい。例えば、情報処理装置１００は、要求された検索精度に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式（３）を生成してもよい。また、例えば、情報処理装置１００は、要求された検索精度に基づいて、一のグラフ及び所定値の検索範囲係数「ε」を用いた検索処理による測定を行い、その一のグラフ及び所定値の検索範囲係数「ε」に対応する上記式（３）を生成してもよい。
【０１０３】
例えば、情報処理装置１００は、要求された処理時間に基づいて、検索処理による測定を行い、上記式（３）を生成してもよい。例えば、情報処理装置１００は、要求された処理時間に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式（３）を生成してもよい。また、例えば、情報処理装置１００は、要求された処理時間に基づいて、一のグラフ及び所定値の検索範囲係数「ε」を用いた検索処理による測定を行い、その一のグラフ及び所定値の検索範囲係数「ε」に対応する上記式（３）を生成してもよい。
【０１０４】
〔１−６．検索過程に応じた変更〕
情報処理装置１００は、検索処理（探索）中に判定対象ノードの選択基準や閾値等の検索条件を動的に変更して、検索処理を行ってもよい。例えば、情報処理装置１００は、検索処理中にもエッジ数を変更しても良い。例えば、情報処理装置１００は、探索開始時はより遠いクエリに効率良く到達するために、長いエッジ、すなわち多くのエッジを利用してもよい。また、例えば、情報処理装置１００は、探索開始終盤は不必要な長いエッジを利用しないように利用するエッジ数を少なくしてもよい。例えば、情報処理装置１００は、探索開始時か否かは、探索したノード数や、単位探索ノード数当たりでの新たに発見された検索結果としてのノード数の増減傾向等に基づいて判定してもよい。
【０１０５】
情報処理装置１００は、検索処理中に動的に基準を変更し、連結ノードから判定対象ノードを選択してもよい。例えば、情報処理装置１００は、検索開始時は連結ノードのうち、対象ノードとの類似性が低い方から判定対象ノードを選択し、検索開始から所定の処理経過後は連結ノードのうち、対象ノードとの類似性が高い方から判定対象ノードを選択してもよい。これにより、情報処理装置１００は、より適切に検索処理を実行することができる。
【０１０６】
情報処理装置１００は、検索処理中に動的に閾値を変更し、連結ノードから判定対象ノードを選択してもよい。例えば、情報処理装置１００は、検索処理中に要求される検索時間を超過しそうな場合、閾値の数を小さくすることで処理速度を向上させ、要求される検索時間を満たすように検索処理を行ってもよい。また、情報処理装置１００は、検索処理中に要求される検索精度を達成できなそうな場合、閾値の数を大きくすることで判定対象ノードの数を増大させ、要求される検索精度を満たすように検索処理を行ってもよい。これにより、情報処理装置１００は、より適切に検索処理を実行することができる。
【０１０７】
〔２．情報処理システムの構成〕
図３に示すように、情報処理システム１は、端末装置１０と、情報提供装置５０と、情報処理装置１００とが含まれる。端末装置１０と、情報提供装置５０と、情報処理装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図３は、実施形態に係る情報処理システムの構成例を示す図である。なお、図３に示した情報処理システム１には、複数台の端末装置１０や、複数台の情報提供装置５０や、複数台の情報処理装置１００が含まれてもよい。
【０１０８】
端末装置１０は、ユーザによって利用される情報処理装置である。端末装置１０は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置１０をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置１０と読み替えることもできる。なお、上述した端末装置１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等により実現される。
【０１０９】
情報提供装置５０は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトＩＤが格納される。例えば、情報提供装置５０は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置５０は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置５０は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置１００に提供する。また、情報提供装置５０は、クエリを情報処理装置１００に送信することにより、情報処理装置１００からクエリに対応する画像を示すオブジェクトＩＤ等を受信する。
【０１１０】
情報処理装置１００は、検索処理において、所定のノードとエッジにより連結されたノードである連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択するコンピュータである。例えば、情報処理装置１００は、選択した判定対象ノードに基づいてノードを抽出する抽出装置である。
【０１１１】
情報処理装置１００は、クエリに類似するオブジェクトを抽出する検索装置である。例えば、情報処理装置１００は、端末装置からクエリ情報（クエリ）を受信すると、クエリに類似する対象（ベクトル情報等）を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置１００が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、ＵＲＬ（Uniform  Resource  Locator）等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置１００が画像を検索する場合を一例として説明する。
【０１１２】
〔３．情報処理装置の構成〕
次に、図４を用いて、実施形態に係る情報処理装置１００の構成について説明する。図４は、実施形態に係る情報処理装置１００の構成例を示す図である。図４に示すように、情報処理装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、情報処理装置１００は、情報処理装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【０１１３】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図３中のネットワークＮ）と有線または無線で接続され、端末装置１０や情報提供装置５０との間で情報の送受信を行う。
【０１１４】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部１２０は、図４に示すように、オブジェクト情報記憶部１２１と、インデックス情報記憶部１２２と、グラフ情報記憶部１２３と、閾値用情報記憶部１２４と、検索処理情報記憶部１２５とを有する。
【０１１５】
（オブジェクト情報記憶部１２１）
実施形態に係るオブジェクト情報記憶部１２１は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部１２１は、オブジェクトＩＤやベクトルデータを記憶する。図５は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図５に示すオブジェクト情報記憶部１２１は、「オブジェクトＩＤ」、「ベクトル情報」といった項目が含まれる。
【０１１６】
「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトＩＤにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図５の例では、オブジェクトを識別するオブジェクトＩＤに対して、オブジェクトに対応するベクトルデータ（ベクトル情報）が対応付けられて登録されている。
【０１１７】
例えば、図５の例では、ＩＤ「ＯＢ１」により識別されるオブジェクト（対象）は、「１０，２４，５１，２．．．」の多次元のベクトル情報が対応付けられることを示す。
【０１１８】
なお、オブジェクト情報記憶部１２１は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１１９】
（インデックス情報記憶部１２２）
実施形態に係るインデックス情報記憶部１２２は、インデックスに関する各種情報を記憶する。図６は、実施形態に係るインデックス情報記憶部の一例を示す図である。具体的には、図６の例では、インデックス情報記憶部１２２は、ツリー構造のインデックス情報を示す。図６の例では、インデックス情報記憶部１２２は、「ルート階層」、「第１階層」、「第２階層」、「第３階層」等といった項目が含まれる。なお、「第１階層」〜「第３階層」に限らず、インデックスの階層数に応じて、「第４階層」、「第５階層」、「第６階層」等が含まれてもよい。
【０１２０】
「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート（最上位）の階層を示す。「第１階層」は、インデックスの第１階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第１階層」に格納されるノードは、インデックスの根（ルート）に直接結ばれる階層に対応するノードとなる。
【０１２１】
「第２階層」は、インデックスの第２階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第２階層」に格納されるノードは、第１階層のノードに結ばれる直下の階層に対応するノードとなる。「第３階層」は、インデックスの第３階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第３階層」に格納されるノードは、第２階層のノードに結ばれる直下の階層に対応するノードとなる。
【０１２２】
図６に示す例においては、インデックス情報記憶部１２２には、図１中のインデックス情報ＩＮＤ１１に対応する情報が記憶される。例えば、インデックス情報記憶部１２２は、第１階層のノードが、節点ＶＴ１〜ＶＴ３等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【０１２３】
また、インデックス情報記憶部１２２は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４であることを示す。また、インデックス情報記憶部１２２は、節点ＶＴ２−１の直下の第３階層のノードが、ノードＮ１、ノードＮ２のグラフ情報ＧＲ１１中のノード（ベクトル）であることを示す。インデックス情報記憶部１２２は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３、ノードＮ４、ノードＮ５のグラフ情報ＧＲ１１中のノード（ベクトル）であることを示す。
【０１２４】
なお、インデックス情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１２５】
（グラフ情報記憶部１２３）
実施形態に係るグラフ情報記憶部１２３は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部１２３は、検索処理等の情報処理に用いられるグラフ情報を記憶する。図７の例は、グラフ情報記憶部１２３は、近傍グラフデータを記憶する。図７は、実施形態に係るグラフ情報記憶部の一例を示す図である。図７に示すグラフ情報記憶部１２３は、「ノードＩＤ」、「オブジェクトＩＤ」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジＩＤ」や「参照先」といった情報が含まれる。
【０１２６】
「ノードＩＤ」は、グラフデータにおける各ノード（対象）を識別するための識別情報を示す。また、「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。
【０１２７】
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図７の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジＩＤ」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（ノード）を示す情報を示す。すなわち、図７の例では、ノードを識別するノードＩＤに対して、そのノードに対応するオブジェクト（対象）を識別する情報やそのノードからの有向エッジ（出力エッジ）が連結される参照先（ノード）が対応付けられて登録されている。
【０１２８】
図７の例では、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）は、オブジェクトＩＤ「ＯＢ１」により識別されるオブジェクト（対象）に対応することを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ１１」により識別されるエッジ（エッジＥ１１）が、ノードＩＤ「Ｎ７８」により識別されるノード（ノードＮ７８）に連結されることを示す。すなわち、図７の例では、グラフ情報におけるノードＮ１からはエッジＥ１１によりノードＮ７８へ辿ることができることを示す。
【０１２９】
また、図７の例では、ノードＩＤ「Ｎ４」により識別されるノード（ノードＮ４）は、オブジェクトＩＤ「ＯＢ４」により識別されるオブジェクト（対象）に対応することを示す。また、ノードＮ４からは、エッジＩＤ「Ｅ４１」により識別されるエッジ（エッジＥ４１）が、ノードＩＤ「Ｎ６」により識別されるノード（ノードＮ６）に連結されることを示す。すなわち、図７の例では、グラフ情報におけるノードＮ４からはエッジＥ４１によりノードＮ６へ辿ることができることを示す。
【０１３０】
なお、グラフ情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部１２３は、各ノード（ベクトル）間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部１２３は、各ノード（ベクトル）間の距離を示す情報が記憶されてもよい。グラフ情報記憶部１２３には、有向エッジにより連結されたグラフ情報に限らず、種々のグラフ情報が記憶されてもよい。グラフ情報記憶部１２３には、無向エッジにより連結されたグラフ情報が記憶されてもよい。
【０１３１】
（閾値用情報記憶部１２４）
実施形態に係る閾値用情報記憶部１２４は、閾値に関する各種情報を記憶する。例えば、閾値用情報記憶部１２４は、処理対象数の閾値やその閾値を決定するために用いる情報等を記憶する。図８は、実施形態に係る閾値記憶部の一例を示す図である。図８に示す閾値用情報記憶部１２４は、「閾値ＩＤ」、「値（ｅｐ）」、「検索範囲係数（ε）」、「所定係数（ｗｅ）」、「所定定数（ｅ０）」、「検索処理条件」といった項目が含まれる。
【０１３２】
「閾値ＩＤ」は、閾値を識別するための情報を示す。また、「値（ｅｐ）」は、対応する閾値の具体的な値を示す。「検索範囲係数（ε）」は、検索処理時に用いられる検索範囲係数を示す。「所定係数（ｗｅ）」は、閾値の決定に用いる所定の係数を示す。「所定係数（ｗｅ）」は、上記式（１）において用いる所定の係数の値を示す。「所定定数（ｅ０）」は、閾値の決定に用いる所定の定数を示す。「所定定数（ｅ０）」は、上記式（１）において用いる所定の定数を示す。なお、図８の例では、「値（ｅｐ）」、「検索範囲係数（ε）」、「所定係数（ｗｅ）」、「所定定数（ｅ０）」に記憶される情報を「ＶＥ１１」等の抽象的な符号で図示するが、各項目には、具体的な数値が記憶されるものとする。
【０１３３】
「検索処理条件」には、「検索時間」、「検索精度」といった項目が含まれる。「検索時間」は、検索における処理時間を示す。例えば、「検索時間」は、対応する閾値が決定された場合に要求された処理時間を示す。例えば、「検索時間」は、対応する閾値を用いた場合にその処理時間内で検索を完了することを示す。例えば、グラフ情報ＧＲ１１を用いて検索時間ＴＭ１２を満たす場合、「値（ｅｐ）」は、値ＶＬ１２（例えば５等）にする必要があることを示す。
【０１３４】
「検索精度」は、検索における処理精度を示す。例えば、「検索精度」は、対応する閾値が決定された場合に要求された処理精度を示す。例えば、「検索精度」は、対応する閾値を用いた場合にその処理精度での検索結果が得られることを示す。例えば、グラフ情報ＧＲ１１を用いて検索精度ＡＣ１３を満たす場合、「値（ｅｐ）」は、値ＶＬ１３（例えば２０等）にする必要があることを示す。
【０１３５】
図８の例では、閾値ＩＤ「ＴＨ１１」により識別される閾値（閾値ＴＨ１１）の「値（ｅｐ）」は、「３」であることを示す。また、閾値ＴＨ１１については、「検索範囲係数（ε）」が「ＶＥ１１」であり、「所定係数（ｗｅ）」が「ＶＷ１１」であり、「所定定数（ｅ０）」が「Ｖ０１１」であることを示す。また、閾値ＴＨ１１については、「検索処理条件」の「検索時間」や「検索精度」が未設定であることを示す。
【０１３６】
なお、閾値用情報記憶部１２４は、上記に限らず、目的に応じて種々の情報を記憶してもよい。閾値用情報記憶部１２４は、複数のグラフ情報を使い分ける場合、閾値に、その閾値が用いられるグラフ情報を対応付けて記憶してもよい。例えば、閾値用情報記憶部１２４は、グラフ情報ＧＲ１１以外のグラフ情報が用いられる場合、各閾値が用いられるグラフ情報と、対応する閾値とを対応付けて記憶してもよい。
【０１３７】
（検索処理情報記憶部１２５）
実施形態に係る検索処理情報記憶部１２５は、検索処理に関する各種情報を記憶する。図９は、実施形態に係る検索処理情報記憶部の一例を示す図である。図９の例では、検索処理情報記憶部１２５は、「検索処理ＩＤ」、「クエリ情報」、「抽出情報」、「提供先」といった項目を有する。また、「抽出情報」には、「＃１」や「＃２」や「＃３」といった項目が含まれる。なお、「抽出情報」には、抽出するノード数（オブジェクト数）に応じて、「＃４」や「＃５」等の項目が含まれてもよい。
【０１３８】
「検索処理ＩＤ」は、検索処理を識別するための識別情報を示す。また、「クエリ情報
」は、対応する検索処理において用いられたクエリを示す。「抽出情報」は、対応する検索処理により抽出されたノード（オブジェクト）を示す。「提供先」は、検索処理の結果を提供する提供先を示す。例えば、「提供先」は、クエリによる検索を要求した要求元を示す。
【０１３９】
例えば、図９の例では、検索処理ＩＤ「ＳＲ１」により識別される検索処理（検索処理ＳＲ１）は、クエリＱＥ１１に対応する検索処理であることを示す。検索処理ＳＲ１は、クエリＱＥ１１の類似ノードとしてノードＮ６、Ｎ７、Ｎ５６が抽出されたことを示す。検索処理ＳＲ１は、提供先がユーザＵ１であることを示す。
【０１４０】
なお、検索処理情報記憶部１２５は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１４１】
（制御部１３０）
図４の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、情報処理装置１００内部の記憶装置に記憶されている各種プログラム（情報処理プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【０１４２】
図４に示すように、制御部１３０は、取得部１３１と、決定部１３２と、選択部１３３と、抽出部１３４と、提供部１３５とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図４に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０１４３】
（取得部１３１）
取得部１３１は、各種情報を取得する。例えば、取得部１３１は、記憶部１２０から各種情報を取得する。例えば、取得部１３１は、オブジェクト情報記憶部１２１や、インデックス情報記憶部１２２や、グラフ情報記憶部１２３や、閾値用情報記憶部１２４や、検索処理情報記憶部１２５等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。取得部１３１は、端末装置１０等の外部装置から各種情報を取得する。取得部１３１は、グラフ情報記憶部１２３からグラフ情報を取得する。取得部１３１は、インデックス情報記憶部１２２からインデックス情報を取得する。
【０１４４】
取得部１３１は、データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する。取得部１３１は、検索中の所定の繰返し処理において処理対象となっている所定のノードの連結ノードを取得する。取得部１３１は、所定の繰返し処理の対象となるノード群から選択された一のノードである所定のノードの連結ノードを取得する。取得部１３１は、所定のノードを始点とする有向エッジであるエッジにより、所定のノードと連結される連結ノードを取得する。取得部１３１は、複数のノードが類似性に基づいて連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。取得部１３１は、複数のノードの各々が処理対象数以上の本数のエッジにより他のノードと連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。取得部１３１は、所定のユーザから検索クエリを取得する。
【０１４５】
取得部１３１は、検索クエリに関する情報を取得する。取得部１３１は、画像検索に関する検索クエリを取得する。取得部１３１は、ユーザが利用する端末装置１０からクエリを取得する。取得部１３１は、端末装置１０からクエリを受け付けた情報提供装置５０からクエリを取得してもよい。図１の例では、取得部１３１は、クエリＱＥ１１をユーザが利用する端末装置１０から取得する。
【０１４６】
図１の例では、取得部１３１は、グラフ情報記憶部１２３からグラフ情報ＧＲ１１を取得する。取得部１３１は、インデックス情報記憶部１２２からインデックス情報ＩＮＤ１１を取得する。
【０１４７】
（決定部１３２）
決定部１３２は、各種情報を決定する。決定部１３２は、各種情報を判定する。決定部１３２は、各種情報を生成する。例えば、決定部１３２は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を決定する。例えば、決定部１３２は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を判定する。例えば、決定部１３２は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を生成する。例えば、決定部１３２は、オブジェクト情報記憶部１２１や、インデックス情報記憶部１２２や、グラフ情報記憶部１２３や、閾値用情報記憶部１２４や、検索処理情報記憶部１２５等に基づいて、各種情報を決定する。
【０１４８】
決定部１３２は、取得部１３１により取得された各種情報に基づいて、種々の情報を決定する。決定部１３２は、取得部１３１により取得された各種情報に基づいて、種々の情報を判定する。決定部１３２は、選択部１３３により選択された各種情報に基づいて、種々の情報を決定する。決定部１３２は、選択部１３３により選択された各種情報に基づいて、種々の情報を判定する。決定部１３２は、選択部１３３により選択された各種情報に基づいて、種々の情報を生成する。決定部１３２は、抽出部１３４により抽出された各種情報に基づいて、種々の情報を決定する。決定部１３２は、抽出部１３４により抽出された各種情報に基づいて、種々の情報を判定する。決定部１３２は、抽出部１３４により抽出された各種情報に基づいて、種々の情報を選択する。決定部１３２は、取得部１３１により取得された各種情報に基づいて、種々の情報を生成する。例えば、決定部１３２は、検索処理における判定処理や決定処理を行う。例えば、決定部１３２は、グラフ情報を生成してもよい。
【０１４９】
図１の例では、決定部１３２は、検索の起点となる起点ノード決定する。図１の例では、決定部１３２は、所定のインデックス情報を用いて、起点ノードを決定する。決定部１３２は、図２中の情報群ＧＩＮＦ１１に示すようなインデックス情報ＩＮＤ１１を用いて起点ノードを決定する。決定部１３２は、インデックス情報ＩＮＤ１１に基づいて、クエリＱＥ１１に対応する起点ノードを決定する。決定部１３２は、インデックス情報記憶部１２２（図６参照）に記憶されたインデックス情報ＩＮＤ１１を用いて、起点ノードを決定する。決定部１３２は、図１中の検索用情報ＳＩＮＦ１１を更新する。例えば、決定部１３２は、記憶部１２０への情報の追加や記憶部１２０からの情報の削除等を行うことにより検索用情報ＳＩＮＦ１１を更新する。
【０１５０】
例えば、決定部１３２は、図１中のインデックス情報ＩＮＤ１１に示すような木構造型のインデックス情報を用いて、グラフ情報ＧＲ１１における起点ノードを決定する。図１の例では、決定部１３２は、クエリＱＥ１１に基づいて、インデックス情報ＩＮＤ１１を上（ルートＲＴ）から下へ辿ることにより、インデックス情報ＩＮＤ１１の近傍候補となる起点ノードを特定する。決定部１３２は、２個のノードを起点ノードに決定する。
【０１５１】
例えば、決定部１３２は、インデックス情報ＩＮＤ１１をルートＲＴからリーフノード（グラフ情報ＧＲ１１中のノード）まで辿ることにより、クエリＱＥ１１に対応する起点ノードを決定してもよい。図１の例では、決定部１３２は、インデックス情報ＩＮＤ１１をルートＲＴからノードＮ４やノードＮ５まで辿ることにより、ノードＮ４やノードＮ５を起点ノードとして決定する
【０１５２】
例えば、決定部１３２は、節点ＶＴ２−２からノードＮ３、Ｎ４、Ｎ５等のうち、クエリＱＥ１１との類似度が高い節点ノードＮ４へ辿ると決定してもよい。そして、決定部１３２は、ノードＮ４がグラフ情報ＧＲ１１中のノードであるため、ノードＮ４を起点ノードに決定する。また、決定部１３２は、ノードＮ４から上位の節点ＶＴ２−２に戻り、節点ＶＴ２−２からノードＮ３、Ｎ５等のうち、クエリＱＥ１１との類似度がノードＮ４の次に高い節点ノードＮ５へ辿ると決定してもよい。そして、決定部１３２は、ノードＮ５がグラフ情報ＧＲ１１中のノードであるため、ノードＮ５を起点ノードに決定する。これにより、図１中のグラフ情報ＧＲ１１−１に示すように、決定部１３２は、２個のノードＮ４、Ｎ５を起点ノードに決定する。
【０１５３】
決定部１３２は、対象ノードを決定する。決定部１３２は、集合Ｓに含まれるノードから、対象ノードを決定する。決定部１３２は、検索用情報ＳＩＮＦ１１−１中の集合Ｓに含まれるノードＮ４、Ｎ５から、対象ノードを決定する。決定部１３２は、集合Ｓに含まれるノードのうち、最もクエリＱＥ１１に類似するノードを対象ノードに決定する。図１の例では、決定部１３２は、ノードＮ４、Ｎ５のうち、最もクエリＱＥ１１に類似するノードＮ４を対象ノードに決定する。
【０１５４】
決定部１３２は、判定対象ノードであるノードＮ６を抽出候補とするかを判定する。例えば、決定部１３２は、ノードＮ６とクエリＱＥ１１間の距離ＤＱ６が半径ｒ以下である場合、ノードＮ６を抽出候補と判定する。図１の例では、決定部１３２は、半径ｒが「∞」であり、距離ＤＱ６は半径ｒ以下であるため、ノードＮ６を抽出候補と判定する。
【０１５５】
また、決定部１３２は、ノードＮ６を対象ノードとするかを判定する。例えば、決定部１３２は、距離ＤＱ６が半径ｒ（１＋ε）以下である場合、ノードＮ６を対象ノードとすると判定する。図１の例では、決定部１３２は、半径ｒが「∞」であり、距離ＤＱ６は半径ｒ（１＋ε）以下であるため、ノードＮ６を対象ノードとすると判定する。
【０１５６】
決定部１３２は、判定対象ノードであるノードＮ９を抽出候補とするかを判定する。例えば、決定部１３２は、ノードＮ９とクエリＱＥ１１間の距離ＤＱ９が半径ｒ以下である場合、ノードＮ９を抽出候補と判定する。図１の例では、決定部１３２は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」であり、距離ＤＱ９は半径ｒより大きいため、ノードＮ９を抽出候補としないと判定する。決定部１３２は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ９が範囲ＡＲ１１外に位置するためノードＮ９を抽出候補としないと判定する。
【０１５７】
決定部１３２は、ノードＮ９を対象ノードとするかを判定する。例えば、決定部１３２は、距離ＤＱ９が半径ｒ（１＋ε）以下である場合、ノードＮ９を対象ノードとすると判定する。図１の例では、決定部１３２は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」であり、距離ＤＱ９は半径ｒ（１＋ε）以下であるため、ノードＮ９を対象ノードとすると判定する。決定部１３２は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ９が範囲ＡＲ２１内に位置するためノードＮ９を対象ノードにすると判定する。
【０１５８】
決定部１３２は、判定対象ノードであるノードＮ７を抽出候補とするかを判定する（ステップＳ２１）。例えば、決定部１３２は、ノードＮ７とクエリＱＥ１１間の距離ＤＱ７が半径ｒ以下である場合、ノードＮ７を抽出候補と判定する。例えば、距離ＤＱ７は、距離関数ｄを用いて、ｄ（Ｎ７，ＱＥ１１）により導出される。図１の例では、決定部１３２は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」でり、距離ＤＱ７は半径ｒ以下であるため、ノードＮ７を抽出候補と判定する。決定部１３２は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ７が範囲ＡＲ１１内に位置するためノードＮ７を抽出候補にすると判定する。
【０１５９】
決定部１３２は、ノードＮ７を対象ノードとするかを判定する。例えば、決定部１３２は、距離ＤＱ７が半径ｒ（１＋ε）以下である場合、ノードＮ７を対象ノードとすると判定する。図１の例では、決定部１３２は、半径ｒが「ｄ（Ｎ５，ＱＥ１１）」であり、距離ＤＱ７は半径ｒ（１＋ε）以下であるため、ノードＮ７を対象ノードとすると判定する。決定部１３２は、図１中のグラフ情報ＧＲ１１−４に示すように、ノードＮ７が範囲ＡＲ２１内に位置するためノードＮ７を対象ノードにすると判定する。決定部１３２は、選択部１３３により選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを決定する。決定部１３２は、クエリＱＥ１１について、抽出数「３」に対応する３個の類似ノードを決定する。決定部１３２は、図１中の検索用情報ＳＩＮＦ１１−６中の集合Ｒに示すように、ノードＮ６、Ｎ７、Ｎ５６をクエリＱＥ１１の類似ノードに決定する。決定部１３２は、集合Ｒに含まれるノードＮ６、Ｎ７、Ｎ５６を類似ノードに決定する。
【０１６０】
（選択部１３３）
選択部１３３は、各種情報を選択する。例えば、選択部１３３は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を選択する。例えば、選択部１３３は、オブジェクト情報記憶部１２１や、インデックス情報記憶部１２２や、グラフ情報記憶部１２３や、閾値用情報記憶部１２４や、検索処理情報記憶部１２５等に基づいて、各種情報を選択する。選択部１３３は、取得部１３１により取得された各種情報に基づいて、種々の情報を選択する。選択部１３３は、決定部１３２により決定された各種情報に基づいて、種々の情報を選択する。選択部１３３は、抽出部１３４により抽出された各種情報に基づいて、種々の情報を選択する。例えば、選択部１３３は、検索処理における選択処理を行う。
【０１６１】
選択部１３３は、連結ノードを判定対象とする判定処理において、連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択する。選択部１３３は、検索クエリとの類似性に基づく判定処理の判定対象ノードを選択する。選択部１３３は、連結ノードのうち、処理対象数の閾値に基づいて、判定対象ノードを選択する。
【０１６２】
選択部１３３は、検索に用いられるパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。選択部１３３は、検索における検索範囲に関するパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。選択部１３３は、検索の処理時間に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。選択部１３３は、検索の検索精度に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。
【０１６３】
選択部１３３は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。選択部１３３は、連結ノードのうち、所定のノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択する。選択部１３３は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択する。選択部１３３は、一のノードを所定のノードとして選択する。選択部１３３は、連結ノードのうち、検索クエリとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。選択部１３３は、連結ノードのうち、検索クエリとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択する。
【０１６４】
図１の例では、選択部１３３は、対象ノードにエッジにより連結された連結ノードのうち、判定処理の対象となる判定対象ノードを選択する。選択部１３３は、対象ノードからの出力エッジが連結された連結ノードのうち、判定対象ノードを選択する。図１の例では、選択部１３３は、対象ノードであるノードＮ４からのエッジＥ４１〜Ｅ４４が連結されたノードＮ６〜Ｎ９の４個のノードのうち、判定対象ノードを選択する。
【０１６５】
選択部１３３は、処理対象数の閾値に基づいて判定対象ノードを選択する。選択部１３３は、図１中の閾値情報ＴＬ１１に示すように、閾値ＴＨ１１の値「３」に基づいて判定対象ノードを選択する。選択部１３３は、ノードＮ４の４個の連結ノードであるノードＮ６〜Ｎ９のうち、閾値ＴＨ１１の値「３」に基づいて、３個のノードを判定対象ノードとして選択する。
【０１６６】
選択部１３３は、対象ノードの連結ノードのうち、所定の基準に基づいて、判定対象ノードを選択する。例えば、選択部１３３は、対象ノードの連結ノードのうち、対象ノードとの類似度に基づいて、判定対象ノードを選択する。具体的には、選択部１３３は、対象ノードの連結ノードのうち、対象ノードとの間の距離に基づいて、判定対象ノードを選択する。
【０１６７】
図１の例では、選択部１３３は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。選択部１３３は、図１中の連結ノード情報ＮＬ１１に示すような、対象ノードであるノードＮ４とその連結ノードであるノードＮ６〜Ｎ９の各々との間の距離に基づいて、判定対象ノードを選択する。
【０１６８】
図１の例では、選択部１３３は、対象ノードであるノードＮ４とその連結ノードであるノードＮ６〜Ｎ９の各々との間の距離が近い方から順に閾値に達するまで、判定対象ノードを選択する。選択部１３３は、図１中のグラフ情報ＧＲ１１−２に示すように、４個のノードＮ６〜Ｎ９のうち、ノードＮ６、Ｎ９、Ｎ７の３個のノードを判定対象ノードに選択する。
【０１６９】
（抽出部１３４）
抽出部１３４は、各種情報を抽出する。例えば、抽出部１３４は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を抽出する。例えば、抽出部１３４は、オブジェクト情報記憶部１２１や、インデックス情報記憶部１２２や、グラフ情報記憶部１２３や、閾値用情報記憶部１２４や、検索処理情報記憶部１２５等に基づいて、各種情報を抽出する。抽出部１３４は、取得部１３１により取得された各種情報に基づいて、種々の情報を抽出する。抽出部１３４は、決定部１３２により決定された各種情報に基づいて、種々の情報を抽出する。抽出部１３４は、選択部１３３により選択された各種情報に基づいて、種々の情報を抽出する。例えば、抽出部１３４は、検索処理における抽出処理を行う。
【０１７０】
抽出部１３４は、選択部１３３により選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを抽出する。抽出部１３４は、各種情報を検索する検索部であってもよい。例えば、抽出部１３４は、グラフ情報を探索することにより、オブジェクトを検索する。例えば、抽出部１３４は、取得部１３１により取得されたクエリが取得された場合、グラフ情報を探索することにより、クエリに類似するオブジェクトを検索する。例えば、抽出部１３４は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、抽出部１３４は、図１１に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。
【０１７１】
図１の例では、抽出部１３４は、集合ＳからノードＮ４を対象ノードとして抽出する。抽出部１３４は、抽出数「３」に対応する３個の類似ノードを抽出する。抽出部１３４は、ノードＮ６を対象ノードとして抽出する。抽出部１３４は、ノードＮ９を対象ノードとして抽出する。抽出部１３４は、ノードＮ７を対象ノードとして抽出する。抽出部１３４は、判定対象ノードであるノードＮ６を抽出候補として抽出する。抽出部１３４は、判定対象ノードであるノードＮ９を抽出候補として抽出しない。抽出部１３４は判定対象ノードであるノードＮ７を抽出候補として抽出する。抽出部１３４は、検索用情報ＳＩＮＦ１１−６中の集合Ｒに示すように、ノードＮ６、Ｎ７、Ｎ５６を類似ノードとして抽出してもよい。
【０１７２】
（提供部１３５）
提供部１３５は、各種情報を提供する。例えば、提供部１３５は、端末装置１０や情報提供装置５０に各種情報を提供する。提供部１３５は、端末装置１０に各種情報を送信する。提供部１３５は、端末装置１０に各種情報を配信する。提供部１３５は、取得部１３１により取得された各種情報に基づいて、種々の情報を提供する。提供部１３５は、決定部１３２により決定された各種情報に基づいて、種々の情報を提供する。提供部１３５は、選択部１３３により選択された各種情報に基づいて、種々の情報を提供する。提供部１３５は、抽出部１３４により抽出された各種情報に基づいて、種々の情報を提供する。例えば、提供部１３５は、検索処理における提供処理を行う。
【０１７３】
例えば、提供部１３５は、クエリに対応するオブジェクトＩＤを検索結果として提供する。提供部１３５は、決定部１３２により決定された類似ノードに関する情報を提供する。提供部１３５は、決定部１３２により決定された類似ノードを示すオブジェクトＩＤを端末装置１０や情報提供装置５０へ提供する。提供部１３５は、決定部１３２により決定されたオブジェクトＩＤをクエリに対応するベクトルを示す情報として、端末装置１０や情報提供装置５０に提供する。例えば、提供部１３５は、抽出部１３４により抽出（検索）されたオブジェクトＩＤを端末装置１０や情報提供装置５０へ提供する。例えば、提供部１３５は、抽出部１３４が検索により抽出したオブジェクトＩＤを情報提供装置５０へ提供する。提供部１３５は、抽出部１３４により抽出されたオブジェクトＩＤをクエリに対応するベクトルを示す情報として、端末装置１０や情報提供装置５０に提供する。
【０１７４】
提供部１３５は、抽出部１３４により抽出された類似ノードに関する情報を提供する。提供部１３５は、類似ノードに関する情報を所定のユーザが利用する端末装置１０（図３参照）に提供する。提供部１３５は、クエリの送信元へ検索結果を提供する。図１の例では、提供部１３５は、ノードＮ６、Ｎ７、Ｎ５６を示す情報をクエリＱＥ１１の類似ノードとして、検索の要求元へ提供する。例えば、情報処理装置１００は、クエリＱＥ１１に基づく検索結果として、ノードＮ６、Ｎ７、Ｎ５６を示す情報を、検索の要求元へ提供する。提供部１３５は、クエリＱＥ１１の送信元であるユーザＵ１が利用する端末装置１０に検索結果を提供する。提供部１３５は、クエリＱＥ１１に類似するノードＮ６、Ｎ７、Ｎ５６を示す情報を検索結果として提供する。
【０１７５】
また、提供部１３５は、選択部１３３により選択されたノードを示す情報を外部の情報処理装置へ提供してもよい。例えば、提供部１３５は選択部１３３により選択されたノードを情報提供装置５０に送信してもよい。
【０１７６】
〔４．情報処理（選択処理）のフロー〕
次に、図１０を用いて、実施形態に係る情報処理システム１による情報処理の手順について説明する。図１０は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図１０は、実施形態に係る情報処理に含まれる選択処理の一例を示すフローチャートである。
【０１７７】
図１０に示すように、情報処理装置１００は、グラフ情報の検索クエリに基づく検索処理において、所定のノードと連結された連結ノードを取得する（ステップＳ１０１）。例えば、情報処理装置１００は、グラフ情報記憶部１２３（図７参照）から、ノードＮ６〜Ｎ９を示す情報を取得する。図１の例では、情報処理装置１００は、ノードＮ４を対象ノードとする場合、ノードＮ４と連結された連結ノードであるノードＮ６〜Ｎ９を取得する。
【０１７８】
そして、情報処理装置１００は、連結ノードを判定対象とする判定処理において、判定処理の処理対象数に関する基準に基づいて、判定処理の判定対象ノードを選択する（ステップＳ１０２）。例えば、情報処理装置１００は、ノード間の類似度に基づいて、処理対象数を示す閾値に達するまで、判定対象ノードを選択する。図１の例では、情報処理装置１００は、ノードＮ４の連結ノードであるノードＮ６〜Ｎ９のうち、ノードＮ４との距離が短い方から３つのノードＮ６、Ｎ９、ＮＭ７の順に判定対象ノードとして選択する。
【０１７９】
〔５．情報処理（検索処理）のフロー〕
次に、情報処理装置１００による検索処理のフローについて、図１１を一例として説明する。図１１は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図１１は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、図１１に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置１００によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、情報処理装置１００によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
【０１８０】
ここでは、近傍集合Ｎ（Ｇ，ｙ）は、ノードｙに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合Ｎ（Ｇ，ｙ）は、ノードｙからの出力エッジが連結されたオブジェクト（ノード）の集合である。「Ｇ」は、所定のグラフデータ（例えば、グラフ情報ＧＲ１１等）であってもよい。例えば、情報処理装置１００は、ｋ近傍検索処理を実行する。例えば、図１１中の集合Ｓ、集合Ｃ、集合Ｒは、図１中の集合Ｓ、集合Ｃ、集合Ｒに対応する。
【０１８１】
例えば、情報処理装置１００は、超球の半径ｒを∞（無限大）に設定し（ステップＳ３００）、既存のオブジェクト集合から集合Ｓを抽出する（ステップＳ３０１）。例えば、情報処理装置１００は、起点ノードとして決定（選択）されたオブジェクト（ノード）を集合Ｓとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップＳ３０１において抽出された集合Ｓに含まれるオブジェクト（ノード）は、検索結果（抽出候補）の集合Ｒの初期集合にも含められる。また、ステップＳ３０１において抽出された集合Ｓに含まれるオブジェクト（ノード）は、集合Ｃに含められてもよい。集合Ｃは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
【０１８２】
次に、情報処理装置１００は、集合Ｓに含まれるオブジェクトの中で、検索クエリオブジェクトをｙとするとオブジェクトｙとの距離が最も短いオブジェクトを抽出し、オブジェクトｓとする（ステップＳ３０２）。図１の例では、情報処理装置１００は、オブジェクトｙであるクエリＱＥ１１に対応する起点ノードであるノードＮ４、Ｎ５が含まれる集合Ｓから、一のノードをオブジェクトｓ（対象ノード）として抽出する。次に、情報処理装置１００は、オブジェクトｓを集合Ｓから除外する（ステップＳ３０３）。
【０１８３】
次に、情報処理装置１００は、オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えるか否かを判定する（ステップＳ３０４）。ここで、εは拡張要素であり、ｒ（１＋ε）は、探索範囲（この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる）の半径を示す値である。オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超える場合（ステップＳ３０４：Ｙｅｓ）、情報処理装置１００は、集合Ｒをオブジェクトｙの近傍集合として出力し（ステップＳ３０５）、処理を終了する。
【０１８４】
オブジェクトｓと検索クエリオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えない場合（ステップＳ３０４：Ｎｏ）、情報処理装置１００は、オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトの中から集合Ｃに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトｕを、集合Ｃに格納する（ステップＳ３０６）。例えば、図１の例では、情報処理装置１００は、ノードＮ４の連結ノードであるノードＮ６〜Ｎ９のうち、クエリＱＥ１１と最も近いノードＮ６をオブジェクトｕ（判定対象ノード）として選択する。
【０１８５】
次に、情報処理装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下であるか否かを判定する（ステップＳ３０７）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下である場合（ステップＳ３０７：Ｙｅｓ）、情報処理装置１００は、オブジェクトｕを集合Ｓに追加する（ステップＳ３０８）。また、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下ではない場合（ステップＳ３０７：Ｎｏ）、情報処理装置１００は、ステップＳ３０９の判定（処理）を行う。
【０１８６】
次に、情報処理装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下であるか否かを判定する（ステップＳ３０９）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒを超える場合、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。また、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下ではない場合（ステップＳ３０９：Ｎｏ）、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。
【０１８７】
オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下である場合（ステップＳ３０９：Ｙｅｓ）、情報処理装置１００は、オブジェクトｕを集合Ｒに追加する（ステップＳ３１０）。そして、情報処理装置１００は、集合Ｒに含まれるオブジェクト数がｋｓを超えるか否かを判定する（ステップＳ３１１）。所定数ｋｓは、任意に定められる自然数である。例えば、ｋｓは、検索における抽出数を示し、「３」や「２０」や「１００」等の任意の値であってもよい。集合Ｒに含まれるオブジェクト数がｋｓを超えない場合（ステップＳ３１１：Ｎｏ）、情報処理装置１００は、ステップＳ３１３の判定（処理）を行う。
【０１８８】
集合Ｒに含まれるオブジェクト数がｋｓを超える場合（ステップＳ３１１：Ｙｅｓ）、情報処理装置１００は、集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトを、集合Ｒから除外する（ステップＳ３１２）。
【０１８９】
次に、情報処理装置１００は、集合Ｒに含まれるオブジェクト数がｋｓと一致するか否かを判定する（ステップＳ３１３）。集合Ｒに含まれるオブジェクト数がｋｓと一致しない場合（ステップＳ３１３：Ｎｏ）、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。また、集合Ｒに含まれるオブジェクト数がｋｓと一致する場合（ステップＳ３１３：Ｙｅｓ）、情報処理装置１００は、集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトと、オブジェクトｙとの距離を、新たなｒに設定する（ステップＳ３１４）。
【０１９０】
そして、情報処理装置１００は、オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択したか否かを判定する（ステップＳ３１５）。例えば、図１の例では、情報処理装置１００は、ノードＮ４の対象ノードとした繰り返し処理において、閾値「３」に対応する３個の判定対象ノードを選択し、個の判定対象ノードに対する判定処理を行ったかを判定する。オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択していない場合（ステップＳ３１５：Ｎｏ）、情報処理装置１００は、ステップＳ３０６に戻って処理を繰り返す。
【０１９１】
オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択した場合（ステップＳ３１５：Ｙｅｓ）、情報処理装置１００は、集合Ｓが空集合であるか否かを判定する（ステップＳ３１６）。なお、情報処理装置１００は、オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）から閾値に対応する個数までオブジェクトを選択する前であっても、オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）中の全オブジェクトが選択済みである場合、ステップＳ３１６の処理を行ってもよい。すなわち、情報処理装置１００は、オブジェクトｓの近傍集合Ｎ（Ｇ，ｓ）中のオブジェクト数が閾値以下であり、近傍集合Ｎ（Ｇ，ｓ）中の全オブジェクトを選択した場合、ステップＳ３１５がＹｅｓである場合と同様に、ステップＳ３１６の処理を行ってもよい。集合Ｓが空集合でない場合（ステップＳ３１６：Ｎｏ）、情報処理装置１００は、ステップＳ３０２に戻って処理を繰り返す。また、集合Ｓが空集合である場合（ステップＳ３１６：Ｙｅｓ）、情報処理装置１００は、集合Ｒを出力し、処理を終了する（ステップＳ３１７）。例えば、情報処理装置１００は、集合Ｒに含まれるオブジェクト（ノード）を検索クエリ（入力オブジェクトｙ）に対応する検索結果として、検索を行った端末装置１０等へ提供してもよい。図１の例では、情報処理装置１００は、集合Ｒに含まれるノードＮ６、Ｎ７、Ｎ５６をクエリＱＥ１１（入力オブジェクトｙ）に対応する検索結果として、検索を行った端末装置１０等へ提供してもよい。
【０１９２】
〔６．効果〕
上述してきたように、実施形態に係る情報処理装置１００は、取得部１３１と、選択部１３３とを有する。取得部１３１は、データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する。選択部１３３は、連結ノードを判定対象とする判定処理において、連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択する。
【０１９３】
このように、実施形態に係る情報処理装置１００は、検索クエリに基づく検索中の判定処理において、所定のノードの連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択することにより、辿るノード数を動的に変更することができるため、所定の対象に関する所望の検索を可能にすることができる。
【０１９４】
また、実施形態に係る情報処理装置１００において、選択部１３３は、検索クエリとの類似性に基づく判定処理の判定対象ノードを選択する。
【０１９５】
このように、実施形態に係る情報処理装置１００は、検索クエリとの類似性に基づく判定処理の判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０１９６】
また、実施形態に係る情報処理装置１００において、選択部１３３は、連結ノードのうち、処理対象数の閾値に基づいて、判定対象ノードを選択する。
【０１９７】
このように、実施形態に係る情報処理装置１００は、連結ノードのうち、処理対象数の閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０１９８】
また、実施形態に係る情報処理装置１００において、選択部１３３は、検索に用いられるパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。
【０１９９】
このように、実施形態に係る情報処理装置１００は、検索に用いられるパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２００】
また、実施形態に係る情報処理装置１００において、選択部１３３は、検索における検索範囲に関するパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。
【０２０１】
このように、実施形態に係る情報処理装置１００は、検索における検索範囲に関するパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２０２】
また、実施形態に係る情報処理装置１００において、選択部１３３は、検索の処理時間に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。
【０２０３】
このように、実施形態に係る情報処理装置１００は、検索の処理時間に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２０４】
また、実施形態に係る情報処理装置１００において、選択部１３３は、検索の検索精度に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。
【０２０５】
このように、実施形態に係る情報処理装置１００は、検索の検索精度に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２０６】
また、実施形態に係る情報処理装置１００において、選択部１３３は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。
【０２０７】
このように、実施形態に係る情報処理装置１００は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２０８】
また、実施形態に係る情報処理装置１００において、選択部１３３は、連結ノードのうち、所定のノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択する。
【０２０９】
このように、実施形態に係る情報処理装置１００は、連結ノードのうち、所定のノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２１０】
また、実施形態に係る情報処理装置１００において、選択部１３３は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択する。
【０２１１】
このように、実施形態に係る情報処理装置１００は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２１２】
また、実施形態に係る情報処理装置１００において、取得部１３１は、検索中の所定の繰返し処理において処理対象となっている所定のノードの連結ノードを取得する。
【０２１３】
このように、実施形態に係る情報処理装置１００は、検索中の所定の繰返し処理において処理対象となっている所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２１４】
また、実施形態に係る情報処理装置１００において、取得部１３１は、所定の繰返し処理の対象となるノード群から選択された一のノードである所定のノードの連結ノードを取得する。
【０２１５】
このように、実施形態に係る情報処理装置１００は、所定の繰返し処理の対象となるノード群から選択された一のノードである所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２１６】
また、実施形態に係る情報処理装置１００において、取得部１３１は、所定のノードを始点とする有向エッジであるエッジにより、所定のノードと連結される連結ノードを取得する。
【０２１７】
このように、実施形態に係る情報処理装置１００は、所定のノードを始点とする有向エッジであるエッジにより、所定のノードと連結される連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２１８】
また、実施形態に係る情報処理装置１００において、取得部１３１は、複数のノードが類似性に基づいて連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。
【０２１９】
このように、実施形態に係る情報処理装置１００は、複数のノードが類似性に基づいて連結されたグラフ情報の検索において、所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２２０】
また、実施形態に係る情報処理装置１００において、取得部１３１は、複数のノードの各々が処理対象数以上の本数のエッジにより他のノードと連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。
【０２２１】
このように、実施形態に係る情報処理装置１００は、複数のノードの各々が処理対象数以上の本数のエッジにより他のノードと連結されたグラフ情報の検索において、所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【０２２２】
また、実施形態に係る情報処理装置１００は、決定部１３２を有する。決定部１３２は、選択部１３３により選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを決定する。
【０２２３】
このように、実施形態に係る情報処理装置１００は、選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを決定することにより、所定の対象に関する所望の検索を行うことができる。
【０２２４】
また、実施形態に係る情報処理装置１００は、提供部１３５を有する。提供部１３５は、決定部１３２により決定された類似ノードに関する情報を提供する。
【０２２５】
このように、実施形態に係る情報処理装置１００は、決定された類似ノードに関する情報を提供することにより、所定の対象に関する所望の検索サービスを提供することができる。
【０２２６】
また、実施形態に係る情報処理装置１００において、取得部１３１は、所定のユーザから検索クエリを取得する。提供部１３５は、類似ノードに関する情報を所定のユーザが利用する端末装置に提供する。
【０２２７】
このように、実施形態に係る情報処理装置１００は、所定のユーザから検索クエリを取得し、類似ノードに関する情報を所定のユーザが利用する端末装置に提供することにより、所定の対象に関する所望の検索サービスをユーザに提供することができる。
【０２２８】
〔７．ハードウェア構成〕
上述してきた実施形態に係る情報処理装置１００は、例えば図１２に示すような構成のコンピュータ１０００によって実現される。図１２は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０２２９】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０２３０】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０２３１】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０２３２】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０２３３】
例えば、コンピュータ１０００が実施形態に係る情報処理装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０２３４】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０２３５】
〔８．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０２３６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０２３７】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０２３８】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０２３９】
１  情報処理システム
１００  情報処理装置
１２１  オブジェクト情報記憶部
１２２  インデックス情報記憶部
１２３  グラフ情報記憶部
１２４  閾値用情報記憶部
１２５  検索処理情報記憶部
１３０  制御部
１３１  取得部
１３２  決定部
１３３  選択部
１３４  抽出部
１３５  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2019194815.tif 000006
【図２】
2019194815.tif 000007
【図３】
2019194815.tif 000008
【図４】
2019194815.tif 000009
【図５】
2019194815.tif 000010
【図６】
2019194815.tif 000011
【図７】
2019194815.tif 000012
【図８】
2019194815.tif 000013
【図９】
2019194815.tif 000014
【図１０】
2019194815.tif 000015
【図１１】
2019194815.tif 000016
【図１２】
2019194815.tif 000017