|
Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти! |
Фундаментальні комп’ютерні алгоритми
[ред.] Про предмет
Викладач: Франчук Олег Васильович
[ред.] Лекції
[ред.] Лекція №1: Алгоритмічні системи
[ред.] 1. Найпростіша мова програмування
[ред.] 2. Алгоритмічна машина Поста
[ред.] 3. Машина Тюринга
[ред.] 4. Нормальні алгоритми Маркова
[ред.] Задачі
1. Селянський алгоритм множення. Реалізувати операцію добутку двох натуральних чисел, використовуючи лише операції суми, цілочисельного ділення на 2 та множення на 2.
2. У відрізку з цілочисельними координатами кінців, порахувати кількість точок відрізка, що мають цілочисельні координати.
3. В послідовності цілочисельних величин існує лише одне число для якого не має пари (парою вважаються два однакових значення). За один прохід знайти це число. Приклад послідовності: -3, 10, 1, 15, -3, 15, 1. Число без пари тут 10.
4. Вивести на екран десяткове представлення дробу
до k-го знаку після крапки.
.
[ред.] Лекція №2: Обчислювальна геометрія на площині
[ред.] 1. Представлення прямої на площині
[ред.] а) Загальне рівняння
[ред.] б) Рівняння з кутовим коефіцієнтом
[ред.] в) Система з направляючим вектором
[ред.] 2. Представлення відрізка на площині
[ред.] а) Координатами кінця відрізка
[ред.] б) З використанням направляючого вектора
[ред.] 3. Приналежність точки прямій
[ред.] а) Підстановка в загальне або рівняння з кутовим коефіцієнтом
[ред.] б) Для направляючого вектора
[ред.] 4. Відстань від точки до прямої
[ред.] а) Для загального рівняння
Поняття орієнтованої та неорієнтованої відстані
[ред.] б) Для рівняння з кутовим коефіцієнтом
[ред.] 5. Приналежність точки відрізку
[ред.] 6. Відстань від точки до відрізку
[ред.] 7. Точка перетину двох прямих
[ред.] а) Для загального рівняння
[ред.] б) Для рівняння з кутовим коефіцієнтом
[ред.] 8. Загальні точки двох відрізків
[ред.] Задачі
1. Визначити, чи буде собою контур (крива), заданий чотирма точками A,B,C,D, чотирикутником?
2. Чи є чотирикутник ABCD опуклим?
3. Чи належить точка P(x0,y0) трикутнику ABC?
4. Задача про павука та муху: Є кімната (прямокутний паралелепіпед), відомі її виміри: довжина lx, ширина ly, висота lz(вони цілочисельні). На одній вертикальній стінці сидить павук(П), а на протилежній до нього муха(М). Визначити, яку найкоротшу відстань треба пройти павуку, щоб дістатися до мухи?. Павук може ходити по стінах, стелі та підлозі.
[ред.] Лекція №3: Обчислювальна геометрія. Полігони
[ред.] Лекція №4: Однопрохідні алгоритми
[ред.] Лекція №5: Нестандартна обробка чисел. Довга арифметика.
[ред.] Лекція №6: Ігрові задачі
[ред.] Види ігрових задач
Виділяють два основних види ігрових задач:
- з повною інформацією
- з неповною інформацією
[ред.] Гра Баше
- Умова
- Є n предметів. На кожному кроці можна забрати не більше, ніж k предметів (k < n), тобто h предметів,
. Виграє той, хто забирає останній предмет.
- Роздуми
- У кінці після нашого ходу повинно залишитись k + 1 предметів.
- Розв'язання
- Для того, щоб завжди вигравати, треба на кожному ході брати кількість, яка задовольняє умові:
[ред.] Гра Нім
- Умова
- Є k рядків, у кожному з яких ni предметів (у загальному випадку
). Можна брати будь-яку кількість предметів з одного рядка (навіть весь рядок). Виграє той, хто забере останній рядок.
- Розв'язання
- Виписуємо кількості предметів у стовпчик, записуємо їх двійкове представлення, рахуємо порозрядну XOR-суму. Якщо, сума дорівнює нулю, то ми програємо, якщо сума не дорівнює нулю, то є шанс виграти. Для цього робимо XOR з сумою (загальною) та рядком, шукаємо рядок, з якого можна забрати предмет - тоді сума буде дорівнювати нулю. Загальна сума у кінці ходу має бути рівна нулю.
[ред.] Завдання
1. Є дві купки монет. З них можна забирати монети за наступними правилами:
- беремо 1 монету з будь-якої купки
- беремо по одній монеті з кожної купки
- беремо 2 монети з будь-якої купки
Виграє той, хто ходить останнім.
2. Варіація гри Нім. Поле з n стовпців, m рядків. З одного боку стовпчик з чорних баранів (позиція першого гравця). З іншого стовпчик білих баранів. Барани можуть ходити наступним чином: іти вперед доки не підійшли до баранів суперника (на будь-яку кількість клітинок), іти назад(на будь-яку кількість клітинок), якщо є вільні клітинки. Програє той, у кого закінчилися ходи.
