Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Мета роботи. Лабораторна робота №1 Оцінка трудомісткості алгоритму




Тема

ЛАБОРАТОРНА РОБОТА №1 Оцінка трудомісткості алгоритму

Лабораторних робіт

Загальні вимоги до оформлення звітів з

Захист роботи

Порядок виконання роботи

Тривалість роботи

ЗАГАЛЬНІ МЕТОДИЧНІ ВКАЗІВКИ

ВСТУП

 

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

У результаті вивчення дисципліни студент повинен:

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

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

 

 


 

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

Кожна лабораторна робота триває 4-6 годин.

1 Підготовка до виконання роботи (попереднє ознайомлення з методичними вказівками до лабораторної роботи та опрацювання теоретичного матеріалу і рекомендованою літературою).

2 Отримання допуску до виконання роботи (знати відповіді на контрольні запитання).

3 Виконання типового навчального завдання.

4 Захист роботи.

Захист лабораторної роботи полягає у:

– контролі досягнення студентом мети роботи;

– контролі наявності знань у студента.

Звіт з лабораторної роботи оформляється згідно з нормативними вимогами ІФНТУНГ. Звіт повинен включати:

1 Титульний аркуш.

2 Мету та завдання до лабораторної роботи.

3 Результати виконаної роботи.

4 Висновки.

5 Перелік посилань на джерела.

6 Додатки (при необхідності).


Оцінка трудомісткості алгоритму.

Засвоєння засобів аналізу трудомісткості обчислювальних алгоритмів.

Теоретичні відомості:

Задача, що підлягає вирішенню на РС, може бути охарактеризована кількістю даних, складністю алгоритму та його трудомісткістю. Під трудомісткістю алгоритму розуміється кількість обчислювальної роботи, необхідної для його реалізації. Трудомісткість характеризує витрати часу для реалізації алгоритму на деякій сукупності технічних засобів. Звичайно, трудомісткість оцінюється кількістю процесорних операцій та операцій введення-виведення. В загальному випадку, трудомісткість алгоритму є випадковою величиною, що залежить від вхідних даних. Тому, трудомісткість алгоритму може бути визначена тільки наближено, в термінах теорії імовірності: математичними жданнями, дисперсією і т. д.

Трудомісткість алгоритму в першому наближенні може бути охарактеризована набором параметрів:

Θ - середня кількість процесорних операцій, необхідних для однієї реалізації алгоритму; Ni, N2,...,NH - середня кількість запитів до файлів за один прогін програми; Li, L2,...,LH - середня кількість інформації, що передається за одне звернення до файлів Fi, F2,...,Fh.

При необхідності набір параметрів, що характеризують трудомісткість алгоритму може бути доповнений. Вхідна інформація для розрахунку трудомісткості алгоритму може бути одержана з блок-схеми алгоритму (рис. 1.1).

Для розрахунку трудомісткості алгоритму необхідно знати імовірності переходів з логічних вершин при одиничному значенні логічної умови. Якщо відповідну імовірність визначити через p, тоді імовірність виходу з логічної вершини при нульовому логічному значенні умови, що перевіряється буде рівна 1 - p.

 

Рисунок 1. 1 – Блок-схема алгоритму

.

Для подальших розрахунків схему алгоритму раціонально зображати в вигляді графа алгоритму. Для цього пропонується перенумерувати всі оператори схеми алгоритму. У логічних операторів замість логічних умов '1' і '0' будемо записувати відповідну даному виходу імовірність. Імовірність виходу з операторної вершини рівна 1. Отриманий таким чином граф алгоритму зображений на рис. 1.2.

Граф алгоритму можна істотно спростити, якщо трудомісткість виконання логічних вершин незначна в порівнянні з трудомісткістю виконання операторних вершин. Тоді стани, що відповідають логічним вершинам, можна злити з станами, що випереджають відповідні операторні вершини. В нашому прикладі можна злити стан (1.2), (3.4), (7.8), (10.11).

Рисунок 1. 2 - Граф алгоритму

 

Після перенумерації отримаємо мінімізований граф алгоритму (рис. 1.3). При достатньому досвіді до нього можна було прийти відразу від блок-схеми (рис.1.1). Позначимо через п1, n2,...,nk-1 - середнє число запитів до операторів V1, V2,...,Vk-1, відповідно. Кожен з операторів Vі(i=1,2,...,k-1) буде характеризуватись наступним набором чисел:

• ki - середня кількість процесорних операцій, що виконуються в операторі Vі

• mіj - середня кількість запитів до файлу Fj(j=1,2,...,h) з оператора Vі

lіj - середня кількість інформації, що передається при одному запиті до файлу Fj(j=1,2,...,H) з оператора Vі.

 

Рисунок 1. 3. – Мінімізований граф алгоритму

 

Тоді для оцінки трудомісткість можна використати наступні формули:

(1.1)

(1.2)

(1.3)

 

де Θ - середнє число процесорних операцій, що виконуються при одному виконанні алгоритму; Nj- середнє число запитів до файлу Fj(j=1,2,...,H) при одному виконанні алгоритму; lj - середня кількість інформації, що передається при одному запиті до файлу Fj(j=l,2,.,H) при одному виконанні програми.

Для визначення середнього числа запитів ni до оператора Vi(i=1,2,...,k-1) звичайно робляться наступні допущення:

- імовірність виконання оператора Vi після оператора Vj рівна Pij і є постійною величиною;

- імовірність Pij залежить тільки від оператора Vi;

- .

 

При виконанні вищезазначених допущень обчислювальний процес стає Марківським процесом з станами S1,S2,...,Sk. При цьому оператори V1,V2,...,Vk-1 відповідають станам S1,S2,...,Sk-1. Стан Sk відповідає кінцевій вершині граф алгоритму. Стани S1,S2,...,Sk-1 називаються незворотними, бо процес, неодмінно, з них виходить.

Сучасна теорія алгоритмів налічує декілька способів оцінки трудомісткості алгоритмів.

 

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

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

Таблиця 1. 1- Стани стохастичної матриці

Елементами матриці P є імовірності переходу з стану і в стан j, що наведені на графі алгоритму. З стохастичної матриці слідує, наприклад, що в стані S4 процес може виявитися при переході з S1 з імовірністю 0.5 або при переході з стану S3 з імовірністю 1.

Якщо відомі середні числа запитів до вершин V1 і V3, то число запитів до вершини V4 буде рівним: n4 = p14 n1 + p34 n3 = 0.9n1 + n3.

В загальному випадку можна записати (складання по стовпчику стохастичної матриці):

(1.4)

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

 

n1 = 1n0 = 1*1 = 1;

n2 = 0.5n1 = 0.5*1 = 0.5;

n3 = 0.4n2 + 0.25n5 = 0.2 + 0.25n5;

n4 = 0.5n1 + n3 = 0.5 + n3;

n5 = 0.6n2 + n4 = 0.3 + n4;

n6 = 0.75n5;

n7 = n6 + 0.8n7.

 

Вирішуючи систему рівнянь, отримаємо:

 

n1 = 1; n2 = 0.5; n3 = 0.533; n4 = 1.033;

n5 = 1.333; n6 = 1; n7 = 5.

 

Для перевірки правильності вирішення системи лінійних рівнянь можна використати тотожність:

при (1.5)

В наведеному прикладі це виконується так: nk = 0.2 * n7 = 0.2 * 5 = 1.

Даний спосіб є універсальним (в випадку Марківського процесу), але вимагає великих затрат часу при значних розмірах стохастичної матриці.

 

Мережевий підхід до оцінки трудомісткості алгоритмів

 

Мережевий підхід зручний для аналізу трудомісткості алгоритму вручну, та дозволяє обчислювати середню, мінімальну і максимальну трудомісткість алгоритму на графах, не що містять цикли. Для прикладу розглянемо граф алгоритму, зображений на рис.1. 4.

Використовуючи формулу (1.4) для рис. 1.4 можемо записати:

 

n0 = 1;

п1 = 1 * n0 = 1;

n2 = 0.5 * п1 = 0.5;

n4 = 0.5 * n1 = 0.5;

n5 = n4 + 0.6n2 = 0.5 + 0.6 * 0.2 = 0.8;

n3 = 0.4n2 + 0.25n5 = 0.4 * 0.5 + 0.25 * 0.8 =0.4;

n6 =n3 + 0.75n5 = 0.4 + 0.75 * 0.8 = 1;

n7 = 1 * n6 =1.

 

 

Рисунок 1. 4 - Граф алгоритму буз циклів

 

В зв'язку з відсутністю циклів систему легко розв’язати. Витрати часу на аналіз можуть бути додатково знижені, якщо ввести ефективну нумерацію станів графа алгоритму. Остання полягає в тому, що номер вершини повинен бути таким, щоб дуги що входять в цю вершину починалися в вершинах з меншими номерами. Якщо після такої нумерації рівняння записувати в порядку зростання номерів вершин, то вони будуть відразу вирішуватися, бо невідомі з меншими номерами вже будуть обчислені. В наведеному прикладі нумерація вершин не відповідає визначеній вимозі, але рівняння записувалися в порядку їхнього розв’язку. За наявності в графі алгоритму циклів, їх слід замінити операторами з еквівалентною трудомісткістю. Якщо в графі алгоритму є вкладені в цикл цикли, тоді, перш за все слід замінити еквівалентними операторами внутрішні цикли, а після цього переходити до заміни зовнішніх циклів. Розрахунок трудомісткості алгоритму виконується по наведеній вище методиці.

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

 

nc = 1 + pcnc, , (1.6)

де пс - середнє число повторень циклу.

З виразу (1.6) одержимо:

(1.7)

Тоді середнє число процесорних операцій циклу буде рівне:

kc = псктс,

де ктс - середня трудомісткість тіла циклу. Середнє число запитів до файлів і середня кількість інформації, що передається при зверненні в циклі до файлів, визначається аналогічно.

Приклад 1

В алгоритмі на рис.1.3 є два цикли. Перший містить оператори V3,V4,V5, а другий складається тільки з оператора V7. Перший цикл ускладнюється входами в середину циклу з операторів V1 та V2.

Для позбавлення від входів в цикл не через початок циклу V3 обчислимо елементарні перетворення графа алгоритму. Еквівалентний граф після очевидних перетворень зображений на рис. 1.5.

З рис.1.5 слідує, що оператори V4 та V5, що використовувались для входу в тіло циклу не через його початок, винесені окремо під номерами 4' й 5'. Кількість повторень циклів з виразу (1.7) рівна:

де nc1, nc2 - число повторень першого та другого циклів. Граф алгоритму без циклів наведений на рис. 1.4.

 

Рисунок 1. 5- Еквівалентний граф алгоритму

 

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

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

 

Приклад 2

Оцінимо мінімальне і максимальне число процесорних операцій для графа алгоритму, зображеного на рис. 1.4. Для спрощення приймемо, що всі оператори мають трудомісткість, рівну 1000 процесорних операцій. Через Ai і Bi будемо визначати, відповідно, мінімальне і максимальне число процесорних операцій, що буде мати місце в момент виходу процесу з і-ї вершини графа.

 

A0 = 0;

A1 = min(A0) + 1000 = 1000;

A2 = min(A1) + 1000 = 2000;

A4 = min(A1) + 1000 = 2000;

A5 = min(A2,A4) + 1000 = 3000;

A3 = min(A2,A5) + 1000 = 3000;

A6 = min(A3,A5) + 1000 = 4000;

A7 = min(A6) + 1000 = 5000;

B0 = 0;

B1 = max(B0) + 1000 = 1000;

B2 = max(B1) + 1000 = 2000;

B4 = max(B1) + 1000 = 2000;

B5 = max(B2,B4) + 1000 = 3000;

B3 = max(B2,B5) + 1000 = 4000;

B6 = max(B3,B5) + 1000 = 5000;

B7= max(B6) + 1000 = 6000.

Завдання для виконання:

1 Перед виконанням роботи ознайомитись з теоретичними відомостями.

2 В відповідності до отриманого номеру варіанту вибрати логічну схему алгоритму (ЛСА) - таблиця 1.1. Згідно з ЛСА зобразити графічну схему алгоритму.

3 З таблиці 1.2 вибираються імовірності переходів при одиничних логічних умовах, відповідно до варіанту

4 З таблиці 1.3 знаходяться кількість процесорних операцій в операторах алгоритму.

5 З таблиці 1.4 по останній цифрі варіанту вибираються кількість запитів і довжина запису в кілобайтах у разі звертання до файлів F1, F2, F3.

6 Зображається блок-схема алгоритму, граф алгоритму і мінімальний граф алгоритму.

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

8 Визначається середня трудомісткість алгоритму з допомогою мережевого підходу.

9 Обчислюється мінімальна і максимальна трудомісткість алгоритму.

Контрольні питання:

1. Що таке трудомісткість алгоритму?

2. Як визначається трудомісткість алгоритму і з якою метою обчислюється ця величина?

3. Чому трудомісткість алгоритму є, як правило, випадковою величиною?

4. Які параметри можуть бути використані для характеристики трудомісткості алгоритму?

5. Як виконати ефективну нумерацію станів в графі алгоритму для мереженого аналізу?

6. Що таке стохастична матриця?

7. Як визначити імовірності виходу з логічної вершини?

8. Що таке марківський процес?

9. Доведіть правильність формули (1.4).

10. Доведіть правильність тотожності (1.5).

11. Доведіть правильність виразу (1.6).

12. Чи існує різниця в оцінці середньої трудомісткості при використанні теорії марківських ланцюгів та мережевого підходу? Якщо так, то пояснити її.

 

Література

 

1. Основы теории вычислительных систем / Под ред. С.А. Майорова. - М.: Высшая школа, 1978. - 408 стр.

 

Таблиця 1. 1- Логічні схеми алгоритмів

Варіант Логічна схема алгоритму
  Поч. Ax1­1Bx2­23x3­324Mx4­41 Кін.
  Поч. Ax2­2Bx3­3 C x1­131¯42x4­4K Кін.
  Поч. Ax2­23¯2Cx3­3¯1Dx1­1Ex4­4M K¯4 Кін.
  Поч. A¯2¯1Bx1­1Cx2­2Dx4­4¯3Ex3­34K Кін.
  Поч. ↓1Ax11Bx22Ex33C↓23Mx44D↓4K Кін.
  Поч. A¯4Bx2­2Cx3­32¯3Ex4­4Mx1­11 Кін.
  Поч. Ax22Cx44Dx33E↓2314Kx11M B Кін.
  Поч. Аx11Вx22M↓234Сx44Еx33K↓1D Кін.
  Поч. x11A↓12Bx22C↓4Dx33Е↓3Mx44 К Кін.
  Поч. x11A↓42Bx22Cx33E↓3Dx44K↓1M Кін.
  Поч. ↓3Ax11Bx22C↓2D↓1Ex33Kx44M↓4 Кін.
  Поч. x44Ax11B↓2Cx22D↓1Ex33K↓4M↓3 Кін.
  Поч. Ax11Bx22C↓21D↓34E Kx44Mx33 Кін.
  Поч. Ax11Bx22C↓2D↓3Ex331Kx44M↓4 Кін.
  Поч. ↓24Ax11B↓1Cx22DEx33K↓3Mx44 Кін.
  Поч. ↓1Ax11B↓42Cx22Dx44E Kx33M↓3 Кін.
  Поч. ↓1Ax11Bx33C↓3Dx44E↓2Kx22M↓4 Кін.
  Поч. ↓4Ax44Bx11C↓1Dx33Ex22K↓2M↓3 Кін.
  Поч. x11A↓3Bx22Cx44D↓24Ex33K M↓1 Кін.
  Поч. ↓4Ax11B↓1C↓23D Ex22Kx33Mx44 Кін.
  Поч. x11A↓3Bx22Cx44D↓4E↓2K↓1Mx33 Кін.
  Поч. x22A↓3Bx11C↓2Dx44E↓14K Mx33 Кін.
  Поч. x11Ax22B↓21Cx44D↓3Ex33K M↓4 Кін.
  Поч. x11A↓2B↓1Cx22D↓3Ex334Mx44 К Кін.
  Поч. x33Ax221Bx11C↓23D↓4Ex44M K Кін.

Примітки до таблиці 1.1: В ЛСА символам Поч. та Кін. відповідають початковий і кінцевий оператори алгоритму. Символи A, B, C, D, E, K, M визначають функціональні оператори алгоритму. Символи x1, x2, x3, x4 визначають логічні умови. Якщо логічна умова рівна одиниці, тоді виконується наступний оператор в ЛСА. Якщо логічна умова рівно нулю, тоді здійснюється перехід по стрілці з відповідним індексом. У логічної умови стрілка направлена вверх. Наприклад, V. У місця переходу стрілка направлена вниз - ΝΛ (Для схеми алгоритму, зображеної на рис.1 ЛСА має вигляд:

Таблиця 1. 2- Імовірності переходу (по Х= 1)

Таблиця 1. 3- Кількість процесорних операцій в операторах (в тисячах)

Таблиця 1. 4- Кількість звернень до файлів та довжина

Примітки до таблиці 1.4: Кількість звернень до файлів - чисельник; довжина запису в кілобайтах - знаменник

 

 


 




Поделиться с друзьями:


Дата добавления: 2015-05-24; Просмотров: 1161; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.077 сек.