(57)【要約】【課題】検索に用いるグラフを適切に生成する。【解決手段】本願に係る情報処理装置は、取得部と、選択部と、生成部とを有する。取得部は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第１グラフとを取得する。選択部は、第１グラフに基づいて、複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する。生成部は、一のノードを第１グラフに追加し、有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第２グラフを生成する。【選択図】図３
2020086662.tif 000002
【特許請求の範囲】
【請求項１】
データ検索の対象となる一のオブジェクトと、前記一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第１グラフとを取得する取得部と、
前記第１グラフに基づいて、前記複数のノードのうち、前記一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する選択部と、
前記一のノードを前記第１グラフに追加し、前記有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した第２グラフを生成する生成部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記所定の条件である前記連結条件に関する変更条件に基づいて、前記連結条件を変更するかを決定する決定部、
をさらに備え、
前記生成部は、
前記決定部により前記連結条件を変更すると決定された場合、変更後の前記連結条件に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した前記第２グラフを生成する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定部は、
前記第１グラフにおける前記複数のノードの数に関する前記変更条件に基づいて、前記連結条件を変更するかを決定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記決定部は、
前記第１グラフにおける前記複数のノードの数が所定の閾値以上である場合、前記連結条件を変更するかを決定する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記決定部は、
前記第１グラフにおける前記複数のノードのうち、所定の時点以後に追加されたノードである追加ノードの割合に関する前記変更条件に基づいて、前記連結条件を変更するかを決定する
ことを特徴とする請求項２または請求項３に記載の情報処理装置。
【請求項６】
前記決定部は、
前記第１グラフにおける前記複数のノードのうち、前記追加ノードの割合が所定の閾値以上である場合、前記連結条件を変更するかを決定する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記決定部は、
前記第１グラフにおける前記有向エッジの数に関する前記変更条件に基づいて、前記連結条件を変更するかを決定する
ことを特徴とする請求項２〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記決定部は、
前記第１グラフにおける前記有向エッジの統計的情報に関する前記変更条件に基づいて、前記連結条件を変更するかを決定する
ことを特徴とする請求項２〜７のいずれか１項に記載の情報処理装置。
【請求項９】
前記決定部は、
前記変更条件に基づいて、前記連結条件における前記有向エッジの数に関するエッジ数条件を変更し、
前記生成部は、
変更後の前記エッジ数条件に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した前記第２グラフを生成する
ことを特徴とする請求項２〜８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記決定部は、
前記第１グラフにおける前記複数のノードの数が多い程、前記エッジ数条件において指定される連結エッジ数を増加させ、
前記生成部は、
増加後の前記連結エッジ数に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した前記第２グラフを生成する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記決定部は、
指定された生成時間を超過すると推定される場合、前記エッジ数条件において指定される連結エッジ数を減少させ、
前記生成部は、
減少後の前記連結エッジ数に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した前記第２グラフを生成する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１２】
前記決定部は、
前記一のノードを起点とし他のノードを終点する出力エッジの数に関する出力数条件を含む前記エッジ数条件を変更し、
前記生成部は、
変更後の前記出力数条件に基づいて、前記近傍ノードのうち、前記出力数条件に対応する数の出力先ノードに、前記一のノードを起点とする前記出力エッジを連結した前記第２グラフを生成する
ことを特徴とする請求項９〜１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記決定部は、
他のノードを起点とし前記一のノードを終点とする入力エッジの数に関する入力数条件を含む前記エッジ数条件を変更し、
前記生成部は、
変更後の前記エッジ数条件に基づいて、前記近傍ノードのうち、前記入力数条件に対応する数の入力元ノードに、前記一のノードを終点とする前記入力エッジを連結した前記第２グラフを生成する
ことを特徴とする請求項９〜１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記選択部は、
前記第１グラフを探索することにより、前記近傍ノードを選択する
ことを特徴とする請求項１〜１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記生成部は、
前記第２グラフにおける前記有向エッジを更新することにより、第３グラフを生成する
ことを特徴とする請求項１〜１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記生成部は、
前記第２グラフが、グラフの再構築に関する所定の条件を満たす場合、前記第３グラフを生成する
ことを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記生成部は、
前記第２グラフに含まれる各ノードの近傍ノードに関する情報を用いて、前記第３グラフを生成する
ことを特徴とする請求項１５または請求項１６に記載の情報処理装置。
【請求項１８】
前記選択部は、
前記第２グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、前記第２グラフに含まれる各ノードに対応する前記近傍ノードを選択し、
前記生成部は、
前記連結条件に基づいて、前記各ノードと前記近傍ノードとの間を前記有向エッジにより連結した前記第３グラフを生成する
ことを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
コンピュータが実行する情報処理方法であって、
データ検索の対象となる一のオブジェクトと、前記一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第１グラフとを取得する取得工程と、
前記第１グラフに基づいて、前記複数のノードのうち、前記一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する選択工程と、
前記一のノードを前記第１グラフに追加し、前記有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した第２グラフを生成する生成工程と、
を含むことを特徴とする情報処理方法。
【請求項２０】
データ検索の対象となる一のオブジェクトと、前記一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第１グラフとを取得する取得手順と、
前記第１グラフに基づいて、前記複数のノードのうち、前記一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する選択手順と、
前記一のノードを前記第１グラフに追加し、前記有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した第２グラフを生成する生成手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来、種々の情報を探索（検索）する技術が提供されている。例えば、所定の対象に関する検索を行うために、検索対象に対応するノードが有向エッジにより連結されたグラフデータを生成する技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６２９３３３５号公報
【特許文献２】特許第６３００９８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、検索に用いるグラフを適切に生成することが難しい場合がある。例えば、グラフを構成するノード（オブジェクト）の傾向等に関わらず、グラフの生成時においてノード間を連結するエッジ数が所定値に設定されている場合、効率的な検索を可能にするグラフが生成できるとは限らない。
【０００５】
本願は、上記に鑑みてなされたものであって、検索に用いるグラフを適切に生成する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願に係る情報処理装置は、データ検索の対象となる一のオブジェクトと、前記一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第１グラフとを取得する取得部と、前記第１グラフに基づいて、前記複数のノードのうち、前記一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する選択部と、前記一のノードを前記第１グラフに追加し、前記有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、前記一のノードと前記近傍ノードとの間を前記有向エッジにより連結した第２グラフを生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００７】
実施形態の一態様によれば、検索に用いるグラフを適切に生成することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る情報処理の一例を示す図である。
【図２】図２は、実施形態に係る情報処理システムの構成例を示す図である。
【図３】図３は、実施形態に係る情報処理装置の構成例を示す図である。
【図４】図４は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【図５】図５は、実施形態に係る連結条件情報記憶部の一例を示す図である。
【図６】図６は、実施形態に係る変更条件情報記憶部の一例を示す図である。
【図７】図７は、実施形態に係るグラフデータ記憶部の一例を示す図である。
【図８】図８は、実施形態に係る起点用情報記憶部の一例を示す図である。
【図９】図９は、実施形態に係る再構築条件情報記憶部の一例を示す図である。
【図１０】図１０は、実施形態に係る再構築グラフデータ記憶部の一例を示す図である。
【図１１】図１１は、実施形態に係る情報処理の一例を示すフローチャートである。
【図１２】図１２は、実施形態に係る条件の変更処理の一例を示すフローチャートである。
【図１３】図１３は、実施形態に係るグラフの再構築処理の一例を示す図である。
【図１４】図１４は、実施形態に係るグラフの再構築処理の一例を示すフローチャートである。
【図１５】図１５は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。
【図１６】図１６は、グラフデータを用いた検索処理の一例を示すフローチャートである。
【図１７】図１７は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【０００９】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１０】
（実施形態）
〔１．情報処理〕
図１を用いて、実施形態に係る情報処理の一例について説明する。図１は、実施形態に係る情報処理の一例を示す図である。図１では、情報処理装置１００（図３参照）がオブジェクトの追加に応じて、追加されたオブジェクトに対応するノード（以下「追加ノード」ともいう）をグラフデータ（グラフ情報）に追加し、グラフデータを生成する場合を示す。以下では、グラフデータを単にグラフと記載する場合がある。なお、図１の例では、対象とする情報（オブジェクト）がベクトル化され、ベクトル化されたオブジェクトを対象としてグラフ（グラフインデックス）を生成する場合を示す。すなわち、図１の例では、情報処理装置１００がベクトルをオブジェクトに対応するオブジェクト値として処理を行う場合を示す。なお、情報処理装置１００が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置１００は、各対象に対応する所定のデータや値を用いてもよい。例えば、情報処理装置１００は、各対象から生成された所定の数値（例えば２進数の値や１６進数の値）を用いてもよい。例えば、情報処理装置１００は、ベクトルに限らず、データ間の距離（類似度）が定義されていれば任意の形態のデータを用いてもよい。また、以下では、画像情報をオブジェクトとした場合を一例として説明するが、オブジェクトは、動画情報や音声情報等の種々の対象であってもよい。
【００１１】
また、ここでいうオブジェクトの追加は、オブジェクトの登録と読み換えてもよい。情報処理装置１００が行うオブジェクトの追加とは、オブジェクトをオブジェクト情報記憶部１２１（図４参照）に登録（格納）することであってもよい。また、ここでいうノードの追加は、ノードの登録と読み換えてもよい。情報処理装置１００が行うノードの追加とは、ノードをグラフデータ記憶部１２４（図７参照）に登録（格納）することであってもよい。
【００１２】
また、以下では、一のノードを追加する前のグラフを第１グラフと称し、その一のノードを追加したグラフを第２グラフと称する場合があるが、第１グラフ及び第２グラフは、相対的な概念であって、生成した第２グラフが次のノード追加時には第１グラフになる。例えば、一のノード追加後の第２グラフは、その次に新たなノードを追加する場合には、第１グラフとして用いられる。すなわち、ここでいう第１グラフ及び第２グラフとは、あるノードの追加前後のグラフを区別して表現可能にするための名称である。
【００１３】
また、情報処理装置１００は、図１に示すように、ノード及び有向エッジを含むグラフを生成の対象として情報処理を行う。なお、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「Ａ」から所定のノード「Ｂ」に連結される有向エッジとは、参照元をノード「Ａ」とし、参照先をノード「Ｂ」とするエッジであることを示す。
【００１４】
以下では、このようにノード「Ａ」を参照元とするエッジをノード「Ａ」の出力エッジという。また、以下では、このようにノード「Ｂ」を参照先とするエッジをノード「Ｂ」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する２個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
【００１５】
また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【００１６】
情報処理装置１００は、例えば情報処理装置１００が処理可能な範囲で（例えば数百万〜数億等）の膨大な画像情報に対応するノードを対象にグラフの生成処理を行うが、図面においてはその一部のみを図示する。図１の例では、説明を簡単にするために、最大６個のノードを図示して処理の概要を説明する。また、図１の例では、情報処理装置１００は、何もない状態、すなわちノードが０個、エッジも０本である状態から、オブジェクトの追加に応じてノードＮ１等やエッジＥ１等を順次追加し、グラフＧＲ１１を生成する場合を示す。
【００１７】
また、このように「ノードＮ＊（＊は任意の数値）」と記載した場合、そのノードはノードＩＤ「Ｎ＊」により識別されるノードであることを示す。例えば、「ノードＮ１」と記載した場合、そのノードはノードＩＤ「Ｎ１」により識別されるノードである。
【００１８】
また、このように「エッジＥ＊（＊は任意の数値）」と記載した場合、そのエッジはエッジＩＤ「Ｅ＊」により識別されるエッジであることを示す。例えば、「エッジＥ１」と記載した場合、そのエッジはエッジＩＤ「Ｅ１」により識別されるエッジである。例えば、ノードＮ１を参照元とし、ノードＮ２を参照先として連結されるエッジＥ１により、ノードＮ１からノードＮ２に辿ることが可能となる。この場合、有向エッジであるエッジＥ１は、ノードＮ１を中心として識別される場合、出力エッジとなり、ノードＮ２を中心として識別される場合、入力エッジとなる。言い換えると、有向エッジであるエッジＥ１は、ノードＮ１側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードＮ２側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。
【００１９】
また、図１に示す空間情報ＶＳ１−１〜ＶＳ１−４は、グラフデータの生成過程を模式的に示す図であり、空間情報ＶＳ１−１〜ＶＳ１−４に示す空間は、同一の空間であってもよい。また、以下では、空間情報ＶＳ１−１〜ＶＳ１−４について、特に区別なく説明する場合には、空間情報ＶＳ１と記載する。
【００２０】
また、図１中の空間情報ＶＳ１は、ユークリッド空間であってもよい。また、図１に示す空間情報ＶＳ１は、各ベクトル間の距離等の説明のための概念的な図であり、空間情報ＶＳ１は、多次元空間である。例えば、図１に示す空間情報ＶＳ１は、平面上に図示するため２次元の態様にて図示されるが、例えば１００次元や１０００次元等の多次元空間であるものとする。
【００２１】
また、図１に示すグラフＧＲ１１−１〜ＧＲ１１−４は、グラフデータの生成過程を模式的に示す図であり、グラフＧＲ１１−１〜ＧＲ１１−４は、情報処理により生成される同一のグラフデータである。また、以下では、グラフＧＲ１１−１〜ＧＲ１１−４について、特に区別なく説明する場合には、グラフＧＲ１１と記載する。
【００２２】
また、図１に示す例においては、グラフＧＲ１１−１〜ＧＲ１１−４においては、適宜「ノードＮ＊（＊は任意の数値）」の図示を省略し、取得した各ノードを「○」内に「ノードＮ＊」の「＊」の値を付すことにより表現する。すなわち、「ノードＮ＊」の部分の「＊」が一致するノードに対応する。例えば、空間情報ＶＳ１中の左上の「○」であって、内部に「４」が付された「○」は、ノードＩＤ「Ｎ４」により識別されるノード（ノードＮ４）に対応する。例えば、図１に示す例において、各ノードに対応するベクトルデータは、Ｎ次元の実数値ベクトルであってもよい。
【００２３】
本実施形態においては、空間情報ＶＳ１における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象（画像情報）の類似性が、空間情報ＶＳ１内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図１に示す例においては、空間情報ＶＳ１における各ノード間の距離が短いオブジェクト同士の類似度が高く、空間情報ＶＳ１における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図１中の空間情報ＶＳ１において、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）と、ノードＩＤ「Ｎ２」により識別されるノード（ノードＮ２）とは近接している、すなわち距離が短い。そのため、ノードＩＤ「Ｎ１」により識別されるノードに対応するオブジェクトと、ノードＩＤ「Ｎ２」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
【００２４】
また、例えば、図１中の空間情報ＶＳ１において、ノードＩＤ「Ｎ２」により識別されるノードと、ノードＩＤ「Ｎ５」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードＩＤ「Ｎ２」により識別されるノードに対応するオブジェクトと、ノードＩＤ「Ｎ５」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標としての距離は、ベクトル（Ｎ次元ベクトル）間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
【００２５】
また、図１の例では、情報処理装置１００は、後述するグラフの生成処理により、新規追加のノードをグラフＧＲ１１に追加し、ノードを有向エッジで連結することにより、グラフＧＲ１１を生成する。例えば、グラフＧＲ１１の生成時やグラフＧＲ１１を用いた検索時においては、グラフ構造型インデックスと同様の処理を行うが、開始位置（起点）は所定の起点用情報（以下「起点用インデックス」ともいう）を用いて決定したノード（以下「起点ノード」ともいう）からスタートしてもよい。また、例えば、情報処理装置１００が生成したグラフＧＲ１１を用いて検索を行う場合、予め決定された起点ノードを起点として検索を行ってもよい。例えば、生成時や検索時においては、起点ノードがノードＮ１である場合、ノードＮ１から有向エッジを辿ることにより、ノードＮ２〜Ｎ５、Ｎ１１等を検索してもよい。なお、情報処理装置１００は、生成時や検索時において図１６に示すような処理手順により近傍ノードの探索（検索）を行ってもよいが、詳細は後述する。
【００２６】
ここから、図１を用いて情報処理の詳細を説明する。なお、図１に示す各ステップは、グラフの生成を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。なお、情報処理装置１００が行う情報処理は、図１中のグラフＧＲ１１−４に示すようなグラフＧＲ１１が生成されれば、どのような処理フローであってもよい。
【００２７】
また、図１の例では、連結条件一覧ＬＣＬ１に示すように、連結条件については、入力閾値が「２」であり、出力閾値が「１」である場合を示す。すなわち、情報処理装置１００は、連結条件一覧ＬＣＬ１に基づいて、各ノードに少なくとも２本の入力エッジ及び１本の出力エッジが連結されるようにグラフを生成する。また、図１の例では、変更条件一覧ＡＣＬ１や変更条件一覧ＡＣＬ２に示すような変更条件に基づいて、連結条件を変更する場合を示す。図１の例では、変更条件一覧ＡＣＬ２に示すエッジの統計値は、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値であるものとし、閾値ＥＴＨ１は「５」であるものとする。なお、図１の例では、説明を簡単にするために、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値を統計的な情報の一例として説明するが、統計的な情報は種々の情報であってもよい。例えば、統計的な情報は、グラフやどのようにエッジを追加するか等の連結条件に応じた種々の条件であってもよい。例えば、統計的な情報は、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値等の一部のノードやエッジの情報を用いるものに限らず、グラフ全体のノードやエッジの情報を用いるものであってもよい。また、例えば、統計的な情報は、一定個数の初期登録ノードの出力エッジ数の平均でもよい。例えば、統計的な情報は、最初に追加したノードから１００番目に追加したノードの１００個のノードの出力エッジ数の平均でもよい。情報処理装置１００は、変更条件一覧ＡＣＬ１や変更条件一覧ＡＣＬ２に示すような情報を変更条件情報記憶部１２３等（図６参照）に記憶してもよい。
【００２８】
まず、情報処理装置１００は、ノードＮ１を新規追加する（ステップＳ１１）。例えば、情報処理装置１００は、ノードＮ１をグラフに追加する。図１の例では、情報処理装置１００は、ノードＮ１が最初のノードであるため、ノードＮ１を含むグラフＧＲ１１を新規に生成する。また、情報処理装置１００は、ステップＳ１１後においてグラフＧＲ１１には、ノードがノードＮ１の１個のみであるため、グラフＧＲ１１にエッジを追加しない。
【００２９】
例えば、情報処理装置１００は、検索対象として新たに追加されたオブジェクトを取得し、追加されたオブジェクトに対応するノードを新規追加する。例えば、情報処理装置１００は、新たに追加されたオブジェクトをオブジェクト情報記憶部１２１（図４参照）に記憶し、新たに追加されたオブジェクトに対応付けたノードをグラフデータ記憶部１２４に記憶する。情報処理装置１００は、オブジェクトＩＤ「ＯＢ１」により識別されるオブジェクト（図４参照）に対応するノードＮ１をグラフＧＲ１１に追加する。
【００３０】
そして、情報処理装置１００は、ノードＮ２を新規追加する（ステップＳ１２）。図１の例では、例えば、情報処理装置１００は、ノードＮ２をグラフＧＲ１１に追加する。情報処理装置１００は、オブジェクトＩＤ「ＯＢ２」により識別されるオブジェクト（図４参照）に対応するノードＮ２をグラフＧＲ１１に追加する。
【００３１】
そして、情報処理装置１００は、グラフを生成する（ステップＳ１３）。情報処理装置１００は、連結条件一覧ＬＣＬ１に基づいて、追加したノードＮ２に２本の入力エッジ及び１本の出力エッジが連結されるようにグラフを生成する。情報処理装置１００は、追加したノードＮ２に連結するエッジを追加することにより、グラフＧＲ１１−１を生成する。図１の例では、情報処理装置１００は、グラフＧＲ１１中のノードＮ２以外にはノードＮ１のみしかないため、ノードＮ１からノードＮ２に入力される入力エッジであるエッジＥ１と、ノードＮ２からノードＮ１に出力される出力エッジであるエッジＥ２とを追加することにより、グラフＧＲ１１−１を生成する。そして、情報処理装置１００は、グラフＧＲ１１−１には、ノードＮ１以外に、ノードＮ２との間にエッジを接続するノードが無いため、ノードＮ２にエッジを連結する処理を終了する。なお、情報処理装置１００は、グラフＧＲ１１を探索し、ノードＮ２の近傍ノードとしてノードＮ１を選択し、ノードＮ１との間にエッジＥ１、Ｅ２とを追加することにより、グラフＧＲ１１−１を生成してもよい。
【００３２】
また、情報処理装置１００は、グラフＧＲ１１−１に基づいて、決定用情報一覧ＤＦＩ１を生成する。情報処理装置１００は、グラフＧＲ１１−１に含まれるノードやエッジの情報に基づいて、決定用情報一覧ＤＦＩ１を生成する。例えば、情報処理装置１００は、統計的な情報を含む決定用情報一覧ＤＦＩ１を生成する。情報処理装置１００は、グラフＧＲ１１−１に含まれるノード数が２個であることや、グラフＧＲ１１−１に含まれるエッジ数が２本であることを示す決定用情報一覧ＤＦＩ１を生成する。情報処理装置１００は、条件の判定に用いる情報であれば、ノード数やエッジ数に限らず、種々のグラフの統計的な情報を生成してもよい。決定用情報一覧ＤＦＩ１には、グラフＧＲ１１−１において、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値を示す情報（エッジ統計値）が含まれてもよい。なお、グラフＧＲ１１−１のように、上位２０％のノードの数が「０．４（＝２＊０．２）」のように、１未満となる場合、情報処理装置１００は、上位２０％のノードの数を「１」として、最大の入力エッジ数のノードの入力エッジ数をエッジ統計値として用いる。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ１を記憶部１２０（図３参照）に記憶してもよい。また、「１」以上の場合の小数点については、切り捨ててもよいし、四捨五入してもよいし、切り上げてもよい。
【００３３】
そして、情報処理装置１００は、グラフＧＲ１１−１が変更条件を満たすかどうかを判定する。例えば、情報処理装置１００は、グラフＧＲ１１−１に含まれるノード数が２個であるため、変更条件一覧ＡＣＬ１に示すノード数が１００個であるという変更条件を満たさないと判定する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ１中のノード数「２」と、変更条件一覧ＡＣＬ１中のノード数「１００」とを比較し、決定用情報一覧ＤＦＩ１中のノード数「２」が変更条件一覧ＡＣＬ１中のノード数「１００」と異なるため、変更条件を満たさないと判定する。また、情報処理装置１００は、グラフＧＲ１１−１において、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値は「１」であり、閾値ＥＴＨ１未満であるため、変更条件一覧ＡＣＬ２に示すエッジの統計値が閾値ＥＴＨ１以上という変更条件を満たさないと判定する。このように、情報処理装置１００は、グラフＧＲ１１−１が変更条件を満たさないと判定する。そのため、情報処理装置１００は、連結条件を変更せずに、処理を続行する。すなわち、情報処理装置１００は、入力閾値「２」及び出力閾値「１」を変更せずに、処理を続行する。
【００３４】
そして、情報処理装置１００は、ノードＮ３を新規追加する（ステップＳ１４−１）。図１の例では、例えば、情報処理装置１００は、追加されたオブジェクトに対応するノードＮ３をグラフＧＲ１１に追加する。
【００３５】
そして、情報処理装置１００は、グラフを探索する（ステップＳ１４−２）。例えば、情報処理装置１００は、図１６に示すような処理手順により、追加ノードの近傍に位置するノード（近傍ノード）の探索（検索）を行う。例えば、情報処理装置１００は、図１６に示すような処理手順によりグラフを探索することにより、所定の個数（以下「選択数」ともいう）の近傍ノードを選択する。例えば、情報処理装置１００は、入力閾値や出力閾値に応じて選択数を決定する。図１の例では、情報処理装置１００は、より大きな値である入力閾値「２」を選択数に決定する。なお、情報処理装置１００は、入力閾値や出力閾値よりも大きな値を選択数に決定してもよい。例えば、情報処理装置１００は、「１００」個等の種々の値を選択数に決定してもよい。例えば、情報処理装置１００は、種々の情報を適宜用いて、選択数を決定してもよい。例えば、情報処理装置１００は、生成後のグラフの検索の性能に基づいて、選択数（近傍ノード数）を決定してもよい。また、例えば、情報処理装置１００は、グラフ生成中において動的に選択数を変更してもよい。例えば、情報処理装置１００は、グラフ生成の途中で検索性能を確認して、選択数を増やしたり減らしたりしてもよい。例えば、情報処理装置１００は、生成中のグラフの検索性能に基づいて、選択数を増減させてもよい。例えば、情報処理装置１００は、生成中のグラフの検索性能を示す値と所定の閾値との比較に基づいて、選択数を増減させてもよい。このように、情報処理装置１００は、選択数に関する条件を動的に変更させてもよい。
【００３６】
情報処理装置１００は、追加ノードであるノードＮ３をクエリとして、図１６に示すような処理手順によりグラフＧＲ１１−１を探索し、ノードＮ３の近傍ノードとして、選択数「２」に対応する２個のノードＮ１、Ｎ２を選択する。また、図１の例では、ノードＮ１の方がノードＮ２よりもノードＮ３の近傍に位置する。このように、情報処理装置１００は、生成中のグラフを用いて追加ノードの近傍ノードを選択することにより、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。例えば、グラフに含まれるノード数が多くなった場合であっても、情報処理装置１００は、生成中のグラフを追加ノードの近傍ノードの選択に利用することにより、近傍ノード選択の処理時間の増大を抑制し、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。すなわち、情報処理装置１００は、生成中のグラフを用いて追加ノードの近傍ノードを選択することにより、より高速にグラフを生成することができる。なお、情報処理装置１００は、近傍ノードを選択できればどのような方法により、近傍ノードを選択してもよく、例えば生成中のグラフ内の各ノードと追加ノードとの間の距離を示す情報を用いて、距離が近い方から順に選択数の近傍ノードを選択してもよい。
【００３７】
なお、情報処理装置１００は、処理の高速化のために、グラフＧＲ１１−１の各ノードＮ１、Ｎ２をリーフとする木構造の起点用情報を用いて、起点ノードを決定してもよいが、詳細は後述する。例えば、情報処理装置１００は、図１５に示すような木構造の起点情報を用いて、グラフＧＲ１１−１のノードＮ１、Ｎ２のうち、ノードＮ１を起点ノードに決定してもよい。このように、情報処理装置１００は、生成中のグラフに対応する起点用情報を用いて起点ノードを決定することにより、効率的にグラフを探索することができるため、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。例えば、グラフに含まれるノード数が多くなった場合であっても、情報処理装置１００は、起点用情報を用いて起点ノードを決定することにより、起点ノードの選択の処理時間の増大を抑制し、より効率的に起点ノードを選択し、効率的なグラフ生成を可能にすることができる。
【００３８】
そして、情報処理装置１００は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第１グラフに追加することにより、第２グラフを生成する（ステップＳ１４−３）。図１の例では、情報処理装置１００は、連結条件一覧ＬＣＬ１に基づいて、ノードＮ３と近傍ノードであるノードＮ１、Ｎ２との間を連結する有向エッジを第１グラフであるグラフＧＲ１１−１に追加することにより、第２グラフであるグラフＧＲ１１−２を生成する。具体的には、情報処理装置１００は、連結条件一覧ＬＣＬ１に基づいて、ノードＮ３に２本の入力エッジ及び１本の出力エッジが連結されるようにグラフＧＲ１１−２を生成する。
【００３９】
情報処理装置１００は、選択した近傍ノードのうち、距離が短い方から順に２個のノードにノードＮ３への入力エッジを連結する。情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ２のうち、距離が最も短いノードＮ１にノードＮ３へ入力するエッジＥ３を連結する。これにより、情報処理装置１００は、ノードＮ３の近傍ノードであるノードＮ１とノードＮ３とを連結する。
【００４０】
情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ２のうち、距離が２番目に短いノードＮ２にノードＮ３へ入力するエッジＥ５を連結する。これにより、情報処理装置１００は、ノードＮ３の近傍ノードであるノードＮ２とノードＮ３とを連結する。
【００４１】
また、情報処理装置１００は、選択した近傍ノードのうち、距離が短い方から順に１個のノードにノードＮ３からの出力エッジを連結する。情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ２のうち、距離が最も短いノードＮ１にノードＮ３から出力するエッジＥ４を連結する。これにより、情報処理装置１００は、ノードＮ３とその近傍ノードであるノードＮ１とを連結する。これにより、情報処理装置１００は、追加したノードＮ３に２本の入力エッジＥ３、Ｅ５及び１本の出力エッジＥ４が連結されたグラフＧＲ１１−２を生成する。
【００４２】
また、情報処理装置１００は、グラフＧＲ１１−２に基づいて、決定用情報一覧ＤＦＩ２を生成する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ１を更新することにより、決定用情報一覧ＤＦＩ２を生成する。情報処理装置１００は、グラフＧＲ１１−２に含まれるノード数が３個であることや、グラフＧＲ１１−２に含まれるエッジ数が５本であることを示す決定用情報一覧ＤＦＩ２を生成する。例えば、情報処理装置１００は、記憶部１２０（図３参照）に記憶された決定用情報一覧ＤＦＩ１を決定用情報一覧ＤＦＩ２に更新してもよい。
【００４３】
そして、情報処理装置１００は、グラフＧＲ１１−２が変更条件を満たすかどうかを判定する。例えば、情報処理装置１００は、グラフＧＲ１１−２に含まれるノード数が３個であるため、変更条件一覧ＡＣＬ１に示すノード数が１００個であるという変更条件を満たさないと判定する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ２中のノード数「３」と、変更条件一覧ＡＣＬ１中のノード数「１００」とを比較し、決定用情報一覧ＤＦＩ２中のノード数「３」が変更条件一覧ＡＣＬ１中のノード数「１００」と異なるため、変更条件を満たさないと判定する。また、情報処理装置１００は、グラフＧＲ１１−２において、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値は「２」であり、閾値ＥＴＨ１未満であるため、変更条件一覧ＡＣＬ２に示すエッジの統計値が閾値ＥＴＨ１以上という変更条件を満たさないと判定する。このように、情報処理装置１００は、グラフＧＲ１１−２が変更条件を満たさないと判定する（ステップＳ１４−４）。そのため、情報処理装置１００は、連結条件を変更せずに、処理を続行する。すなわち、情報処理装置１００は、入力閾値「２」及び出力閾値「１」を変更せずに、処理を続行する。
【００４４】
そして、情報処理装置１００は、ノードＮ４、Ｎ５等を新規追加する（ステップＳ１５−１）。例えば、情報処理装置１００は、ノードＮ４、Ｎ５を含む９７個のノードを順次グラフＧＲ１１−２に追加する。図１の例では、情報処理装置１００は、グラフＧＲ１１−２にノードＮ４を追加した後、ノードＮ５等の９６個のノードを順次グラフＧＲ１１に追加する。
【００４５】
そして、情報処理装置１００は、グラフを探索する（ステップＳ１５−２）。図１の例では、情報処理装置１００は、追加したノードＮ４をクエリとして、グラフＧＲ１１−２を探索する。情報処理装置１００は、図１６に示すような処理手順によりグラフＧＲ１１−２を探索し、ノードＮ４の近傍ノードとして、選択数「２」に対応する２個のノードＮ１、Ｎ３を選択する。また、図１の例では、ノードＮ３の方がノードＮ１よりもノードＮ４の近傍に位置する。例えば、情報処理装置１００は、図１５に示すような木構造の起点情報を用いて、グラフＧＲ１１−２のノードＮ１〜Ｎ３のうち、ノードＮ３を起点ノードに決定してもよい。
【００４６】
そして、情報処理装置１００は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第１グラフに追加することにより、第２グラフを生成する（ステップＳ１５−３）。図１の例では、情報処理装置１００は、連結条件一覧ＬＣＬ１に基づいて、ノードＮ４と近傍ノードであるノードＮ１、Ｎ３との間を連結する有向エッジを第１グラフであるグラフＧＲ１１−２に追加することにより、第２グラフであるグラフＧＲ１１−３を生成する。具体的には、情報処理装置１００は、連結条件一覧ＬＣＬ１に基づいて、ノードＮ４に２本の入力エッジ及び１本の出力エッジが連結されるようにグラフＧＲ１１−３を生成する。
【００４７】
情報処理装置１００は、選択した近傍ノードのうち、距離が短い方から順に２個のノードにノードＮ４への入力エッジを連結する。情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ３のうち、距離が最も短いノードＮ３にノードＮ４へ入力するエッジＥ７を連結する。これにより、情報処理装置１００は、ノードＮ４の近傍ノードであるノードＮ３とノードＮ４とを連結する。
【００４８】
情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ３のうち、距離が２番目に短いノードＮ１にノードＮ４へ入力するエッジＥ６を連結する。これにより、情報処理装置１００は、ノードＮ４の近傍ノードであるノードＮ１とノードＮ４とを連結する。
【００４９】
また、情報処理装置１００は、選択した近傍ノードのうち、距離が短い方から順に１個のノードにノードＮ４からの出力エッジを連結する。情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ３のうち、距離が最も短いノードＮ３にノードＮ４から出力するエッジＥ８を連結する。これにより、情報処理装置１００は、ノードＮ４とその近傍ノードであるノードＮ３とを連結する。これにより、情報処理装置１００は、追加したノードＮ４に２本の入力エッジＥ６、Ｅ７及び１本の出力エッジＥ８が連結されたグラフＧＲ１１−３を生成する。
【００５０】
また、情報処理装置１００は、ノードＮ５等の９６個のノードについても、ノードＮ４と同様に、順次グラフＧＲ１１に追加することにより、グラフＧＲ１１−３を生成する。
【００５１】
例えば、ノードＮ４追加後にノードＮ５が追加された場合、情報処理装置１００は、ノードＮ５の近傍ノードとして、ノードＮ１、Ｎ４を選択する。また、図１の例では、ノードＮ１の方がノードＮ４よりもノードＮ５の近傍に位置する。そして、情報処理装置１００は、ノードＮ５への入力エッジであるエッジＮ９をノードＮ１へ連結し、ノードＮ５への入力エッジであるエッジＮ１０をノードＮ４へ連結する。また、情報処理装置１００は、ノードＮ５からの出力エッジであるエッジＮ１１をノードＮ１へ連結する。これにより、情報処理装置１００は、追加したノードＮ５に２本の入力エッジＥ９、Ｅ１０及び１本の出力エッジＥ１１が連結されたグラフＧＲ１１−３を生成する。また、情報処理装置１００は、ノードＮ４、Ｎ５以外の残りの９５個のノードについても、ノードＮ４、Ｎ５と同様に、順次グラフＧＲ１１に追加することにより、グラフＧＲ１１−３を生成する。
【００５２】
また、情報処理装置１００は、グラフＧＲ１１−３に基づいて、決定用情報一覧ＤＦＩ３を生成する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ２を更新することにより、決定用情報一覧ＤＦＩ３を生成する。情報処理装置１００は、グラフＧＲ１１−３に含まれるノード数が１００個であることや、グラフＧＲ１１−３に含まれるエッジ数が２００本であることを示す決定用情報一覧ＤＦＩ３を生成する。例えば、情報処理装置１００は、記憶部１２０（図３参照）に記憶された決定用情報一覧ＤＦＩ２を決定用情報一覧ＤＦＩ３に更新してもよい。
【００５３】
そして、情報処理装置１００は、グラフＧＲ１１−３が変更条件を満たすかどうかを判定する。例えば、情報処理装置１００は、グラフＧＲ１１−３に含まれるノード数が１００個であるため、変更条件一覧ＡＣＬ１に示すノード数が１００個であるという変更条件を満たすと判定する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ３中のノード数「１００」と、変更条件一覧ＡＣＬ１中のノード数「１００」とを比較し、決定用情報一覧ＤＦＩ３中のノード数「１００」が変更条件一覧ＡＣＬ１中のノード数「１００」と一致するため、変更条件を満たすと判定する。このように、情報処理装置１００は、グラフＧＲ１１−３が変更条件を満たすと判定する（ステップＳ１５−４）。
【００５４】
そのため、情報処理装置１００は、連結条件を変更する（ステップＳ１６）。図１の例では、情報処理装置１００は、条件を満たした変更条件一覧ＡＣＬ１の変更内容に基づいて、連結条件を変更する。情報処理装置１００は、変更条件一覧ＡＣＬ１に示すように、入力閾値を１増加させる。情報処理装置１００は、変更条件一覧ＡＣＬ１中の変更内容に基づいて、連結条件一覧ＬＣＬ２を生成する。例えば、情報処理装置１００は、連結条件一覧ＬＣＬ１を更新することにより、連結条件一覧ＬＣＬ２を生成する。情報処理装置１００は、入力閾値が「３」であり、出力閾値が「１」であることを示す連結条件一覧ＬＣＬ２を生成する。例えば、情報処理装置１００は、連結条件情報記憶部１２２等（図５参照）に記憶された連結条件一覧ＬＣＬ１に示す情報を連結条件一覧ＬＣＬ２に示す情報に更新してもよい。
【００５５】
情報処理装置１００は、ステップＳ１６以後の処理においては、入力閾値を「３」として、処理を続行する。このように、情報処理装置１００は、グラフの生成過程において動的に連結条件を変更することにより、グラフの生成具体等に応じて適切にグラフの生成条件を変更することができるため、適切なグラフ生成を行うことができる。また、情報処理装置１００は、連結条件の変更に応じて、選択数を更新する。図１の例では、情報処理装置１００は、より大きな値である入力閾値「３」を選択数に決定する。すなわち、情報処理装置１００は、選択数を「２」から「３」に更新する。
【００５６】
そして、情報処理装置１００は、ノードＮ１１等を新規追加する（ステップＳ１７−１）。例えば、情報処理装置１００は、ノードＮ１１を含む多数（例えば１０００個等）のノードを順次グラフＧＲ１１−３に追加する。図１の例では、情報処理装置１００は、グラフＧＲ１１−３にノードＮ１１を追加した後、残りの多数のノードを順次グラフＧＲ１１に追加する。
【００５７】
そして、情報処理装置１００は、グラフを探索する（ステップＳ１７−２）。図１の例では、情報処理装置１００は、追加したノードＮ１１をクエリとして、グラフＧＲ１１−３を探索する。情報処理装置１００は、図１６に示すような処理手順によりグラフＧＲ１１−３を探索し、ノードＮ１１の近傍ノードとして、選択数「３」に対応する３個のノードＮ１、Ｎ４、Ｎ５を選択する。また、図１の例では、ノードＮ５が最もノードＮ１１の近傍に位置し、ノードＮ５、Ｎ１、Ｎ４の順でノードＮ１１の近傍に位置する。例えば、情報処理装置１００は、図１５に示すような木構造の起点情報を用いて、グラフＧＲ１１−３のノードＮ１〜Ｎ５等を含む１００個のノードのうち、ノードＮ５を起点ノードに決定してもよい。
【００５８】
そして、情報処理装置１００は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第１グラフに追加することにより、第２グラフを生成する（ステップＳ１７−３）。図１の例では、情報処理装置１００は、連結条件一覧ＬＣＬ２に基づいて、ノードＮ１１と近傍ノードであるノードＮ１、Ｎ４、Ｎ５との間を連結する有向エッジを第１グラフであるグラフＧＲ１１−３に追加することにより、第２グラフであるグラフＧＲ１１−４を生成する。具体的には、情報処理装置１００は、連結条件一覧ＬＣＬ２に基づいて、ノードＮ１１に３本の入力エッジ及び１本の出力エッジが連結されるようにグラフＧＲ１１−４を生成する。
【００５９】
情報処理装置１００は、選択した近傍ノードのうち、距離が短い方から順に３個のノードにノードＮ１１への入力エッジを連結する。情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ４、Ｎ５のうち、距離が最も短いノードＮ５にノードＮ１１へ入力するエッジＥ１３を連結する。これにより、情報処理装置１００は、ノードＮ１１の近傍ノードであるノードＮ５とノードＮ１１とを連結する。
【００６０】
情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ４、Ｎ５のうち、距離が２番目に短いノードＮ１にノードＮ１１へ入力するエッジＥ１４を連結する。これにより、情報処理装置１００は、ノードＮ１１の近傍ノードであるノードＮ１とノードＮ１１とを連結する。
【００６１】
情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ４、Ｎ５のうち、距離が３番目に短いノードＮ４にノードＮ１１へ入力するエッジＥ１５を連結する。これにより、情報処理装置１００は、ノードＮ１１の近傍ノードであるノードＮ４とノードＮ１１とを連結する。
【００６２】
また、情報処理装置１００は、選択した近傍ノードのうち、距離が短い方から順に１個のノードにノードＮ１１からの出力エッジを連結する。情報処理装置１００は、選択した近傍ノードであるノードＮ１、Ｎ４、Ｎ５のうち、距離が最も短いノードＮ５にノードＮ１１から出力するエッジＥ１２を連結する。これにより、情報処理装置１００は、ノードＮ１１とその近傍ノードであるノードＮ５とを連結する。これにより、情報処理装置１００は、追加したノードＮ１１に３本の入力エッジＥ１３、Ｅ１４、及び１本の出力エッジＥ１２が連結されたグラフＧＲ１１−４を生成する。
【００６３】
また、情報処理装置１００は、ノードＮ１１以外の他のノードについても、ノードＮ１１と同様に、順次グラフＧＲ１１に追加することにより、グラフＧＲ１１−４を生成する。
【００６４】
また、情報処理装置１００は、グラフＧＲ１１−４に基づいて、決定用情報一覧ＤＦＩ４を生成する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ３を更新することにより、決定用情報一覧ＤＦＩ４を生成する。情報処理装置１００は、グラフＧＲ１１−４に含まれるノード数がＮＮＵＭ１個であることや、グラフＧＲ１１−４に含まれるエッジ数がＥＮＵＭ１本であることや、グラフＧＲ１１−４のエッジ統計値がＳＶＬ１であることを示す決定用情報一覧ＤＦＩ４を生成する。決定用情報一覧ＤＦＩ４では、各値をＮＮＵＭ１やＥＮＵＭ１やＳＶＬ１等の抽象的な符号で示すが、各値は具体的な数値であるものとする。例えば、ノード数ＮＮＵＭ１は、「１００００」であり、エッジ数ＥＮＵＭ１は「２５０００」であり、エッジ統計値ＳＶＬ１は「５」であるものとする。例えば、情報処理装置１００は、記憶部１２０（図３参照）に記憶された決定用情報一覧ＤＦＩ３を決定用情報一覧ＤＦＩ４に更新してもよい。
【００６５】
そして、情報処理装置１００は、グラフＧＲ１１−４が変更条件を満たすかどうかを判定する。例えば、情報処理装置１００は、グラフＧＲ１１−４に含まれるノード数がノード数ＮＮＵＭ１個（１００００個等）であり１００より大きいため、変更条件一覧ＡＣＬ１に示すノード数が１００個であるという変更条件を満たさないと判定する。例えば、情報処理装置１００は、決定用情報一覧ＤＦＩ１中のノード数「ＮＮＵＭ１」と、変更条件一覧ＡＣＬ１中のノード数「１００」とを比較し、決定用情報一覧ＤＦＩ４中のノード数「ＮＮＵＭ１」が変更条件一覧ＡＣＬ１中のノード数「１００」と異なるため、変更条件を満たさないと判定する。
【００６６】
また、情報処理装置１００は、グラフＧＲ１１−４において、入力エッジ数が多い上位２０％のノードの等の入力エッジ数の平均値、すなわちエッジ統計値ＳＶＬ１は「５」であり、閾値ＥＴＨ１である「５」以上であるため、変更条件一覧ＡＣＬ２に示すエッジの統計値が閾値ＥＴＨ１以上という変更条件を満たすと判定する。このように、情報処理装置１００は、グラフＧＲ１１−４が変更条件を満たすと判定する（ステップＳ１７−４）。
【００６７】
そのため、情報処理装置１００は、連結条件を変更する（ステップＳ１８）。図１の例では、情報処理装置１００は、条件を満たした変更条件一覧ＡＣＬ２の変更内容に基づいて、連結条件を変更する。情報処理装置１００は、変更条件一覧ＡＣＬ２に示すように、入力閾値を１増加させ、出力閾値を５増加させる。情報処理装置１００は、変更条件一覧ＡＣＬ２中の変更内容に基づいて、連結条件一覧ＬＣＬ３を生成する。例えば、情報処理装置１００は、連結条件一覧ＬＣＬ２を更新することにより、連結条件一覧ＬＣＬ３を生成する。情報処理装置１００は、入力閾値が「４」であり、出力閾値が「６」であることを示す連結条件一覧ＬＣＬ３を生成する。例えば、情報処理装置１００は、連結条件情報記憶部１２２等（図５参照）に記憶された連結条件一覧ＬＣＬ２に示す情報を連結条件一覧ＬＣＬ３に示す情報に更新してもよい。
【００６８】
情報処理装置１００は、ステップＳ１８以後の処理においては、入力閾値を「４」、入力閾値を「６」として、処理を続行する。このように、情報処理装置１００は、グラフの生成過程において動的に連結条件を変更することにより、グラフの生成具体等に応じて適切にグラフの生成条件を変更することができるため、適切なグラフ生成を行うことができる。また、情報処理装置１００は、連結条件の変更に応じて、選択数を更新する。図１の例では、情報処理装置１００は、より大きな値である出力閾値「６」を選択数に決定する。すなわち、情報処理装置１００は、選択数を「３」から「６」に更新する。
【００６９】
上述したように、情報処理装置１００は、生成中のグラフにノードが追加された場合、生成中のグラフを探索し、追加されたノード（追加ノード）に対応する近傍ノードを高速に選択する。そして、情報処理装置１００は、選択した近傍ノードのうち、生成中に動的に変更される連結条件に基づくノードと、追加ノードとの間に有効エッジを連結する。このように、情報処理装置１００は、生成中のグラフの生成状況に応じて出力閾値や入力閾値等の連結条件を更新することにより、適切な連結条件に変更することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置１００は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【００７０】
〔１−１．グラフ規模に応じた連結エッジ数の増加〕
例えば、グラフの生成時において、生成の初期段階で追加されたノードには、多くのエッジが連結される傾向がある。例えば、追加したノードに３本のエッジ（２本の入力エッジ及び１本の出力エッジ等）を連結する場合であっても、最初に登録（追加）したノードには、数千や数万のエッジが連結される。そのため、情報処理装置１００は、グラフの生成が進むほど、連結するエッジ数を増加させることにより、いつノードが追加されたかにより生じるエッジのばらつきを抑制することができるため、検索に用いるグラフを適切に生成することができる。
【００７１】
例えば、情報処理装置１００は、グラフの規模に応じて動的に連結条件を変更する。この場合、情報処理装置１００は、第１グラフのノード数が第１閾値（例えば千個）までの第１段階では、追加ノードに３本のエッジ（１本の入力エッジ及び２本の出力エッジ等）を連結する。例えば、情報処理装置１００は、グラフのノード数が千個に達するまで、３本のエッジ（１本の入力エッジ及び２本の出力エッジ等）を連結する連結条件に基づいて、グラフにエッジを追加する。
【００７２】
そして、情報処理装置１００は、第１グラフのノード数が第２閾値（例えば一万個）までの第２段階では、追加ノードに５本のエッジ（２本の入力エッジ及び３本の出力エッジ等）を連結する。例えば、情報処理装置１００は、グラフのノード数が第１閾値の変更条件を満たす場合、連結条件を５本のエッジ（２本の入力エッジ及び３本の出力エッジ等）に変更し、グラフにノードを追加する。情報処理装置１００は、グラフのノード数が一万個に達するまで、５本のエッジ（２本の入力エッジ及び３本の出力エッジ等）を連結する連結条件に基づいて、グラフにエッジを追加する。
【００７３】
そして、情報処理装置１００は、第１グラフのノード数が第３閾値（例えば十万個）までの第３段階では、追加ノードに１０本（４本の入力エッジ及び６本の出力エッジ等）のエッジを連結する。例えば、情報処理装置１００は、グラフのノード数が第２閾値の変更条件を満たす場合、連結条件を１０本（４本の入力エッジ及び６本の出力エッジ等）に変更し、グラフにノードを追加する。情報処理装置１００は、グラフのノード数が十万個に達するまで、１０本（４本の入力エッジ及び６本の出力エッジ等）を連結する連結条件に基づいて、グラフにエッジを追加する。また、情報処理装置１００は、グラフのノード数が第３閾値の変更条件を満たす場合、連結条件をさらにエッジ数を増加した条件に変更し、グラフにノードを追加する。
【００７４】
このように、情報処理装置１００は、段階的に連結するエッジ数を増加させることにより、エッジのばらつきを抑制することができるため、検索に用いるグラフを適切に生成することができる。
【００７５】
〔１−２．グラフデータ〕
なお、図１の例では、情報処理装置１００が最初（ノード数が０個の状態）からグラフＧＲ１１を生成する場合、すなわちグラフを新規に生成する場合を示したが、情報処理装置１００は、新規生成に限らず、種々のグラフを生成してもよい。例えば、情報処理装置１００は、ノードやエッジが含まれるグラフに、新たに追加されたオブジェクトに対応するノードを追加することにより、グラフを生成してもよい。例えば、情報処理装置１００は、エッジが調整され再構築されたグラフに、新たに追加されたオブジェクトに対応するノードを追加することにより、グラフを生成してもよい。例えば、情報処理装置１００は、図１３に示す再構築グラフＧＲ２１に、新たに追加されたオブジェクトに対応するノードを追加し、再構築グラフＧＲ２１を更新することにより、グラフを生成してもよい。
【００７６】
〔１−３．連結条件〕
図１の例では、入力閾値や出力閾値を所定数だけ増加させる場合を示したが、情報処理装置１００は、入力閾値や出力閾値について種々の態様により変更を行ってもよい。例えば、一定数の初期ノードの出力エッジの平均値を付与する入力エッジと出力エッジ数の総数としてもよい。例えば、最初に追加した一定数（例えば５０個等）のノード（初期ノード）の出力エッジの平均値を、入力閾値と出力閾値の総数としてもよい。また、情報処理装置１００は、入力閾値や出力閾値を所定の割合だけ増加させてもよい。例えば、対象が「入力エッジ」であり、変更条件ＡＣＤＸの変更内容が「１０％増加」であり、入力閾値が「１０」本である場合、情報処理装置１００は、入力閾値が「１０」本を「１１（＝１０＋１０＊０．１）」本に増加させてもよい。また、情報処理装置１００は、入力閾値や出力閾値の増加に限らず、入力閾値や出力閾値を減少させる変更を行ってもよい。なお、連結条件は、入力閾値や出力閾値に限らず、グラフ生成時においてエッジの連結に関連する条件であれば、どのような条件であってもよい。
【００７７】
〔１−４．変更条件〕
なお、図１に示す変更条件は一例であり、情報処理装置１００は、種々の変更条件を用いてもよい。例えば、情報処理装置１００は、グラフに追加された追加ノードの割合に基づく変更条件を用いてもよい。例えば、情報処理装置１００は、図１３中の再構築条件を変更条件として用いてもよい。例えば、情報処理装置１００は、グラフに含まれるノードのうち、追加ノードの割合が所定の閾値以上であることを条件とする変更条件を用いてもよい。例えば、情報処理装置１００は、グラフに含まれるノードのうち、有向エッジの調整処理である再構築処理以後に追加された追加ノードの割合が所定の閾値以上であることを条件とする変更条件を用いてもよい。
【００７８】
また、例えば、情報処理装置１００は、グラフの生成時間に関する変更条件を用いてもよい。この場合、情報処理装置１００は、生成処理に要する時間（生成時間）を推定する。例えば、情報処理装置１００は、追加するノードの数など、グラフを構成するノード数（構成ノード数）を示す情報を取得した場合、その構成ノード数に基づいて、生成時間を推定してもよい。例えば、情報処理装置１００は、グラフ生成開始時から所定数（例えば１０や１００等）のノードを追加時の処理時間（サンプル時間）を用いて、生成時間を推定してもよい。
【００７９】
例えば、情報処理装置１００は、サンプル時間と、構成ノード数と、連結条件とを用いて、生成時間（推定生成時間）を推定してもよい。例えば、情報処理装置１００は、過去のグラフ生成の履歴情報を用いて、推定生成時間を推定してもよい。例えば、情報処理装置１００は、サンプル時間、構成ノード数及び連結条件の組合せと、過去のグラフ生成の履歴情報とを比較し、履歴情報のうち、サンプル時間、構成ノード数及び連結条件の組合せと類似する履歴に含まれる処理時間を、推定生成時間として推定してもよい。
【００８０】
そして、情報処理装置１００は、指定された生成時間（指定時間）を超過すると推定される場合、連結エッジ数を減少させるように連結条件を変更してもよい。例えば、情報処理装置１００は、推定生成時間と指定時間とを比較し、推定生成時間が指定時間を超える場合、連結エッジ数を減少させるように連結条件を変更してもよい。
【００８１】
〔１−５．起点用情報〕
例えば、情報処理装置１００は、図１５に示すようなツリー構造（木構造）に関する起点用情報ＩＮＤ１１を起点用情報（起点用インデックス）として用いてもよい。図１５は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。例えば、起点用情報ＩＮＤ１１は、グラフＧＲ１１中のノードに到達可能なツリー構造を有するインデックスである。図１５の例では説明を簡単にするために、起点用情報ＩＮＤ１１は、ノードＮ１〜Ｎ５の５個のノードに到達するルートのみを図示するが、多数（例えば５００や１０００等）の他のノードへ到達するルートが含まれてもよい。例えば、起点用情報ＩＮＤ１１は、グラフＧＲ１１中の全ノードに到達可能であってもよい。
【００８２】
なお、起点用情報ＩＮＤ１１のような起点用情報は、情報処理装置１００が生成してもよいし、情報処理装置１００は、起点用情報を情報提供装置５０等の他の外部装置から取得してもよい。例えば、情報処理装置１００は、起点用情報を生成する場合は、木構造に関する種々の従来技術を適宜用いて、グラフ（例えばグラフＧＲ１１）に含まれるノードをリーフとする木構造の起点用情報（例えば起点用情報ＩＮＤ１１）を生成する。また、情報処理装置１００は、新たなノードがグラフ（例えばグラフＧＲ１１）に追加された場合、新たに追加されたオブジェクトに対応するノード（「追加ノード」ともいう）をリーフとして木構造の起点用情報（例えば起点用情報ＩＮＤ１１）に追加する。これにより、情報処理装置１００は、新たなノードがグラフに追加された場合、起点用情報を更新する。すなわち、情報処理装置１００は、新たなノードがグラフに追加された場合、新たなノードをリーフとして追加した起点用情報を生成する。
【００８３】
上記のように、情報処理装置１００は、木構造に関する種々の従来技術を適宜用いて、起点用情報記憶部１２５（図８参照）に記憶された起点用情報ＩＮＤ１１のような、起点用インデックスを生成する。例えば、情報処理装置１００は、新たにオブジェクトが追加された場合、新たに追加されたオブジェクトに対応するノードをリーフとして追加することにより、起点用情報ＩＮＤ１１を更新してもよい。図１の例では、情報処理装置１００は、ノードＮ３やノードＮ４等が追加される毎に、ノードＮ３やノードＮ４等をリーフとして追加することにより、起点用情報ＩＮＤ１１を更新してもよい。
【００８４】
また、情報処理装置１００は、他の外部装置から起点用情報を取得する場合は、他の外部装置へグラフを提供する。そして、情報処理装置１００は、グラフを受信した他の外部装置が生成した起点用情報を、他の外部装置から取得する。例えば、情報処理装置１００は、情報提供装置５０から起点用情報ＩＮＤ１１を取得する場合は、情報提供装置５０へグラフＧＲ１１を送信する。そして、情報処理装置１００は、グラフＧＲ１１を受信した情報提供装置５０が生成した起点用情報ＩＮＤ１１を、情報提供装置５０から取得する。例えば、情報処理装置１００は、起点用情報ＩＮＤ１１と追加ノードに関する情報とを情報提供装置５０へ提供することにより、情報提供装置５０から追加ノードにより更新された起点用情報ＩＮＤ１１を取得してもよい。なお、上記は一例であり、情報提供装置５０は、起点用情報ＩＮＤ１１を取得可能であれば、どのような手段により起点用情報ＩＮＤ１１を取得してもよい。
【００８５】
また、情報処理装置１００は、図１５中のインデックス情報群ＧＩＮＦ１１に示すような起点用情報ＩＮＤ１１を用いて起点ノードを決定してもよい。図１５の例では、情報処理装置１００は、起点用情報ＩＮＤ１１に基づいて、クエリＱＥ１に対応する起点ノードを決定する。クエリＱＥ１は、新たに追加するオブジェクトに対応するノードやグラフＧＲ１１を用いた検索を行う対象等であってもよい。すなわち、情報処理装置１００は、グラフ生成時や検索時において、起点用情報ＩＮＤ１１を用いて、起点ノードを決定する。
【００８６】
具体的には、情報処理装置１００は、起点用情報記憶部１２５（図８参照）に記憶された起点用情報ＩＮＤ１１を用いて、起点ノードを決定する。図１５中の起点用情報ＩＮＤ１１は、図８中の起点用情報記憶部１２５に示す階層構造を有する。例えば、起点用情報ＩＮＤ１１は、ルートＲＴの直下に位置する第１階層のノード（ベクトル）が、節点ＶＴ１、ＶＴ２、ＶＴ３等であることを示す。また、例えば、起点用情報ＩＮＤ１１は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４（図示せず）であることを示す。例えば、起点用情報ＩＮＤ１１は、節点ＶＴ２−１の直下の第３階層のノードが、ノードＮ１、Ｎ２、すなわちグラフＧＲ１１中のノード（ベクトル）であることを示す。また、起点用情報ＩＮＤ１１は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３、Ｎ４、Ｎ５、すなわちグラフＧＲ１１中のノード（ベクトル）であることを示す。
【００８７】
例えば、情報処理装置１００は、図１中の起点用情報ＩＮＤ１１に示すような木構造型の起点用インデックス情報を用いて、グラフＧＲ１１における起点ノードを決定する。図１の例では、情報処理装置１００は、クエリＱＥ１に基づいて、起点用情報ＩＮＤ１１を上（ルートＲＴ）から下へ辿ることにより、起点用情報ＩＮＤ１１の近傍候補となる起点ノードを決定（特定）する。これにより、情報処理装置１００は、効率的に検索クエリ（クエリＱＥ１）に対応する起点ノードを決定することができる。例えば、情報処理装置１００は、追加ノードであるクエリＱＥ１に対応する適切な起点ノードを高速に決定することができる。
【００８８】
なお、情報処理装置１００は、上記に限らず、種々の起点用インデックスを用いてもよい。すなわち、図１５の例に示す起点用情報（起点用インデックス）は一例であり、情報処理装置１００は、種々の起点用情報を用いて、グラフ情報を検索してもよい。情報処理装置１００は、検索時の起点ノードの決定に用いる起点用インデックスを生成してもよい。例えば、情報処理装置１００は、高次元ベクトルを高速に検索するための検索インデックス（起点用情報）を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【００８９】
例えば、情報処理装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスを起点用インデックスとして生成してもよい。例えば、情報処理装置１００は、ＶＰ木（Vantage-Point  tree）に関する検索インデックスを起点用インデックスとして生成してもよい。
【００９０】
また、例えば、情報処理装置１００は、その他の木構造を有する起点用インデックスとして生成してもよい。例えば、情報処理装置１００は、木構造の起点用インデックスのリーフがグラフに接続する種々の起点用インデックスを生成してもよい。例えば、情報処理装置１００は、木構造の起点用インデックスのリーフがグラフ中のノードに対応する種々の起点用インデックスを生成してもよい。また、情報処理装置１００は、このような起点用インデックスを用いて検索を行う場合、起点用インデックスを辿って到達したリーフ（ノード）からグラフを探索してもよい。
【００９１】
なお、上述したような起点用インデックスは一例であり、情報処理装置１００は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造の起点用インデックスを生成してもよい。例えば、情報処理装置１００は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックスを生成してもよい。例えば、情報処理装置１００は、高次元ベクトルの検索に対応可能な起点用インデックスであれば、どのようなデータ構造の起点用インデックスを生成してもよい。情報処理装置１００は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置１００は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関する検索をより高速に実行可能にすることができる。
【００９２】
〔２．情報処理システムの構成〕
図２に示すように、情報処理システム１は、端末装置１０と、情報提供装置５０と、情報処理装置１００とが含まれる。端末装置１０と、情報提供装置５０と、情報処理装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図２は、実施形態に係る情報処理システムの構成例を示す図である。なお、図２に示した情報処理システム１には、複数台の端末装置１０や、複数台の情報提供装置５０や、複数台の情報処理装置１００が含まれてもよい。
【００９３】
端末装置１０は、ユーザによって利用される情報処理装置である。端末装置１０は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置１０をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置１０と読み替えることもできる。なお、上述した端末装置１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等により実現される。
【００９４】
情報提供装置５０は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトＩＤが格納される。例えば、情報提供装置５０は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置５０は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置５０は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置１００に提供する。また、情報提供装置５０は、クエリを情報処理装置１００に送信することにより、情報処理装置１００からクエリに対応する画像を示すオブジェクトＩＤ等を受信する。
【００９５】
情報処理装置１００は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第１グラフを用いて、第２グラフを生成する情報処理装置である。すなわち、情報処理装置１００は、第１グラフを用いて、第２グラフを生成する生成装置である。例えば、情報処理装置１００は、第１グラフ中の複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する。そして、情報処理装置１００は、一のノードを第１グラフに追加し、有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第２グラフを生成する。
【００９６】
例えば、情報処理装置１００は、端末装置からクエリ情報（以下、単に「クエリ」ともいう）を受信すると、クエリに類似する対象（ベクトル情報等）を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置１００が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、ＵＲＬ（Uniform  Resource  Locator）等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置１００が画像を検索する場合を一例として説明する。
【００９７】
〔３．情報処理装置の構成〕
次に、図３を用いて、実施形態に係る情報処理装置１００の構成について説明する。図３は、実施形態に係る情報処理装置１００の構成例を示す図である。図３に示すように、情報処理装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、情報処理装置１００は、情報処理装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００９８】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図２中のネットワークＮ）と有線または無線で接続され、端末装置１０や情報提供装置５０との間で情報の送受信を行う。
【００９９】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部１２０は、図３に示すように、オブジェクト情報記憶部１２１と、連結条件情報記憶部１２２と、変更条件情報記憶部１２３と、グラフデータ記憶部１２４と、起点用情報記憶部１２５と、再構築条件情報記憶部１２６と、再構築グラフデータ記憶部１２７とを有する。
【０１００】
（オブジェクト情報記憶部１２１）
実施形態に係るオブジェクト情報記憶部１２１は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部１２１は、オブジェクトＩＤやベクトルデータを記憶する。図４は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図４に示すオブジェクト情報記憶部１２１は、「オブジェクトＩＤ」、「ベクトル情報」といった項目が含まれる。
【０１０１】
「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトＩＤにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図４の例では、オブジェクトを識別するオブジェクトＩＤに対して、オブジェクトに対応するベクトルデータ（ベクトル情報）が対応付けられて登録されている。
【０１０２】
例えば、図４の例では、ＩＤ「ＯＢ１」により識別されるオブジェクト（対象）は、「１０，２４，５１，２．．．」の多次元のベクトル情報が対応付けられることを示す。
【０１０３】
なお、オブジェクト情報記憶部１２１は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１０４】
（連結条件情報記憶部１２２）
実施形態に係る連結条件情報記憶部１２２は、エッジの連結に関する連結条件に関する各種情報を記憶する。図５は、実施形態に係る連結条件情報記憶部の一例を示す図である。図５に示す連結条件情報記憶部１２２は、「連結条件ＩＤ」、「対象」、「閾値名」、「値」といった項目が含まれる。
【０１０５】
「連結条件ＩＤ」は、有向エッジの連結に関する連結条件を識別する情報を示す。「対象」は、連結条件ＩＤにより識別される連結条件の対象を示す。「閾値名」は、閾値を識別するための情報（名称）を示す。また、「値」は、対応する閾値の具体的な値を示す。
【０１０６】
図５の例では、連結条件ＩＤ「ＬＣＤ１」により識別される連結条件（連結条件ＬＣＤ１）は、入力エッジを対象とする条件であることを示す。連結条件ＬＣＤ１として用いられる条件は、入力閾値であり、その値は「ＩＴＨ１」であることを示す。なお、図５に示す例では、「入力閾値」の値は、「ＩＴＨ１」といった抽象的な符号を図示するが、「２」や「１０」等の具体的な数値であるものとする。
【０１０７】
また、図５の例では、連結条件ＩＤ「ＬＣＤ２」により識別される連結条件（連結条件ＬＣＤ２）は、出力エッジを対象とする条件であることを示す。連結条件ＬＣＤ２として用いられる条件は、出力閾値であり、その値は「ＯＴＨ１」であることを示す。なお、図５に示す例では、「出力閾値」の値は、「ＯＴＨ１」といった抽象的な符号を図示するが、「１」や「２０」等の具体的な数値であるものとする。
【０１０８】
なお、連結条件情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１０９】
（変更条件情報記憶部１２３）
実施形態に係る変更条件情報記憶部１２３は、連結条件の変更に関する変更条件に関する各種情報を記憶する。図６は、実施形態に係る変更条件情報記憶部の一例を示す図である。図６に示す変更条件情報記憶部１２３は、「変更条件ＩＤ」、「決定用情報」、「変更情報」といった項目を有する。
【０１１０】
「変更条件ＩＤ」は、連結条件の変更に関する条件を識別する情報を示す。「決定用情報」は、連結条件を変更するかの決定（判定）に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、連結条件を変更するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図６に示す例では、「閾値」の値は、「ＮＴＨ１」といった抽象的な符号を図示するが、「１００」や「５０００」や「５％」や「０．２」等の具体的な数値であるものとする。
【０１１１】
「変更情報」は、変更される連結条件やその変更内容を示す情報が記憶される。「変更情報」には、「変更対象」、「変更内容」といった項目が含まれる。「変更対象」は、対応する条件を満たす場合に変更される変更対象となる連結条件を示す。「変更対象」には、対象とする連結条件を識別する情報（連結条件ＩＤ等）が記憶される。「変更内容」は、対応する条件を満たす場合に連結条件を変更する具体的な内容を示す。なお、図６に示す例では、「変更内容」は、「ＡＩＮＦ１１」といった抽象的な符号を図示するが、「＋１」や「５増加」や「２減少」や「１０％増加」や「５％減少」等の種々の変更内容であってもよい。
【０１１２】
図６の例では、変更条件ＩＤ「ＡＣＤ１」により識別される変更条件（変更条件ＡＣＤ１）は、追加ノード数に関する情報を判定に用いる条件であることを示す。変更条件ＡＣＤ１は、閾値「ＮＴＨ１」であることを示す。また、変更条件ＡＣＤ１を満たす場合、変更対象となる連結条件は、連結条件ＬＣＤ１と連結条件ＬＣＤ２であることを示す。変更条件ＡＣＤ１を満たす場合、連結条件ＬＣＤ１は変更内容ＡＩＮＦ１１に応じて変更されることを示す。例えば、変更内容ＡＩＮＦ１１が「２増加」である場合、情報処理装置１００は、変更条件ＡＣＤ１を満たすと判定した場合に、連結条件ＬＣＤ１の入力閾値ＩＴＨ１の値を２増加させる。また、変更条件ＡＣＤ１を満たす場合、連結条件ＬＣＤ２は変更内容ＡＩＮＦ１２に応じて変更されることを示す。例えば、変更内容ＡＩＮＦ１２が「１減少」である場合、情報処理装置１００は、変更条件ＡＣＤ２を満たすと判定した場合に、連結条件ＬＣＤ２の出力閾値ＯＴＨ１の値を１減少させる。
【０１１３】
なお、変更条件情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１１４】
（グラフデータ記憶部１２４）
実施形態に係るグラフデータ記憶部１２４は、グラフデータに関する各種情報を記憶する。例えば、グラフデータ記憶部１２４は、生成したグラフデータを記憶する。図７は、実施形態に係るグラフデータ記憶部の一例を示す図である。図７に示すグラフデータ記憶部１２４は、「ノードＩＤ」、「オブジェクトＩＤ」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジＩＤ」や「参照先」といった情報が含まれる。
【０１１５】
「ノードＩＤ」は、グラフデータにおける各ノード（対象）を識別するための識別情報を示す。また、「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。
【０１１６】
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図７の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジＩＤ」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（ノード）を示す情報を示す。すなわち、図７の例では、ノードを識別するノードＩＤに対して、そのノードに対応するオブジェクト（対象）を識別する情報やそのノードからの有向エッジ（出力エッジ）が連結される参照先（ノード）が対応付けられて登録されている。
【０１１７】
図７の例では、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）は、オブジェクトＩＤ「ＯＢ１」により識別されるオブジェクト（対象）に対応することを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ１」により識別されるエッジ（エッジＥ１）が、ノードＩＤ「Ｎ２」により識別されるノード（ノードＮ２）に連結されることを示す。すなわち、図７の例では、グラフデータにおけるノードＮ１からはエッジＥ１によりノードＮ２へ辿ることができることを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ３」により識別されるエッジ（エッジＥ３）が、ノードＩＤ「Ｎ３」により識別されるノード（ノードＮ３）に連結されることを示す。すなわち、図７の例では、グラフデータにおけるノードＮ１からはエッジＥ３によりノードＮ３へ辿ることができることを示す。
【０１１８】
なお、グラフデータ記憶部１２４は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフデータ記憶部１２４は、各ノード（ベクトル）間を連結するエッジの長さが記憶されてもよい。すなわち、グラフデータ記憶部１２４は、各ノード（ベクトル）間の距離を示す情報が記憶されてもよい。また、例えば、グラフデータ記憶部１２４は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
【０１１９】
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータＧＲ１１は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータＧＲ１１は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータＧＲ１１は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
【０１２０】
（起点用情報記憶部１２５）
実施形態に係る起点用情報記憶部１２５は、起点用情報に関する各種情報を記憶する。図８は、実施形態に係る起点用情報記憶部の一例を示す図である。具体的には、図８の例では、起点用情報記憶部１２５は、ツリー構造の起点用インデックス情報を示す。図８の例では、起点用情報記憶部１２５は、「ルート階層」、「第１階層」、「第２階層」、「第３階層」等といった項目が含まれる。なお、「第１階層」〜「第３階層」に限らず、インデックスの階層数に応じて、「第４階層」、「第５階層」、「第６階層」等が含まれてもよい。
【０１２１】
「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート（最上位）の階層を示す。「第１階層」は、インデックスの第１階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第１階層」に格納されるノードは、インデックスの根（ルート）に直接結ばれる階層に対応するノードとなる。
【０１２２】
「第２階層」は、インデックスの第２階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第２階層」に格納されるノードは、第１階層のノードに結ばれる直下の階層に対応するノードとなる。「第３階層」は、インデックスの第３階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第３階層」に格納されるノードは、第２階層のノードに結ばれる直下の階層に対応するノードとなる。
【０１２３】
図８に示す例においては、起点用情報記憶部１２５には、図１中の起点用情報ＩＮＤ１１に対応する情報が記憶される。例えば、起点用情報記憶部１２５は、第１階層のノードが、節点ＶＴ１〜ＶＴ３等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【０１２４】
また、起点用情報記憶部１２５は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４であることを示す。また、起点用情報記憶部１２５は、節点ＶＴ２−１の直下の第３階層のノードが、ノードＮ１、ノードＮ２のグラフＧＲ１１中のノード（ベクトル）であることを示す。起点用情報記憶部１２５は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３、ノードＮ４、ノードＮ５のグラフＧＲ１１中のノード（ベクトル）であることを示す。
【０１２５】
なお、起点用情報記憶部１２５は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１２６】
（再構築条件情報記憶部１２６）
実施形態に係る再構築条件情報記憶部１２６は、エッジを調整するグラフの再構築を行うかの決定に用いる条件に関する再構築条件に関する各種情報を記憶する。図９は、実施形態に係る再構築条件情報記憶部の一例を示す図である。図９に示す再構築条件情報記憶部１２６は、「再構築条件ＩＤ」、「決定用情報」といった項目を有する。
【０１２７】
「再構築条件ＩＤ」は、グラフの再構築処理の実行の判定に関する条件を識別する情報を示す。「決定用情報」は、再構築を実行するかの決定（判定）に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、再構築を実行するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図９に示す例では、「閾値」の値は、「ＮＴＨ２」といった抽象的な符号を図示するが、「１０％」や「０．３」や「５００」や「１００００」等の具体的な数値であるものとする。
【０１２８】
図９の例では、再構築条件ＩＤ「ＲＣＤ１」により識別される再構築条件（再構築条件ＲＣＤ１）は、追加ノード割合に関する情報を判定に用いる条件であることを示す。再構築条件ＲＣＤ１は、閾値「ＮＴＨ２」であることを示す。すなわち、情報処理装置１００は、再構築条件ＲＣＤ１を満たすと判定した場合、グラフの再構築処理を実行する。再構築条件ＲＣＤ１が「１０％」である場合、情報処理装置１００は、グラフ中のノードのうち、追加ノードの割合が１０％に達した際に、グラフの再構築処理を実行する。
【０１２９】
なお、再構築条件情報記憶部１２６は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１３０】
（再構築グラフデータ記憶部１２７）
実施形態に係る再構築グラフデータ記憶部１２７は、再構築されたグラフデータに関する各種情報を記憶する。図１０は、実施形態に係る再構築グラフデータ記憶部の一例を示す図である。図１０の例では、再構築グラフデータ記憶部１２７は、「ノードＩＤ」、「オブジェクトＩＤ」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジＩＤ」や「参照先」といった情報が含まれる。
【０１３１】
「ノードＩＤ」は、グラフデータにおける各ノード（対象）を識別するための識別情報を示す。また、「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。
【０１３２】
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図１０の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジＩＤ」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（ノード）を示す情報を示す。すなわち、図１０の例では、ノードを識別するノードＩＤに対して、そのノードに対応するオブジェクト（対象）を識別する情報やそのノードからの有向エッジ（出力エッジ）が連結される参照先（ノード）が対応付けられて登録されている。
【０１３３】
図１０の例では、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）は、オブジェクトＩＤ「ＯＢ１」により識別されるオブジェクト（対象）に対応することを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ１」により識別されるエッジ（エッジＥ１）が、ノードＩＤ「Ｎ２」により識別されるノード（ノードＮ２）に連結されることを示す。すなわち、図１０の例では、グラフデータにおけるノードＮ１からはエッジＥ１によりノードＮ２へ辿ることができることを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ１３」により識別されるエッジ（エッジＥ１３）が、ノードＩＤ「Ｎ６」により識別されるノード（ノードＮ６）に連結されることを示す。すなわち、図１０の例では、グラフデータにおけるノードＮ１からはエッジＥ１３によりノードＮ６へ辿ることができることを示す。
【０１３４】
なお、再構築グラフデータ記憶部１２７は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、再構築グラフデータ記憶部１２７は、各ノード（ベクトル）間を連結するエッジの長さが記憶されてもよい。すなわち、再構築グラフデータ記憶部１２７は、各ノード（ベクトル）間の距離を示す情報が記憶されてもよい。また、例えば、再構築グラフデータ記憶部１２７は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
【０１３５】
また、図１０では、再構築後のグラフデータを再構築グラフデータ記憶部１２７に記憶する場合を図示するが、再構築が完了後のグラフデータは、グラフデータ記憶部１２４に記憶される。例えば、情報処理装置１００は、再構築グラフデータ記憶部１２７に、再構築途中のグラフデータを記憶し、再構築完了後において、再構築完了後のグラフデータにより、グラフデータ記憶部１２４を更新する。例えば、情報処理装置１００は、再構築完了後において、再構築グラフデータ記憶部１２７に記憶されたグラフデータを、グラフデータ記憶部１２４に格納することにより、グラフデータ記憶部１２４を更新する。なお、上記は一例であり、グラフデータ記憶部１２４に再構築後のグラフデータが記憶されれば、どのような方法により、グラフデータ記憶部１２４を更新してもよい。
【０１３６】
（制御部１３０）
図３の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）やＧＰＵ（Graphics  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）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０２６５】
１  情報処理システム
１００  情報処理装置
１２１  オブジェクト情報記憶部
１２２  連結条件情報記憶部
１２３  変更条件情報記憶部
１２４  グラフデータ記憶部
１２５  起点用情報記憶部
１２６  再構築条件情報記憶部
１２７  再構築グラフデータ記憶部
１３０  制御部
１３１  取得部
１３２  選択部
１３３  決定部
１３４  生成部
１３５  検索部
１３６  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2020086662.tif 000003
【図２】
2020086662.tif 000004
【図３】
2020086662.tif 000005
【図４】
2020086662.tif 000006
【図５】
2020086662.tif 000007
【図６】
2020086662.tif 000008
【図７】
2020086662.tif 000009
【図８】
2020086662.tif 000010
【図９】
2020086662.tif 000011
【図１０】
2020086662.tif 000012
【図１１】
2020086662.tif 000013
【図１２】
2020086662.tif 000014
【図１３】
2020086662.tif 000015
【図１４】
2020086662.tif 000016
【図１５】
2020086662.tif 000017
【図１６】
2020086662.tif 000018
【図１７】
2020086662.tif 000019