Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти!

Фундаментальні комп’ютерні алгоритми

Матеріал з USIC Wiki
Перейти до: навігація, пошук
Для ФІН

Ця стаття відноситься до групи довідкових статей для студентів ФІН.

Зміст

[ред.] Про предмет

Викладач: Франчук Олег Васильович

[ред.] Лекції

[ред.] Лекція №1: Алгоритмічні системи

[ред.] 1. Найпростіша мова програмування

[ред.] 2. Алгоритмічна машина Поста

[ред.] 3. Машина Тюринга

[ред.] 4. Нормальні алгоритми Маркова

[ред.] Задачі

1. Селянський алгоритм множення. Реалізувати операцію добутку двох натуральних чисел, використовуючи лише операції суми, цілочисельного ділення на 2 та множення на 2.
2. У відрізку з цілочисельними координатами кінців, порахувати кількість точок відрізка, що мають цілочисельні координати.
3. В послідовності цілочисельних величин існує лише одне число для якого не має пари (парою вважаються два однакових значення). За один прохід знайти це число. Приклад послідовності: -3, 10, 1, 15, -3, 15, 1. Число без пари тут 10.
4. Вивести на екран десяткове представлення дробу \frac{p}{q}, (p<q) до k-го знаку після крапки. k\le1000.

[ред.] Лекція №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 предметів, 1 \le h \le k. Виграє той, хто забирає останній предмет.
Роздуми 
У кінці після нашого ходу повинно залишитись k + 1 предметів.
Розв'язання 
Для того, щоб завжди вигравати, треба на кожному ході брати кількість, яка задовольняє умові: n\,\bmod\,(k+1)= 0

[ред.] Гра Нім

Умова 
Є k рядків, у кожному з яких ni предметів (у загальному випадку n_i\ne n_j). Можна брати будь-яку кількість предметів з одного рядка (навіть весь рядок). Виграє той, хто забере останній рядок.
Розв'язання 
Виписуємо кількості предметів у стовпчик, записуємо їх двійкове представлення, рахуємо порозрядну XOR-суму. Якщо, сума дорівнює нулю, то ми програємо, якщо сума не дорівнює нулю, то є шанс виграти. Для цього робимо XOR з сумою (загальною) та рядком, шукаємо рядок, з якого можна забрати предмет - тоді сума буде дорівнювати нулю. Загальна сума у кінці ходу має бути рівна нулю.

[ред.] Завдання

1. Є дві купки монет. З них можна забирати монети за наступними правилами:

  • беремо 1 монету з будь-якої купки
  • беремо по одній монеті з кожної купки
  • беремо 2 монети з будь-якої купки

Виграє той, хто ходить останнім.
2. Варіація гри Нім. Поле з n стовпців, m рядків. З одного боку стовпчик з чорних баранів (позиція першого гравця). З іншого стовпчик білих баранів. Барани можуть ходити наступним чином: іти вперед доки не підійшли до баранів суперника (на будь-яку кількість клітинок), іти назад(на будь-яку кількість клітинок), якщо є вільні клітинки. Програє той, у кого закінчилися ходи.

Особисті інструменти
Простори назв
Варіанти
Дії
Навігація
Інструменти