<p>While there are software systems that simplify trajectory streams on the fly, few curve simplification algorithms with quality guarantees fit the streaming requirements. We present streaming algorithms for two such problems under the Fréchet distance <InlineEquation ID="IEq1"> <EquationSource Format="TEX">\(d_F\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi>d</mi> <mi>F</mi> </msub> </math></EquationSource> </InlineEquation> in <InlineEquation ID="IEq2"> <EquationSource Format="TEX">\(\mathbb {R}^d\)</EquationSource> <EquationSource Format="MATHML"><math> <msup> <mrow> <mi mathvariant="double-struck">R</mi> </mrow> <mi>d</mi> </msup> </math></EquationSource> </InlineEquation> for some constant <InlineEquation ID="IEq3"> <EquationSource Format="TEX">\(d \ge 2\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>d</mi> <mo>≥</mo> <mn>2</mn> </mrow> </math></EquationSource> </InlineEquation>. Consider a polygonal curve <InlineEquation ID="IEq4"> <EquationSource Format="TEX">\(\tau \)</EquationSource> <EquationSource Format="MATHML"><math> <mi>τ</mi> </math></EquationSource> </InlineEquation> in <InlineEquation ID="IEq5"> <EquationSource Format="TEX">\(\mathbb {R}^d\)</EquationSource> <EquationSource Format="MATHML"><math> <msup> <mrow> <mi mathvariant="double-struck">R</mi> </mrow> <mi>d</mi> </msup> </math></EquationSource> </InlineEquation> in a stream. We present a streaming algorithm that, for any <InlineEquation ID="IEq6"> <EquationSource Format="TEX">\(\varepsilon \in (0,1)\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>ε</mi> <mo>∈</mo> <mo stretchy="false">(</mo> <mn>0</mn> <mo>,</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq7"> <EquationSource Format="TEX">\(\delta &gt; 0\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>δ</mi> <mo>&gt;</mo> <mn>0</mn> </mrow> </math></EquationSource> </InlineEquation>, maintains a curve <InlineEquation ID="IEq8"> <EquationSource Format="TEX">\(\sigma \)</EquationSource> <EquationSource Format="MATHML"><math> <mi>σ</mi> </math></EquationSource> </InlineEquation> such that <InlineEquation ID="IEq9"> <EquationSource Format="TEX">\(d_F(\sigma ,\tau [v_1,v_i])\le (1+\varepsilon )\delta \)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <msub> <mi>d</mi> <mi>F</mi> </msub> <mrow> <mo stretchy="false">(</mo> <mi>σ</mi> <mo>,</mo> <mi>τ</mi> <mrow> <mo stretchy="false">[</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo stretchy="false">]</mo> </mrow> <mo stretchy="false">)</mo> </mrow> <mo>≤</mo> <mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>+</mo> <mi>ε</mi> <mo stretchy="false">)</mo> </mrow> <mi>δ</mi> </mrow> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq10"> <EquationSource Format="TEX">\(|\sigma |\le 2\,\textrm{opt}-2\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">|</mo> <mi>σ</mi> <mo stretchy="false">|</mo> <mo>≤</mo> <mn>2</mn> <mspace width="0.166667em" /> <mtext>opt</mtext> <mo>-</mo> <mn>2</mn> </mrow> </math></EquationSource> </InlineEquation>, where <InlineEquation ID="IEq11"> <EquationSource Format="TEX">\(\tau [v_1,v_i]\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>τ</mi> <mo stretchy="false">[</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo stretchy="false">]</mo> </mrow> </math></EquationSource> </InlineEquation> is the prefix in the stream so far, and <InlineEquation ID="IEq12"> <EquationSource Format="TEX">\(\textrm{opt} = \min \{|\sigma '|: d_F(\sigma ',\tau [v_1,v_i])\le \delta \}\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mtext>opt</mtext> <mo>=</mo> <mo movablelimits="true">min</mo> <mo stretchy="false">{</mo> <mo stretchy="false">|</mo> <msup> <mi>σ</mi> <mo>′</mo> </msup> <mo stretchy="false">|</mo> <mo>:</mo> <msub> <mi>d</mi> <mi>F</mi> </msub> <mrow> <mo stretchy="false">(</mo> <msup> <mi>σ</mi> <mo>′</mo> </msup> <mo>,</mo> <mi>τ</mi> <mrow> <mo stretchy="false">[</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo stretchy="false">]</mo> </mrow> <mo stretchy="false">)</mo> </mrow> <mo>≤</mo> <mi>δ</mi> <mo stretchy="false">}</mo> </mrow> </math></EquationSource> </InlineEquation>. The working storage is <InlineEquation ID="IEq13"> <EquationSource Format="TEX">\(O(\varepsilon ^{-\alpha })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mi>α</mi> </mrow> </msup> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation>, where <InlineEquation ID="IEq14"> <EquationSource Format="TEX">\(\alpha = 2(d-1){\lfloor d/2 \rfloor }^2 + d\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>α</mi> <mo>=</mo> <mn>2</mn> <mrow> <mo stretchy="false">(</mo> <mi>d</mi> <mo>-</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> <msup> <mrow> <mo>⌊</mo> <mi>d</mi> <mo stretchy="false">/</mo> <mn>2</mn> <mo>⌋</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <mi>d</mi> </mrow> </math></EquationSource> </InlineEquation>. Each vertex is processed in <InlineEquation ID="IEq15"> <EquationSource Format="TEX">\(O(\varepsilon ^{-\alpha }\log \frac{1}{\varepsilon })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mi>α</mi> </mrow> </msup> <mo>log</mo> <mfrac> <mn>1</mn> <mi>ε</mi> </mfrac> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> time for <InlineEquation ID="IEq16"> <EquationSource Format="TEX">\(d \in \{2,3\}\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>d</mi> <mo>∈</mo> <mo stretchy="false">{</mo> <mn>2</mn> <mo>,</mo> <mn>3</mn> <mo stretchy="false">}</mo> </mrow> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq17"> <EquationSource Format="TEX">\(O(\varepsilon ^{-\alpha })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mi>α</mi> </mrow> </msup> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> time for <InlineEquation ID="IEq18"> <EquationSource Format="TEX">\(d \ge 4\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>d</mi> <mo>≥</mo> <mn>4</mn> </mrow> </math></EquationSource> </InlineEquation>. Thus, the whole curve <InlineEquation ID="IEq19"> <EquationSource Format="TEX">\(\tau \)</EquationSource> <EquationSource Format="MATHML"><math> <mi>τ</mi> </math></EquationSource> </InlineEquation> can be simplified in <InlineEquation ID="IEq20"> <EquationSource Format="TEX">\(O(\varepsilon ^{-\alpha }|\tau |\log \frac{1}{\varepsilon })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mi>α</mi> </mrow> </msup> <mo stretchy="false">|</mo> <mi>τ</mi> <mo stretchy="false">|</mo> <mo>log</mo> <mfrac> <mn>1</mn> <mi>ε</mi> </mfrac> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> time. Ignoring polynomial factors in <InlineEquation ID="IEq21"> <EquationSource Format="TEX">\(1/\varepsilon \)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mn>1</mn> <mo stretchy="false">/</mo> <mi>ε</mi> </mrow> </math></EquationSource> </InlineEquation>, this running time is a factor <InlineEquation ID="IEq22"> <EquationSource Format="TEX">\(|\tau |\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">|</mo> <mi>τ</mi> <mo stretchy="false">|</mo> </mrow> </math></EquationSource> </InlineEquation> faster than the best static algorithm that offers the same guarantees. We present another streaming algorithm that, for any integer <InlineEquation ID="IEq23"> <EquationSource Format="TEX">\(k \ge 2\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>k</mi> <mo>≥</mo> <mn>2</mn> </mrow> </math></EquationSource> </InlineEquation> and any <InlineEquation ID="IEq24"> <EquationSource Format="TEX">\(\varepsilon \in (0,\frac{10}{17})\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>ε</mi> <mo>∈</mo> <mo stretchy="false">(</mo> <mn>0</mn> <mo>,</mo> <mfrac> <mn>10</mn> <mn>17</mn> </mfrac> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation>, maintains a curve <InlineEquation ID="IEq25"> <EquationSource Format="TEX">\(\sigma \)</EquationSource> <EquationSource Format="MATHML"><math> <mi>σ</mi> </math></EquationSource> </InlineEquation> such that <InlineEquation ID="IEq26"> <EquationSource Format="TEX">\(|\sigma | \le 2k-2\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">|</mo> <mi>σ</mi> <mo stretchy="false">|</mo> <mo>≤</mo> <mn>2</mn> <mi>k</mi> <mo>-</mo> <mn>2</mn> </mrow> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq27"> <EquationSource Format="TEX">\(d_F(\sigma ,\tau [v_1,v_i])\le (1+\varepsilon ) \cdot \min \{d_F(\sigma ',\tau [v_1,v_i]): |\sigma '| \le k\}\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <msub> <mi>d</mi> <mi>F</mi> </msub> <mrow> <mo stretchy="false">(</mo> <mi>σ</mi> <mo>,</mo> <mi>τ</mi> <mrow> <mo stretchy="false">[</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo stretchy="false">]</mo> </mrow> <mo stretchy="false">)</mo> </mrow> <mo>≤</mo> <mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>+</mo> <mi>ε</mi> <mo stretchy="false">)</mo> </mrow> <mrow> <mo>·</mo> <mo movablelimits="true">min</mo> <mo stretchy="false">{</mo> </mrow> <msub> <mi>d</mi> <mi>F</mi> </msub> <mrow> <mo stretchy="false">(</mo> <msup> <mi>σ</mi> <mo>′</mo> </msup> <mo>,</mo> <mi>τ</mi> <mrow> <mo stretchy="false">[</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo stretchy="false">]</mo> </mrow> <mo stretchy="false">)</mo> </mrow> <mrow> <mo>:</mo> <mo stretchy="false">|</mo> </mrow> <msup> <mi>σ</mi> <mo>′</mo> </msup> <mrow> <mo stretchy="false">|</mo> <mo>≤</mo> <mi>k</mi> <mo stretchy="false">}</mo> </mrow> </mrow> </math></EquationSource> </InlineEquation>, where <InlineEquation ID="IEq28"> <EquationSource Format="TEX">\(\tau [v_1,v_i]\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>τ</mi> <mo stretchy="false">[</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo stretchy="false">]</mo> </mrow> </math></EquationSource> </InlineEquation> is the prefix in the stream so far. The working storage is <InlineEquation ID="IEq29"> <EquationSource Format="TEX">\(O((k\varepsilon ^{-1}+\varepsilon ^{-(\alpha +1)})\log \frac{1}{\varepsilon })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <mrow> <mo stretchy="false">(</mo> <mi>k</mi> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mo>+</mo> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mo stretchy="false">(</mo> <mi>α</mi> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </msup> <mo stretchy="false">)</mo> </mrow> <mo>log</mo> <mfrac> <mn>1</mn> <mi>ε</mi> </mfrac> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation>. Each vertex is processed in <InlineEquation ID="IEq30"> <EquationSource Format="TEX">\(O(k\varepsilon ^{-(\alpha +1)}\log ^2\frac{1}{\varepsilon })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <mi>k</mi> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mo stretchy="false">(</mo> <mi>α</mi> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </msup> <msup> <mo>log</mo> <mn>2</mn> </msup> <mfrac> <mn>1</mn> <mi>ε</mi> </mfrac> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> time for <InlineEquation ID="IEq31"> <EquationSource Format="TEX">\(d \in \{2,3\}\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>d</mi> <mo>∈</mo> <mo stretchy="false">{</mo> <mn>2</mn> <mo>,</mo> <mn>3</mn> <mo stretchy="false">}</mo> </mrow> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq32"> <EquationSource Format="TEX">\(O(k\varepsilon ^{-(\alpha +1)}\log \frac{1}{\varepsilon })\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>O</mi> <mo stretchy="false">(</mo> <mi>k</mi> <msup> <mi>ε</mi> <mrow> <mo>-</mo> <mo stretchy="false">(</mo> <mi>α</mi> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </msup> <mo>log</mo> <mfrac> <mn>1</mn> <mi>ε</mi> </mfrac> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> time for <InlineEquation ID="IEq33"> <EquationSource Format="TEX">\(d \ge 4\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mi>d</mi> <mo>≥</mo> <mn>4</mn> </mrow> </math></EquationSource> </InlineEquation>.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Simplification of Trajectory Streams

  • Siu-Wing Cheng,
  • Haoqiang Huang,
  • Le Jiang

摘要

While there are software systems that simplify trajectory streams on the fly, few curve simplification algorithms with quality guarantees fit the streaming requirements. We present streaming algorithms for two such problems under the Fréchet distance \(d_F\) d F in \(\mathbb {R}^d\) R d for some constant \(d \ge 2\) d 2 . Consider a polygonal curve \(\tau \) τ in \(\mathbb {R}^d\) R d in a stream. We present a streaming algorithm that, for any \(\varepsilon \in (0,1)\) ε ( 0 , 1 ) and \(\delta > 0\) δ > 0 , maintains a curve \(\sigma \) σ such that \(d_F(\sigma ,\tau [v_1,v_i])\le (1+\varepsilon )\delta \) d F ( σ , τ [ v 1 , v i ] ) ( 1 + ε ) δ and \(|\sigma |\le 2\,\textrm{opt}-2\) | σ | 2 opt - 2 , where \(\tau [v_1,v_i]\) τ [ v 1 , v i ] is the prefix in the stream so far, and \(\textrm{opt} = \min \{|\sigma '|: d_F(\sigma ',\tau [v_1,v_i])\le \delta \}\) opt = min { | σ | : d F ( σ , τ [ v 1 , v i ] ) δ } . The working storage is \(O(\varepsilon ^{-\alpha })\) O ( ε - α ) , where \(\alpha = 2(d-1){\lfloor d/2 \rfloor }^2 + d\) α = 2 ( d - 1 ) d / 2 2 + d . Each vertex is processed in \(O(\varepsilon ^{-\alpha }\log \frac{1}{\varepsilon })\) O ( ε - α log 1 ε ) time for \(d \in \{2,3\}\) d { 2 , 3 } and \(O(\varepsilon ^{-\alpha })\) O ( ε - α ) time for \(d \ge 4\) d 4 . Thus, the whole curve \(\tau \) τ can be simplified in \(O(\varepsilon ^{-\alpha }|\tau |\log \frac{1}{\varepsilon })\) O ( ε - α | τ | log 1 ε ) time. Ignoring polynomial factors in \(1/\varepsilon \) 1 / ε , this running time is a factor \(|\tau |\) | τ | faster than the best static algorithm that offers the same guarantees. We present another streaming algorithm that, for any integer \(k \ge 2\) k 2 and any \(\varepsilon \in (0,\frac{10}{17})\) ε ( 0 , 10 17 ) , maintains a curve \(\sigma \) σ such that \(|\sigma | \le 2k-2\) | σ | 2 k - 2 and \(d_F(\sigma ,\tau [v_1,v_i])\le (1+\varepsilon ) \cdot \min \{d_F(\sigma ',\tau [v_1,v_i]): |\sigma '| \le k\}\) d F ( σ , τ [ v 1 , v i ] ) ( 1 + ε ) · min { d F ( σ , τ [ v 1 , v i ] ) : | σ | k } , where \(\tau [v_1,v_i]\) τ [ v 1 , v i ] is the prefix in the stream so far. The working storage is \(O((k\varepsilon ^{-1}+\varepsilon ^{-(\alpha +1)})\log \frac{1}{\varepsilon })\) O ( ( k ε - 1 + ε - ( α + 1 ) ) log 1 ε ) . Each vertex is processed in \(O(k\varepsilon ^{-(\alpha +1)}\log ^2\frac{1}{\varepsilon })\) O ( k ε - ( α + 1 ) log 2 1 ε ) time for \(d \in \{2,3\}\) d { 2 , 3 } and \(O(k\varepsilon ^{-(\alpha +1)}\log \frac{1}{\varepsilon })\) O ( k ε - ( α + 1 ) log 1 ε ) time for \(d \ge 4\) d 4 .