(57)【要約】【課題】所定の対象に関する効率的な検索を可能にする。【解決手段】本願に係る生成装置は、取得部と、生成部とを有する。取得部は、データ検索の対象となる複数のノードを取得する。生成部は、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、各ノードを終点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、各ノードに連結することによりグラフデータを生成する。【選択図】図３
2018195156.tif 000002
【特許請求の範囲】
【請求項１】
データ検索の対象となる複数のノードを取得する取得部と、
各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成部と、
を備えることを特徴とする生成装置。
【請求項２】
前記生成部は、
一のノードから対象ノードへ他のノードを経由することにより到達可能なルートであって、前記ルートに含まれる他のノードの数、または、前記対象ノードと前記一のノードとの距離と、前記他のノードと前記一のノードとの距離との比較が所定の条件を満たすルートがある場合、前記一のノードを始点ノードとし、前記対象ノードを終点ノードとする前記一のノードの出力エッジを削除することにより、前記グラフデータを生成する
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記取得部は、
前記複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得し、
前記生成部は、
前記有向エッジ群に基づいて、前記出力エッジと前記入力エッジとを含む前記グラフデータを生成する
ことを特徴とする請求項１または請求項２に記載の生成装置。
【請求項４】
前記生成部は、
前記有向エッジ群から各有向エッジが連結するノード間の距離に基づいて、有向エッジを前記出力エッジとして選択することにより、前記グラフデータを生成する
ことを特徴とする請求項３に記載の生成装置。
【請求項５】
前記生成部は、
前記有向エッジ群のうち、前記各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に前記第１閾値の数の他のノードを終点ノードとする有向エッジを前記出力エッジとして選択することにより前記グラフデータを生成する
ことを特徴とする請求項４に記載の生成装置。
【請求項６】
前記生成部は、
前記有向エッジ群から各有向エッジが連結するノード間の距離に基づいて選択した有向エッジの向きを反転させた前記入力エッジを生成することにより、前記グラフデータを生成する
ことを特徴とする請求項３〜５のいずれか１項に記載の生成装置。
【請求項７】
前記生成部は、
前記有向エッジ群のうち、前記各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に前記第２閾値の数の他のノードを終点ノードとする有向エッジを選択し、選択した有向エッジの向きを反転させた前記入力エッジを生成することにより、前記グラフデータを生成する
ことを特徴とする請求項６に記載の生成装置。
【請求項８】
前記生成部は、
一のノードから対象ノードへ他のノードを経由することにより到達可能な第１ルートであって、前記第１ルートに含まれる他のノードの数、または、前記対象ノードと前記一のノードとの距離と、前記他のノードと前記一のノードとの距離との比較が所定の条件を満たす第１ルートがある場合、前記一のノードを始点ノードとし、前記対象ノードを終点ノードとする第２ルートであって、前記一のノードから前記対象ノードへ直接到達可能な第２ルートを含まない枝刈後有向エッジに基づいて、前記出力エッジと前記入力エッジとを含む前記グラフデータを生成する
ことを特徴とする請求項３〜７のいずれか１項に記載の生成装置。
【請求項９】
前記生成部は、
前記有向エッジのうち、前記第２ルートに対応する有向エッジを削除することにより前記枝刈後有向エッジを生成する
ことを特徴とする請求項８に記載の生成装置。
【請求項１０】
前記生成部は、
前記第１閾値及び前記第２閾値を変動させた各組合せの検索結果に基づいて決定される前記第１閾値及び前記第２閾値を用いて、前記グラフデータを生成する
ことを特徴とする請求項１〜９のいずれか１項に記載の生成装置。
【請求項１１】
前記生成部は、
前記各組合せにおける適合率を含む前記検索結果に基づいて決定される前記第１閾値及び前記第２閾値を用いて、前記グラフデータを生成する
ことを特徴とする請求項１０に記載の生成装置。
【請求項１２】
前記生成部は、
前記各組合せにおける検索時間を含む前記検索結果に基づいて決定される前記第１閾値及び前記第２閾値を用いて、前記グラフデータを生成する
ことを特徴とする請求項１０または請求項１１に記載の生成装置。
【請求項１３】
コンピュータが実行する生成方法であって、
データ検索の対象となる複数のノードを取得する取得工程と、
各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成工程と、
を含むことを特徴とする生成方法。
【請求項１４】
データ検索の対象となる複数のノードを取得する取得手順と、
各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。
【請求項１５】
データ検索の対象となる複数のノードが複数の有向エッジにより連結されたグラフデータであって、
一のノードに接続される複数の有向エッジが、前記一のノードを始点ノードとし、前記一のノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記一のノードを終点ノードとし、前記一のノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジを含むグラフデータ。
【請求項１６】
データ検索の対象となる複数のノードが各ノード間の距離に応じて、複数の有向エッジにより連結されたグラフデータであって、
一のノードから対象ノードへ他のノードを経由することにより到達可能な第１ルートであって、前記第１ルートに含まれる他のノードの数、または、前記対象ノードと前記一のノードとの距離と、前記他のノードと前記一のノードとの距離との比較が所定の条件を満たす第１ルートがある場合、前記一のノードを始点ノードとし、前記対象ノードを終点ノードとする第２ルートであって、前記一のノードから前記対象ノードへ直接到達可能な第２ルートを含まないグラフデータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法、生成プログラム、及びグラフデータに関する。
【背景技術】
【０００２】
従来、種々の情報を検索する技術が提供されている。例えば、無向エッジによって生成されたグラフデータを用いて検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５２０８００１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、所定の対象に関する効率的な検索を可能にすることが難しい場合がある。例えば、各対象に対応する各ノードが無向エッジにより連結されたグラフデータを用いて検索を行う場合、重複した経路の探索が生じる等により、処理時間等のコストを抑制することが難しい。
【０００５】
本願は、上記に鑑みてなされたものであって、所定の対象に関する効率的な検索を可能にする生成装置、生成方法、生成プログラム、及びグラフデータを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願に係る生成装置は、データ検索の対象となる複数のノードを取得する取得部と、各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００７】
実施形態の一態様によれば、所定の対象に関する効率的な検索を可能にすることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る生成処理の一例を示す図である。
【図２】図２は、実施形態に係る生成システムの構成例を示す図である。
【図３】図３は、実施形態に係る生成装置の構成例を示す図である。
【図４】図４は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【図５】図５は、実施形態に係る第１グラフデータ記憶部の一例を示す図である。
【図６】図６は、実施形態に係る第２グラフデータ記憶部の一例を示す図である。
【図７】図７は、実施形態に係る生成処理の一例を示すフローチャートである。
【図８】図８は、実施形態に係る生成処理の一例を示すフローチャートである。
【図９】図９は、実施形態に係る第２グラフデータのエッジの削除の一例を示す図である。
【図１０】図１０は、実施形態に係る第１グラフデータのエッジの削除の一例を示す図である。
【図１１】図１１は、実施形態に係る閾値の選択に用いる情報を示す図である。
【図１２】図１２は、グラフデータを用いた検索処理の一例を示すフローチャートである。
【図１３】図１３は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【０００９】
以下に、本願に係る生成装置、生成方法、生成プログラム、及びグラフデータを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法、生成プログラム、及びグラフデータが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１０】
（実施形態）
〔１．生成処理〕
図１を用いて、実施形態に係る生成処理の一例について説明する。図１は、実施形態に係る生成処理の一例を示す図である。図１では、生成装置１００（図３参照）が与えられたグラフデータ（以下、「第１グラフデータ」ともいう）に基づいて、新たなグラフデータ（以下、「第２グラフデータ」ともいう）を生成する場合を示す。すなわち、図１では、生成装置１００が第１グラフデータから第２グラフデータを生成する場合を示す。なお、対象とする情報（オブジェクト）は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
【００１１】
また、生成装置１００は、図１に示すように、グラフデータを対象に生成処理を行う。なお、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「Ａ」から所定のノード「Ｂ」に連結される有向エッジとは、参照元をノード「Ａ」とし、参照先をノード「Ｂ」とするエッジであることを示す。
【００１２】
以下では、このようにノード「Ａ」を参照元とするエッジをノード「Ａ」の出力エッジという。また、以下では、このようにノード「Ｂ」を参照先とするエッジをノード「Ｂ」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有効エッジが連結する２つのノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
【００１３】
また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【００１４】
生成装置１００は、数百万〜数億単位の画像情報に対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。図１の例では、説明を簡単にするために、８個のノードを図示して処理の概要を説明する。例えば、生成装置１００は、図１中のノードＮ１〜Ｎ８に示すような複数のノードを含むノード群を取得し、各ノードをエッジで連結した第２グラフデータＧＲ１２を生成する。
【００１５】
また、このように「ノードＮ＊（＊は任意の数値）」と記載した場合、そのノードはノードＩＤ「Ｎ＊」により識別されるノードであることを示す。例えば、「ノードＮ１」と記載した場合、そのノードはノードＩＤ「Ｎ１」により識別されるノードである。
【００１６】
また、このように「エッジＥ＊（＊は任意の数値）」と記載した場合、そのエッジはエッジＩＤ「Ｅ＊」により識別されるエッジであることを示す。例えば、「エッジＥ１１」と記載した場合、そのエッジはエッジＩＤ「Ｅ１１」により識別されるエッジである。例えば、ノードＮ１を参照元とし、ノードＮ２を参照先として連結されるエッジＥ１１により、ノードＮ１からノードＮ２に辿ることが可能となる。この場合、有向エッジであるエッジＥ１１は、ノードＮ１を中心として識別される場合、出力エッジとなり、ノードＮ２を中心として識別される場合、入力エッジとなる。
【００１７】
また、図１中の空間情報ＶＳ１は、ユークリッド空間であってもよい。また、図１に示す空間情報ＶＳ１は、各ベクトル間の距離等の説明のための概念的な図であり、空間情報ＶＳ１は、多次元空間である。例えば、図１に示す空間情報ＶＳ１は、平面上に図示するため２次元の態様にて図示されるが、例えば１００次元や１０００次元等の多次元空間であるものとする。
【００１８】
また、図１に示す第２グラフデータＧＲ１２−１〜ＧＲ１２−４は、グラフデータの生成過程を模式的に示す図であり、第２グラフデータＧＲ１２−１〜ＧＲ１２−４は、生成処理により生成される同一のグラフデータである。また、以下では、第２グラフデータＧＲ１２−１〜ＧＲ１２−４について、特に区別なく説明する場合には、第２グラフデータＧＲ１２と記載する。
【００１９】
また、図１に示す例においては、第１グラフデータＧＲ１１及び第２グラフデータＧＲ１２−１〜ＧＲ１２−４においては、適宜「ノードＮ＊（＊は任意の数値）」の図示を省略し、取得した各ノードを「○」内に「ノードＮ＊（＊は任意の数値）」の「＊」の値を付すことにより表現する。例えば、空間情報ＶＳ１中の左上の「○」であって、内部に「２」が付された「○」は、ノードＩＤ「Ｎ２」により識別されるノードに対応する。例えば、図１に示す例において、各ノードに対応するベクトルデータは、Ｎ次元の実数値ベクトルであってもよい。また、図１に示す例においては、第２グラフデータＧＲ１２−１〜ＧＲ１２−４においては、第１グラフデータＧＲ１１において符号を図示済みのエッジについては、適宜「エッジＥ＊（＊は任意の数値）」の図示を省略する場合がある。
【００２０】
本実施形態においては、空間情報ＶＳ１における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象（画像情報）の類似性が、空間情報ＶＳ１内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図１に示す例においては、空間情報ＶＳ１における各ノード間の距離が短いオブジェクト同士の類似度が高く、空間情報ＶＳ１における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図１中の空間情報ＶＳ１において、ノードＩＤ「Ｎ６」により識別されるノードと、ノードＩＤ「Ｎ８」により識別されるノードとは近接している、すなわち距離が短い。そのため、ノードＩＤ「Ｎ６」により識別されるノードに対応するオブジェクトと、ノードＩＤ「Ｎ８」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
【００２１】
また、例えば、図１中の空間情報ＶＳ１において、ノードＩＤ「Ｎ６」により識別されるノードと、ノードＩＤ「Ｎ２」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードＩＤ「Ｎ６」により識別されるノードに対応するオブジェクトと、ノードＩＤ「Ｎ２」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。
【００２２】
また、図１の例では、生成装置１００は、後述する生成処理により、ノードを有向エッジで連結することにより、グラフデータＧＲ１１を生成する。例えば、グラフデータＧＲ１１を用いた検索においては、検索時はグラフ構造型インデックスと同様の処理を行うが、開始位置（起点）は本インデックス（グラフデータＧＲ１１）のルートからスタートする。例えば、生成装置１００が生成したグラフデータＧＲ１１を用いて検索を行う場合、ルートノードであるノードＮ１を起点として検索を行う。例えば、検索時においては、ルートノードであるノードＮ１から有向エッジを辿ることにより、ノードＮ２〜Ｎ８等を順次検索してもよい。
【００２３】
ここから、図１を用いて生成処理の詳細を説明する。なお、図１に示す各ステップは、第２グラフデータの生成を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。なお、生成装置１００が行う生成処理は、図１中の第２グラフデータＧＲ１２−４に示すような第２グラフデータＧＲ１２が生成されれば、どのような処理フローであってもよい。
【００２４】
まず、生成装置１００は、第１グラフデータを取得する（ステップＳ１１）。例えば、生成装置１００は、第１グラフデータ記憶部１２２から第１グラフデータを取得する。図１の例では、生成装置１００は、第１グラフデータＧＲ１１を取得する。例えば、第１グラフデータＧＲ１１は、ｋ近傍（k-nearest  neighbor）グラフデータである。図１の例では、第１グラフデータＧＲ１１は、ｋが「４」であり、各ノードから近傍の４個のノードに出力エッジが連結されたグラフデータである場合を例に説明する。
【００２５】
なお、第１グラフデータは、ｋ近傍グラフデータに限らず、近似ｋ近傍グラフデータ等、複数のノードが有向エッジに連結されたグラフであればどのようなグラフデータであってもよい。また、図１では、ノードＮ１及びノードＮ２の出力エッジを対象にする場合の処理を説明するため、ノードＮ１の出力エッジであるエッジＥ１１〜Ｅ１４及びノードＮ２の出力エッジであるエッジＥ２１〜Ｅ２４のみを図示し、他のノードＮ３〜Ｎ８の出力エッジについては図示を省略する。例えば、ノードＮ６から近傍の４個のノードにノードＮ２やノードＮ８が含まれる場合であっても、ノードＮ６からノードＮ２やノードＮ８への出力エッジは図示を省略する。
【００２６】
そして、生成装置１００は、第１グラフデータに含まれるノードを有する第２グラフデータを生成する（ステップＳ１２）。例えば、生成装置１００は、第１グラフデータからエッジを除くことにより、ノードＮ１〜Ｎ８に示すような複数のノードのみを有する第２グラフデータＧＲ１２を生成する。図１の例では、生成装置１００は、第１グラフデータＧＲ１１からノードのみを有する第２グラフデータＧＲ１２−１を生成する。
【００２７】
そして、生成装置１００は、第１グラフデータに含まれるノードのうち、一の未処理ノードを対象ノード（処理ノード）として選択する（ステップＳ１３）。図１の例では、生成装置１００は、「ノードＮ＊（＊は任意の数値）」の「＊」が小さい方から順に対象ノードを選択するものとする。この場合、生成装置１００は、ノードＮ１、ノードＮ２、ノードＮ３等の順序で対象ノードを選択する。なお、生成装置１００は、選択するノードが未処理のノードであれば、どのような順序でノードを選択してもよい。
【００２８】
図１の例では、生成装置１００は、第１グラフデータＧＲ１１からノードＮ１を対象ノードとして選択する。
【００２９】
そして、生成装置１００は、処理ノードを始点とする出力エッジのうち、距離が短い方から第１閾値の数のエッジを選択する（ステップＳ１４）。図１の例では、生成装置１００は、第１閾値を「２」として生成処理を行うものとする。このように、図１では第１閾値を「２」とする場合を例に説明するが、第１閾値には種々の値が選択されてもよい。
【００３０】
例えば、生成装置１００は、ノードＮ１を始点とする出力エッジのうち、距離（長さ）が短い方から第１閾値の数（２本）のエッジを選択する。例えば、生成装置１００は、図４中の第１グラフデータ記憶部１２２に記憶されたグラフデータに基づいて、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第１閾値の数（２本）のエッジを選択する。ここで、図１中のエッジ一覧ＥＬ１１−１は、ノードＮ１からの出力エッジを距離（長さ）が短い方から順に並べた一覧を示す。なお、エッジ一覧ＥＬ１１−１は、距離に基づくエッジの選択の説明のために示す一覧である。例えば、生成装置１００は、図５中の第１グラフデータ記憶部１２２に記憶された情報（データ）に基づいて処理可能であるため、エッジ一覧ＥＬ１１−１を有しなくてもよい。
【００３１】
図１中のエッジ一覧ＥＬ１１−１に示すように、生成装置１００は、距離が短い方から第１閾値「２」個のエッジ、すなわち順位が１位及び２位のエッジを選択する。具体的には、生成装置１００は、ノードＮ１の出力エッジのうち、最短のエッジＥ１２と、エッジＥ１２の次に距離が短いエッジＥ１１とを選択する。
【００３２】
そして、生成装置１００は、選択したエッジを第２グラフデータに追加する（ステップＳ１５）。図１の例では、生成装置１００は、エッジＥ１２、Ｅ１１を第２グラフデータに追加する。すなわち、生成装置１００は、ノードＮ１からの出力エッジであるエッジＥ１２、Ｅ１１を第２グラフデータに追加する。言い換えると、生成装置１００は、ノードＮ３への入力エッジであるエッジＥ１２と、ノードＮ２への入力エッジであるエッジＥ１１とを第２グラフデータに追加する。これにより、生成装置１００は、第２グラフデータＧＲ１２−２を生成する。
【００３３】
また、生成装置１００は、処理ノードを始点とする出力エッジのうち、距離が短い方から第２閾値の数のエッジを選択する（ステップＳ１６）。図１の例では、生成装置１００は、第２閾値を「３」として生成処理を行うものとする。このように、図１では第２閾値を「３」とする場合を例に説明するが、第２閾値には種々の値が選択されてもよい。
【００３４】
例えば、生成装置１００は、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。例えば、生成装置１００は、図５中の第１グラフデータ記憶部１２２に記憶されたグラフデータに基づいて、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。ここで、図１中のエッジ一覧ＥＬ１１−２は、ノードＮ１からの出力エッジを距離（長さ）が短い方から順に並べた一覧を示す。なお、エッジ一覧ＥＬ１１−２は、エッジ一覧ＥＬ１１−１と同様の情報であり、選択されるエッジ数が異なることを示すための一覧である。
【００３５】
図１中のエッジ一覧ＥＬ１１−２に示すように、生成装置１００は、距離が短い方から第２閾値「３」個のエッジ、すなわち順位が１位〜３位のエッジを選択する。具体的には、生成装置１００は、ノードＮ１の出力エッジのうち、最短のエッジＥ１２と、エッジＥ１２の次に距離が短いエッジＥ１１と、エッジＥ１１の次に距離が短いエッジＥ１３とを選択する。
【００３６】
そして、生成装置１００は、選択したエッジの向きを反転したエッジを第２グラフデータに追加する（ステップＳ１７）。図１の例では、生成装置１００は、エッジＥ１２、Ｅ１１、Ｅ１３の向きを反転したエッジＥ１５、Ｅ１６、Ｅ１７を第２グラフデータに追加する。すなわち、生成装置１００は、ノードＮ１への入力エッジであるエッジＥ１５、Ｅ１６、Ｅ１７を第２グラフデータに追加する。言い換えると、生成装置１００は、ノードＮ３からの出力エッジであるエッジＥ１５と、ノードＮ２からの出力エッジであるエッジＥ１６と、ノードＮ４からの出力エッジであるエッジＥ１７とを第２グラフデータに追加する。これにより、生成装置１００は、第２グラフデータＧＲ１２−３を生成する。
【００３７】
そして、生成装置１００は、第１グラフデータに含まれるノードのうち、一の未処理ノードを対象ノード（処理ノード）として選択する（ステップＳ１８）。例えば、生成装置１００は、ステップＳ１３で選択した処理を行ったノードＮ１（処理済みノード）以外のノードを対象ノードとして選択する。図１の例では、生成装置１００は、第１グラフデータＧＲ１１からノードＮ２を対象ノードとして選択する。
【００３８】
そして、生成装置１００は、処理ノードを始点とする出力エッジのうち、距離が短い方から第１閾値の数のエッジを選択する（ステップＳ１９−１）。例えば、生成装置１００は、ノードＮ２を始点とする出力エッジのうち、距離が短い方から第１閾値の数（２本）のエッジを選択する。ここで、図１中のエッジ一覧ＥＬ１２−１は、ノードＮ２からの出力エッジを距離（長さ）が短い方から順に並べた一覧を示す。なお、エッジ一覧ＥＬ１２−１は、距離に基づくエッジの選択の説明のために示す一覧である。例えば、生成装置１００は、図５中の第１グラフデータ記憶部１２２に記憶された情報（データ）に基づいて処理可能であるため、エッジ一覧ＥＬ１２−１を有しなくてもよい。
【００３９】
図１中のエッジ一覧ＥＬ１２−１に示すように、生成装置１００は、距離が短い方から第１閾値「２」個のエッジ、すなわち順位が１位及び２位のエッジを選択する。具体的には、生成装置１００は、ノードＮ２の出力エッジのうち、最短のエッジＥ２２と、エッジＥ２２の次に距離が短いエッジＥ２４とを選択する。
【００４０】
また、生成装置１００は、処理ノードを始点とする出力エッジのうち、距離が短い方から第２閾値の数のエッジを選択する（ステップＳ１９−２）。
【００４１】
例えば、生成装置１００は、ノードＮ２を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。例えば、生成装置１００は、図５中の第１グラフデータ記憶部１２２に記憶されたグラフデータに基づいて、ノードＮ２を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。ここで、図１中のエッジ一覧ＥＬ１２−２は、ノードＮ２からの出力エッジを距離（長さ）が短い方から順に並べた一覧を示す。なお、エッジ一覧ＥＬ１２−２は、エッジ一覧ＥＬ１２−１と同様の情報であり、選択されるエッジ数が異なることを示すための一覧である。
【００４２】
図１中のエッジ一覧ＥＬ１２−２に示すように、生成装置１００は、距離が短い方から第２閾値「３」個のエッジ、すなわち順位が１位〜３位のエッジを選択する。具体的には、生成装置１００は、ノードＮ２の出力エッジのうち、最短のエッジＥ２２と、エッジＥ２２の次に距離が短いエッジＥ２４と、エッジＥ２４の次に距離が短いエッジＥ２１とを選択する。
【００４３】
そして、生成装置１００は、選択したエッジを第２グラフデータに追加する（ステップＳ２０）。図１の例では、生成装置１００は、ステップＳ１９−１で選択したエッジＥ２２、Ｅ２４を第２グラフデータに追加する。すなわち、生成装置１００は、ノードＮ２からの出力エッジであるエッジＥ２２、Ｅ２４を第２グラフデータに追加する。
【００４４】
図１の例では、生成装置１００は、ステップＳ１９−２で選択したエッジの向きを反転したエッジを第２グラフデータに追加する。例えば、生成装置１００は、エッジＥ２２、Ｅ２４、Ｅ２１の向きを反転したエッジＥ２５、Ｅ２６、Ｅ２７を第２グラフデータに追加する。すなわち、生成装置１００は、ノードＮ２への入力エッジであるエッジＥ２５、Ｅ２６、Ｅ２７を第２グラフデータに追加する。これにより、生成装置１００は、第２グラフデータＧＲ１２−４を生成する。
【００４５】
上述したように、生成装置１００は、第１グラフデータＧＲ１１中の各ノードの出力エッジのうち、第１閾値の数の出力エッジを第２グラフデータＧＲ１２においてそのまま連結する。また、生成装置１００は、第１グラフデータＧＲ１１中の各ノードの出力エッジのうち、第２閾値の数の出力エッジを反転したエッジ第２グラフデータＧＲ１２において連結する。これにより、生成装置１００は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【００４６】
例えば、グラフデータ中に多数（例えば１０００個、１万個等）の出力エッジを含むノードが含まれる場合、そのノードを辿る検索の処理負荷が増大する。また、例えば、グラフデータ中に少数（例えば０個や１個等）の入力エッジを含むノードが含まれる場合、そのノードが検索される可能性が低くなる。このように、生成装置１００は、各ノードについて、出力エッジと入力エッジとの数を調整することにより、処理負荷が増大するノードや、検索される可能性が低いノードが含まれる可能性を低減することができる。したがって、生成装置１００は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。また、生成装置１００により生成されたグラフデータは、エッジの数の増大を抑制しつつ、所定の対象に関する効率的な検索を可能にすることができる。
【００４７】
〔１−１．第１グラフデータ〕
図１の例では、生成装置１００が与えられた第１グラフデータＧＲ１１から第２グラフデータＧＲ１２を生成する場合を示したが、生成装置１００は、第１グラフデータを用いることなく第２グラフデータを生成してもよい。例えば、生成装置１００は、エッジが連結されていない複数のノードから第２グラフデータを生成してもよい。
【００４８】
例えば、生成装置１００は、各ノードから他の全ノードまでの距離に基づく順位に基づいて、第２グラフデータを生成してもよい。例えば、生成装置１００は、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、各ノードを終点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、各ノードに連結することによりグラフデータを生成する。この場合、生成装置１００は、各ノードから他の全ノードに出力エッジが連結されたグラフデータを対象とする場合を同様の処理となる。このように、生成装置１００は、エッジが連結されていない複数のノードから第２グラフデータを生成してもよい。
【００４９】
〔１−２．第１閾値、第２閾値〕
図１の例では、第１閾値を「２」とし、第２閾値を「３」とする場合を示したが、第１閾値や第２閾値には種々の値が選択されてもよい。例えば、第１閾値と第２閾値とは同じ値であってもよい。また、生成装置１００は、第１閾値や第２閾値を、生成した第２グラフデータによる検索の性能に基づいて選択してもよい。なお、この点についての詳細は後述する。
【００５０】
〔１−３．インデックスデータ〕
また、生成装置１００は、検索時に用いるインデックスデータを生成してもよい。例えば、生成装置１００は、高次元ベクトルを検索する検索インデックスをインデックスデータとして生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【００５１】
例えば、生成装置１００は、ツリー構造（木構造）に関する検索インデックスをインデックスデータとして生成してもよい。例えば、生成装置１００は、ｋｄ木（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）等によって、生成装置１００内部の記憶装置に記憶されている各種プログラム（生成プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。例えば、制御部１３０（ＣＰＵやＭＰＵ等のコントローラ）は、グラフデータにより検索の処理を行う。例えば、制御部１３０は、グラフデータの指令に従って、与えられたクエリに対応する検索の処理を行う。
【００７７】
図３に示すように、制御部１３０は、取得部１３１と、選択部１３２と、生成部１３３と、提供部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００７８】
（取得部１３１）
取得部１３１は、各種情報を取得する。例えば、取得部１３１は、記憶部１２０から各種情報を取得する。例えば、取得部１３１は、オブジェクト情報記憶部１２１や、第１グラフデータ記憶部１２２や、第２グラフデータ記憶部１２３等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。
【００７９】
例えば、取得部１３１は、データ検索の対象となる複数のノードを取得する。例えば、取得部１３１は、複数のノードと、複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得する。例えば、取得部１３１は、外部の情報処理装置から第１グラフデータを取得する。例えば、取得部１３１は、第１グラフデータ記憶部１２２から第１グラフデータを取得する。
【００８０】
例えば、取得部１３１は、第１グラフデータを取得する。図１の例では、生成装置１００は、第１グラフデータＧＲ１１を取得する。
【００８１】
例えば、取得部１３１は、検索クエリに関する情報を取得する。例えば、取得部１３１は、画像検索に関する検索クエリを取得する。取得部１３１は、ユーザＵ１が利用する端末装置１０からクエリを受け付けた情報提供装置５０からクエリを取得する。
【００８２】
（選択部１３２）
選択部１３２は、各種情報を選択する。例えば、選択部１３２は、処理の対象となる対象ノード（処理ノード）を選択する。
【００８３】
図１の例では、選択部１３２は、第１グラフデータに含まれるノードのうち、一の未処理ノードを対象ノード（処理ノード）として選択する。例えば、選択部１３２は、第１グラフデータＧＲ１１からノードＮ１を対象ノードとして選択する。例えば、選択部１３２は、処理ノードを始点とする出力エッジのうち、距離が短い方から第１閾値の数のエッジを選択する。
【００８４】
例えば、選択部１３２は、ノードＮ１を始点とする出力エッジのうち、距離（長さ）が短い方から第１閾値の数（２本）のエッジを選択する。例えば、選択部１３２は、図５中の第１グラフデータ記憶部１２２に記憶されたグラフデータに基づいて、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第１閾値の数（２本）のエッジを選択する。例えば、選択部１３２は、距離が短い方から第１閾値「２」個のエッジ、すなわち順位が１位及び２位のエッジを選択する。例えば、選択部１３２は、ノードＮ１の出力エッジのうち、最短のエッジＥ１２と、エッジＥ１２の次に距離が短いエッジＥ１１とを選択する。
【００８５】
選択部１３２は、処理ノードを始点とする出力エッジのうち、距離が短い方から第２閾値の数のエッジを選択する。例えば、選択部１３２は、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。例えば、選択部１３２は、図５中の第１グラフデータ記憶部１２２に記憶されたグラフデータに基づいて、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。例えば、選択部１３２は、距離が短い方から第２閾値「３」個のエッジ、すなわち順位が１位〜３位のエッジを選択する。例えば、選択部１３２は、ノードＮ１の出力エッジのうち、最短のエッジＥ１２と、エッジＥ１２の次に距離が短いエッジＥ１１と、エッジＥ１１の次に距離が短いエッジＥ１３とを選択する。
【００８６】
図１の例では、選択部１３２は、第１グラフデータＧＲ１１からノードＮ２を対象ノードとして選択する。例えば、選択部１３２は、ノードＮ２を始点とする出力エッジのうち、距離が短い方から第１閾値の数（２本）のエッジを選択する。例えば、選択部１３２は、距離が短い方から第１閾値「２」個のエッジ、すなわち順位が１位及び２位のエッジを選択する。例えば、選択部１３２は、ノードＮ２の出力エッジのうち、最短のエッジＥ２２と、エッジＥ２２の次に距離が短いエッジＥ２４とを選択する。
【００８７】
例えば、選択部１３２は、ノードＮ２を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。例えば、選択部１３２は、図５中の第１グラフデータ記憶部１２２に記憶されたグラフデータに基づいて、ノードＮ２を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）のエッジを選択する。例えば、選択部１３２は、距離が短い方から第２閾値「３」個のエッジ、すなわち順位が１位〜３位のエッジを選択する。例えば、選択部１３２は、ノードＮ２の出力エッジのうち、最短のエッジＥ２２と、エッジＥ２２の次に距離が短いエッジＥ２４と、エッジＥ２４の次に距離が短いエッジＥ２１とを選択する。
【００８８】
（生成部１３３）
生成部１３３は、各種情報を生成する。例えば、生成部１３３は、記憶部１２０に記憶された情報（データ）から各種情報（データ）を生成する。例えば、生成部１３３は、オブジェクト情報記憶部１２１と、第１グラフデータ記憶部１２２から各種情報を生成する。例えば、生成部１３３は、第１グラフデータから第２グラフデータを生成する。
【００８９】
例えば、生成部１３３は、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、各ノードを終点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、各ノードに連結することによりグラフデータを生成する。例えば、生成部１３３は、一のノードから対象ノードへ他のノードを経由することにより到達可能なルートであって、ルートに含まれる他のノードの数、または、対象ノードと一のノードとの距離と、他のノードと一のノードとの距離との比較が所定の条件を満たすルートがある場合、一のノードを始点ノードとし、対象ノードを終点ノードとする一のノードの出力エッジを削除することにより、グラフデータを生成する。
【００９０】
例えば、生成部１３３は、有向エッジ群に基づいて、出力エッジと入力エッジとを含むグラフデータを生成する。例えば、生成部１３３は、有向エッジ群から各有向エッジが連結するノード間の距離に基づいて、有向エッジを出力エッジとして選択することにより、グラフデータを生成する。例えば、生成部１３３は、有向エッジ群のうち、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする有向エッジを出力エッジとして選択することによりグラフデータを生成する。
【００９１】
例えば、生成部１３３は、有向エッジ群から各有向エッジが連結するノード間の距離に基づいて選択した有向エッジの向きを反転させた入力エッジを生成することにより、グラフデータを生成する。例えば、生成部１３３は、有向エッジ群のうち、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを終点ノードとする有向エッジを選択し、選択した有向エッジの向きを反転させた入力エッジを生成することにより、グラフデータを生成する。
【００９２】
例えば、生成部１３３は、一のノードから対象ノードへ他のノードを経由することにより到達可能な第１ルートであって、第１ルートに含まれる他のノードの数、または、対象ノードと一のノードとの距離と、他のノードと一のノードとの距離との比較が所定の条件を満たす第１ルートがある場合、一のノードを始点ノードとし、対象ノードを終点ノードとする第２ルートであって、一のノードから対象ノードへ直接到達可能な第２ルートを含まない枝刈後有向エッジに基づいて、出力エッジと入力エッジとを含むグラフデータを生成する。
【００９３】
例えば、生成部１３３は、有向エッジのうち、第２ルートに対応する有向エッジを削除することにより枝刈後有向エッジを生成する。例えば、生成部１３３は、第１閾値及び第２閾値を変動させた各組合せの検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成する。
【００９４】
例えば、生成部１３３は、各組合せにおける適合率を含む検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成する。例えば、生成部１３３は、各組合せにおける検索時間を含む検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成する。例えば、生成装置１００は、図１中のノードＮ１〜Ｎ８に示すような複数のノードを含むノード群を取得し、各ノードをエッジで連結した第２グラフデータＧＲ１２を生成する。
【００９５】
図１の例では、生成部１３３は、第１グラフデータに含まれるノードを有する第２グラフデータを生成する。例えば、生成部１３３は、第１グラフデータからエッジを除くことにより、ノードＮ１〜Ｎ８に示すような複数のノードのみを有する第２グラフデータＧＲ１２を生成する。例えば、生成部１３３は、第１グラフデータＧＲ１１からノードのみを有する第２グラフデータＧＲ１２−１を生成する。
【００９６】
例えば、生成部１３３は、選択したエッジを第２グラフデータに追加する。図１の例では、生成部１３３は、エッジＥ１２、Ｅ１１を第２グラフデータに追加する。例えば、生成部１３３は、ノードＮ１からの出力エッジであるエッジＥ１２、Ｅ１１を第２グラフデータに追加する。例えば、生成部１３３は、ノードＮ３への入力エッジであるエッジＥ１２と、ノードＮ２への入力エッジであるエッジＥ１１とを第２グラフデータに追加する。図１の例では、生成部１３３は、第２グラフデータＧＲ１２−２を生成する。
【００９７】
例えば、生成部１３３は、選択したエッジの向きを反転したエッジを第２グラフデータに追加する。図１の例では、生成部１３３は、エッジＥ１２、Ｅ１１、Ｅ１３の向きを反転したエッジＥ１５、Ｅ１６、Ｅ１７を第２グラフデータに追加する。例えば、生成部１３３は、ノードＮ１への入力エッジであるエッジＥ１５、Ｅ１６、Ｅ１７を第２グラフデータに追加する。例えば、生成部１３３は、ノードＮ３からの出力エッジであるエッジＥ１５と、ノードＮ２からの出力エッジであるエッジＥ１６と、ノードＮ４からの出力エッジであるエッジＥ１７とを第２グラフデータに追加する。図１の例では、生成部１３３は、第２グラフデータＧＲ１２−３を生成する。
【００９８】
例えば、生成部１３３は、選択したエッジを第２グラフデータに追加する。図１の例では、生成部１３３は、第１閾値に基づいて選択したエッジＥ２２、Ｅ２４を第２グラフデータに追加する。例えば、生成部１３３は、ノードＮ２からの出力エッジであるエッジＥ２２、Ｅ２４を第２グラフデータに追加する。
【００９９】
例えば、生成部１３３は、第２閾値に基づいて選択したエッジの向きを反転したエッジを第２グラフデータに追加する。図１の例では、生成装置１００は、エッジＥ２２、Ｅ２４、Ｅ２１の向きを反転したエッジＥ２５、Ｅ２６、Ｅ２７を第２グラフデータに追加する。例えば、生成部１３３は、ノードＮ２への入力エッジであるエッジＥ２５、Ｅ２６、Ｅ２７を第２グラフデータに追加する。図１の例では、生成部１３３は、第２グラフデータＧＲ１２−４を生成する。
【０１００】
（提供部１３４）
提供部１３４は、各種情報を提供する。例えば、提供部１３４は、端末装置１０や情報提供装置５０に各種情報を提供する。例えば、提供部１３４は、クエリに対応するオブジェクトＩＤを検索結果として提供する。例えば、提供部１３４は、選択部１３２により選択されたオブジェクトＩＤを情報提供装置５０へ提供する。提供部１３４は、選択部１３２により選択されたオブジェクトＩＤをクエリに対応するベクトルを示す情報として情報提供装置５０に提供する。
【０１０１】
また、提供部１３４は、生成部１３３により生成された第２グラフデータを外部の情報処理装置へ提供してもよい。
【０１０２】
〔４．生成処理のフロー〕
次に、図７を用いて、実施形態に係る生成システム１による生成処理の手順について説明する。図７は、実施形態に係る生成処理の一例を示すフローチャートである。
【０１０３】
図７に示すように、生成装置１００は、第１グラフデータを取得する（ステップＳ１０１）。例えば、生成装置１００は、第１グラフデータ記憶部１２２から第１グラフデータを取得する。図１の例では、生成装置１００は、第１グラフデータＧＲ１１を取得する。
【０１０４】
そして、生成装置１００は、第１グラフデータに含まれるノードを有する第２グラフデータを生成する（ステップＳ１０２）。例えば、生成装置１００は、第１グラフデータからエッジを除くことにより、ノードのみを有する第２グラフデータを生成する。図１の例では、生成装置１００は、第１グラフデータＧＲ１１からノードのみを有する第２グラフデータＧＲ１２−１を生成する。
【０１０５】
そして、生成装置１００は、第１グラフデータに含まれるノードのうち、一の未処理ノードを処理ノードとして選択する（ステップＳ１０３）。例えば、生成装置１００は、第１グラフデータＧＲ１１からノードＮ１を処理ノード（対象ノード）として選択する。
【０１０６】
そして、生成装置１００は、処理ノードを始点とする出力エッジのうち、距離が短い方から第１閾値の数の出力エッジを第２グラフデータに追加する（ステップＳ１０４）。例えば、生成装置１００は、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第１閾値の数（２本）の出力エッジであるエッジＥ１２、Ｅ１１を第２グラフデータに追加する。
【０１０７】
そして、生成装置１００は、処理ノードを始点とする出力エッジのうち、距離が短い方から第２閾値の数の出力エッジの向きを反転した入力エッジを第２グラフデータに追加する（ステップＳ１０５）。例えば、生成装置１００は、ノードＮ１を始点とする出力エッジのうち、距離が短い方から第２閾値の数（３本）の出力エッジであるエッジＥ１２、Ｅ１１、Ｅ１３の向きを反転した入力エッジであるエッジＥ１５、Ｅ１６、Ｅ１７を第２グラフデータに追加する。
【０１０８】
そして、生成装置１００は、未処理ノードが有る場合（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０３に戻って処理を繰り返す。また、生成部１３３は、未処理ノードが無い場合（ステップＳ１０６：Ｎｏ）、処理を終了する。
【０１０９】
〔５．ショートカットエッジ削除〕
次に、図８を用いて、実施形態に係る生成システム１によるショートカットエッジの削除に関する生成処理の手順について説明する。図８は、実施形態に係る生成処理の一例を示すフローチャートである。
【０１１０】
図８に示すように、生成装置１００は、グラフデータを取得する（ステップＳ２０１）。例えば、生成装置１００は、第２グラフデータを取得する。また、例えば、生成装置１００は、第１グラフデータを取得する。
【０１１１】
そして、生成装置１００は、グラフデータ内の所定の条件を満たすショートカットエッジを削除する（ステップＳ２０２）。例えば、生成装置１００は、第２グラフデータ内の所定の条件を満たすショートカットエッジを削除する。また、例えば、生成装置１００は、第１グラフデータ内の所定の条件を満たすショートカットエッジを削除する。例えば、生成装置１００は、全エッジを対象として、ショットカットエッジの条件を満たすかどうかの判定をすることにより、ショットカットエッジの削除に関する処理を行う。例えば、生成装置１００は、短いエッジ順に全ノードに対して、ショットカットエッジの削除に関する処理を行ってもよい。例えば、生成装置１００は、全ノードのうち、より短いエッジを有するノードから順にショットカットエッジの削除に関する処理を行ってもよい。例えば、生成装置１００は、全ノードのうち、最も短いエッジを有するノードを対象としてショットカットエッジの削除に関する処理を行い、次に全ノードのうち、２番目に短いエッジを有するノードを対象としてショットカットエッジの削除に関する処理を行ってもよい。このようなショットカットエッジの削除に関する処理により、生成装置１００は、検索の性能を維持しつつ、ショットカットエッジの条件を満たすエッジを削除し、エッジ数を適切に削減することができる。このように、生成装置１００は、ショートカットエッジの条件を満たすエッジを含まないグラフデータを生成することができる。すなわち、上述した生成装置１００によるショートカットエッジの削除に関する生成処理は、処理対象となったグラフデータから、ショートカットエッジの条件を満たすエッジを含まない新たなグラフデータを生成する処理であるとも言える。例えば、生成装置１００は、第１グラフデータから、ショートカットエッジの条件を満たすエッジを含まない新たな第１グラフデータを生成してもよい。また、例えば、生成装置１００は、第２グラフデータから、ショートカットエッジの条件を満たすエッジを含まない新たな第２グラフデータを生成してもよい。
【０１１２】
〔６．ショートカットエッジ削除の例〕
ここで、図９及び図１０を用いて、グラフデータからショートカットエッジを削除する場合を説明する。なお、図１と同様の点については適宜説明を省略する。例えば、図９及び図１０に示すベクトル空間である空間情報ＶＳ１は、図１の空間情報ＶＳ１と同様である。また、例えば、図９に示す第２グラフデータＧＲ１２は、図１に示す第２グラフデータＧＲ１２と同様であり、図１０に示す第１グラフデータＧＲ１１は、図１に示す第１グラフデータＧＲ１１と同様である。
【０１１３】
また、図９及び図１０において、ショートカットエッジを削除する条件は、一のノードから対象ノードへ他のノードを経由することにより到達可能なルート（以下、「第１ルート」ともいう）において、他のノードの数が「１」であることを条件（以下、「第１条件」ともいう）とするものとする。すなわち、第１条件は、第１ルートに含まれる他のノードの数が２以上でないことを示す条件である。
【０１１４】
また、図９及び図１０において、ショートカットエッジを削除する条件は、一のノードから対象ノードへ直接到達可能なルート（以下、「第２ルート」ともいう）の距離が、第１ルート中の他のノードから連結される対象ノードへの距離よりも長いことを条件（以下、「第２条件」ともいう）とするものとする。すなわち、第２条件は、第２ルート、すなわち一のノードから対象ノードへの出力エッジの距離（長さ）が、第１ルートに含まれる他のノードから対象ノードへの出力エッジの距離（長さ）よりも長いことを示す条件である。以下では、上記の第１条件及び第２条件を満たすことを、ショートカットエッジの削除の条件とするものとする。以下、第１条件及び第２条件を併せて「ショートカット条件」と記載する場合がある。
【０１１５】
図９は、実施形態に係る第２グラフデータのエッジの削除の一例を示す図である。図１０は、実施形態に係る第１グラフデータのエッジの削除の一例を示す図である。すなわち、図９では、第２グラフデータを対象として、ショートカットエッジの削除を行い、図１０では、第１グラフデータを対象として、ショートカットエッジの削除を行う。このように、ショートカットエッジは、第２グラフデータ及び第１グラフデータのいずれにおいて削除を行ってもよい。なお、ショートカットエッジの削除後のグラフデータを「枝刈後グラフデータ」と記載し、ショートカットエッジの削除後のエッジを「枝刈後エッジ」と記載する場合がある。
【０１１６】
まず、図９を用いて第２グラフデータを対象としたショートカットエッジの削除について説明する。まず、一のノードがノードＮ１０であり対象ノードがノードＮ１３である場合を説明する。図９において、ノードＮ１０は、ノードＮ１３への出力エッジであるエッジＥ１００が連結される。また、ノードＮ１０は、ノードＮ１１への出力エッジであるエッジＥ１０１が連結される。また、ノードＮ１１は、ノードＮ１２への出力エッジであるエッジＥ１０２が連結される。また、ノードＮ１２は、ノードＮ１３への出力エッジであるエッジＥ１０３が連結される。
【０１１７】
このように、第２グラフデータＧＲ１２は、ノードＮ１０からノードＮ１３へ直接到達可能な第２ルート（エッジＥ１００）を含む。また、第２グラフデータＧＲ１２においては、ノードＮ１０から、ノードＮ１１、ノードＮ１２と辿ることにより、ノードＮ１３へ到達可能な第１ルート（エッジＥ１０１→エッジＥ１０２→エッジＥ１０３）を含む。
【０１１８】
生成装置１００は、ショートカット条件を判定する（ステップＳ２１）。具体的には、生成装置１００は、ノードＮ１０についてショートカット条件を判定する。ここで、上述したように、ノードＮ１０からの第１ルートは、２以上の他のノード（ノードＮ１１、ノードＮ１２）を含むため、第１条件を満たさない。そのため、生成装置１００は、ノードＮ１０についてショートカット条件を満たさないと判定し、ショートカットエッジの削除無と判定する。
【０１１９】
次に、一のノードがノードＮ１４であり対象ノードがノードＮ１６である場合を説明する。図９において、ノードＮ１４は、ノードＮ１６への出力エッジであるエッジＥ１０４が連結される。また、ノードＮ１４は、ノードＮ１５への出力エッジであるエッジＥ１０５が連結される。また、ノードＮ１５は、ノードＮ１６への出力エッジであるエッジＥ１０６が連結される。また、図９中のエッジ一覧ＥＬ２１に示すように、エッジＥ１０４〜Ｅ１０６の距離（長さ）は、距離Ｄ１０４〜Ｄ１０６であるものとする。
【０１２０】
このように、第２グラフデータＧＲ１２は、ノードＮ１４からノードＮ１６へ直接到達可能な第２ルート（エッジＥ１０４）を含む。また、第２グラフデータＧＲ１２においては、ノードＮ１４から、ノードＮ１５を辿ることにより、ノードＮ１６へ到達可能な第１ルート（エッジＥ１０５→エッジＥ１０６）を含む。
【０１２１】
生成装置１００は、ショートカット条件を判定する（ステップＳ２２）。具体的には、生成装置１００は、ノードＮ１４についてショートカット条件を判定する。ここで、上述したように、ノードＮ１４からの第１ルートは、１個の他のノード（ノードＮ１５）のみを含むため、第１条件を満たす。また、図９に示すように、ノードＮ１４からノードＮ１６への出力エッジであるエッジＥ１０４の距離Ｄ１０４が、第１ルートに含まれる他のノードＮ１５からノードＮ１６への出力エッジであるエッジＥ１０６の距離Ｄ１０６も長いため、第２条件を満たす。そのため、生成装置１００は、ノードＮ１４についてショートカット条件を満たすと判定し、ショートカットエッジであるエッジＥ１０４を削除する（ステップＳ２３）。例えば、生成装置１００は、第２グラフデータ記憶部１２３に記憶された第２グラフデータからエッジＥ１０４を削除する。図９の例では、生成装置１００は、エッジＥ１０４が削除された枝刈後エッジを含む第２グラフデータＧ１２−５のような枝刈後グラフデータを生成する。これにより、生成装置１００は、エッジ数の増大を抑制することができる。
【０１２２】
次に、一のノードがノードＮ１７であり対象ノードがノードＮ１９である場合を説明する。図９において、ノードＮ１７は、ノードＮ１９への出力エッジであるエッジＥ１０７が連結される。また、ノードＮ１７は、ノードＮ１８への出力エッジであるエッジＥ１０８が連結される。また、ノードＮ１８は、ノードＮ１９への出力エッジであるエッジＥ１０９が連結される。また、図９中のエッジ一覧ＥＬ２２に示すように、エッジＥ１０７〜Ｅ１０９の距離（長さ）は、距離Ｄ１０７〜Ｄ１０９であるものとする。
【０１２３】
このように、第２グラフデータＧＲ１２は、ノードＮ１７からノードＮ１９へ直接到達可能な第２ルート（エッジＥ１０７）を含む。また、第２グラフデータＧＲ１２においては、ノードＮ１７から、ノードＮ１８を辿ることにより、ノードＮ１９へ到達可能な第１ルート（エッジＥ１０８→エッジＥ１０９）を含む。
【０１２４】
生成装置１００は、ショートカット条件を判定する（ステップＳ２４）。具体的には、生成装置１００は、ノードＮ１７についてショートカット条件を判定する。ここで、上述したように、ノードＮ１７からの第１ルートは、１個の他のノード（ノードＮ１８）のみを含むため、第１条件を満たす。また、図９に示すように、ノードＮ１７からノードＮ１９への出力エッジであるエッジＥ１０７の距離Ｄ１０７が、第１ルートに含まれる他のノードＮ１８からノードＮ１９への出力エッジであるエッジＥ１０９の距離Ｄ１０９も短いため、第２条件を満たさない。そのため、生成装置１００は、ノードＮ１７についてショートカット条件を満たさないと判定し、ショートカットエッジの削除無と判定する。
【０１２５】
次に、図１０を用いて第１グラフデータを対象としたショートカットエッジの削除について説明する。例えば、一のノードがノードＮ１であり対象ノードがノードＮ３である場合のショートカットエッジの削除について説明する。
【０１２６】
なお、図１０に示す第１グラフデータＧＲ１１−１、ＧＲ１１−２は、グラフデータの生成過程を模式的に示す図であり、第１グラフデータＧＲ１１−１、ＧＲ１１−２は、ショートカットエッジの削除の前後の状態の第１グラフデータＧＲ１１を示す。また、以下では、第１グラフデータＧＲ１１−１、ＧＲ１１−２について、特に区別なく説明する場合には、第１グラフデータＧＲ１１と記載する。
【０１２７】
図１０において、ノードＮ１は、ノードＮ３への出力エッジであるエッジＥ１２が連結される。また、ノードＮ１は、ノードＮ２への出力エッジであるエッジＥ１１が連結される。また、ノードＮ２は、ノードＮ３への出力エッジであるエッジＥ２１が連結される。また、図１０中のエッジ一覧ＥＬ３１に示すように、エッジＥ１１〜Ｅ１４、Ｅ２１、Ｅ２２の距離（長さ）は、距離Ｄ１１〜Ｄ１４、Ｄ２１、Ｄ２２であるものとする。
【０１２８】
このように、第１グラフデータＧＲ１１−１は、ノードＮ１からノードＮ３へ直接到達可能な第２ルート（エッジＥ１２）を含む。また、第１グラフデータＧＲ１１−１においては、ノードＮ１から、ノードＮ２を辿ることにより、ノードＮ３へ到達可能な第１ルート（エッジＥ１１→エッジＥ２１）を含む。
【０１２９】
生成装置１００は、ショートカット条件を判定する（ステップＳ３１）。具体的には、生成装置１００は、ノードＮ１についてショートカット条件を判定する。ここで、上述したように、ノードＮ１からの第１ルートは、１個の他のノード（ノードＮ２）のみを含むため、第１条件を満たす。また、図１０に示すように、ノードＮ１からノードＮ３への出力エッジであるエッジＥ１２の距離Ｄ１２が、第１ルートに含まれる他のノードＮ２からノードＮ３への出力エッジであるエッジＥ２１の距離Ｄ２１も長いため、第２条件を満たす。そのため、生成装置１００は、ノードＮ１についてショートカット条件を満たすと判定し、ショートカットエッジであるエッジＥ１２を削除する（ステップＳ３２）。例えば、生成装置１００は、第１グラフデータ記憶部１２２に記憶された第１グラフデータからエッジＥ１２を削除する。図１０の例では、生成装置１００は、エッジＥ１２が削除された枝刈後エッジを含む第１グラフデータＧ１１−２のような枝刈後グラフデータを生成する。これにより、生成装置１００は、エッジ数の増大を抑制した第１グラフデータを生成し、その第１グラフデータを対象として第２グラフデータを生成することができる。
【０１３０】
〔７．第１閾値、第２閾値の選択〕
図１の例では、第１閾値を「２」とし、第２閾値を「３」とする場合を示したが、第１閾値や第２閾値には種々の値が選択されてもよい。例えば、生成装置１００は、第１閾値や第２閾値を、生成した第２グラフデータによる検索の性能に基づいて選択してもよい。この点について図１１を用いて説明する。図１１は、実施形態に係る閾値の選択に用いる情報を示す図である。
【０１３１】
図１１は、横軸を検索の適合率（precision）とし、縦軸を検索時間（query  time）とした場合のグラフを示す。このように、グラフデータを用いた検索においては、適合率を高めると、検索時間が増大する関係となる。例えば、生成装置１００は、所定の第１値ｐ１と所定の第２値ｐ２との間の検索時間の平均の大小に基づいて、第１閾値及び第２閾値を決定してもよい。なお、第１値ｐ１と所定の第２値ｐ２は、検索において要求される精度等に応じて適宜設定されてもよい。
【０１３２】
例えば、生成装置１００は、第１値ｐ１と所定の第２値ｐ２間の領域ＡＲ１１のサイズ（面積）を第２値ｐ２と第１値ｐ１との差分で除算することにより算出してもよい。例えば、生成装置１００は、台形公式等の種々の従来技術を適宜用いて、検索時間の平均を算出してもよい。例えば、生成装置１００は、種々の値を第１閾値とし、種々の値を第２閾値とした場合の各組み合わせにおいて生成した第２グラフデータを用いて検索を行った場合の検索時間の平均を比較し、最も検索時間の平均が小さくなる第１閾値と第２閾値との組み合わせを用いた第２グラフデータを、検索に用いる第２グラフデータに決定してもよい。
【０１３３】
〔８．検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図１２を一例として説明する。図１２は、グラフデータを用いた検索処理の一例を示すフローチャートである。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、以下では、生成装置１００が検索処理を行うものとして説明するが、検索処理は他の装置により行われてもよい。
【０１３４】
ここでは、近傍オブジェクト集合Ｎ（Ｇ，ｙ）は、ノードｙに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「Ｇ」は、所定のグラフデータ（例えば、第２グラフデータＧＲ１２等）であってもよい。例えば、生成装置１００は、ｋ近傍検索処理を実行する。
【０１３５】
例えば、生成装置１００は、超球の半径ｒを∞（無限大）に設定し（ステップＳ３００）、既存のオブジェクト集合から部分集合Ｓを抽出する（ステップＳ３０１）。例えば、生成装置１００は、ルートノードとして選択されたオブジェクト（ノード）を部分集合Ｓとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップＳ３０１において抽出されたオブジェクト集合Ｓに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Ｒの初期集合にも含められる。
【０１３６】
次に、生成装置１００は、オブジェクト集合Ｓに含まれるオブジェクトの中で、検索クエリオブジェクトをｙとするとオブジェクトｙとの距離が最も短いオブジェクトを抽出し、オブジェクトｓとする（ステップＳ３０２）。例えば、生成装置１００は、ルートノードとして選択されたオブジェクト（ノード）のみがSの要素の場合には、結果的にルートノードがオブジェクトｓとして抽出される。次に、生成装置１００は、オブジェクトｓをオブジェクト集合Ｓから除外する（ステップＳ３０３）。
【０１３７】
次に、生成装置１００は、オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えるか否かを判定する（ステップＳ３０４）。ここで、εは拡張要素であり、ｒ（１＋ε）は、探索範囲（この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる）の半径を示す値である。オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超える場合、生成装置１００は、オブジェクト集合Ｒをオブジェクトｙの近傍オブジェクト集合として出力し（ステップＳ３０５）、処理を終了する。
【０１３８】
オブジェクトｓと検索クエリオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えない場合、生成装置１００は、オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトの中からオブジェクト集合Ｃに含まれないオブジェクトを一つ選択し、選択したオブジェクトｕを、オブジェクト集合Ｃに格納する（ステップＳ３０６）。オブジェクト集合Ｃは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
【０１３９】
次に、生成装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下であるか否かを判定する（ステップＳ３０７）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下である場合、生成装置１００は、オブジェクトｕをオブジェクト集合Ｓに追加する（ステップＳ３０８）。
【０１４０】
次に、生成装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下であるか否かを判定する（ステップＳ３０９）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒを超える場合、生成装置１００は、ステップＳ３１５の判定（処理）を行う。
【０１４１】
オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下である場合、生成装置１００は、オブジェクトｕをオブジェクト集合Ｒに追加する（ステップＳ３１０）。そして、生成装置１００は、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超えるか否かを判定する（ステップＳ３１１）。所定数ｋｓは、任意に定められる自然数である。例えば、ｋｓ＝２であってもよい。
【０１４２】
オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超える場合、生成装置１００は、オブジェクト集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトを、オブジェクト集合Ｒから除外する（ステップＳ３１２）。
【０１４３】
次に、生成装置１００は、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致するか否かを判定する（ステップＳ３１３）。オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致する場合、生成装置１００は、オブジェクト集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトと、オブジェクトｙとの距離を、新たなｒに設定する（ステップＳ３１４）。
【０１４４】
そして、生成装置１００は、オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えたか否かを判定する（ステップＳ３１５）。オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えていない場合、生成装置１００は、ステップＳ３０６に戻って処理を繰り返す。
【０１４５】
オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えた場合生成装置１００は、オブジェクト集合Ｓが空集合であるか否かを判定する（ステップＳ３１６）。オブジェクト集合Ｓが空集合でない場合、生成装置１００は、ステップＳ３０２に戻って処理を繰り返す。また、オブジェクト集合Ｓが空集合である場合、生成装置１００は、オブジェクト集合Ｒを出力し、処理を終了する（ステップＳ３１７）。例えば、生成装置１００は、オブジェクト集合Ｒに含まれるオブジェクト（ノード）を検索クエリ（入力オブジェクトｙ）に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
【０１４６】
〔９．効果〕
上述してきたように、実施形態に係る生成装置１００は、取得部１３１と、生成部１３３とを有する。取得部１３１は、データ検索の対象となる複数のノードを取得する。生成部１３３は、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、各ノードを終点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、各ノードに連結することによりグラフデータ（実施形態においては「第２グラフデータＧＲ１２」。以下同じ）を生成する。
【０１４７】
このように、実施形態に係る生成装置１００は、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、各ノードを終点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、各ノードに連結することにより第２グラフデータＧＲ１２を生成することができ、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１４８】
また、実施形態に係る生成装置１００において、生成部１３３は、一のノードから対象ノードへ他のノードを経由することにより到達可能なルートであって、ルートに含まれる他のノードの数、または、対象ノードと一のノードとの距離と、他のノードと一のノードとの距離との比較が所定の条件を満たすルートがある場合、一のノードを始点ノードとし、対象ノードを終点ノードとする一のノードの出力エッジを削除することにより、グラフデータを生成する。
【０１４９】
このように、実施形態に係る生成装置１００は、ショートカットエッジの条件を満たすルートがある場合、一のノードを始点ノードとし、対象ノードを終点ノードとする一のノードの出力エッジを削除することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１５０】
また、実施形態に係る生成装置１００において、取得部１３１は、複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群（実施形態においては「第１グラフデータＧＲ１１の有向エッジ群」。以下同じ）を取得する。生成部１３３は、有向エッジ群に基づいて、出力エッジと入力エッジとを含むグラフデータを生成する。
【０１５１】
このように、実施形態に係る生成装置１００は、有向エッジ群に基づいて、出力エッジと入力エッジとを含むグラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１５２】
また、実施形態に係る生成装置１００において、生成部１３３は、有向エッジ群から各有向エッジが連結するノード間の距離に基づいて、有向エッジを出力エッジとして選択することにより、グラフデータを生成する。
【０１５３】
このように、実施形態に係る生成装置１００は、有向エッジ群から各有向エッジが連結するノード間の距離に基づいて、有向エッジを出力エッジとして選択して、グラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１５４】
また、実施形態に係る生成装置１００において、生成部１３３は、有向エッジ群のうち、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする有向エッジを出力エッジとして選択することによりグラフデータを生成する。
【０１５５】
このように、実施形態に係る生成装置１００は、有向エッジ群のうち、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする有向エッジを出力エッジとして選択してグラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１５６】
また、実施形態に係る生成装置１００において、生成部１３３は、有向エッジ群から各有向エッジが連結するノード間の距離に基づいて選択した有向エッジの向きを反転させた入力エッジを生成することにより、グラフデータを生成する。
【０１５７】
このように、実施形態に係る生成装置１００は、有向エッジ群から各有向エッジが連結するノード間の距離に基づいて選択した有向エッジの向きを反転させた入力エッジを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１５８】
また、実施形態に係る生成装置１００において、生成部１３３は、有向エッジ群のうち、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを終点ノードとする有向エッジを選択し、選択した有向エッジの向きを反転させた入力エッジを生成することにより、グラフデータを生成する。
【０１５９】
このように、実施形態に係る生成装置１００は、有向エッジ群のうち、各ノードを始点ノードとし、各ノードとの距離が短い方から順に第２閾値の数の他のノードを終点ノードとする有向エッジを選択し、選択した有向エッジの向きを反転させた入力エッジを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１６０】
また、実施形態に係る生成装置１００において、生成部１３３は、一のノードから対象ノードへ他のノードを経由することにより到達可能な第１ルートであって、第１ルートに含まれる他のノードの数、または、対象ノードと一のノードとの距離と、他のノードと一のノードとの距離との比較が所定の条件を満たす第１ルートがある場合、一のノードを始点ノードとし、対象ノードを終点ノードとする第２ルートであって、一のノードから対象ノードへ直接到達可能な第２ルートを含まない枝刈後有向エッジ（実施形態においては「枝刈後エッジ」。以下同じ）に基づいて、出力エッジと入力エッジとを含むグラフデータを生成する。
【０１６１】
このように、実施形態に係る生成装置１００は、一のノードから対象ノードへ他のノードを経由することにより到達可能な第１ルートであって、第１ルートに含まれる他のノードの数、または、対象ノードと一のノードとの距離と、他のノードと一のノードとの距離との比較が所定の条件を満たす第１ルートがある場合、一のノードを始点ノードとし、対象ノードを終点ノードとする第２ルートであって、一のノードから対象ノードへ直接到達可能な第２ルートを含まない枝刈後有向エッジに基づいて、出力エッジと入力エッジとを含むグラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１６２】
また、実施形態に係る生成装置１００において、生成部１３３は、有向エッジのうち、第２ルートに対応する有向エッジを削除することにより枝刈後有向エッジを生成する。
【０１６３】
このように、実施形態に係る生成装置１００は、有向エッジのうち、第２ルートに対応する有向エッジを削除することにより枝刈後有向エッジを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１６４】
また、実施形態に係る生成装置１００において、生成部１３３は、第１閾値及び第２閾値を変動させた各組合せの検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成する。
【０１６５】
このように、実施形態に係る生成装置１００は、第１閾値及び第２閾値を変動させた各組合せの検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１６６】
また、実施形態に係る生成装置１００において、生成部１３３は、各組合せにおける適合率を含む検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成する。
【０１６７】
このように、実施形態に係る生成装置１００は、各組合せにおける適合率を含む検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１６８】
また、実施形態に係る生成装置１００において、生成部１３３は、各組合せにおける検索時間を含む検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成する。
【０１６９】
このように、実施形態に係る生成装置１００は、各組合せにおける検索時間を含む検索結果に基づいて決定される第１閾値及び第２閾値を用いて、グラフデータを生成することにより、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
【０１７０】
〔１０．ハードウェア構成〕
上述してきた実施形態に係る生成装置１００は、例えば図１３に示すような構成のコンピュータ１０００によって実現される。図１３は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０１７１】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０１７２】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０１７３】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０１７４】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０１７５】
例えば、コンピュータ１０００が実施形態に係る生成装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０１７６】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１７７】
〔１１．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０１７８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１７９】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０１８０】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０１８１】
１  生成システム
１００  生成装置
１２１  オブジェクト情報記憶部
１２２  第１グラフデータ記憶部
１２３  第２グラフデータ記憶部
１３０  制御部
１３１  取得部
１３２  選択部
１３３  生成部
１３４  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2018195156.tif 000003
【図２】
2018195156.tif 000004
【図３】
2018195156.tif 000005
【図４】
2018195156.tif 000006
【図５】
2018195156.tif 000007
【図６】
2018195156.tif 000008
【図７】
2018195156.tif 000009
【図８】
2018195156.tif 000010
【図９】
2018195156.tif 000011
【図１０】
2018195156.tif 000012
【図１１】
2018195156.tif 000013
【図１２】
2018195156.tif 000014
【図１３】
2018195156.tif 000015
【手続補正書】
【提出日】平成29年12月22日(2017.12.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ検索の対象となる複数のノードを取得する取得部と、
各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成部と、
を備えることを特徴とする生成装置。
【請求項２】
前記生成部は、
一のノードから対象ノードへ他のノードを経由することにより到達可能なルートであって、前記ルートに含まれる他のノードの数、または、前記対象ノードと前記一のノードとの距離と、前記他のノードと前記一のノードとの距離との比較が所定の条件を満たすルートがある場合、前記一のノードを始点ノードとし、前記対象ノードを終点ノードとする前記一のノードの出力エッジを削除することにより、前記グラフデータを生成する
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記取得部は、
前記複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得し、
前記生成部は、
前記有向エッジ群に基づいて、前記出力エッジと前記入力エッジとを含む前記グラフデータを生成する
ことを特徴とする請求項１または請求項２に記載の生成装置。
【請求項４】
前記生成部は、
前記有向エッジ群から各有向エッジが連結するノード間の距離に基づいて、有向エッジを前記出力エッジとして選択することにより、前記グラフデータを生成する
ことを特徴とする請求項３に記載の生成装置。
【請求項５】
前記生成部は、
前記有向エッジ群のうち、前記各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に前記第１閾値の数の他のノードを終点ノードとする有向エッジを前記出力エッジとして選択することにより前記グラフデータを生成する
ことを特徴とする請求項４に記載の生成装置。
【請求項６】
前記生成部は、
前記有向エッジ群から各有向エッジが連結するノード間の距離に基づいて選択した有向エッジの向きを反転させた前記入力エッジを生成することにより、前記グラフデータを生成する
ことを特徴とする請求項３〜５のいずれか１項に記載の生成装置。
【請求項７】
前記生成部は、
前記有向エッジ群のうち、前記各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に前記第２閾値の数の他のノードを終点ノードとする有向エッジを選択し、選択した有向エッジの向きを反転させた前記入力エッジを生成することにより、前記グラフデータを生成する
ことを特徴とする請求項６に記載の生成装置。
【請求項８】
前記生成部は、
一のノードから対象ノードへ他のノードを経由することにより到達可能な第１ルートであって、前記第１ルートに含まれる他のノードの数、または、前記対象ノードと前記一のノードとの距離と、前記他のノードと前記一のノードとの距離との比較が所定の条件を満たす第１ルートがある場合、前記一のノードを始点ノードとし、前記対象ノードを終点ノードとする第２ルートであって、前記一のノードから前記対象ノードへ直接到達可能な第２ルートを含まない枝刈後有向エッジに基づいて、前記出力エッジと前記入力エッジとを含む前記グラフデータを生成する
ことを特徴とする請求項３〜７のいずれか１項に記載の生成装置。
【請求項９】
前記生成部は、
前記有向エッジのうち、前記第２ルートに対応する有向エッジを削除することにより前記枝刈後有向エッジを生成する
ことを特徴とする請求項８に記載の生成装置。
【請求項１０】
前記生成部は、
前記第１閾値及び前記第２閾値を変動させた各組合せの検索結果に基づいて決定される前記第１閾値及び前記第２閾値を用いて、前記グラフデータを生成する
ことを特徴とする請求項１〜９のいずれか１項に記載の生成装置。
【請求項１１】
前記生成部は、
前記各組合せにおける適合率を含む前記検索結果に基づいて決定される前記第１閾値及び前記第２閾値を用いて、前記グラフデータを生成する
ことを特徴とする請求項１０に記載の生成装置。
【請求項１２】
前記生成部は、
前記各組合せにおける検索時間を含む前記検索結果に基づいて決定される前記第１閾値及び前記第２閾値を用いて、前記グラフデータを生成する
ことを特徴とする請求項１０または請求項１１に記載の生成装置。
【請求項１３】
コンピュータが実行する生成方法であって、
データ検索の対象となる複数のノードを取得する取得工程と、
各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成工程と、
を含むことを特徴とする生成方法。
【請求項１４】
データ検索の対象となる複数のノードを取得する取得手順と、
各ノードを始点ノードとし、前記各ノードとの距離が短い方から順に第１閾値の数の他のノードを終点ノードとする出力エッジと、前記各ノードを終点ノードとし、前記各ノードとの距離が短い方から順に第２閾値の数の他のノードを始点ノードとする入力エッジとを、前記各ノードに連結することによりグラフデータを生成する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、生成装置、生成方法、及び生成プログラムに関する。