Головна » Статті » Математика програмістів » Проектування

Поняття трудомісткості
Уявімо, що у Ви розробили алгоритм вирішення певної задачі і, відповідно, появилась потреба в оцінці того, скільки ж операцій буде ним виконано. У теоретичній інформатиці є таке поняття, яке являє собою цю оцінку. Це трудомісткість. Тобто трудомісткість - це оцінка (хоча правильніше буде сказати - характеристика) алгоритму, яка чисельно дорівнює кількості операцій, що виконує даний алгоритм.
Отож, ми маємо число, по якому ми оцінюємо наскільки багато дій буде виконувати певна програма чи її частина, але чи є метод його математичного обчислення? Виявляється, є. На даний момент одним із найпоширеніших підходів до програмування на даний момент є структурний. Давайте розглянемо формули (нагадую, що вони чисто математичні) для основних наявних в ньому конструкцій: "послідовний перехід", розгалуження та циклу. (Позначимо трудомісткість набори розглядуваних команд як

Fтр.)

Розглянемо першу. Суть її в тому, що у нас є певні "блоки" команд і вони виконуються послідовно. Неважко здогадатися, що трудомісткість всієї тієї послідовності рівна сумі трудомісткостей тих "блоків":
 

Fтр=Fтр 1+…+Fтр k



З розгалуженням ситуація трішки складніша. У нас є два "блоки" (хоча це лише окремий випадок; згадайте про такі конструкції як switch або if-else-if, у яких їх може бути значно більше, але суті це не міняє) і ймовірність виконання pi кожного. В такому випадку трудомісткість алгоритму рівна сумі добутків трудомісткості кожного того набору команд на  ймовірність його виконання:
 

Fтр=Fтр 1*p1+…+Fтр k*pk



І, нарешті, цикли (розгдянемо лише цикли з параметром). Не будемо тут вияснювати, що звідни береться. Нехай параметр у нас змінює значення від 1 до N та "внутрішній блок" операцій має трудомісткість Fтр внут. Звідси шляхом певних логічних міркування отримуємо наступну формулу:
 

Fтр=1+3*N+N*Fтр внут


Отож, ми вияснили, що таке трудомісткість алгоритму і як його можна визначати при структурному підході до програмування. Надіюсь, дана інформація була для Вас корисною.
Категорія: Проектування | Додав: Lord_Adwond (15-03-2018) | Автор: Lord_Adwond
Переглядів: 138 | Теги: складність алгоритмів, алгоритми, трудомісткість | Рейтинг: 0.0/0
Всього коментарів: 0
avatar