(57)【特許請求の範囲】
【請求項１】
少なくとも１つの移動イベントについてのイベント・データを受け取ることと、
前記イベント・データから、前記移動イベントについての移動イベント・データを生成することであって、前記移動イベント・データは前記移動イベントの傾向を示す、生成することと、
前記移動イベント・データを関数型データ構造に格納することと、
複数の車両の各々について：
前記車両についての履歴走行パターン・データにアクセスし、前記履歴走行パターン・データに基づいて、前記車両が前記移動イベントに影響を受ける確率を求めることと、
プロセッサを用いて、前記車両についての前記履歴走行パターン・データ及び前記移動イベントの前記傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することであって、前記移動イベント・シミュレーションは、複数の将来の時間間隔の各々における前記車両の将来の位置及び前記移動イベントの将来の位置を予測する、生成することと、
前記移動イベント・シミュレーションに基づいて、前記車両が前記移動イベントと交差する経路を移動する場合、いつ前記車両が前記少なくとも１つの移動イベントに影響を受けるかを判断することと、
前記車両が前記移動イベントに影響を受ける前記確率が閾値を超えると判断することに応答して、前記車両と関連したクライアント・デバイスに、前記少なくとも１つの移動イベント及び前記車両が前記少なくとも１つの移動イベントに影響を受ける時間を示す通知を通信することと、
を含む、方法。
【請求項２】
各車両についての前記履歴パターン・データを用いて、各車両についての時間・距離データ・アレイを生成し、各車両について、前記時間・距離データ・アレイを前記移動イベントの前記傾向を用いて処理し、前記移動イベント・シミュレーションを生成する、請求項１に記載の方法。
【請求項３】
前記時間・距離データ・アレイは、前記車両が種々の距離を移動する時間を示す、請求項２に記載の方法。
【請求項４】
前記車両が種々の距離を移動する前記時間は、前記車両と前記移動イベントとの間に位置する少なくとも１つの他のイベントに少なくとも部分的に基づく、請求項３に記載の方法。
【請求項５】
前記移動イベントについての移動イベント・データを生成することは、
前記イベント・データについてのタイム・スタンプが既存のイベント・データの閾値期間内であるかどうかを判断することと、
前記イベント・データについての前記タイム・スタンプが、前記移動イベントに関係する既存のイベント・データの前記閾値期間内であると判断することに応答して、前記関数型データ構造における前記イベント・データ及び前記既存のイベント・データのペアワイズ組み合わせを作成することと、
を含む、請求項１に記載の方法。
【請求項６】
前記車両が前記移動イベントに影響を受ける前記確率を判断することは、複数の道路の各々について、前記車両が前記複数の道路の特定のものに進むそれぞれの確率を求めることを含む、請求項１に記載の方法。
【請求項７】
前記通知は、前記車両が前記少なくとも１つの移動イベントに影響される位置をさらに示す、請求項１に記載の方法。
【請求項８】
前記車両についての前記履歴走行パターン・データは、前記車両のドライバについての履歴走行パターン・データである、請求項１に記載の方法。
【請求項９】
実行可能な動作を開始するようにプログラムされたプロセッサを含み、前記実行可能な動作は、
少なくとも１つの移動イベントについてのイベント・データを受け取ることと、
前記イベント・データから、前記移動イベントについての移動イベント・データを生成することであって、前記移動イベント・データは前記移動イベントの傾向を示す、生成することと、
前記移動イベント・データを関数型データ構造に格納することと、
複数の車両の各々について：
前記車両についての履歴走行パターン・データにアクセスし、前記履歴走行パターン・データに基づいて、前記車両が前記移動イベント・データに影響を受ける確率を求めることと、
前記車両についての前記履歴走行パターン・データ及び前記移動イベントの前記傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することであって、前記移動イベント・シミュレーションは、複数の将来時間間隔の各々における前記車両の将来の位置及び前記移動イベントの将来の位置を予測する、生成することと、
前記移動イベント・シミュレーションに基づいて、前記車両が前記移動イベントと交差する経路を移動する場合、いつ前記車両が前記少なくとも１つの移動イベントに影響を受けるかを判断することと、
前記車両が前記イベントに影響を受ける前記確率が閾値を超えると判断することに応答して、前記車両と関連したクライアント・デバイスに、前記少なくとも１つの移動イベント及び前記車両が前記少なくとも１つの移動イベントに影響を受ける時間を示す通知を通信することと、
を含む、システム。
【請求項１０】
各車両についての前記履歴パターン・データを用いて、各車両についての時間・距離データ・アレイを生成し、各車両について、前記時間・距離データ・アレイを前記移動イベントの前記傾向を用いて処理し、前記移動イベント・シミュレーションを生成する、請求項９に記載のシステム。
【請求項１１】
前記時間・距離データ・アレイは、前記車両が種々の距離を移動する時間を示す、請求項１０に記載のシステム。
【請求項１２】
前記車両が種々の距離を移動する前記時間は、前記車両と前記移動イベントとの間に位置する少なくとも１つの他のイベントに少なくとも部分的に基づく、請求項１１に記載のシステム。
【請求項１３】
前記移動イベントについての移動イベント・データを生成することは、
前記イベント・データについてのタイム・スタンプが既存のイベント・データの閾値期間内であるかどうかを判断することと、
前記イベント・データについての前記タイム・スタンプが、前記移動イベントに関係する既存のイベント・データの前記閾値期間内であると判断することに応答して、前記関数型データ構造における前記イベント・データ及び前記既存のイベント・データのペアワイズ組み合わせを作成することと、
を含む、請求項９に記載のシステム。
【請求項１４】
前記車両が前記移動イベントに影響を受ける前記確率を判断することは、複数の道路の各々について、前記車両が前記複数の道路の特定のものに進むそれぞれの確率を求めることを含む、請求項９に記載のシステム。
【請求項１５】
前記通知は、前記車両が前記少なくとも１つの移動イベントに影響を受ける位置をさらに示す、請求項９に記載のシステム。
【請求項１６】
前記車両についての前記履歴走行パターン・データは、前記車両のドライバについての履歴走行パターン・データである、請求項９に記載のシステム。
【請求項１７】
プログラム・コードを含むコンピュータ・プログラムであって、前記プログラムが、コンピュータ・プロセッサに、
少なくとも１つの移動イベントについてのイベント・データを受け取ることと、
前記イベント・データから、前記プロセッサにより、前記移動イベントについての移動イベント・データを生成することであって、前記移動イベント・データは前記移動イベントの傾向を示す、生成することと、
前記移動イベント・データを関数型データ構造に格納することと、
複数の車両の各々について：
前記プロセッサにより、前記車両についての履歴走行パターン・データにアクセスし、前記履歴走行パターン・データに基づいて、前記車両が前記移動イベント・データに影響を受ける確率を求めることと、
前記車両についての前記履歴走行パターン・データ及び前記移動イベントの前記傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することであって、前記移動イベント・シミュレーションは、複数の将来の時間間隔の各々における前記車両の将来の位置及び前記移動イベントの将来の位置を予測する、生成することと、
前記移動イベント・シミュレーションに基づいて、前記プロセッサにより、前記車両が前記移動イベントと交差する経路を移動する場合、いつ前記車両が前記少なくとも１つの移動イベントに影響を受けるかを判断することと、
前記車両が前記移動イベントに影響を受ける前記確率が閾値を超えると判断することに応答して、前記少なくとも１つの移動イベント及び前記車両が前記少なくとも１つの移動イベントに影響を受ける時間を示す通知を通信することと、
を実行させる、コンピュータ・プログラム。
【請求項１８】
各車両についての前記履歴パターン・データを用いて、各車両についての時間・距離データ・アレイを生成し、各車両について、前記時間・距離データ・アレイを前記移動イベントの前記傾向を用いて処理して、前記移動イベント・シミュレーションを生成する、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記時間・距離データ・アレイは、前記車両が種々の距離を移動する時間を示す、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記車両が種々の距離を移動する前記時間は、前記車両と前記移動イベントとの間に位置する少なくとも１つの他のイベントに少なくとも部分的に基づく、請求項１８に記載のコンピュータ・プログラム。
【請求項２１】
前記移動イベントについての移動イベント・データを生成することは、
前記イベント・データについてのタイム・スタンプが既存のイベント・データの閾値期間内であるかどうかを判断することと、
前記イベント・データについてのタイム・スタンプが、前記移動イベントに関係する既存のイベント・データの前記閾値期間内であると判断することに応答して、前記関数型データ構造における前記イベント・データ及び前記既存のイベント・データのペアワイズ組み合わせを作成することと、
を含む、請求項１７に記載のコンピュータ・プログラム。
【請求項２２】
前記車両が前記移動イベントに影響を受ける前記確率を判断することは、複数の道路の各々について、前記車両が前記複数の道路の特定のものに進むそれぞれの確率を求めることを含む、請求項１７に記載のコンピュータ・プログラム。
【請求項２３】
前記通知は、前記車両が前記少なくとも１つの移動イベントに影響される位置をさらに示す、請求項１７に記載のコンピュータ・プログラム。
【請求項２４】
前記車両についての前記履歴走行パターン・データは、前記車両のドライバについての履歴走行パターン・データである、請求項１７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに関し、より具体的には、ナビゲーション・システムに関する。
【背景技術】
【０００２】
多くの自動車のドライバは、ナビゲーション・システムを使用するのは、従来の地図よりも便利であることを見だし、ナビゲーション・システムは、主として従来の地図の使用に取って代わっている。ナビゲーション・システムは、データベース技術及び全地球測位システム（ＧＰＳ）を含む多数の様々な技術が集まったものである。ナビゲーション・システムは、一般的に、通りの名前又は番号、及び通りの住所が地理座標としてコード化される道路データベースを使用する。ナビゲーション・システムは、特定の自動車についてのＧＰＳ座標を受け取り、道路データベースを用いて、所望の目的地に達するために、ドライバが現在位置からナビゲートすべき案内（directions）を決定することができる。案内は、例えば、専用ナビゲーション・ユニット、スマートフォン、又はタブレット・コンピュータを介してユーザに提示され、ユーザを所望の目的地へ案内することができる。場合によっては、案内を自律車両に提供することができ、自律車両は案内に従って、所望の目的値に達することができる。
【０００３】
現在、ナビゲーション・システムは、特定の道路において交通遅延を引き起こし得る交通渋滞をドライバに知らせることもある。しかしながら、これらの現在のシステムでは、イベントの傾向を考慮しておらず、実際にどの車両が交通渋滞に影響を受けるかは分からない。例えば、交通渋滞が減り始めた場合、交通渋滞から依然として離れたところにいる車両は、交通渋滞に影響を受けないことがある。それにもかかわらず、それらの車両のドライバは、そうする必要がなくても、交通渋滞を回避するために、代替的な経路を選択することがあり、車両が、交通渋滞発生場所に到達するまでに、交通渋滞が解消していることもある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ナビゲーション・システムにおいて移動イベントを検出し、及びシミュレートする方法、システム及びコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００５】
方法は、少なくとも１つの移動イベント（moving event）についてのイベント・データを受け取ることを含む。イベント・データから、移動イベントについての移動イベント・データを生成することができる。移動イベント・データは、移動イベントの傾向を示すことができる。方法は、移動イベント・データを関数型データ構造に格納することを含むこともできる。方法は、複数の車両の各々について、車両についての履歴走行パターン・データにアクセスし、履歴走行パターン・データに基づいて、車両が移動イベントに影響を受ける確率を求めることを含むこともできる。方法は、複数の車両の各々について、プロセッサを用いて、車両についての履歴パターン・データ及び移動イベントの傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することを含むこともでき、移動イベント・シミュレーションは、複数の将来の時間間隔の各々における、車両の将来の位置及び移動イベントの将来の位置を予測する。方法は、複数の車両の各々について、移動イベント・シミュレーションに基づいて、車両が移動イベントと交差する経路を移動する場合、いつ車両が少なくとも１つの移動イベントに影響を受けるかを判断することを含むこともできる。方法は、複数の車両の各々について、車両が移動イベントに影響を受ける確率が閾値を超えると判断することに応答して、車両と関連したクライアント・デバイスに、少なくとも１つの移動イベント、及び車両が少なくとも１つの移動イベントに影響を受ける時間を含む通知を通信することを含むこともできる。
【０００６】
従って、車両のドライバに、イベントだけでなく、いつドライバが実際に移動イベントに影響を受け得るかを通知することができる。この点で、各車両についての履歴パターン・データを用いて、各車両についての時間・距離データ・アレイを生成することができ、時間・距離データ・アレイを、移動イベントの傾向を用いて処理して、移動イベント・シミュレーションを生成することができる。時間・距離データ・アレイは、車両が種々の距離を移動する時間を示すことができる。車両が種々の距離を移動する時間は、車両と移動イベントとの間に位置する少なくとも１つの他のイベントに少なくとも部分的に基づき得る。
【０００７】
１つの構成において、移動イベントについての移動イベント・データを生成することは、イベント・データについてのタイム・スタンプが既存のイベント・データの閾値期間内であるかどうかを判断することと、イベント・データについてのタイム・スタンプが、移動イベントに関係する既存のイベント・データの閾値期間内であると判断することに応答して、関数型データ構造におけるイベント・データ及び既存のイベント・データの組み合わせ（pairwise）を作成することを含むことができる。このことは、移動イベントの傾向の識別を容易にし得る。
【０００８】
システムが、実行可能な動作を開始するようにプログラムされたプロセッサを含む。実行可能な動作は、少なくとも１つの移動イベントについてのイベント・データを受け取ることを含む。イベント・データから、移動イベントについての移動イベント・データを生成することができる。移動イベント・データは、移動イベントの傾向を示すことができる。実行可能な動作は、移動イベント・データを関数型データ構造に格納することを含むこともできる。実行可能な動作は、複数の車両の各々について、車両についての履歴走行パターン・データにアクセスし、履歴走行パターン・データに基づいて、車両が移動イベント・データに影響を受ける確率を求めることを含むこともできる。実行可能な動作は、複数の車両の各々について、車両についての履歴パターン・データ及び移動イベントの傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することを含むこともでき、移動イベント・シミュレーションは、複数の将来の時間間隔の各々における車両の将来の位置及び移動イベントの将来の位置を予測する。実行可能な動作は、複数の車両の各々について、移動イベント・シミュレーションに基づいて、車両が移動イベントと交差する経路を移動する場合、いつ車両が少なくとも１つの移動イベントに影響を受けるかを判断することを含むこともできる。実行可能な動作は、複数の車両の各々について、車両が移動イベントに影響を受ける確率が閾値を超えると判断することに応答して、車両と関連したクライアント・デバイスに、少なくとも１つの移動イベント及び車両が少なくとも１つの移動イベントに影響を受ける時間を示す通知を通信することを含むこともできる。
【０００９】
コンピュータ・プログラム製品が、プログラム・コードがそこに格納されたコンピュータ可読ストレージ媒体を含む。プログラム・コードは、方法を実行するために、プロセッサにより実行可能である。方法は、プロセッサにより、少なくとも１つの移動イベントについてのイベント・データを受け取ることを含む。イベント・データから、プロセッサにより、移動イベントについての移動イベント・データを生成することができる。移動イベント・データは、移動イベントの傾向を示すことができる。方法は、プロセッサにより、移動イベント・データを関数型データ構造に格納することを含むこともできる。方法は、複数の車両の各々について、プロセッサにより、車両についての履歴走行パターン・データにアクセスし、履歴走行パターン・データに基づいて、車両が移動イベント・データに影響を受ける確率を求めることを含むこともできる。方法は、複数の車両の各々について、プロセッサにより、車両についての履歴パターン・データ及び移動イベントの傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することを含むこともでき、移動イベント・シミュレーションは、複数の将来の時間間隔の各々における車両の将来の位置及び移動イベントの将来の位置を予測する。方法は、複数の車両の各々について、移動イベント・シミュレーションに基づいて、車両が移動イベントと交差する経路を移動する場合、プロセッサにより、いつ車両が少なくとも１つの移動イベントに影響を受けるかを判断することを含むこともできる。方法は、複数の車両の各々について、車両が移動イベントに影響を受ける確率が閾値を超えると判断することに応答して、プロセッサにより、車両と関連したクライアント・デバイスに、少なくとも１つの移動イベント及び車両が少なくとも１つの移動イベントに影響を受ける時間を示す通知を通信することを含むこともできる。
【図面の簡単な説明】
【００１０】
【図１】ネットワーク・データ処理環境の一例を示すブロック図である。
【図２】イベント及び対応する原因コードの例を示すテーブルを示す。
【図３】ナビゲーション・サービスが受け取るイベント・データの例を示すテーブルを示す。
【図４】関数型データ構造に格納されるイベント・データの例を示すテーブルを示す。
【図５】イベント・データを関数型データ構造内に維持する方法の一例を示すフローチャートである。
【図６】車両が移動している、イベントに影響を受ける道路網の一例を示す図である。
【図７】各車両がイベントに影響を受ける確率、並びにいつ及びどこで車両が影響を受けるかの例を示すテーブルを示す。
【図８】いつ車両が移動イベントに影響を受けるかを判断するために、移動イベント・シミュレーションを生成する方法の一例を示すフローチャートである。
【図９】ナビゲーション・サーバ１１０についての例示的なアーキテクチャを示すブロック図である。
【発明を実施するための形態】
【００１１】
本開示は、データ処理システムに関し、より具体的には、ナビゲーション・システムに関する。本明細書に開示される本発明の構成によると、ナビゲーション・サービスは、移動イベントを含むイベントを識別することができる。ナビゲーション・サービスは、各移動イベントについて、例えばイベントが移動している進行方向及び速度などの移動イベントの傾向を識別することができる。ナビゲーション・サービスはまた、複数の車両及び／又はドライバについての履歴走行（trip）パターン・データを処理することもできる。履歴走行パターン・データに基づいて、ナビゲーション・サービスは、車両の各々について、車両の移動（travel）が移動イベントに影響を受ける確率（probability）を判断することができる。さらに、移動イベントの傾向及び履歴走行パターン・データ、並びに移動イベントと車両との間に存在し得る他のイベントに基づいて、ナビゲーション・サービスは、車両の各々が、いつ及び／又はどこで車両の各々が移動イベントに影響を受けるかを判断することができる。例えば、ナビゲーション・サービスは、車両の各々の移動が、いつ及び／又はどこで移動イベントの移動と交わるかを判断することができる。各車両について、車両の移動が移動イベントに影響を受ける確率が閾値を超える場合、ナビゲーション・サービスは、移動イベントと、いつ及び／又はどこで車両が移動イベントに影響を受けるかを示す通知を車両（又は車両のドライバ）に通信することができる。
【００１２】
ここで本文書の全体を通じて適用される幾つかの定義を提示する。
【００１３】
本明細書で定義される場合、用語「イベント」は、車道上の交通の流れに影響を与える出来事を意味する。
【００１４】
本明細書で定義される場合、用語「移動イベント」は、時間が経つにつれて移動する又は拡張するイベントを意味する。
【００１５】
本明細書で定義される場合、用語「クライアント・デバイス」は、サーバからナビゲーション・サービスを要求する、少なくとも１つのプロセッサ及びモリを含む処理システムを意味する。クライアント・デバイスの例として、これらに限定されるものではないが、ナビゲーション・ユニット又はシステム、タブレット・コンピュータ、スマートフォン、携帯情報端末、スマート・ウオッチ、スマート・グラス等が挙げられる。用語「クライアント・デバイス」が本明細書で定義されるとき、ルータ、ファイアウォール、スイッチ、アクセス・ポイント等のようなネットワーク・インフラストラクチャは、クライアント・デバイスではない。
【００１６】
本明細書で定義される場合、用語「〜に応答して（responsive to）」は、動作又イベントに応答すること又は即座に反応することを意味する。従って、第１の動作に「応答して」第２の動作が実行された場合、第１の動作の発生と第２の動作の発生との間に因果関係があり、用語「〜に応答して」は、こうした因果関係を示す。
【００１７】
本明細書で定義される場合、用語「コンピュータ可読ストレージ媒体」は、命令実行システム、装置、又はデバイスにより又はこれらと共に使用されるプログラム・コードを含む又は格納するストレージ媒体を意味する。本明細書で定義される場合、用語「コンピュータ可読ストレージ媒体」は、一時的伝播信号それ自体ではない。
【００１８】
本明細書で定義される場合、用語「プロセッサ」は、プログラム・コード内に含まれる命令を実行するように構成された少なくとも１つのハードウェア回路（例えば、集積回路）を意味する。プロセッサの例として、これらに限定されるものではないが、中央処理ユニット（ＣＰＵ）、アレイ・プロセッサ、ベクトル・プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル論理アレイ（ＰＬＡ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理回路、及びコントローラが挙げられる。
【００１９】
本明細書で定義される場合、用語「リアルタイム」は、ユーザ又はシステムが、特定のプロセス又は決定が行われるために十分に即時であると感知する、又はプロセッサが何らかの外部プロセスに後れを取らないことを可能にする処理応答性のレベルを意味する。
【００２０】
本明細書で定義される場合、用語「出力」は、メモリ要素内に格納すること、ディスプレイ又は他の周辺出力デバイスに書き込むこと、別のシステムに送信又は伝送すること、エクスポートすること、又は同様の動作を意味する。
【００２１】
本明細書で定義される場合、用語「ドライバ」は、車両を運転している人（すなわち、人間）、又は車両を自動的に運転するように構成された処理システムを意味する。
【００２２】
本明細書で定義される場合、用語「自動的に」は、ユーザの介入がないことを意味する。
【００２３】
図１は、コンピューティング環境１００の一例を示すブロック図である。コンピューティング環境１００は、ナビゲーション・サービス１１２をホストするナビゲーション・サーバ１１０を含むことができる。コンピューティング環境１００は、複数のクライアント・デバイス１２０、１２２、１２４、１２６を含むこともできる。ナビゲーション・サーバ１１０及びクライアント・デバイス１２０〜１２６の各々は、少なくとも１つのプロセッサ及びメモリを含むことができる。クライアント・デバイス１２０〜１２６は、少なくとも１つの通信ネットワーク１３０を介して、ナビゲーション・サーバ１１０に通信可能にリンクすることができる。次に、通信ネットワーク１３０は、コンピューティング環境１００内で互いに接続される種々のデバイスとデータ処理システムとの間に通信リンクを提供するために使用される媒体である。通信ネットワーク１３０は、有線、無線通信リンク、又は光ファイバ・ケーブルのような接続を含むことができる。通信ネットワーク１３０は、ＷＡＮ、ＬＡＮ、無線ネットワーク、モバイル・ネットワーク、仮想プライベート・ネットワーク（ＶＰＮ）、インターネット、公衆交換電話網（ＰＳＴＮ）、又は類似の技術のような種々の異なる通信技術のいずれかとして実装すること、又はそれらを含むことが可能である。
【００２４】
動作において、ナビゲーション・サービス１１２は、１つ又は複数のイベント・データソースからイベント・データ１４０を受け取り、イベント・データ１４０を、リアルタイムで１つ又は複数の複数の関数型データ構造に、例えば１つ又は複数の移動イベント・データ・テーブル１４２に格納することができる。例えば、ナビゲーション・サービス１１２は、クライアント・デバイス１２０〜１２６、交通及び車道上の移動に影響を与えるイベントを監視する１つ又は複数の物理センサ及び／又は仮想センサ、及び／又は１つ又は複数の他のシステムの１つ又は複数から、イベント・データ１４０を受け取ることができる。イベント・データ１４０により表されるイベントの例は、これに限定されるものではないが、ＩＳＯ／ＴＳ  １８２３４−９（ＴＰＥＧ１−ＴＥＣ  Ｐａｒｔ９）、セクション７．３．２に示されるイベントを含むことができる。図２は、見出し「説明」の下のイベント２０２及び見出し「原因コード」の下の対応する原因コード２０４の例を示すテーブル２００を示す。
【００２５】
図３は、ナビゲーション・サービス１１２が受け取ったイベント・データ１４０の例を示すテーブル３００を示す。イベント・データ１４０は、原因コード２０４を用いてイベントを示すことができる。さらに、イベント・データ１４０は、各イベントについてのイベント識別子３０２、各イベントについてのタイム・スタンプ３０４（例えば、イベントがいつ最初に検出されたかを示すタイム・スタンプ）、各イベントの位置３０６（例えば、ＧＰＳ座標、住所、マイル・マーカー等）、各イベントについてのリンク識別子３０８、及び随意的にイベントに関連する他のデータ（図示せず）を含むことができる。リンク識別子３０８は、特定の道路マップ（例えば、デジタル化道路マップ）及びイベントに影響を受けるそのマップ内の領域（例えば、道路）を示すことができる。他のデータの例は、これらに限定されるものではないが、イベントが続行すると予想される期間、イベントが終了すると予想される時間、イベントに起因する交通パターンへの影響のレベル等を示すデータを含む。
【００２６】
図４は、ナビゲーション・サービス１１２により、関数型データ構造、例えば移動イベント・データ・テーブル１４２に格納されたイベント・データの例を示すテーブル４００を示す。テーブル４００は、選択されたイベントについて、原因コード２０４、タイム・スタンプ３０４、位置データ３０６、及びイベントに関するイベント・データ１４０内に含まれるリンク識別子３０８を含むことができる。テーブル４００はまた、選択されたイベントについて、移動イベント識別子４０２を含むこともできる。移動イベント識別子４０２は、関数型データ構造内のイベントに割り当てられる識別子とすることができる。テーブル４００は、イベントの傾向を示す傾向データ４０４、例えば、イベントが移動している進行方向及び速度、移動イベントの強度の変化（例えば、記述の増減）等を示す傾向データ４０４を含むこともできる。例証として、異なる時期に受け取った異なるイベント・データ１４０内に同じイベントが示される場合、ナビゲーション・サービス１１２は、ぞれぞれのイベント・データ１４０内に示される位置から、イベントが移動している進行方向及び速度を判断することができる。テーブル４００は、随意的に選択されたイベント（図示せず）に関連する他のデータを含むこともできる。
【００２７】
関数型データ構造に格納されるイベント・データが、受け取ったイベント・データ１４０の全てを含む必要はない。代わりに、ナビゲーション・サービス１１２は、どのイベント・データ１４０を格納するかを選択的に選び、関数型データ構造内に含まれるデータを選択的に更新することができる。例えば、ナビゲーション・サービス１１２が、これまで報告されていないイベントについてのイベント・データ１４０を受け取った場合、ナビゲーション・サービス１１２は、そのイベント・データ１４０を移動イベント・データ・テーブル１４２に付加することができる。しかしながら、ナビゲーション・サービス１１２が既に報告されているイベントについてのイベント・データ１４０を受け取った場合、ナビゲーション・サービス１１２は、随意的に、新しいイベント・データ１４０を用いて、移動イベント・データ・テーブル１４２を更新することができる。
【００２８】
図５は、移動イベント・データ・テーブル１４２のような関数型データ構造内にイベント・データを維持する方法５００の例を示すフローチャートである。ステップ５０２において、ナビゲーション・サービス１１２は、イベントを示すイベント・データ１４０を受け取ることができる。ステップ５０４において、ナビゲーション・サービス１１２は、既に報告されているイベント・データ１４０のための時間窓を選択し、随意的に、その時間窓内のイベントを時系列でソートすることができる。
【００２９】
決定ボックス５０６において、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０が既存のイベント・データ１４０により示されるイベントに関係するかどうかを判断することができる。例えば、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０についての原因コード２０４及びリンク識別子３０８が、既存のイベント・データについての原因コード２０４及びリンク識別子３０８と合致するかどうかを判断することができる。合致する場合、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０が、既存のイベント・データ１４０により示される同じイベントに関係すると判断することができる。
【００３０】
別の構成において、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０内に示される位置３０６が、受け取ったイベント・データ１４０と同じ原因コード２０４を有する既存のイベント・データ１４０により示される同じ位置３０６であるかどうかを判断することができる。そうである場合、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０及び既存のイベント・データ１４０が同じイベントに関係すると判断することができる。さらに別の構成において、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０内に示される位置３０６が同じ道路上にあり、かつ、受け取ったイベント・データ１４０と同じ原因コード２０４を有する既存のイベント・データ１４０により示される位置３０６から閾値距離内にあるかどうかを判断することができる。そうである場合、これは、受け取ったイベント・データ１４０及び既存のイベント・データ１４０が同じイベントに関係するが、イベントは移動している可能性があることを示し得る。従って、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０及び既存のイベント・データ１４０が同じイベントに関係すると判断することができる。閾値距離は、特定の原因コード２０４に基づいて決定することができる。例えば、ナビゲーション・サービス１１２は、交通渋滞、道路工事、通行不可、火事、危険走行状態、車道上の動物又歩行者、通行違反車両、極端な気象条件、視程減少、降水、無謀な歩行者、低速移動車両、車列の危険終端、火災危険、時間遅延等のような、移動し得る種々のイベントについての閾値距離を指定することができる。
【００３１】
例証として、受け取ったイベント・データ１４０が事故についての原因コード２０４を示し、受け取ったイベント・データ１４０により示される位置３０６が、同じ原因コード２０４を有する既存のイベント・データ１４０により示される位置３０６と同じである場合、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０が、以前のイベント・データ１４０内に示される同じ事故に関係すると判断することができる。しかしながら、受け取ったイベント・データ１４０により示される位置３０６が、既存のイベント・データ１４０により示される位置３０６と同じではない場合、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０が、以前のイベント・データ１４０内に示されるものとは異なる事故を示すと判断することができる。
【００３２】
別の例において、受け取ったイベント・データ１４０及び既存のイベント・データ移動イベント・データ・テーブル１４０移動イベント・データ・テーブル１４０の両方とも、交通渋滞についての原因コード２０４を示すと仮定する。受け取ったイベント・データ１４０により示される位置３０６が既存のイベント・データ１４０内に示される位置３０６と同じでないが、それぞれの位置３０６は互いの閾値距離内にある場合、これは、受け取ったイベント・データ１４０及び既存のイベント・データ１４０の両方とも、同じ交通渋滞に関係することを示し得る。従って、ナビゲーション・サービス１１２は、時間が経つにつれてそのイベントが移動した可能性があっても、受け取ったイベント・データ１４０及び既存のイベント・データ１４０は同じイベントに関係すると判断することができる。
【００３３】
受け取ったイベント・データ１４０が、既存のイベント・データ１４０により示されるイベントに関係する場合、ステップ５０８において、ナビゲーション・サービス１１２は、受け取ったイベント・データを移動イベント・データ・テーブル１４２に付加することができる。受け取ったイベント・データ１４０が既存のイベント・データ１４０により示されるイベントに関係する場合、プロセスは、決定ボックス５１０に進むことができる。
【００３４】
決定ボックス５１０において、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０についてのタイム・スタンプが、同じイベント（例えば、受け取ったイベント・データと同じ原因コード２０４及びリンク識別子３０８を有する）に関係する既存のイベント・データ１４０の閾値期間内であるかどうかを判断することができる。そうでない場合、ステップ５１２において、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０を無視することができる。別の構成においては、ナビゲーション・サービス１１２は、移動イベント・データ・テーブル１４２からの同じイベントに関係する既存のイベント・データ１４０を削除し、受け取ったイベント・データ１４０を移動イベント・データ・テーブル１４２に付加することができる。
【００３５】
受け取ったイベント・データ１４０についてのタイム・スタンプが、受け取ったイベント・データ１４０と同じイベントに関係する既存のイベント・データ１４０の閾値期間内である場合、ステップ５１４において、ナビゲーション・サービス１１２は、受け取ったイベント・データ１４０及び既存のイベント・データ１４０のペアワイズ組み合わせを作成することができる。例えば、ナビゲーション・サービス１１２は、移動イベント・データ・テーブル１４２において、既存のイベント・データ１４０の記録を更新することができる。こうした更新は、記録内のタイム・スタンプを、受け取ったイベント・データ１４０内に示されるタイム・スタンプ３０４となるように更新すること、及び、記録内に示される位置データ３０６を、受け取ったイベント・データ１４０内に示される位置となるように更新することを含むことができる。さらに、既存のイベント・データ１４０内に示される位置３０６及びタイム・スタンプ３０４、並びに受け取ったイベント・データ１４０内に示される位置３０６及びタイム・スタンプ３０４に基づいて、ナビゲーション・サービス１１２は、イベントの傾向４０４を判断し、判断した傾向４０４を記録に付加することができる。例証として、受け取ったイベント・データ１４０が、イベントが既存のイベント・データ１４０内に示される位置から移動していることを示す場合、ナビゲーション・サービス１１２は、それぞれの位置３０６の間の距離、及びそれぞれのタイム・スタンプ３０４の間の差に基づいて移動を判断し、移動の進行方向及び速度を傾向４０４として示すことができる。
【００３６】
受け取ったイベント・データ１４０を処理する間、ステップ５０８、５１２、５１４に関係なく、ナビゲーション・サービス１１２は、受け取った新しいイベント・データ１４０の各々について方法５００を繰り返すことができる。さらに、新しいイベント・データ１４０の受信に応答して、決定ステップ５０６及び５１０を実行するために、ナビゲーション・サービス１１２は、少なくとも、ステップ５０４のために使用される時間窓に匹敵する閾値期間、各イベント・データ１４０のログを維持することができる。例えばデータはナビゲーション・サービス１１２により受け取られるので、ナビゲーション・サービス１１２は、方法５００において説明されるプロセスを実行することができる。
【００３７】
再び図１を参照すると、ナビゲーション・サービス１１２は、複数の車両の各々について、履歴走行パターン・データ１６０を受け取ることができる。ナビゲーション・サービス１１２は、クライアント・デバイス１２０〜１２６、ナビゲーション・サービス１１２により維持される１つ又は複数の関数型データ構造（例えば、データベース・テーブル）、又はこうしたデータの１つ又は複数の他のソースから、履歴走行パターン・データ１６０を受け取ることができる。履歴走行パターン・データ１６０は、運転パターン、移動経路、行った進路変更、種々の車道に沿って移動した速度、種々の交差点で費やした時間等に関するデータを含むことができる。
【００３８】
各車両についての履歴走行パターン・データ１６０は、車両自体についての履歴走行データ、及び／又は車両のドライバについての履歴走行データを含むことができる。例えば、ナビゲーション・サービス１１２が、特定の車両の知識を有するが、その車両の実際のドライバの知識を有さない場合、ナビゲーション・サービス１１２は、その車両についての履歴走行パターン・データ１６０を、履歴走行パターン・データ１６０として受け取ることができる。しかしながら、ナビゲーション・サービス１１２が車両を運転する特定のドライバの知識を有する場合、ナビゲーション・サービス１１２は、そのドライバについての履歴走行パターン・データ１６０を、車両についての履歴走行パターン・データ１６０として受け取ることができる。
【００３９】
例えば、履歴走行パターン・データ１６０は、車両に搭載されたナビゲーション・システムにより与えられるＧＰＳに基づいているが、複数の人が該車両を運転する場合、履歴走行パターン・データ１６０は、いずれか特定の人の運転パターンに基づいていないことがある。代わりに、履歴走行パターン・データ１６０は、車両を運転する人の全ての運転パターンに基づき得る。しかしながら、ナビゲーション・サーバ１１０又は車両のナビゲーション・システムは、車両が運転される際、その車両を運転している各々の人を識別する場合、履歴走行パターン・データ１６０は、その車両を運転している間の特定の人の運転パターン、及び／又は１又は複数の車両を運転している間の特定の人の運転パターンに基づき得る。
【００４０】
別の例において、履歴走行パターン・データ１６０が、ドライバのモバイル・デバイス（例えば、スマートフォン又はタブレット・コンピュータ）により提供されるＧＰＳデータに基づく場合、履歴走行パターン・データ１６０は、その特定のＧＰＳデータに基づき得る。さらに、ドライバは、異なる車両を運転することがある。履歴走行パターン・データ１６０が、ドライバのモバイル・デバイスから取得された場合、ナビゲーション・サーバ１１０が特定の車両の知識を有しているかどうかに関係なく、履歴走行データは、そのドライバにより運転されるあらゆる車両についての履歴走行パターン・データ１６０として使用することができる。言い換えれば、ナビゲーション・サーバ１１０は、車両のドライバに割り当てられたユーザ識別子、又はドライバのモバイル・デバイスに割り当てられた識別子に基づいて、車両を識別することができる。
【００４１】
履歴走行パターン・データ１６０に基づいて、ナビゲーション・サービス１１２は、現在アクティブな各々のイベントについて、各車両（又はドライバ）についての時間・距離データ・アレイ１５０を生成することができる。時間・距離データ・アレイ１５０は、各車両が移動できる目的地、及びそうした目的地に移動する間、車両が様々な距離、例えば様々な位置の間を移動する時間を示すころができる。さらに、ナビゲーション・サービス１１２は、イベントに影響を受け得る、車両が移動できる移動経路を識別することができる。例えば、時間距離グラフは、イベントから異なる距離において、車両がそれらの距離からイベントに達するのにかかる平均時間を示すことができる。例証において、ナビゲーション・サービス１１２は、イベントから閾値距離内の領域をカバーする車道のマップにアクセスすることができる。ナビゲーション・サービス１１２は、各ノードの車道ノード（例えば、交差点）について、そのノードからイベントまで移動するのに、車両により最も一般的に使用される経路を判断し、車両がそのノードからイベントの位置まで移動するのにかかる平均時間を求めることができる。平均時間を求めると、ナビゲーション・サービス１１２は、車道に沿って車両により（又は車両の特定のドライバにより）運転される平均速度、種々の交差点、信号等において車両が停止する平均時間を示す入力パラメータを処理することができる。さらに、平均時間を求めると、ナビゲーション・サービス１１２は、時間・距離データ・アレイ１５０が生成される車両とイベントとの間に配置され得る他のイベントを考慮に入れることもできる。
【００４２】
履歴走行パターン・データ１６０及び時間・距離データ・アレイ１５０に基づいて、各イベントについて、ナビゲーション・サービス１１２は、各車両について、車両がイベントに影響を受ける確率、及び図６及び図７を参照して説明される以下の例に示されるように、いつ／どこで車両がイベントに影響を受けるかを示す方向確率（direction probability）データ１７０を生成することができる。特定の車両についての方向確率データ１７０は、車両の特定のドライバの運転パターン、又は車両を運転する複数のドライバの運転パターンに基づき得る。
【００４３】
図６は、車両６１０、６１２、６１４が移動している、イベントに影響を受ける道路網６００の例を示す図である。図７は、各車両６１０、６１２、６１４がイベントに影響を受ける確率、いつ、どこで車両が影響を受けるかを示すテーブル７００を示す。
【００４４】
図６を参照すると、道路網６００は、ノード（例えば、交差点）Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５により接続される道路Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６を含むことができる。この例において、道路Ｒ３及びＲ６はノードＮ２で併合し、道路Ｒ３及びＲ６から、車両は道路Ｒ１又道路Ｒ２に進むことができると仮定する。また、道路Ｒ５から、ノードＮ３において、車両は道路Ｒ３又は道路Ｒ４に進むことができると仮定する。さらに、道路Ｒ１上に移動イベントＭＥがあり、イベントは、５ｋｍ／時の速度で道路Ｒ１に沿ってノードＮ２に向けて移動している。
【００４５】
ナビゲーション・サービス１１２は、道路網の種々のノードＮ１〜Ｎ５において、特定の車両が特定の道路Ｒ１〜Ｒ６に進む確率を判断することができる。さらに、これらの確率に基づいて、ナビゲーション・サービス１１２は、各車両６１０、６１２、６１４について、車両がイベント６２０により影響を受ける道路Ｒ１上を移動する確率、車両がイベント６２０に達するまでの時間、及び車両がイベント６２０に達する位置を判断することができる。イベントが移動イベント（すなわち、時間が経つにつれて移動する）である場合、車両がイベント６２０に達する位置及び時間は、互いに依存する。
【００４６】
各車両６１０、６１２、６１４について、ナビゲーション・サービス１１２は、その車両についての履歴走行パターン・データ１６０を分析し、車両が、特定のノードＮ１〜Ｎ５において特定の道路Ｒ１〜Ｒ５上に進む確率を求め、確率データを図７のテーブル７００、又は別の好適な関数型データ構造に格納することができる。例証において、車両６１０は、ノードＮ３に向かう道路Ｒ５上を移動しているが、ナビゲーション・サービス１１２は、Ｎ３において、車両６１０がＲ３に進む確率７１０及び車両６１０が道路Ｒ４に進む確率７１２を求めることができる。さらに、車両６１０は道路Ｒ３に進むと仮定して、ナビゲーション・サービス１１２は、ノードＮ２において、車両６１０が道路Ｒ１に進む確率７１４及び車両６１０が道路Ｒ２に進む確率７１６を求めることができる。移動イベント６２０は道路Ｒ１に影響を与えるので、車両６１０が道路Ｒ１に進む場合、車両６１０は、イベント６２０に影響を受け得る。従って、車両６１０がイベント６２０に影響を受ける確率７１８は、車両６１０の現在位置から、車両が道路Ｒ１に進む確率を求めることによって、決定することができる。従って、ナビゲーション・サービス１１２は、確率７１０、７１４に基づいて、例えば確率７１４と確率７１０を乗算することによって、確率７１８を求めることができる。
【００４７】
この例では、車両６１２は、現在道路Ｒ３上を移動している。ナビゲーション・サービス１１２は、ノードＮ２において、車両６１２が道路Ｒ１に進む確率７２０、及び車両６１２が道路Ｒ２に進む確率７２２を求めることができる。移動イベント６２０は道路Ｒ１に影響を与えるので、車両６１２が道路Ｒ１に進む場合、車両６１２は、イベント６２０に影響を受け得る。従って、車両６１２がイベント６２０に影響を受ける確率７２６は、車両６１２の現在位置から、車両が道路Ｒ１に進む確率に基づいて決定することができる。従って、ナビゲーション・サービス１１２は、確率７２０に基づいて、確率７２６を求めることができる。例えば、ナビゲーション・サービス１１２は、確率７２６を、確率７２０と等しくなるように設定することができる。車両６１４がイベント６２０に影響を受ける確率７３０は、同様の方法で求めることができる。ナビゲーション・サービス１１２は、方向確率データ１７０（図１）として確率７１０〜７３０を格納することができる。
【００４８】
この時点で、道路網６００は、上記の例に限定されるものではなく、任意の数のノード及び道路を含み得ることを留意されたい。ナビゲーション・サービス１１２は、任意の数のノードに対して、どの道路を車両が進むことができるかの確率を求めることができる。従って、ナビゲーション・サービス１１２は、任意の数のこうしたノード確率に基づいて、車両が移動イベントに影響を受ける確率を求めることができる。
【００４９】
述べたように、イベント６２０は、時間が経つにつれて移動する移動イベントとすることができる。時間・距離データ・アレイ１５０及び方向確率データ１７０を用いて、ナビゲーション・サービス１１２は、各車両６１０〜６１４について移動イベント・シミュレーション１８５を生成することによって、各車両に対する移動イベント６２０の影響をシミュレートすることができる。例えば、ナビゲーション・サービス１１２は、移動イベント・シミュレーション１８５を生成するために、移動イベント・シミュレータ１８０を含むこと、又はこれにアクセスすることができる。移動イベント・シミュレーション１８５は、各車両６１０〜６１４について、いつ、どこで車両６１０〜６１４がイベント６２０に遭遇するか、及び車両６１０〜６１４に対するイベント６２０の影響を予測することができる。イベント６２０の影響に関して、特定の車両６１０〜６１４についての移動イベント・シミュレーション１８５は、イベント６２０を通って又はこれの近くを移動する間、車両６１０〜６１４が移動できる速度、車両６１０〜６１４がイベント６２０のために閾値期間、停止されるかどうか、及び／又は車両６１０〜６１４がイベント６２０を通って移動する又は通り過ぎるのにどれくらいかかるかを示すことができる。
【００５０】
例証において、移動イベント・シミュレータ１８０は、イベント６２０及び車両６１０〜６１４の各々の現在位置を識別することができる。時間・距離データ・アレイ１５０を用いて、移動イベント・シミュレータ１８０は、車両６１０〜６１４がそれぞれの道路Ｒ１〜Ｒ５に沿って移動できるそれぞれの速度を求めることができる。さらに、移動イベント・シミュレータ１８０は、傾向データ４０４（図４）を用いて、イベント６２０の進行方向及び速度を判断することができる。一連の複数の将来の時間間隔の各々において、移動イベント・シミュレータ１８０は、車両６１０〜６１４の各々の将来の位置及びイベント６２０の将来の位置を予測することができる。例えば、移動イベント・シミュレータ１８０は、こうした予測を、現在の時刻から１秒ごと、５秒ごと、１０秒ごと、３０秒ごと、１分ごと、５分ごと、１０分ごと等に行うことができる。予測に基づいて、各車両６１０〜６１４について、移動イベント・シミュレータ１８０は、車両６１０〜６１４の位置がイベント６２０の位置と交差し、従って、イベントに影響を受けると考えられる時間及び位置を識別し、車両６１０〜６１４が、イベント６２０が位置する道路Ｒ１に進むと仮定する。各車両６１０〜６１４についてのこうした時間７４０及び位置７５０は、テーブル７００内に示される。時間７４０及び位置７５０は、方向確率データ１７０と共に、又は別の好適な関数型データ構造内に格納することができる。
【００５１】
車両６１０〜６１４の各々が、確率７１０〜７１６及び７２０〜７２２により示されるように、種々の道路Ｒ１〜Ｒ６に進むことも又は進まないこともあり、道路Ｒ１〜Ｒ６に進む多数の他の車両６１０〜６１４は、特定の車両６１０〜６１４がイベント６２０と交差する時間に影響を与えることがある。移動イベント・シミュレータ１８０は、各車両６１０〜６１４についての確率７１０〜７１６並びに７２０及び７２２を処理し、道路Ｒ１〜Ｒ６の各々における交通のレベルの確率を求めることができる。移動イベント・シミュレータ１８０は、それぞれの車両６１０〜６１４についての履歴走行パターン・データ１６０によりこうした確率を処理し、予想される交通レベルに鑑みて、それぞれの道路Ｒ１〜Ｒ６における各車両の速度をシミュレートすることができ、それは、少なくとも部分的に確率７１０〜７１６及び７２０〜７２２に基づくことができる。さらに、移動イベント・シミュレータ１８０は、こうした確率を処理して、イベント６２０（例えば、交通渋滞）への他の車両６１０〜６１４の予想される影響を判断することができる。イベント６２０への他の車両６１０〜６１４の予想される影響に基づいて、移動イベント・シミュレータ１８０は、傾向４０４（図４）を更新し、更新された傾向４０４を用いて、時間７４０及び位置７５０を判断することができる。例えば、各々の時間間隔におけるそれぞれの車両６１０〜６１４の各々の位置を判断するために、移動イベント・シミュレータ１８０は、全ての車両の交通パターンを判断することができる。こうした交通パターンを判断することは、同じ道路Ｒ１〜Ｒ６上の他の車両３１０〜３１４の予想数、車両３１０〜３１４の各々についての履歴走行パターン・データ１６０、及びイベント６２０の傾向４０４に基づいて、道路Ｒ１〜Ｒ６の各々上のそれぞれの車両６１０〜６１４の各々の予想速度を求めることを含むことができる。
【００５２】
場合によっては、イベント６２０は、移動しないイベント、例えば交通事故であり得る。それにもかかわらず、移動イベント・シミュレータ１８０は、上記のプロセスを実行し、時間データ７４０及び位置データ７５０を判断することができる。こうした場合、イベントの傾向データ４０４がない場合があり、従って、車両６１０〜６１４がイベント６２０に影響を受け得る時間７４０及び位置７５０を判断するために、移動イベント・シミュレータ１８０により、傾向データ４０４を考慮する必要はない。他の場合には、１つのイベントが別のイベントをトリガすることがある。例えば、第１のイベントは交通事故とすることができ、第２のイベントは、交通事故により引き起こされる交通渋滞とすることができる。例えば、既述したように、移動イベント・シミュレータ１８０は、上記のプロセスを実行して、イベント及び交通パターンに対するその影響の両方を分析することによって、車両６１０〜６１４の各々について時間７４０及び位置７５０を判断することができる。
【００５３】
確率７１８、７２６、７３０に基づいて、ナビゲーション・サービス１１２は、車両６１０〜６１４の各々について、こうした車両６１０〜６１４が、イベント６２０（又は複数のイベント）に影響を受ける可能性が高いかどうかを判断することができる。例えば、ナビゲーション・サービス１１２は、イベント６２０に影響を受ける確率７１８、７２６、７３０が閾値を超える車両６１０〜６１４を識別し、関数型データ構造、例えば、影響を受ける車両／ドライバ・データ・テーブル１９０内のこうした車両６１０〜６１４を指し示すことができる。さらに、車両の指示により、ナビゲーション・サービス１１２は、イベントの原因コード２０４、及び車両６１０〜６１４がイベントに影響を受けるそれぞれの確率７１８、７２６、７３０を示すことができる。
【００５４】
各々こうした車両６１０〜６１４がイベント６２０（又は複数のイベント）に影響を受ける可能性が高いことを識別することに応答して、ナビゲーション・サービス１１２は、車両通知１９５を、それぞれの車両６１０〜６１４と関連したクライアント・デバイス１２０〜１２６（例えば、車両のナビゲーション・システム、車両のドライバのスマートフォン又はタブレット・コンピュータ等）に伝えることができる。例えば、ナビゲーション・サービス１１２は、車両通知１９５を、車両６１０〜６１４がイベント６２０に影響を受ける確率７１８、７２６、７３０が閾値を超える（例えば、０．１、０．２、０．３、０．４、０．５又は０．６より大きい）各車両６１０〜６１４（又はドライバ）に通信することができる。各々の車両通知１９５は、通知１９５をトリガするイベント６２０、車両６１０〜６１４がイベント６２０に影響を受ける時間７４０、及び車両６１０〜６１４がイベント６２０に影響を受ける位置７５０を示すことができる。車両通知１９５に基づいて、車両６１０〜６１４のそれぞれのドライバは、イベント６２０を回避するために、代替的な経路上を移動することを選択し得る。ドライバがそうすることを選択しない場合、ドライバには、依然としてイベント６２０の発生に関する通知が行われ、イベント６２０のために発生し得るあらゆる遅延に備えることができる。
【００５５】
１つの限定されない構成において、各車両６１０〜６１４について、それぞれの車両通知１９５を通信することに応答して、ナビゲーション・サービス１１２は、影響を受ける車両／ドライバ・データ・テーブル１９０から車両６１０〜６１４を取り除くことができる。従って、車両６１０〜６１４は、付加的な通知１９５を受け取る必要がない。別の構成において、影響を受ける車両６１０〜６１４の各々は、車両６１０〜６１４がイベント６２０と交差するまで、又はイベント６２０を通り過ぎるまで、定期的な間隔で付加的な通知１９５を受け取ることができる。
【００５６】
ナビゲーション・サービス１１２は、複数のイベントについて上記のプロセスを繰り返すことができる。例えば、ナビゲーション・サービス１１２は、各車両６１０〜６１４に対するイベント６２０の影響を表すデータを処理し、時間・距離データ・アレイ１５０を更新することができる。ナビゲーション・サービス１１２は、更新された時間・距離データ・アレイ１５０を用いて、車両６１０〜６１４に対する他のイベント、例えばイベント６２０を超えたところに位置する他のイベント、又は車両が道路Ｒ１からノードＮ１を介して別の道路に移動する場合、車両６１０〜６１４に影響を与え得る他のイベントの影響をシミュレートすることができる。
【００５７】
図８は、いつ車両が移動イベントに影響を受けるかを判断するために、移動イベント・シミュレーションを生成する方法８００の例を示すフローチャートである。ステップ８０２において、ナビゲーション・サービス１１２は、少なくとも１つの移動イベントについてのイベント・データを受け取ることができる。ステップ８０４において、ナビゲーション・サービス１１２は、イベント・データから、移動イベントについての移動イベント・データを生成することができ、移動イベント・データは、移動イベントの傾向を示す。一例として、ステップ８０４において、ナビゲーション・サービス１１２は、図５の方法５００を実施し、移動イベント・データを生成することができる。ステップ８０６において、ナビゲーション・サービス１１２は、移動イベント・データを関数型データ構造、例えば移動イベント・データ・テーブル１４２に格納することができる。
【００５８】
ステップ８０８において、ナビゲーション・サービス１１２は、移動している車両（又はドライバ）を識別することができる。ステップ８１０において、ナビゲーション・サービス１１２は、車両についての履歴走行パターン・データにアクセスし、履歴走行パターン・データに基づいて、例えば記述のように、車両が移動イベントに影響を受ける確率を求めることができる。
【００５９】
ステップ８１２において、ナビゲーション・サービス１１２は、プロセッサを用いて、車両についての履歴パターン・データ及び移動イベントの傾向に少なくとも部分的に基づいて、移動イベント・シミュレーションを生成することができる。移動イベント・シミュレーションは、複数の将来の時間間隔の各々における車両の将来の位置及び移動イベントの将来の位置を予測することができる。一例として、ナビゲーション・サービス１１２は、履歴走行パターン・データを処理し、車両についての時間・距離データ・アレイを生成することができる。履歴走行パターン・データは、車両が様々な距離を移動する時間を示すことができる。車両が様々な距離を移動する時間は、車両と移動イベントとの間に位置する少なくとも１つの他のイベントに少なくとも部分的に基づくことができる。ナビゲーション・サービス１１２は、移動イベントの傾向を用いて時間・距離データ・アレイを処理し、移動イベント・シミュレーションを生成することができる。
【００６０】
ステップ８１４において、ナビゲーション・サービス１１２は、移動イベント・シミュレーションに基づいて、車両が移動イベントと交差する経路を移動する場合、いつ車両が少なくとも１つの移動イベントに影響を受けるかを判断することができる。ナビゲーション・サービス１１２はまた、移動イベント・シミュレーションに基づいて、車両が移動イベントと交差する経路を移動する場合、車両がどこで少なくとも１つの移動イベントに影響を受けるかを判断することができる。ステップ８１６において、ナビゲーション・サービス１１２は、車両が移動イベントに影響を受ける確率が閾値を超えると判断することに応答して、車両と関連したクライアント・デバイス（例えば、車両のナビゲーション・システム、車両のドライバのスマートフォン又はタブレット・コンピュータ等）に、少なくとも１つの移動イベント及び車両が少なくとも１つの移動イベントに影響を受ける時間を示す通知を通信することができる。従って、車両のドライバは、通知に基づいて、代替的な経路に進むかどうかを選択することができる。
【００６１】
ステップ８１８において、ナビゲーション・サービス１１２は、移動している次の車両（又はドライバ）を識別することができ、ナビゲーション・サービス１１２は、その車両に対してステップ８１０〜８１６を繰り返すことができる。プロセスは、イベントが除去されるまで繰り返すことができる。ナビゲーション・サービス１１２は、例えばナビゲーション・サービス１１２がイベント・データ１４０の受信を続行するとき、方法８００に説明されるプロセスをリアルタイムで実行することができる。
【００６２】
図９は、ナビゲーション・サーバ１１０のための例示的なアーキテクチャを示すブロック図である。ナビゲーション・サーバ１１０は、システム・バス９０５又は他の好適な回路を通じてメモリ要素９１０に結合された少なくとも１つのプロセッサ９０５（例えば、中央処理ユニット）を含むことができる。従って、ナビゲーション・サーバ１１０は、プログラム・コードをメモリ要素９１０内に格納することができる。プロセッサ９０５は、システム・バス９１５を介してメモリ要素９１０からアクセスされるプログラム・コードを実行することができる。ナビゲーション・サーバ１１０は、本明細書内で説明される機能及び／又は動作を実行することができる、プロセッサ及びメモリを含む任意のシステムの形態で実装することができる。例えば、ナビゲーション・サーバ１１０は、サーバ、通信可能にリンクされた複数のサーバ等として実装できることを理解されたい。
【００６３】
メモリ要素９１０は、例えば、ローカル・メモリ９２０及び１つ又は複数の大容量ストレージ・デバイス９２５のような１つ又は複数の物理メモリ・デバイスを含むことができる。ローカル・メモリ９２０は、ランダム・アクセス・メモリ（ＲＡＭ）、又は一般にプログラム・コードの実際の実行中に用いられる他の非永続型メモリ・デバイスを指す。大容量ストレージ・デバイス９２５は、ハードディスク・ドライブ（ＨＤＤ）、ソリッド・ステート・ドライブ（ＳＳＤ）又は他の永続型データ・ストレージ・デバイスとして実装することができる。ナビゲーション・サーバ１１０はまた、実行中、大容量ストレージ・デバイス９２５からプログラム・コードを取り出さなければならない回数を減らすために、少なくとも何らかのプログラム・コードの一時的ストレージを提供する１つ又は複数のキャッシュ・メモリ（図示せず）を含むこともできる。
【００６４】
１つ又は複数のネットワーク・アダプタ９３０をナビゲーション・サーバ１１０に結合し、ナビゲーション・サーバ１１０が、介在するプライベート又はパブリック・ネットワークを通じて、クライアント・デバイス、他のシステム、コンピュータ・システム、遠隔プリンタ、及び／又は遠隔ストレージ・デバイスに結合されるようになるのを可能にする。モデム、ケーブル・モデム、送受信機、及びイーサネット・カードは、ナビゲーション・サーバ１１０と共に用いることができる異なるタイプのネットワーク・アダプタ９３０の例である。
【００６５】
図９に図示されるように、メモリ要素９１０は、図１のナビゲーション・サーバ１１０のコンポーネント、すなわち、ナビゲーション・サービス１１２、移動イベント・シミュレータ１８０、移動イベント・データ・テーブル１４２、時間・距離データ・アレイ１５０、方向確率データ１７０、移動イベント・シミュレーション１８５、及び影響を受ける車両／ドライバ１９０を示すデータを格納することができる。実行可能プログラム・コードの形で実装される場合、ナビゲーション・サービス１１２及び移動イベント・シミュレータ１８０は、ナビゲーション・サーバ１１０により実行することができ、従って、ナビゲーション・サーバ１１０の一部と考えることができる。さらに、ナビゲーション・サービス１１２、移動イベント・シミュレータ１８０、移動イベント・データ・テーブル１４２、時間・距離データ・アレイ１５０、方向確率データ１７０、移動イベント・シミュレーション１８５、及び影響を受ける車両／ドライバ１９０は、ナビゲーション・サーバ１１０の一部として用いられるときに機能を与える関数型データ構造である。
【００６６】
本開示は、新規な特徴を定める特許請求の範囲で締めくくられているが、本明細書で説明される種々の特徴は、本説明を図面と共に考慮するとより良く理解されるであろう。本開示内で説明されるプロセス、マシン、製造及びそれらのあらゆる変形は、例証の目的で提供される。説明されるあらゆる具体的な構造及び機能は、限定として解釈すべきものではなく、単に、特許請求の範囲の基礎として、及び、事実上あらゆる適切に詳述された構造で説明された特徴を様々に使用することを当業者に教示するための代表的な基礎として解釈すべきものである。さらに、本開示内で用いられる用語及び語句は、限定を意図したものではなく、説明される特徴の理解可能な説明を提供することを意図する。
【００６７】
例示の簡略化及び明確化のため、図面内に示される要素は必ずしも縮尺どおりに描かれていない。例えば、要素の幾つかの寸法は、明確化のために他の要素に対して誇張されている場合がある。さらに、適切であると考えられる場合、、図面の間で、対応する、類似の、又は同様の特徴を示すために、参照番号が繰り返される。
【００６８】
本明細書は、システム、方法、及び／又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに、本発明の態様を実施させるためのコンピュータ可読プログラム命令をそこに有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００６９】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持し、格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード若しくはそこに命令が記録された溝内の隆起構造などの機械的符号化デバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波又は他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又は配線を通じて伝送される電気信号のような、一時的信号それ自体として解釈されるべきではない。
【００７０】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ若しくは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅製伝送ケーブル、光伝送ケーブル、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納するためにコンピュータ可読プログラム命令を転送する。
【００７１】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、ミリコード、ファームウェア命令、状態設定データ、又はＳｍａｌｌｔａｌｋ、Ｃ＋＋等などのオブジェクト指向型プログラミング言語、及び、「Ｃ」プログラミング言語、若しくは同様のプログラミング言語のような従来の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語のいずれかの組み合わせで書かれたソース・コード若しくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、スタンドアロンのソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することにより、コンピュータ可読プログラム命令を実行することができる
【００７２】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して、本明細書で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００７３】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、内部に命令が格納されたコンピュータ可読ストレージ媒体が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実装する命令を含む製品を含むようにすることもできる。
【００７４】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するようにすることもできる。
【００７５】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含むモジュール、セグメント、又は命令の部分を表すことができる。幾つかの代替的な実装において、ブロック内に記載された機能は、図面内に記載された順序とは異なる順序で行われ得ることもある。例えば、連続して示された２つのブロックが、関与する機能に応じて、実際には、実質的に同時に実行されることもあり、又は、ときにはブロックが逆順に実行されることもある。また、ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェア・ベースのシステムによって、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
【００７６】
本明細書で用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈がそうでないことを明確に示していない限り、複数形も含む。用語「含む（include）」、「含んでいる（including）」、「含む（comprise）」、及び／又は「含んでいる（comprising）」は、本開示で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を指定するが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はその群の存在又は付加を除外するものではないことが、さらに理解されるであろう。
【００７７】
本開示の全体を通して、「一実施形態」、「１つの実施形態」、又は同様の文言への言及は、その実施形態に関連して説明される特定の特徴、構造、又は特性が、本開示内で説明される少なくとも１つの実施形態に含まれていることを意味する。本開示の全体を通して、「一実施形態」、「１つの実施形態」という語句、又は同様の文言の出現は、必ずしも全て同一の実施形態を指すわけではない。
【００７８】
本明細書で用いられる場合、「複数」という用語は、２又は２より多いものとして定義される。本明細書で用いられる「別の」という用語は、少なくとも第２の又はもっと多くのものとして定義される。本明細書で用いられる「結合される」という用語は、特段の断りのない限り、介在要素なしに直接接続されるか又は１つ又は複数の介在要素を伴って間接的に接続されるかのいずれかとして定義される。２つの要素は、機械的に、電気的に、又は通信チャネル、経路、ネットワーク若しくはシステムを通じて通信可能に、リンクすることができる。本明細書で用いられる「及び／又は」という用語は、関連して列挙した項目の１つ又は複数のもののいずれかの及び全ての可能な組み合わせを指し及び包含する。第１、第２等の用語は、本明細書において種々の要素を説明するために用いられている場合があるが、これらの要素は、これらの用語によって限定されるべきではなく、それは、これらの用語は、特段の断りのない限り又は文脈がそうでないことを示していない限り、単に１つの要素を別の要素から区別するために用いられているに過ぎないからである。
【００７９】
「もし〜の場合（if）」という用語は、文脈に応じて、「〜のとき」又は「〜すると」又は「判断に応答して」又は「検出に応答して」を意味するものとして解釈することができる。同様に、「これが判断された場合」又は「［記述された条件又はイベント］が検出された場合」という語句は、文脈に応じて、「判断されると」又は「判断に応答して」又は「［記述された条件又はイベント］が検出されると」又は「［記述された条件又はイベント］の検出に応答して」を意味すると解釈することができる。
【００８０】
本発明の種々の実施形態の説明は、例証の目的で提示したものであるが、網羅的であることも、又は開示された実施形態に限定することも意図しない。説明される実施形態の範囲から逸脱することなく、多くの修正及び変形が当業者には明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際的な用途、若しくは市場において見いだされる技術に優る技術的改善を最も良く説明するように、又は当業者が本明細書で開示される実施形態を理解することを可能にするように、選択されたものである。
【符号の説明】
【００８１】
１００：コンピューティング環境
１１０：ナビゲーション・サーバ
１１２：ナビゲーション・サービス
１２０、１２２、１２４、１２６：クライアント・デバイス
１３０：通信ネットワーク
１４０：イベント・データ
１４２：移動イベント・データ・テーブル
１５０：時間・距離データ・アレイ
１６０：履歴走行パターン・データ
１７０：方向確率データ
１８０：移動イベント・シミュレータ
１８５：移動イベント・シミュレーション
１９０：車両／ドライバ
１９５：車両通知
２００、３００、７００：テーブル
２０４：原因コード
３０４：タイム・スタンプ
３０６、７５０：位置
３０８：リンク識別子
３１０、３１２、３１４、６１０、６１２、６１４：車両
４０２：移動イベント識別子
４０４：傾向データ
６００：道路網
６２０：移動イベント
７１０、７１２、７１４、７１６、７１８、７２０、７２２、７２６、７３０：確率
７４０：時間
９０５：プロセッサ
９１０：メモリ要素
９１５：システム・バス
９２０：ローカル・メモリ
９２５：大容量ストレージ・デバイス
９３０：ネットワーク・アダプタ
【図１】
0006912570.tif 000002
【図２】
0006912570.tif 000003
【図３】
0006912570.tif 000004
【図４】
0006912570.tif 000005
【図５】
0006912570.tif 000006
【図６】
0006912570.tif 000007
【図７】
0006912570.tif 000008
【図８】
0006912570.tif 000009
【図９】
0006912570.tif 000010