IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤフー株式会社の特許一覧

特許7330756情報処理装置、情報処理方法、及び情報処理プログラム
<>
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図1
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図2
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図3
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図4
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図5
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図6
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図7
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図8
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図9
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図10
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図11
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図12
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図13
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図14
  • 特許-情報処理装置、情報処理方法、及び情報処理プログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-14
(45)【発行日】2023-08-22
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
   G06F 16/901 20190101AFI20230815BHJP
【FI】
G06F16/901
【請求項の数】 10
(21)【出願番号】P 2019093073
(22)【出願日】2019-05-16
(65)【公開番号】P2020187644
(43)【公開日】2020-11-19
【審査請求日】2021-12-17
【新規性喪失の例外の表示】特許法第30条第2項適用 公開日 平成31年3月29日 令和1年5月17日時点における本願に関連するソフトウェアを公開するページ https://github.com/yahoojapan/NGT https://github.com/yahoojapan/NGT/releases/tag/v1.7.0 https://github.com/yahoojapan/NGT/archive/v1.7.0.zip
【前置審査】
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岩崎 雅二郎
【審査官】和田 財太
(56)【参考文献】
【文献】特開2017-021493(JP,A)
【文献】特開2014-153961(JP,A)
【文献】特開2018-195286(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/901
(57)【特許請求の範囲】
【請求項1】
複数のノードがエッジで連結された第1グラフと、前記第1グラフに追加される追加ノードとを取得する取得部と、
前記第1グラフを探索することにより、前記複数のノードの各々と、前記追加ノードとの間の距離に基づいて、前記距離が近い方から順に、前記複数のノードから所定の閾値の数のノードを前記追加ノードに連結される近傍ノードとして抽出する抽出処理を行う抽出部と、
前記近傍ノードのうち、前記追加ノードが前記第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する第1選択部と、
前記第1ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に長さが短い順の順位が前記所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、前記第1ノードと連結された第2ノードを選択する第2選択部と、
前記第2ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に前記超過エッジの順位が前記超過順位である場合に、前記超過エッジを前記第1グラフから削除する削除処理により第2グラフを生成する生成部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記生成部は、
前記抽出部の前記抽出処理により抽出された前記近傍ノードと前記追加ノードとの間をエッジで連結する連結処理により、前記第2グラフを生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第1選択部は、
前記連結処理後において、前記近傍ノードのうち、連結されるエッジの数が前記所定の閾値よりも多いノードを前記第1ノードとして選択し、
前記第2選択部は、
前記連結処理後において、前記第1ノードに連結されたエッジのうち、長さが短い順の順位が前記超過順位である前記超過エッジにより、前記第1ノードと連結された前記第2ノードを選択し、
前記生成部は、
前記連結処理後において、前記第2ノードに連結されたエッジのうち、前記超過エッジの順位が前記超過順位である場合に、前記超過エッジを前記第1グラフから削除する前記削除処理により前記第2グラフを生成する
ことを特徴とする請求項に記載の情報処理装置。
【請求項4】
前記取得部は、
所定数の前記追加ノードを取得し、
前記生成部は、
前記所定数の前記追加ノードの各々について前記削除処理を行うことにより、前記第2グラフを生成する
ことを特徴とする請求項1~のいずれか1項に記載の情報処理装置。
【請求項5】
前記取得部は、
前記第1グラフに追加される一のノードである前記追加ノードを取得し、
前記生成部は、
前記一のノードについて前記削除処理を行うことにより、前記第2グラフを生成する
ことを特徴とする請求項1~のいずれか1項に記載の情報処理装置。
【請求項6】
前記第2選択部は、
前記第1ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に順位が前記超過順位になる全ての前記超過エッジの各々により、前記第1ノードと連結された全ての前記第2ノードを選択し、
前記生成部は、
前記第2選択部により選択された全ての前記第2ノードの各々を対象に前記削除処理を行うことにより、前記第2グラフを生成する
ことを特徴とする請求項1~のいずれか1項に記載の情報処理装置。
【請求項7】
前記生成部は、
前記第2選択部により選択された全ての前記第2ノードから、一のノードを選択する選択処理と、前記選択処理により選択した前記一のノードを対象とする前記削除処理とを繰り返すことにより、前記第2グラフを生成する
ことを特徴とする請求項に記載の情報処理装置。
【請求項8】
前記第2選択部は、
前記第1ノードに連結されたエッジのうち、前記一のノードである前記追加ノードが前記第1グラフに追加される前の順位が、前記所定の閾値に対応する順位である一のエッジであって、前記第1ノードと前記追加ノードとの間の距離よりも長い一のエッジである前記超過エッジにより前記第1ノードに連結されるノードを、前記第2ノードとして選択し、
前記生成部は、
前記第2ノードに連結されたエッジのうち、順位が前記所定の閾値に対応する順位である基準エッジより、前記一のエッジである前記超過エッジが長い場合、前記超過エッジを前記第1グラフから削除する削除処理により前記第2グラフを生成する
ことを特徴とする請求項に記載の情報処理装置。
【請求項9】
コンピュータが実行する情報処理方法であって、
前記コンピュータの制御部が、複数のノードがエッジで連結された第1グラフと、前記第1グラフに追加される追加ノードとを取得する取得工程と、
前記制御部が、前記第1グラフを探索することにより、前記複数のノードの各々と、前記追加ノードとの間の距離に基づいて、前記距離が近い方から順に、前記複数のノードから所定の閾値の数のノードを前記追加ノードに連結される近傍ノードとして抽出する抽出処理を行う抽出工程と、
前記制御部が、前記近傍ノードのうち、前記追加ノードが前記第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する第1選択工程と、
前記制御部が、前記第1ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に長さが短い順の順位が前記所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、前記第1ノードと連結された第2ノードを選択する第2選択工程と、
前記第2ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に前記超過エッジの順位が前記超過順位である場合に、前記超過エッジを前記第1グラフから削除する削除処理により第2グラフを生成する生成工程と、
を含むことを特徴とする情報処理方法。
【請求項10】
コンピュータの制御部が、複数のノードがエッジで連結された第1グラフと、前記第1グラフに追加される追加ノードとを取得する取得手順と、
前記制御部が、前記第1グラフを探索することにより、前記複数のノードの各々と、前記追加ノードとの間の距離に基づいて、前記距離が近い方から順に、前記複数のノードから所定の閾値の数のノードを前記追加ノードに連結される近傍ノードとして抽出する抽出処理を行う抽出手順と、
前記制御部が、前記近傍ノードのうち、前記追加ノードが前記第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する第1選択手順と、
前記制御部が、前記第1ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に長さが短い順の順位が前記所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、前記第1ノードと連結された第2ノードを選択する第2選択手順と、
前記制御部が、前記第2ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に前記超過エッジの順位が前記超過順位である場合に、前記超過エッジを前記第1グラフから削除する削除処理により第2グラフを生成する生成手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、種々の情報を探索(検索)する技術が提供されている。例えば、所定の対象に関する検索を行うために、検索対象に対応するノードがエッジにより連結されたグラフデータを生成する技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第6293335号公報
【文献】特許第6300982号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することが難しい場合がある。例えば、グラフに新たなノード(オブジェクト)を追加し、追加したノードと他のノードとの間をエッジで連結してグラフを生成する場合、グラフ生成後に過剰にエッジが連結されたノードのエッジを削除する必要がある。このように、グラフ生成後に削減処理を行わなければならない。また、生成中のグラフは過剰なエッジを有している場合があり、このような生成中のグラフを検索し、新たなノードを追加する処理を行う場合、グラフの生成に要する時間が増大する。そのため、新たなノードの追加に応じてエッジを削減しグラフのエッジ数を調整することが望まれている。
【0005】
本願は、上記に鑑みてなされたものであって、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本願に係る情報処理装置は、複数のノードがエッジで連結された第1グラフと、前記第1グラフに追加される追加ノードとを取得する取得部と、前記第1グラフに基づいて、前記複数のノードから所定の閾値の数のノードを前記追加ノードに連結される近傍ノードとして抽出する抽出処理を行う抽出部と、前記近傍ノードのうち、前記追加ノードが前記第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する第1選択部と、前記第1ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に長さが短い順の順位が前記所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、前記第1ノードと連結された第2ノードを選択する第2選択部と、前記第2ノードに連結されたエッジのうち、前記追加ノードが前記第1グラフに追加された場合に前記超過エッジの順位が前記超過順位である場合に、前記超過エッジを前記第1グラフから削除する削除処理により第2グラフを生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【0007】
実施形態の一態様によれば、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができるという効果を奏する。
【図面の簡単な説明】
【0008】
図1図1は、実施形態に係る情報処理の一例を示す図である。
図2図2は、実施形態に係る情報処理の一例を示す図である。
図3図3は、実施形態に係る情報処理システムの構成例を示す図である。
図4図4は、実施形態に係る情報処理装置の構成例を示す図である。
図5図5は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
図6図6は、実施形態に係る閾値情報記憶部の一例を示す図である。
図7図7は、実施形態に係る条件情報記憶部の一例を示す図である。
図8図8は、実施形態に係る第1グラフ情報記憶部の一例を示す図である。
図9図9は、実施形態に係る起点用情報記憶部の一例を示す図である。
図10図10は、実施形態に係る第2グラフ情報記憶部の一例を示す図である。
図11図11は、実施形態に係る情報処理の一例を示すフローチャートである。
図12図12は、実施形態に係る情報処理の他の一例を示す図である。
図13図13は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。
図14図14は、グラフデータを用いた検索処理の一例を示すフローチャートである。
図15図15は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
(実施形態)
〔1.情報処理〕
図1及び図2を用いて、実施形態に係る情報処理の一例について説明する。図1及び図2は、実施形態に係る情報処理の一例を示す図である。図1及び図2では、情報処理装置100(図4参照)がオブジェクトの追加に応じて、追加されたオブジェクトに対応するノード(以下「追加ノード」ともいう)をグラフデータ(グラフ情報)に追加し、グラフデータを生成する場合を示す。以下では、グラフデータ(グラフ情報)を単にグラフと記載する場合がある。なお、図1及び図2の例では、対象とする情報(オブジェクト)がベクトル化され、ベクトル化されたオブジェクトを対象としてグラフ(グラフインデックス)を生成する場合を示す。すなわち、図1及び図2の例では、情報処理装置100がベクトルをオブジェクトに対応するオブジェクト値として処理を行う場合を示す。
【0011】
なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いてもよい。例えば、情報処理装置100は、ベクトルに限らず、データ間の距離(類似度)が定義されていれば任意の形態のデータを用いてもよい。また、以下では、画像情報をオブジェクトとした場合を一例として説明するが、オブジェクトは、動画情報や音声情報等の種々の対象であってもよい。
【0012】
また、ここでいうオブジェクトの追加は、オブジェクトの登録と読み換えてもよい。情報処理装置100が行うオブジェクトの追加とは、オブジェクトをオブジェクト情報記憶部121(図5参照)に登録(格納)することであってもよい。また、ここでいうノードの追加は、ノードの登録と読み換えてもよい。情報処理装置100が行うノードの追加とは、ノードを第1グラフ情報記憶部124(図8参照)に登録(格納)することであってもよい。
【0013】
また、以下では、一のノードを追加する前のグラフを第1グラフと称し、その一のノードを追加したグラフを第2グラフと称する場合があるが、第1グラフ及び第2グラフは、相対的な概念であって、生成した第2グラフが次のノード追加時には第1グラフになる。例えば、一のノード追加後の第2グラフは、その次に新たなノードを追加する場合には、第1グラフとして用いられる。すなわち、ここでいう第1グラフ及び第2グラフとは、あるノードの追加前後のグラフを区別して表現可能にするための名称である。例えば、情報処理装置100が第1グラフから第2グラフを生成する処理は、情報処理装置100が一のグラフに対してノードの追加を行ったり、エッジの追加または削除を行なったりすることにより、その一のグラフを更新する処理に読み替えられてもよい。
【0014】
図1及び図2の例では、情報処理装置100が、データ検索の対象(オブジェクト)がベクトル化された各ベクトルに対応する情報(ノード)を対象としてグラフ情報を生成する場合を示す。すなわち、図1及び図2の例では、情報処理装置100がベクトルをノードに対応するノード値として処理を行う場合を示す。各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【0015】
なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。また、以下では、画像情報をデータ検索の対象とした場合を一例として説明するが、データ検索の対象は、動画情報や音声情報等の種々の対象であってもよい。
【0016】
情報処理装置100は、例えば情報処理装置100が処理可能な範囲で(例えば数百万~数億等)の膨大な画像情報に対応するノードを対象にグラフの生成処理を行うが、図面においてはその一部のみを図示する。図1及び図2の例では、説明を簡単にするために、最大8個のノードを図示して処理の概要を説明する。また、図1及び図2の例では、情報処理装置100は、何もない状態、すなわちノードが0個、エッジも0本である状態から、オブジェクトの追加に応じてノードN1等やエッジE1等を順次追加し、グラフGR11を生成する場合を示す。このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
【0017】
また、上記のように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE1」と記載した場合、そのエッジはエッジID「E1」により識別されるエッジである。図1及び図2の例では、情報処理装置100は、ノードを無向エッジ(単に「エッジ」ともいう)により連結させることにより、グラフ情報を生成する。なお、ここでいう無向エッジとは、連結されたノード間を双方向にデータを辿ることができるエッジを意味する。例えば、ノードN1とノードN2とを連結するエッジE1により、ノードN1とノードN2との間を双方向に辿ることが可能となる。すなわち、エッジE1により、ノードN1からノードN2へ辿ることができ、かつエッジE1により、ノードN2からノードN1へ辿ることができる。
【0018】
また、図1及び図2に示す空間情報VS1-1~VS1-9は、グラフデータの生成過程を模式的に示す図であり、空間情報VS1-1~VS1-9に示す空間は、同一の空間であってもよい。また、以下では、空間情報VS1-1~VS1-9について、特に区別なく説明する場合には、空間情報VS1と記載する。
【0019】
また、図1及び図2中の空間情報VS1は、ユークリッド空間であってもよい。また、図1及び図2に示す空間情報VS1は、各ベクトル間の距離等の説明のための概念的な図であり、空間情報VS1は、多次元空間である。例えば、図1及び図2に示す空間情報VS1は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。
【0020】
また、図1及び図2に示すグラフGR11-1~GR11-9は、グラフデータの生成過程を模式的に示す図であり、グラフGR11-1~GR11-9は、情報処理により生成される同一のグラフデータである。また、以下では、グラフGR11-1~GR11-9について、特に区別なく説明する場合には、グラフGR11と記載する。
【0021】
また、図1及び図2に示す例においては、グラフGR11-1~GR11-9においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、取得した各ノードを「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、空間情報VS1中の左下の「○」であって、内部に「5」が付された「○」は、ノードID「N5」により識別されるノード(ノードN5)に対応する。例えば、図1及び図2に示す例において、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
【0022】
本実施形態においては、空間情報VS1における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象(画像情報)の類似性が、空間情報VS1内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1及び図2に示す例においては、空間情報VS1における各ノード間の距離が短いオブジェクト同士の類似度が高く、空間情報VS1における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図1及び図2中の空間情報VS1において、ノードID「N1」により識別されるノード(ノードN1)と、ノードID「N7」により識別されるノード(ノードN7)とは近接している、すなわち距離が短い。そのため、ノードID「N1」により識別されるノードに対応するオブジェクトと、ノードID「N7」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
【0023】
また、例えば、図1及び図2中の空間情報VS1において、ノードID「N3」により識別されるノードと、ノードID「N5」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードID「N3」により識別されるノードに対応するオブジェクトと、ノードID「N5」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
【0024】
また、図1及び図2の例では、情報処理装置100は、後述するグラフの生成処理により、新規追加のノードをグラフGR11に追加し、ノードをエッジで連結することにより、グラフGR11を生成する。例えば、グラフGR11の生成時やグラフGR11を用いた検索時においては、グラフ構造型インデックスと同様の処理を行うが、開始位置(起点)は所定の起点用情報(以下「起点用インデックス」ともいう)を用いて決定したノード(以下「起点ノード」ともいう)からスタートしてもよい。また、例えば、情報処理装置100が生成したグラフGR11を用いて検索を行う場合、予め決定された起点ノードを起点として検索を行ってもよい。例えば、生成時や検索時においては、起点ノードがノードN1である場合、ノードN1からエッジを辿ることにより、ノードN2~N8等を検索してもよい。なお、起点用インデックスや起点ノードを用いた処理についての例は、後述する。
【0025】
ここから、図1及び図2を用いて情報処理の詳細を説明する。なお、図1及び図2に示す各ステップは、グラフの生成を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。なお、情報処理装置100が行う情報処理は、図1及び図2中のグラフGR11-9に示すようなグラフGR11が生成されれば、どのような処理フローであってもよい。
【0026】
また、図1及び図2の例では、追加ノードの追加時に、追加ノードに連結されるエッジ数が「2」である場合を示す。すなわち、図1及び図2の例では、情報処理装置100は、追加された追加ノードについて、2つのノードとの間を連結するエッジを追加する連結処理により、追加ノードを含むグラフを生成する。例えば、情報処理装置100は、追加ノードに連結するノードの数を示す連結数が「2」である連結数情報THL1を用いて、追加ノードについて、2つのノードとの間を連結するための2つのエッジを追加する。なお、連結数は「2」に限らず、「3」や「10」等種々の値であってもよい。また、図1及び図2の例では、連結数が削除判定の際に用いる連結閾値(図6参照)と同じ場合を示すが、連結数と連結閾値とは異なる値であってもよい。情報処理装置100は、生成中のグラフを用いて、追加ノードの近傍に位置するノード(「近傍ノード」ともいう)をグラフから抽出する処理(「抽出処理」ともいう)を実行する。情報処理装置100は、抽出処理により抽出した近傍ノードと、追加ノードとの間をエッジで連結する処理(「連結処理」ともいう)により、グラフを生成(更新)する。
【0027】
まず、情報処理装置100は、ノードN1を新規追加する(ステップS11)。例えば、情報処理装置100は、ノードN1をグラフに追加する。図1の例では、情報処理装置100は、ノードN1が最初のノードであるため、ノードN1を含むグラフGR11を新規に生成する。また、情報処理装置100は、ステップS11後においてグラフGR11には、ノードがノードN1の1個のみであるため、グラフGR11にエッジを追加しない。
【0028】
例えば、情報処理装置100は、検索対象として新たに追加されたオブジェクトを取得し、追加されたオブジェクトに対応するノードを新規追加する。例えば、情報処理装置100は、新たに追加されたオブジェクトをオブジェクト情報記憶部121(図5参照)に記憶し、新たに追加されたオブジェクトに対応付けたノードを第1グラフ情報記憶部124に記憶する。情報処理装置100は、オブジェクトID「OB1」により識別されるオブジェクト(図5参照)に対応するノードN1をグラフGR11に追加する。
【0029】
そして、情報処理装置100は、ノードN2を新規追加する(ステップS12)。図1の例では、例えば、情報処理装置100は、ノードN2をグラフGR11に追加する。情報処理装置100は、オブジェクトID「OB2」により識別されるオブジェクト(図5参照)に対応するノードN2をグラフGR11に追加する。
【0030】
そして、情報処理装置100は、グラフを生成する(ステップS13)。情報処理装置100は、連結数情報THL1に基づいて、追加したノードN2に2本のエッジが連結されるようにグラフを生成する。情報処理装置100は、空間情報VS1-1に示すように追加したノードN2に連結するエッジを追加することにより、グラフGR11-1を生成する。図1の例では、情報処理装置100は、グラフGR11中のノードN2以外にはノードN1のみしかないため、ノードN1とノードN2との間を連結するエッジE1を追加することにより、グラフGR11-1を生成する。そして、情報処理装置100は、グラフGR11-1には、ノードN1以外に、ノードN2との間にエッジを接続するノードが無いため、ノードN2にエッジを連結する処理(連結処理)を終了する。なお、情報処理装置100は、グラフGR11を探索し、ノードN2の近傍ノードとしてノードN1を選択し、ノードN1との間にエッジE1を追加することにより、グラフGR11-1を生成してもよい。また、情報処理装置100は、グラフGR11-1について削除するエッジが有るかどうかを判定してもよい。情報処理装置100は、グラフGR11-1にはエッジE1の1本しかないため、連結閾値「2」未満であるとして、削除するエッジがないとして削除処理をスキップしてもよい。
【0031】
そして、情報処理装置100は、ノードN3を新規追加する(ステップS14-1)。図1の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN3をグラフGR11に追加する。
【0032】
そして、情報処理装置100は、グラフを探索する(ステップS14-2)。例えば、情報処理装置100は、図14に示すような処理手順により、追加ノードの近傍に位置するノード(近傍ノード)の探索(検索)を行う。例えば、情報処理装置100は、図14に示すような処理手順によりグラフを探索することにより、連結数「2」に対応する2つの近傍ノードを抽出する。例えば、情報処理装置100は、「100」個等の種々の値を連結数に決定してもよい。例えば、情報処理装置100は、種々の情報を適宜用いて、連結数を決定してもよい。例えば、情報処理装置100は、生成後のグラフの検索の性能に基づいて、連結数(近傍ノード数)を決定してもよい。
【0033】
情報処理装置100は、追加ノードであるノードN3をクエリとして、図14に示すような処理手順によりグラフGR11-1を探索し、ノードN3の近傍ノードとして、連結数「2」に対応する2個のノードN1、N2を抽出する。
【0034】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS14-3)。図1の例では、情報処理装置100は、ノードN3と近傍ノードであるノードN1、N2との間を連結するエッジをグラフGR11-1に追加することによりグラフGR11-2を生成する。具体的には、情報処理装置100は、空間情報VS1-2に示すように、追加ノードであるノードN3とノードN1との間をエッジE2により連結し、ノードN3とノードN2との間をエッジE3により連結することにより、グラフGR11-2を生成する。
【0035】
そして、情報処理装置100は、削除するエッジが有るかどうかを判定する(ステップS14-4)。例えば、情報処理装置100は、削除条件リストDCL1に示すように、すなわち連結閾値(この場合「2」)より多いエッジが連結されており、その中でエッジの長さが短い順の順位が連結閾値よりも大きいことをエッジの削除条件とする。ここで、情報処理装置100は、追加ノードであるノードN3の追加後のグラフGR11-2において、ノードN3の近傍ノードのうち、連結されるエッジの数(「連結エッジ数」ともいう)が連結閾値「2」よりも多くなるノード(「第1ノード」ともいう)を選択する。情報処理装置100は、グラフGR11-2において、ノードN3の近傍ノードであるノードN1、N2がいずれも連結エッジ数が「2」であり、連結閾値「2」よりも多くないため、第1ノードとして選択しない。そのため、情報処理装置100は、削除するエッジが無いと判定する。
【0036】
そして、情報処理装置100は、ノードN4を新規追加する(ステップS15-1)。図1の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN4をグラフGR11に追加する。
【0037】
そして、情報処理装置100は、グラフを探索する(ステップS15-2)。例えば、情報処理装置100は、追加ノードであるノードN4をクエリとして、図14に示すような処理手順によりグラフGR11-2を探索し、ノードN4の近傍ノードとして、連結数「2」に対応する2個のノードN1、N3を抽出する。
【0038】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS15-3)。図1の例では、情報処理装置100は、ノードN4と近傍ノードであるノードN1、N3との間を連結するエッジをグラフGR11-2に追加することによりグラフGR11-3を生成する。具体的には、情報処理装置100は、空間情報VS1-3に示すように、追加ノードであるノードN4とノードN1との間をエッジE4により連結し、ノードN4とノードN3との間をエッジE5により連結することにより、グラフGR11-3を生成する。
【0039】
そして、情報処理装置100は、削除するエッジが有るかどうかを判定する(ステップS15-4)。ここで、情報処理装置100は、追加ノードであるノードN4の追加後のグラフGR11-3において、ノードN4の近傍ノードであるノードN1、N3のうち、連結エッジ数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-3において、ノードN1、N3がいずれも連結エッジ数が「3」であり、連結閾値「2」よりも多いため、ノードN1、N3の2つのノードを第1ノードとして選択する。
【0040】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、長さが短い順の順位が連結閾値よりも大きい順位(「超過順位」ともいう)であるエッジ(「超過エッジ」ともいう)により、第1ノードと連結されたノード(「第2ノード」ともいう)を選択する。図1の例では、情報処理装置100は、第1ノードとして選択したノードN1、N3の各々について、第2ノードを選択する処理を行い、選択した各第2ノードを対象として削除するエッジが有るかどうかを判定する。
【0041】
例えば、情報処理装置100は、ノードN1を対象として、第2ノードを選択する。情報処理装置100は、ノードN1と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL1-1に基づいて、第2ノードを選択する。情報処理装置100は、長さが短い方から順にノードN1の連結エッジがソートされた連結エッジリストEDL1-1に基づいて、第2ノードを選択する。連結エッジリストEDL1-1~EDL1-4は、グラフの更新に応じた連結エッジの更新に対応する。以下では、連結エッジリストEDL1-1~EDL1-4について、特に区別なく説明する場合には、連結エッジリストEDL1と記載する。情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフ情報を用いて、連結エッジリストEDL1に対応する情報を生成してもよい。また、情報処理装置100は、連結エッジリストEDL1に対応する情報を記憶部120(図4参照)に記憶してもよい。なお、情報処理装置100は、連結エッジに限らず、第1ノードについて連結エッジにより連結されたノード(「連結ノード」ともいう)を距離が短い方から順に並べたリストを用いてもよい。
【0042】
情報処理装置100は、連結エッジリストEDL1-1のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。図1の例では、情報処理装置100は、連結エッジリストEDL1-1のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL1-1のうち、順位が「3」位であるエッジE1により、ノードN1と連結されたノードN2を第2ノードとして選択する。例えば、空間情報VS1において太い線で示すエッジは、第1ノードの超過エッジとして、処理の対象となったが、第2ノード側の条件を満たさないため削除されなかったエッジを示す。
【0043】
そして、情報処理装置100は、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジをグラフから削除する削除処理を実行する。図1の例では、情報処理装置100は、第2ノードであるノードN2に連結されたエッジのうち、超過エッジであるエッジE1の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。情報処理装置100は、ノードN2に連結されたエッジがエッジE1、E3の2本しかないため、ノードN2については、順位が「2」よりも大きい、すなわち「3」位以下のエッジが無いため、削除するエッジが無いと判定する。このように、情報処理装置100は、第1ノードとして選択したノードN1について、削除するエッジが無いと判定する。
【0044】
また、情報処理装置100は、ノードN3を対象として、第2ノードを選択する。情報処理装置100は、ノードN3と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL3-1に基づいて、第2ノードを選択する。情報処理装置100は、長さが短い方から順にノードN3の連結エッジがソートされた連結エッジリストEDL3-1に基づいて、第2ノードを選択する。連結エッジリストEDL3-1、EDL3-2は、グラフの更新に応じた連結エッジの更新に対応する。以下では、連結エッジリストEDL3-1、EDL3-2について、特に区別なく説明する場合には、連結エッジリストEDL3と記載する。情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフ情報を用いて、連結エッジリストEDL3に対応する情報を生成してもよい。また、情報処理装置100は、連結エッジリストEDL3に対応する情報を記憶部120(図4参照)に記憶してもよい。
【0045】
情報処理装置100は、連結エッジリストEDL3-1のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN3と連結されたノードを第2ノードとして選択する。図1の例では、情報処理装置100は、連結エッジリストEDL3-1のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN3と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL3-1のうち、順位が「3」位であるエッジE2により、ノードN3と連結されたノードN1を第2ノードとして選択する。
【0046】
そして、情報処理装置100は、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジをグラフから削除する削除処理を実行する。図1の例では、情報処理装置100は、第2ノードであるノードN1に連結されたエッジのうち、超過エッジであるエッジE2の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。情報処理装置100は、ノードN1に連結されたエッジのうち、エッジE2の順位が「2」よりも大きい、すなわち「3」位以下であるかどうかを判定する。例えば、情報処理装置100は、ノードN1の連結エッジリストEDL1-1に基づいて、ノードN1に連結されたエッジのうち、エッジE2の順位が「3」位以下であるかどうかを判定する。連結エッジリストEDL1-1に示すように、情報処理装置100は、ノードN1に連結されたエッジのうち、エッジE2の順位が「2」位であり、「3」位以下ではないため、削除するエッジが無いと判定する。このように、情報処理装置100は、第1ノードとして選択したノードN3について、削除するエッジが無いと判定する。そのため、情報処理装置100は、追加ノードであるノードN4の追加時点においては、削除するエッジが無いとして、超過エッジをグラフから削除する削除処理を実行しない。
【0047】
そして、情報処理装置100は、ノードN5を新規追加する(ステップS16-1)。図1の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN5をグラフGR11に追加する。
【0048】
そして、情報処理装置100は、グラフを探索する(ステップS16-2)。例えば、情報処理装置100は、追加ノードであるノードN5をクエリとして、図14に示すような処理手順によりグラフGR11-3を探索し、ノードN5の近傍ノードとして、連結数「2」に対応する2個のノードN1、N2を抽出する。
【0049】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS16-3)。図1の例では、情報処理装置100は、ノードN5と近傍ノードであるノードN1、N2との間を連結するエッジをグラフGR11-3に追加することによりグラフGR11-4を生成する。具体的には、情報処理装置100は、空間情報VS1-4に示すように、追加ノードであるノードN5とノードN1との間をエッジE6により連結し、ノードN5とノードN2との間をエッジE7により連結することにより、グラフGR11-4を生成する。
【0050】
そして、情報処理装置100は、削除するエッジが有るかどうかを判定する(ステップS16-4)。ここで、情報処理装置100は、追加ノードであるノードN5の追加後のグラフGR11-4において、ノードN5の近傍ノードであるノードN1、N2のうち、連結エッジ数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-4において、ノードN1、N2がいずれも連結エッジ数が連結閾値「2」よりも多いため、ノードN1、N2の2つのノードを第1ノードとして選択する。
【0051】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位であるエッジ(超過エッジ)により、第1ノードと連結されたノード(第2ノード)を選択する。図1の例では、情報処理装置100は、第1ノードとして選択したノードN1、N2の各々について、第2ノードを選択する処理を行い、選択した各第2ノードを対象として削除するエッジが有るかどうかを判定する。
【0052】
例えば、情報処理装置100は、ノードN1を対象として、第2ノードを選択する。情報処理装置100は、ノードN1と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL1-2に基づいて、第2ノードを選択する。
【0053】
情報処理装置100は、連結エッジリストEDL1-2のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。図1の例では、情報処理装置100は、連結エッジリストEDL1-2のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。また、情報処理装置100は、超過エッジにより連結された連結ノードであっても、そのノードが追加ノードである場合、第2ノードとして選択しなくてもよい。この場合、情報処理装置100は、超過エッジにより連結された連結ノードであっても、そのノードがノードN5(追加ノード)である場合、第2ノードとして選択しなくてもよい。図1の例では、情報処理装置100は、連結エッジリストEDL1-2のうち、順位が「3」位であるエッジE6により、ノードN1と連結されたノードN5を第2ノードとして選択しない。また、図1の例では、情報処理装置100は、連結エッジリストEDL1-2のうち、順位が「4」位であるエッジE1により、ノードN1と連結されたノードN2を第2ノードとして選択する。
【0054】
そして、情報処理装置100は、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジをグラフから削除する削除処理を実行する。図1の例では、情報処理装置100は、第2ノードであるノードN2に連結されたエッジのうち、超過エッジであるエッジE1の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。情報処理装置100は、ノードN2に連結されたエッジのうち、エッジE1の順位が「2」よりも大きい、すなわち「3」位以下であるかどうかを判定する。例えば、情報処理装置100は、ノードN2と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL2-1に基づいて、ノードN2に連結されたエッジのうち、エッジE1の順位が「3」位以下であるかどうかを判定する。連結エッジリストEDL2-1~EDL2-3は、グラフの更新に応じた連結エッジの更新に対応する。以下では、連結エッジリストEDL2-1~EDL2-3について、特に区別なく説明する場合には、連結エッジリストEDL2と記載する。情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフ情報を用いて、連結エッジリストEDL2に対応する情報を生成してもよい。また、情報処理装置100は、連結エッジリストEDL2に対応する情報を記憶部120(図4参照)に記憶してもよい。
【0055】
連結エッジリストEDL2-1に示すように、情報処理装置100は、ノードN2に連結されたエッジのうち、エッジE1の順位が「2」位であり、「3」位以下ではないため、削除するエッジが無いと判定する。このように、情報処理装置100は、第1ノードとして選択したノードN1について、削除するエッジが無いと判定する。
【0056】
また、情報処理装置100は、ノードN2を対象として、第2ノードを選択する。情報処理装置100は、ノードN2の連結エッジリストEDL2-1に基づいて、第2ノードを選択する。
【0057】
情報処理装置100は、連結エッジリストEDL2-1のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN2と連結されたノードを第2ノードとして選択する。図1の例では、情報処理装置100は、連結エッジリストEDL2-1のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN2と連結されたノードを第2ノードとして選択する。ここで、情報処理装置100は、超過エッジにより連結された連結ノードであっても、そのノードがノードN5(追加ノード)である場合、第2ノードとして選択しない。図1の例では、情報処理装置100は、連結エッジリストEDL2-1のうち、順位が「3」位であるエッジE7により、ノードN2と連結されたノードN5を第2ノードとして選択しない。これにより、情報処理装置100は、第1ノードとして選択したノードN2について、第2ノードとして選択するノードが無いため、削除するエッジが無いと判定する。そのため、情報処理装置100は、追加ノードであるノードN5の追加時点においては、削除するエッジが無いとして、超過エッジをグラフから削除する削除処理を実行しない。
【0058】
そして、情報処理装置100は、ノードN6を新規追加する(ステップS17-1)。図1の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN6をグラフGR11に追加する。
【0059】
そして、情報処理装置100は、グラフを探索する(ステップS17-2)。例えば、情報処理装置100は、追加ノードであるノードN6をクエリとして、図14に示すような処理手順によりグラフGR11-4を探索し、ノードN6の近傍ノードとして、連結数「2」に対応する2個のノードN1、N5を抽出する。
【0060】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS17-3)。図1の例では、情報処理装置100は、ノードN6と近傍ノードであるノードN1、N5との間を連結するエッジをグラフGR11-4に追加することによりグラフGR11-5を生成する。具体的には、情報処理装置100は、空間情報VS1-5に示すように、追加ノードであるノードN6とノードN1との間をエッジE8により連結し、ノードN6とノードN5との間をエッジE9により連結することにより、グラフGR11-5を生成する。
【0061】
そして、情報処理装置100は、削除するエッジが有るかどうかを判定する(ステップS17-4)。ここで、情報処理装置100は、追加ノードであるノードN6の追加後のグラフGR11-5において、ノードN6の近傍ノードであるノードN1、N5のうち、連結エッジ数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-5において、ノードN1、N5がいずれも連結エッジ数が連結閾値「2」よりも多いため、ノードN1、N5の2つのノードを第1ノードとして選択する。
【0062】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位であるエッジ(超過エッジ)により、第1ノードと連結されたノード(第2ノード)を選択する。図1の例では、情報処理装置100は、第1ノードとして選択したノードN1、N5の各々について、第2ノードを選択する処理を行い、選択した各第2ノードを対象として削除するエッジが有るかどうかを判定する。
【0063】
例えば、情報処理装置100は、ノードN1を対象として、第2ノードを選択する。情報処理装置100は、ノードN1と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL1-3に基づいて、第2ノードを選択する。
【0064】
情報処理装置100は、連結エッジリストEDL1-3のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。図1の例では、情報処理装置100は、連結エッジリストEDL1-3のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL1-3のうち、順位が「3」~「5」位であるエッジE2、E6、E1の各々により、ノードN1と連結されたノードN3、N5、N2を第2ノードとして選択する。
【0065】
そして、図1の例では、情報処理装置100は、ノードN1の第2ノードとして選択したノードN3、N5、N2の各々について、各々の連結エッジであるエッジE2、E6、E1が削除可能かどうかを判定する。
【0066】
例えば、情報処理装置100は、ノードN3を対象として、ノードN1とノードN3との間の連結エッジであるエッジE2が削除可能かどうかを判定する。図1の例では、情報処理装置100は、第2ノードであるノードN3に連結されたエッジのうち、超過エッジであるエッジE2の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。情報処理装置100は、ノードN3に連結されたエッジのうち、エッジE2の順位が「2」よりも大きい、すなわち「3」位以下であるかどうかを判定する。例えば、情報処理装置100は、ノードN3の連結エッジリストEDL3-2に基づいて、ノードN3に連結されたエッジのうち、エッジE2の順位が「3」位以下であるかどうかを判定する。
【0067】
連結エッジリストEDL3-2に示すように、情報処理装置100は、ノードN3に連結されたエッジのうち、エッジE2の順位が「3」位であり、「3」位以下であるため、エッジE2が削除可能であると判定する。このように、情報処理装置100は、第1ノードとして選択したノードN1について、エッジE2が削除可能であると判定する。また、情報処理装置100は、第2ノードとして選択された他のノードN2、N5については、削除するエッジが無いと判定する。例えば、空間情報VS1において点線で示すエッジは、削除可能なエッジと判定されたエッジを示す。
【0068】
また、情報処理装置100は、ノードN5を対象として、第2ノードを選択する。情報処理装置100は、長さが短い方から順にノードN5の連結エッジがソートされた連結エッジリストEDL5-1に基づいて、第2ノードを選択する。以下では、連結エッジリストEDL5-1等について、特に区別なく説明する場合には、連結エッジリストEDL5と記載する。情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフ情報を用いて、連結エッジリストEDL5に対応する情報を生成してもよい。また、情報処理装置100は、連結エッジリストEDL5に対応する情報を記憶部120(図4参照)に記憶してもよい。
【0069】
情報処理装置100は、連結エッジリストEDL5-1のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN5と連結されたノードを第2ノードとして選択する。図1の例では、情報処理装置100は、連結エッジリストEDL2-1のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN5と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL5-1のうち、順位が「3」であるエッジE7により、ノードN5と連結されたノードN2を第2ノードとして選択する。
【0070】
そして、情報処理装置100は、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジをグラフから削除する削除処理を実行する。図1の例では、情報処理装置100は、第2ノードであるノードN2に連結されたエッジのうち、超過エッジであるエッジE7の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。情報処理装置100は、ノードN2に連結されたエッジのうち、エッジE7の順位が「2」よりも大きい、すなわち「3」位以下であるかどうかを判定する。例えば、情報処理装置100は、ノードN2の連結エッジリストEDL2-2に基づいて、ノードN2に連結されたエッジのうち、エッジE7の順位が「3」位以下であるかどうかを判定する。
【0071】
連結エッジリストEDL2-2に示すように、情報処理装置100は、ノードN2に連結されたエッジのうち、エッジE7の順位が「3」位であり、「3」位以下であるため、エッジE7が削除可能であると判定する。このように、情報処理装置100は、第1ノードとして選択したノードN5について、エッジE7が削除可能であると判定する。
【0072】
そして、情報処理装置100は、削除処理を実行する(ステップS18)。図1の例では、情報処理装置100は、空間情報VS1-6に示すように、エッジE2及びエッジE7を削除した第2グラフであるグラフGR11-6を生成する。なお、情報処理装置100は、エッジが削除可能と判定された時点で、そのエッジを削除してもよい。
【0073】
このように、情報処理装置100は、グラフ生成後にあるノードに連結閾値を超えるエッジが連結された場合、長さが長い超過エッジをその連結先のノードについても削除の条件を満たす場合に超過エッジを削除する。これにより、情報処理装置100は、過剰なエッジを有するノードの発生を抑制するとともに、生成中のグラフから順次エッジを削除することにより、生成中のグラフを用いて検索する際の処理時間の増大を抑制することができる。
【0074】
ここからは、図2も参照して説明する。図2中のグラフGR11-6は、図1中のグラフGR11-6と同一である。情報処理装置100は、ノードN7を新規追加する(ステップS19-1)。図2の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN7をグラフGR11に追加する。
【0075】
そして、情報処理装置100は、グラフを探索する(ステップS19-2)。例えば、情報処理装置100は、追加ノードであるノードN7をクエリとして、図14に示すような処理手順によりグラフGR11-6を探索し、ノードN7の近傍ノードとして、連結数「2」に対応する2個のノードN1、N6を抽出する。
【0076】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS19-3)。図2の例では、情報処理装置100は、ノードN7と近傍ノードであるノードN1、N6との間を連結するエッジをグラフGR11-6に追加することによりグラフGR11-7を生成する。具体的には、情報処理装置100は、空間情報VS1-7に示すように、追加ノードであるノードN7とノードN1との間をエッジE10により連結し、ノードN7とノードN6との間をエッジE11により連結することにより、グラフGR11-7を生成する。
【0077】
そして、情報処理装置100は、削除するエッジが有るかどうかを判定する(ステップS19-4)。ここで、情報処理装置100は、追加ノードであるノードN7の追加後のグラフGR11-7において、ノードN7の近傍ノードであるノードN1、N6のうち、連結エッジ数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-7において、ノードN1、N6がいずれも連結エッジ数が連結閾値「2」よりも多いため、ノードN1、N6の2つのノードを第1ノードとして選択する。
【0078】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位であるエッジ(超過エッジ)により、第1ノードと連結されたノード(第2ノード)を選択する。図2の例では、情報処理装置100は、第1ノードとして選択したノードN1、N6の各々について、第2ノードを選択する処理を行い、選択した各第2ノードを対象として削除するエッジが有るかどうかを判定する。
【0079】
例えば、情報処理装置100は、ノードN1を対象として、第2ノードを選択する。情報処理装置100は、ノードN1と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL1-4に基づいて、第2ノードを選択する。
【0080】
情報処理装置100は、連結エッジリストEDL1-4のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。図2の例では、情報処理装置100は、連結エッジリストEDL1-4のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN1と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL1-4のうち、順位が「3」~「5」位であるエッジE4、E6、E1の各々により、ノードN1と連結されたノードN4、N5、N2を第2ノードとして選択する。
【0081】
そして、図2の例では、情報処理装置100は、ノードN1の第2ノードとして選択したノードN4、N5、N2の各々について、各々の連結エッジであるエッジE4、E6、E1が削除可能かどうかを判定する。図2の例では、情報処理装置100は、グラフGR11-7において、ノードN4、N5、N2の各々に連結されたエッジが2本しかないため、ノードN4、N5、N2については、順位が「2」よりも大きい、すなわち「3」位以下のエッジが無いため、削除するエッジが無いと判定する。このように、情報処理装置100は、第1ノードとして選択したノードN1について、削除するエッジが無いと判定する。
【0082】
また、情報処理装置100は、ノードN6を対象として、第2ノードを選択する。図2の例では、情報処理装置100は、ノードN6の3本の連結エッジのうち、順位が「3」位であるエッジE11により、ノードN6と連結されたノードN7が追加ノードであるため、ノードN7を第2ノードとして選択しない。これにより、情報処理装置100は、第1ノードとして選択したノードN6について、第2ノードとして選択するノードが無いため、削除するエッジが無いと判定する。そのため、情報処理装置100は、追加ノードであるノードN7の追加時点においては、削除するエッジが無いとして、超過エッジをグラフから削除する削除処理を実行しない。
【0083】
そして、情報処理装置100は、ノードN8を新規追加する(ステップS20-1)。図2の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN8をグラフGR11に追加する。
【0084】
そして、情報処理装置100は、グラフを探索する(ステップS20-2)。例えば、情報処理装置100は、追加ノードであるノードN8をクエリとして、図14に示すような処理手順によりグラフGR11-7を探索し、ノードN8の近傍ノードとして、連結数「2」に対応する2個のノードN2、N6を抽出する。
【0085】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS20-3)。図2の例では、情報処理装置100は、ノードN8と近傍ノードであるノードN2、N6との間を連結するエッジをグラフGR11-7に追加することによりグラフGR11-8を生成する。具体的には、情報処理装置100は、空間情報VS1-8に示すように、追加ノードであるノードN8とノードN2との間をエッジE12により連結し、ノードN8とノードN6との間をエッジE13により連結することにより、グラフGR11-8を生成する。
【0086】
そして、情報処理装置100は、削除するエッジが有るかどうかを判定する(ステップS20-4)。ここで、情報処理装置100は、追加ノードであるノードN8の追加後のグラフGR11-8において、ノードN8の近傍ノードであるノードN2、N6のうち、連結エッジ数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-8において、ノードN2、N6がいずれも連結エッジ数が連結閾値「2」よりも多いため、ノードN2、N6の2つのノードを第1ノードとして選択する。
【0087】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位であるエッジ(超過エッジ)により、第1ノードと連結されたノード(第2ノード)を選択する。図2の例では、情報処理装置100は、第1ノードとして選択したノードN2、N6の各々について、第2ノードを選択する処理を行い、選択した各第2ノードを対象として削除するエッジが有るかどうかを判定する。
【0088】
例えば、情報処理装置100は、ノードN2を対象として、第2ノードを選択する。情報処理装置100は、ノードN2と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL2-3に基づいて、第2ノードを選択する。
【0089】
情報処理装置100は、連結エッジリストEDL2-3のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN2と連結されたノードを第2ノードとして選択する。図2の例では、情報処理装置100は、連結エッジリストEDL2-3のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN2と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL2-3のうち、順位が「3」位であるエッジE1により、ノードN2と連結されたノードN1を第2ノードとして選択する。
【0090】
そして、情報処理装置100は、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジをグラフから削除する削除処理を実行する。図2の例では、情報処理装置100は、第2ノードであるノードN1に連結されたエッジのうち、超過エッジであるエッジE1の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。情報処理装置100は、ノードN1に連結されたエッジのうち、エッジE1の順位が「2」よりも大きい、すなわち「3」位以下であるかどうかを判定する。例えば、情報処理装置100は、ノードN1の連結エッジリストEDL1-4に基づいて、ノードN1に連結されたエッジのうち、エッジE1の順位が「3」位以下であるかどうかを判定する。
【0091】
連結エッジリストEDL1-4に示すように、情報処理装置100は、ノードN1に連結されたエッジのうち、エッジE1の順位が「5」位であり、「3」位以下であるため、エッジE1が削除可能であると判定する。このように、情報処理装置100は、第1ノードとして選択したノードN2について、エッジE1が削除可能であると判定する。
【0092】
また、情報処理装置100は、ノードN6を対象として、第2ノードを選択する。情報処理装置100は、長さが短い方から順にノードN6の連結エッジがソートされた連結エッジリストEDL6-1に基づいて、第2ノードを選択する。以下では、連結エッジリストEDL6-1等について、特に区別なく説明する場合には、連結エッジリストEDL6と記載する。情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフ情報を用いて、連結エッジリストEDL6に対応する情報を生成してもよい。また、情報処理装置100は、連結エッジリストEDL6に対応する情報を記憶部120(図4参照)に記憶してもよい。
【0093】
情報処理装置100は、連結エッジリストEDL6-1のうち、長さが短い順の順位が連結閾値「2」よりも大きい順位(超過順位)である超過エッジにより、ノードN6と連結されたノードを第2ノードとして選択する。図2の例では、情報処理装置100は、連結エッジリストEDL2-1のうち、順位が「2」よりも大きい、すなわち「3」位以下である超過エッジにより、ノードN6と連結されたノードを第2ノードとして選択する。具体的には、情報処理装置100は、連結エッジリストEDL6-1のうち、順位が「3」であるエッジE11により、ノードN6と連結されたノードN7を第2ノードとして選択する。
【0094】
そして、情報処理装置100は、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジをグラフから削除する削除処理を実行する。図2の例では、情報処理装置100は、第2ノードであるノードN7に連結されたエッジのうち、超過エッジであるエッジE11の順位が連結閾値「2」よりも大きい順位(超過順位)であるかどうかを判定する。図2の例では、情報処理装置100は、グラフGR11-8において、ノードN7に連結されたエッジが2本しかないため、ノードN7については、順位が「2」よりも大きい、すなわち「3」位以下のエッジが無いため、削除するエッジが無いと判定する。また、図2の例では、情報処理装置100は、ノードN6の4本の連結エッジのうち、順位が「4」位であるエッジE13により、ノードN6と連結されたノードN8が追加ノードであるため、ノードN8を第2ノードとして選択しない。このように、情報処理装置100は、第1ノードとして選択したノードN6について、削除するエッジが無いと判定する。
【0095】
そして、情報処理装置100は、削除処理を実行する(ステップS21)。図2の例では、情報処理装置100は、空間情報VS1-9に示すように、エッジE1を削除した第2グラフであるグラフGR11-9を生成する。
【0096】
上述したように、情報処理装置100は、連結エッジがいずれのノードから見ても超過エッジになる場合、そのエッジを削除する。これにより、情報処理装置100は、過剰なエッジを有するノードの発生を抑制するとともに、生成中のグラフから順次エッジを削除することにより、生成中のグラフを用いて検索する際の処理時間の増大を抑制することができる。このように、情報処理装置100は、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。
【0097】
また、情報処理装置100は、上述のように、生成中のグラフを用いて追加ノードの近傍ノードを抽出することにより、より効率的に近傍ノードを抽出し、効率的なグラフ生成を可能にすることができる。例えば、グラフに含まれるノード数が多くなった場合であっても、情報処理装置100は、生成中のグラフを追加ノードの近傍ノードの選択に利用することにより、近傍ノード選択の処理時間の増大を抑制し、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。すなわち、情報処理装置100は、生成中のグラフを用いて追加ノードの近傍ノードを抽出することにより、より高速にグラフを生成することができる。なお、情報処理装置100は、近傍ノードを抽出できればどのような方法により、近傍ノードを抽出してもよく、例えば生成中のグラフ内の各ノードと追加ノードとの間の距離を示す情報を用いて、距離が近い方から順に連結数の近傍ノードを抽出してもよい。
【0098】
なお、情報処理装置100は、処理の高速化のために、グラフGR11の各ノードをリーフとする木構造の起点用情報を用いて、起点ノードを決定してもよい。例えば、情報処理装置100は、図13に示すような木構造の起点情報を用いて、グラフGR11-1のノードN1、N2のうち、ノードN1を起点ノードに決定してもよい。このように、情報処理装置100は、生成中のグラフに対応する起点用情報を用いて起点ノードを決定することにより、効率的にグラフを探索することができるため、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。例えば、グラフに含まれるノード数が多くなった場合であっても、情報処理装置100は、起点用情報を用いて起点ノードを決定することにより、起点ノードの選択の処理時間の増大を抑制し、より効率的に起点ノードを選択し、効率的なグラフ生成を可能にすることができる。
【0099】
〔1-1.グラフデータ〕
なお、図1及び図2の例では、情報処理装置100が最初(ノード数が0個の状態)からグラフGR11を生成する場合、すなわちグラフを新規に生成する場合を示したが、情報処理装置100は、新規生成に限らず、種々のグラフを生成してもよい。例えば、情報処理装置100は、ノードやエッジが含まれるグラフに、新たに追加されたオブジェクトに対応するノードを追加することにより、グラフを生成してもよい。例えば、情報処理装置100は、エッジが調整され再構築されたグラフに、新たに追加されたオブジェクトに対応するノードを追加することにより、グラフを生成してもよい。
【0100】
〔1-2.起点用情報〕
例えば、情報処理装置100は、図13に示すようなツリー構造(木構造)に関する起点用情報IND11を起点用情報(起点用インデックス)として用いてもよい。図13は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。例えば、起点用情報IND11は、グラフGR11中のノードに到達可能なツリー構造を有するインデックスである。図13の例では説明を簡単にするために、起点用情報IND11は、ノードN1~N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。例えば、起点用情報IND11は、グラフGR11中の全ノードに到達可能であってもよい。
【0101】
なお、起点用情報IND11のような起点用情報は、情報処理装置100が生成してもよいし、情報処理装置100は、起点用情報を情報提供装置50等の他の外部装置から取得してもよい。例えば、情報処理装置100は、起点用情報を生成する場合は、木構造に関する種々の従来技術を適宜用いて、グラフ(例えばグラフGR11)に含まれるノードをリーフとする木構造の起点用情報(例えば起点用情報IND11)を生成する。また、情報処理装置100は、新たなノードがグラフ(例えばグラフGR11)に追加された場合、新たに追加されたオブジェクトに対応するノード(「追加ノード」ともいう)をリーフとして木構造の起点用情報(例えば起点用情報IND11)に追加する。これにより、情報処理装置100は、新たなノードがグラフに追加された場合、起点用情報を更新する。すなわち、情報処理装置100は、新たなノードがグラフに追加された場合、新たなノードをリーフとして追加した起点用情報を生成する。
【0102】
上記のように、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、起点用情報記憶部125(図9参照)に記憶された起点用情報IND11のような、起点用インデックスを生成する。例えば、情報処理装置100は、新たにオブジェクトが追加された場合、新たに追加されたオブジェクトに対応するノードをリーフとして追加することにより、起点用情報IND11を更新してもよい。図1及び図2の例では、情報処理装置100は、ノードN3やノードN4等が追加される毎に、ノードN3やノードN4等をリーフとして追加することにより、起点用情報IND11を更新してもよい。
【0103】
また、情報処理装置100は、他の外部装置から起点用情報を取得する場合は、他の外部装置へグラフを提供する。そして、情報処理装置100は、グラフを受信した他の外部装置が生成した起点用情報を、他の外部装置から取得する。例えば、情報処理装置100は、情報提供装置50から起点用情報IND11を取得する場合は、情報提供装置50へグラフGR11を送信する。そして、情報処理装置100は、グラフGR11を受信した情報提供装置50が生成した起点用情報IND11を、情報提供装置50から取得する。例えば、情報処理装置100は、起点用情報IND11と追加ノードに関する情報とを情報提供装置50へ提供することにより、情報提供装置50から追加ノードにより更新された起点用情報IND11を取得してもよい。なお、上記は一例であり、情報提供装置50は、起点用情報IND11を取得可能であれば、どのような手段により起点用情報IND11を取得してもよい。
【0104】
また、情報処理装置100は、図13中のインデックス情報群GINF11に示すような起点用情報IND11を用いて起点ノードを決定してもよい。図13の例では、情報処理装置100は、起点用情報IND11に基づいて、クエリQE1に対応する起点ノードを決定する。クエリQE1は、新たに追加するオブジェクトに対応するノードやグラフGR11を用いた検索を行う対象等であってもよい。すなわち、情報処理装置100は、グラフ生成時や検索時において、起点用情報IND11を用いて、起点ノードを決定する。
【0105】
具体的には、情報処理装置100は、起点用情報記憶部125(図9参照)に記憶された起点用情報IND11を用いて、起点ノードを決定する。図13中の起点用情報IND11は、図9中の起点用情報記憶部125に示す階層構造を有する。例えば、起点用情報IND11は、ルートRTの直下に位置する第1階層のノード(ベクトル)が、節点VT1、VT2、VT3等であることを示す。また、例えば、起点用情報IND11は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4(図示せず)であることを示す。例えば、起点用情報IND11は、節点VT2-1の直下の第3階層のノードが、ノードN2、N5、すなわちグラフGR11中のノード(ベクトル)であることを示す。また、起点用情報IND11は、節点VT2-2の直下の第3階層のノードが、ノードN1、N3、N4、すなわちグラフGR11中のノード(ベクトル)であることを示す。
【0106】
例えば、情報処理装置100は、図13中の起点用情報IND11に示すような木構造型の起点用インデックス情報を用いて、グラフGR11における起点ノードを決定する。図13の例では、情報処理装置100は、クエリQE1に基づいて、起点用情報IND11を上(ルートRT)から下へ辿ることにより、起点用情報IND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE1)に対応する起点ノードを決定することができる。例えば、情報処理装置100は、追加ノードであるクエリQE1に対応する適切な起点ノードを高速に決定することができる。
【0107】
なお、情報処理装置100は、上記に限らず、種々の起点用インデックスを用いてもよい。すなわち、図13の例に示す起点用情報(起点用インデックス)は一例であり、情報処理装置100は、種々の起点用情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いる起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索インデックス(起点用情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【0108】
例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索インデックスを起点用インデックスとして生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索インデックスを起点用インデックスとして生成してもよい。
【0109】
また、例えば、情報処理装置100は、その他の木構造を有する起点用インデックスとして生成してもよい。例えば、情報処理装置100は、木構造の起点用インデックスのリーフがグラフに接続する種々の起点用インデックスを生成してもよい。例えば、情報処理装置100は、木構造の起点用インデックスのリーフがグラフ中のノードに対応する種々の起点用インデックスを生成してもよい。また、情報処理装置100は、このような起点用インデックスを用いて検索を行う場合、起点用インデックスを辿って到達したリーフ(ノード)からグラフを探索してもよい。
【0110】
なお、上述したような起点用インデックスは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造の起点用インデックスを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能な起点用インデックスであれば、どのようなデータ構造の起点用インデックスを生成してもよい。情報処理装置100は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関する検索をより高速に実行可能にすることができる。
【0111】
〔2.情報処理システムの構成〕
図3に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図3は、実施形態に係る情報処理システムの構成例を示す図である。なお、図3に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
【0112】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
【0113】
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
【0114】
情報処理装置100は、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する情報処理装置である。すなわち、情報処理装置100は、グラフを生成する生成装置である。情報処理装置100は、第1グラフに基づいて、複数のノードから所定の閾値の数のノードを追加ノードに連結される近傍ノードとして抽出する抽出処理を行う。例えば、情報処理装置100は、第1グラフ中の複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを抽出する。そして、情報処理装置100は、近傍ノードのうち、追加ノードが第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する。そして、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に長さが短い順の順位が所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、第1ノードと連結された第2ノードを選択する。そして、情報処理装置100は、第2ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する。
【0115】
例えば、情報処理装置100は、端末装置からクエリ情報(以下、単に「クエリ」ともいう)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
【0116】
〔3.情報処理装置の構成〕
次に、図4を用いて、実施形態に係る情報処理装置100の構成について説明する。図4は、実施形態に係る情報処理装置100の構成例を示す図である。図4に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0117】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図3中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0118】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図4に示すように、オブジェクト情報記憶部121と、閾値情報記憶部122と、条件情報記憶部123と、第1グラフ情報記憶部124と、起点用情報記憶部125と、第2グラフ情報記憶部126とを有する。
【0119】
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図5は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図5に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
【0120】
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図5の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
【0121】
例えば、図5の例では、ID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2...」の多次元のベクトル情報が対応付けられることを示す。
【0122】
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0123】
(閾値情報記憶部122)
実施形態に係る閾値情報記憶部122は、閾値に関する各種情報を記憶する。図6は、実施形態に係る閾値情報記憶部の一例を示す図である。図6に示す閾値情報記憶部122は、「閾値ID」、「閾値名」、「閾値」、「対象」といった項目が含まれる。
【0124】
「閾値ID」は、閾値を識別する情報を示す。「閾値名」は、閾値の名称を示す。また、「閾値」は、対応する閾値の具体的な値を示す。「対象」は、対応する閾値が用いられる対象を示す。
【0125】
図7の例では、閾値ID「TH1」により識別される閾値(閾値TH1)の名称は「連結閾値」であり、その値は、「2」であることを示す。閾値IDの対象は、近傍ノードの抽出数、すなわち追加ノードに連結するエッジの連結数であることを示す。
【0126】
なお、閾値情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0127】
(条件情報記憶部123)
実施形態に係る条件情報記憶部123は、エッジの削除に関する削除条件に関する各種情報を記憶する。図7は、実施形態に係る条件情報記憶部の一例を示す図である。図7に示す条件情報記憶部123は、「削除条件ID」、「削除条件」といった項目を有する。
【0128】
「削除条件ID」は、削除条件を識別する情報を示す。「削除条件」は、エッジを削除するかどうかの決定(判定)に用いる情報が記憶される。
【0129】
図7の例では、削除条件ID「DCD1」により識別される削除条件(削除条件DCD1)は、順位が連結閾値よりも大きいことであることを示す。削除条件DCD1は、エッジの順位が、短い方から連結閾値より大きい順位であることを示す。
【0130】
なお、条件情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0131】
(第1グラフ情報記憶部124)
実施形態に係る第1グラフ情報記憶部124は、第1グラフ情報に関する各種情報を記憶する。例えば、第1グラフ情報記憶部124は、第1グラフ情報を記憶する。図8は、実施形態に係る第1グラフ情報記憶部の一例を示す図である。図8に示す第1グラフ情報記憶部124は、「ノードID」、「オブジェクトID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
【0132】
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
【0133】
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図8の例では、「エッジ情報」は、対応するノードに連結されるエッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図8の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからのエッジが連結される参照先(ノード)が対応付けられて登録されている。
【0134】
図8の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図8の例では、グラフデータにおけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。また、ノードN1からは、エッジID「E4」により識別されるエッジ(エッジE4)が、ノードID「N4」により識別されるノード(ノードN4)に連結されることを示す。すなわち、図8の例では、グラフデータにおけるノードN1からはエッジE4によりノードN4へ辿ることができることを示す。
【0135】
また、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N1」により識別されるノード(ノードN1)に連結されることを示す。すなわち、図8の例では、グラフデータにおけるノードN2からはエッジE1によりノードN1へ辿ることができることを示す。図8に示す第1グラフ情報記憶部124は、グラフGR11-8に対応するグラフ情報を記憶する場合を示す。
【0136】
なお、第1グラフ情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、第1グラフ情報記憶部124は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、第1グラフ情報記憶部124は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。また、例えば、第1グラフ情報記憶部124は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
【0137】
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータGR11は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータGR11は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータGR11は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
【0138】
(起点用情報記憶部125)
実施形態に係る起点用情報記憶部125は、起点用情報に関する各種情報を記憶する。図9は、実施形態に係る起点用情報記憶部の一例を示す図である。具体的には、図9の例では、起点用情報記憶部125は、ツリー構造の起点用インデックス情報を示す。図9の例では、起点用情報記憶部125は、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目が含まれる。なお、「第1階層」~「第3階層」に限らず、インデックスの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
【0139】
「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、インデックスの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、インデックスの根(ルート)に直接結ばれる階層に対応するノードとなる。
【0140】
「第2階層」は、インデックスの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、インデックスの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
【0141】
図9に示す例においては、起点用情報記憶部125には、図1中の起点用情報IND11に対応する情報が記憶される。例えば、起点用情報記憶部125は、第1階層のノードが、節点VT1~VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【0142】
また、起点用情報記憶部125は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4であることを示す。また、起点用情報記憶部125は、節点VT2-1の直下の第3階層のノードが、ノードN2、ノードN5のグラフGR11中のノード(ベクトル)であることを示す。起点用情報記憶部125は、節点VT2-2の直下の第3階層のノードが、ノードN1、ノードN3、ノードN4のグラフGR11中のノード(ベクトル)であることを示す。
【0143】
なお、起点用情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0144】
(第2グラフ情報記憶部126)
実施形態に係る第2グラフ情報記憶部126は、第2グラフ情報に関する各種情報を記憶する。例えば、第2グラフ情報記憶部126は、第2グラフ情報を記憶する。図10は、実施形態に係る第2グラフ情報記憶部の一例を示す図である。図10に示す第2グラフ情報記憶部126は、「ノードID」、「オブジェクトID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
【0145】
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
【0146】
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図10の例では、「エッジ情報」は、対応するノードに連結されるエッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図10の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからのエッジが連結される参照先(ノード)が対応付けられて登録されている。
【0147】
図10の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E4」により識別されるエッジ(エッジE4)が、ノードID「N4」により識別されるノード(ノードN4)に連結されることを示す。すなわち、図10の例では、グラフデータにおけるノードN1からはエッジE4によりノードN4へ辿ることができることを示す。
【0148】
また、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、エッジID「E3」により識別されるエッジ(エッジE3)が、ノードID「N3」により識別されるノード(ノードN3)に連結されることを示す。すなわち、図10の例では、グラフデータにおけるノードN2からはエッジE3によりノードN3へ辿ることができることを示す。
【0149】
このように、図10に示す第2グラフ情報記憶部126は、グラフGR11-9に対応するグラフ情報を記憶する場合を示す。すなわち、図10の例では、図8に示すグラフからエッジE1が削除されたグラフの情報が記憶された状態を示す。図10に示す第2グラフ情報記憶部126は、図8に対応するグラフGR11-8からエッジE1が削除されたグラフGR11-9に対応するグラフ情報を記憶する場合を示す。
【0150】
なお、第2グラフ情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、第2グラフ情報記憶部126は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、第2グラフ情報記憶部126は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。また、例えば、第2グラフ情報記憶部126は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
【0151】
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータGR11は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータGR11は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータGR11は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
【0152】
また、図10では、削除処理後のグラフデータを示すために第2グラフ情報記憶部126に記憶する場合を図示するが、削除処理後のグラフデータは、第1グラフ情報記憶部124に記憶されてもよい。例えば、情報処理装置100は、第2グラフ情報記憶部126に、削除処理中のグラフデータを記憶し、削除処理完了後において、削除処理完了後のグラフデータにより、第1グラフ情報記憶部124を更新する。例えば、情報処理装置100は、削除処理完了後において、第2グラフ情報記憶部126に記憶されたグラフデータを、第1グラフ情報記憶部124に格納することにより、第1グラフ情報記憶部124を更新する。なお、上記は一例であり、第1グラフ情報記憶部124に削除処理後のグラフデータが記憶されれば、どのような方法により、第1グラフ情報記憶部124を更新してもよい。情報処理装置100が第2グラフ情報記憶部126を用いることなく、第1グラフ情報記憶部124を更新する場合は、情報処理装置100は、第2グラフ情報記憶部126を有しなくてもよい。
【0153】
(制御部130)
図4の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0154】
図4に示すように、制御部130は、取得部131と、抽出部132と、第1選択部133と、第2選択部134と、生成部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0155】
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、閾値情報記憶部122や、条件情報記憶部123や、第1グラフ情報記憶部124や、起点用情報記憶部125や、第2グラフ情報記憶部126等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。
【0156】
取得部131は、複数のノードがエッジで連結された第1グラフと、追加ノードとを取得する。取得部131は、所定数の追加ノードを取得する。取得部131は、第1グラフに追加される一のノードである追加ノードを取得する。
【0157】
取得部131は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結するエッジを含む第1グラフとを取得する。取得部131は、データ検索の対象となる一のオブジェクトに対応する一の追加ノードを取得する。
【0158】
また、取得部131は、グラフデータを取得してもよい。例えば、情報処理装置100は、図1中のグラフGR11-1を取得してもよい。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフデータを取得してもよい。
【0159】
例えば、取得部131は、検索クエリに関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。
【0160】
(抽出部132)
抽出部132は、種々の情報を抽出する。抽出部132は、各種情報を検索する検索部として機能する。例えば、抽出部132は、オブジェクトに関する検索サービスを提供する検索部として機能する。抽出部132は、各種情報を探索する。抽出部132は、各種情報を検索する。例えば、抽出部132は、グラフデータを探索することにより、オブジェクトを検索する。例えば、抽出部132は、オブジェクト情報記憶部121や、閾値情報記憶部122や、条件情報記憶部123や、第1グラフ情報記憶部124や、起点用情報記憶部125や、第2グラフ情報記憶部126等から各種情報を抽出する。例えば、抽出部132は、取得部131により取得された情報に基づいて、各種情報を抽出する。
【0161】
抽出部132は、複数のノードから所定の閾値の数のノードを近傍ノードとして抽出する。抽出部132は、第1グラフを探索することにより、近傍ノードを抽出する抽出処理を行う。抽出部132は、複数のノードのうち、追加ノードとの関係に基づいて、所定の閾値の数のノードを近傍ノードとして抽出する抽出処理を行う。抽出部132は、複数のノードの各々と、追加ノードとの間の距離に基づいて、所定の閾値の数のノードを近傍ノードとして抽出する抽出処理を行う。
【0162】
例えば、抽出部132は、取得部131により取得されたクエリが取得された場合、グラフデータを探索することにより、クエリに類似するオブジェクトを検索する。例えば、抽出部132は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、抽出部132は、図14に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。
【0163】
抽出部132は、第1グラフを探索することにより、近傍ノードを抽出する。抽出部132は、追加ノードをクエリとして、第1グラフを探索することにより、所定数(図1の場合2個)の近傍ノードを抽出する。抽出部132は、図14に示すような検索処理により、第1グラフを探索することにより、近傍ノードを抽出する。
【0164】
図1の例では、抽出部132は、生成中のグラフGR11を用いて、追加ノードの近傍ノードをグラフGR11から抽出する抽出処理を実行する。抽出部132は、追加ノードであるノードN3をクエリとして、図14に示すような処理手順によりグラフGR11-1を探索し、ノードN3の近傍ノードとして、連結数「2」に対応する2個のノードN1、N2を抽出する。抽出部132は、追加ノードであるノードN7をクエリとして、図14に示すような処理手順によりグラフGR11-6を探索し、ノードN7の近傍ノードとして、連結数「2」に対応する2個のノードN1、N6を抽出する。
【0165】
(第1選択部133)
第1選択部133は、各種情報を選択する。第1選択部133は、各種情報を抽出する。第1選択部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。第1選択部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。例えば、第1選択部133は、オブジェクト情報記憶部121や、閾値情報記憶部122や、条件情報記憶部123や、第1グラフ情報記憶部124や、起点用情報記憶部125や、第2グラフ情報記憶部126等から各種情報を選択する。第1選択部133は、第1ノードを選択する。例えば、第1選択部133は、取得部131により取得された情報に基づいて、各種情報を選択する。第1選択部133は、抽出部132により抽出された情報に基づいて、各種情報を選択する。
【0166】
第1選択部133は、追加ノードが第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する。第1選択部133は、連結処理後において、近傍ノードのうち、連結されるエッジの数が所定の閾値よりも多いノードを第1ノードとして選択する。
【0167】
第1選択部133は、図1及び図2に示す第1ノードを選択する処理を行う。例えば、第1選択部133は、追加ノードであるノードN3の追加後のグラフGR11-2において、ノードN3の近傍ノードのうち、連結エッジ数が連結閾値「2」よりも多くなる第1ノードを選択する。
【0168】
(第2選択部134)
第2選択部134は、各種情報を選択する。第2選択部134は、各種情報を抽出する。第2選択部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。第2選択部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。例えば、第2選択部134は、オブジェクト情報記憶部121や、閾値情報記憶部122や、条件情報記憶部123や、第1グラフ情報記憶部124や、起点用情報記憶部125や、第2グラフ情報記憶部126等から各種情報を選択する。第2選択部134は、第2ノードを選択する。例えば、第2選択部134は、取得部131により取得された情報に基づいて、各種情報を選択する。第2選択部134は、抽出部132により抽出された情報に基づいて、各種情報を選択する。第2選択部134は、第1選択部133により選択された情報に基づいて、各種情報を選択する。
【0169】
第2選択部134は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に長さが短い順の順位が所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、第1ノードと連結された第2ノードを選択する。第2選択部134は、連結処理後において、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位である超過エッジにより、第1ノードと連結された第2ノードを選択する。
【0170】
第2選択部134は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に順位が超過順位になる全ての超過エッジの各々により、第1ノードと連結された全ての第2ノードを選択する。第2選択部134は、第1ノードに連結されたエッジのうち、一のノードである追加ノードが第1グラフに追加される前の順位が、所定の閾値に対応する順位である一のエッジであって、第1ノードと追加ノードとの間の距離よりも長い一のエッジである超過エッジにより第1ノードに連結されるノードを、第2ノードとして選択する。
【0171】
第2選択部134は、図1及び図2に示す第2ノードを選択する処理を行う。例えば、第2選択部134は、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位である超過エッジにより、第1ノードと連結された第2ノードを選択する。第2選択部134は、ノードN1と他のノードを連結するエッジ(連結エッジ)を長さが短い方から順に並べた連結エッジリストEDL1-1に基づいて、第2ノードを選択する。第2選択部134は、長さが短い方から順にノードN1の連結エッジがソートされた連結エッジリストEDL1-1に基づいて、第2ノードを選択する。第2選択部134は、連結エッジリストEDL1-1のうち、順位が「3」位であるエッジE1により、ノードN1と連結されたノードN2を第2ノードとして選択する。
【0172】
(生成部135)
生成部135は、各種情報を生成する。例えば、生成部135は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部135は、オブジェクト情報記憶部121や、閾値情報記憶部122や、条件情報記憶部123や、第1グラフ情報記憶部124や、起点用情報記憶部125や、第2グラフ情報記憶部126等から各種情報を生成する。例えば、生成部135は、グラフデータから第1グラフデータを生成する。例えば、生成部135は、第1グラフデータ(第1グラフ情報)に新たに追加されたノードを追加した第2グラフデータ(第2グラフ情報)を生成する。
【0173】
例えば、生成部135は、取得部131により取得された情報に基づいて、各種情報を生成する。生成部135は、抽出部132により抽出された情報に基づいて、各種情報を生成する。生成部135は、第1選択部133により選択された情報に基づいて、各種情報を生成する。生成部135は、第2選択部134により選択された情報に基づいて、各種情報を生成する。生成部135は、エッジに対して削除処理を行うかどうかを決定する。生成部135は、エッジが削除処理を行う対象かどうかを判定する。
【0174】
生成部135は、第2ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除することにより第2グラフを生成する。生成部135は、抽出部132の抽出処理により抽出された近傍ノードと追加ノードとの間をエッジで連結する連結処理により、第2グラフを生成する。生成部135は、連結処理後において、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する。生成部135は、所定数の追加ノードの各々について削除処理を行うことにより、第2グラフを生成する。
【0175】
生成部135は、一のノードについて削除処理を行うことにより、第2グラフを生成する。生成部135は、第2選択部134により選択された全ての第2ノードの各々を対象に削除処理を行うことにより、第2グラフを生成する。生成部135は、第2選択部134により選択された全ての第2ノードから、一のノードを選択する選択処理と、選択処理により選択した一のノードを対象とする削除処理とを繰り返すことにより、第2グラフを生成する。生成部135は、第2ノードに連結されたエッジのうち、順位が所定の閾値に対応する順位である基準エッジより、一のエッジである超過エッジが長い場合、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する。
【0176】
生成部135は、取得部131により新規に追加されたオブジェクトが取得された場合、新規に追加されたオブジェクトに対応するベクトルを生成してもよい。この場合、生成部135は、生成したベクトルをオブジェクトに対応付けてオブジェクト情報記憶部121に記憶させてもよい。
【0177】
生成部135は、図1及び図2に示すように、近傍ノードと追加ノードとの間をエッジで連結する連結処理によりグラフを生成(更新)する。図1の例では、情報処理装置100は、ノードN5と近傍ノードであるノードN1、N2との間を連結するエッジをグラフGR11-3に追加することによりグラフGR11-4を生成する。
【0178】
生成部135は、図1及び図2に示す削除処理を実行することにより、グラフを生成(更新)する。図1の例では、情報処理装置100は、空間情報VS1-6に示すように、エッジE2及びエッジE7を削除した第2グラフであるグラフGR11-6を生成する。図2の例では、情報処理装置100は、空間情報VS1-9に示すように、エッジE1を削除した第2グラフであるグラフGR11-9を生成する。
【0179】
(提供部136)
提供部136は、各種情報を提供する。例えば、提供部136は、端末装置10や情報提供装置50に各種情報を提供する。例えば、提供部136は、クエリに対応するオブジェクトIDを検索結果として提供する。例えば、提供部136は、抽出部132により検索されたオブジェクトIDを情報提供装置50へ提供する。例えば、提供部136は、抽出部132が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部136は、抽出部132により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
【0180】
また、提供部136は、生成部135により生成された第2グラフデータ(第2グラフ情報)を外部の情報処理装置へ提供してもよい。例えば、提供部136は、生成部135により生成されたグラフGR11を情報提供装置50に送信してもよい。
【0181】
〔4.情報処理のフロー〕
次に、図11を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図11は、実施形態に係る情報処理の一例を示すフローチャートである。
【0182】
図11に示すように、情報処理装置100は、複数のノードがエッジで連結された第1グラフを取得する(ステップS101)。例えば、情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフを第1グラフとして取得する。
【0183】
そして、情報処理装置100は、第1グラフに追加される追加ノードを取得する(ステップS102)。例えば、情報処理装置100は、情報提供装置50からグラフに新たに追加するオブジェクト情報を取得する。
【0184】
そして、情報処理装置100は、複数のノードから所定の閾値の数の近傍ノードを抽出する(ステップS103)。例えば、情報処理装置100は、追加する一のノードをクエリとして、第1グラフを探索することにより、近傍ノードを抽出する。
【0185】
そして、情報処理装置100は、近傍ノードのうち、追加ノードが第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなる第1ノードを選択する(ステップS104)。そして、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に長さが短い順の順位が所定の閾値よりも大きい超過エッジにより、第1ノードと連結された第2ノードを選択する(ステップS105)。そして、情報処理装置100は、第2ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する(ステップS106)。
【0186】
〔5.情報処理の他の一例〕
なお、情報処理装置100は、図1及び図2に示した処理に限らず、超過エッジを削除しつつ、グラフを生成可能であれば、どのような処理によりグラフを生成してもよい。例えば、情報処理装置100は、第2ノードとして選択されるノードの数の増大を抑制すること等により、より高速にグラフを生成してもよい。例えば、情報処理装置100は、種々の情報を適宜用いることにより、グラフの生成に要する時間の増大を抑制してもよい。この点について、以下説明する。
【0187】
以下では、図12を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図12は、実施形態に係る情報処理の他の一例を示す図である。なお、図1及び図2と同様の点については、同じ符号を付すこと等により、適宜説明を省略する。
【0188】
まず、図12に示す処理の概要を説明すると、図12では、情報処理装置100は、追加ノードの追加に応じて、グラフGR11中の複数のノードから、所定の閾値の数(図12の場合「2」個)のノードを近傍ノードとして抽出する抽出処理を行う。また、情報処理装置100は、近傍ノードのうち、追加ノードがグラフGR11に追加された場合に連結されるエッジの数が所定の閾値(図12の場合「2」)よりも多くなるノードを第1ノードとして選択する。そして、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加される前の順位が、所定の閾値に対応する順位(図12の場合「2」位)であり、第1ノードと追加ノードとの間の距離よりも長い超過エッジにより第1ノードに連結されるノードを、第2ノードとして選択する。そして、情報処理装置100は、第2ノードに連結されたエッジのうち、順位が所定の閾値に対応する順位である基準エッジ(図12の場合「2」位)より、超過エッジが長い場合、超過エッジをグラフから削除する削除処理によりグラフを生成する。
【0189】
すなわち、情報処理装置100は、検索されたノードNAの連結エッジのうち、長さがk番目(図12の場合「2」番目)に長いエッジ(対象エッジTE)の長さ(長さNAL)と、追加ノードとノードNAとの間の距離(距離NAD)とを比較する。そして、情報処理装置100は、長さNALが距離NADより長い場合、各ノードNAの連結エッジのうち、k番目のエッジ(対象エッジTE)は新たな削除可能な過剰エッジ(超過エッジ)であると判定する。なお、既に過剰になっているエッジは、過去にチェックされて削除できないと判断されているので、ここでチェックする必要はない。例えば、ノードNAの連結エッジのうち、長さがk+1番目以降のエッジは、過去にチェックされて削除できないと判断されているので、ここでチェックする必要はない。
【0190】
また、情報処理装置100は、k番目のエッジ(対象エッジTE)でノードNAと接続された他のノード(ノードNB)のk番目のエッジの長さ(長さNBL)よりも長さNALが長ければ、ノードNBに関しても対象エッジTEが削除可能な過剰エッジであると判断できるので、対象エッジTEを削除する。例えば、情報処理装置100は、ノードNBの連結エッジとしての対象エッジTEがノードNBの連結エッジのリスト中で長さ順にソートされているので、二分探索などの手法で高速に特定できる。
【0191】
以下、処理の詳細について、図12を用いて説明する。なお、図12において、グラフGR11にノードが追加される順序は、図1及び図2と同様にノードN1、N2、N3、N4、N5、N6、N7、N8の順で追加される。また、図12では、空間情報VS1-2に示すように、ノードN1~N3までが追加されたグラフGR11-2の状態から、ノードN4~N8を追加する処理を説明する。
【0192】
情報処理装置100は、ノードN4を新規追加する(ステップS51-1)。図12の例では、情報処理装置100は、追加されたオブジェクトに対応するノードN4をグラフGR11に追加する。
【0193】
そして、情報処理装置100は、グラフを探索する(ステップS51-2)。例えば、情報処理装置100は、追加ノードであるノードN4をクエリとして、図14に示すような処理手順によりグラフGR11-2を探索する。そして、情報処理装置100は、グラフを探索によりノードを抽出する(ステップS51-3)。図12の例では、情報処理装置100は、対象ノード情報TG1に示すように、新規に追加したノードN4の近傍ノードとして、連結数「2」に対応する2個のノードN1、N3を抽出する。
【0194】
情報処理装置100は、対象ノード情報TG1に示すように、新規の追加ノードであるノードN4に、その近傍ノードであるノードN1、及びノードN4とノードN1との間の距離D4を対応付けた対応付情報を生成する。例えば、情報処理装置100は、ノード間の距離を示す情報を記憶部120(図4参照)から取得してもよいし、記憶部120(図4参照)に記憶されたノードのベクトル情報を用いて、距離を算出してもよい。例えば、情報処理装置100は、記憶部120(図4参照)からノードN4とノードN1との間の距離を示す情報を取得してもよいし、ノードN4のベクトル情報やノードN1のベクトル情報を用いて、ノードN4とノードN1との間の距離を算出してもよい。また、情報処理装置100は、対象ノード情報TG1に示すように、新規の追加ノードであるノードN4に、その近傍ノードであるノードN3、及びノードN4とノードN3との間の距離D5を対応付けた対応付情報を生成する。情報処理装置100は、対象ノード情報TG1に対応する情報(対応付情報)を記憶部120(図4参照)に記憶してもよい。
【0195】
そして、情報処理装置100は、近傍ノードのうち、追加ノードがグラフGR11に追加された場合に連結されるエッジの数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-2において、ノードN1、N3がいずれも連結エッジ数が「2」であり、ノードN4の追加された場合に連結エッジ数が「3」となり、連結閾値「2」よりも多くなるため、ノードN1、N3の2つのノードを第1ノードとして選択する。
【0196】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加される前の順位が「2」位であり、第1ノードと追加ノードとの間の距離よりも長い超過エッジにより第1ノードに連結されるノードを、第2ノードとして選択する。情報処理装置100は、長さが短い方から順にノードN1の連結エッジがソートされた連結エッジリストEEL1-1に基づいて、第2ノードを選択する。連結エッジリストEEL1-1、EEL1-2は、グラフの更新に応じた連結エッジの更新に対応する。以下では、連結エッジリストEEL1-1、EEL1-2について、特に区別なく説明する場合には、連結エッジリストEEL1と記載する。情報処理装置100は、第1グラフ情報記憶部124(図8参照)に記憶されたグラフ情報を用いて、連結エッジリストEEL1に対応する情報を生成してもよい。また、情報処理装置100は、連結エッジリストEEL1に対応する情報を記憶部120(図4参照)に記憶してもよい。なお、情報処理装置100は、連結エッジに限らず、第1ノードについて連結エッジにより連結されたノード(「連結ノード」ともいう)を距離が短い方から順に並べたリストを用いてもよい。
【0197】
まず、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加される前の順位が「2」位のエッジの長さが、第1ノードと追加ノードとの間の距離よりも長いかどうかを判定する(ステップS51-4)。情報処理装置100は、ノードN1の連結エッジリストEEL1-1中の順位が「2」位であるエッジE1の長さL1が、ノードN4とノードN1との間の距離D4よりも長いかどうかを判定する。図12の例では、情報処理装置100は、エッジE1の長さL1が、ノードN4とノードN1との間の距離D4よりも長いと判定する。そのため、情報処理装置100は、第1ノードであるノードN1と、エッジE1により連結されたノードN2を、第2ノードとして選択する。
【0198】
情報処理装置100は、第2ノードに連結されたエッジのうち、順位が「2」位のエッジ(「基準エッジ」ともいう)より、第1ノードと第2ノードとを連結するエッジ(超過エッジ)が長いかどうかを判定する。そして、情報処理装置100は、基準エッジより、超過エッジが長い場合、超過エッジをグラフから削除する削除処理によりグラフを生成する。情報処理装置100は、長さが短い方から順にノードN2の連結エッジがソートされた連結エッジリストEEL2-1に基づいて、第2ノードを選択する。連結エッジリストEEL2-1等は、グラフの更新に応じた連結エッジの更新に対応する。以下では、連結エッジリストEEL2-1等について、特に区別なく説明する場合には、連結エッジリストEEL2と記載する。
【0199】
例えば、情報処理装置100は、ノードN2の連結エッジリストEEL2-1中の順位が「2」位であるエッジE1を基準エッジとして、超過エッジであるエッジE1が基準エッジよりも長い場合、超過エッジをグラフから削除する削除処理によりグラフを生成する。図12の例では、情報処理装置100は、超過エッジであるエッジE1の長さL1が基準エッジであるエッジE1の長さL1よりも長くないため、削除するエッジが無いと判定する。このように、情報処理装置100は、第1ノードとして選択したノードN1について、削除するエッジが無いと判定する。
【0200】
また、図12の例では詳細な説明を省略するが、情報処理装置100は、同様の処理により、第1ノードとして選択したノードN3についても、削除するエッジが無いと判定する。これにより、情報処理装置100は、削除するエッジが無いと判定する(ステップS51-6)。
【0201】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS51-7)。図12の例では、情報処理装置100は、ノードN4と近傍ノードであるノードN1、N3との間を連結するエッジをグラフGR11-2に追加することによりグラフGR11-3を生成する。具体的には、情報処理装置100は、空間情報VS1-3に示すように、追加ノードであるノードN4とノードN1との間をエッジE4により連結し、ノードN4とノードN3との間をエッジE5により連結することにより、グラフGR11-3を生成する。
【0202】
情報処理装置100は、ノードN5を新規追加する(ステップS52-1)。図12の例では、情報処理装置100は、追加されたオブジェクトに対応するノードN5をグラフGR11に追加する。
【0203】
そして、情報処理装置100は、グラフを探索する(ステップS52-2)。例えば、情報処理装置100は、追加ノードであるノードN5をクエリとして、図14に示すような処理手順によりグラフGR11-2を探索する。そして、情報処理装置100は、グラフを探索によりノードを抽出する(ステップS52-3)。図12の例では、情報処理装置100は、対象ノード情報TG2に示すように、新規に追加したノードN5の近傍ノードとして、連結数「2」に対応する2個のノードN1、N2を抽出する。
【0204】
情報処理装置100は、対象ノード情報TG2に示すように、新規の追加ノードであるノードN5に、その近傍ノードであるノードN1、及びノードN5とノードN1との間の距離D6を対応付けた対応付情報を生成する。例えば、情報処理装置100は、ノード間の距離を示す情報を記憶部120(図4参照)から取得してもよいし、記憶部120(図4参照)に記憶されたノードのベクトル情報を用いて、距離を算出してもよい。例えば、情報処理装置100は、記憶部120(図4参照)からノードN5とノードN1との間の距離を示す情報を取得してもよいし、ノードN5のベクトル情報やノードN1のベクトル情報を用いて、ノードN5とノードN1との間の距離を算出してもよい。また、情報処理装置100は、対象ノード情報TG2に示すように、新規の追加ノードであるノードN5に、その近傍ノードであるノードN2、及びノードN5とノードN2との間の距離D7を対応付けた対応付情報を生成する。情報処理装置100は、対象ノード情報TG2に対応する情報(対応付情報)を記憶部120(図4参照)に記憶してもよい。
【0205】
そして、図12の例では詳細な説明を省略するが、情報処理装置100は、上述した処処理(ステップS51-4、S51-5等)と同様の処理により、第1ノードとして選択したノードN1、N2について、削除するエッジが無いと判定する。これにより、情報処理装置100は、削除するエッジが無いと判定する(ステップS52-4)。
【0206】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS52-5)。図12の例では、情報処理装置100は、ノードN5と近傍ノードであるノードN1、N2との間を連結するエッジをグラフGR11-3に追加することによりグラフGR11-4を生成する。具体的には、情報処理装置100は、空間情報VS1-4に示すように、追加ノードであるノードN5とノードN1との間をエッジE6により連結し、ノードN5とノードN2との間をエッジE7により連結することにより、グラフGR11-4を生成する。
【0207】
情報処理装置100は、ノードN6を新規追加する(ステップS53-1)。図12の例では、情報処理装置100は、追加されたオブジェクトに対応するノードN6をグラフGR11に追加する。図12の例では、情報処理装置100は、空間情報VS1-51に示すように、ノードN6をグラフGR11-4に追加することによりグラフGR11-51を生成する。
【0208】
そして、情報処理装置100は、グラフを探索する(ステップS53-2)。例えば、情報処理装置100は、追加ノードであるノードN6をクエリとして、図14に示すような処理手順によりグラフGR11-4を探索する。そして、情報処理装置100は、グラフを探索によりノードを抽出する(ステップS53-3)。図12の例では、情報処理装置100は、対象ノード情報TG3に示すように、新規に追加したノードN6の近傍ノードとして、連結数「2」に対応する2個のノードN1、N5を抽出する。
【0209】
情報処理装置100は、対象ノード情報TG3に示すように、新規の追加ノードであるノードN6に、その近傍ノードであるノードN1、及びノードN6とノードN1との間の距離D8を対応付けた対応付情報を生成する。例えば、情報処理装置100は、ノード間の距離を示す情報を記憶部120(図4参照)から取得してもよいし、記憶部120(図4参照)に記憶されたノードのベクトル情報を用いて、距離を算出してもよい。例えば、情報処理装置100は、記憶部120(図4参照)からノードN6とノードN1との間の距離を示す情報を取得してもよいし、ノードN6のベクトル情報やノードN1のベクトル情報を用いて、ノードN6とノードN1との間の距離を算出してもよい。また、情報処理装置100は、対象ノード情報TG3に示すように、新規の追加ノードであるノードN6に、その近傍ノードであるノードN5、及びノードN6とノードN5との間の距離D9を対応付けた対応付情報を生成する。情報処理装置100は、対象ノード情報TG3に対応する情報(対応付情報)を記憶部120(図4参照)に記憶してもよい。
【0210】
そして、情報処理装置100は、近傍ノードのうち、追加ノードがグラフGR11に追加された場合に連結されるエッジの数が連結閾値「2」よりも多くなるノードを第1ノードとして選択する。情報処理装置100は、グラフGR11-4において、ノードN1、N5がいずれもノードN6の追加された場合に連結エッジ数が連結閾値「2」よりも多くなるため、ノードN1、N5の2つのノードを第1ノードとして選択する。
【0211】
そして、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加される前の順位が「2」位であり、第1ノードと追加ノードとの間の距離よりも長い超過エッジにより第1ノードに連結されるノードを、第2ノードとして選択する。情報処理装置100は、長さが短い方から順にノードN1の連結エッジがソートされた連結エッジリストEEL1-1に基づいて、第2ノードを選択する。
【0212】
まず、情報処理装置100は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加される前の順位が「2」位のエッジの長さが、第1ノードと追加ノードとの間の距離よりも長いかどうかを判定する(ステップS53-4)。情報処理装置100は、ノードN1の連結エッジリストEEL1-1中の順位が「2」位であるエッジE2の長さL2が、ノードN6とノードN1との間の距離D8よりも長いかどうかを判定する。図12の例では、情報処理装置100は、エッジE2の長さL2が、ノードN6とノードN1との間の距離D8よりも長いと判定する。そのため、情報処理装置100は、第1ノードであるノードN1と、エッジE2により連結されたノードN3を、第2ノードとして選択する。
【0213】
情報処理装置100は、第2ノードに連結されたエッジのうち、順位が「2」位のエッジ(基準エッジ)より、第1ノードと第2ノードとを連結するエッジ(超過エッジ)が長いかどうかを判定する。情報処理装置100は、長さが短い方から順にノードN3の連結エッジがソートされた連結エッジリストEEL3-1に基づいて、第2ノードを選択する。連結エッジリストEEL3-1等は、グラフの更新に応じた連結エッジの更新に対応する。以下では、連結エッジリストEEL3-1等について、特に区別なく説明する場合には、連結エッジリストEEL3と記載する。
【0214】
例えば、情報処理装置100は、ノードN3の連結エッジリストEEL3-1中の順位が「2」位であるエッジE5を基準エッジとして、超過エッジであるエッジE2が基準エッジよりも長い場合、超過エッジをグラフから削除する削除処理によりグラフを生成する。図12の例では、情報処理装置100は、超過エッジであるエッジE2の長さL2が基準エッジであるエッジE5の長さL5よりも長いため、超過エッジであるエッジE2が削除可能であると判定する。このように、情報処理装置100は、第1ノードとして選択したノードN1について、エッジE2が削除可能であると判定する。
【0215】
また、図12の例では詳細な説明を省略するが、情報処理装置100は、同様の処理により、第1ノードとして選択したノードN5について、エッジE7が削除可能であると判定する。これにより、情報処理装置100は、エッジE2及びエッジE7が削除可能であると判定する(ステップS53-6)。
【0216】
そして、情報処理装置100は、削除処理を実行する(ステップS53-7)。図12の例では、情報処理装置100は、空間情報VS1-6に示すように、エッジE2及びエッジE7を削除した第2グラフであるグラフGR11-6を生成する。図12の例では、情報処理装置100は、グラフGR11-51からエッジE2及びエッジE7を削除することによりグラフGR11-6を生成する。なお、情報処理装置100は、エッジが削除可能と判定された時点で、そのエッジを削除してもよい。
【0217】
そして、情報処理装置100は、近傍ノードと追加ノードとの間をエッジで連結する連結処理を行う(ステップS53-8)。図12の例では、情報処理装置100は、ノードN6と近傍ノードであるノードN1、N5との間を連結するエッジを追加することによりグラフGR11-6を生成する。具体的には、情報処理装置100は、空間情報VS1-6に示すように、追加ノードであるノードN6とノードN1との間をエッジE8により連結し、ノードN6とノードN5との間をエッジE9により連結することにより、グラフGR11-6を生成する。
【0218】
また、情報処理装置100は、ノードN7、N8について追加処理を実行する(ステップS54)。情報処理装置100は、ノードN7を追加ノードとして、上述した処理を行う。また、情報処理装置100は、ノードN8を追加ノードとして、上述した処理を行う。これにより、情報処理装置100は、グラフGR11-9を生成する。図12の例では、情報処理装置100は、空間情報VS1-9に示すように、ノードN7、N8、及びエッジE10~E13が追加され、エッジE1が削除された第2グラフであるグラフGR11-9を生成する。
【0219】
上記のような処理により情報処理装置100は、より高速にグラフを生成することができる。情報処理装置100は、追加するノードとの距離を用いて、第1ノードや第2ノードを選択することにより、より高速にグラフを生成することができる。情報処理装置100は、第2ノードとして選択されるノードの数の増大を抑制すること等により、より高速にグラフを生成することができる。
【0220】
〔6.検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図14を一例として説明する。図14は、グラフデータを用いた検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100の抽出部132によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、以下では、情報処理装置100(第1選択部133や抽出部132)が検索処理を行う。なお、検索サービスを提供しない場合、情報処理装置100は抽出部132を有しなくてもよい。以下で説明する処理の検索クエリは、追加ノードや対象ノードやユーザが指定したオブジェクト等であってもよい。
【0221】
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、第2グラフGR12等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
【0222】
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
【0223】
次に、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)のみがSの要素の場合には、結果的にルートノードがオブジェクトsとして抽出される。次に、情報処理装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
【0224】
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。
【0225】
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
【0226】
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
【0227】
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。
【0228】
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、連結数であってもよい。例えば、ks=2であってもよい。オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
【0229】
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
【0230】
次に、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
【0231】
そして、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
【0232】
オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えた場合(ステップS315:Yes)、情報処理装置100は、オブジェクト集合Sが空集合であるか否かを判定する(ステップS316)。オブジェクト集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、オブジェクト集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、オブジェクト集合Rを出力し、処理を終了する(ステップS317)。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を追加ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。また、例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
【0233】
〔7.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、抽出部132と、第1選択部133と、第2選択部134と、生成部135とを有する。取得部131は、複数のノードがエッジで連結された第1グラフと、追加ノードとを取得する。抽出部132は、複数のノードから所定の閾値の数のノードを近傍ノードとして抽出する。第1選択部133は、追加ノードが第1グラフに追加された場合に連結されるエッジの数が所定の閾値よりも多くなるノードを第1ノードとして選択する。第2選択部134は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に長さが短い順の順位が所定の閾値よりも大きい超過順位になるエッジである超過エッジにより、第1ノードと連結された第2ノードを選択する。生成部135は、第2ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除することにより第2グラフを生成する。
【0234】
このように、実施形態に係る情報処理装置100は、追加ノードがグラフに追加された場合に、超過エッジをグラフから削除することにより、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0235】
また、実施形態に係る情報処理装置100において、抽出部132は、第1グラフを探索することにより、近傍ノードを抽出する抽出処理を行う。
【0236】
これにより、実施形態に係る情報処理装置100は、グラフを探索することにより、近傍ノードを抽出する抽出処理を行うことにより、エッジ数が調整されたグラフを用いて抽出処理が実行できるため、処理時間の増大を抑制し、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0237】
また、実施形態に係る情報処理装置100において、抽出部132は、複数のノードのうち、追加ノードとの関係に基づいて、所定の閾値の数のノードを近傍ノードとして抽出する抽出処理を行う。
【0238】
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、追加ノードとの関係に基づいて、所定の閾値の数のノードを近傍ノードとして抽出する抽出処理が実行できるため、処理時間の増大を抑制し、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0239】
また、実施形態に係る情報処理装置100において、抽出部132は、複数のノードの各々と、追加ノードとの間の距離に基づいて、所定の閾値の数のノードを近傍ノードとして抽出する抽出処理を行う。
【0240】
これにより、実施形態に係る情報処理装置100は、複数のノードの各々と、追加ノードとの間の距離に基づいて、所定の閾値の数のノードを近傍ノードとして抽出する抽出処理が実行できるため、処理時間の増大を抑制し、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0241】
また、実施形態に係る情報処理装置100において、生成部135は、抽出部132の抽出処理により抽出された近傍ノードと追加ノードとの間をエッジで連結する連結処理により、第2グラフを生成する。
【0242】
これにより、実施形態に係る情報処理装置100は、抽出処理により抽出された近傍ノードと追加ノードとの間をエッジで連結する連結処理により追加ノードをグラフに追加することができるため、処理時間の増大を抑制し、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0243】
また、実施形態に係る情報処理装置100において、第1選択部133は、連結処理後において、近傍ノードのうち、連結されるエッジの数が所定の閾値よりも多いノードを第1ノードとして選択する。第2選択部134は、連結処理後において、第1ノードに連結されたエッジのうち、長さが短い順の順位が超過順位である超過エッジにより、第1ノードと連結された第2ノードを選択する。生成部135は、連結処理後において、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する。
【0244】
これにより、実施形態に係る情報処理装置100は、連結処理後において、第2ノードに連結されたエッジのうち、超過エッジの順位が超過順位である場合に、超過エッジを第1グラフから削除することにより、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0245】
また、実施形態に係る情報処理装置100において、取得部131は、所定数の追加ノードを取得する。生成部135は、所定数の追加ノードの各々について削除処理を行うことにより、第2グラフを生成する。
【0246】
これにより、実施形態に係る情報処理装置100は、所定数の追加ノードを追加し、所定数の追加ノードの各々について削除処理を行うことにより、所定数の新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0247】
また、実施形態に係る情報処理装置100において、取得部131は、第1グラフに追加される一のノードである追加ノードを取得する。生成部135は、一のノードについて削除処理を行うことにより、第2グラフを生成する。
【0248】
これにより、実施形態に係る情報処理装置100は、1つの追加ノードを追加し、所定数の追加ノードの各々について削除処理を行うことにより、1つずつの新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0249】
また、実施形態に係る情報処理装置100において、第2選択部134は、第1ノードに連結されたエッジのうち、追加ノードが第1グラフに追加された場合に順位が超過順位になる全ての超過エッジの各々により、第1ノードと連結された全ての第2ノードを選択する。生成部135は、第2選択部134により選択された全ての第2ノードの各々を対象に削除処理を行うことにより、第2グラフを生成する。
【0250】
これにより、実施形態に係る情報処理装置100は、第1ノードに連結されたエッジのうち、全ての超過エッジの各々により、第1ノードと連結された全ての第2ノードを選択し、削除処理を行うことにより、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0251】
また、実施形態に係る情報処理装置100において、生成部135は、第2選択部134により選択された全ての第2ノードから、一のノードを選択する選択処理と、選択処理により選択した一のノードを対象とする削除処理とを繰り返すことにより、第2グラフを生成する。
【0252】
これにより、実施形態に係る情報処理装置100は、第2ノードから、一のノードを選択する選択処理と、選択処理により選択した一のノードを対象とする削除処理とを繰り返すことにより、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0253】
また、実施形態に係る情報処理装置100において、第2選択部134は、第1ノードに連結されたエッジのうち、一のノードである追加ノードが第1グラフに追加される前の順位が、所定の閾値に対応する順位である一のエッジであって、第1ノードと追加ノードとの間の距離よりも長い一のエッジである超過エッジにより第1ノードに連結されるノードを、第2ノードとして選択する。生成部135は、第2ノードに連結されたエッジのうち、順位が所定の閾値に対応する順位である基準エッジより、一のエッジである超過エッジが長い場合、超過エッジを第1グラフから削除する削除処理により第2グラフを生成する。
【0254】
これにより、実施形態に係る情報処理装置100は、第1ノードに連結されたエッジのうち、一のノードである追加ノードが第1グラフに追加される前の順位が、所定の閾値に対応する順位である一のエッジであって、第1ノードと追加ノードとの間の距離よりも長い一のエッジである超過エッジにより第1ノードに連結されるノードを、第2ノードとして選択し、第2ノードに連結されたエッジのうち、順位が所定の閾値に対応する順位である基準エッジより、一のエッジである超過エッジが長い場合、超過エッジを第1グラフから削除することにより、新たなノードの追加に応じたエッジの削減によりグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【0255】
〔8.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図15に示すような構成のコンピュータ1000によって実現される。図15は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0256】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0257】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
【0258】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0259】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0260】
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0261】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0262】
〔9.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0263】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0264】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0265】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0266】
1 情報処理システム
100 情報処理装置
121 オブジェクト情報記憶部
122 閾値情報記憶部
123 条件情報記憶部
124 第1グラフ情報記憶部
125 起点用情報記憶部
126 第2グラフ情報記憶部
130 制御部
131 取得部
132 抽出部
133 選択部
134 決定部
135 生成部
136 提供部
10 端末装置
50 情報提供装置
N ネットワーク
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15