Data Science: Алгоритмы и Структуры данных
7.58K subscribers
502 photos
51 videos
6 files
3.5K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Что такое задача коммивояжёра?

В математике и программировании задача коммивояжёра является классической. Суть её проста:

Нужно найти самый короткий маршрут между городами, чтобы посетить каждый город хотя бы один раз и вернуться домой.

С малым количеством городов задача кажется простой, но её сложность растёт быстрыми темпами при увеличении числа городов. Разбираемся, почему так:

https://telegra.ph/CHto-takoe-zadacha-kommivoyazhyora-03-31
👍18🔥2
Введение в криптографию и шифрование

Когда-то материал из этой лекции читали в МГУ целых полгода. Поэтому в статье автор не углублялся в работу шифров и рассказал об общих терминах в криптографии и шифровании, а также разобрал простым языком несколько алгоритмов шифрования:

https://habr.com/ru/company/yandex/blog/324866/

Лекция на YouTube: https://youtu.be/mE_s-R5wvpw
👍12
Алгоритмы и структуры данных: примеры реализаций на JavaScript

Если вы изучаете JavaScript, загляните в репозиторий на GitHub, в котором собраны реализации структур данных и множества популярных алгоритмов. К каждому алгоритму приложено короткое пояснение, которое поможет разобраться в коде.

Весь материал разделён на два уровня: для начинающих и для продвинутых:

https://github.com/trekhleb/javascript-algorithms
👍12❤1
🖥 Разбор алгоритма ML на реальных данных

В этом уроке вы разберёте реальную задачу с настоящими, а не синтетическими данными. Поймёте, как отличать линейную задачу классификации от нелинейного случая. Научитесь просто решать задачу в линейном случае с помощью Python и некоторых несложных математических алгоритмов, о которых вам расскажут прямо в видео.

Самое интересное в этом уроке — это то, что вы явно увидите как работает этот алгоритм на реальных данных и поймёте, что, на самом деле, он достаточно интуитивно понятен.

https://youtu.be/8Nf-QzP4h78
👍8
🧠 Как решать задачи на программирование во время собеседований

Обычно компании предлагают 2 типа задач при собеседовании: либо онлайн-тест с ограничением по времени, либо решение задач оффлайн.

Про то, как работать во всех этих ситуациях, чтобы не запороть собеседование, автор рассказывает в этом видео.

https://youtu.be/QSHeNgvKcWk
👍11
📄Шпаргалка по алгоритмам и структурам данных

Сохраняй себе и делись с другом!
👍20
​Классические алгоритмы генерации лабиринтов

Попробуйте свои силы в генерации лабиринтов — интересном проекте, который можно реализовать на любом популярном языке программирования. Работа над проектом отточит ваши навыки кодинга, а результат пригодится, если вы соберётесь в геймдев.

Алгоритм двоичного дерева и алгоритм SideWinner: https://habr.com/ru/post/320140/

Алгоритм Олдоса-Бродера и алгоритм Уилсона: https://habr.com/ru/post/321210/
👍10
​Курс лекций по дополнительным главам математики

Если вы хотите подтянуть знания по такой структуре данных, как деревья, то на YouTube есть курс лекций, которые читались в Computer Science Center осенью 2019 года (эти ребята сделали кучу бесплатных курсов на Stepik и Coursera).

В первой лекции разбирается структура данных куча: https://youtu.be/tN265RlKXVg

Плейлист с лекциями: https://youtube.com/playlist?list=PLlb7e2G7aSpTEzw546U6-Q6_2jt48ym4I
👍20❤1
​Продолжение курса по дополнительным главам алгоритмов

Недавно мы делились первой частью этого курса. Вторая часть лекций рассматривает уже более продвинутый уровень:

— кратчайшие пути в графах;
— потоки, паросочетания;
— алгоритмы на строках;
— структуры данных для быстрой работы с целыми числами;
— быстрое преобразование Фурье.

В первой лекции разбираются алгоритмы для работы со строками: https://youtu.be/-tGa1Fckif8

Плейлист со всеми лекциями на YouTube: https://youtube.com/playlist?list=PLlb7e2G7aSpR7yew2YAzfbhFQL8_-G1UT
👍6
Насколько хорошо вы знаете алгоритмы?

Проверьте себя в этом тесте:

https://tproger.ru/quiz/algorithms/
👍5🤯4🔥1
Как работают алгоритмы сортировки? Разбираем с примерами на Python

Мы рассмотрели в статье наиболее популярные методы сортировки, а также сравнили их по времени исполнения.

Сохраняйте в закладки, чтобы не забыть: https://tprg.ru/VHC5
👍3
​Словари и их методы в Python

Структура данных словарь хранит в себе пары «ключ-значение». При этом одному ключу может соответствовать целое множество значений.

На практики в словари могут записываться, например:
— имя и оценка студентов;
— название и цена товаров;
— название и численность населения городов.

Подробнее о словарях, а также методах работы с ними:

https://tproger.ru/explain/python-dictionaries/
👍9
Что послушать: подкаст об алгоритмах и собеседованиях

Сегодня мы предлагаем послушать подкаст, где бывший сотрудник «Яндекса» Алексей Шаграев рассказал, какие алгоритмы используются в командах и почему на собеседовании задают много вопросов про алгоритмы.

Алексей имеет за плечами много опыта в собеседовании разработчиков, поэтому в подкасте много историй из реальной жизни:

soundcloud.com/podlodka/podlodka-195-algoritmy-i-sobesedovaniya
👍11
​Что почитать: «Алгоритмы. Построение и анализ» Т.Кормена и Ч.Лейзерсона

Must-have книга для любого разработчика. Начинающим программистам не обязательно читать её всю, а изучить в первую очередь виды сортировок, элементарные структуры данных, двоичные деревья и хеш-таблицы. Тем более алгоритмы разбиты по самодостаточным главам, поэтому к книге можно возвращаться время от времени, чтобы подтянуть знания.

Обзор книги - https://tprg.ru/KO4u
👍8
Решето Эратосфена – это алгоритм нахождения простых чисел до заданного натурального числа путем постепенного отсеивания составных чисел. Образно говоря, через решето Эратосфена в процессе его тряски проскакивают составные числа, а простые остаются в решете.

Видео с объяснением этого алгоритма и его реализацией на YouTube - https://www.youtube.com/watch?v=LMc07ydUcSo&t=4s
👍7🔥7
​Структура данных пирамида (двоичная куча) в Java

Пирамида представляет собой дерево значений. Значение узлов в неё больше или равно значениям узлов-потомков. Поэтому верхний элемент всегда будет иметь максимальное значение

Подробнее о пирамиде и её реализации на Java:

https://javarush.ru/groups/posts/3083-strukturih-dannihkh-piramida-dvoichnaja-kucha-v-java
👍8
Действительно ли компьютер генерирует случайное число?

Алгоритмы, которые мы используем в своих программах для генерации случайных чисел, на самом деле выдают не совсем случайные значения. В основе генератора псевдослучайных чисел (ГПСЧ) лежит семя (seed), от которого отталкивается алгоритм.

Но существуют и другие варианты поиска случайного числа. С ними и ГСПЧ вы можете ознакомиться в статье:

https://nuancesprog.ru/p/14619/
👍9🔥1