Вятський Державний Гуманітарний Університет p>
Кафедра прикладної математики p>
Курсова робота з інформатики p>
Тема: Розробка системи вправ і завдань (алгоритми-програми) з дискретної математики . p>
Виконав: Студент 4 курсу факультету інформатики p>
Лепешкін Антон Геннад'евіч p>
Проверила: Ашихміна Тетяна Вікторівна p>
Кіров 2004 p>
Зміст. p>
Зміст. 2 p>
Введення. 3 p>
Глава 1 Теоретичний матеріал. 4 p>
Перебір з поверненням. 4
Пошук даних. 5 p>
Логарифмічний (бінарний) пошук 5
Методи сортування. 6 p>
Сортування злиттями. 6 p>
Швидке сортування Хоар. 6
Графи. 6 p>
Представлення графа в пам'яті комп'ютера 6 p>
досяжність 7
Найкоротші шляху. 8 p>
Алгоритм Дейкстри 8 p>
Алгоритм Флойда (найкоротші шляхи між всіма парами вершин). 9 p>
Глава 2 Система завдань і вправ. 9 p>
Класифікація задач. 9 p>
Кімнати музею. 12 p>
Пірат в підземеллі. 13 p>
Диспетчер і міліція. 14 p>
Задача про футболістів. 15 p>
Задача про сім'ї. 16 p>
Метро. 16 p>
Роботи. 17 p>
Вожатий у таборі 20 p>
Єгер. 21 p>
Гра «Знайди друга». 22
Додаток. 22 p>
1 22 p>
2 25 p>
3 27 p>
4 30 p>
5 32 p>
6 32 p>
7 34 p>
8 39 p>
9 41 p>
10 43 p>
Висновок. 45 p>
Література 45 p>
Введення.
Незважаючи на те, що для вирішення завдань в основному використовуються загальні методи,все-таки мислення кожної конкретної людини трохи відрізняється відмислення інших людей, якщо він володіє достатньою базою знань. Такимчином, при вирішенні завдань «починаючи з нуля» можна зайти в глухий кут, якщовибрати невірний шлях вирішення завдання. В даному курсовому проекті мирозробимо власну класифікацію завдань, що дозволяє визначитинайбільш відповідний спосіб вирішення, щоб полегшити процес моделювання таскладання алгоритму і запобігти вибір неправильного способу, такожрозглянемо цю класифікацію з точки зору методики викладанняінформатики. вибір неправильного способу. У цьому полягає актуальністьданого курсового проекту.
Мета: Розробити власну класифікацію для задач з дискретноїматематики. Для досягнення цієї мети були поставлені наступні завдання: p>
1) Розробити власну систему завдань і вправ з дискретної математики. P>
2) Визначити способи вирішення даних завдань, використовуючи теоретичний матеріал курсу дискретної математики. p>
3) Скласти алгоритм - програму для кожного завдання, що реалізує вибраний способи рішення. p>
4) Розробити систему критеріїв класифікації даної системи завдань.
Глава 1 Теоретичний матеріал. P>
Перебір з поверненням. P>
Загальна схема
Дано N впорядкованих множин U1 U2 ,..., Un (N - відомо), і потрібнопобудувати вектор А = (а1 а2, ..., аn), де a1 ? U1, a2 ? U2, ..., an ? Un,задовольняє заданому безлічі умов і обмежень.
В алгоритмі перебору вектор А будується покомпонентний ліворуч p>
направо. Припустимо, що вже знайдені значення першому (до-1) p>
компонент, A = (a1, a2, ..., a (k-1)),?, ...,?), Тоді заданий безліч p>
умов обмежує вибір наступного компоненти Аk деяким p>
безліччю SkCUk. Якщо Sk [] (нічого), ми маємо право вибрати в p>
як акнайменший елемент Sk іперейти до вибору ^/^ "^ вибори п« я »,
(до 1) компоненти ітак далі. Однак/[+ Д Jfcv при цьому а,якщо умови умови а,, ^ іазтакі, що Sk виявилося порожнім, то ми повертаємося до вибору
(к-1) компоненти, відкидаємоа (k-1) і вибираємо як новий a (k-1) той елемент S (ki), якийбезпосередньо випливає за щойно відкинутим. Може виявитися, що длянового a (k-1) умови завдання допускають непорожній Sk, і тоді ми намагаємосязнову вибрати елемент ак. Якщо неможливо вибрати a (k-1), ми повертаємосяще на крок назад і вибираємо новий елемент а (к-2) і так далі. p>
Графічне зображення - дерево пошуку. Корінь дерева (0 рівень)є порожній вектор. Його сини суть безліч кандидатів для вибору а1 і,в загальному випадку, вузли k-го рівня є кандидатами на вибір ак приумови, що а1, а2, ..., a (k-1) вибрані так, як вказують предки цихвузлів. Питання про те, чи має завдання рішення, рівносильний питання, єЧи є які-небудь вузли дерева рішеннями. Розшукуючи всі рішення, ми хочемоотримати всі такі вузли.
Рекурсивна схема реалізації алгоритму,procedure Backtrack (Beктop, i);beginif then else begin; for a ? Si do Васкtrаск (вектор | | a, i + l); (| | - додавання довектору компоненти)end; end;
Оцінка тимчасової складності алгоритму. Дана схема реалізації переборупризводить до експоненціальним алгоритмам. Дійсно, Нехай всі рішеннямають довжину N, тоді досліджувати потрібно близько | Si | * | S2 | *...*| SN |вузлів дерева. Якщо значення S; обмежена деякою константою С, тоотримуємо порядку CN вузлів. p>
Пошук даних. p>
Логарифмічний (бінарний) пошук p>
Логарифмічний (бінарний або метод ділення навпіл) пошук даних застосуємодо сортованого безлічі елементів а1 <а2 <... <Ап, розміщенняякого виконано на суміжній пам'яті. Для більшої ефективності пошукуелементів треба, щоб шляху доступу до них стали коротшими, ніж простопослідовний перебір. Найбільш очевидний метод: почати пошук зсереднього елемента, тобто виконати порівняння з елементом а. Результатпорівняння дозволить визначити, в якій половині послідовності а (,а2 ,..., а, 1 + ",,..., ап продовжити пошук,застосовуючи до неї ту ж процедуру, і т.д. Основна ідея бінарного пошукудосить проста, проте «для багатьох хороших програмістів не одна спробанаписати правильну програму закінчилася невдачею ». Щоб доскональнорозібратися в алгоритмі, найкраще представити дані ах <а2 <... <Апу вигляді двійкового дерева порівнянь, яке відповідає бінарного пошуку.
Двійкове дерево називається деревом порівнянь, якщо для будь-якої його вершини
(кореня дерева або кореня піддереві) виконується умова: p>
(Вершини лівого піддереві) p>