Традиционные курсы по алгоритмам, несмотря на подчеркнутую заботу об эффективности и практичности, часто предполагают, что обрабатываемые данные достаточно малы, чтобы поместиться в оперативную память компьютера. Последняя же обычно представляется одним большим массивом ячеек, доступ к любой из которых имеет одинаковую цену.
В реальных приложениях эта модель оказывается не слишком подходящей. Во-первых, существует большое число случаев, когда необходимо уметь обрабатывать данные на внешнем носителе, обычно жестком диске. Во-вторых, используемые сейчас повсеместно многоуровневые системы кеширования делают фактическое время исполнения алгоритма существенно менее предсказуемым. Память не является гомогенной средой, и хороший алгоритм должен заботиться о том, чтобы располагать данные правильным с точки зрения локальности образом.
В данном курсе будет дан обзор текущего состояния в области вычислений с учетом иерархической структуры памяти. Мы рассмотрим базовые примитивы (буферизация при чтении и записи, сортировка) и структуры данных (B-деревья и их вариации, буферизованные деревья, приоритетные очереди), поговорим о некоторых стандартных приемах и подзадачах (time forward processing, list ranking). Подробно будут рассмотрены алгоритмы на графах во внешней памяти (BFS, DFS, поиск связных компонент, MST). Будет затронута тема кеширования и cache-oblivious алгоритмов.
Дата и время | Занятие | Место | Материалы |
---|---|---|---|
15 сентября 17:20–18:55 |
Лекция, Лекция | ПОМИ РАН | видео |
15 сентября 19:05–20:40 |
Лекция, Лекция | ПОМИ РАН | видео |
16 сентября 11:15–12:50 |
Лекция, Лекция | ПОМИ РАН | видео |
16 сентября 13:00–14:35 |
Лекция, Лекция | ПОМИ РАН | видео |
16 сентября 15:35–17:10 |
Лекция, Лекция | ПОМИ РАН | видео |