Data Science: Алгоритмы и Структуры данных


Гео и язык канала: Весь мир, Русский
Категория: Технологии


Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.
Ссылка: @Portal_v_IT
Сотрудничество, авторские права: @oleginc, @tatiana_inc
Канал на бирже: https://telega.in/c/structuredata

Связанные каналы  |  Похожие каналы

Гео и язык канала
Весь мир, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Задача: за минимальное количество перестановок, найти сведение меньших или равных элементов к значению K

Дан массив из n натуральных чисел и числа K. Найдите минимальное количество перестановок, необходимое для сведение всех чисел, что равны или меньше числу К.

Алгоритм

1. Создайте счетчик count, занесите туда все элементы что меньше или равны K
2. Используя технику двух указателей и "двигающегося окна", длиной count. Отслеживайте таким образом сколько элементов в этом диапазоне больше К
3. Повторяйте шаг 2 до тех пор пока не закончатся окна длинной count и выбирайте среди них минимум плохих вариантов

Data Science: Алгоритмы и Структуры данных


TensorFlow.js: машинное обучение на JavaScript с доставкой в браузер

➡️Читать статью

Data Science: Алгоритмы и Структуры данных


Shell Sort - сортировка массива

Новый вариант сортировки, который мы сегодня разберем - Shell Sort.

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

Данный интервал высчитывается при помощи формулы Кнута:

h = h * 3 + 1,

где h - интервал с начальным значением 1.

На картинке показан метод самой сортировки, однако позже мы его разберем более подробно!

Data Science: Алгоритмы и Структуры данных


Алгоритм удаления из BST (дерева бинарного поиска)

Данный алгоритм очень схож с алгоритмом поиска. Поэтому по идее проблем с его пониманием не должно возникнуть. Кроме того, а что если у данного узла(что мы удаляем) - есть дочерние узлы. Что же, давайте рассмотрим данный алгоритм.

1. Находим узел который собираемся удалить и удаляем

2. Если у удаляемого узла есть только один дочерний элемент, то скопируйте дочерний элемент в узел(где находился ваш удаляемый элемент), и удалите дочерний элемент у него.

3. Если два дочерних узла. Найдите в порядке приемника необходимый узел из двух дочерних. Скопируйте содержимое приемника и удалите приемника. Не забудьте правильно расположить 2 дочерний элемент, ведь он станет теперь дочерним для перемещенного приемника!

Data Science: Алгоритмы и Структуры данных


SciPy — библиотека для языка программирования Python с открытым исходным кодом, предназначенная для выполнения научных и инженерных расчётов.

Data Science: Алгоритмы и Структуры данных


Алгоритм вставки в бинарное дерево поиска

Для вставки нового элемента в дерево вам придется сделать последовательность шагов:

1. Начните обход дерева с корня

2. Сравнивайте вставляемый элемент с корнем, если он меньше, чем корень , то выполните ркекурсивный вызов для левого поддерева, в противном случае для правого.

3. Достигнув конца, просто вставьте этот узел слева (если он меньше) или справа

Data Science: Алгоритмы и Структуры данных


Представление и свойства BST

Как мы вчера уже выяснили BST - набор узлов, расположенных по свойствам BST. Каждый узел имеет ключ и значение. При поиске задействуется сам ключ и сравнивается с ключами в BST, и если он найден - то возвращается значение.

Соответственно операции над BST:

1. Поиск по ключу
2. Вставка элемент в дерево
3. Обходы дерева

Data Science: Алгоритмы и Структуры данных


Анализ данных на R в примерах и задачах

Видеокурс из двух частей от Computer Science Center

➡️Первая часть
➡️Вторая часть

Data Science: Алгоритмы и Структуры данных


Двоичное дерево поиска

Двоичное дерево поиска(BST) - дерево, в котором все узлы следуют свойствам:

1. Левое поддерево узла имеет ключ, меньше или равный ключу его родительского узла

2. Правое поддерево узла имеет ключ больше, чем ключ родительского узла.

Таким образом дерево делит все свои поддеревью на два сегмента: левое и правое поддеревья. Есть еще одно определение данного дерева:

leftsubtree(keys) =< node(key) =< rightsubtree(keys)

Data Science: Алгоритмы и Структуры данных


Решение задачи через один только проход

Да, эту задачу можно решить также и тупо одним проходом, нам снова понадобиться count(счетчик). Только теперь, кроме него нам нужна дополнительная функция swap(которая меняет местами элементы)

Итого у нас будет изначально count = 0 и цикл от начала до конца нашего массива. Мы будем проверять, если наш текущий элемент не равен 0, мы будем менять местами count элемент и элемент на текущей i-ой позиции:

for i in range(0, n):
if (arr[i] != 0):
   arr[count], arr[i] = arr[i], arr[count]
    count+=1

Data Science: Алгоритмы и Структуры данных


Настраиваем Python для машинного обучения на Windows

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

➡️Читать статью

Data Science: Алгоритмы и Структуры данных


Алгоритм решения задачи

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

Пройдитесь по заданному массиву слева направо. Во время обхода поддерживайте количество ненулевых элементов в массиве (к примеру в счетчике count). Для каждого ненулевого элемента gjvtcnbnt элемент в arrcount и увеличьте сам count.

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

Data Science: Алгоритмы и Структуры данных


Задача: переместить нули в конец

Дан массив случайных чисел, необходимо переместить все нули данного массива в конец. Например, если задан массив 1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, необходимо его изменить к виду: 1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0.

Порядок остальных элементов должен остаться прежним. Сложность O(n), а пространство О(1)

Data Science: Алгоритмы и Структуры данных


Топ-10 алгоритмов машинного обучения

В машинном обучении есть нечто, называемое теоремой «No Free Lunch». Вкратце, в ней говорится, что ни один алгоритм не работает лучше всего для каждой проблемы, и это особенно важно для контролируемого обучения (т.е. predictive modeling).

➡️Читать статью

Data Science: Алгоритмы и Структуры данных


Алгоритмы машинного обучения

Данное видео поможет вам разобраться, какие проблемы есть в Machine Learning, и познакомит с различными алгоритмами.
Ключевые алгоритмы машинного обучения - это линейная регрессия, логистическая регрессия, дерево решений, случайный лес и алгоритм KNN.
Все алгоритмы представлены с простыми примерами и реализованы на языке Python.

➡️Смотреть видео

➡️Скачать видео

Data Science: Алгоритмы и Структуры данных


Возвращаем прямой формат контента по тематике канала. Полностью пересмотрели подход к постам.

Надеемся, что вам будет полезно.


Вращение в AVL-деревьях

Двойные повороты - достаточно сложная тема, но я нашел достаточно хорошее объяснение этому. Обратите ваше внимание на картинку. В данном случае представлено вращение влево-вправо.

Поворот влево-вправо - это комбинация вращений влево, за которым следует вращение вправо.

Есть аналогичное вращение вправо-влево, только оно с точностью наоборот. Сначала вращение вправо, а после уже влево!

Data Science: Алгоритмы и Структуры данных


Видео недоступно для предпросмотра
Смотреть в Telegram
Как работает сортировка вставками и чем она отличается от сортировки выбором

В видео разберём принцип работы алгоритма сортировки вставками и его ключевое отличие от сортировки выбором. Также покажем реализацию алгоритма на Python и наглядно разберём, как он сортирует элементы.

➡️Смотреть видео

➡️Скачать видео

Data Science: Алгоритмы и Структуры данных


Iron Core. Часть 3: Бессмертная командная строка

Публикуем перевод третьей статьи из серии (первая частьвторая), посвящённой информационным технологиям в авиаперевозках. Сегодня поговорим о режиме командной строки системы Amadeus, работа в которой опирается на язык, созданный для телетайпов. Этот язык до сих пор обеспечивает огромный процент бронирований билетов во всём мире — как тех, что выполняются различными агентствами, так и тех, что делаются посредством GDS.

https://habr.com/ru/companies/wunderfund/articles/1046431/

Алгоритмы и Структуры данных


Stream compaction на NEON. Векторизуем copy_if

Даны массивы a и out. Нужно записать в out подряд, без пробелов, только те элементы a, которые удовлетворяют заданному условию. В статье — условие a[i] > threshold, a[i] ∈ (0, 1), threshold ∈ {0, 0.5, 1}.

https://habr.com/ru/articles/1055904/

Алгоритмы и Структуры данных

Показано 20 последних публикаций.