(57)【要約】【課題】より簡易的な類似度指標を用いて、且つ、効率的に、問い合わせ経路と類似する軌跡を検索可能とする。【解決手段】軌跡ＤＢ１６には、複数の道路リンクを表す複数の文字により表現される軌跡が複数記憶される。接頭辞特定部２２は、問い合わせ経路Ｑの先頭部分のうち、道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち文字数が最小である部分を接頭辞として特定する。接尾辞特定部２４は、問い合わせ経路Ｑの後尾部分のうち、道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち文字数が最小である部分を接尾辞として特定する。候補軌跡抽出部２６は、軌跡ＤＢ１６に記憶された複数の軌跡から、接頭辞及び接尾辞を含む部分軌跡を候補軌跡として抽出する。類似軌跡検索部２８は、候補軌跡と問い合わせ経路Ｑとの間の編集距離を演算し、当該候補軌跡の中から、編集距離が閾値ρ以下である類似軌跡を検索する。【選択図】図１
2020016984.tif 000002
【特許請求の範囲】
【請求項１】
文字で表現された各道路リンクのコスト、及び、複数の前記文字からなる文字列で表現される複数の軌跡を記憶する記憶部にアクセス可能な軌跡検索装置であって、
複数の前記文字からなる文字列で表現される問い合わせ経路を受け付ける受付部と、
前記問い合わせ経路の接頭辞であって、対応する前記道路リンクのコストの合計が閾値より大きい１又は複数の文字のうち最も文字数が少ない接頭辞を特定する接頭辞特定部と、
前記問い合わせ経路の接尾辞であって、対応する前記道路リンクのコストの合計が前記閾値より大きい１又は複数の文字のうち最も文字数が少ない接尾辞を特定する接尾辞特定部と、
前記複数の軌跡から、前記接頭辞及び前記接尾辞を含み、前記軌跡の少なくとも一部分である候補軌跡を抽出する候補軌跡抽出部と、
前記候補軌跡と前記問い合わせ経路との編集距離であって、前記候補軌跡と前記問い合わせ経路との間で差異がある文字に対応する道路リンクのコストの総和で表現される編集距離を演算し、前記候補軌跡の中から、前記編集距離が前記閾値以下である類似軌跡を検索する類似軌跡検索部と、
を備えることを特徴とする軌跡検索装置。
【請求項２】
前記記憶部は、前記軌跡毎に、各道路リンクを移動体が通過した時刻である通過時刻をさらに記憶し、
前記候補軌跡抽出部は、前記接頭辞に含まれる前記文字に対応する前記道路リンクに関連付けられた前記通過時刻よりも、前記接尾辞に含まれる前記文字に対応する前記道路リンクに関連付けられた前記通過時刻の方が遅い軌跡を前記候補軌跡として抽出する、
ことを特徴とする請求項１に記載の軌跡検索装置。
【請求項３】
前記受付部は、前記問い合わせ経路と共に時間幅を受け付け、
前記候補軌跡抽出部は、前記接頭辞及び前記接尾辞に含まれる前記文字に対応する前記道路リンクに関連付けられた前記通過時刻が前記時間幅に含まれている軌跡を前記候補軌跡として抽出する、
ことを特徴とする請求項２に記載の軌跡検索装置。
【請求項４】
文字で表現された各道路リンクのコスト、及び、複数の前記文字からなる文字列で表現される複数の軌跡を記憶する記憶部にアクセス可能なコンピュータを、
複数の前記文字からなる文字列で表現される問い合わせ経路を受け付ける受付部と、
前記問い合わせ経路の接頭辞であって、対応する前記道路リンクのコストの合計が閾値より大きい１又は複数の文字のうち最も文字数が少ない接頭辞を特定する接頭辞特定部と、
前記問い合わせ経路の接尾辞であって、対応する前記道路リンクのコストの合計が前記閾値より大きい１又は複数の文字のうち最も文字数が少ない接尾辞を特定する接尾辞特定部と、
前記複数の軌跡から、前記接頭辞及び前記接尾辞を含み、前記軌跡の少なくとも一部分である候補軌跡を抽出する候補軌跡抽出部と、
前記候補軌跡と前記問い合わせ経路との編集距離であって、前記候補軌跡と前記問い合わせ経路との間で差異がある文字に対応する道路リンクのコストの総和で表現される編集距離を演算し、前記候補軌跡の中から、前記編集距離が前記閾値以下である類似軌跡を検索する類似軌跡検索部と、
として機能させることを特徴とする軌跡検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、軌跡検索装置及び軌跡検索プログラムに関する。
【背景技術】
【０００２】
従来、現実世界の道路交通網を有向グラフである道路ネットワークで表現することが行われている。当該道路ネットワークのノードは交差点などに対応し、当該道路ネットワークの辺又は弧は道路リンクに対応するものとなる。さらに、このような道路ネットワークを用いて、自動車あるいは人などといった複数の移動体の移動履歴（軌跡）をデータベースに蓄積しておいた上で、当該データベースから、特定の経路（問い合わせ経路）を抽出する処理が行われている。
【０００３】
例えば、非特許文献１には、時間幅と問い合わせ経路を与えた上で、データベースに記憶された複数の軌跡の中から、問い合わせ経路を部分軌跡（軌跡の少なくとも一部）として含む軌跡であって、与えられた時間幅の間に当該部分軌跡を走行した軌跡を検索する処理が開示されている。
【０００４】
また、非特許文献２には、データベースに記憶された軌跡間の類似度を算出する処理が記載されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Benjamin Krogh, Nikos Pelekis, Yannis Theodoridis, Kristian Torp, "Path-based Queries on Trajectory Data", In Proc GIS'14 New York, 2014, 341-350.
【非特許文献２】E.Tiakas, A.N.Papadopoulos, A.Nanopoulos, Y.Manolopoulos, Dragan Stojanovic, Slobodanka Djordjevic-Kajan, "Searching for similar trajectories in spatial networks" The Journal of Systems and Software, 2009.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献１に開示された処理においては、問い合わせ経路と完全一致する部分軌跡を含む軌跡が検索される。したがって、ある程度の誤差を許容したい場合、あるいは完全一致ではないまでも、問い合わせ経路と類似する部分軌跡を検索したい場合などにおいては非特許文献１に開示された処理をそのまま用いることはできない。
【０００７】
一方、非特許文献２には、軌跡間の類似度を算出する処理が開示されているが、非特許文献２に開示された類似度は直感的に理解することが困難なものとなっている。具体的には、２つの軌跡はそれぞれ複数のノードを含み、一方の軌跡に含まれるｉ番目のノードと他方の軌跡に含まれるｉ番目のノードとの間のｉ個の距離を算出し、ｉ個の距離の平均値を当該２つの軌跡の類似度として用いている（非特許文献２の式（４）参照）。当該距離は、所定のコスト関数により算出された両ノード間のコストに基づいて算出される（非特許文献２の式（２）参照）。このように、非特許文献２に開示された類似度を用いた場合、当該類似度の閾値をどのように設定すれば所望の軌跡が得られるのか判断することはかなり難しい。
【０００８】
また、データベースに膨大な数の軌跡が記憶される場合がある。そのような場合に、データベースに記憶された全ての軌跡の部分軌跡と問い合わせ経路との比較を行うと処理量が膨大となってしまうという問題もある。
【０００９】
本発明の目的は、より簡易的な類似度指標を用いて、且つ、効率的に、問い合わせ経路と類似する軌跡を検索可能とすることにある。
【課題を解決するための手段】
【００１０】
本発明は、文字で表現された各道路リンクのコスト、及び、複数の前記文字からなる文字列で表現される複数の軌跡を記憶する記憶部にアクセス可能な軌跡検索装置であって、複数の前記文字からなる文字列で表現される問い合わせ経路を受け付ける受付部と、前記問い合わせ経路の接頭辞であって、対応する前記道路リンクのコストの合計が閾値より大きい１又は複数の文字のうち最も文字数が少ない接頭辞を特定する接頭辞特定部と、前記問い合わせ経路の接尾辞であって、対応する前記道路リンクのコストの合計が前記閾値より大きい１又は複数の文字のうち最も文字数が少ない接尾辞を特定する接尾辞特定部と、前記複数の軌跡から、前記接頭辞及び前記接尾辞を含み、前記軌跡の少なくとも一部分である候補軌跡を抽出する候補軌跡抽出部と、前記候補軌跡と前記問い合わせ経路との編集距離であって、前記候補軌跡と前記問い合わせ経路との間で差異がある文字に対応する道路リンクのコストの総和で表現される編集距離を演算し、前記候補軌跡の中から、前記編集距離が前記閾値以下である類似軌跡を検索する類似軌跡検索部と、を備えることを特徴とする軌跡検索装置である。
【００１１】
望ましくは、前記記憶部は、前記軌跡毎に、各道路リンクを移動体が通過した時刻である通過時刻をさらに記憶し、前記候補軌跡抽出部は、前記接頭辞に含まれる前記文字に対応する前記道路リンクに関連付けられた前記通過時刻よりも、前記接尾辞に含まれる前記文字に対応する前記道路リンクに関連付けられた前記通過時刻の方が遅い軌跡を前記候補軌跡として抽出する、ことを特徴とする。
【００１２】
望ましくは、前記受付部は、前記問い合わせ経路と共に時間幅を受け付け、前記候補軌跡抽出部は、前記接頭辞及び前記接尾辞に含まれる前記文字に対応する前記道路リンクに関連付けられた前記通過時刻が前記時間幅に含まれている軌跡を前記候補軌跡として抽出する、ことを特徴とする。
【００１３】
また、本発明は、文字で表現された各道路リンクのコスト、及び、複数の前記文字からなる文字列で表現される複数の軌跡を記憶する記憶部にアクセス可能なコンピュータを、複数の前記文字からなる文字列で表現される問い合わせ経路を受け付ける受付部と、前記問い合わせ経路の接頭辞であって、対応する前記道路リンクのコストの合計が閾値より大きい１又は複数の文字のうち最も文字数が少ない接頭辞を特定する接頭辞特定部と、前記問い合わせ経路の接尾辞であって、対応する前記道路リンクのコストの合計が前記閾値より大きい１又は複数の文字のうち最も文字数が少ない接尾辞を特定する接尾辞特定部と、前記複数の軌跡から、前記接頭辞及び前記接尾辞を含み、前記軌跡の少なくとも一部分である候補軌跡を抽出する候補軌跡抽出部と、前記候補軌跡と前記問い合わせ経路との編集距離であって、前記候補軌跡と前記問い合わせ経路との間で差異がある文字に対応する道路リンクのコストの総和で表現される編集距離を演算し、前記候補軌跡の中から、前記編集距離が前記閾値以下である類似軌跡を検索する類似軌跡検索部と、として機能させることを特徴とする軌跡検索プログラムである。
【発明の効果】
【００１４】
本発明によれば、より簡易的な類似度指標を用いて、且つ、効率的に、問い合わせ経路と類似する軌跡を検索することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係る軌跡検索装置の構成概略図である。
【図２】道路ネットワークを示す概念図である。
【図３】軌跡ＤＢの内容を示す概念図である。
【図４】アライメントされた２つの文字列を示す図である。
【図５】編集操作の内容を示す図である。
【図６】編集距離演算アルゴリズムを示す図である。
【図７】類似軌跡検索アルゴリズムを示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について説明する。
【００１７】
図１には、本実施形態に係る軌跡検索装置１０の構成概略図が示されている。本実施形態では軌跡検索装置１０はサーバコンピュータであるが、軌跡検索装置１０としては、以下に説明する機能を発揮可能な限りにおいてどのようなコンピュータであってもよい。例えば、一般のコンピュータ（パーソナルコンピュータ）であってもよい。
【００１８】
詳細は後述するが、軌跡検索装置１０は、後述の軌跡ＤＢ（データベース）１６に記憶された複数の軌跡の中から、その部分軌跡が、ユーザなどによって入力される問い合わせ経路Ｑと類似する軌跡を検索する処理を行う。すなわち、軌跡検索装置１０においては、軌跡の「あいまい検索」を実行する。ここで、部分軌跡とは、１つの軌跡の少なくとも一部であり、すなわち、１つの軌跡の一部分であってもよく、１つの軌跡の全体であってもよい。
【００１９】
記憶部１２は、例えばハードディスク、ＲＯＭ（Read Only Memory）、あるいはＲＡＭ（Random Access Memory）などを含んで構成される。記憶部１２は、後述の制御部２０からアクセス可能なように制御部２０に接続される。記憶部１２には、軌跡検索装置１０の各部を機能させるための軌跡検索プログラムが記憶される。また、図１に示すように、記憶部１２には道路ネットワーク１４が記憶される。また、記憶部１２において軌跡ＤＢ１６が定義される。なお、本実施形態では軌跡検索装置１０が有する記憶部１２に道路ネットワーク１４及び軌跡ＤＢ１６が記憶されているが、道路ネットワーク１４及び軌跡ＤＢ１６は、軌跡検索装置１０と通信可能に接続される他の装置（例えば他のサーバ）の記憶部に記憶されていてもよい。
【００２０】
道路ネットワーク１４は、現実世界の道路交通網を有向グラフで示したものである。図２に、道路ネットワーク１４の一部の例が示されている。図２に示される通り、道路ネットワーク１４は、複数のノード３０と、ノード３０間を繋ぐ道路リンク３２を含んで構成される。ノード３０は、現実世界の交差点などに相当するものであり、道路リンク３２は現実世界の道路に相当するものである。なお、１つのノード３０に複数の道路リンク３２が接続されていてもよいし、１つのノード３０から出発して当該ノード３０に戻る道路リンク３２があってもよい。
【００２１】
道路ネットワーク１４においては、各道路リンク３２は文字で表現されている。当該文字により、道路リンク３２が一意に識別できるようになっている。すなわち、当該文字は道路リンク３２を一意に識別する識別子（ＩＤ）であるともいえる。例えば、図２のノード３０ａからノード３０ｂまでの経路は、複数の道路リンク３２を表す複数の文字、すなわち文字列「ａｂｃｄ」で表現することが出来る。
【００２２】
また、各道路リンク３２にはコストが付されており、道路ネットワーク１４は各道路リンク３２のコストを示す情報を保持している。コストは、例えば道路リンク３２が示す道路の長さなどに基づいて予め設定されるものである。
【００２３】
軌跡ＤＢ１６は、道路ネットワーク１４で表される道路交通網を走行した移動体の（移動）軌跡を蓄積して記憶するデータベースである。本実施形態においては、移動体が車であるとし、軌跡ＤＢ１６には、複数の車の軌跡（車両軌跡）が記憶される。もちろん、移動体は車には限られず、人や自転車などであってもよい。本実施形態では、各車に取り付けられた各種センサなどに基づいて、各車の現在位置が逐次軌跡検索装置１０に送信され、それにより軌跡ＤＢ１６に軌跡が蓄積される。軌跡ＤＢ１６には、膨大な数の軌跡が記憶される。
【００２４】
軌跡ＤＢ１６に記憶される軌跡は、複数の道路リンクを表す複数の文字、すなわち文字列により表現される。例えば、図２に示す道路ネットワーク１４において、車がノード３０ａからノード３０ｂまで走行した場合、つまり、道路リンク３２をａ、ｂ、ｃ、ｄの順に走行した場合、軌跡ＤＢ１６には文字列「ａｂｃｄ」で表現される軌跡が記憶される。
【００２５】
また、軌跡ＤＢ１６には、軌跡毎に、各道路リンク３２を移動体が通過した時刻である通過時刻が記憶されてもよい。例えば、上述の例では、車が道路リンクａ、ｂ、ｃ、ｄをそれぞれ通過した通過時刻が記憶されてもよい。
【００２６】
図３に、軌跡ＤＢ１６の構造が示されている。本実施形態においては、軌跡ＤＢ１６は、大別して、軌跡配列４０とポインティングリスト４２とから構成されている。
【００２７】
軌跡配列４０は、１又は複数の移動体の複数の軌跡が連結された配列である。各軌跡間には、連結境界を識別可能なように、特殊文字（本実施形態では＄）が挿入される。また、各軌跡には、軌跡を一意に識別する軌跡ＩＤ（ｔｉｄ）が付される。
【００２８】
図３の例においては、ｔｉｄ＝１で識別される軌跡は文字列「ａｂｃｄｇ」で表現される軌跡であり、ｔｉｄ＝２で識別される軌跡は文字列「ａｄｅｇ」で表現される軌跡でありｔｉｄ＝３で識別される軌跡は文字列「ｂｃｆｇ」で表現される軌跡である。
【００２９】
ポインティングリスト４２は、道路リンク３２毎に用意される。ポインティングリスト４２は、軌跡ＩＤと、通過時刻と、ポインタとが関連付けられた組み合わせのリストである。軌跡配列４０に軌跡が追加される度に、当該軌跡に含まれる道路リンクに対応するポインティングリスト４２に、上記の組み合わせが追加される。なお、本明細書においては、当該組み合わせを要素と記載する。
【００３０】
例えば、ｔｉｄ＝１の軌跡は道路リンクａ、ｂ、ｃ、ｄ、ｇをそれぞれ通過時刻２３、４３、５１、６９、８４で通過したものである場合を考える。この場合、まず、道路リンクａに対応するポインティングリスト４２に、ｔｉｄ＝「１」、通過時刻＝「２３」、及びポインタ＝ｐｔｒａ１が格納される。ここで、ポインタｐｔｒａ１は、軌跡配列４０の１番目の位置を指すものである。次に、道路リンクｂに対応するポインティングリスト４２に、ｔｉｄ＝「１」、通過時刻＝「４３」、及びポインタ＝ｐｔｒｂ２を格納する。ここでのポインタｐｔｒｂ２は、軌跡配列４０の２番目の位置を指すものである。このような処理を繰り返すことで、各ポインティングリスト４２において、通過時刻が昇順になるように複数の要素が並ぶことになる。
【００３１】
図１に戻り、通信部１８は、例えばネットワークアダプタなどを含んで構成される。通信部１８は、ＬＡＮ（Local Area Network）やインターネットなどの通信回線を介して他の装置と通信する機能を発揮する。軌跡検索装置１０がサーバコンピュータである場合には、通信部１８は、軌跡検索装置１０における処理結果を示す結果情報を他の装置に送信する。また、通信部１８は、軌跡検索装置１０の利用者（ユーザ）からの指示を示す指示情報をユーザ端末から受信する。特に、通信部１８は、ユーザ端末から問い合わせ経路Ｑを受信する。問い合わせ経路Ｑも、道路ネットワーク１４で定義された、各道路リンク３２を示す文字に基づいて、複数の道路リンク３２を示す複数の文字、すなわち文字列で表現される。このように、通信部１８は問い合わせ経路Ｑを受け付ける受付部としても機能する。
【００３２】
また、本実施形態では、通信部１８は、問い合わせ経路Ｑと共に閾値ρをユーザ端末から受信する。閾値ρは、問い合わせ経路Ｑと部分軌跡との間の編集距離（詳細後述）に関する閾値であり、すなわち、問い合わせ経路Ｑとの編集距離が、ユーザが設定した閾値ρ以下の部分軌跡が検索されることになる。本実施形態では、問い合わせ経路Ｑとの編集距離が閾値ρ以下の部分軌跡が、問い合わせ経路Ｑと類似する類似軌跡となる。なお、閾値ρは、ユーザから入力されずに、予め記憶部１２に記憶されていてもよい。この場合は、問い合わせ経路Ｑとの編集距離が所定の閾値以下の類似軌跡が検索されることになる。
【００３３】
また、通信部１８は、問い合わせ経路Ｑと共に時間幅Ｉをユーザ端末から受信してもよい。時間幅Ｉは、例えば［０，９０］（時刻０から時刻９０まで）のように表され、検索対象の部分軌跡の通過時刻に関する時間幅であり、すなわち、問い合わせ経路Ｑとの類似度が閾値ρより大きい部分軌跡であって、通過時刻（当該部分軌跡に含まれる各道路リンクの通過時刻）が時間幅Ｉ内である部分軌跡が類似軌跡として検索されることになる。
【００３４】
なお、軌跡検索装置１０が一般のコンピュータである場合などにおいては、軌跡検索装置１０はマウス、キーボード、あるいはタッチパネルなどを含んで構成される入力部、あるいは液晶ディスプレイなどを含んで構成される表示部を有していてもよい。その場合は、当該入力部がユーザから問い合わせ経路Ｑ、閾値ρ、あるいは時間幅Ｉの入力を受け付ける受付部として機能する。また、当該表示部には、軌跡検索装置１０における処理結果が表示される。
【００３５】
制御部２０は、例えばＣＰＵ（Central Processing Unit）などを含んで構成される。制御部２０は、記憶部１２に記憶された軌跡検索プログラムに従って、軌跡検索装置１０の各部を制御する。また、図１に示される通り、制御部２０は、接頭辞特定部２２、接尾辞特定部２４、候補軌跡抽出部２６、及び、類似軌跡検索部２８としても機能する。
【００３６】
制御部２０が有するこれらの機能が発揮されることで、軌跡検索装置１０は、軌跡ＤＢ１６に記憶された複数の軌跡の中から、問い合わせ経路Ｑに類似する（すなわち問い合わせ経路Ｑとの間の編集距離が閾値ρ以下である）部分軌跡を検索する。以下、制御部２０が発揮するこれらの機能の詳細を説明する。
【００３７】
接頭辞特定部２２は、問い合わせ経路Ｑの接頭辞、すなわち、１又は複数の文字からなる問い合わせ経路Ｑの先頭部分（１番目の文字、あるいは１番目の文字を含む連続した文字列）を特定する。具体的には、接頭辞特定部２２は、問い合わせ経路Ｑの先頭部分のうち、対応する道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち最も文字数が少ない部分を接頭辞として特定する。
【００３８】
同様に、接尾辞特定部２４は、問い合わせ経路Ｑの接尾辞、すなわち、１又は複数の文字からなる問い合わせ経路Ｑの後尾部分（１番最後の文字、あるいは１番最後の文字を含む連続した文字列）を特定する。具体的には、接尾辞特定部２４は、問い合わせ経路Ｑの後尾部分のうち、対応する道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち最も文字数が少ない部分を接尾辞として特定する。
【００３９】
後述のように、接頭辞及び接尾辞は、軌跡ＤＢ１６に記憶された膨大な数の軌跡から、問い合わせ経路Ｑとの間の編集距離を演算する対象（候補軌跡）を絞り込むために用いられる。詳しくは後述するが、後述の候補軌跡抽出部２６により、接頭辞及び接尾辞を含む部分軌跡が候補軌跡として抽出される。
【００４０】
問い合わせ経路Ｑの先頭部分であって、対応する道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち最も文字数が少ない部分が接頭辞として特定されるのは、的確な候補軌跡を抽出できるようにするためである。すなわち、接頭辞に含まれる文字に対応する道路リンクのコストの合計が大きい程、候補軌跡の数をより少なくすることができるが、接頭辞に含まれる文字に対応する道路リンクのコストの合計が閾値ρを超える場合、問い合わせ経路Ｑとの間の編集距離が閾値ρ以下の軌跡が候補軌跡として抽出されない場合が生じてしまう。したがって、問い合わせ経路Ｑとの間の編集距離が閾値ρ以下となる軌跡が候補軌跡に含まれる限りにおいて、できるだけ候補軌跡を絞るべく、問い合わせ経路Ｑの先頭部分であって、対応する道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち最も文字数が少ない部分を接頭辞として特定している。問い合わせ経路Ｑの後尾部分であって、対応する道路リンクのコストの合計が閾値ρより大きい１又は複数の文字のうち最も文字数が少ない部分を接尾辞として特定するのも同様の理由からである。
【００４１】
候補軌跡抽出部２６は、接頭辞特定部２２が特定した接頭辞、及び、接尾辞特定部２４が特定した接尾辞に基づいて、軌跡ＤＢ１６に記憶された複数の軌跡から候補軌跡を抽出する。詳しくは、候補軌跡抽出部２６は、接頭辞及び接尾辞を含む部分軌跡を候補軌跡として抽出する。接頭辞あるいは接尾辞が複数の文字を含んでいる場合、接頭辞のうち少なくとも１つの文字、及び、接尾辞のうち少なくとも１つの文字を含む部分軌跡を候補軌跡として抽出する。例えば、問い合わせ経路Ｑ＝ａｂｃｄｅｆｇｈであり、接頭辞が「ａｂ」、接尾辞が「ｇｈ」である場合、候補軌跡抽出部２６は、軌跡ＤＢ１６に記憶された複数の軌跡から、「ａ」、「ｂ」、又は「ａｂ」の後に「ｇ」、「ｈ」、又は「ｇｈ」を含む部分軌跡を抽出する。
【００４２】
また、軌跡ＤＢ１６において、軌跡毎に各道路リンク３２の通過時刻が記憶されている場合は、候補軌跡抽出部２６は、軌跡ＤＢ１６に記憶された複数の軌跡から、接頭辞に含まれる文字に対応する道路リンクの通過時刻よりも接尾辞に含まれる文字に対応する道路リンクの通過時刻の方が遅い軌跡を候補軌跡として抽出してもよい。
【００４３】
さらに、ユーザから時間幅Ｉが指定された場合は、候補軌跡抽出部２６は、軌跡ＤＢ１６に記憶された複数の軌跡から、接頭辞及び接尾辞に含まれる文字に対応する道路リンクの通過時刻が指定された時間幅Ｉに含まれている軌跡を候補軌跡として抽出してもよい。
【００４４】
以下、候補軌跡抽出部２６の具体的な処理を説明する。以下の説明では、問い合わせ経路Ｑが「ａｂｃｄｅｆｇｈ」、接頭辞が「ａｂ」、接尾辞が「ｇｈ」、時間幅Ｉが［０，９０］であるとし、軌跡ＤＢ１６には図３に示す内容の軌跡が記憶されているとする。
【００４５】
まず、候補軌跡抽出部２６は、接頭辞に含まれる文字ａ及びｂに対応するポインティングリスト４２に含まれる要素の中から、通過時刻が時間幅Ｉに含まれる要素を抽出する。このように抽出される要素の集合をＳｐｒｅｆｉｘと記載する。例えば、候補軌跡抽出部２６は、道路リンクａに対応するポインティングリスト４２の最初の要素（ｔｉｄ＝１、通過時刻＝２３、ポインタ＝ｐｒｔａ１）（以下、この軌跡ＩＤと通過時刻とポインタの組み合わせを単に（１，２３，ｐｒｔａ１）のように記載する）の通過時刻が時間幅Ｉに含まれるから、当該要素をＳｐｒｅｆｉｘに含める。道路リンクａに対応するポインティングリスト４２の２番目の要素である（２，４７，ｐｔｒａ２）も同様にＳｐｒｅｆｉｘに含める。道路リンクｂに対応するポインティングリスト４２では、（４，１８，ｐｒｔｂ１）及び（１，４３，ｐｔｒｂ２）の要素の通過時刻が時間幅Ｉに含まれるから、これらの要素をＳｐｒｅｆｉｘに含める。
【００４６】
同様に、接尾辞に含まれる文字ｇ及びｈに対応するポインティングリスト４２に含まれる要素の中から、通過時刻が時間幅Ｉに含まれる要素を抽出する。このように抽出される要素の集合をＳｓｕｆｆｉｘと記載する。例えば、候補軌跡抽出部２６は、道路リンクｇに対応するポインティングリスト４２の最初の要素（１，８４，ｐｒｔｇ１）の通過時刻が時間幅Ｉに含まれるから、当該要素をＳｓｕｆｆｉｘに含める。一方、道路リンクｇに対応するポインティングリスト４２の２番目の要素（２，９７，ｐｒｔｇ２）の通過時刻は時間幅Ｉに含まれないから、当該要素はＳｓｕｆｆｉｘに含めない。
【００４７】
本実施形態では、軌跡ＤＢ１６においては、道路リンク３２毎に区別された各ポインティングリスト４２において、通過時刻が昇順となるように複数の要素が並んでいるから、候補軌跡抽出部２６は、ポインティングリスト４２の各要素を先頭から順に辿ることでＳｐｒｅｆｉｘ及びＳｓｕｆｆｉｘを容易に抽出することができる。なお、軌跡ＤＢ１６において、各ポインティングリスト４２の通過時刻に対してＢ＋木などを用いて索引化することで効率化を図ってもよい。なお、索引化は汎用のデータベースシステムの機能を用いて実現することができる。
【００４８】
次に、候補軌跡抽出部２６は、抽出されたＳｐｒｅｆｉｘ及びＳｓｕｆｆｉｘの軌跡ＩＤについての共通部分集合を取ることで、問い合わせ経路Ｑの接頭辞及び接尾辞の両方を時間幅Ｉの間に通過した部分軌跡を抽出する。詳しくは、ＳｐｒｅｆｉｘとＳｓｕｆｆｉｘの両方に共通して含まれる軌跡ＩＤに対応する要素のみを抽出する。具体的には、Ｓｐｒｅｆｉｘに含まれる要素の中から、Ｓｓｕｆｆｉｘにも同じ軌跡ＩＤを持つ要素があり、且つ、Ｓｐｒｅｆｉｘの当該要素の通過時刻よりもＳｓｕｆｆｉｘの当該要素の通過時刻の方が遅い時刻を示す要素のみを抽出する。このように抽出された要素の集合をＳ’ｐｒｅｆｉｘと記載する。
【００４９】
例えば、図３を参照して、Ｓｐｒｅｆｉｘに含められた要素（１，２３，ｐｔｒａ１）についてみると、Ｓｓｕｆｆｉｘは、当該要素と同じ軌跡ＩＤを有し、且つ、通過時刻が２３よりも遅い要素（１，８４，ｐｔｒｇ１）を含んでいる。したがって、当該要素（１，２３，ｐｔｒａ１）はＳ’ｐｒｅｆｉｘに含められる。同様に、Ｓｐｒｅｆｉｘに含められた要素（１，４３，ｐｔｒｂ２）についてみると、Ｓｓｕｆｆｉｘは、当該要素と同じ軌跡ＩＤを有し、且つ、通過時刻が２３よりも遅い要素（１，８４，ｐｔｒｇ１）を含んでいる。したがって、当該要素（１，４３，ｐｔｒｂ２）もＳ’ｐｒｅｆｉｘに含められる。このような処理をＳｐｒｅｆｉｘに含められた全ての要素について行う。
【００５０】
上述の処理により、Ｓ’ｐｒｅｆｉｘが抽出される。これにより、軌跡ＤＢ１６に記憶された複数の軌跡から、Ｓ’ｐｒｅｆｉｘに含まれる要素の軌跡ＩＤが示す軌跡の一部又は全部であって、当該要素のポインタが示す道路リンクを始点とする軌跡が候補軌跡として抽出されたことになる。つまり、候補軌跡は、接頭辞に含まれる文字から接尾辞に含まれる文字までの軌跡である。
【００５１】
類似軌跡検索部２８は、候補軌跡抽出部２６が抽出した候補軌跡と問い合わせ経路Ｑとの間の編集距離を演算し、当該候補軌跡の中から、当該編集距離が閾値ρ以下である類似軌跡を検索する。
【００５２】
類似軌跡検索部２８の具体的な処理内容を説明する前に、２つの文字列の間の編集距離及びその演算方法について説明する。
【００５３】
２つの文字列をｘ及びｙで表した場合、文字列ｘと文字列ｙとの間の編集距離は、文字の置換、挿入、及び削除の３つの編集操作を用いて文字列ｘを文字列ｙに変換する際に必要となるコストとして定義される。本実施形態では、文字は道路リンクを表すものであるため、ここでは、当該３つの編集操作のうち、挿入及び削除のみを考える。つまり、置換の操作のコストを無限大として考える。
【００５４】
文字列ｘから文字列ｙへの変換の過程で適用される編集操作の集合を編集操作集合εと定義する。編集操作集合εのコストは、各編集操作のコストの和として定義される。すなわち、
【数１】
2020016984.tif 000003
が成立する。上式のうち、ｄ（ε）は編集操作集合εのコストを表し、変数ｏｐは編集操作を表すものである。文字列ｘを文字列ｙに変換するための編集操作集合の集合を
【数２】
2020016984.tif 000004
とする。文字列ｘ及びｙの間の編集距離とは、文字列ｘを文字列ｙに変換するための編集操作集合の集合のうちでコストが最小になるものである。すなわち、文字列ｘ及びｙの間の編集距離ｅｄ（ｘ，ｙ）は、
【数３】
2020016984.tif 000005
として定義される。
【００５５】
例として、文字列ｘ＝ａｂｃｄｇと文字列ｙ＝ｂｅｆｇとの間の編集距離ｅｄ（ｘ，ｙ）を考える。文字列ｘの文字列ｙへの変換を可視化するために、文字列ｘ及びｙを図４のように記載する。文字列ｘ及びｙに共通して含まれる文字が同じ順番に来るように、文字列ｘ及びｙそれぞれにアライメント（−）を挿入されている。
【００５６】
ここで、文字列ｘに含まれる１番目の文字「ａ」と文字列ｙの１番目の文字「−」のペア（以下、文字列ｘの文字と文字列ｙの文字のペアを単に（ａ，−）等と記載する）は、文字列ｘから文字ａを削除する編集操作に対応する。また、（−，ｅ）は、文字列ｘに文字ｅを挿入する編集操作に対応する。このように、一方がアライメントであるペアは、挿入又は削除の編集操作に対応するため、一方がアライメントであるペアを編集操作を同一視し、
【数４】
2020016984.tif 000006
のように記すことができる。
【００５７】
ここで、文字を削除する編集操作のコストは、当該文字に定義されたコストとみなすことができ、すなわち、例えば文字ａを削除する編集操作のコストをｄ（ａ）と定義することができる。同様に、文字を追加する編集操作のコストは、当該文字に定義されたコストとみなすことができ、すなわち、例えば文字ｅを追加する編集操作のコストをｄ（ｅ）と定義することができる。なお、本実施形態では、文字は道路リンク３２を表すものであるから、文字のコストとは、当該文字に対応する道路リンク３２のコストであると言える。文字列ｘを文字列ｙに変換する各編集操作、各編集操作のアライメントペア、及び各編集操作のコストは図５に示すようなものとなる。
【００５８】
文字列ｘと文字列ｙとの間の編集距離ｅｄ（ｘ，ｙ）は、
ｅｄ（ｘ，ｙ）＝ｄ（ａ）＋ｄ（ｃ）＋ｄ（ｄ）＋ｄ（ｅ）＋ｄ（ｆ）
で表される。つまり、編集距離とは、２つの文字列の間で差異がある文字のコストの総和で表現される。なお、同一文字のペア（例えば（ｂ，ｂ））は、マッチしていると呼び、そのコストはゼロである。
【００５９】
一般に、文字列ｘと文字列ｙとの間において可能な変換の数は文字列ｘの長さ（文字数）ｎ、及び文字列ｙの長さｍに対して指数関数的に増加するが、これは動的計画法によってＯ（ｎｍ）時間で演算することが出来る。
【００６０】
文字列ｘと文字列ｙとの間の編集距離ｅｄ（ｘ，ｙ）は、図６に示す編集距離演算アルゴリズムで演算することができる。編集距離演算アルゴリズムにおいては、文字列ｘ＝ａ１ａ２・・・ａｎであり、文字列ｙ＝ｂ１ｂ２・・・ｂｍであるとする。
【００６１】
まず、Ａ及びＢはｎ＋１次元ベクトルであり（１行目及び２行目）、ベクトルＡは３〜６行目の処理で初期化される。初期化されたベクトルＡの各要素は
Ａ０＝０
Ａ１＝ｄ（ａ１）
Ａ２＝ｄ（ａ１）＋ｄ（ａ２）
・・・
Ａｎ＝ｄ（ａ１）＋ｄ（ａ２）＋・・・ｄ（ａｎ）
となる。
【００６２】
次に、８〜１４行目の処理において、文字列ｘの部分文字列と文字列ｙの部分文字列との間の編集距離が段階的に演算されていく。まず、変数ｊ＝１の場合についてみると、８行目の処理においてベクトルＢの１番目の要素Ｂ０は、Ａ０＋ｄ（ｂ１）、すなわちｄ（ｂ１）とされる。
【００６３】
次に９〜１４行目のｆｏｒ文の処理において、
変数ｉ＝１の場合は、ａ１とｂ１との間の編集距離が演算されてＢ１に代入され、
変数ｉ＝２の場合は、ａ１ａ２とｂ１との間の編集距離が演算されてＢ２に代入され、
変数ｉ＝ｎの場合は、ａ１ａ２・・・ａｎとｂ１との間の編集距離が演算されてＢｎに代入される。
このように、変数ｊ＝１の場合においては、文字列ｘの文字を先頭から１文字ずつ増やしていった上で、文字列ｙの１文字目（ｂ１）との間の編集距離がそれぞれ演算される。
【００６４】
以後、ベクトルＢの内容がベクトルＡに代入され（１５行目）、変数ｊ＝２の場合においては、文字列ｘの文字を先頭から１文字ずつ増やしていった上で、文字列ｙの１文字目及び２文字目からなる文字列（ｂ１ｂ２）との間の編集距離がそれぞれ演算される。さらに、変数ｊ＝３の場合においては、文字列ｘの文字を先頭から１文字ずつ増やしていった上で、文字列ｙの１文字目から３文字目までの文字からなる文字列（ｂ１ｂ２ｂ３）との間の編集距離がそれぞれ演算される。
【００６５】
変数ｊ＝ｍの場合において、変数ｉ＝ｎの場合に、ａ１ａ２・・・ａｎとｂ１ｂ２・・・ｂｍとの間の編集距離、すなわち文字列ｘと文字列ｙとの間の編集距離が演算されてＢｎに代入される。そして、１５行目の処理においてベクトルＢがベクトルＡに代入され、１７行目の処理によってベクトルＡの最後の要素Ａｎが文字列ｘと文字列ｙとの間の編集距離ｅｄ（ｘ，ｙ）として出力される。
【００６６】
以上説明した編集距離演算アルゴリズムにより、文字列ｘを文字列ｙに変換するための編集操作集合の集合のうちでコストが最小なもの、すなわち編集距離が演算できる。
【００６７】
以下、類似軌跡検索部２８の具体的な処理内容を説明する。類似軌跡検索部２８は、図７に示す類似軌跡検索アルゴリズムにより類似軌跡を検索する。類似軌跡検索アルゴリズムにおいては、問い合わせ経路Ｑ＝ｑ１ｑ２・・・ｑｎであるとする。
【００６８】
まず、編集距離演算アルゴリズム同様、Ａ及びＢはｎ＋１次元ベクトルであり（１行目及び２行目）、ベクトルＡは３〜６行目の処理で初期化される。初期化されたベクトルＡの各要素は
Ａ０＝０
Ａ１＝ｄ（ｑ１）
Ａ２＝ｄ（ｑ１）＋ｄ（ｑ２）
・・・
Ａｎ＝ｄ（ｑ１）＋ｄ（ｑ２）＋・・・ｄ（ｑｎ）
となる。
【００６９】
次に、変数ｅにポインタｐｔｒの位置の道路リンクを示す文字が代入される。ここで、ポインタｐｔｒは、候補軌跡抽出部２６が抽出したＳ’ｐｒｅｆｉｘに含まれる要素が有するポインタである。すなわち、候補軌跡抽出部２６が抽出した候補軌跡の１番目の文字が変数ｅに代入される。ここでは、候補軌跡が「ａｂｃｄｇ」（図３に示すｔｉｄ＝１）であるとし、したがって変数ｅには「ａ」が代入される。
【００７０】
９行目から１５行目までの処理は、編集距離演算アルゴリズムの８行目から１４行目までの処理と同等の処理を行う。すなわち、変数ｅに候補軌跡の１文字目が代入されている場合においては、問い合わせ経路Ｑの文字を先頭から１文字ずつ増やしていった上で、候補軌跡の１文字目（ここでは「ａ」）との間の編集距離がそれぞれ演算される。
【００７１】
１６行目では、ベクトルＢのｎ番目の要素Ｂｎ、すなわち問い合わせ経路Ｑ全体と候補軌跡の１文字目との間の編集距離が閾値ρ以下であるか否かが判定される。Ｂｎが閾値ρ以下であるということは、候補軌跡の１文字目である部分軌跡が類似軌跡であると言える。したがって、この場合はｔｒｕｅが返され（１７行目）、つまり、ここでは部分軌跡「ａ」が類似軌跡として検索されることになる。
【００７２】
１８行目では、ベクトルＢの要素のうち最小値が閾値ρより大きいか否かが判定される。ベクトルＢの要素のうち最小値が閾値ρより大きい場合、換言すれば、ベクトルＢの要素の全てが閾値ρより大きい場合は、これ以上候補軌跡の文字数を増やして問い合わせ経路Ｑとの間の編集距離を演算しても（例えば今後問い合わせ経路Ｑと候補軌跡の２文字目までの文字列「ａｂ」との間の編集距離を演算しても）、それが閾値ρ以下になる見込みがない。したがって、この場合はｆａｌｓｅが返され（１９行目）、処理を終了する。その後、Ｓ’ｐｒｅｆｉｘに未処理の要素が残っているならば、当該未処理の要素が有するポインタが示す文字を変数ｅに代入した上で処理を再開する。
【００７３】
１６行目から１９行目までの処理でｔｒｕｅ及びｆａｌｓｅのいずれにも確定しなかった場合、２０行目においてポインタｐｔｒがインクリメントされ、２１行目にインクリメントされたポインタが示す文字、つまり候補軌跡の２番目の文字が変数ｅに代入される。
【００７４】
以後、ベクトルＢの内容がベクトルＡに代入された上で（２２行目）、変数ｅに候補軌跡の２文字目が代入されている場合、９行目から１５行目までの処理において、問い合わせ経路Ｑの文字を先頭から１文字ずつ増やしていった上で、候補軌跡の１文字目と２文字目からなる文字列（ここでは「ａｂ」）との間の編集距離がそれぞれ演算される。その後、１６行目から２２行目までの処理を行う。
【００７５】
このようにして、問い合わせ経路Ｑ及び候補軌跡の文字数を段階的に増やしながら編集距離を演算していくことで、類似軌跡が検索される。なお、変数ｅが＄となった場合、すなわち問い合わせ経路Ｑと１つの候補軌跡全体との間の編集距離の演算が終了した場合であって、閾値ρ以下となる部分経路が見つからなかった場合は、ｆａｌｓｅを返して処理を終了する（２３行目及び２４行目）。この場合も、Ｓ’ｐｒｅｆｉｘに未処理の要素が残っているならば、当該未処理の要素が有するポインタが示す文字を変数ｅに代入した上で処理を再開する。
【００７６】
以上説明した通り、本実施形態においては、編集距離という類似度指標に基づいて、問い合わせ経路Ｑと部分軌跡との類似度が演算される。編集距離は、理解が容易な類似度指標といえる。なぜならば、２つの経路を比較する場合、編集距離では、２つの経路の間で不一致の経路のコスト（例えば長さ）に対応するのであるが、この不一致の経路のコスト（長さ）という類似性指標は理解が容易であるためである。これによって、ユーザが閾値ρを設定する場合、ユーザは閾値ρの設定を直感的に行うことができるようになる。
【００７７】
また、本実施形態においては、軌跡ＤＢ１６に記憶された複数の軌跡の中から候補軌跡抽出部２６が候補軌跡を抽出した上で、抽出された候補軌跡と問い合わせ経路Ｑとの間の編集距離が演算される。これによれば、軌跡ＤＢ１６に膨大な数の軌跡が記憶されている場合であっても、編集距離の演算のための処理量が低減され、すなわち、問い合わせ経路Ｑと類似する類似軌跡を効率的に行うことができる。
【００７８】
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。
【符号の説明】
【００７９】
１０  軌跡検索装置、１２  記憶部、１４  道路ネットワーク、１６  軌跡ＤＢ、１８  通信部、２０  制御部、２２  接頭辞特定部、２４  接尾辞特定部、２６  候補軌跡抽出部、２８  類似軌跡検索部。
【図１】
2020016984.tif 000007
【図２】
2020016984.tif 000008
【図３】
2020016984.tif 000009
【図４】
2020016984.tif 000010
【図５】
2020016984.tif 000011
【図６】
2020016984.tif 000012
【図７】
2020016984.tif 000013