Download - Мастер класс по алгоритмам. Часть 2
![Page 2: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/2.jpg)
Домашнее задание 0Определить асимптотическую сложность алгоритма:
int F0(int n){
int x = 0;
for(int i=0; i<n; i++)
for(int j=1; j<n; j*=2)
x += i*j;
return x;
}
![Page 3: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/3.jpg)
Домашнее задание 1Определить асимптотическую сложность алгоритма:
int F1(int n){int x = 0;for(int i=0; i<n; i++)
for(int j=i; j<n-i; j+=2)x += i*j;
return x;}
![Page 4: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/4.jpg)
Домашнее задание 2
Определить асимптотическую сложность алгоритма:
int F2(int n){int x = 0;int j = 1;for(int i=1; i<n; i++) {
while (j<n && j%i !=0) j++;if (j<n) x += i*j;
}return x;
}
![Page 5: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/5.jpg)
Домашнее задание 3*Дан алгоритм:
void Make(int n, bool flag){
if (n==0) return;for (int i=0; i<n; i++) Action(flag);Make((int)(A*n), flag);Make((int)(A*n), !flag);
}
Действие Action выполняется за константное время. Определить асимптотическую сложность алгоритма при A=1/2, A=1/3 и A=2/3
![Page 6: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/6.jpg)
Домашнее задание 4
Могут происходить следующие события:• Добавление нового комментария• Удаление комментария• «Like» комментарию• Запросить K не удалённых комментариев,
которые менялись (добавлялись или лайкались) самыми последними.
![Page 7: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/7.jpg)
О ПРИМЕНЕНИИ ХЭШЕЙ
ещё немного
![Page 8: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/8.jpg)
КриптографияТребования:1. Необратимость2. Стойкость к коллизиямПрименение:Digest, хранение паролей.
Алгоритмы:Md5 — взломан!Sha1 — взломан теоретически.Sha2, Sha256 — ОКГОСТ — меееедлееееннныыыый
![Page 9: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/9.jpg)
Сравнение длинных строк
Строки с длинными общими префиксамиПути файловАдреса в интернете…
![Page 10: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/10.jpg)
Полиномиальный хэш
p3 p2 p 1
H E L L O ! ! !p3 p2 p 1
H E L L O ! ! !
![Page 11: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/11.jpg)
Алгоритм Рабина-Карпа (87 г.)
Поиск подстроки в текстеhttp://en.wikipedia.org/wiki/Rabin-Karp_string_search_algorithm
Поиск «паттерна» в потоке событийХэширование N-грамм
![Page 12: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/12.jpg)
Потоковая обработка событий
Нужно поддерживать какие-то статистики об интенсивном потоке событий.Хотим тратить RAM меньше, чем O(N)Хотим тратить времени ~ O(1) на событие• Биллинг• Статистика ошибок• …
![Page 13: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/13.jpg)
Биллинг
K клиентов, нужно раз в месяц выставлять счет, основываясь на количестве и типах произошедших транзакций (звонков, покупок, …)
Постоянно показывать текущий баланс
![Page 14: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/14.jpg)
Биллинг
Дано:Лог транзакций
Хотим:Id клиента → текущий счет / баланс
![Page 15: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/15.jpg)
«Сумматор»
Каждую секунду регистрируются события:AddNextTickEventCount(int time, int count)
Периодически делаются запросы вида«Сколько событий было за промежуток?»int GetEventsCount(int from, int to)
![Page 16: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/16.jpg)
1 20 5 10 4 2 2 1 32
26 16 35
«Сумматор»
• Если ячеек стало (P+1)2 → переразбиваем и пересчитываем нижние блоки
• N вставок sqrt(N) переразбиений O(N) каждое суммарная сложность O(N*sqrt(N))
![Page 17: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/17.jpg)
Прагматичный подход
Хранить суммы за каждый месяц
![Page 18: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/18.jpg)
Статистика с забыванием
Много типов событий. Про каждое нужно уметь смотреть исторические данные.1. Не хотим хранить все. Много.2. Не хотим нагружать процессор.
Это всего лишь статистика.
![Page 19: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/19.jpg)
Логарифмическое забывание
Последние 2 месяца — помнить разбивку по днямПоследние 2 дня — по часамПоследние 2 часа — по минутамПоследние 2 минуты — по секундам…
Можно продолжать в обе стороныПамять — O(60 + 48 + 120 + 120) ~ O(log T)Время — O(log T)
![Page 20: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/20.jpg)
Интеллектуальные задачи
Не применимы категории «правильно/не правильно»Нужно решить задачу «как можно лучше»
![Page 21: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/21.jpg)
Задача классификации
Спам / не спамДавать кредит / не даватьКликнет на рекламу / не кликнетБот / человекКупит / не купитХороший / плохой…
![Page 22: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/22.jpg)
Задача «продление абонента»
Абонент «продляет» подписку каждый год.Зная что-то про абонента можно догадаться, продлится он или нет.Потенциальных непродленцев можно «растормошить». Как их выявить?
![Page 23: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/23.jpg)
Векторизация
Исходные данные — множество векторовvi = (1, 0.5, 1.37, 2.8, -1, -0.1, …)
Координата вектора — фича
![Page 24: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/24.jpg)
Что есть вектор?
• Абонент?• Абонент + момент времени?• Абонент в момент, когда пора продлять
подписку!
Какие фичи?
![Page 25: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/25.jpg)
Размеченная база
Накопленную статистика «продлился/не продлился» по прошлым данным можно использовать для построения классификатора.
Это вектора, про которые мы точно знаем фактический ответ
![Page 26: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/26.jpg)
Training set / Testing set
![Page 27: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/27.jpg)
Качество классификатора
Задачу классификации можно переформулировать в задачу поиска:«Ищем всех непродленцев»Для «поиска» используют две метрики:• Точность = доля ошибочно найденных.• Полнота = доля найденныхУровни точности и полноты обычно диктуются сферой применения классификатора
![Page 28: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/28.jpg)
Точность и полнота
![Page 29: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/29.jpg)
Классификаторы
…тренируются классифицировать на обучающей выборке
• Нейронные сети• KNN (K nearest neighbors)• Линейное разделение• Дерево решений• Рандомизированный лес• SVM
![Page 30: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/30.jpg)
Weka Live Demo
![Page 31: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/31.jpg)
Методы «поиска»
Задачи «поиска» — что это?• Календарное планирование• Составление расписания• Задачи раскроя
Объект поиска: план, расписание, раскрой.
![Page 32: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/32.jpg)
Random
Генерируем случайные объекты, и запоминаем лучшего
Обычно очень плохо работает
![Page 33: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/33.jpg)
Локальный поиск
Начать со случайного.Искать улучшающую микромодификацию.
Работает хорошо, когда пространство решений «выпуклое». В зашумленном постранстве забивается в локальный оптимум
![Page 34: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/34.jpg)
Имитация отжига
Начать со случайногоПеребирать локальные модификации:
Если нашли улучшающую — применять ееИначе, применять с некоторой вероятностью p
Каждый шаг уменьшать вероятность p.
![Page 35: Мастер класс по алгоритмам. Часть 2](https://reader037.vdocuments.pub/reader037/viewer/2022102823/549927f0b479591c488b48c1/html5/thumbnails/35.jpg)
Интеллектуальные алгоритмыКуда бежать?
Coursera Machine learning coursehttps://www.coursera.org/course/ml
Weka Bookhttp://www.cs.waikato.ac.nz/ml/weka/book.html