Показаны сообщения с ярлыком алгоритмы. Показать все сообщения
Показаны сообщения с ярлыком алгоритмы. Показать все сообщения

среда, 15 апреля 2026 г.

Алгоритмы сортировки

Пузырьковая сортировка:
1) Пузырьковая сортировка и все-все-все https://habr.com/ru/articles/204600/

Сортировка простыми включениями:
2) Сортировка прямыми включениями https://prog-cpp.ru/sort-include/

Пирамидальная сортировка:
2) Пирамидальная сортировка (неинформативная статья в википедии)
4) Пирамидальная сортировка, сортировка слиянием и выпуклая оболочка https://habr.com/ru/companies/otus/articles/551254/
5) Пирамидальная сортировка (HeapSort) https://habr.com/ru/companies/otus/articles/460087/ (перевод статьи с geeksforgeeks)
6) Пирамидальная сортировка выбором https://habr.com/ru/companies/otus/articles/552018/
7) Сортировка n-нарной пирамидой https://habr.com/ru/companies/edison/articles/495420/

Сортировка слиянием:

Остальные:

Sort Array by Increasing Frequency:
3) 

четверг, 16 декабря 2021 г.

Видеокодеки и методы сжатия данных

Кодеки:
1) Как работает видеокодек. Часть 1. Основы https://habr.com/ru/company/edison/blog/481418/
2) Как работает видеокодек. Часть 2. Что, для чего, как 
3) Уличная магия сравнения кодеков. Раскрываем секреты https://habr.com/ru/post/451664/
4) Сжатие видео на пальцах: как работают современные кодеки? https://habr.com/ru/company/wd/blog/511966/
5) Первый видеокодек на машинном обучении кардинально превзошёл все существующие кодеки, в том числе H.265 и VP9 https://habr.com/ru/post/431354/
6) Новый кодек AV1: ускоряем загрузку видео в браузере https://habr.com/ru/post/442020/
7) Как добавить кодек в FFmpeg https://habr.com/ru/post/480714/
8) Про сжатие видео — Введение https://habr.com/ru/post/111244/

Сжатие данных:
1) Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео https://www.compression.ru/book/
2) Алгоритмы сжатия данных без потерь https://habr.com/ru/post/231177/
3) Алгоритмы сжатия данных без потерь, часть 2 https://habr.com/ru/post/235553/
4) Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро https://habr.com/ru/post/570694/
5) Методы сжатия данных https://habr.com/ru/post/251295/
6) О талантах, деньгах и алгоритмах сжатия данных https://habr.com/ru/post/525664/
7) Сжатие данных LZW https://habr.com/ru/company/otus/blog/581728/
8) Broo — алгоритм сжатия без потерь. Улучшения https://habr.com/ru/post/341226/
9) Сжатие информации без потерь. Часть первая https://habr.com/ru/post/142242/
10) Простейшие алгоритмы сжатия: RLE и LZ77 https://habr.com/ru/post/141827/

mp4:
1) TMS320C64x Image/Video Processing Library. Programmer’s Reference https://www.ti.com/lit/ug/spru023b/spru023b.pdf

jpeg, png:

mp3:

четверг, 2 сентября 2021 г.

Поиск кратчайшего пути на клеточном поле 2d-лабиринта

Вики:
3) A* (вики ИТМО)
4) Алгоритм Дейкстры (вики ИТМО)

Habr:
1) Введение в алгоритм A* https://habr.com/ru/post/331192/
2) (!)Попытки сделать изучение алгоритмов поиска пути проще https://habr.com/ru/post/323650/
3) Базовые алгоритмы нахождения кратчайших путей во взвешенных графах https://habr.com/ru/post/119158/
4) Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе https://habr.com/ru/post/111361/
5) Реализация волнового алгоритма нахождения кратчайшего пути к динамически движущимся объектам в unity3d на C# в 2d игре https://habr.com/ru/post/264189/
6) M* — алгоритм поиска кратчайшего пути, через весь мир, на смартфоне https://habr.com/ru/company/2gis/blog/326638/
7) О том, как алгоритм Дейкстры реализовывал и некоторых его применениях https://habr.com/ru/articles/700462/
8) Реализация алгоритма A* https://habr.com/ru/articles/331220/
9) Алгоритмы поиска пути: Алгоритм дейкстры и А* https://habr.com/ru/companies/otus/articles/748470/
10) Поиск в глубину, поиск в ширину, алгоритмы Дейкстры и А* — это один и тот же алгоритм https://habr.com/ru/companies/yandex_praktikum/articles/705178/
11) Графы для самых маленьких: BFS https://habr.com/ru/articles/200252/
12) Учебный проект на Python: алгоритм Дейкстры, OpenCV и UI ( часть 1) https://habr.com/ru/companies/skillfactory/articles/509304/
13) 

Оценка алгоритмов в играх:
1) Заблуждения игроков при оценке рисков. Контроль генератора случайных чисел в разработке https://habr.com/ru/articles/432080/
2) Вычислительная сложность некоторых игр и головоломок (часть 1) https://habr.com/ru/companies/first/articles/732604/

Введение в BSP деревья или BSP для самых «маленьких». Часть первая, теоретическая:
1) 

среда, 18 августа 2021 г.

Двоичные деревья

Двоичное дерево поиска (habr):
1) Структуры данных: бинарные деревья. Часть 1 https://habr.com/ru/post/65617/
2) Структуры данных: бинарные деревья. Часть 2: обзор сбалансированных деревьев https://habr.com/ru/post/66926/

1) Понимаем красно-черное дерево. Часть 1. Введение https://habr.com/ru/post/555404/
2) Понимаем красно-черное дерево. Часть 2. Балансировка и вставка https://habr.com/ru/post/557328/
3) Удаление в красно-черном дереве https://habr.com/ru/post/573502/

Complete Binary Tree:

AVL Tree:
1) АВЛ-деревья https://habr.com/ru/articles/150732/

четверг, 8 апреля 2021 г.

Setup numpy, matplotlib and scipy in Windows

Wiki:
3) 

Install instructions:

with pip:
python -m pip install -U numpy


with pip:
python -m pip install -U matplotlib


with pip:
python -m pip install -U scipy ipython jupyter pandas sympy nose

Github:

Lessons, guides:
2) NumPy в Python. Часть 1 https://habr.com/ru/post/352678/
5) Нескучный туториал по NumPy https://habr.com/ru/post/469355/
7) SciPy, оптимизация https://habr.com/ru/post/439288/
8) SciPy, алгоритмы на графах https://habr.com/ru/post/438464/
9) SciPy, оптимизация с условиями https://habr.com/ru/company/ods/blog/448054/
10) SciPy, ввод и вывод в MATLAB https://habr.com/ru/post/438600/
11) Способы создания гистограмм с помощью Python https://habr.com/ru/post/470535/
12) 50 оттенков matplotlib — The Master Plots (с полным кодом на Python) https://habr.com/ru/post/468295/
13) График счастья с python, pandas и matplotlib https://habr.com/ru/post/274927/

Машинное обучение:
1) Открытый курс машинного обучения. Тема 1. Первичный анализ данных с Pandas https://habr.com/ru/company/ods/blog/322626/
2) DeepPavlov стал частью Google Summer of Code в 2021 году https://habr.com/ru/company/ods/blog/549002/
3) Мои machine learning тулы для инвестирования https://habr.com/ru/company/ods/blog/548788/
4) Итоговые проекты курса Deep Learning in Natural Language Processing (by DeepPavlov Lab) https://habr.com/ru/company/ods/blog/514072/

Plotly, pandas, seaborn:
1) Шпаргалка по визуализации данных в Python с помощью Plotly https://habr.com/ru/post/502958/
2) Анализ данных с использованием Python https://habr.com/ru/post/353050/
3) Как строить красивые графики на Python с Seaborn https://habr.com/ru/company/otus/blog/540526/
4) Многомерные графики в Python — от трёхмерных и до шестимерных https://habr.com/ru/post/456282/
5) Продвинутый уровень визуализации данных для Data Science на Python https://habr.com/ru/company/skillfactory/blog/510320/

Курс лекций «Основы цифровой обработки сигналов» https://habr.com/ru/post/460445/.
1. Сигналы: аналоговые, дискретные, цифровые. Z-преобразование
https://nbviewer.org/github/hukenovs/dsp-theory/blob/master/src/dsp_theory_1_signals.ipynb
2. Преобразование Фурье: амплитудный и фазовый сигнала, ДПФ и БПФ
3. Свертка и корреляция. Линейная и циклическая свертка. Быстрая свёртка
4. Случайные процессы. Белый шум. Функция плотности вероятностей
5. Детерминированные сигналы. Модуляция: АМ, ЧМ, ФМ, ЛЧМ. Манипуляция
6. Фильтрация сигналов: БИХ, КИХ фильтры
7. Оконные функции в задачах фильтрации. Детектирование слабых сигналов
8. Ресемплинг: децимация и интерполяция. CIC-фильтры, фильтры скользящего среднего
9. Непараметрические методы спектрального анализа
10. Усреднение по частоте и по времени. Полифазный БПФ

Свертка:
1) Наглядно объясняем операцию свертки в моделях глубокого обучения https://proglib.io/p/convolution
2) Копируем человеческий мозг: операция «Свертка» https://habr.com/ru/articles/333772/
6) Свёртка в Deep Learning простыми словами https://www.reg.ru/blog/svyortka-v-deep-learning-prostymi-slovami/
7) Сверточный слой: методы оптимизации основанные на матричном умножении https://habr.com/ru/articles/448436/
8) Лекция 6а. Понятие свёртки https://bmstu-iu9.github.io/scheme-labs/lect06a.html
9) Линейная и циклическая свертка https://ru.dsplib.org/content/conv/conv.html
10) Лекция 21. Ядро Фейера. Операция свертки https://teach-in.ru/lecture/2022-04-20-Solodov-1

среда, 1 июля 2020 г.

Кодирование данных

Вики, хабр:

Base64:
3) ZBase32, Base32 и Base64 алгоритмы кодирования https://habr.com/ru/post/190054/

C++ 11,14,17

C++11:
1) Десять возможностей C++11, которые должен использовать каждый C++ разработчик https://habr.com/ru/post/182920/
2) Лекция 1. Нововведения стандарта C++11 https://www.youtube.com/watch?v=ZOmZCj5ijck
3) C++11 https://ru.wikipedia.org/wiki/C%2B%2B11
4) A Tutorial Introduction to C++11 & 14 Part 1 https://www.youtube.com/watch?v=TK_SfTfxaxc
5) https://ravesli.com/c-11-novovvedeniya/
6) https://en.cppreference.com/w/cpp/11

C++14:
1) Лекция 2. Нововведения стандарта C++14 https://www.youtube.com/watch?v=5TTS9zr9PGk
2) A Tutorial Introduction to C++11/14 - Part II https://www.youtube.com/watch?v=oTQ0kn0E9xI
3) C++14 https://ru.wikipedia.org/wiki/C%2B%2B14
4) https://ravesli.com/c-14-novovvedeniya/
5) Обзор новых возможностей С++14: Часть 1 https://habr.com/ru/post/184606/
6) Обзор новых возможностей С++14: Часть 2 https://habr.com/ru/post/198238/
7) https://en.cppreference.com/w/cpp/14

Алгоритмы:
1) Адитья Бхаргава - Грокаем алгоритмы https://www.chitai-gorod.ru/catalog/book/960907/
2) Панос Луридас - Алгоритмы для начинающих. Теория и практика для разработчика https://www.chitai-gorod.ru/catalog/book/1027448/
3) Основы алгоритмов от Академии Яндекса https://academy.yandex.ru/handbook/algorithms?utm_source=telegram

Структуры данных на python:

суббота, 11 апреля 2020 г.

Математический анализ, дискретная математика, линейная алгебра

Ссылки (подборки, обзоры):
1) Дорожная карта математических дисциплин для машинного обучения, часть 1 
https://habr.com/ru/post/432670/
2) Дорожная карта математических дисциплин для машинного обучения, часть 2 (вероятности)
https://habr.com/ru/post/490466/
3) Линейная алгебра: пробный заезд https://habr.com/ru/post/256275/

Учебники по математическому анализу:

Ссылки на курсы:
1) Курс "Введение в математический анализ" (Александр Храбров) https://stepik.org/course/95/promo
2) Курсы "Основы математики", "Асимптотический анализ и теория вероятностей", "Теоретико-числовые алгоритмы и криптография" (Александр Храбров) https://www.lektorium.tv/speaker/2940
3) Курс "Комбинаторика для начинающих" (Андрей Райгородский) https://www.coursera.org/learn/kombinatorika-dlya-nachinayushchikh
5) Основы теории графов https://stepik.org/course/126/syllabus
6) Ликбез по дискретной математике https://stepik.org/course/91/syllabus
7) Дискретные структуры https://stepik.org/course/83/syllabus
8) Основы перечислительной комбинаторики https://stepik.org/course/125/syllabus
9) Введение в дискретную математику https://stepik.org/course/902/syllabus
10) Введение в теоретическую информатику https://stepik.org/course/104/syllabus
11) Теоретическая информатика: вычислимость https://stepik.org/course/1611/syllabus
12) Теоретическая информатика: сложность вычислений https://stepik.org/course/1613/syllabus
13) Основы дискретной математики https://stepik.org/course/1127/syllabus
14) Алгоритмы: теория и практика. Структуры данных https://stepik.org/course/1547/syllabus
15) Алгоритмы: теория и практика. Методы https://stepik.org/course/217/syllabus
16) Введение в Data Science и машинное обучение https://stepik.org/course/4852/syllabus

Применение математических программ для физических и математических расчетов (Gnu octave, wolfram mathematica, maple use cases):
1) gnu octave https://habr.com/ru/post/312004/ (аналог matlab)
2) Моделирование динамических систем: введение https://habr.com/ru/post/349072/
3) Моделирование динамических систем: решение нелинейных уравнений https://habr.com/ru/post/349426/
4) Моделирование динамических систем: численные методы решения ОДУ
https://habr.com/ru/post/349162/
5) Моделирование динамических систем: введение в GNU Octave
https://habr.com/ru/post/349204/
6) Моделирование динамических систем: задача внешней баллистики https://habr.com/ru/post/349162/
7) Моделирование динамических систем: Как движется Луна? https://habr.com/ru/post/420133/
8) Приключения в математическом лесу фрактальных деревьев (Wolfram Mathematica)
https://habr.com/ru/company/wolfram/blog/238661/
9) Изучаем сопромат с CalculiX https://habr.com/ru/post/423359/
10) Maple: составление уравнений Лагранжа 2 рода и метод избыточных координат (maple) https://habr.com/ru/post/244957/
11) Формализм Лагранжа в задачах с сухим трением (maple)
 https://habr.com/ru/post/135794/
11) Классическая механика: о диффурах «на пальцах» (octave, VelcroPhysics) https://habr.com/ru/post/135794/

Школьная программа:


Центрированная сумма:

Романовский:
1) Дискретный анализ 

ТеорВер:
1) Вероятностные модели: от наивного Байеса к LDA, часть 1 https://habr.com/ru/companies/surfingbird/articles/228249/

Деревья:

Ещё:
1) Как полюбить математику https://habr.com/ru/articles/896816/
2) курс райгородского по комбинаторике https://stepik.org/course/212641/promo
3) курс савватаева вводный https://stepik.org/course/181515/promo

четверг, 2 апреля 2020 г.

вторник, 31 марта 2020 г.

Математическая статистика

Процентиль, квантиль:
3) Человеческим языком про метрики 3: перцентили для чайников https://habr.com/ru/companies/tochka/articles/690814/

Математическая статистика:
1) Случайный процесс
2) Случайная величина

Распределение Бернулли:

Распределение Пуассона:
3) распределение пуассона часть 1 https://www.youtube.com/watch?v=rfznj8Woc5I

Биномиальное распределение:

Распределение Гаусса:

Распределение Лапласа:


QoS, scheduling:
7) https://en.wikipedia.org/wiki/Traffic_shaping
8) Теория телетрафика (https://en.wikipedia.org/wiki/Teletraffic_engineering)
9) https://en.wikipedia.org/wiki/Traffic_flow_(computer_networking)
10) Моделирование трафика (https://en.wikipedia.org/wiki/Traffic_generation_model)
11) https://ru.wikipedia.org/wiki/FIFO
12) Round-robin (на английском)
13) https://en.wikipedia.org/wiki/Network_scheduler (приведен список алгоритмов шедулинга пакетов)
14) https://en.wikipedia.org/wiki/Packet_switching
15) https://ru.wikipedia.org/wiki/LIFO
16) https://en.wikipedia.org/wiki/Weighted_round_robin
17) https://en.wikipedia.org/wiki/Deficit_round_robin
18) https://en.wikipedia.org/wiki/Work-conserving_scheduler
19) https://en.wikipedia.org/wiki/Virtual_output_queueing
20) https://en.wikipedia.org/wiki/Head-of-line_blocking
23) https://en.wikipedia.org/wiki/Generalized_processor_sharing

Алгоритмы на транспортной сети:
1) https://en.wikipedia.org/wiki/Matching_(graph_theory) (на русском Паросочетание)
2) Двудольный граф
3) https://en.wikipedia.org/wiki/Maximum_cardinality_matching (MSM)
4) https://en.wikipedia.org/wiki/Maximum_weight_matching (MWM)
5) Транспортная сеть (https://en.wikipedia.org/wiki/Flow_network)
6) Задача о максимальном потоке
7) https://en.wikipedia.org/wiki/Flow_graph_(mathematics)
8) https://en.wikipedia.org/wiki/Traffic_flow

Network scheduler algorithms (articles):
1) Tiny Tera: a packet switch core (VOQ)
2) A Practical Scheduling Algorithm to Achieve100% Throughput in Input-Queued Switches
3) Input-queued switches: Scheduling algorithms for a crossbarswitch (слайды)
4) Analysis of scheduling algorithms that provide 100% throughput in input-queued switches
Wfq implementation:
1) Взвешенная справедливая очередь (русская вики, есть описание хода алгоритма WFQ) ( английская вики WFQ)
2) Описание хода алгоритма WFQ
http://www.mathcs.emory.edu/~cheung/Courses/558/Syllabus/11-Fairness/WFQ.html
3) Abhay K. Parekh and Robert G. Gallager A Generalized Processor Sharing Approach to Flow Control in Integrated Services Networks: The Single-Node Case http://www.cs.columbia.edu/~ricardo/misc/docs/gps.pdf (первое описание алгоритма wfq, если верить http://www.mathcs.emory.edu/~cheung/Courses/558/Syllabus/11-Fairness/WFQ.html)
4) Пример реализации wpq проекте gini
5) https://github.com/Bluefissure/WFQ-Algorithm-in-QoS-Queue-Scheduler
6) Kenji Yoshigoe and Kenneth J. Christensen - An Evolution to Crossbar Switches with Virtual Output Queuing and Buffered Cross Points
https://www.researchgate.net/publication/3282919_An_Evolution_to_Crossbar_Switches_with_Virtual_Output_Queuing_and_Buffered_Cross_Points
7) Nick McKeown, Adisak Mekkittikul, Venkat Anantharam, Jean Walrand - Achieving 100% Throughput in an InputQueued Switch
http://yuba.stanford.edu/~nickm/papers/IEEE_COMM_V3.pdf
8) Sang-Ho Lee, Dong-Ryeol Shin, Hee Yong Youn  - Weighted Fair Scheduling Algorithm for QoS of Input-Queued Switches https://link.springer.com/chapter/10.1007/978-3-540-30141-7_51 (есть описание алгоритмов WFQ)

Pifo implementation:
1) Programmable Packet Scheduling at line rate http://web.mit.edu/pifo/
2) C++ code for reference model of the PIFO hardware
https://github.com/programmable-scheduling/pifo-machine
3) Verilog code for PIFO hardware design
https://github.com/programmable-scheduling/pifo-hardware
4) A. Demers, S. Keshav, and S. Shenker. Analysis and Simulation of a Fair Queueing Algorithm
http://ccr.sigcomm.org/archive/1995/jan95/ccr-9501-shenker.pdf
5) J. C. R. Bennett and H. Zhang. Hierarchical Packet FairQueueing Algorithms
https://www.cs.cmu.edu/~hzhang/papers/TON-97-Oct.pdf
6) M. Shreedhar and G. Varghese. Efficient Fair Queuing using Deficit Round Robin
http://pages.cs.wisc.edu/~akella/CS740/S07/740-Papers/SV95.pdf
7) P. Goyal, H. M. Vin, and H. Chen. Start-time Fair Queueing: A Scheduling Algorithm for Integrated Services Packet Switching Networks
http://ccr.sigcomm.org/archive/1996/papers/goyal.pdf
8) P. McKenney. Stochastic Fairness Queuing
http://www2.rdrop.com/~paulmck/scalability/paper/sfq.2002.06.04.pdf

Задача поиска максимального паросочетания:
1) http://math.nsc.ru/LBRT/k4/LOR/lor_Theme6.pdf (лекционный курс)
2) Алгоритм Форда-Фалкерсона (вики)
3) http://acm.mipt.ru/twiki/bin/view/Algorithms/BipartiteMatchingCPP (реализация)
4) Алгоритм Форда-Фалкерсона для поиска максимального паросочетания (реализация)
5) http://algolist.ru/maths/graphs/maxflows/Ford_Fulkerson.php
6) https://www.youtube.com/watch?v=u9NigdVHUr0
7) https://www.youtube.com/watch?v=aDaiFQp9Ugo (паросочетания двудольного графа)
8) https://e-maxx.ru/algo/kuhn_matching

Maple:
1) графы в maple http://eqworld.ipmnet.ru/ru/library/books/Kirsanov2007ru.pdf (программы)
2) maple trial https://www.maplesoft.com/products/maple/free-trial/?IC=10355

IP packet:
1) https://ru.wikipedia.org/wiki/IP (на английском https://en.wikipedia.org/wiki/IPv4#Packet_structure)
2) https://en.wikipedia.org/wiki/Protocol_data_unit
3) Битовое поле

вторник, 24 марта 2020 г.

Как работает процессор (кэш процессора, предсказатель переходов и т.д.)

Предсказатель переходов, спекулятивность современного процессора:
1) https://en.wikipedia.org/wiki/CPU_cache (на русском)
2) https://en.wikipedia.org/wiki/Branch_predictor (на русском)
3) https://en.wikipedia.org/wiki/Memory_timings
4) История предсказания переходов с 1 500 000 года до н.э. по 1995 год
5) https://fcenter.ru/online/hardarticles/processors/13736-Pentium_4_Misticheskij_i_zagadochnyj_Trace_kesh
6) https://wfoojjaec.eu.org/ru/projects/news/2019-05-16-what-is-speculative-execution.html
7) Распараллеливание вычислений за счет использования кастомного предиктора в проекте DVM (1, 2)

Описание работы кэша в TI c66x:
1) Многоядерный DSP TMS320C6678. Организация памяти ядра https://habr.com/ru/articles/331948/#p2


2) Устройство Стека для Intel386 https://habr.com/ru/articles/675522/



Как работает процессор:
1) Как работает CPU: интерактивный урок для начинающих https://habr.com/ru/post/240929/
2) Я не знал, как работают процессоры, поэтому написал программный симулятор https://habr.com/ru/post/453158/
3) Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3 https://habr.com/ru/company/vdsina/blog/515660/
4) КАК РАБОТАЕТ ПРОЦЕССОР https://www.youtube.com/watch?v=RwSLO953anc
5) Как работает процессор https://www.youtube.com/watch?v=kIrKeKiJt90
6) Как работает процессор, просто о сложном https://www.youtube.com/watch?v=gcAvhi9sOvA
7) Как работает процессор? https://tproger.ru/explain/how-cpu-works/
8) КАК РАБОТАЕТ ПРОЦЕССОР КОМПЬЮТЕРА? https://losst.ru/kak-rabotaet-protsessor-kompyutera

VLIW:

Спекулятивное исполнение команд:
3) Внеочередное и спекулятивное исполнения стали брешью в безопасности почти всех компьютеров https://nplus1.ru/news/2018/01/04/meltdown

Книги:
1) Дэвид Харрис, Сара Харрис "Цифровая схемотехника и архитектура компьютера" (скачать)
2) J.L.Hennessy, D.A.Patterson. Computer Architecture: A Quantitative Approach. 2007 (pdf)

Кэш-память:
1) Логическая организация кэш-памяти процессора https://habr.com/ru/post/179647/
2) Секреты кэш-памяти, или как потратить 1000 тактов на 10 команд https://habr.com/ru/post/187654/
3) (!)Кэш

Аппаратное устройство:

Устройство компьютерной программы:

понедельник, 16 марта 2020 г.

Алгоритмы long prefix match, exact match на деревьях

Математика, алгоритмы поиска на графах (exact-match, longest prefix match и др.):
1) lpm https://en.wikipedia.org/wiki/Longest_prefix_match
2) lpm https://www.youtube.com/watch?v=5tAbyHAlS2M
3) lpm https://www.youtube.com/watch?v=1VMJt2-Kvq4
4) stp https://ru.wikipedia.org/wiki/STP
1) George Varghese - Network Algorithmics
2) Survey and Taxonomy of IP Address Lookup Algorithms
3) An_Efficient_IP_Address_Lookup_Algorithm

STP:
2) О ненужности Spanning Tree https://habr.com/ru/post/132312/
3) Сети для самых маленьких. Часть четвертая. STP https://habr.com/ru/post/143768/

понедельник, 7 октября 2019 г.

Внутреннее устройство stl-контейнеров и алгоритмическая сложность

1) Многообразие связных списков https://habr.com/ru/articles/814955/

Структуры данных (data structures):
1) Кольцевой буфер
2) Calendar queue
3) Двусторонняя очередь (deque)
4) Куча
5) B-tree
6) Двоичное дерево
8) Двоичная куча (английская полнее https://en.wikipedia.org/wiki/Binary_heap,
иитмо https://neerc.ifmo.ru/, визуализация https://www.cs.usfca.edu/~galles/visualization/Heap.html)
12) Сжатое префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Radix_tree)
13) Hash table
14) Фильтр Блума 

(!)Устройство бинарных деревьев поиска:
- вики:
1) Двоичное дерево поиска
- обзорные статьи:
1) https://tproger.ru/translations/binary-search-tree-for-beginners/
2) Бинарные деревья поиска и рекурсия – это просто https://habr.com/ru/post/267855/
3) Структуры данных: бинарные деревья. Часть 1 https://habr.com/ru/post/65617/
- реализация:
2) Основы B-деревьев (внутреннее устройство БД) 
3) Лекции 13-14: деревья поиска, почти сбалансированные деревья.
Красно-черные деревья и реализация множества на их основе http://mech.math.msu.su/~vvb/2course/Borisenko/lecTree.html

Префиксное дерево:
1) Префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Trie)
2) Сжатое префиксное дерево (cтатья на английском полнее https://en.wikipedia.org/wiki/Radix_tree)
3) Чем хороши префиксные деревья? https://otus.ru/nest/post/676/
4) Trie, или нагруженное дерево https://habr.com/ru/post/111874/
5) Сжатые префиксные деревья https://habr.com/ru/post/151421/
6) K-d дерево
7) Анатомия KD-Деревьев https://habr.com/ru/post/312882/
8) К-d деревья и перечисление точек в произвольном прямоугольнике (статика)
9) http://www.ray-tracing.ru/articles181.html
10) KD-деревья и R-деревья https://fat-crocodile.livejournal.com/156564.html

Реализация динамического массива на си c автоматическим расширением размера выделенной памяти в случае необходимости:
1) Аналог std::vector из C++11 на чистом C89 и как я его писал https://habr.com/ru/post/324210/
2) https://prog-cpp.ru/c-alloc/

Односвязный список:
1) Структуры данных: связный список https://habr.com/ru/articles/717572/

Реализация очереди с приоритетами на базе двоичной кучи, реализованной через статический массив:
1) Двоичная куча (английская полнее https://en.wikipedia.org/wiki/Binary_heap,
иитмо https://neerc.ifmo.ru/)
2) https://ru.stackoverflow.com/
3) https://www.geeksforgeeks.org/building-heap-from-array/

Источники:
1) Qt Container Classes (wiki) https://doc.qt.io/qt-5/containers.html
2) Библиотека стандартных шаблонов (STL) (вики)
3) http://stepanovpapers.com/STL/DOC.PDF
4) Степанов, Ли - Руководство по стандартной библиотеке шаблонов (STL)
https://rsdn.org/article/cpp/stl.xml (немного косячный перевод)
5) http://www.martinbroadhurst.com/stl/

Реализация связного списка на C++ с шаблонами (аналога std::list):
1) Односвязный список на C++ http://itnotesblog.ru/note.php?id=178
2) STL для новичков. Реализация класса-контейнера https://habr.com/ru/post/187010/

Очередь с приоритетами на C++ с шаблонами:
1) адаптер std::priority_queue https://en.cppreference.com/w/cpp/container/priority_queue
2) https://www.bestprog.net/ru/2019/09/29/c-an-example-implementation-of-a-priority-queue-for-a-template-class-implementation-as-a-dynamic-array-ru/
3) https://ru.wikibooks.org

Книги по алгоритмам:
1) Кормен, Лейзертон, Риверст, Штайн - Алгоритмы
2) Кнут Д. - Тома 1, 2, 3
3) Вирт Н. - Алгоритмы (pascal, modula-2)

Еще книги:
1) Моя любимая задачка по программированию для кодинг-интервью https://habr.com/ru/companies/ispsystem/articles/779224/
2) Профессия: программист. Не всё однозначно https://habr.com/ru/companies/ruvds/articles/503318/
3) Топ-23 самых рекомендуемых книг по программированию https://vk.com/@webinnnov-top-23-samyh-rekomenduemyh-knig-po-programmirovaniu?context=author_page_date&ref=author_page


Примеры реализаций алгоритмов на c, c++:
1) Язык Си в примерах (викиучебник)
2) Реализация алгоритмов (викиучебник)
3) http://acm.mipt.ru/twiki/bin/view/Algorithms/WebHome
4) http://algolist.manual.ru/
5) https://habr.com/ru/post/146793/

Вопросы:
1) типы указателей в c++11 (unique_ptr, shared_ptr, weak_ptr):
- Без new: Указатели будут удалены из C++ https://habr.com/ru/post/352570/
- Smart pointers для начинающих https://habr.com/ru/post/140222/
- weak_ptr:

2) какая алгоритмическая сложность у map, у unordered_map: 
- Потокобезопасный std::map с производительностью lock-free map https://habr.com/ru/post/328374/

3) чему равна высота сбалансированного дерева поиска в 1000000 элементов?

4) в чем проявляется сбалансированность дерева поиска?

5) какие структуры данных дают поиск за логарифмическое время? (map)

6) зачем нужен map, если unordered_map всегда выдает более быстрый результат?

7) какие структуры данных выдают результат за линейное время? (vector)

Вопросы с собеседований:
1) Популярные вопросы на собеседовании по C++ и ответы на них https://habr.com/ru/post/117996/
2) Дебри графики или как пройти собеседование на программиста компьютерной графики в GameDev https://habr.com/ru/post/561372/

Теория:

ШАД:
2) Решения вступительных испытаний в ШАД https://efiminem.github.io/supershad/
3) Полный разбор экзамена ШАД-2019 https://habr.com/ru/post/487680/
4) Поступление в ШАД глазами куратора и студента https://academy.yandex.ru/posts/postuplenie-v-shad-glazami-kuratora-i-studenta
7) Разбор задач для поступления в ШАД https://yandexdataschool.ru/stepbystep

yandex:
2) Как проходят алгоритмические секции на собеседованиях в Яндекс https://habr.com/ru/company/yandex/blog/449890/

спортивное программирование:
1) Спортивное программирование — социальный лифт в IT. Как его использовать школьнику, родителям школьника и разработчику? https://habr.com/ru/company/it_people/blog/583280/
2) Спортивное программирование https://astanahub.com/blog/sportivnoe-programmirovanie1617782868?locale=ru
3) Олимпиадное программирование https://tproger.ru/tag/competitive-programming/

6) Спортивное программирование https://stepik.org/course/53634/promo

10) ACM
17) A+B

Собеседование в it:
1) Как пройти собеседование в IT-компанию https://vc.ru/hr/263806-kak-proyti-sobesedovanie-v-it-kompaniyu
2) Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования https://habr.com/ru/post/499394/
3) Как я оклад 2х хотел https://habr.com/ru/post/657619/
4) Моя история прохождения интервью в IB IT (Java разработчик, investment bank) в Лондоне с примерами типичных заданий https://habr.com/ru/articles/430788/

leetcode:
2) Есть ли польза от решения алгоритмических задач на LeetCode? https://habr.com/ru/articles/709550/
3) Нужно читать академические статьи в Computer Science https://habr.com/ru/companies/skillfactory/articles/710822/

Реализация упорядоченного множества на c и c++:
3) Алгоритмы и структуры данных для начинающих: двоичное дерево поиска https://tproger.ru/translations/binary-search-tree-for-beginners/
4) Структуры данных: бинарные деревья https://habr.com/ru/articles/65617/

Ассоциативный массив:

Представление map в виде дерева (red-black tree):