2

スポーツ トラッカー アプリケーションは通常、トラック全体を保存するために、定期的にタイムスタンプと場所を記録します。次に、分析アプリケーションを使用すると、一定期間 (5 マイルに必要な時間など) の最高速度を示すトラック サブセクションなど、特定の統計を見つけることができます。またはその逆で、特定の時間内に移動した最長距離 (例: 12 分間のクーパー距離)。

そのようなセクションを計算するための最もエレガントかつ/または効率的なアプローチは何だろうと思っています。

素朴なアプローチでは、ウェイポイントを正規化および補間して、固定時間間隔または固定距離ステップのいずれかで、よりきめ細かいウェイポイントのリストを取得します。次に、タイム スパンを表すスライディング ウィンドウを移動します。リスト上で距離セグメントを検索し、私の基準に一致する最適なサブリストを検索します。もっと良い方法はありますか?

4

1 に答える 1

1

優雅さと効率は見る人の目にあります。

個人的には、あなたの補間のアイデアはエレガントだと思います。

内挿アルゴリズムの構築は簡単で、後続のデータに対して実行する検索も簡単に実行できると思います。これは、正確性を簡単に検証できるタイトなコードにつながる可能性があります。さらに、補間アルゴリズムはおそらくすでに存在し、多目的であるため、繰り返す必要はありません(DRY)。提案されたソリューションには、データ処理をデータ分析から分離するという利点があります。この性質のモジュール性は、エレガンスの構成要素と見なされることがよくあります。

効率性-速度、スペース、またはコード行について話しているのですか?補間ステップと検索ステップを組み合わせてスペースを節約することもできますが、これにより速度とコードの単純さが犠牲になる可能性があります。確かに、複数のクエリが以前の計算を利用できないという意味で、速度は犠牲になります。

コードの効率を考えるときは、コンピューターがコードを処理する方法やコードをコーディングする方法についてはそれほど心配しないでください。アプローチの本質的な時間計算量についてより深く考えてください。補間と検索の両方をO(N)時間で実行できると思います。その場合、膨大な量のデータが必要になります。O(N)アルゴリズムのパフォーマンスを非常に悪くすることは困難です。

上記をサポートするために、補間は2つの値の中間点を推定するだけなので、これは値の数で線形であり、中間点の数で線形です。検索は、おそらく線形であるクヌース-モリス-プラットアルゴリズムの数値バリアントを使用して実行できます。

于 2012-12-08T16:38:24.967 に答える