Data Science: Алгоритмы и Структуры данных
Kanalga Telegram’da o‘tish
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata
Ko'proq ko'rsatish7 577
Obunachilar
-424 soatlar
-187 kun
-6330 kun
Postlar arxiv
Извлечение текста из файлов PDF при помощи Python
Существует множество типов документов, содержащих подобные виды неструктурированной информации, от веб-статей и постов в блогах до рукописных писем и стихов. Однако существенная часть этих данных хранится и передаётся в формате PDF. В частности, выяснилось, что за каждый год в Outlook открывают более двух миллиардов PDF, а в Google Drive и электронной почте ежедневно сохраняют 73 миллионов новых файлов PDF
Поэтому разработка более систематического способа обработки этих документов и извлечения из них информации позволит нам автоматизировать процесс и лучше понять этот обширный объём текстовых данных. И в выполнении этой задачи, разумеется, нашим лучшим другом будет Python.
https://habr.com/ru/companies/ruvds/articles/765246/
Алгоритмы и Структуры данных
12 алгоритмов, которые должен знать каждый разработчик
Алгоритмы давно заняли особую нишу как в Computer Science, так и в разработке ПО. Однако какую роль они играют в жизни разработчика и что конкретно из них следует изучить и знать? Об этом вы узнаете из нашей статьи.
https://proglib.io/p/12-algoritmov-kotorye-dolzhen-znat-kazhdyy-razrabotchik-obyasnyaem-na-gifkah-2022-11-21
Алгоритмы и Структуры данных
4 основных алгоритма сравнения Git Diff: когда и какой алгоритм использовать
Обзор четырех алгоритмов git diff: Майерса, минимальный, «терпения» и гистограммный. Также приводятся наглядные примеры, чтобы можно было сравнить результат применения каждого алгоритма самостоятельно.
https://proglib.io/p/4-osnovnyh-algoritma-sravneniya-git-diff-kogda-i-kakoy-algoritm-ispolzovat-2023-06-13
Алгоритмы и Структуры данных
Сжать и не пожалеть: как работает сжатие без потерь
Более 9 миллиардов гигабайт информации ежедневно путешествуют по интернету, заставляя постоянно искать все новые и новые методы упаковки данных. Самые эффективные решения используют подходы, которые позволяют достичь большей плотности за счет "потерь" информации в процессе сжатия.
В то же время очень мало внимания уделяется сжатию без потерь. Почему? Ответ прост - методы сжатия без потерь уже невероятно эффективны. С их помощью работает буквально всё, от формата PNG до утилиты PKZip.
https://habr.com/ru/articles/763248/
Алгоритмы и Структуры данных
Распознавание по цвету
Из этой статьи вы узнаете, как рост числа параметров математической модели влияет на ее эффективность, какое решение выбрать, если на анализ объекта дается 200 миллисекунд, а также плюсы и минусы классических алгоритмов компьютерного зрения.
https://habr.com/ru/companies/jetinfosystems/articles/764178/
Алгоритмы и Структуры данных
Выбираемся из лабиринта при помощи алгоритма «поиск в ширину» (BFS) на Python
Давайте поговорим о популярном алгоритме, который называется «Поиск в ширину» (BFS). Затем реализуем этот алгоритм, чтобы найти решение для реальной задачи: как выбраться из лабиринта.
https://habr.com/ru/company/piter/blog/679020/
➕ ➕ 7 сортировок массивов по экспозиции С++ с иллюстрациями
В этой статье мы демонстрируем иллюстрацию, как работают алгоритмы сортировки: от простой пузырьковой до поисковой древовидной кучи. Также определим множественность худших и лучших случаев, а код напишем на С++.
https://proglib.io/p/7-sposobov-sortirovki-massivov-na-primere-s-s-illyustraciyami-2022-04-20
Онлайн-курс «Алгоритмы: теория и практика. Методы»
В бесплатном курсе от Computer Science Center подробно рассмотрены базовые алгоритмические методы:
— жадные алгоритмы;
— метод «разделяй и властвуй»;
— динамическое программирование.
Для прохождения курса нужно знать на базовом уровне хотя бы один язык программирования.
Курс на Stepik: https://stepik.org/course/217/promo
Задумывались ли вы, как получают таблицу судоку?
Её генерируют специальными алгоритмами (а не придумывает какой-то сонный дядя из редакции газеты).
Предлагаем вам реализовать свой генератор судоку 9x9, основа которого — простая базовая сетка, над которой проводится множество преобразований:
https://tprg.ru/g8Um
Ищем повторяющиеся элементы в массиве
Предположим, вам нужно найти дубликат элемента в массиве. Как бы вы решили эту проблему?
Сначала подумайте, а затем загляните в статью, чтобы узнать о различных способах решения: https://tprg.ru/FtTI
#алгоритмы #java
Курс по программированию классических алгоритмов на C++ для школьников
В школах нередко информатика преподаётся плохо, и учеников практически не знакомят с программированием. Но что делать, если школьник хочет писать свои программы?
Одним из вариантов являются материалы из Интернета, включая онлайн-лекции. Так, в московской школе в 2020 году лектор из МФТИ преподавал реализацию классических алгоритмов на C++. И все уроки курса он выложил в свободный доступ на YouTube:
https://tprg.ru/gqoA
Ключевые алгоритмические парадигмы для решения нестандартных задач
В спортивном программировании для решения задач используются ключевые алгоритмические парадигмы, на базе которых реализуется алгоритм решения:
— полный поиск;
— жадный алгоритм;
— «разделяй и властвуй»;
— динамическое программирование.
Подробнее о парадигмах (с примерами на C++): https://tprg.ru/Q8bw
Ключевые алгоритмические парадигмы для решения нестандартных задач
В спортивном программировании для решения задач используются ключевые алгоритмические парадигмы, на базе которых реализуется алгоритм решения:
— полный поиск;
— жадный алгоритм;
— «разделяй и властвуй»;
— динамическое программирование.
Подробнее о парадигмах (с примерами на C++): https://tprg.ru/Q8bw
Структура данных «связный список»
Связные списки по сравнению с массивами хороши тем, что могут хранить произвольное количество объектов. При этом сами объекты имеют внутри ссылку на следующий объект в списке (односвязный список), а также на предыдущий объект, если список двусвязный.
Подробнее о связных списках и их методах:
https://tproger.ru/translations/linked-list-for-beginners/
Действительно ли компьютер генерирует случайное число?
Алгоритмы, которые мы используем в своих программах для генерации случайных чисел, на самом деле выдают не совсем случайные значения. В основе генератора псевдослучайных чисел (ГПСЧ) лежит семя (seed), от которого отталкивается алгоритм.
Но существуют и другие варианты поиска случайного числа. С ними и ГСПЧ вы можете ознакомиться в статье:
https://nuancesprog.ru/p/14619/
Двоичное (бинарное) дерево поиска
Структуры данных «деревья» широко распространены в программировании, например каталог проекта или DOM-дерево в веб-разработке.
Среди них особенно выделяется двоичное дерево поиска, которое позволяет существенно ускорить поиск элементов.
Подробнее о структуре двоичного дерева и его реализации в коде:
https://tprg.ru/YpfD
Оценка сложности алгоритма проще, чем кажется
Если вы изучали различные алгоритмы (например, сортировки массивов), то наверняка встречали запись в духе O(n*logn). Это и есть оценка сложности алгоритма. Она показывает, насколько быстро растёт сложность алгоритма с увеличением размера входных данных.
В статье разбираются основные порядки роста, а также что нужно замерять для оценки сложности: https://tprg.ru/LQI2
Создание и обход двоичного дерева, а также реализация на JavaScript
Двоичное дерево состоит из корня (верхний элемент), внутренних узлов и листьев (узлы без потомков). Оно подчиняется определённым правилам, благодаря чему происходит быстрый поиск элементов.
Статья поможет реализовать на JavaScript двоичное дерево и организовать обход его узлов:
https://tprg.ru/09wZ
Как вычислить числа Фибоначчи?
На собеседовании по алгоритмам могут попросить реализовать вывод ряда Фибоначчи. Он строится по следующему правилу: первые два элемента равны 0 и 1, а каждый последующий элемент равен сумме двух предшествующих.
В статье показано, как вычислить числа Фибоначчи на Java тремя способами — циклом, рекурсией и с помощью Stream:
https://tprg.ru/sAUb
Ключевые алгоритмические парадигмы для решения нестандартных задач
В спортивном программировании для решения задач используются ключевые алгоритмические парадигмы, на базе которых реализуется алгоритм решения:
— полный поиск;
— жадный алгоритм;
— «разделяй и властвуй»;
— динамическое программирование.
Подробнее о парадигмах (с примерами на C++): https://tprg.ru/Q8bw
