Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Завдання про червоних і синіх точках

Реферат Завдання про червоних і синіх точках





ю «Очистити» можна скористатися в будь-який момент процесу виконання алгоритму, що найбільш зручно для користувача в разі будь-якої помилки. Але очищається повністю все поле в будь-якому з режимів.


2.6 Математичне обгрунтування


Для математичного обгрунтування даного завдання мені потрібно вивчення теми «Вектора» і відповідно основні формули: «Довжина вектора» або «Відстань між 2 точками».

Завдання (умовно): Дано N точок синього кольору і N точок червоного кольору, координати їх відомі. Потрібно з'єднати їх так, щоб відстань від точки одного кольору до точки іншого кольору було мінімальним з можливих варіантів. Далі розрахувати суму їх довжин.

Примітка: Якщо ми з'єднаємо точки вищеописаним чином, то при додаванні довжин одержані відрізків у нас вже виходить мінімальна сума довжин цих відрізків.

Рішення :. Потрібно з'єднати точки різних кольорів так, щоб з усіх можливих варіантів вийшла довжина була мінімальною.

Для розрахунку довжини використовуємо формулу довжини вектора:


A? B =? (x2 - x1) 2 + (y2 - y1) 2 (1)

. Після того, як обрані потрібні (мінімальні) варіанти довжин відрізків, потрібно просто підсумовувати ці довжини, в результаті, задача вирішена, отриманий потрібну відповідь.


3. Практична частина


. 1 Структура програми


Аналізуючи завдання, ми розробляємо структурну схему програми, яка буде містити основні блоки, опис виконуваних ними функцій і їх місце розташування в програмі. Для програми вирішення задачі про червоних і синіх точках отримаємо таку структурну схему:



Розглянемо деякі блоки, що зустрічаються в програмі.

Інтерфейс - цей блок здійснює взаємодію користувача і програми. Взаємодія здійснюється за допомогою монітора, клавіатури і миші.

Введення синіх і червоних точок- в цьому блоці запам'ятовуються дані про синіх і червоних крапок і розміщуються на поле користувачем.

Побудова відрізків - блок, який виробляє побудова відрізків з червоних і синіх точок.

Відображення ходу роботи алгоритму - у таблиці відображаються відрізки і їх сумарна довжина.

Візуалізація результатів - відображення змін відбуваються в програмі.

Довідка - похідна інтерфейсу, служить для отримання відомостей з експлуатації програми.


. 2 Опис використовуваних типів даних


У ході реалізації програми використовувалися як стандартні структури даних, так і власні, створені безпосередньо при проектуванні алгоритму.

Для зберігання даних про червоних і синіх точках використовується спіcок pList типу TList. Кількість точок зберігається у змінній tCount, число червоних крапок - в redCount, число синіх точок - в blueCount.

Також був створений тип даних TPnt для зберігання структури даних про точку має наступний вигляд:


PPnt=^ TPnt;=record, Y: integer ;: byte ;: integer ;: boolean;

end;

Як видно він заснований на покажчиках (PPnt посилається на адресний простір типу TPnt), і використання цього типу має на увазі зберігання наступної інформації про точці:

· Координати X і Y

· Колір точки (1 - червоний, 2 - синій)

· Чи пов'язана точка (Linked=true/false)

· Номер точки, з якою пов'язана дана точка, якщо вона пов'язана (num)


. 3 Опис основних алгоритмів


У програмі реалізований автоматичний алгоритм пошуку відрізків, складових мінімальну сумарну довжину, і подальший розгляд роботи програми заснована на цьому основному алгоритмі. Решта алгоритми, у тому числі і ручний є допоміжними і необхідні лише для відображення результатів і реалізації інтерфейсу користувача.

Детальний опис автоматичного і ручного алгоритмів було приведено раніше, у пункті 2.4.

Пошук мінімальної суми довжин відрізків

Дане завдання є класичним прикладом динамічного програмування. Повний перебір, як легко довести, вимагає експоненціального часу, що для алгоритму не є добре, застосування ж динамічного програмування спрощує цю задачу і як далі буде видно складність цього алгоритму є O (x ^ 3).

Зобразимо роботу алгоритму графічно:

Рис. 1


Код процедури, реалізує даний алгоритм:


procedure FindLines;, j, start: integer;, P2, PMin, Pz: PPnt;, Sum: double; start:=0 to pList.Count - 1 do:=0; .Clear; i:=0 to pList.Count - 1 do:=pList.Items [i]; (P...


Назад | сторінка 3 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка програми для вирішення завдання &Знаходження спільної точки N кіл&
  • Реферат на тему: Розробка алгоритму розрахунку визначення координат точок кінематичної схеми ...
  • Реферат на тему: Розробка алгоритму програми &Таймер& на мові програмування C ++
  • Реферат на тему: Програмна реалізація алгоритму Дейкстри (побудова ланцюгів мінімальної довж ...
  • Реферат на тему: Розробка алгоритму і програми розрахунку на ПЕОМ коефіцієнта готовності сис ...