Сума Мінковського

Матеріал з testwiki
Перейти до навігації Перейти до пошуку
Червона фігура є сумою синьої та зеленої фігур

В геометрії, Сумою Мінковського (Шаблон:Lang-en) двох множин радіус-векторів A і B у евклідовому просторі утворюється додаванням кожного вектора з A до кожного вектора з B, тобто множина

A+B={𝐚+𝐛𝐚A, 𝐛B}.

Приклад

Картинка згладженого трикутника. Кожен з округлих кутів обведений червоною кривою.
В опуклій оболонці червоної множини, кожна синя точка є опуклою комбінацією якихось червоних точок
Сума Мінковського двох квадратів Q1=Шаблон:Closed-closed2 і Q2=Шаблон:Closed-closed2 це квадратQ1+Q2=Шаблон:Closed-closed2.

Наприклад, якщо ми маємо дві множини A і B, кожна з трьох радіус-векторів (неформально, трьох точок), що представляють вершини двох трикутників у 2, з координатами

Шаблон:Math

і

Шаблон:Math,

тоді сума Мінковського є
Шаблон:Math, Шаблон:Math, Шаблон:Math, Шаблон:Math, Шаблон:Math, Шаблон:Math, Шаблон:Math, Шаблон:Math, Шаблон:Math, яка виглядає як шестикутник, з трьома точками, що повторюються в Шаблон:Math.

Для додавання Мінковського, нульова множина {0}, що містить лише нульовий вектор 0, є нейтральним елементом: Для будь-якої підмножини S, векторного простору

S + {0} = S;

Порожня множина важлива для додавання Мінковського, бо вона знищує будь-яку іншу підмножину: для будь-якої підмножини, S, векторного простору, його сума з порожньою множиною — порожня множина: Шаблон:Math.

Файл:Сума Мінковського Прочісування.png
Прочісування одного опуклого об'єкту іншим

Алгоритм для опуклих многокутників

Кут між вектором pq та віссю x.

В алгоритмі ми використовуємо поняття кута між вектором pq та віссю x.

Алгоритм СУМА_МІНКОВСЬКОГО(𝒫,)

Вхід. Опуклий многокутник 𝒫 з вершинами v1,,vn, і опуклий многокутник з вершинами w1,,wm. Списки вершин повинні бути впорядковані проти годинникової стрілки, а v1,w1 повинні мати найменші y-координати (і найменші x-координати у випадку кількох вершин з найменшою y-координатою).

Вихід. Сума Мінковського 𝒫.

  1. i1;j1
  2. vn+1v1;vn+2v2;wm+1w1;wm+2w2
  3. повторювати
  4.  Додати vi+wj як вершину у 𝒫.
  5. якщо (vivi+1)<(wjwj+1)
  6. тоді i(i+1)
  7. інакше якщо (vivi+1)>(wjwj+1)
  8.   тоді j(j+1)
  9.   інакше i(i+1);j(j+1)
  10. допоки (i=n+1 та j=m+1)

Алгоритм виконується за лінійний час.

Обчислення суми Мінковського для неопуклих многокутників не дуже складне: тріангулювати обидва многокутники, обчислити суму Мінковського для кожної двійки трикутників і об'єднати їх.

Теорема: Нехай 𝒫, многокутники з n,m вершинами відповідно. Складність суми Мінковського 𝒫 має такі границі:

  • це O(n+m) якщо обидва многокутники опуклі;
  • це O(nm) якщо один з многокутників опуклий і один неопуклий;
  • це O(n2m2) якщо обидва многокутники неопуклі.

Ці границі тугі в найгіршому випадку.

Варіації та узагальнення

Посилання

Шаблон:Додаткові джерела