Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КонспектЛекций Т Алгоритмов.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
480.26 Кб
Скачать

Блок-схема

4.4. Жадібні алгоритми

Окрім метода динамічного програмування для оптимізаційних задач існують простіші та більш швидкі алгоритми - жадібні. Жадібний алгоритм на кожному кроці робить локально оптимальний вибір. Приклад - алгоритм Дейкстри пошуку найкоротших відстаней з заданої вершини графу в інші. Розглянемо інший приклад жадібних алгоритмів.

Задача про вибір заявок.

Маємо n заявок на проведення занять в одній аудиторії. В кожній заявці вказані час початку та закінчення занять: si и fi для i-ой заявки. Скласти розклад занять таким чином, щоб задовольнити максимальну кількість сумісних одна з одною заявок (заявки з номерами i та j сумісні, якщо f <= s або f <= s , тобто два різних заняття не можуть перетинатися в часі).

Для рішення задачі припустимо, що заявки впорядковані за часом закінчення занять за зростанням (якщо ні, то впорядкувати):

f <=f <=. . . <=f . (*)

Агоритм.

Вхід: Масив s часу початку та масив f часу закінчення занять.

Вихід: Множина A номерів обраних заявок та j - номер останньої з них, при цьому f = max{f : k A}, тому що заявки впорядковані за часом закінчення занять.

Складність алгоритма - O(n) без урахування сортування .

Приклад. Маємо п’ять заявок (n=5). Скласти розклад занять таким чином, щоб задовольнити максимальну кількість заявок.

Номер заявки i

Час початку занять s

Час закінчення занять f

Номер обраної заявки j

Ознака включення заявки до множини A

1

1

2

1

+

2

2

4

2

+

3

5

6

3

+

4

5

7

3

-

5

8

9

5

+

Відповідь: множина A={1,2,3,5} та номер останньої заявки j=5.

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

Задачу про вибір заявок можна також вирішити за допомогою динамічного програмування, обчислюючи послідовно для i=1, 2,...n число mi - максимально можливе число сумісних заявок серед заявок з номерами 1, 2, . . , i. Розбіжність між жадібним алгоритмом і динамічним програмуванням є в тому, что на кожному кроці жадібний алгоритм бере “найжирніший шматок”, а потім намагається зробити найкращий вибір серед залишившихся, а алгоритм динамічного програмування приймає рішення після прорахунку всіх вариантів. Тому час роботи алгоритму динамічного програмування для задачі про вибір заявок гірший. Таким чином, при рішенні задачі важливо зробити правильний вибір метода рішення.

5. Алгоритми сортування

5.1. Задача сортування та класифікація методів сортування.

Новим етапом розвитку інформаційних технологій стала обробка інформації на базі ЕОМ. Нечислова обробка даних використовується в задачах автоматизованого управління та в інформаційно-пошукових системах, в самих різних сферах діяльності людини: економіці, медицині, системі освіти, бібліотечній справі тощо.

Необхідність вирішення складних міжвідомчих та міждержавних задач з великими об'ємами інформації призвели до розвитку систем управління базами даних та комп’ютерних мереж.

Основні процедури нечислової обробки даних: редагування текстів, сортування та пошук даних.

Сортування – це процес перегрупування заданої множини об’єктів у визначеній черзі (зростання або убування). Множиною для сортування мають бути елементи масивів або записи файлів. Кожен запис має поле ключа та поле інформації:

struct node

{ float num //ключове поле

//інформаційні поля

}

Критерієм різних методів сортування є:

1.) кількість порівнянь;

2.) час сортування заданого об’єма даних;

3.) необхідний об’єм пам’яті для сортування;

4.) складність алгоритмів сортування;

Сортування може бути внутрішнім (дані розміщуються в оперативній пам’яті ) та зовнішнім (дані знаходяться на зовнішніх пристроях пам’яті).

Алгоритмів сортування відомо досить багато. Тому розглянемо лише частку з них.

Записи впорядковуються по значенню ключа.

Класифікація методів сортування:

1.Обмінне сортування (метод пухирцевого всплиття, метод швидкого сортування та інші).

2.Сортування деревом.

3.Сортування включенням (метод пухирцевого включення, метод Шелла та інші).

4.Сортування злиттям (методи простого злиття, послідовного, двошляхового та інші).

5.Сортування вибіркою (метод простого вибору; метод сортування вибіркою та інші).

6.Сортування розподіленням.

7.Сортування підрахунком.