
- •Лінійні списки.
- •Стеки і черги
- •Стисле та індексне зберігання лінійних списків.
- •Індивідуальні завдання.
- •Лабораторна робота №11. Методи розробки алгоритмів.
- •Рекомендована література:
- •Теоретичні відомості.
- •Індивідуальні завдання.
- •Лабораторна робота №12. Застосування рекурсії при побудові алгоритмів.
- •Рекомендована література.
- •Індивідуальні завдання.
Лабораторна робота №11. Методи розробки алгоритмів.
Мета роботи: Одержати навики застосування основних методів розробки алгоритмів.
Рекомендована література:
С Гудман, С Хидетниеми Введение в разработку и анализ алгоритмов. М., Мир, 1981.
Андрей Ставровский Турбо Паскаль 7.0 Учебник Киев, Ирина, 2000
Сборник задач по информатике с решениями. Преподаватель Егорова М.С. Кривой Рог, 1997.
Теоретичні відомості.
Існують багато методів розробки алгоритмів. Це відомі загальні методи: часткових цілей, під’єму та відробкою назад. Загальну відомість мають методи еврістики, програмування з відходом назад, рекурсії, гілок та границь. Багато задач використовують відомі алгоритми пошуку, сортування, моделювання.
Індивідуальні завдання.
Розробити алгоритм генерування перестановок.
Розробити еврістичний алгоритм для розв’язання задачі тур коня: почати з довільного поля шахової дошки та перейти на поле, з якого на наступному ході можна перейти на найбільшу кількість полів.
Розробити програму для реалізації еврістичного алгоритму задачі комівояжера.
Розробити програму для реалізації задачі про головоломку “8” .
Розробити програму для розв’язання задачі про 8 ферзів. На шахової дошці їх треба розставити таким чином, щоб ні один ферзь не бив іншого. Використайте метод з відходом назад.
Побудувати програму, яка реалізує метод гілок та меж.
Розробити програму для задачі про рюкзак: об’єм рюкзака V та необмежений запас кожного з N різних видів предметів (кожний предмет має об’єм vi та вартість mi. В рюкзак можна помістити цілу кількість різних предметів. Треба упакувати рюкзак таким чином, щоб загальна вартість упакованих предметів була найбільшою при умові, що їх загальний об’єм не був більший, ніж V.
Розробити програму для реалізації метода пошуку в глибину.
Розробити програму для реалізації метода пошуку в ширину.
Реалізувати метод Дейкстра.
Розробити програму для задачі про отруєного жука, який починає свій шлях з центру квадрата, підвішеного над баком з кип’ячим маслом. За кожну секунду жук просувається на 1 см. в довільному напрямі. За допомогою імітаційного моделювання обчисліть Р(N) - вірогідність того, що до моменту часу Т= N жук впаде в кип’яче масло.
Реалізувати алгоритм середніх квадратів для генерації випадкових чисел.
Реалізувати алгоритм вибірки m предметів з n заданих.
Реалізувати алгоритм Прима - Краасаля.
Побудувати автомат для видання здачі.
Реалізувати алгоритм бінарного пошуку.
Реалізувати алгоритм сортування масиву 4 методами та провести аналіз трудомісткості алгоритмів.
Лабораторна робота №12. Застосування рекурсії при побудові алгоритмів.
Мета роботи: отримати навички побудови рекурсивних алгоритмів для розв’язання задач.
Рекомендована література.
С Гудман, С Хидетниеми Введение в разработку и анализ алгоритмов. М., Мир, 1981.
Андрей Ставровский Турбо Паскаль 7.0 Учебник Киев, Ирина, 2000
Сборник задач по информатике с решениями. Преподаватель Егорова М.С. Кривой Рог, 1997.
Індивідуальні завдання.
Задано n населених пунктів, що пронумеровані від 1 до n. Деякі пари пунктів з’єднані дорогами. Скласти програму, яка визначає, чи можливо з пункту 1 проїхати в пункт n. Використати рекурсію.
У вхідному потоку заданий текст, за яким розташована крапка. Скласти програму, яка перевіряє, чи задовільняє його структура наступному визначенню:
<текст>::=<елемент>|<елемент> <текст>
<елемент>::=a|b|(<текст>)|<текст>|{<текст>}
У вхідному потоку записаний логічний вираз наступного виду:
<логічний вираз>::=true|false|<операція>(<операнди>)
<операція>::=not|and|or
<операнди>::=<операнд>|<операнд>,<операнди>
<операнд>::=<логічний вираз>
Скласти програму, за допомогою якої обчислюється значення виразу. (Наприклад and(or(false,not(false)),true,not(true))false.) Використати рекурсію.
У вхідному потоку записана формула наступного виду:
<формула>::=<цифра>|(< формула ><знак>< формула >)
< знак >::=+|-|*
< цифра >::=1|2|3|4|5|6|7|8|9|0
Скласти програму, яка знаходить значення формули.(Наприклад 55, ((2-4)*6) -12). Використати рекурсію.
Скласти програму, яка виводить на екран трикутник Паскаля:
1
1 1
1 2 1
1 3 3 1
При
побудові можна використати формулута
рекурсію.
Скласти рекурсивну програму, яка виводить всі подання додатного цілого числа n у вигляді суми послідовностей незростаючих цілих додатніх додатків.
Скласти програму, яка виводить всі перестановки чисел по одному разу. Використати рекурсію.
Скласти програму, яка подає всі зростаючі послідовності довжиною k, елементами яких є натуральні числа від 1 до n. Використати рекурсію.
Скласти програму, яка виводить по одному разу всі послідовності довжини n, які складені із чисел 1..k.
Скласти програму “Ханойська вежа”.