
lek_02.ppt
- Количество слайдов: 69
Моделі об'єктів і процесів Лекція з курсу «Структури даних» Час – 4 год
План • Поняття моделі • Моделі структурні та функціональні • Моделі матеріальні та інформаційні • Класифікація моделей • Етапи моделювання • Властивості алгоритму • Види алгоритмів та їх реалізація • Базові канонічні структури алгоритмів
Поняття моделі
Розподіл однотипних об’єктів у відповідності до виділених властивостей (ознак, категорій, класів) називається класифікацією. Може виявитися, що у об'єктів декілька загальних властивостей, не залежних один від одного, тоді розподіляти їх можна за різними класифікаційними ознаками, тобто проявляється множинність класифікацій для однієї і тієї ж групи об'єктів.
Об'єкт найпростіша складова складного об'єднання, що має такі якості: • в рамках даного завдання він не має внутрішньої побудови і розглядається як єдине ціле; • у нього є набір властивостей (атрибутів), які змінюються в результаті зовнішніх впливів; • він ідентифікований, тобто має ім'я (назву).
Клас це сукупність об'єктів, що володіють одним або декількома однаковими атрибутами; ці атрибути називаються полем властивостей класу. Система сукупність взаємодіючих компонентів, кожен з яких окремо не має властивості системи в цілому, але є її невід'ємною частиною
Модель спрощене уявлення про реальний об'єкт, процес або явище. Моделювання побудова моделей для дослідження та вивчення об'єктів, процесів або явищ. Причини створення моделей: По перше, можна моделювати оригінал (прототип), якого вже не існує або його немає насправді. По друге, оригінал може мати багато властивостей і взаємозв'язків. Для вивчення деяких властивостей іноді корисно відмовитися від менш істотних, зовсім не враховуючи їх.
Моделі структурні та функціональні
Стан прототипу це сукупність властивостей його складових частин, а також його власних. Стан своєрідна «моментальна» фотографія прототипу для вибраного моменту часу. З плином часу стан може змінюватися, тоді говорять про існування процесу. У відповідності зі сказаним можлива побудова моделі стану та моделі процесів. Моделі першого типу називаються структурними, другого типу – функціональними моделями
Прикладами структурних моделей є креслення якого небудь пристрою, схема комп'ютера, блок схема алгоритму і т. п. Прикладом функціональних моделей є макет, що демонструє роботу чого небудь. Найважливішим класом функціональних моделей є імітаційні моделі. Імітаційне моделювання метод дослідження, заснований на тому, що досліджуваний прототип замінюється його імітатором (натурною або інформаційною моделлю), з яким і проводяться експерименти з метою отримання інформації про особливості про тотипу.
Моделі матеріальні та інформаційні
Класифікація моделей
Матеріальні моделі інакше можна назвати предметними, фізичними. Вони відтворюють геометричні та фізичні властивості оригіналу і завжди мають реальне втілення. Інформаційна модель сукупність інформації, що характеризує властивості та стан об'єкта, процесу, явища, а також взаємозв'язок із зовнішнім світом. Інформаційні моделі в свою чергу поділяються на знакові і безперервні.
Розглянемо графічну форму моделі (рис. ), що відповідає такому словесному опису: «А вчиться в одній групі з В і С, але не з D і Е, які навчаються в іншій групі» . Тут М = {А, В, С, D, Е}, а відношенням R буде «вчитися в одній групі» .
Класифікація моделей
Найбільш поширені ознаки, за якими класифікуються моделі: • область використання; • врахування в моделі часового фактору (динаміки); • галузь знань; • спосіб представлення моделей.
Класифікація за областю використання: • навчальні моделі наочні посібники, різні тренажери, навчальні програми; • науково-технічні моделі створюють для дослідження процесів і явищ; • ігрові моделі це військові, економічні, спортивні та ділові ігри; • імітаційні моделі не просто відображають реальність, а імітують її. Експеримент або багаторазово повторю ється, або проводиться одночасно з багатьма іншими схожими об'єктами, але поставленими в різні умови.
Класифікація з урахуванням фактору часу. Моделі можна розділити на статичні (це ніби одномоментний зріз інформації по об'єкту) і динамічні. Динамічна модель дозволяє побачити зміни об'єкту в часі.
Класифікація моделей за способом представлення
Вербальна модель інформаційна модель в уявній чи розмовній формі. До таких моделей можна віднести й ідею, що виникла у винахідника, і музичну тему, і риму, що пролунала поки що в свідомості у автора.
Знакова модель інформаційна модель, виражена спеціальними знаками, тобто засобами будь якої формальної мови (рисунки, тексти, графіки, схеми). За формою подання можна виділити наступні види інформаційних моделей: • геометричні графічні форми та об'ємні конструкції; • словесні усні та письмові описи з використанням ілюстрацій; • математичні формули, що відобра жають зв'язок різних параметрів об'єкта або процесу; • структурні схеми, графіки, таблиці тощо; • логічні моделі, в яких представлені різні варіанти вибору дій на основі умовиводів та аналізу умов; • спеціальні ноти, хімічні формули і т. п. ; • комп'ютерні та некомп'ютерні моделі.
Етапи моделювання
Етап I. Постановка завдання. Опис завдання. Визначення мети моделювання. Аналіз об'єкта моделювання. Етап ІІ. Розробка моделі. На цьому етапі з'ясовуються властивості, стани, дії та інші характеристики елементарних об'єктів. Формується уявлення про елементарні об'єкти. Вибір найбільш суттєвої інформації при створенні інформаційної моделі та її складність обумовлені метою моделювання. Етап ІII. Комп'ютерний експеримент. Тестування процес перевірки правильності моделі. Етап IV. Аналіз результатів моделювання. Прийняття рішення, яке має бути вироблено на основі всебічного аналізу отриманих результатів. Етап V. Кінцева мета моделювання.
Властивості алгоритму
Алгоритмом називається система формальних правил, яка чітко і однозначно визначає процес вирішення поставленої задачі у вигляді скінченної послідовності дій або операцій.
Властивості, якими повинен володіти алгоритм: 1. Скінченність алгоритму. Алгоритм повинен приводити до вирішення завдання обов'язково за скінченний час. Послідовність правил, яка призвела до нескінченного циклу, алгоритмом не є. 2. Визначеність, або детермінованість, алгоритму. Ця властивість означає, що неоднозначність тлумачення запису алгоритму неприпустима.
4. Масовість алгоритму. Це означає, якщо правильний результат по алгоритму отримано для одних вихідних даних, то правильний результат з цього ж алгоритму повинен бути отриманий і для інших вихідних даних, допустимих в даній задачі. 5. Ефективність алгоритму. Під ефективністю алгоритму будемо розуміти таку його властивість (якість), яка дозволяє вирішити задачу за прийнятний для розробника час. До параметру, що характеризує ефективність алгоритму, слід віднести також обсяг пам'яті комп'ютера, необхідний для вирішення задачі.
Види алгоритмів та їх реалізація
У залежності від мети, початкових умов задачі, шляхів її вирішення, визначення дій розробника алгоритми поділяють на механічні, або детерміновані (жорсткі), і гнучкі, або стохастичні (імовірнісні та евристичні).
Механічний алгоритм задає певні дії, позначаючи їх в єдиній послідовності, що забезпечує однозначний необхідний (шуканий) результат в тому випадку, якщо виконуються умови процесу, для яких розроблено алгоритм. До таких алгоритмів відносяться алгоритми роботи машин, верстатів, двигунів і т. п.
Імовірнісний (стохастичний) алгоритм пропонує програму розв'язання задачі кількома шляхами або способами, що призводять до досягнення результату. Евристичний алгоритм (від грецького слова «еврика» ) це такий алгоритм, в якому досягнення кінцевого результату однозначно не визначено, так само як не означена вся послідовність дій. У цих алгоритмах використовуються універсальні логічні процедури і способи прийняття
У програмуванні алгоритми поділяються на три типи: • лінійний набір команд (вказівок), які виконуються послідовно одна за одною; • алгоритм з розгалуженням алгоритм, що містить хоча б одну перевірку умови, в результаті якої забезпечується перехід на один з можливих варіантів розв’язку; • циклічний алгоритм, який передбачає
Класифікація способів представлення алгоритмів
На практиці найбільш поширені такі способи: • словесний; • формульно словесний; • блок схемний; • псевдокод; • структурні діаграми; • мови програмування.
Словесний спосіб зміст етапів обчислень задається на природній мові в довільній формі з необхідною деталізацією. Формульно-словесний спосіб – подання інструкцій з використанням математичних символів і виразів у поєднанні зі словесними поясненнями. Блок-схемний спосіб це графічне зображення алгоритму, в якому кожен етап процесу обробки даних представляється у вигляді геометричних фігур (блоків), які мають певну конфігурацію в залежності від характеру виконуваних операцій.
Псевдокод являє собою сукупність операторів мови програмування і звичайної мови. Структурні діаграми можуть використовуватися в якості структурних блок схем, для показу міжмодульних зв'язків, для відображення структур даних і систем обробки даних.
Базові канонічні структури алгоритмів
Для реалізації алгоритмів на ПЕОМ використовується алгоритмічна мова набір символів і правил утворення і тлумачення конструкцій із цих символів для запису алгоритмів. Будь яку програму можна написати, використовуючи комбінації трьох базових структур: • слідування, або послідовності операторів; • розгалуження, або умовного оператора; • повторення, або оператора циклу.
Блоки, пов'язані з обробкою даних, поділяються на прості та умовні. Особливість простої дії в тому, що вона має один вхід і один вихід, на відміну від умовної – з двома виходами в залежності від того, чи істинною виявиться умова. Частина алгоритму, організована як проста дія, тобто яка має один вхід (виконання починається завжди з однієї і тієї ж дії) і один вихід (тобто після завершення даного блоку завжди починає виконуватися та сама дія), називається функціональним блоком.
Потік управління може мати такі властивостями: • кожен блок виконується не більше одного разу; • виконується кожний блок. Потік управління, в якому виконуються обидві ці властивості, називається лінійним, в ньому декілька функціональних блоків виконуються послідовно. декілька блоків, пов'язаних лінійним потоком управ ління, можуть бути об'єднані в один функціональний блок
Другий тип потоку управління називається розгалуженням він організовує виконання одного з двох функціональних блоків залеж но від перевірки значення логічної умови. Перевірка Р представляється предикатом, тобто функцією, яка задає логічний вираз або умова, значенням якої може бути істина або хибність. Якщо структура містить два функціональних блоки (S 1 та S 2), розгалуження називається повним; можливе існування неповного розгалуження при цьому один блок
Перемикач вибір одного варіанта з множини можливих альтернатив. В залежності від значення Р виконується одна з дій А, В, . . . Z. Після вибору варіанта відбувається перехід до виконання наступної управляючої структури.
Повторення багаторазове виконання фрагментів алгоритму (програми). Такий тип потоку управління називається циклічним він організовує багаторазове повторення функціонального блоку, поки логічна умова його виконання є істинною. Дія А буде повторюватися до тих пір, поки значення предиката Р залишатиметься істинним. Тому в дії А повинні змінюватися значення змінних, від яких залежить Р, в іншому випадку відбудеться зациклення.
Схема циклу з передумовою Схема циклу з післяумовою
Алгоритм називається структурним, якщо він представляє собою комбінацію з трьох розглянутих вище структур (вони називаються базовими алгоритмічними структурами). Не всі алгоритми є структурними. Переваги структурних алгоритмів у порівнянні з неструктурними: • зрозумілість і простота сприйняття алгоритму (оскільки він утворений невеликою кількістю вихідних структур);
Теорема Бома Джакопіні: будь-який алгоритм може бути зведений до структурного. Іншими словами, для будь-якого неструктурного алгоритму може бути побудований еквівалентний йому структурний алгоритм.
Поняття структурного програмування включає певні принципи проектування, кодування, тестування та документування програм відповідно до заздалегідь визначеного чіткого порядку.
Повна побудова алгоритму передбачає послідовне виконання наступних етапів: 1) постановка задачі; 2) побудова моделі; 3) розробка алгоритму; 4) перевірка правильності алгоритму; 5) реалізація, тобто програмування алгоритму; 6) аналіз алгоритму і його складності;
Етапи розв'язання задачі на ЕОМ
Постановка задачі. Перш ніж зрозуміти задачу, її потрібно точно сформулювати. Ця умова само по собі не є достатньою для розуміння завдання, але воно абсолютно необхідна. Зазвичай процес точного формулювання завдання зводиться до постановки правильних питань. Наприклад: • Чи зрозуміла термінологія, яка використовується в попередньому формулюванні?
Побудова моделі. Після чіткої постановки задачі, потрібно сформулювати для неї математичну модель. Вибір моделі істотно впливає на інші етапи в процесі вирішення. Приступаючи до розробки моделі, слід поставити, принаймні, два основні питання: 1. Які математичні структури найбільше підходять для задачі? 2. Чи існують вирішені аналогічні завдання?
Розробка алгоритму. Вибір методу розробки алгоритму часто сильно залежить від вибору моделі і може значною мірою вплинути на ефективність алгоритму рішення. Два різних алгоритми можуть бути правильними, але дуже сильно відрізнятися по ефективності. Правильність алгоритму. Доказ правильності алгоритму це один з найбільш важких, а іноді і особливо стомливих етапів створення алгоритму. Ймовірно, найбільш розповсюджений прийом доказу правильності програми це прогон її на
Реалізація алгоритму. Як тільки алгоритм виражений, припустимо, у вигляді послідовності кроків і ми переконалися в його правильності, настає черга реалізації алгоритму, тобто написання програми для комп'ютера. При цьому виникають такі проблеми. • Досить часто окремо взятий крок алгоритму може бути виражений у формі, яку важко перевести безпосередньо в конструкції мови програмування. Наприклад, один із кроків алгоритму може бути
Необхідно відповісти на такі питання: • Які основні змінні? • Яких вони типів? • Скільки потрібно масивів і яких розмірностей? • Чи є сенс користуватися зв'язковими списками? • Які потрібні підпрограми (можливо, вже записані в пам’яті)? • Якою мовою програмування
Слід зауважити, що одна справа довести правильність конкретного алгоритму, описаного в словесній формі, інше довести, що дана машинна програма, що є реалізацією цього алгоритму, також правильна. Саме тому необхідно дуже ретельно стежити, щоб процес перетворення правильного алгоритму (у словесній формі або формі схеми алгоритму) в програму, написану на алгоритмічній мові, заслуговував довіри.
Головні принципи створення ефективних алгоритмів
Один з можливих шляхів переглянути свій запас загальних алгоритмічних методів для того, щоб перевірити, чи не можна за допомогою одного з них сформулювати розв’язок нової задачі.
Перший метод пов'язаний з перетворенням важкої задачі до послідовності простіших задач. Звичайно, ми сподіваємося на те, що більш прості задачі легше піддаються обробці, ніж первинне завдання, а також на те, що рішення первинної задачі може бути отримано з рішень цих більш простих завдань. Така процедура називається методом часткових цілей.
Другий метод розробки алгоритмів відомий як метод підйому. Алгоритм підйому починається з прийняття початкового припущення або обчислення початкового розв’язку задачі. Потім починається наскільки можливо швидкий рух «вгору» від початкового рішення у напрямку до кращих рішень. Коли алгоритм досягне такої точки, з якої більше неможливо рухатися нагору, алгоритм зупиняється. На жаль, ніхто не можемо завжди гарантувати, що остаточне рішення, отримане за допомогою алгоритму підйому, буде оптимальним. Ця ситуація
Ілюстрація методу підйому
Третій метод відомий як відпрацювання назад, тобто робота цього алгоритму починається з мети або розв’язку задачі, а потім здійснюється рух до початкової постановки задачі. Потім, якщо ці дії зворотні, проводиться рух назад від постановки завдання до вирішення.
Питання?
Дякую за увагу!!!
lek_02.ppt