Научная статья на тему 'Применение системы Maple в процессе обучения различным подходам к решению задач вычислительной геометрии'

Применение системы Maple в процессе обучения различным подходам к решению задач вычислительной геометрии Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
101
28
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение системы Maple в процессе обучения различным подходам к решению задач вычислительной геометрии»

Применение системы Maple в процессе обучения различным подходам к решению задач вычислительной геометрии

А.Н. Гинтнер, ФГБОУВПО «Сыктывкарский государственный университет», аспирантка кафедры прикладной математики, queen_1986@mail.ru

Данная статья подготовлена при финансовой поддержке Российского фонда фундаментальных исследований по инициативному исследовательскому проекту (грант) № 11-07-00733 (2011-2013) «Гипертекстовый информационно-поисковый тезаурус «Метаязык науки» (структура; математическое, лингвистическое и программное обеспечение; разделы лингвистика, математика, экономика)» (научный руководитель -С.В.Лесников), а также в рамках научного исследования «О двух подходах к решению одной классической задачи вычислительной геометрии» под руководством А.А. Васильева.

1. Задача нахождения наименьшей охватывающей

окружности множества точек на плоскости

Постановка задачи. Для заданного множества точек плоскости S={p1,p2,..,pn} найти окружность наименьшего радиуса такую, что все точки S содержатся в круге, границей которого является данная окружность.

Нетрудно видеть, что для решения задачи необходимо найти центр и радиус искомой окружности. Оказывается [3], что наименьшая охватывающая окружность единственна, и, кроме того, она либо является окружностью, проходящей через некоторые три точки множества S, либо некоторая пара точек S служит диаметром этой окружности. Очевидно, что найти наименьшую охватывающую окружность можно, просто перебрав все пары и тройки точек множества S.

Данный подход к решению поставленной задачи не является самым эффективным, так как с увеличением числа точек n количество комбинаций всех пар (Cn2=n!2!n-2!=nn-12 комбинаций) и троек точек (Cn3=n!3!n-3!=nn-1n-26 комбинаций) резко увеличивается. Наименьшая охватывающая окружность, построенная методом перебора для n=30, приведена на Рис. 1.

а) б)

Рис.1 а) Исходное множество точек; б) Наименьшая охватывающая окружность с центром в точке С(1.5,3) и радиусом г = 3.35

Существуют более эффективные алгоритмы, чем рассмотренный выше. Один из таких быстрых алгоритмов основан на использовании свойств, которыми обладает диаграмма Вороного [3]. Используя эти свойства, опишем алгоритм построения наименьшей охватывающей окружности [4].

Алгоритм (Нахождение наименьшей охватывающей окружности):

Шаг 1. На множестве исходных точек строится диаграмма Вороного.

Шаг 2. Для каждой вершины диаграммы Вороного строим окружность, охватывающую все точки исходного множества, и вычисляем её радиус.

Шаг 3. Среди всех окружностей, полученных на шаге 2, выбираем имеющую наименьший радиус.

Конец алгоритма.

Наименьшая охватывающая окружность, построенная с помощью диаграммы Вороного для п=30, приведена на Рис.2.

8 -6- ,

4- *

♦ ♦

• ♦ « • ♦ » »

2- *♦ ♦ ♦

---------1---1---1

-2 0 2 4 6 8

-2-

а

a) Исходное множество точек; б) Наименьшая охватывающая окружность с центром в точке С(2.56,3.48) и радиусом r = 4.14

В исследовании операций задача о наименьшей охватывающей окружности известна как «минимаксная задача о размещении центра обслуживания». В этой задаче требуется найти точку p0=x0,y0 (центр окружности), для которой наибольшее из расстояний до точек заданного множества минимально. Точка p0 определяется критерием:

minx, ymaxi=1..n(xi-x)2+(yi-y)2

Согласно Меджиддо [3] данная задача может быть сведена к следующей задаче нелинейного программирования:

z^min(xi-x)2+(yi-y)2<z, i=1..n.

Заметим, что значение координаты z в точке решения равно квадрату радиуса этой окружности [3]. Наименьшая охватывающая окружность, построенная с помощью метода нелинейного программирования для n=30, приведена на Рис.3.

б)

Рис.2

1 2 3 4 5 6 7

•С

а) б)

Рис.3

а) Исходное множество точек; б) Наименьшая охватывающая окружность с центром в точке С(3.57, 3.25) и радиусом г = 3.82

2. Задача нахождения наибольшей пустой окружности

Постановка задачи. На плоскости заданы п точек. Требуется найти наибольшую окружность, не содержащую внутри точек исходного множества, центр которой лежит внутри выпуклой оболочки множества точек (рис.4,а).

а) б) в)

Рис.4

Определение максимальной пустой окружности: а) исходные

данные; б) диаграмма Вороного; в) отсечение диаграммы Вороного выпуклой оболочкой точек

На практике такого рода задачи возникают при размещении каких-либо служб или предприятий, которые необходимо максимально уда-

лить от других заданных объектов. Например, размещаемый объект может быть источником загрязнений, поэтому необходимо минимизировать его воздействие на другие объекты, либо это магазин, и необходимо поместить его подальше от конкурентов. Центр искомой окружности лежит либо в узле диаграммы Вороного, либо в точке пересечения диаграммы Вороного и выпуклой оболочки исходных точек. Опишем соответствующий алгоритм [4].

Алгоритм (Нахождение наибольшей пустой окружности):

Шаг 1. На множестве исходных точек строится диаграмма Вороного (рис.4,б). При этом, для каждой точки диаграммы оказываются вычисленными центр и радиус соответствующей окружности Делоне.

Шаг 2. Строится выпуклая оболочка множества исходных точек и определяются точки её пересечения с конечными рёбрами диаграммы Вороного (рис.4,в). Для каждой из этих точек вычисляется расстояние до ближайшей исходной точки, которая определяется одной из двух смежных ячеек диаграммы Вороного. Найденное расстояние определяет радиус наибольшей окружности, которую можно здесь разместить, не накрывая никаких точек.

Шаг 3. Среди всех окружностей, полученных на шагах 1-2, выбираем имеющую максимальный радиус.

Конец алгоритма.

Наибольшая пустая окружность, построенная с помощью диаграммы Вороного для п=30, приведена на Рис.5.

а)

Рис.5

а) Исходное множество точек; б) Наибольшая пустая окружность с центром в точке С(3.77; 2.77) и радиусом г = 1.41

Данная задача является двойственной к задаче о наименьшей охватывающей окружности и называется «максиминной задачей». В этом случае приходится накладывать ограничение на расположение центра окружности, так как при его отсутствии задача может не иметь ограниченного решения. Иначе говоря, требуется найти точку р0, определяемую критерием:

тахх, утиш=1..п(хьх)2+(уьу)2

Известно [3], что может существовать несколько точек р0, удовлетворяющих данному критерию.

Задача (3), так же как и (1), может быть сведена к следующей задаче нелинейного программирования:

z^max(xi-x)2+(yi-y)2>zЛ=1..n.

Наибольшая пустая окружность, построенная с помощью метода нелинейного программирования для п=30, приведена на Рис.6.

4" .

Рис.6

a) Исходное множество точек; б) Наибольшая пустая окружность с центром в точке С(2.33, 3.57) и радиусом г = 1.25

Сведение задач (1),(3) к задачам (2),(4) соответственно позволяет говорить о том, что данные задачи могут рассматриваться и в пространствах более высокой размерности, чем т=2. Ниже приводятся примеры наименьшей охватывающей и наибольшей пустой сфер, построенные с помощью метода нелинейного программирования в пространстве R3 для п=30 (Рис.7 и Рис.8).

8,0-1

5.5-

3,0-

i I i> .=

5,5/ 8,0.f0_|

• +

- ♦ * ♦

1 1 1 "

t 3 4 i

" I i I 1 I 1 I

2" 3 4 5 6 7 8

а)

б)

Рис.7

а) Исходное множество точек; б) Наименьшая охватывающая сфера с центром в точке С(2.43, 3.47,

3.88) и радиусом г = 4.48

5,5-

Л*.

0.5-

5.5 -

8.0

.»у.*

' I Щ \

1 I 1 I I I г-

t 1 2 3 4 5 6 7

% ~ *

i i i Уруг '# i i т I i i i i i i i

-2 ^ 1 1 2 3 4 5 6 7 8

а;

б)

Рис.8

а) Исходное множество точек; б) Наибольшая пустая сфера с центром в точке С(3.40, 1.90, 3.07) и радиусом г = 1.96

Рассмотренные выше подходы к решению поставленных задач позволяют продемонстрировать возможности системы Maple12 для численного решения задач, а также обучения основам вычислительной геометрии.

Все численные эксперименты проводились с помощью системы Maple12. При этом использовались следующие пакеты: optimization, linalg, plottools, plots.

Литература

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1. Васильев А.А., Королева А.Н. Некоторые применения вычислительной геометрии к задачам линейного программирования. // Вестник Сыктывкарского университета. Серия 1: Мат., Мех., Инф. - 2009. - Вып. 10. - с. 113-118.

2. Аладьев В.З., Бойко В.К., Ровба Е.А. Программирование и разработка приложений в Maple. Гродно: ГрГУ; Таллинн: Межд. Акад. Ноосферы, Балт. отд.- 2007. 456 с.

3. Препарата Ф., Шеймос М. Вычислительная геометрия: Введение. М.: Мир, 1989. 478 с.

4. Скворцов А.В., Костюк Ю.Л. Применение триангуляции для решения задач вычислительной геометрии. Изд-во Томск: ТГУ, 2002. 128 с.

5. Скворцов А.В., Костюк Ю.Л. Эффективные алгоритмы построения триангуляции Делоне. Геоинформатика. Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. с. 22-47.

i Надоели баннеры? Вы всегда можете отключить рекламу.