Відповідь залежить від контексту : якщо ви будете досліджувати лише невелику (обмежену) кількість сегментів, ви, можливо, зможете дозволити собі обчислювально дороге рішення. Однак, мабуть, ви хочете включити цей розрахунок у якийсь спосіб пошуку хороших міток. Якщо це так, великою перевагою є рішення, яке або обчислювально швидко, або дозволяє швидко оновлювати рішення, коли сегмент рядка кандидата незначно змінюється.
Наприклад, припустимо, ви маєте намір провести систематичний пошукпо всій з'єднаній складовій контуру, представленій як послідовність точок P (0), P (1), ..., P (n). Це було б зроблено шляхом ініціалізації одного вказівника (індексу в послідовності) s = 0 ("s" для "start") і іншого вказівника f (для "закінчення"), щоб бути найменшим показником, за яку відстань (P (f), P (s))> = 100, а потім просуваючись s на довгу відстань (P (f), P (s + 1))> = 100. При цьому утворюється кандидат поліліній (P (s), P (s + 1) ..., P (f-1), P (f)) для оцінки. Оцінивши його "придатність" для підтримки мітки, ви збільшуєте s на 1 (s = s + 1) і продовжуєте збільшувати f до (скажімо) f 'і s до s', поки ще раз поліліній-кандидат не перевищить мінімальний Проміжок 100 виробляється, представлений у вигляді (P (s '), ... P (f), P (f + 1), ..., P (f')). При цьому вершини P (s) ... P (s ' Дуже бажано, щоб фітнес можна було швидко оновлювати на основі знань лише опущених і доданих вершин. (Цю процедуру сканування буде продовжено до s = n; як зазвичай, f має бути дозволено "обернутись" з n назад до 0 у процесі.)
Цей розгляд виключає безліч можливих заходів придатності ( завзятість , змученість тощо), які в іншому випадку можуть бути привабливими. Це призводить до того, що ми віддаємо перевагу заходам на основі L2 , оскільки вони, як правило, можуть швидко оновлюватися, коли основні дані незначно змінюються. Беручи аналогію з аналізом головними компонент передбачає , ми приймаємо такі заходи (де маленьким краще, за запитом): використовуйте менше з двох власних в ковариационной матрицікоординат точок. Геометрично це одна міра "типового" відхилення вершин в межах кандидатської секції полілінії. (Одне тлумачення полягає в тому, що його квадратний корінь - це менша піввісь еліпса, що представляє другий момент інерції вершин поліліну.) Він дорівнює нулю лише для множин колінеарних вершин; в іншому випадку вона перевищує нуль. Він вимірює середнє відхилення в бік відносно базової лінії 100 пікселів, створеної початком і кінцем полілінії, і тим самим має просту інтерпретацію.
Оскільки матриця коваріації становить лише 2 на 2, власні значення швидко знаходять, розв’язуючи єдине квадратичне рівняння. Більше того, матриця коваріації - це сума внесків кожної з вершин у полілінії. Таким чином, він швидко оновлюється, коли точки випадають або додаються, що призводить до алгоритму O (n) для контуру n-точок: це може добре масштабуватись до дуже деталізованих контурів, передбачених у додатку.
Ось приклад результату цього алгоритму. Чорні точки - це вершини контуру. Суцільна червона лінія - найкращий кандидатський полілінійний відрізок довжиною від кінця до кінця більше 100 в межах цього контуру. (Візуально очевидний кандидат у верхньому правому куті не досить довгий.)