Loading AI tools
З Вікіпедії, вільної енциклопедії
Обчислювальна геометрія (англ. computational geometry) — галузь комп'ютерних наук присвячена вивченню алгоритмів, які описуються в термінах геометрії. Деякі чисто геометричні проблеми виникають при вивченні обчислювальних геометричних алгоритмів, і вони також вважаються частиною обчислювальної геометрії. Хоча сучасна обчислювальна геометрія була розвинута здебільшого в новітній час, вона є однією з найдавніших областей обчислень, історія яких сягає античності.
Основним стимулом розвитку обчислювальної геометрії як дисципліни був прогрес у комп'ютерній графіці та системах автоматизованого проектування та автоматизованих систем технологічної підготовки виробництва, проте багато задач обчислювальної геометрії є класичними за своєю природою, і можуть з'являтись при математичній візуалізації.
Іншим важливим застосуванням обчислювальної геометрії є робототехніка (планування руху та задачі розпізнавання образів), геоінформаційні системи (геометричний пошук, планування маршруту), дизайн мікросхем, програмування верстатів з числовим програмним керуванням, комп'ютерний зір (об'ємна відбудова).
Основними розділами обчислювальної геометрії є:
Основною метою досліджень в комбінаторній обчислювальній геометрії є розробка ефективних алгоритмів та структур даних для розв'язання задач, які задані в термінах базових геометричних об'єктів: точок, відрізків, многокутників, багатогранників, та інших.
Деякі з цих задач виглядають такими простими, що вони взагалі не розглядались як задачі до моменту винайдення комп'ютерів. Розглянемо, наприклад, задачу пошуку найближчої пари точок:
Можна обчислити відстані між кожною парою точок, (їх є n(n-1)/2), потім вибрати пару з найменшою відстанню. Такий повний перебір має складність O(n2) тобто час його виконання пропорційний квадрату кількості точок. Класичним результатом в обчислювальній геометрії був алгоритм зі складністю O(n log n). Також відкриті рандомізовані алгоритми, що працюють за O(n) кроків, і детерміновані алгоритми що працюють за O(n log log n).[джерело?]
Обчислювальна геометрія головним чином зосереджується на обчислювальній складності, так як алгоритми призначені для роботи над дуже великими наборами даних, з десятків чи сотень мільйонів точок. Для великих наборів даних різниця між O(n2) та O(n log n) може бути такою ж, як різниця між днями та секундами.
Основні задачі обчислювальної геометрії можна класифікувати різними способами, і з різними критеріями. Розрізняють такі класи:
В задачах цієї категорії на вхід подаються певні дані, і за ними алгоритм має обчислити відповідні результати. Прикладами фундаментальних задач такого роду є:
Обчислювальна складність для цього типу задач оцінюється відносно часу та об'єму використаної пам'яті, які необхідні для розв'язання задачі.
В задачах геометричного пошуку вхідні дані складаються з двох частин: простору пошуку та запиту, тип даних яких залежить від конкретної задачі. Зазвичай припускають, що кількість запитів буде набагато більше кількості даних. Тому, для зменшення загальної кількості операцій, простір пошуку потребує попередньої обробки даних.
Приклади задач геометричного пошуку:
Якщо простір пошуку фіксований, обчислювальна складність задач зазвичай визначається
У випадках коли простір пошуку може змінюватись дивіться розділ «Динамічні задачі».
Динамічні задачі — це тип задач вхідні дані до яких поступово змінюються (наприклад, додаються чи видаляються об'єкти). Алгоритми розв'язання таких задач містять в собі підтримку динамічних структур даних. Будь-яку задачу обчислювальної геометрії можна розв'язувати динамічно, якщо вважати, що дані додаються поступово, але це потребує додаткових обчислювальних ресурсів. Регіональний пошук, чи побудову опуклої оболонки можна проводити над множиною точок, які частково змінюються.
Обчислювальна складність для цього класу задач задається такими параметрами:
Деякі задачі можуть розглядатись як такі, що належать кільком категоріям залежно від контексту.
Наприклад,
У багатьох програмах ця задача розглядається як задача першого класу. Тим не менш, в багатьох випадках потрібно визначити чи курсор миші лежить всередині даного многокутника. Курсор постійно переміщується, а многокутник не змінюється. Аналогічно можна перевіряти чи певний літальний апарат який зображений на екрані радара не перетнув кордон країни. Такі задачі можна вважати задачами геометричного запиту. А в CAD-системах сам многокутник може змінюватись, тому задача може вважатись динамічною.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.