Основы объектно-ориентированного программирования на языке C# book | Page 37
2.3 Складнiсть задач
Керувальна структура Складнiсть
Простий вираз O(1)
Лiнiйний вираз S 1 ,...S n Домiнанта O(C 1 ), O(C 2 ),
... O(C n ), де C 1 , C 2 , ..., C n –
складностi обчислення ви-
разiв S 1 , S 2 , ..., S n
Якщо <умова> то дiя1 Iнакше дiя2 Домiнанта O(C 1 ), O(C 2 ),
O(C 3 ), де C 1 , C 2 , C 3 – скла-
днiсть обчислень дiй та
умови, вiдповiдно
Цикл iз n повтореннями тiла S 1
O(n ∙ C 1 ), де C 1 – скла-
днiсть обчислення S 1
Табл. 2.2: Складнiсть керувальних структур
3. початок
4. {Простий вираз}
5. кiнець;
Його складнiсть становить O(N 2 ).
Oцiнимо складнiсть алгоритму, що має назву “Трiйки Пiфагора”.
Суть задачi: знайти всi трiйки натуральних чисел (x, y, z), що задо-
вольняють рiвняння x 2 + y 2 = z 2 . Пiфагор знайшов формули, якi в
сучасному формалiзмi можна записати як
x = 2n + 1, y = 2n(n + 1), z = 2n 2 + 2n + 1,
де n – цiле число. Наприклад:
Трикутники iз такими сторонами є прямокутними. Перед аналi-
зом складностi програми, яка знаходить трiйки Пiфагора, зазначимо,
що iснують два способи аналiзу складностi: висхiдний (вiд внутрi-
шнiх керувальних структур до зовнiшнiх) i низхiдний (вiд зовнiшнiх
– до внутрiшнiх). Ми користуватимемося висхiдним. Розглянемо ал-
горитм.
Алгоритм:
Вхiд: n.
1. small = 1
2. Поки small < n виконувати
Початок
37