(57)【要約】【課題】新たなノードの追加に応じたエッジの削減によりグラフを適切に生成する。【解決手段】本願に係る情報処理装置は、取得部と、抽出部と、第１選択部と、第２選択部と、生成部とを有する。取得部は、複数のノードがエッジで連結された第１グラフと、追加ノードとを取得する。抽出部は、複数のノードから所定の閾値の数のノードを近傍ノードとして抽出する。第１選択部は、連結されるエッジの数が所定の閾値よりも多くなるノードを第１ノードとして選択する。第２選択部は、第１ノードに連結されたエッジのうち、長さが短い順の順位が所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、第１ノードと連結された第２ノードを選択する。生成部は、第２ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジを第１グラフから削除することにより第２グラフを生成する。【選択図】図４
2020187644.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）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０２６６】
１  情報処理システム
１００  情報処理装置
１２１  オブジェクト情報記憶部
１２２  閾値情報記憶部
１２３  条件情報記憶部
１２４  第１グラフ情報記憶部
１２５  起点用情報記憶部
１２６  第２グラフ情報記憶部
１３０  制御部
１３１  取得部
１３２  抽出部
１３３  選択部
１３４  決定部
１３５  生成部
１３６  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2020187644.tif 000003
【図２】
2020187644.tif 000004
【図３】
2020187644.tif 000005
【図４】
2020187644.tif 000006
【図５】
2020187644.tif 000007
【図６】
2020187644.tif 000008
【図７】
2020187644.tif 000009
【図８】
2020187644.tif 000010
【図９】
2020187644.tif 000011
【図１０】
2020187644.tif 000012
【図１１】
2020187644.tif 000013
【図１２】
2020187644.tif 000014
【図１３】
2020187644.tif 000015
【図１４】
2020187644.tif 000016
【図１５】
2020187644.tif 000017