Вступна лекція
Курс лекцій, що вам пропонується, носить назву “Основи дискретної математики”. Що приховує ця назва, тобто що Ви будете вивчати і задля якої мети?
Дискретна математика – складова частина математики, що з найдавніших часів розробляє засоби дослідження дискретних процесів і систем. Звичайно у визначенні предмета дискретної математики звучить властивість “дискретності” як антипод “неперервності”.
Математиці, і в тому числі дискретній математиці, належить велика роль у розвитку науки. Практично всі галузі науки і техніки підпадають під вплив математики. Це пов'язано з тим, що математика є засобом формалізації знання. Кожна галузь науки вивчає свої об'єкти, але існують підходи і принципи, що об'єднують науку. Один із загально методологічних підходів науки – моделювання, тобто дослідження об'єктів за допомогою інших об'єктів, що називаються моделями. Так, перш ніж будувати запроектований літак реальних розмірів, створюється і досліджується його маленька модель. Це приклад фізичного моделювання, коли модель повторює суть і форму процесів досліджуваного об'єкта. Однак модель може повторювати тільки форму процесів досліджуваного об'єкта. Така модель називається формальною чи математичною, і її переваги полягають в тому, що вона може бути спільною для об'єктів дослідження різних наук, добре вивченою, дешевою, такою що дозволяє широкий вибір різноманітних режимів дослідження, вимагає менше часу на дослідження.
Звідки ж випливає необхідність вивчення дискретної математики інженерами з комп’ютеризованих систем зі спеціальності “Системи управління і автоматики”?
Відомо, що з комп'ютеризованими системами в керуванні, проектуванні й інших сферах діяльності людини, зокрема, автоматизованими системами керування технологічними процесами (АСКТП), автоматизованими системами керування (АСК), автоматизованими системами обробки інформації і керування (АСОІК), системами автоматизації проектування (САПР), інформаційно-керуючими системами (ІКС), інформаційно-пошуковими системами (ІПС), автоматизованими інформаційними системами (АІС) тощо, пов'язана реалізація кібернетичного підходу до керування з використанням комп'ютерів. Кібернетика – наука, що вивчає задачі керування і зв'язку в різних об'єктах як живих, так і неживих. Фундатор кібернетики Норберт Вінер увів нову категорію “керування”. Сутність принципу керування полягає в тому, що рух і дія великих мас чи передача і перетворення великих кількостей енергії направляються і контролюються за допомогою невеликих кількостей енергії, що несуть інформацію.
Таким чином, процеси керування пов'язані з та засновані на процесах обробки ін формації. Більш того, останнім часом усе коло питань, пов'язаних з обробкою інформації, формує предмет науки інформатики, що поглинає значну частину проблематики кібернетики.
Реалізація зазначених принципів пов'язана з реалізацією за допомогою комп'ютерної техніки виниклого в кібернетиці представлення про схему керування зі зворотним зв'язком:
ОК - об'єкт керування; СК - система керування; Х - вхідний потік; Y – вихідний потік; W – інформація про стан ОК; V - керуючі впливи; Z – збурюючі впливи |
Рис.1. Схема керування зі зворотним зв'язком.
І кібернетика, і інформатика мають як теоретичну, так і практичну спрямованість. Їхня практична сторона – методи побудови систем керування (СК), що забезпечують найкраще, в якомусь сенсі, керування. Їхня теоретична сторона – вивчення закономірностей побудови СК і процесів керування, щонайменше це Ляпунов відносить до кібернетики.
Сформувалися наступних два підходи до вивчення СК:
- макропідхід, коли система розглядається як “чорний ящик”, і дослідник визначає як залежить вихід від входу; це дозволяє підібрати відповідний вхід для досягнення необхідного чи найкращого виходу;
- мікропідхід, коли поведінку системи дослідник намагається побудувати на підставі аналізу структури системи, тобто складу і характеру взаємозв'язків її елементів, дослідник створює модель поведінки, потім синтезує й аналізує алгоритм, що забезпечує найкращу поведінку системи, тобто алгоритм керування. З впровадженням у керування комп'ютерів реалізацію моделей і алгоритмів здійснюють у вигляді комп'ютерних програм.
СК на базі комп'ютерної техніки і моделей керування, реалізованих програмно, становлять собою АСК. Останні, таким чином, є комп'ютеризованими системами, функціонування яких здійснюється у вигляді процесу реалізації системи алгоритмів, послідовність виконання яких залежить від стану ОК. Такий підхід до організації АСК називають алгоритмічним. Отже, в основі реалізації кібернетичного підходу до побудови АСК лежить тріада:
модель алгоритм програма
Проектування, впровадження і експлуатація комп’ютеризованих систем вимагають розв’язання цілої низки різноманітних проблем, насамперед створення методів і засобів опису й аналізу структур і поводження СК й ОК, алгоритмів керування, засобів оцінки продуктивності алгоритмів, засобів опису і створення програм тощо. В сучасному світі глобальної інформатизації до цих проблем залучаються також створення ефективних систем захисту інформації, створення і використання глобальних, корпоративних та локальних мереж, створення і підтримка актуальних баз даних нормативного, комерційного призначення тощо.
Дискретна математика забезпечує кібернетику, інформатику і теорію і практику побудови АСК й інших комп'ютеризованих систем відповідними методами. Звідси й випливає необхідність включення дисципліни “Основи дискретної математики” в навчальний план підготовки магістрів та інженерів з комп’ютеризованих систем зі спеціальності “Системи управління і автоматики”.
На наступному невеликому прикладі розглянемо, як можна реалізувати стадії кібернетичного підходу. У регіоні розташовані кілька підприємств, кожне з яких може бути постачальником і споживачем деякої продукції. Між деякими (необов'язково усіма) парами підприємств прокладені транспортні магістралі, що характеризуються відстанню, пропускною здатністю тощо. Розглянемо проблеми керування перевезеннями, зокрема, проблему визначення найменшого за відстанню (найкоротшого) маршруту транспортування вантажу між довільною парою підприємств. Тобто потрібно встановити проміжні пункти (підприємства), через які прямує вантаж і при цьому формується найкоротший маршрут доставки вантажу між обраною парою підприємств.
По-перше, необхідно мати модель системи перевезень. Найпростіший вихід – використання плану магістралей на місцевості. Але план містить безліч непотрібних деталей. Щоб позбутися їх, треба залишити тільки факт наявності пункту (підприємства) і магістралі. Виникає об'єкт, який можна представити графічно, у вигляді, наведеному на рис.2 (будемо вважати, що він відповідає конкретним вхідним даним нашої проблеми).
Тут підприємствам відповідають позначені літерами A, B, C, D та E точки площини. Причому ми їх позначаємо, щоб не втратити зв'язок з реальними підприємствами. А наявності транспортної магістралі між парою підприємств відповідає лінія між точками, що відповідають цим підприємствам.
|
|
|
Рис 2.
Цей об'єкт називають графом, заданим геометричним способом. Tочки і лінії називають відповідно вершинами і ребрами. Тоді граф – модель системи перевезень. Розглянемо докладніше граф з цієї точки зору. У графі збережена лише наявність магістралі (у вигляді ребра) між парою вершин, але не її форма. Форма магістралі на плані з урахуванням масштабу давала можливість зберегти деякі характеристики магістралей, наприклад, відстань. З іншого боку, на плані вже не можна установити пропускну здатність магістралі, якщо не вказати це явно. Таким чином, задати цю характеристику магістралей можна на графі в явному вигляді. Тоді ми одержимо об'єкт, який вже не називають графом. Це вже інший об'єкт дискретного аналізу – мережа. Відстань на графі також потрібно вказувати явно. Тоді ми також одержимо новий об'єкт дискретного аналізу, який звичайно називають зваженим графом. Приклад зваженого графа наведений на рис.3. Кожне ребро характеризується вагою – довжиною відповідної магістралі (відстанню між відповідними підприємствами). Отже, зважений граф на рис.3 зберігає потрібні для розв’язання сформульованої проблеми дані і можна прийняти його за потрібну нам модель.
Рис 3.
Потім варто створити модель поведінки, тобто модель вибору найкоротшого маршруту. Будемо позначати ребро, що зв'язує вершини X і Y, парою літер XY. Маршрутом у графі називають послідовність ребер, у якій позначення попереднього ребра закінчується, а позначення наступного ребра починається з тієї ж літери (природно, жодних дві точки не повинні бути позначені тією ж літерою). Модель поведінки змістовно можна сформулювати в такий спосіб: знайти маршрут з вершини X у вершину Y, сума ваг ребер якого мінімальна серед усіх маршрутів з вершини X у вершину Y.
Для математика все сказане вище означає, що змістовно сформульовано задачу. Він може сформулювати її чіткіше, використовуючи математичну символіку в більш стислому вигляді, говорять формально поставити задачу, наприклад у вигляді:
де Мi - маршрут i між заданою парою вершин;
{Мi} - множина усіх маршрутів між заданою парою вершин;
pxy - вага ребра XY маршруту Мi.
Друга стадія полягає в створенні методу розв’язання поставленої задачі. ЗастосуВання методу розв’язання до вхідних даних (наведеного зваженого графа) і реалізація результатів і забезпечать найкращу поведінку. Нехай потрібно визначити найкоротший маршрут з вершини А в вершину Е. Можна було б перебрати всі маршрути, визначити суми їхніх ваг і вибрати маршрут, якому відповідає найменша сума, визначена вище. Наприклад, з маршрутів АВ, ВЕ й АD, DC, CE вигідніший другий маршрут. Однак вже в нашому прикладі потрібно порівняти п'ять маршрутів, а в більш складних випадках число маршрутів різко зростає. Тому дискретний аналіз ставить не просто проблему визначення методу розв’язання, але проблему створення методу, що працює краще, звичайно швидше інших. Будемо записувати метод розв’язання у вигляді послідовності дій, що повинні бути виконані тим, хто розв’язує задачу. Така послідовність дій звичайно називається алгоритмом. Більш зручним у цьому відношенні буде наступний алгоритм:
Крок 1. Вершині, що відповідає пункту відправлення, приписуємо вагу 0.
Крок 2. Кожній вершині, зв'язаної ребром з вершиною кроку 1, приписуємо відстань, рівну вазі ребра. Позначаємо відстань першою літерою з позначення ребра. Включаємо вершини, відстань до яких визначено на кроці 2, у список перегляду в довільному порядку.
Крок 3. Вибираємо зі списку перегляду чергову вершину Z. Визначаємо вершини, з якими вершина Z зв'язана ребрами, приписуємо до списку перегляду ті з них, що у списку не містяться (вершину, що відповідає пункту призначення, у список не включаємо). Для кожної знайденої вершини визначаємо відстань, додаючи вагу відповідного ребра до відстані вершини Z. Якщо для вершини відстань вже визначалася раніше, і нова відстань менше, то приписуємо їй нову відстань і позначаємо її літерою Z. Якщо нова відстань не менше, то залишаємо вершину без змін. Якщо вершині раніше відстань не приписувалася, то приписуємо їй визначеним чином відстань і позначаємо її літерою Z. Викреслюємо Z зі списку перегляду.
Крок 4. Якщо список перегляду не порожній, то переходимо до кроку 3, інакше – до кроку 5.
Крок 5. Відновлюємо маршрут по оцінках відстаней, рухаючись по ребрах графа від вершини, що відповідає пункту призначення, до вершини, що відповідає пункту відправлення, використовуючи позначки відстаней, приписаних вершинам.
Робота алгоритму для визначення найкоротшого маршруту з пункту А в пункт Е моделі показана на рис 4 – 8.
|
| |||||
|
|
|
Рис. 4
Список: C,D
Рис 5.
Список: D
Рис 6.
Список: C
Рис 7.
Список порожній
Рис 8.
Легко відновити найкоротший маршрут: AD,DC,CE.
Заключна стадія – складання і використання програми – нами не розглядається, але пізніше Ви переконаєтеся, що цей алгоритм можна запрограмувати мовами Паскаль, Сі й іншими. Дискретний аналіз забезпечує засоби для полегшення процесу програмування, створення більш ефективних програм.
Розмаїтість об'єктів керування вимагає розмаїтості використовуваних для моделювання, алгоритмізації і програмування засобів і методів дискретної математики, але послідовність стадій залишається незмінною.
Отже, основна наша мета – оволодіння набором засобів і методів дискретного аналізу, достатніх для реалізації кібернетичного підходу при створенні АСК для різноманітних об'єктів керування, реалізації ефективних систем збору, передачі, оброблення, відображення, збереження, розподілення і захисту інформації.
Як відібрати достатній набір засобів і методів? Дискретна математика розвивалася одночасно з розвитком кібернетики, розширенням впровадження комп'ютерів у керування. Сьогодні дискретна математика становить величезну область. Так, до вже сформованих розділів, таких як теорія чисел, алгебра, алгебра логіки, теорія графів, теорія алгоритмів, пізніше додалися теорія формальних систем, комбінаторний аналіз, цілочисельне програмування, теорія автоматів, теорія граматик, теорія кодування й інші. До того ж значно змінилися традиційні розділи дискретної математики.
Більш того, у кібернетиці й теорії управління усе більш рішуче заявляє про свої права новий напрямок – штучний інтелект (ШІ). Це пов'язане з тим, що взагалі в науці відбувається переорієнтація на напрямки, пов'язані з вивченням людини, полегшенням її праці. У кібернетиці і комп'ютерних системах це явище виразилося в створенні комп'ютерів, моделей і програмних систем, що імітують мислення людини, її логічну діяльність. Виявилося, що для цього необхідно навчити комп'ютер усвідомлювати ситуації навколишнього світу, оцінювати їх і вчинені при цьому дії, вибирати ті дії, що ведуть до мети, навчатися, тобто здобувати знання для наступного використання.
Таким чином, якщо система створюється як інтелектуальна система, вона повинна опиратися на апарат представлення знань і пошуку рішень у базі знань. У цьому випадку традиційний алгоритмічний підхід доповнює схеми виведення. Мовні проблеми в інтелектуальних системах вирішують із залученням фундаментальних понять змісту і цінності мовних конструкцій. Область дискретної математики істотно розширилася, у ній з'явилися відповідні засоби – теорія виведення, граматики із семантикою тощо.
Зважаючи на усталені і сьогодні створювані напрямки дискретної математики, їх роль у створенні комп’ютеризованних систем керування, реалізації інформаційних процесів, беручи до уваги важливість порядку подачі матеріалу, до цьому курсу залучені такі розділи:
1. Проблематика і взаємозв'язок розділів курсу.
2. Вступ до алгебраїчних систем.
3. Теорія графів і мереж.
4. Теорія граматик.
5. Теорія автоматів.
6. Вступ до математичної логіки.
Матеріал зазначених розділів дозволяє відібрати набір засобів і методів математичного моделювання дискретних систем і процесів. Зокрема, засоби моделювання розглядаються в розділах 1-3,5. Засоби для розв’язання мовних проблем розглядаються в розділах 4,5.
Засоби реалізації алгоритмічного підходу будуть розглядатися в курсі “Алгоритміка”, що читається в 4-му семестрі. Теорія алгоритмів виникла після того, як з'явилося поняття нерозв'язуваності проблем, коли численні невдалі спроби рішення відомих масових проблем зміцнили математиків у прагненні довести, що відповідних алгоритмів для рішення цих проблем узагалі не існує. Уся множина проблем розділяється на розв'язувані і нерозв'язувані, тобто на ті, котрі мають алгоритм і ті, котрі алгоритмів не мають. Для доведення нерозв'язуваності проблеми необхідне точне визначення алгоритму, оскільки неможливо довести існування чи не існування того, що не визначено.
Точне визначення алгоритму було першою проблемою теорії алгоритмів. У 30 - 40-х роках А.Т'юрінгом, Е.Постом, А.Черчем, а пізніше А.А.Марковим і С.Кліні були запропоновані уточнення до визначення алгоритму і розроблені перші методи доведення нерозв'язуваності масових проблем.
Коли комп'ютери почали впроваджувати в сферу керування, постала необхідність подальшого розбиття множини розв'язуваних проблем, оскільки склалося так, що з практичної точки зору існування алгоритму не завжди дає рішення в прийнятний час в умовах обмеженості часу і ресурсів.
На основі теорії алгоритмів сформувалися теорія складності, теорія NP-повноти і теорія зведення, метою яких була оцінка алгоритмів і проблем, розбиття множини розв'язуваних проблем на “гарні” і “погані” і побудова ієрархії “поганих” проблем. Подальший розвиток теорії алгоритмів пов'язаний з автоматизацією конструювання алгоритмів. У теорії алгоритмів з'явився напрямок “Прикладна теорія алгоритмів” чи “Алгоритміка”.
Усе це обумовлює включення теорії алгоритмів у окремий курс лекцій. Необхідні для розвитку систем ШІ методи і засоби розглядаються в розділі 6 і, крім того, складуть предмет згаданого вище курсу “Алгоритміка”.
Крім основної мети, що полягає у формуванні фундаменту дискретної математики, необхідного для інженера з комп’ютеризованих систем, ми поставимо перед собою й інші цілі:
- по-перше, покажемо, які прикладні проблеми формалізації реальних об'єктів обумовили появу тих чи інших засобів дискретної математики;
- по-друге, приділимо увагу суті математичного методу і його сприятливому впливу на ідеї функціонування комп'ютеризованих систем;
- по-третє, продемонструємо на прикладі дискретної математики спільність багатьох проблем логіки, лінгвістики, кібернетики;
- по-четверте, проілюструємо будову дискретної математики як складного комплексу, здатного до синтезу й аксіоматизації.
Побажаємо успіхів у вивченні матеріалу курсу, що не тільки збагатить Вас новими знаннями й ідеями, але й, віриться, принесе інтелектуальне задоволення, відточить здатність маніпулювати алгебраїчними і геометричними образами реальних об'єктів і процесів.
Насамкінець, варто зазначити, що матеріал нашого курсу пов'язаний фактично з усіма загальноосвітніми дисциплінами навчального плану підготовки бакалаврів «Комп'ютеризовані системи, керування і автоматика».
РОЗДІЛ 1. ПРОБЛЕМАТИКА І ВЗАЄМОЗВ’ЗОК РОЗДІЛІВ КУРСУ: ПЕРЕДУМОВИ, РІШЕННЯ, ПЕРСПЕКТИВИ.
У першому розділі в розрізі сформульованих потребами розвитку теорії проектування й експлуатації комп'ютеризованих систем проблем розглянуті запропоновані дискретною математикою моделі, засоби і методи, їхній взаємозв'язок у загальній схемі створення комп'ютеризованих систем і в пропонованому курсі.
ТЕМА 1. Загальний аналіз засобів моделювання дискретної математики
Тема присвячена знайомству з фундаментальними об’єктами дискретної математики – множинами і операціями над ними, функціям та відношенням. Ми введемо відповідні означення, розглянемо важливі класи функцій та відношень, проаналізуємо їх властивості. Насамкінець розглянемо теоретичні основи застосування теорії відношень в сучасних системах керування базами даних.
Лекція 1. Множини і функції
У цій лекції будуть розглянуті фундаментальні поняття дискретної математики, що дозволяють моделювати реальні об'єкти і системи, їхню структуру і поведінку.
1. Множини. Одна з найважливіших умов працездатності кібернетичного підходу – комплексний погляд на проблему керування будь-яким об'єктом, процесом. У першу чергу, це виявляється в уявленнях про ОК як про систему. Звідси випливає необхідність нормальних уявлень про системи. Яке б визначення системи ми не взяли, скрізь, насамперед, говориться про сукупність елементів.
Математики уявлення про сукупність вклали в один з найважливіших об'єктів математики – множину. Звичайно, говорячи про множину, мають на увазі поєднання об'єктів, добре розрізнюваних інтуїцією і думкою людини. Узагалі поняття “множина” – первинне поняття і строгого визначення не має, але використання синонімів “сукупність”, “клас”, “юрба” полегшує положення.
Приклади: множина студентів НТУУ “КПІ”, множини літер українського, російського чи англійського алфавітів, множина вершин графа, множина ребер графа.
Для полегшення подальшого викладу матеріалу введемо усталену термінологію. Об'єкти, що утворюють множину, назвемо елементами множини і будемо позначати маленькими літерами латинського алфавіту a, b, c,...,x, y, z. Множини будемо позначати великими літерами латинського алфавіту А, B, C,.... Так склалося, що множини, які часто використовуються, мають закріплені позначення:
N - множина натуральних чисел;
P - множина додатних цілих чисел;
Z - множина додатних і від’ємних цілих чисел, включаючи нуль;
Q - множина раціональних чисел;
R - множина дійсних чисел.
Якщо множина не містить жодного елемента, назвемо її порожньою і позначимо Ø.
Множину, що складається з скінченного числа елементів, назвемо скінченною. Не скінченну множину назвемо нескінченною.
Отже, використовуючи поняття множини, ми маємо можливість формально об'єднати об'єкти (елементи), які цікавлять нас, в одне ціле. Однак, часто з тих чи інших міркувань частина елементів множини також розглядається як одне ціле. Формально це закріпилося в уявленні про підмножину.
Будь-яку множину S, всі елементи якої належать множині R, назвемо підмножиною множини R і цей факт позначимо символічно S Ì R.
Наприклад, N Ì Z, N Ì Q, якщо М – множина студентів НТУУ “КПІ”, B – множина студентів НТУУ “КПІ” 1-го курсу, то B Ì M.
Якщо S Ì R і допускається, що множина R складається тільки з елементів множини S, то будемо позначати цей факт S Í R. Позначення S Ì R збережемо для випадку, коли множина R має елементи, яких немає в множині S (у цьому випадку множину S назвемо власною підмножиною множини R). Якщо множини S і R складаються з тих самих елементів, тобто якщо R Í S і S Í R, то вони рівні, що символічно позначається S = R. У протилежному випадку будемо говорити, що S не дорівнює R і позначати S ¹ R. Рівність множин – певна формалізація уявлень про однаковість множин.
Далі ми часто будемо використовувати підмножини множини, яку назвемо універсальною і позначимо U. Для цього множину усіх підмножин універсальної множини U позначимо P(U). Звичайно P(U) називають булеаном.
Наприклад, нехай U містить елементи a, b, c. Тоді P(U) містить підмножини Æ і U, а також підмножини, що містять по одному елементу - {a}, {b}, {c}; і підмножини, що містять по два елемента {a,b}, {a,c}, {b,c}. Отже, P(U) у нашому випадку містить 8 елементів, U - 3 елементи. Напрошується висновок про те, що P(U) містить 2n підмножин, де n - число елементів у множини U.
Дійсно, P(U) складається з 2n підмножин: Æ, U, S, таких що: 1) Æ Ì S Ì U; 2) S ¹ Æ; 3) S ¹ U.
Множину необхідно вміти задавати, що особливо істотно, якщо працювати з множиною повинен комп'ютер. Природно, задати множину можна перерахуванням її елементів. Наприклад, G = {Київ, Харків, Дніпропетровськ, Донецьк, Одеса}, M = {фізика, хімія, алгебра, економіка, історія}, B = {А, Б, В, Г, Д, Е, Є, Ж, З, І}. Цей спосіб наочний і зручний, якщо множини містять небагато елементів. З ростом числа елементів такий спосіб задання множини втрачає свої переваги, а для нескінченних множин не має застосування.
Інший спосіб задання множин полягає у визначенні властивостей, які мають ті і тільки ті елементи, що утворюють множину. Нехай P(x) символічно означає: елемент x має властивість P. Тоді X = {x: P(x)} – множина елементів, кожен з яких має властивість P. Звичайно задається попередньо інша множина, на підставі аналізу властивостей елементів якої, формується дана множина. Нехай задана множина T. Тоді X = {x Î T: P(x)} – множина елементів множини Т, що мають властивість Р.
Приклад:
N = {x Î Z: x > 0} – множина натуральних чисел;
G = {x Î D: x має населення понад 1 мільйон} – задання множини міст України, що мають населення понад один мільйон. Тут D - множина усіх міст України.
Другий спосіб задання множин дуже важливий, тому що дозволяє пов'язати поняття “властивість” і “множина” і тим самим за допомогою останнього формалізувати перше для комп'ютера. Наприклад, властивість предмета мати червоний колір для комп'ютера можна задати включенням предмета в певну множину, з елементами якої зв'язуються всі наслідки того, що вони мають червоний колір.
Далі будемо вважати, що кожна розумна властивість визначає деяку множину X елементів, що мають цю властивість, і, навпаки, будь-якій множині відповідає властивість її елементів бути елементами цієї множини.
Варто зазначити, що співвідношення “властивість” і “множина” може породити серйозні проблеми, пов'язані з тим, що можливе існування властивостей, які визначають множини, що, можливо, не існують. У всякому разі, для логіки прийняте співвідношення властивість - множина є найважливішим положенням.
Відомий фахівець в області штучного інтелекту С.Осуга у своїй книзі “Обробка знань” помилковість інтуїтивного відчуття про можливість задання множини довільним способом демонструє у такий спосіб. Нехай х Î Y ~ P(x) - це формальний запис. Тоді довільною властивістю може бути властивість x Ï x. Нехай Y - множина, визначена цією властивістю, тобто Y – це множина, що складається із самої множини, що не є власним елементом. Прийнявши, однак, що така множина існує, поставимо запитання: “ чи є Y елементом Y?” і прийдемо до протиріччя:
Y Î Y еквівалентне Y Ï Y.
Цей факт, відомий як обернена теорема Рассела, використовується для підтвердження необхідності використання інших методів задання множин. Ми будемо говорити про це пізніше при розгляді аксіоматичної теорії множин.
Виділимо і третій спосіб задання множин, близький до другого, але з своїми особливостями. Суть його полягає в тому, що визначається правило або алгоритм, що дозволяє отримувати елементи заданої множини. Ми зараз не формалізуємо поняття правила чи алгоритму, але інтуїтивно здатні зрозуміти, що задати множину, яка містить довільної довжини послідовності нулів, можна використовуючи правило приписування ще одного нуля до попередньої послідовності: C = {0, 00, 000,...}. І, крім того, хіба задання множини натуральних чисел не побудовано на правилі додавання одиниці?
Третій спосіб також може породити деякі непрості ситуації. Наприклад, чи всяка множина може бути породжена алгоритмічно? Іншими словами, третій спосіб також не завжди можна застосувати. З цією проблемою пов'язаний курс “Алгоритміка”.
Варто зазначити, що третій метод природним чином можна назвати методом породження чи конструктивним методом, що, по суті, починаючи з невеликих множин, які можна задати, наприклад, перерахуванням, шляхом виконання дозволених перетворень приводить до задання нової множини, що додається до попередньої множини і т.д.
Якщо припустити, що існує кілька способів визначення і описання алгоритмів, а в дійсності ситуація виглядає саме так, то повинна бути множина модифікацій для цього способу задання множин.
У природі, суспільстві, навколишній реальності різні об'єкти формують множини різної природи, поєднуючись в різні ситуації. Більш того, у процесі проектування систем конятруктор своє представлення про цільову ситуацію намагається зліпити з наявних ситуацій, узагалі дослідник намагається виділяти подібні один одному сполучення об'єктів і встановити закономірності їхнього формування.
На цій основі введене поняття “операція над множинами”, що фактично дозволяє реалізувати формальним чином породження різних ситуацій сполучень елементів. Будемо застосовувати такі операції над множинами.
Визначення. 1. Об'єднання множин S і R - це множина SÈR = {x: x Î S чи xÎ R}.
2. Перетин множин S і R - це множина SÇR = {x: xÎ S і xÎ R}.
3. Різниця множин S і R - це множина S \R= {x: xÎ S і x Ï R}.
4. Доповнення підмножини S до універсальної множини U – це множина S’ = {x ÎU: xÏS}.
|
|
| |||
| |||
| |||||
SÈR SÇR S\R S’
Приклад. Нехай задані множини S = {a, b, c}, R = {a, c, d}, U = {a, b, c, d, e}. Тоді SÈR = {a, b, c, d}, SÇR = {a, c}, S\R = {b}, S' = {d, e}.
Узагалі поняття “операція “ дуже важливе і його широко застосовують у різних галузях математики для конструювання одних об'єктів з інших, для визначення нових математичних об'єктів тощо. Зокрема, використовуючи представлення про операції об'єднання і перетину множин, вводять поняття розбиття.
Визначення. Розбиттям П множини R будемо називати множину {R1, R2,…,Rn} її підмножин таку, що виконуються такі умови:
1) R1È (R2È,…,È(Rn-1ÈRn)…) = R;
2)Ri ÇRj = Æ для кожної пари i, j, де i ¹ j.
Приклад. Нехай R = {r1, r2,…,r6}. Розглянемо такі множини підмножин:
П1 = {{r1}, {r2}, {r3, r4}, {r5, r6}};
П2 = {{r1, r2}, {r3, r4, r5, r6}};
П3 = {{r1, r2, r3, r4, r5, r6}};
П4 = {{r1, r2, r3, r4}, {r4, r5, r6}};
П5 = {{r1, r2},{r3, r4, r6}}.
Тут множини підмножин П1, П2, П3 - розбиття, а множина підмножин П4 не є розбиттям, тому що не виконується умова 2). Множина підмножин П5 не є розбиттям, тому що не виконується умова 1).
Розбиття часто використовується при постановках задач керування. Наприклад, якщо R - множина лекцій, що повинні бути проведені k лекторами, причому кожна лекція проводиться одним лектором, то тоді закріплення лекцій – розбиття, що включає k підмножин лекцій. Умова 1) гарантує, що всі лекції будуть проведені, а умова 2) забезпечує закріплення кожної лекції за одним лектором.
Інтерес для конструктора становлять властивості операцій. Дійсно, якщо розв’язання проблеми пов'язане з аналізом результатів застосування згаданих вище операцій до якоїсь сукупності множин, то знання того факту, що SÈR = RÈS дозволяє скоротити число комбінацій, які варто аналізувати.
Діаграми Венна допоможуть установити справедливість наступних властивостей операцій над множинами:
1) SÈR = RÈS
SÇR = RÇS - комутативність;
2) SÈS = S
SÇS = S - ідемпотентність;
3) S È (R È T) = (S È R) È T
S Ç (R Ç T) = (S Ç R) Ç T - асоціативність;
4) SÈ (R Ç T) = (SÈ R) Ç (SÈ T)
S Ç (R È T) = (S Ç R) È (S Ç T) - дистрибутивність;
5) S È S' = U
S Ç S' = Æ - властивості доповнення;
6) (S ')' = S - властивість подвійного доповнення;
7) S Ç Æ = Æ S ÈÆ = S
S Ç U = S S È U = U - властивості виділених елементів;
8) (S È R)' =S'ÇR'
(SÇR)' = S'ÈR' - правила де Моргана;
9) S \ R = S Ç R' - зв’язок операцій різниці, перетину і доповнення.
Множини, над якими виконується операція, назвемо операндами, а множину, яка одержується в результаті виконання операції – результатом. У залежності від числа операндів операції над множинами розділяють на унарні (наприклад, доповнення), бінарні (наприклад, È,Ç,\). До бінарних відноситься ще одна важлива операція, яку ми широко будемо використовувати надалі – декартів добуток множин. Для його визначення умовимося вважати важливим порядок елементів. Множини {1, 2, 3, 4} і {4, 3, 2, 1} рівні, а нам потрібно їх розрізняти. Тоді введемо поняття послідовності. Так, пара елементів (а,b), у якій зафіксований їхній порядок, називається послідовністю.
Послідовності можуть мати довільне число елементів (довжину) (a1,a2,…,an). Якщо n = 3, то послідовність називають трійкою, n = 4 – четвіркою й у загальному випадку - n-кою. Послідовності (a1,a2,a3,…,an) і (b1,b2,…,bn) однакові тоді і тільки тоді, коли ai = bi для i = 1,2,…,n.
Декартів добуток множин S і R - це множина S ´ R = {(x, y): x Î S, y Î R}.
Приклад: Нехай S = {a, b, c}, R = {a, c, d}. Тоді S ´ R = {(a, a), (a, c), (a, d), (b, a), (b, c), (b, d), (c, a), (c, c), (c, d)}.
Варто підкреслити, що S x R містить усі можливі пари згаданого у визначенні вигляду, тобто ніби містить усі можливі зв'язки між елементами двох множин. Декартів добуток поширюється на n множин у такий спосіб. Нехай А1, А2,…,Аn - множини. Тоді А1 ´ А2 – декартів добуток двох множин, ((А1 ´ А2) ´ А3) – декартів добуток трьох множин і в загальному випадку (((А1 ´ А2) ´ А3) ´...´ Аn) - декартів добуток n множин, що тепер домовимося записувати без дужок А1 ´ А2 ´...´ Аn. Уведемо декартів n-ий ступінь множини А як декартів добуток A1 ´ А2 ´...´ Аn множин А1, А2,…,Аn таких, що А1 = А, А2 = А,…,Аn = А. Будемо позначати декартів n-ий ступінь множини А через Аn.
Отже, вже термін “зв'язок“ згадано, але за допомогою понять “множина“ і “операція“ дуже важко конкретизувати зв'язок між елементами однієї чи різних множин у явному виді. А необхідність у цьому при моделюванні реальних об'єктів керування виникає постійно. Так, у прикладі, розглянутому у вступній лекції, необхідно мати засоби приписувати елементам множини вершин графа відстань, тобто елементи множини N, a ребрам - пропускні здатності (також елементи множини N), установити для кожного ребра пов'язані з ним вершини тощо.
2. Функції. Моделювати зв'язки об'єктів, тобто елементів різних множин, можна за допомогою поняття “функція”.
Визначення. Функцією з множини S у множину R будемо називати будь-яку підмножину F Í S ´ R таку, що для кожного x Î S знайдеться не більш одного елемента y Î R такого, що (x, y) Î F.
Звичайно функція позначається F: S → R, причому множини S і R називають відповідно областю існування (визначення) і областю значень функції F. Іноді множину S називають областю, множину R – кообластю. Множину елементів з R, що містяться в підмножині F Í S ´ R називають образом функції F і позначають Im F.
Приклад: Нехай S ={a, b, c}, R = {a, c, d}.
Розглянемо підмножини S x R:
F1 = {(a, a), (b, c), (c, d)} Im F1 = {a, c, d} = R;
F2 = {(a, a), (b, a), (c, d)} Im F2 = {a, d};
F3 = {(b, c), (c, c)} Im F3 = { c};
F4 = {(a, a), (b, c), (c, d), (a, d)}.
Підмножини F1, F2, F3 - функції, підмножина F4 не є функцією, тому що для а Î S у F4 є дві пари, що містять даний елемент: (а,а), (а, d).
Якщо ми спробуємо так само, як і для множин узвичаїти однаковість (рівність) функцій, то тоді, відповідно до означення, ми повинні розглядати тільки функції, наприклад, F1: S1® R1 і F2: S2 ® R2, області і кообласті яких збігаються, тобто S1 = S2, R1 = R2, і для кожного x Î S підмножини F1 і F2 включають однакові пари елементів, причому першим з елементів кожної з яких є елемент x. Будемо говорити тоді, що функції F1 і F2 рівні і позначати цей факт F1 = F2.
Існує зручний метод позначення функції F: S® R у вигляді y = F(x), де x Î S, y Î R. Говорять тоді, що x - аргумент, а y - значення функції. У цьому випадку рівність функцій можна записати F1(x) = F2(x).
Приклади функцій, відомих з курсу математичного аналізу: y = x, y = |x|, y = x2, y = 1/x, де x, y Î Z чи іншій числовій множині. Далі, якщо не уточнено інше, будемо вважати, що x, y Î Q.
Пари декартового добутку множин у підмножині F, що визначає функцію, можуть утворювати різні особливі сполучення, знання яких полегшує застосування функцій на практиці. Наприклад, розглянемо ще одну функцію з S у R: F5 = {(a, c), (b, a), (c, d)} і порівняємо F5 з F1 і іншими функціями. Загальним у F5 і F1 є те, що обидві вони зв'язують елементи множин R і S взаємно однозначно, причому ніяка інша функція цієї властивості не має.
Нехай є n робіт і n верстатів. Одна з типових задач автоматизації: необхідно закріпити роботи за верстатами так, щоб одна робота виконувалася тільки одним верстатом, і один верстат виконував тільки одну роботу, тобто розподілити роботи. Знаючи це, ми можемо перевірити будь-який розподіл, і якщо в ньому знайдеться вільний верстат чи незакріплена робота, то ми повинні відкинути розподіл як такий, що не відповідає умові. Зазначимо, що ми не говоримо тут про вибір одного з найкращих у якомусь сенсі розподілів з тих, які відповідають умові розподілу, тобто про оптимізацію.
Виділяють такі класи функції на основі аналізу властивостей відповідних підмножин декартового добутку, якими функції визначаються:
а) ін'єктивні функції.
Функція y = F(x) називається ін'єктивною, якщо з x ¹ х' випливає F(x) ¹ F(х').
Так, функції F1, y = x ін’єктивні, а функції F2, y = x2 не ін’єктивні;
б) сюр'єктивні функції.
Функція y = F(x) називається сюр'єктивною, якщо для кожного yÎ R є такий xÎ S, що F(x) = y.
Так, функції F1, y = x, x, yÎ Z - сюр'єктивні, а функції F2, y = x2, x, y Î Z не сюр'єктивні;
в) бієктивні функції.
Функція y = F(x) називається бієктивною, якщо вона ін'єктивна і сюр'єктивна.
Так, функції F1, y = x, x, yÎ Z - бієктивні, a функції F2, y = x2, x, y Î Z не бієктивні;
г) часткові функції.
Функція y = F(x) називається частковою, якщо вона визначена для деяких, але не для всіх x Î S.
Так, функції F3, y = 1/x часткові.
Уведення поняття часткової функції пояснює, чому у визначенні функції потрібно для кожного xÎ S не більш однієї пари в підмножині F, що містить x.
Як і для множин, для функцій важливий спосіб задання. Існують три способи задання функцій:
- за допомогою графіка, тобто перерахування пар підмножини декартового добутку, що визначає функцію (наприклад, функції F1, F2, F3, F4, F5 задані таким способом);
- за допомогою матриць;
- за допомогою виразів, аналітично, наприклад, y = x2;
- за допомогою алгоритму, що дозволяє для аргумента х отримати значення y.
Поняття функції можна узагальнити і на декартів добуток більше двох множин. Так, для R1 ´ R2 ´…´Rn+1 можна визначити функцію від n аргументів чи n-місну функцію.
Наприклад: Нехай R1 = {a, b}, R2 = {a, c}, R3 = {b, d}. Тоді
R1 ´ R2 ´ R3 = {(a, a, b), (a, a, d), (a, c, b), (a, c, d), (b, a, b), (b, a, d), (b, c, b), (b, c, d)}.
F1: R1 ´ R2 ® R3, F1 = {(a, a, b), (a, c, b), (b, a, d), (b, c, d)}.
Тепер можна порівняти поняття “функція” і “операція”. З огляду на те, що вони дозволяють установити зв'язок між елементами, у них багато спільного. Розходження в тім, що операція звичайно використовується для зв'язку елементів тієї ж множини, а функція – для зв'язку елементів різних множин.
Узагалі поняття функції – одне з фундаментальних понять математики. Уміння мислити в термінах функціональних залежностей одержало назву функціональне мислення. На рубежі ХІХ і ХХ сторіч боротьба за його впровадження в навчанні, очолювана Ф.Клейном, привела до серйозної реформи освіти в Німеччині.
Застосування функцій дає можливість виразити закони природи, соціальні закони і потім використовувати математичні дії для аналізу цих законів, обґрунтування їхньої практичної користі. Так, Г.Галілей відкрив закон вільного падіння тіл, виразивши його функцією
S = g t2/2,
де S - відстань, пройдена тілом у вільному падінні;
t - час падіння;
g - константа.
Тим самим вхоплена і виражена суть закону у формі, зручній для дослідження розвиненим математичним апаратом. Наприклад, можна розрахувати час, якщо заданий шлях. Більш того, якщо шлях виразити у виді функціональної залежності від інших параметрів, то тим самим можна пов’язати ті параметри з параметрами нашої функції.
Зазначимо, що цей підхід широко використовується при проектуванні й експлуатації комп'ютеризованих систем. У більшості випадків керування будується як вибір значень одних параметрів при відомих функціональній залежності і значеннях інших, що беруть участь у цій залежності, параметрів.
У будь-якому випадку використання функцій припускає виконання деяких дій над ними. Крім того, використання функцій для представлення деяких зв'язків між реальними об'єктами неможливе. Зокрема, якщо Т – множина виробів, М – множина матеріалів, то F: Т ® Q дозволяє задати собівартість виробів для підприємства. Однак якщо деякі матеріали використовуються для виготовлення більш одного виробу (а той факт, що при виготовленні практично усіх виробів використовується кілька матеріалів – загальновідомий), то зв'язок між виробами і матеріалами F: T ® M не буде функцією.
Щоб стимулювати думки читача у цьому напрямку, звернемо його увагу на той факт, що F: T x M ® Q - двомісна функція, за допомогою якої можна установити норму витрат матеріалу на виріб. Напрошується використання традиційного для математики прийому узагальнення, тобто мова йде про узагальнення функцій.