Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Мастер-класс по алгоритмам
Павел Егоров
https://twitter.com/xoposhiy
pe@kontur.ru
Disclaimer
• 200 часов — примерно столько нужно для
подготовки минимального специалиста по
алгоритмам
• Длительность мастер-класса — 8 часов
Сложность алгоритмов
C.N2 с различными константами
Кажется, что константа очень важна
C.N и C.N log(N) в сравнении с C.N2
Константа уходит далеко на второй план
Сложность алгоритмов
• Процессор устроен так, что разные
операции стоят разное количество тиков.
• И даже стоимость одной операции может
различаться в разы в зависимости от
условий
• Константа не имеет смысла!
• Принято писать O(N log N), игнорируя
константу
Асимптотическая сложность
Говорят, «сложность алгоритма O(f(n))», если
количество операций подразумеваемого
вычислителя начиная с некоторого достаточно
большого n0 меньше, чем f(n)
(с точностью до константы).
Боле строго:

∃C>0, n₀: ∀n > n₀ → operations(n) < C⋅f(n)
Массив
• Массив: область памяти.
• Операции:
– a[i] = x
– x = a[i]
– a.Length

• Важно: нельзя увеличить размер массива
Задача
Циклический сдвиг массива
Сдвинуть массив циклически на k.
Идея: k раз сдвинуть массив циклически на 1
Сложность?
Правильное решение?
Циклический сдвиг массива
Циклический сдвиг массива
Reverse(array, 0, k-1); //O(k)
Reverse(array, k, n-1); //O(n-k)
Reverse(array, 0, n-1); // O(n)
Динамический массив
Хотим массив, но с дополнительной
операцией Add(x)
Идея:
– Держать массив размером с запасом.
– Помнить количество использованных
элементов этого массива
– При исчерпании запаса — создавать новый
больший массив и копировать всё в него
Динамический массив
Add(x){
if (Count == array.Length) {
var newArray = CreateNewArrayOfSize(array.Length+10);
Copy(array, newArray);
array = newArray;
}
array[Count++] = x;
}
for(int i=0; i<N; i++)
list.Add(i);
O(N + 10 + 20 + 30 + … + N)
= O(N + (10 + N) * N / 20)
= O(N*N)
Динамический массив
Add(x){
if (Count == array.Length) {
var newArray = CreateNewArrayOfSize(2*array.Length);
Copy(array, newArray);
array = newArray;
}
array[Count++] = x;
}
for(int i=0; i<N; i++)
list.Add(i);
O(N + 2 + 4 + 8 + … + N)
= O(N + 2*N)
= O(N)
ЕЩЁ СТРУКТУРЫ ДАННЫХ
Бинарное дерево поиска
Хотим новую структуру данных Set!
Операции:
Contains(x), Add(x) быстрее O(N)
Node {
Node left, right;
int value;
}

Сложность операций?
Бинарное дерево. Балансировка
Бинарное дерево поиска
На той же идее можно сделать и Map
Операции:
Add(key, value)
value = Find(key)
Node {
Node left, right;
int key;
string value;
}
Бинарное дерево поиска. Задача
Сделать эффективную (быстрее O(N)) операцию
node = GetNodeAt(index)
Сложность операции?
Node {
Node left, right;
int key;
string value;
int size;
}
Бинарное дерево поиска. Задача
Какова может быть сложность операции обхода всех
узлов, начиная с первого узла с ключом left и заканчивая
последним узлом с ключом right?
foreach(Node node in GetAll(left, right))
Write(node.value);
Node {
Node left, right;
int key;
string value;
}
Бинарное дерево поиска
Добавление пары (key, value)
Поиск по ключу
Поиск i-ого элемента

Перебор K последовательных
элементов

O(log N)

O(K)
Хэш-таблица
Хэш-таблица
Добавление пары
Поиск по ключу

O(1)

Поиск i-ого элемента
Перебор последовательных
элементов

O(N)
Hash vs Tree
16000

Tree/Hash

14000
12000

Tree

15

Hash

10
5

10000

0

8000

0

5000000

10000000

6000
4000
2000
0
0

2000000

4000000

6000000

8000000

C# 5.0 (Dictionary & SortedDictionary), i7 2GHz

10000000
Hash vs Tree
Добавление 10М пар (в секундах)
int → int int → string string → string
Hash
0.5
3
6
Tree
5
9
44

Поиск 10М пар (в секундах)
int → int int → string string → string
Hash
0.7
3
8
Tree
7
12
75

Расход памяти на 10М пар
int → int int → string string → string
Hash
250 Mb
660 Mb
930 Mb
Tree
290 Mb
560 Mb
850 Mb
C# 5.0 (Dictionary & SortedDictionary), i7 2GHz
Задачка 1
Показать всех друзей Пети, которые были на
этой странице новостей.
Задачка 2
Произвести нечеткое сравнение двух текстов.
Результат сравнения — число от 0 до 1:
0 — не похожи, 1 — полностью совпадают
Задачка 3
Найти все товары, в описании которых
встречаются все перечисленные теги.
SQL Select
SELECT friend1
FROM Friends
WHERE friend2 = ‘134123’

Индекс по friend2 — это что?
Дерево или хэш?
Что ключ, а что значение?
Обычные SQL-индексы —
деревья
B-Tree, B*Tree, B+Tree, …
Оптимизируют работу с диском
Очень похожи по характеристикам на
бинарные деревья.
Держать все данные в памяти будет быстрее
(MemCache, Redis, …)
SQL и индексы
8.5.3. How MySQL Uses Indexes
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
SQL и понимание индексов
SELECT * FROM t WHERE a = 1;
SELECT a FROM t WHERE a = 1;
SELECT f1, f2, f3 FROM t WHERE f1='abc' AND f2=2
SELECT top 10 a FROM t WHERE a > 1 ORDER BY a;
SELECT * FROM t WHERE name LIKE 'abc%';
SELECT * FROM t WHERE name LIKE '%abc';
SELECT * FROM t WHERE a > 100 AND b < 10;
SELECT * FROM t WHERE a = 100 AND b < 10;
SELECT * FROM t WHERE a > 100 AND b = 10;
SELECT * FROM t WHERE f1='abc' AND f2 = 2;
SELECT * FROM t WHERE f1='abc' AND f2=2
ORDER BY f3 DESC, f4 ASC
SELECT * FROM t WHERE f1='abc' OR f2=2;
SELECT * FROM t WHERE DateAdd(f1, 7) = '2011-01-01';
SELECT * FROM t WHERE f1 = DateAdd( '2011-01-01', -7)
SELECT * FROM points
WHERE x BETWEEN 100 AND 200
AND y BETWEEN 200 AND 400;
SELECT * FROM t1 JOIN t2 ON t1.cityname = t2.cityname
SELECT * FROM parent
JOIN child ON child.parentId = parent.id
WHERE parent.type = 'important';
JOIN + Индексы
http://en.wikipedia.org/wiki/Join_(SQL)#Implementation
«Иные» запросы
— иные индексы
— иные структуры данных
Полнотекстовый поиск
«котики порно скачать бесплатно»
• [Исправление опечаток]
• Лемматизация (кот порн скач бесплатн)
• Синонимия (белочки sex download без смс)
• Обратный индекс (слово → документы)
• Ранжирование (сортировка результатов)
Ключевые слова:
Lucene (Solr, Elasticsearch), Sphinx
Гео-поиск
«найди кафешку рядом со мной»
SELECT * FROM Poi WHERE type="cafe"
AND Distance(location, me) < 1000
R-Tree (rectangles tree), Geohash
Ключевые слова:
MySQL spatial extensions,
Spatial Index, Geometric types, PostGIS
Распределенные БД
Кластер, все данные в памяти →
• Хэш-индексы — скорость
• Деревянные индексы — порядок
Как обрабатывать запросы?
Домашнее задание 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;
}
Домашнее задание 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;
}
Домашнее задание 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;
}
Домашнее задание 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
Домашнее задание 4
Могут происходить следующие события:
• Добавление нового комментария
• Удаление комментария
• «Like» комментарию
• Запросить K не удалённых комментариев,
которые менялись (добавлялись или
лайкались) самыми последними.
Ещё о применении хэшей
Ключевые слова:
полиномиальный хэш, rolling hash
Книги

Александр Шень (Free)
Online курсы
https://www.coursera.org/courses?orderby=upc
oming&search=algorithms&cats=cs-theory
Сайты для тренировок
http://acm.timus.ru
http://projecteuler.net
http://www.sql-ex.ru/

More Related Content

What's hot

Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
Mikhail Kurnosov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
Mikhail Kurnosov
 
Лекция 5. Бинарные деревья поиска
Лекция 5. Бинарные деревья поискаЛекция 5. Бинарные деревья поиска
Лекция 5. Бинарные деревья поиска
Mikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
Technopark
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
Technopark
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)
Mikhail Kurnosov
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)
Mikhail Kurnosov
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
Technopark
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
Mikhail Kurnosov
 
Абстрактные типы данных, контейнеры и списки
Абстрактные типы данных, контейнеры и спискиАбстрактные типы данных, контейнеры и списки
Абстрактные типы данных, контейнеры и списки
Olga Maksimenkova
 
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Mikhail Kurnosov
 
Основы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиОсновы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивами
Olga Maksimenkova
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
Mikhail Kurnosov
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
Viktor Turskyi
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Nikolay Grebenshikov
 
Лекция 4: Префиксные деревья (Tries, prefix trees)
Лекция 4: Префиксные деревья (Tries, prefix trees)Лекция 4: Префиксные деревья (Tries, prefix trees)
Лекция 4: Префиксные деревья (Tries, prefix trees)
Mikhail Kurnosov
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Nikolay Grebenshikov
 
Learning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинLearning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван Сметанин
Mail.ru Group
 
Highload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыHighload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексы
Pavel Egorov
 

What's hot (20)

Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Algo 00
Algo 00Algo 00
Algo 00
 
Лекция 5. Бинарные деревья поиска
Лекция 5. Бинарные деревья поискаЛекция 5. Бинарные деревья поиска
Лекция 5. Бинарные деревья поиска
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)Лекция 6: Биномиальные кучи (Binomial heaps)
Лекция 6: Биномиальные кучи (Binomial heaps)
 
Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)Лекция 3. АВЛ-деревья (AVL trees)
Лекция 3. АВЛ-деревья (AVL trees)
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Абстрактные типы данных, контейнеры и списки
Абстрактные типы данных, контейнеры и спискиАбстрактные типы данных, контейнеры и списки
Абстрактные типы данных, контейнеры и списки
 
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
Лекция 7. Декартовы деревья (Treaps, дучи, дерамиды)
 
Основы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиОсновы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивами
 
Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)Лекция 5. B-деревья (B-trees, k-way merge sort)
Лекция 5. B-деревья (B-trees, k-way merge sort)
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
 
Лекция 4: Префиксные деревья (Tries, prefix trees)
Лекция 4: Префиксные деревья (Tries, prefix trees)Лекция 4: Префиксные деревья (Tries, prefix trees)
Лекция 4: Префиксные деревья (Tries, prefix trees)
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
Learning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван СметанинLearning from Swift sources, Иван Сметанин
Learning from Swift sources, Иван Сметанин
 
Highload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыHighload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексы
 

Similar to Мастер класс по алгоритмам. Часть 1

Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
Nikolay Grebenshikov
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Yandex
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
Глеб Тарасов
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. Russian
Rawan Qurmet
 
Coding like a sex
Coding like a sexCoding like a sex
Coding like a sex
Max Arshinov
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
Ontico
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шаги
Anton Gorokhov
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
Levon Avakyan
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
Яковенко Кирилл
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"
LogeekNightUkraine
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus Ready
HighLoad2009
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Tanya Denisyuk
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
Alexander Shigin
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Bitworks Software
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Dmitry Kornev
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Positive Development User Group
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Badoo Development
 

Similar to Мастер класс по алгоритмам. Часть 1 (20)

Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. Russian
 
Coding like a sex
Coding like a sexCoding like a sex
Coding like a sex
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шаги
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus Ready
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
 
Server optimization
Server optimizationServer optimization
Server optimization
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 

More from Pavel Egorov

Git basics
Git basicsGit basics
Git basics
Pavel Egorov
 
Интеллект-карты для конспектирования
Интеллект-карты для конспектированияИнтеллект-карты для конспектирования
Интеллект-карты для конспектирования
Pavel Egorov
 
Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2
Pavel Egorov
 
Code retreat @ крешкурс2013
Code retreat @ крешкурс2013Code retreat @ крешкурс2013
Code retreat @ крешкурс2013
Pavel Egorov
 
Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?
Pavel Egorov
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требования
Pavel Egorov
 
Software engineering. Введение в специальность. Обзор
Software engineering. Введение в специальность. ОбзорSoftware engineering. Введение в специальность. Обзор
Software engineering. Введение в специальность. Обзор
Pavel Egorov
 
Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)
Pavel Egorov
 
Cистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoITCистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoIT
Pavel Egorov
 
Разработка ПО. Введение в специальность 3. Требования
 Разработка ПО. Введение в специальность 3. Требования Разработка ПО. Введение в специальность 3. Требования
Разработка ПО. Введение в специальность 3. Требования
Pavel Egorov
 
Разработка ПО. Введение в специальность 1
Разработка ПО. Введение в специальность 1Разработка ПО. Введение в специальность 1
Разработка ПО. Введение в специальность 1
Pavel Egorov
 
Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011
Pavel Egorov
 
Основы Di контейнеров
Основы Di контейнеровОсновы Di контейнеров
Основы Di контейнеров
Pavel Egorov
 

More from Pavel Egorov (14)

Git basics
Git basicsGit basics
Git basics
 
Интеллект-карты для конспектирования
Интеллект-карты для конспектированияИнтеллект-карты для конспектирования
Интеллект-карты для конспектирования
 
Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2
 
Code retreat @ крешкурс2013
Code retreat @ крешкурс2013Code retreat @ крешкурс2013
Code retreat @ крешкурс2013
 
Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требования
 
Software engineering. Введение в специальность. Обзор
Software engineering. Введение в специальность. ОбзорSoftware engineering. Введение в специальность. Обзор
Software engineering. Введение в специальность. Обзор
 
Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)
 
Cистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoITCистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoIT
 
Разработка ПО. Введение в специальность 3. Требования
 Разработка ПО. Введение в специальность 3. Требования Разработка ПО. Введение в специальность 3. Требования
Разработка ПО. Введение в специальность 3. Требования
 
Разработка ПО. Введение в специальность 1
Разработка ПО. Введение в специальность 1Разработка ПО. Введение в специальность 1
Разработка ПО. Введение в специальность 1
 
AI challenge 2011
AI challenge 2011AI challenge 2011
AI challenge 2011
 
Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011
 
Основы Di контейнеров
Основы Di контейнеровОсновы Di контейнеров
Основы Di контейнеров
 

Мастер класс по алгоритмам. Часть 1