- •Кафедра Iнформатики
- •«Наука вся - лишь море заблуждений, где нету дна, а правды нет и тени»
- •«Складні проблеми завжди мають прості, легкі для розуміння невірні розв'язання» (закон Гросмана) Формалізація алгоритму
- •«Ускладнювати просто. Спрощувати складно» (закон Мейера) Алгоритмічні системи
- •... Sk0 skj1 skj2 ... Qi sjk ... Skjr-1 skjr sk0 ..., k[1;n]
- •Відлагодження алгоритму
- •«Якщо факти не підтверджують теорію, то їх треба позбутися» (Закон Майєрса) Етапи розв’язання задач на комп’ютері
- •Математична модель
- •Інформаційна модель
- •«Перед тим, як увійти, подумай, як вийти» (Китайське прислів'я) Техноогії проектування алгоритмів
- •«Створіть систему, якою зможе скористатися навіть дурень, і тільки дурень захоче нею користуватися»
- •(Принцип Шоу)
- •Блок-схема алгоритму лінійної структури
- •Алгоритм розгалуженої структури
- •Блок-схема алгоритму розгалуженої структури
- •Алгоритми циклічної структури
- •Алгоритм циклічної структури (параметр циклу змінюється з кроком у заданому сегменті)
- •Блок-схема алгоритму циклічної структури (параметр циклу змінюється з кроком у заданому сегменті)
- •Алгоритм циклічної структури (параметр циклу є елементом масиву)
- •Блок-схема алгоритму циклічної структури (параметр циклу є елементом масиву)
- •Алгоритм складної циклічної структури
- •Блок-схема алгоритму складної циклічної структури
- •Алгоритм обліку суми і добутку
- •Блок-схема алгоритму обліку суми і добутку
- •Алгоритм пошуку мінімуму і максимуму
- •Блок-схема алгоритму пошуку мінімуму і максимуму
- •Алгоритми сортування наданих
- •«Маленька практика краща за велику теорію» (закон Букера)
- •Алгоритми розв’язання інженерних задач
- •Ізоляція кореня
- •Уточнення значення кореня
- •Блок-схема алгоритму методу хорд
- •Початок циклу
- •Кінець циклу
- •Алгоритм розв’язання системи лінійних рівнянь
- •1. Прямий хiд
- •2. Зворотній хiд
- •Блок-схема алгоритму методу Гауса
- •Алгоритми розв’язання диференціального рівняння
- •Алгоритми до методу Эйлера
- •Алгоритми до методу Рунге - Кутта
- •Блок-схеми алгоритмів розв’язання диференціальних рівнянь першого порядку
- •Блок-схеми алгоритмів розв’язання диференціальних рівнянь другого порядку
- •Алгоритм обліку визначеного інтегралу
- •Алгоритм до методу Ньютона - Котеса
- •Блок-схема алгоритму обліку визначеного інтегралу методом Ньютона - Котеса Функція «Інтеграл»
- •Алгоритми апроксимації і інтерполяції функції
- •Алгоритм до методу інтерполяції поліномами Лагранжа
- •Алгоритм до методу апроксимації та інтерполяції в-сплайнами
- •Блок-схеми алгоритмів інтерполяції і апроксимації функції
- •Алгоритм статистичної обробки результатів експерименту
- •Перспективи розвитку теорії алгоритмів «Як тільки теорія стає зрозумілою всім, її пора змінювати» (закон Джексо на)
«Наука вся - лишь море заблуждений, где нету дна, а правды нет и тени»
«Складні проблеми завжди мають прості, легкі для розуміння невірні розв'язання» (закон Гросмана) Формалізація алгоритму
А лгоритм - послідовність формальних дій по перетворенню інформації,
виконання яких призводить до розв'язання поставленої задачі.
З математичної точки зору алгоритмом називається відповідність між словами в абстрактному алфавіті.
Абстрактним алфавітом1 називається скінчена множина символів (це можуть бути літери якоїсь природної мови, цифри, спеціальні символи і т.і.), наприклад: A = {α , φ , γ , δ} або В = {β , λ , π , τ}.
Словом алфавіту називається скінчена упорядкована послідовність символів, наприклад: ai = αγφ або bj = πλβ. Порожнє слово не містить символів алфавіту. Кількість символів у слові називається довжиною слова. Слово bi називається підсловом слова ai, якщо ai = bic, де c - будь-яке слово (у тому числі і порожнє).
Оператором (відображенням) алфавіту називається функція, що задає відповідність між одними словами алфавіту («вхідного») і іншими словами цього ж або іншого алфавіту («вихідного»). Кажуть, що оператор Гai=bj переробляє слово ai вхідного алфавіту A у слово bj вихідного алфавіту В. Однозначним оператором алфавіту називається оператор, який кожне слово вхідного алфавіту відображає в єдине слово вихідного алфавіту. Якщо не існує відображення деякого слова ai вхідного алфавіту в слово bj вихідного алфавіту, то кажуть, що оператор на слові ai не визначено. Сукупність слів, на яких оператор визначено, називають його областю визначення.
Кодуючим оператором Гai=bj називають відображення кожного символу вхідного алфавіту у слово («код») вихідного алфавіту. Нехай, наприклад, для алфавітів А і В визначено кодуючі оператори: Гα=βλτ, Гφ=λπ, Гγ=τλ, Гδ=βτ. Тоді слово «αφγ» алфавіту А відображається у код «βλτλπτλ» алфавіту В. Процес, зворотний кодуванню, називається декодуванням і позначається Г-1 bj=ai. Наприклад, для слова «βττλβτλ» алфавіту В декодування дає слово «δγα» алфавіту А.
Якщо оператор Гai=bj дає слово bj, а сполучений оператор Г-1 bj=ai дає слово ai, то кажуть, що кодуючі оператори взаємно однозначні і має місце зворотність кодування. Проте не всі операції кодування зворотні. Нехай, наприклад, для алфавітів А и В визначено кодуючі оператори: Гα=β, Гφ=λ, Гγ=βλ, Гδ=βτ. Тоді кодування слова «αφγ» алфавіту А дасть код «βλβλ» алфавіту В, але декодування дає неоднозначні варіанти слів: «γγ», «αφγ», «γαφ» алфавіту А.
Таким чином, для зворотності кодування повинні виконуватися умови:
коди різних символів вхідного алфавіту повинні бути різними;
код будь-якого символу вхідного алфавіту не може збігатися з жодним із підслів кодів інших символів цього ж алфавіту.
Кодування, при якому всі коди мають однакову довжину, називається нормальним кодуванням.
Фактично, абиякий процес перетворення інформації може бути формалізовано за допомогою операторів алфавіту: як вхідну, так і вихідну інформацію може бути представлено як слова, а перетворення інформації - як встановлення деякої відповідності між словами. Однією з характерних задач перетворення лексичної інформації є переклад текстів з однієї мови на іншу за допомогою багатозначних операторів алфавіту.
Важливим теоретичним аспектом формалізації операторів алфавіту є засоби іх задання. У тому випадку, коли область визначення оператора алфавіту є скінченою, то оператор може бути задано таблицею відповідності з колонками «вхідне слово» і «вихідне слово». Якщо ж область визначення оператора алфавіту є нескінченою, то оператор задається системою правил, яка дозволяє за скінчену кількість кроків знайти в області визначення оператора вихідне слово, відповідне заданому вхідному слову.
Проте, між операторами алфавіту і алгоритмами існує суттєва різниця, яка полягає у тому, що:
- в операторі алфавіту суттєвою є лише відповідність між словами вхідного і вихідного алфавітів, а не засіб встановлення цієї відповідності;
- в алгоритмі ж, навпаки, суттєвим є засіб задання відповідності між словами вхідного і вихідного алфавітів.
Алгоритм - оператор алфавіту, який задано за допомогою скінченої системи правил, разом із правилами, що визначають його дію.
Оператори алфавіту називають рівними, якщо вони мають однакові області визначення і зіставляють абиякому слову вхідного алфавіту однакові слова вихідного алфавіту.
Алгоритми називають рівними, якщо оператори алфавітів є рівними і має місце співпадання систем правил, що задають дії алгоритмів для цих слів. Алгоритми називають еквівалентними, якщо оператори алфавітів є рівними, але їхні системи правил не співпадають.
Алгоритм, відповідно до якого розв'язання поставленої задачі зводиться до арифметичних дій, називається чисельним алгоритмом. Прикладом арифметичного алгоритму є алгоритм обліку суми ряду.
Алгоритм, відповідно до якого розв'язання поставленої задачі зводиться до логічних дій, називається логічним алгоритмом. Прикладом логічного алгоритму є алгоритм пошуку мінімального елемента множини.
Будь-який алгоритм повинен мати властивість дискретності у часі перетворення даних, тобто він повинен являти собою послідовність «кроків», кожний із який в окремі моменти часу виконує дії, спрямовані на досягнення поставленої мети.
Алгоритм може мати такі властивості:
детермінованість, тобто повторна відтворюваність результатів для однакових вхідних даних (за звичай у теорії алгоритмів розглядаються лише алгоритми з однозначними операторами алфавіту; такі алгоритми називають детермінованими);
масовість, тобто можливість застосування алгоритму для однотипних вхідних даних; алгоритм повинен перетворювати абстрактні дані, а не константи (мало коштує алгоритм, що тільки і «вміє», що підраховувати суму «2+2»; він повинен «уміти» підраховувати суму у загальному вигляді, тобто «a+b»);
результативність, тобто одержання результатів за скінчену кількість «кроків». Для складання «кубика Рубіка», наприклад, методом простого перебору варіантів навіть на швидкодіючому комп'ютері потрібно декілька тисяч років (!), проте відомі алгоритми досягнення того ж результату за лічені секунди. Із властивості результативності випливає поняття області придатності алгоритму, тобто множини вхідних даних, для яких алгоритм є результативним;
збіжність, тобто можливість досягнення наперед заданої точності розрахунку.
У загальному випадку ще розрізняють випадкові й адаптивні алгоритми.
Алгоритм називається випадковим, якщо які-небудь його «кроки» передбачають можливість випадкового вибору можливих дій. Прикладами випадкових алгоритмів можуть служити алгоритми деяких ігор - «гадалок». Алгоритм називається адаптивним, якщо він змінює склад «кроків» та (або) методи переробки інформації. Результат роботи адаптивного алгоритму залежить не тільки від вхідних даних, але і від передісторії роботи алгоритму.
