SlideShare a Scribd company logo
1 of 44
Download to read offline
Фрактальная геометрия
и программирование на Python
(школа учителей 2018)
Незнанов Алексей Андреевич,
доцент департамента анализа данных и искусственного интеллекта факультета
компьютерных наук НИУ ВШЭ,
старший научный сотрудник международной лаборатории интеллектуальных
систем и структурного анализа ФКН НИУ ВШЭ
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 1
Математика и фракталы
✓ Фракталы
✓ Типы и способы задания
✓ Рекурсивные функции
✓ Дробная размерность
✓ Примеры
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 2
Фрактал
• Фрактал [fractal] -
1. множество, обладающее свойством самоподобия
2. Рекурсивно-определённое бесконечное множество,
хаусдорфова размерность которого больше топологической
размерности
• Требование не выполняется для Гильбертовых кривых, которые часто
также относят к фракталам
• На удивление хорошо представлены в Википедии:
• http://en.wikipedia.org/wiki/Fractal
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 3
Типы фракталов
• Обычно выделяют три основных типа фракталов:
1. Геометрический фрактал
• Рекурсивный генератор бесконечной линии или поверхности
2. Алгебраический фрактал
• Нелинейная динамическая система
3. Стохастический фрактал
• Случайный процесс с изменяющимися параметрами
• Только геометрические фракталы визуализируются
«напрямую» в виде конкретной фигуры
• Остальные типы позволяют визуализировать некоторую
«проекцию», «срез», «реализацию» и т.п.
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 4
Популярные фракталы
• Множество Кантора [Cantor set] – нигде не плотное несчётное
совершенное множество
• Кривая Коха [Koch curve] – несамопересекающаяся
непрерывная кривая бесконечной длины, не имеющая
касательной ни в одной точке
• Треугольник Серпинского [Sierpinski triangle] («скатерть») +
ковёр Серпинского – аналоги множества Кантора на плоскости
• Губка Менгера [Menger sponge] – аналог множества Кантора в
трёхмерном пространстве
• Функция Вейерштрасса [Weierstrass function] – нигде не
дифференцируемая непрерывная функция
• Кривая Пеано [Space-filling curve] – непрерывная кривая,
проходящая через все точки квадрата
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 5
«Снежинка Коха» – определение
• Снежинка Коха [Koch snowflake]
• Хельге фон Кох, 1904 год
• Замкнутая кривая бесконечной длины –
Геометрический фрактал в 2D
• Нигде не дифференцируема
• Коэффициент подобия = 1/3
• Хаусдорфова размерность = ln 4/ln 3 ≈ 1,26
• Итеративная процедура построения
• Начать с равностороннего треугольника
• Его стороны – начальные три отрезка
• Каждый отрезок заменяем на три новых отрезка:
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 6
«Снежинка Коха» – анимация
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 7
© 2015, Vermip
Обобщения кривой Коха
• Принципы
• Изменения угла: от 60° до 90°
• Изменения принципа разделения отрезка
• Примеры кривых:
• Квадратичная 1 типа:
• Квадратичная 2 типа:
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 8
Откуда берётся дробная размерность
• Фрактальная размерность
(http://ru.wikipedia.org/wiki/Фрактальная_размерность)
• Предел отношения мощности двух бесконечных (счётных) множеств
• Сейчас не будем погружаться...
• Для понимания вопрос:
• Какова длина береговой линии?
• А если уточнить?
• «Парадокс береговой линии»
(http://ru.wikipedia.org/wiki/Парадокс_береговой_линии)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 9
Иллюстрация
парадокса береговой линии
• Измеряем береговую линию
Великобритании
• Если используем отрезки
по 100 км, то длина ≈ 2 800 км
• Если используем отрезки
по 50 км, то длина ≈ 3 400 км
• На 600 км больше!
• И так далее до бесконечности...
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 10
Функция Вейерштрасса – определение
• Функция Вейерштрасса [Weierstrass function]
• К. Вейерштрасс, 1872 год
• Непрерывная функция, нигде не имеющая производной
• Задаётся рядом Фурье:
• 𝑤 𝑥 = σ 𝑛=0
∞
𝑎 𝑛cos(𝑏 𝑛 𝜋𝑥), где:
• 0 < 𝑎 < 1,
• 𝑏 – положительное нечётное число,
• 𝑎𝑏 > 1 +
3
2
𝜋
• В 1930 году Б. ван дер Варден предложил более простой
вариант: 𝑣 𝑥 = σ 𝑛=0
∞ {10 𝑛 𝑥}
10 𝑛 , где {} – взятие дробной части
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 11
Функция Вейерштрасса – иллюстрация
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 12
Треугольник Серпинского – определение
• Треугольник Серпинского [Sierpiński triangle]
• В. Серпинский, 1915 год
• Принцип построения известен задолго до...
• Часто использовался в орнаментах
• Итеративное вырезание из треугольника центра
(в виде треугольника) с получением трёх меньших
треугольников...
• Хаусдорфова размерность = ln 3/ln 2 ≈ 1,585
• Очевидным образом можно на границах треугольников построить
кривую Серпинского
• Связь с треугольником Паскаля
• Если в треугольнике Паскаля все нечётные числа окрасить в чёрный цвет,
а чётные – в белый, то образуется треугольник Серпинского
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 13
Треугольник Серпинского – итерации
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 14
Кривая Пеано – итерации
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 15
Папоротник Барнсли – определение
• Папоротник Барнсли [Barnsley's fern]
• Майкла Барнсли, 1988 год
• Курс «Фрактальная геометрия»
[Fractal Geometry]
• Пример системы итеративных функций
[iterated function system (IFS)]
• Самоподобие каждого фрагмента
«веточки» самой «веточке»
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 16
Папоротник Барнсли –
классический алгоритм
• Первая точка ставится в начале координат (𝑥0 = 0, 𝑦0 = 0)
• Следующие точки итеративно вычисляются путем случайного
применения одного из следующих четырех преобразований
координат:
1. 𝑥 𝑛+1 = 0 ; 𝑦 𝑛+1 = 0,16 𝑦𝑛
• В 1% случаев, указывает на точку у основания «стебля»
2. 𝑥 𝑛+1 = 0,85 𝑥 𝑛 + 0,04 𝑦𝑛 ; 𝑦 𝑛+1 = −0.04 𝑥 𝑛 + 0,85 𝑦𝑛 + 1,6
• В 85% случаев, лист
3. 𝑥 𝑛+1 = 0,2 𝑥 𝑛 − 0,26𝑦_𝑛 ; 𝑦 𝑛+1 = 0,23 𝑥 𝑛 + 0,22𝑦𝑛 + 1,6
• В 7% случаев, начало листьев с одной стороны веточки
4. 𝑥 𝑛+1 = −0,15 𝑥 𝑛 + 0,28 𝑦𝑛 ; 𝑦 𝑛+1 = 0.26 𝑥 𝑛 + 0.24 𝑦𝑛 + 0,44
• В 7% случаев, начало симметричных листьев
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 17
Пример другой IFS
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 18
Множество Мандельброта – определение
• Множество Мандельброта [Mandelbrot set]
• Множество комплексных чисел 𝑐 такое что
𝑧 𝑛+1 = 𝑧 𝑛
2 + 𝑐 при 𝑧0 = 0 задаёт
ограниченную последовательность
• П. Фату + Г. Жюлиа, 1905 г. (исследование) →
Р. Брукс, 1978 г. (первая отрисовка) →
Б. Мандельброт с коллегами, 1980
(полноценная компьютерная визуализация)
• C самоподобием у него не всё хорошо
• Особо интересны варианты т.н. «p/q-limb» (http://en.wikipedia.org/wiki/Mandelbrot_set)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 19
Мандельброт в текстовом режиме
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 20
© 2018, E. Bosman
Коралл в папоротник и обратно
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 21
© 2018, Зона кода
Папоротник в треугольник и обратно
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 22
© 2018, Зона кода
Приложения фракталов
✓ Описание мира
✓ Синтез систем
✓ Сжатие данных
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 23
Фракталы для описания мира
• Всё в нашем мире – фрактал
• Листья деревьев
• Артерии и вены в нашем теле
• Облака
• Молекула ДНК
• Поведение фондового рынка
• Космологические конструкции (вселенная)
• Турбулентные вихри
• Шероховатость поверхностей
• ...
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 24
Анализ и синтез на основе фракталов
• Сжатие изображений
• Начиная с JPEG
• Изменение размера изображений
• Фильтры на основе фракталов
• Генерация изображений
• Фрактальные поверхности и фрактальные текстуры
• Производящие функции + IFS
• + Raytracing, raymatching
• …
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 25
Приложения – абстрактная живопись
• Фрактал Ляпунова – бифуркационные фракталы, порождённые
расширением логистического отображения, в которых степень
роста совокупности периодически меняет значение с 𝐴 на 𝐵 и
наоборот
• Lyapunov Exponents (http://www.efg2.com/Lab/FractalsAndChaos/Lyapunov.htm)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 26
Приложения – генерация ландшафтов
• Минимальным объёмом кода!
• This 4-kilobyte demo squeezes a universe of fractals into the size of a Word
document (http://www.theverge.com/2012/5/14/3014698/assembly-4k-
demoscene-fractals)
• Hartverdrahtet by Akronyme Analogiker (http://www.pouet.net/prod.php?which=59086)
• Elevated by Rgba & TBC (http://www.pouet.net/prod.php?which=52938)
• Ixaleno by Rgba (http://www.pouet.net/prod.php?which=50068)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 27
Фрактальный ландшафт
(Iñigo Quilez, 2016)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 28
Фрактальный ландшафт и погода
• David Hoskins (http://www.shadertoy.com)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 29
Arcane Landscape by David Hoskins, 2018
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 30
Питон и фракталы
✓ Графика при программировании на Python
✓ Черепашка
✓ Pillow
✓ Matplotlib
✓ Реализация фракталов
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 31
Графика и Python
• Подходы
• 2D- и 3D-графика
• Векторная и растровая графика
• Платформы
• Unix-like
• Windows
• MacOS
• iOS
• Android
• …
• Библиотеки
• Огромное количество!
• Рассмотрим Turtle, Pillow и MatPlotLib
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 32
Черепашка в Python
• Одна из реализаций: Python Turtle
(http://docs.python.org/3.3/library/turtle.html)
• В repl.it (http://repl.it) нужно выбрать язык
• Python (with Turtle): A dynamic language emphasizing readability
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 33
Pillow – что это?
• PIL (Python Imaging Library) → Pillow
• Pillow – The friendly PIL fork (http://python-pillow.org)
• Pillow Docs (http://pillow.readthedocs.io)
• Managed by Alex Clark
• Текущая версия: 5.3.0
• Установка из PyPI: $ pip install Pillow
• Начинающим:
• Pillow Tutorial (http://pillow.readthedocs.io/en/latest/handbook/tutorial.html)
• Продолжающим
• Распараллеленная версия (http://github.com/uploadcare/pillow-simd)
• Производительность:
• Pillow Performance (http://python-pillow.org/pillow-perf/)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 34
Pillow – Зависимости
• Libjpeg – для баззовой поддержки формата JPEG
• Zlib – для пожжержки сжатия (компрессии)
• Libtiff – для поподдержки сжатых TIFF-файлов
• Libfreetype – для поддержки шрифтов FreeType
• Littlecms – для управления цветовыми профилями (CMS)
• tcl/tk – для поддержки tkinter
• Libwebp – для поддержки формата WebP
• Openjpeg – для поддержки формата JPEG 2000
• Libimagequant – для продвинутой работы с цветом
• Libraqm – для работы со шрифтами
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 35
Pillow – как начать использовать?
• from PIL import <Модуль>
• Модули:
• Image – основной модуль, содержащий класс Image
• ImageChops – поканальные операции
• ImageColor – таблицы цветов, включая CSS3 для веба
• ImageCMS – управление цветовыми профилями
• ImageDraw – 2D векторная графика (есть отдельный модуль aggdraw на
основе знаменитого проекта Anti-Grain Geometry (AGG) М. Шиманарева)
• ImageEnhance – обработка изображений (в основном – улучшение качества)
• ImageFile – ввод/вывод
• ImageFilter – стандартные растровые фильтры
• ImageMath – алгебра над изображениями (арифметика и логика)
• ImageMorph – морфологические
• ImageFont – работа со своим собственных форматом шрифтов + FreeType
• ImagePalette – управление палитрами
• ImageStat – статистика по пикселям изображения или фрагмента
• …
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 36
Pillow – Пример создания миниатюр
1. from __future__ import print_function
2. import os, sys
3. from PIL import Image
4. size = (128, 128)
5. for infile in sys.argv[1:]:
6. outfile = os.path.splitext(infile)[0] + ".thumbnail"
7. if infile != outfile:
8. try:
9. im = Image.open(infile)
10. im.thumbnail(size)
11. im.save(outfile, "JPEG")
12. except IOError:
13. print("cannot create thumbnail for", infile)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 37
Pillow – заготовка для рисования
1. from PIL import Image
2. XRange = 512
3. YRange = 512
4. image = Image.new("RGB", (XRange, YRange))
5. #...
6. image.putpixel((x, y), (r, g, b))
7. #...
8. image.save("name.png", "PNG")
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 38
MatPlotLib
• Matplotlib (http://matplotlib.org) –
библиотека «научной графики»
• Координировалась John Hunter
(вплоть до его смерти в 2012 году)
• Текущая версия 3.0.0
• Позволяет очень удобно строить графики функций, статистические
диаграммы и т.п.
• Поддерживает интерактивный режим работы пользователя
• Активно используется почти во всех во всех научных приложениях на
Python
• Введение на русском:
• Построение графиков в Python при помощи Matplotlib
(http://python-scripts.com/matplotlib)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 39
Примеры реализации
• Подготовленные для экспериментов:
• Папоротник 1 (http://repl.it/@Alex_Neznanov/Fractal-Fern-Leon-Hostetler)
• Ньютон 1 (http://repl.it/@Alex_Neznanov/Newton-FractalsPyRecipe)
• Мандельброт (http://repl.it/@Alex_Neznanov/Fractal-Mandelbrot-Schurov)
• Другие
• ActiveState Recipes (http://github.com/ActiveState/code/tree/master/recipes/Python) +
поиск по слову «Fractal»
• Fractals in Python (http://github.com/danilobellini/fractal)
• Python Fractals (http://www.101computing.net/python-fractals/)
• A turtle can draw fractals
(http://blog.klipse.tech/python/2017/01/04/python-turtle-fractal.html)
• Snowflakes Fractal using Python
(http://www.geeksforgeeks.org/snowflakes-fractal-using-python/)
• Щуров И. Рисуем Мандельброта с помощью Python и Numpy. 2016
(http://ischurov.github.io/mandelbrot.html)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 40
Папоротник 1 (Matplotlib)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 41
Ньютонов фрактал (𝑧3 − 1) (Pillow)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 42
Фрактал Мандельброта (Matplotlib)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 43
Но это ещё не конец?!
Спасибо за внимание к тёмным углам
в обучении программированию!
Контакты:
•Алексей Незнанов
• International Laboratory for Intelligent System and Structural Analysis,
NRU HSE, Moscow, Russia
• School of Data Analysis and Artificial Intelligence,
Faculty of Computer Science, NRU HSE, Moscow, Russia
• E-mail: aneznanov@hse.ru
• Web-site: http://hse.ru/staff/aneznanov
• Blog: http://siberianshamanssongs.blogspot.ru (RU)
© 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 44

More Related Content

More from Alexey Neznanov

ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...Alexey Neznanov
 
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовыИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовыAlexey Neznanov
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
 
Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...Alexey Neznanov
 
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...Alexey Neznanov
 
Онтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знаниеОнтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знаниеAlexey Neznanov
 
Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...Alexey Neznanov
 
Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...Alexey Neznanov
 
Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...Alexey Neznanov
 
Где и как хранить данные в процессе их анализа:  SQL и не только…
Где и как хранить данные в процессе их анализа: SQL и не только… Где и как хранить данные в процессе их анализа: SQL и не только…
Где и как хранить данные в процессе их анализа:  SQL и не только… Alexey Neznanov
 
Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)
Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)
Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)Alexey Neznanov
 
Современные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедренияСовременные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедренияAlexey Neznanov
 
Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...Alexey Neznanov
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...Alexey Neznanov
 
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...Alexey Neznanov
 
Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...Alexey Neznanov
 
Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...Alexey Neznanov
 
Коллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессеКоллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессеAlexey Neznanov
 
Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14Alexey Neznanov
 

More from Alexey Neznanov (20)

ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
 
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовыИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
 
Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...
 
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
 
Онтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знаниеОнтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знание
 
Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...
 
Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...Современные коллаборативные технологии в учебном процессе: возможности и проб...
Современные коллаборативные технологии в учебном процессе: возможности и проб...
 
Рекурсия (2017)
Рекурсия (2017)Рекурсия (2017)
Рекурсия (2017)
 
Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...
 
Где и как хранить данные в процессе их анализа:  SQL и не только…
Где и как хранить данные в процессе их анализа: SQL и не только… Где и как хранить данные в процессе их анализа: SQL и не только…
Где и как хранить данные в процессе их анализа:  SQL и не только…
 
Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)
Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)
Взаимное оценивание студентов: от идеи к реализации (Семинар 2016-11-21)
 
Современные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедренияСовременные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедрения
 
Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
 
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
 
Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...
 
Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...
 
Коллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессеКоллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессе
 
Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14
 

Фрактальная геометрия и программирование на Python

  • 1. Фрактальная геометрия и программирование на Python (школа учителей 2018) Незнанов Алексей Андреевич, доцент департамента анализа данных и искусственного интеллекта факультета компьютерных наук НИУ ВШЭ, старший научный сотрудник международной лаборатории интеллектуальных систем и структурного анализа ФКН НИУ ВШЭ © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 1
  • 2. Математика и фракталы ✓ Фракталы ✓ Типы и способы задания ✓ Рекурсивные функции ✓ Дробная размерность ✓ Примеры © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 2
  • 3. Фрактал • Фрактал [fractal] - 1. множество, обладающее свойством самоподобия 2. Рекурсивно-определённое бесконечное множество, хаусдорфова размерность которого больше топологической размерности • Требование не выполняется для Гильбертовых кривых, которые часто также относят к фракталам • На удивление хорошо представлены в Википедии: • http://en.wikipedia.org/wiki/Fractal © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 3
  • 4. Типы фракталов • Обычно выделяют три основных типа фракталов: 1. Геометрический фрактал • Рекурсивный генератор бесконечной линии или поверхности 2. Алгебраический фрактал • Нелинейная динамическая система 3. Стохастический фрактал • Случайный процесс с изменяющимися параметрами • Только геометрические фракталы визуализируются «напрямую» в виде конкретной фигуры • Остальные типы позволяют визуализировать некоторую «проекцию», «срез», «реализацию» и т.п. © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 4
  • 5. Популярные фракталы • Множество Кантора [Cantor set] – нигде не плотное несчётное совершенное множество • Кривая Коха [Koch curve] – несамопересекающаяся непрерывная кривая бесконечной длины, не имеющая касательной ни в одной точке • Треугольник Серпинского [Sierpinski triangle] («скатерть») + ковёр Серпинского – аналоги множества Кантора на плоскости • Губка Менгера [Menger sponge] – аналог множества Кантора в трёхмерном пространстве • Функция Вейерштрасса [Weierstrass function] – нигде не дифференцируемая непрерывная функция • Кривая Пеано [Space-filling curve] – непрерывная кривая, проходящая через все точки квадрата © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 5
  • 6. «Снежинка Коха» – определение • Снежинка Коха [Koch snowflake] • Хельге фон Кох, 1904 год • Замкнутая кривая бесконечной длины – Геометрический фрактал в 2D • Нигде не дифференцируема • Коэффициент подобия = 1/3 • Хаусдорфова размерность = ln 4/ln 3 ≈ 1,26 • Итеративная процедура построения • Начать с равностороннего треугольника • Его стороны – начальные три отрезка • Каждый отрезок заменяем на три новых отрезка: © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 6
  • 7. «Снежинка Коха» – анимация © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 7 © 2015, Vermip
  • 8. Обобщения кривой Коха • Принципы • Изменения угла: от 60° до 90° • Изменения принципа разделения отрезка • Примеры кривых: • Квадратичная 1 типа: • Квадратичная 2 типа: © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 8
  • 9. Откуда берётся дробная размерность • Фрактальная размерность (http://ru.wikipedia.org/wiki/Фрактальная_размерность) • Предел отношения мощности двух бесконечных (счётных) множеств • Сейчас не будем погружаться... • Для понимания вопрос: • Какова длина береговой линии? • А если уточнить? • «Парадокс береговой линии» (http://ru.wikipedia.org/wiki/Парадокс_береговой_линии) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 9
  • 10. Иллюстрация парадокса береговой линии • Измеряем береговую линию Великобритании • Если используем отрезки по 100 км, то длина ≈ 2 800 км • Если используем отрезки по 50 км, то длина ≈ 3 400 км • На 600 км больше! • И так далее до бесконечности... © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 10
  • 11. Функция Вейерштрасса – определение • Функция Вейерштрасса [Weierstrass function] • К. Вейерштрасс, 1872 год • Непрерывная функция, нигде не имеющая производной • Задаётся рядом Фурье: • 𝑤 𝑥 = σ 𝑛=0 ∞ 𝑎 𝑛cos(𝑏 𝑛 𝜋𝑥), где: • 0 < 𝑎 < 1, • 𝑏 – положительное нечётное число, • 𝑎𝑏 > 1 + 3 2 𝜋 • В 1930 году Б. ван дер Варден предложил более простой вариант: 𝑣 𝑥 = σ 𝑛=0 ∞ {10 𝑛 𝑥} 10 𝑛 , где {} – взятие дробной части © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 11
  • 12. Функция Вейерштрасса – иллюстрация © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 12
  • 13. Треугольник Серпинского – определение • Треугольник Серпинского [Sierpiński triangle] • В. Серпинский, 1915 год • Принцип построения известен задолго до... • Часто использовался в орнаментах • Итеративное вырезание из треугольника центра (в виде треугольника) с получением трёх меньших треугольников... • Хаусдорфова размерность = ln 3/ln 2 ≈ 1,585 • Очевидным образом можно на границах треугольников построить кривую Серпинского • Связь с треугольником Паскаля • Если в треугольнике Паскаля все нечётные числа окрасить в чёрный цвет, а чётные – в белый, то образуется треугольник Серпинского © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 13
  • 14. Треугольник Серпинского – итерации © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 14
  • 15. Кривая Пеано – итерации © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 15
  • 16. Папоротник Барнсли – определение • Папоротник Барнсли [Barnsley's fern] • Майкла Барнсли, 1988 год • Курс «Фрактальная геометрия» [Fractal Geometry] • Пример системы итеративных функций [iterated function system (IFS)] • Самоподобие каждого фрагмента «веточки» самой «веточке» © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 16
  • 17. Папоротник Барнсли – классический алгоритм • Первая точка ставится в начале координат (𝑥0 = 0, 𝑦0 = 0) • Следующие точки итеративно вычисляются путем случайного применения одного из следующих четырех преобразований координат: 1. 𝑥 𝑛+1 = 0 ; 𝑦 𝑛+1 = 0,16 𝑦𝑛 • В 1% случаев, указывает на точку у основания «стебля» 2. 𝑥 𝑛+1 = 0,85 𝑥 𝑛 + 0,04 𝑦𝑛 ; 𝑦 𝑛+1 = −0.04 𝑥 𝑛 + 0,85 𝑦𝑛 + 1,6 • В 85% случаев, лист 3. 𝑥 𝑛+1 = 0,2 𝑥 𝑛 − 0,26𝑦_𝑛 ; 𝑦 𝑛+1 = 0,23 𝑥 𝑛 + 0,22𝑦𝑛 + 1,6 • В 7% случаев, начало листьев с одной стороны веточки 4. 𝑥 𝑛+1 = −0,15 𝑥 𝑛 + 0,28 𝑦𝑛 ; 𝑦 𝑛+1 = 0.26 𝑥 𝑛 + 0.24 𝑦𝑛 + 0,44 • В 7% случаев, начало симметричных листьев © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 17
  • 18. Пример другой IFS © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 18
  • 19. Множество Мандельброта – определение • Множество Мандельброта [Mandelbrot set] • Множество комплексных чисел 𝑐 такое что 𝑧 𝑛+1 = 𝑧 𝑛 2 + 𝑐 при 𝑧0 = 0 задаёт ограниченную последовательность • П. Фату + Г. Жюлиа, 1905 г. (исследование) → Р. Брукс, 1978 г. (первая отрисовка) → Б. Мандельброт с коллегами, 1980 (полноценная компьютерная визуализация) • C самоподобием у него не всё хорошо • Особо интересны варианты т.н. «p/q-limb» (http://en.wikipedia.org/wiki/Mandelbrot_set) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 19
  • 20. Мандельброт в текстовом режиме © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 20 © 2018, E. Bosman
  • 21. Коралл в папоротник и обратно © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 21 © 2018, Зона кода
  • 22. Папоротник в треугольник и обратно © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 22 © 2018, Зона кода
  • 23. Приложения фракталов ✓ Описание мира ✓ Синтез систем ✓ Сжатие данных © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 23
  • 24. Фракталы для описания мира • Всё в нашем мире – фрактал • Листья деревьев • Артерии и вены в нашем теле • Облака • Молекула ДНК • Поведение фондового рынка • Космологические конструкции (вселенная) • Турбулентные вихри • Шероховатость поверхностей • ... © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 24
  • 25. Анализ и синтез на основе фракталов • Сжатие изображений • Начиная с JPEG • Изменение размера изображений • Фильтры на основе фракталов • Генерация изображений • Фрактальные поверхности и фрактальные текстуры • Производящие функции + IFS • + Raytracing, raymatching • … © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 25
  • 26. Приложения – абстрактная живопись • Фрактал Ляпунова – бифуркационные фракталы, порождённые расширением логистического отображения, в которых степень роста совокупности периодически меняет значение с 𝐴 на 𝐵 и наоборот • Lyapunov Exponents (http://www.efg2.com/Lab/FractalsAndChaos/Lyapunov.htm) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 26
  • 27. Приложения – генерация ландшафтов • Минимальным объёмом кода! • This 4-kilobyte demo squeezes a universe of fractals into the size of a Word document (http://www.theverge.com/2012/5/14/3014698/assembly-4k- demoscene-fractals) • Hartverdrahtet by Akronyme Analogiker (http://www.pouet.net/prod.php?which=59086) • Elevated by Rgba & TBC (http://www.pouet.net/prod.php?which=52938) • Ixaleno by Rgba (http://www.pouet.net/prod.php?which=50068) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 27
  • 28. Фрактальный ландшафт (Iñigo Quilez, 2016) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 28
  • 29. Фрактальный ландшафт и погода • David Hoskins (http://www.shadertoy.com) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 29
  • 30. Arcane Landscape by David Hoskins, 2018 © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 30
  • 31. Питон и фракталы ✓ Графика при программировании на Python ✓ Черепашка ✓ Pillow ✓ Matplotlib ✓ Реализация фракталов © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 31
  • 32. Графика и Python • Подходы • 2D- и 3D-графика • Векторная и растровая графика • Платформы • Unix-like • Windows • MacOS • iOS • Android • … • Библиотеки • Огромное количество! • Рассмотрим Turtle, Pillow и MatPlotLib © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 32
  • 33. Черепашка в Python • Одна из реализаций: Python Turtle (http://docs.python.org/3.3/library/turtle.html) • В repl.it (http://repl.it) нужно выбрать язык • Python (with Turtle): A dynamic language emphasizing readability © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 33
  • 34. Pillow – что это? • PIL (Python Imaging Library) → Pillow • Pillow – The friendly PIL fork (http://python-pillow.org) • Pillow Docs (http://pillow.readthedocs.io) • Managed by Alex Clark • Текущая версия: 5.3.0 • Установка из PyPI: $ pip install Pillow • Начинающим: • Pillow Tutorial (http://pillow.readthedocs.io/en/latest/handbook/tutorial.html) • Продолжающим • Распараллеленная версия (http://github.com/uploadcare/pillow-simd) • Производительность: • Pillow Performance (http://python-pillow.org/pillow-perf/) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 34
  • 35. Pillow – Зависимости • Libjpeg – для баззовой поддержки формата JPEG • Zlib – для пожжержки сжатия (компрессии) • Libtiff – для поподдержки сжатых TIFF-файлов • Libfreetype – для поддержки шрифтов FreeType • Littlecms – для управления цветовыми профилями (CMS) • tcl/tk – для поддержки tkinter • Libwebp – для поддержки формата WebP • Openjpeg – для поддержки формата JPEG 2000 • Libimagequant – для продвинутой работы с цветом • Libraqm – для работы со шрифтами © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 35
  • 36. Pillow – как начать использовать? • from PIL import <Модуль> • Модули: • Image – основной модуль, содержащий класс Image • ImageChops – поканальные операции • ImageColor – таблицы цветов, включая CSS3 для веба • ImageCMS – управление цветовыми профилями • ImageDraw – 2D векторная графика (есть отдельный модуль aggdraw на основе знаменитого проекта Anti-Grain Geometry (AGG) М. Шиманарева) • ImageEnhance – обработка изображений (в основном – улучшение качества) • ImageFile – ввод/вывод • ImageFilter – стандартные растровые фильтры • ImageMath – алгебра над изображениями (арифметика и логика) • ImageMorph – морфологические • ImageFont – работа со своим собственных форматом шрифтов + FreeType • ImagePalette – управление палитрами • ImageStat – статистика по пикселям изображения или фрагмента • … © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 36
  • 37. Pillow – Пример создания миниатюр 1. from __future__ import print_function 2. import os, sys 3. from PIL import Image 4. size = (128, 128) 5. for infile in sys.argv[1:]: 6. outfile = os.path.splitext(infile)[0] + ".thumbnail" 7. if infile != outfile: 8. try: 9. im = Image.open(infile) 10. im.thumbnail(size) 11. im.save(outfile, "JPEG") 12. except IOError: 13. print("cannot create thumbnail for", infile) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 37
  • 38. Pillow – заготовка для рисования 1. from PIL import Image 2. XRange = 512 3. YRange = 512 4. image = Image.new("RGB", (XRange, YRange)) 5. #... 6. image.putpixel((x, y), (r, g, b)) 7. #... 8. image.save("name.png", "PNG") © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 38
  • 39. MatPlotLib • Matplotlib (http://matplotlib.org) – библиотека «научной графики» • Координировалась John Hunter (вплоть до его смерти в 2012 году) • Текущая версия 3.0.0 • Позволяет очень удобно строить графики функций, статистические диаграммы и т.п. • Поддерживает интерактивный режим работы пользователя • Активно используется почти во всех во всех научных приложениях на Python • Введение на русском: • Построение графиков в Python при помощи Matplotlib (http://python-scripts.com/matplotlib) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 39
  • 40. Примеры реализации • Подготовленные для экспериментов: • Папоротник 1 (http://repl.it/@Alex_Neznanov/Fractal-Fern-Leon-Hostetler) • Ньютон 1 (http://repl.it/@Alex_Neznanov/Newton-FractalsPyRecipe) • Мандельброт (http://repl.it/@Alex_Neznanov/Fractal-Mandelbrot-Schurov) • Другие • ActiveState Recipes (http://github.com/ActiveState/code/tree/master/recipes/Python) + поиск по слову «Fractal» • Fractals in Python (http://github.com/danilobellini/fractal) • Python Fractals (http://www.101computing.net/python-fractals/) • A turtle can draw fractals (http://blog.klipse.tech/python/2017/01/04/python-turtle-fractal.html) • Snowflakes Fractal using Python (http://www.geeksforgeeks.org/snowflakes-fractal-using-python/) • Щуров И. Рисуем Мандельброта с помощью Python и Numpy. 2016 (http://ischurov.github.io/mandelbrot.html) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 40
  • 41. Папоротник 1 (Matplotlib) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 41
  • 42. Ньютонов фрактал (𝑧3 − 1) (Pillow) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 42
  • 43. Фрактал Мандельброта (Matplotlib) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 43
  • 44. Но это ещё не конец?! Спасибо за внимание к тёмным углам в обучении программированию! Контакты: •Алексей Незнанов • International Laboratory for Intelligent System and Structural Analysis, NRU HSE, Moscow, Russia • School of Data Analysis and Artificial Intelligence, Faculty of Computer Science, NRU HSE, Moscow, Russia • E-mail: aneznanov@hse.ru • Web-site: http://hse.ru/staff/aneznanov • Blog: http://siberianshamanssongs.blogspot.ru (RU) © 2018, Незнанов А.А., МНУЛ ИССА ФКН НИУ ВШЭ 44